remark-docx 0.3.22 → 0.3.24
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 +19 -2
- package/lib/index.cjs +79 -16
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +80 -17
- package/lib/index.js.map +1 -1
- package/lib/plugins/image/index.cjs +27 -75
- package/lib/plugins/image/index.cjs.map +1 -1
- package/lib/plugins/image/index.d.ts +3 -3
- package/lib/plugins/image/index.js +26 -75
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/mermaid/index.cjs +77 -0
- package/lib/plugins/mermaid/index.cjs.map +1 -0
- package/lib/plugins/mermaid/index.d.ts +5 -0
- package/lib/plugins/mermaid/index.js +75 -0
- package/lib/plugins/mermaid/index.js.map +1 -0
- package/lib/plugins/shiki/index.cjs +1 -1
- package/lib/plugins/shiki/index.js +1 -1
- package/lib/types.d.ts +30 -2
- package/lib/utils-BVB8aSvE.js +25 -0
- package/lib/utils-BVB8aSvE.js.map +1 -0
- package/lib/utils-KFMY7wxz.js +22 -0
- package/lib/utils-KFMY7wxz.js.map +1 -0
- package/lib/utils.d.ts +3 -0
- package/package.json +5 -3
- package/lib/utils-19qN-XsS.js +0 -15
- package/lib/utils-19qN-XsS.js.map +0 -1
- package/lib/utils-BWBt3EKb.js +0 -13
- package/lib/utils-BWBt3EKb.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('../../utils-BVB8aSvE.js');
|
|
4
|
+
var mermaid = require('mermaid');
|
|
5
|
+
var unistUtilVisit = require('unist-util-visit');
|
|
6
|
+
var imageSize = require('image-size');
|
|
7
|
+
var plugins_image_index = require('../image/index.cjs');
|
|
8
|
+
var docx = require('docx');
|
|
9
|
+
|
|
10
|
+
const browserRender = async (value) => {
|
|
11
|
+
const element = document.createElement("div");
|
|
12
|
+
element.style.visibility = "hidden";
|
|
13
|
+
document.body.appendChild(element);
|
|
14
|
+
try {
|
|
15
|
+
const result = await mermaid.render("mermaid", value, element);
|
|
16
|
+
return result.svg;
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
document.body.removeChild(element);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A plugin to render Mermaid inside "code" nodes with "mermaid" language.
|
|
24
|
+
*/
|
|
25
|
+
const mermaidPlugin = () => {
|
|
26
|
+
const renderSvg = browserRender;
|
|
27
|
+
return async ({ root, images }) => {
|
|
28
|
+
const promises = [];
|
|
29
|
+
unistUtilVisit.visit(root, "code", ({ lang, value }) => {
|
|
30
|
+
if (lang === "mermaid") {
|
|
31
|
+
if (!images.has(value)) {
|
|
32
|
+
images.set(value, null);
|
|
33
|
+
promises.push((async () => {
|
|
34
|
+
try {
|
|
35
|
+
const svg = await renderSvg(value);
|
|
36
|
+
const data = new TextEncoder().encode(svg);
|
|
37
|
+
const { width, height } = imageSize.imageSize(data);
|
|
38
|
+
const pngBuffer = await plugins_image_index.browserSvgToPng({
|
|
39
|
+
buffer: data.buffer,
|
|
40
|
+
width,
|
|
41
|
+
height,
|
|
42
|
+
});
|
|
43
|
+
images.set(value, {
|
|
44
|
+
type: "svg",
|
|
45
|
+
width,
|
|
46
|
+
height,
|
|
47
|
+
data: data.buffer,
|
|
48
|
+
fallback: pngBuffer,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
utils.warnOnce(String(e));
|
|
53
|
+
}
|
|
54
|
+
})());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
await Promise.all(promises);
|
|
59
|
+
return {
|
|
60
|
+
code: ({ lang, value }, ctx) => {
|
|
61
|
+
if (lang !== "mermaid") {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const image = ctx.images.get(value);
|
|
65
|
+
if (image == null) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
return new docx.Paragraph({
|
|
69
|
+
children: ctx.render([{ type: "image", url: value }]),
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
exports.mermaidPlugin = mermaidPlugin;
|
|
77
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/plugins/mermaid/index.ts"],"sourcesContent":["import type { RemarkDocxPlugin } from \"../../types\";\nimport { warnOnce } from \"../../utils\";\nimport mermaid from \"mermaid\";\nimport { visit } from \"unist-util-visit\";\nimport { imageSize } from \"image-size\";\nimport { browserSvgToPng } from \"../image\";\nimport { Paragraph } from \"docx\";\n\nconst browserRender = async (value: string): Promise<string> => {\n const element = document.createElement(\"div\");\n element.style.visibility = \"hidden\";\n document.body.appendChild(element);\n try {\n const result = await mermaid.render(\"mermaid\", value, element);\n return result.svg;\n } finally {\n document.body.removeChild(element);\n }\n};\n\n/**\n * A plugin to render Mermaid inside \"code\" nodes with \"mermaid\" language.\n */\nexport const mermaidPlugin = (): RemarkDocxPlugin => {\n const renderSvg = browserRender;\n\n return async ({ root, images }) => {\n const promises: Promise<void>[] = [];\n visit(root, \"code\", ({ lang, value }) => {\n if (lang === \"mermaid\") {\n if (!images.has(value)) {\n images.set(value, null);\n\n promises.push(\n (async () => {\n try {\n const svg = await renderSvg(value);\n const data = new TextEncoder().encode(svg);\n const { width, height } = imageSize(data);\n const pngBuffer = await browserSvgToPng({\n buffer: data.buffer,\n width,\n height,\n });\n\n images.set(value, {\n type: \"svg\",\n width,\n height,\n data: data.buffer,\n fallback: pngBuffer,\n });\n } catch (e) {\n warnOnce(String(e));\n }\n })(),\n );\n }\n }\n });\n\n await Promise.all(promises);\n\n return {\n code: ({ lang, value }, ctx) => {\n if (lang !== \"mermaid\") {\n return null;\n }\n const image = ctx.images.get(value);\n if (image == null) {\n return null;\n }\n\n return new Paragraph({\n children: ctx.render([{ type: \"image\", url: value }]),\n });\n },\n };\n };\n};\n"],"names":["visit","imageSize","browserSvgToPng","warnOnce","Paragraph"],"mappings":";;;;;;;;;AAQA,MAAM,aAAa,GAAG,OAAO,KAAa,KAAqB;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACnC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAClC,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;QAC9D,OAAO,MAAM,CAAC,GAAG;IACnB;YAAU;AACR,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACpC;AACF,CAAC;AAED;;AAEG;AACI,MAAM,aAAa,GAAG,MAAuB;IAClD,MAAM,SAAS,GAAG,aAAa;IAE/B,OAAO,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAI;QAChC,MAAM,QAAQ,GAAoB,EAAE;AACpC,QAAAA,oBAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AAEvB,oBAAA,QAAQ,CAAC,IAAI,CACX,CAAC,YAAW;AACV,wBAAA,IAAI;AACF,4BAAA,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;4BAClC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;4BAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAGC,mBAAS,CAAC,IAAI,CAAC;AACzC,4BAAA,MAAM,SAAS,GAAG,MAAMC,mCAAe,CAAC;gCACtC,MAAM,EAAE,IAAI,CAAC,MAAM;gCACnB,KAAK;gCACL,MAAM;AACP,6BAAA,CAAC;AAEF,4BAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;AAChB,gCAAA,IAAI,EAAE,KAAK;gCACX,KAAK;gCACL,MAAM;gCACN,IAAI,EAAE,IAAI,CAAC,MAAM;AACjB,gCAAA,QAAQ,EAAE,SAAS;AACpB,6BAAA,CAAC;wBACJ;wBAAE,OAAO,CAAC,EAAE;AACV,4BAAAC,cAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACrB;oBACF,CAAC,GAAG,CACL;gBACH;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE3B,OAAO;YACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,KAAI;AAC7B,gBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,OAAO,IAAI;gBACb;gBACA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,OAAO,IAAI;gBACb;gBAEA,OAAO,IAAIC,cAAS,CAAC;AACnB,oBAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,iBAAA,CAAC;YACJ,CAAC;SACF;AACH,IAAA,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { w as warnOnce } from '../../utils-KFMY7wxz.js';
|
|
2
|
+
import mermaid from 'mermaid';
|
|
3
|
+
import { visit } from 'unist-util-visit';
|
|
4
|
+
import { imageSize } from 'image-size';
|
|
5
|
+
import { browserSvgToPng } from '../image/index.js';
|
|
6
|
+
import { Paragraph } from 'docx';
|
|
7
|
+
|
|
8
|
+
const browserRender = async (value) => {
|
|
9
|
+
const element = document.createElement("div");
|
|
10
|
+
element.style.visibility = "hidden";
|
|
11
|
+
document.body.appendChild(element);
|
|
12
|
+
try {
|
|
13
|
+
const result = await mermaid.render("mermaid", value, element);
|
|
14
|
+
return result.svg;
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
document.body.removeChild(element);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* A plugin to render Mermaid inside "code" nodes with "mermaid" language.
|
|
22
|
+
*/
|
|
23
|
+
const mermaidPlugin = () => {
|
|
24
|
+
const renderSvg = browserRender;
|
|
25
|
+
return async ({ root, images }) => {
|
|
26
|
+
const promises = [];
|
|
27
|
+
visit(root, "code", ({ lang, value }) => {
|
|
28
|
+
if (lang === "mermaid") {
|
|
29
|
+
if (!images.has(value)) {
|
|
30
|
+
images.set(value, null);
|
|
31
|
+
promises.push((async () => {
|
|
32
|
+
try {
|
|
33
|
+
const svg = await renderSvg(value);
|
|
34
|
+
const data = new TextEncoder().encode(svg);
|
|
35
|
+
const { width, height } = imageSize(data);
|
|
36
|
+
const pngBuffer = await browserSvgToPng({
|
|
37
|
+
buffer: data.buffer,
|
|
38
|
+
width,
|
|
39
|
+
height,
|
|
40
|
+
});
|
|
41
|
+
images.set(value, {
|
|
42
|
+
type: "svg",
|
|
43
|
+
width,
|
|
44
|
+
height,
|
|
45
|
+
data: data.buffer,
|
|
46
|
+
fallback: pngBuffer,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
warnOnce(String(e));
|
|
51
|
+
}
|
|
52
|
+
})());
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
await Promise.all(promises);
|
|
57
|
+
return {
|
|
58
|
+
code: ({ lang, value }, ctx) => {
|
|
59
|
+
if (lang !== "mermaid") {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const image = ctx.images.get(value);
|
|
63
|
+
if (image == null) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return new Paragraph({
|
|
67
|
+
children: ctx.render([{ type: "image", url: value }]),
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export { mermaidPlugin };
|
|
75
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/plugins/mermaid/index.ts"],"sourcesContent":["import type { RemarkDocxPlugin } from \"../../types\";\nimport { warnOnce } from \"../../utils\";\nimport mermaid from \"mermaid\";\nimport { visit } from \"unist-util-visit\";\nimport { imageSize } from \"image-size\";\nimport { browserSvgToPng } from \"../image\";\nimport { Paragraph } from \"docx\";\n\nconst browserRender = async (value: string): Promise<string> => {\n const element = document.createElement(\"div\");\n element.style.visibility = \"hidden\";\n document.body.appendChild(element);\n try {\n const result = await mermaid.render(\"mermaid\", value, element);\n return result.svg;\n } finally {\n document.body.removeChild(element);\n }\n};\n\n/**\n * A plugin to render Mermaid inside \"code\" nodes with \"mermaid\" language.\n */\nexport const mermaidPlugin = (): RemarkDocxPlugin => {\n const renderSvg = browserRender;\n\n return async ({ root, images }) => {\n const promises: Promise<void>[] = [];\n visit(root, \"code\", ({ lang, value }) => {\n if (lang === \"mermaid\") {\n if (!images.has(value)) {\n images.set(value, null);\n\n promises.push(\n (async () => {\n try {\n const svg = await renderSvg(value);\n const data = new TextEncoder().encode(svg);\n const { width, height } = imageSize(data);\n const pngBuffer = await browserSvgToPng({\n buffer: data.buffer,\n width,\n height,\n });\n\n images.set(value, {\n type: \"svg\",\n width,\n height,\n data: data.buffer,\n fallback: pngBuffer,\n });\n } catch (e) {\n warnOnce(String(e));\n }\n })(),\n );\n }\n }\n });\n\n await Promise.all(promises);\n\n return {\n code: ({ lang, value }, ctx) => {\n if (lang !== \"mermaid\") {\n return null;\n }\n const image = ctx.images.get(value);\n if (image == null) {\n return null;\n }\n\n return new Paragraph({\n children: ctx.render([{ type: \"image\", url: value }]),\n });\n },\n };\n };\n};\n"],"names":[],"mappings":";;;;;;;AAQA,MAAM,aAAa,GAAG,OAAO,KAAa,KAAqB;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACnC,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAClC,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;QAC9D,OAAO,MAAM,CAAC,GAAG;IACnB;YAAU;AACR,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACpC;AACF,CAAC;AAED;;AAEG;AACI,MAAM,aAAa,GAAG,MAAuB;IAClD,MAAM,SAAS,GAAG,aAAa;IAE/B,OAAO,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAI;QAChC,MAAM,QAAQ,GAAoB,EAAE;AACpC,QAAA,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAI;AACtC,YAAA,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AAEvB,oBAAA,QAAQ,CAAC,IAAI,CACX,CAAC,YAAW;AACV,wBAAA,IAAI;AACF,4BAAA,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;4BAClC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;4BAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;AACzC,4BAAA,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;gCACtC,MAAM,EAAE,IAAI,CAAC,MAAM;gCACnB,KAAK;gCACL,MAAM;AACP,6BAAA,CAAC;AAEF,4BAAA,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;AAChB,gCAAA,IAAI,EAAE,KAAK;gCACX,KAAK;gCACL,MAAM;gCACN,IAAI,EAAE,IAAI,CAAC,MAAM;AACjB,gCAAA,QAAQ,EAAE,SAAS;AACpB,6BAAA,CAAC;wBACJ;wBAAE,OAAO,CAAC,EAAE;AACV,4BAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBACrB;oBACF,CAAC,GAAG,CACL;gBACH;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE3B,OAAO;YACL,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,KAAI;AAC7B,gBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,OAAO,IAAI;gBACb;gBACA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,OAAO,IAAI;gBACb;gBAEA,OAAO,IAAI,SAAS,CAAC;AACnB,oBAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,iBAAA,CAAC;YACJ,CAAC;SACF;AACH,IAAA,CAAC;AACH;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Paragraph, TextRun } from 'docx';
|
|
2
2
|
import { createHighlighter } from 'shiki';
|
|
3
3
|
import { visit } from 'unist-util-visit';
|
|
4
|
-
import { w as warnOnce } from '../../utils-
|
|
4
|
+
import { w as warnOnce } from '../../utils-KFMY7wxz.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Format to 6 disit hex
|
package/lib/types.d.ts
CHANGED
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
import type { Paragraph, ParagraphChild, Table, TableOfContents } from "docx";
|
|
2
2
|
import type * as mdast from "mdast";
|
|
3
3
|
import type { GetDefinition } from "mdast-util-definitions";
|
|
4
|
-
|
|
5
|
-
export type DocxContent =
|
|
4
|
+
import type { SupportedImageType } from "./utils";
|
|
5
|
+
export type DocxContent = Paragraph | Table | TableOfContents | ParagraphChild;
|
|
6
6
|
type KnownNodeType = mdast.RootContent["type"];
|
|
7
7
|
type MdastNode<T extends string> = T extends KnownNodeType ? Extract<mdast.RootContent, {
|
|
8
8
|
type: T;
|
|
9
9
|
}> : unknown;
|
|
10
|
+
export type DocxImageData = Readonly<{
|
|
11
|
+
data: ArrayBuffer;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
} & ({
|
|
15
|
+
type: Exclude<SupportedImageType, "svg">;
|
|
16
|
+
} | {
|
|
17
|
+
type: Extract<SupportedImageType, "svg">;
|
|
18
|
+
fallback: ArrayBuffer;
|
|
19
|
+
})>;
|
|
20
|
+
type StyleContext = Readonly<{
|
|
21
|
+
bold?: boolean;
|
|
22
|
+
italic?: boolean;
|
|
23
|
+
strike?: boolean;
|
|
24
|
+
inlineCode?: boolean;
|
|
25
|
+
link?: boolean;
|
|
26
|
+
}>;
|
|
10
27
|
export type ListContext = Readonly<{
|
|
11
28
|
level: number;
|
|
12
29
|
meta: Readonly<{
|
|
@@ -31,6 +48,16 @@ export type FootnoteRegistry = {
|
|
|
31
48
|
export type ThematicBreakType = "page" | "section" | "line";
|
|
32
49
|
export type Context = Readonly<{
|
|
33
50
|
render: (node: readonly mdast.RootContent[], ctx?: Context) => DocxContent[];
|
|
51
|
+
width: number;
|
|
52
|
+
style: StyleContext;
|
|
53
|
+
quote?: number;
|
|
54
|
+
list?: ListContext;
|
|
55
|
+
thematicBreak: ThematicBreakType;
|
|
56
|
+
rtl?: boolean;
|
|
57
|
+
definition: GetDefinition;
|
|
58
|
+
images: ReadonlyMap<string, DocxImageData | null>;
|
|
59
|
+
footnote: FootnoteRegistry;
|
|
60
|
+
orderedId: () => string;
|
|
34
61
|
}>;
|
|
35
62
|
export type NodeBuilder<T extends string> = (node: MdastNode<T>, ctx: Context) => DocxContent | DocxContent[] | null;
|
|
36
63
|
export type NodeBuilders = {
|
|
@@ -38,6 +65,7 @@ export type NodeBuilders = {
|
|
|
38
65
|
};
|
|
39
66
|
export type RemarkDocxPlugin = (ctx: Readonly<{
|
|
40
67
|
root: mdast.Root;
|
|
68
|
+
images: Map<string, DocxImageData | null>;
|
|
41
69
|
definition: GetDefinition;
|
|
42
70
|
}>) => Promise<NodeBuilders>;
|
|
43
71
|
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const alreadyWarned = {};
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
function warnOnce(message, cond = false) {
|
|
8
|
+
if (!cond && !alreadyWarned[message]) {
|
|
9
|
+
alreadyWarned[message] = true;
|
|
10
|
+
console.warn(message);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const supportedTypes = ["png", "jpg", "gif", "bmp", "svg"];
|
|
14
|
+
const isSupportedType = (type) => {
|
|
15
|
+
if (!type)
|
|
16
|
+
return false;
|
|
17
|
+
if (supportedTypes.includes(type)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.isSupportedType = isSupportedType;
|
|
24
|
+
exports.warnOnce = warnOnce;
|
|
25
|
+
//# sourceMappingURL=utils-BVB8aSvE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-BVB8aSvE.js","sources":["../src/utils.ts"],"sourcesContent":["const alreadyWarned: { [message: string]: boolean } = {};\n\n/**\n * @internal\n */\nexport function warnOnce(message: string, cond: boolean = false): void {\n if (!cond && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst supportedTypes = [\"png\", \"jpg\", \"gif\", \"bmp\", \"svg\"] as const;\nexport type SupportedImageType = (typeof supportedTypes)[number];\n\nexport const isSupportedType = (\n type: string | undefined,\n): type is SupportedImageType => {\n if (!type) return false;\n if ((supportedTypes as readonly string[]).includes(type)) {\n return true;\n }\n return false;\n};\n"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAmC,EAAE;AAExD;;AAEG;SACa,QAAQ,CAAC,OAAe,EAAE,OAAgB,KAAK,EAAA;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB;AACF;AAEA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU;AAG5D,MAAM,eAAe,GAAG,CAC7B,IAAwB,KACM;AAC9B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK;AACvB,IAAA,IAAK,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxD,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const alreadyWarned = {};
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
function warnOnce(message, cond = false) {
|
|
6
|
+
if (!cond && !alreadyWarned[message]) {
|
|
7
|
+
alreadyWarned[message] = true;
|
|
8
|
+
console.warn(message);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const supportedTypes = ["png", "jpg", "gif", "bmp", "svg"];
|
|
12
|
+
const isSupportedType = (type) => {
|
|
13
|
+
if (!type)
|
|
14
|
+
return false;
|
|
15
|
+
if (supportedTypes.includes(type)) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { isSupportedType as i, warnOnce as w };
|
|
22
|
+
//# sourceMappingURL=utils-KFMY7wxz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-KFMY7wxz.js","sources":["../src/utils.ts"],"sourcesContent":["const alreadyWarned: { [message: string]: boolean } = {};\n\n/**\n * @internal\n */\nexport function warnOnce(message: string, cond: boolean = false): void {\n if (!cond && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst supportedTypes = [\"png\", \"jpg\", \"gif\", \"bmp\", \"svg\"] as const;\nexport type SupportedImageType = (typeof supportedTypes)[number];\n\nexport const isSupportedType = (\n type: string | undefined,\n): type is SupportedImageType => {\n if (!type) return false;\n if ((supportedTypes as readonly string[]).includes(type)) {\n return true;\n }\n return false;\n};\n"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAmC,EAAE;AAExD;;AAEG;SACa,QAAQ,CAAC,OAAe,EAAE,OAAgB,KAAK,EAAA;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB;AACF;AAEA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU;AAG5D,MAAM,eAAe,GAAG,CAC7B,IAAwB,KACM;AAC9B,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK;AACvB,IAAA,IAAK,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxD,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;;;;"}
|
package/lib/utils.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remark-docx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.24",
|
|
4
4
|
"description": "remark plugin to compile markdown to docx (Microsoft Word, Office Open XML).",
|
|
5
5
|
"main": "lib/index.cjs",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"image-size": "^2.0.2",
|
|
43
43
|
"mathml2omml": "^0.5.0",
|
|
44
44
|
"mdast-util-definitions": "^6.0.0",
|
|
45
|
+
"mermaid": "^11.12.2",
|
|
45
46
|
"shiki": "^3.19.0",
|
|
46
47
|
"unist-util-visit": "^5.0.0"
|
|
47
48
|
},
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
"@types/file-saver": "^2.0.7",
|
|
55
56
|
"@types/lodash.debounce": "^4.0.9",
|
|
56
57
|
"@types/mdast": "^4.0.3",
|
|
57
|
-
"@types/node": "^24.
|
|
58
|
+
"@types/node": "^24.10.4",
|
|
58
59
|
"@types/react": "^19.2.7",
|
|
59
60
|
"@types/react-dom": "^19.2.3",
|
|
60
61
|
"@types/unist": "^3.0.0",
|
|
@@ -98,7 +99,8 @@
|
|
|
98
99
|
"pandoc",
|
|
99
100
|
"highlight",
|
|
100
101
|
"latex",
|
|
101
|
-
"math"
|
|
102
|
+
"math",
|
|
103
|
+
"mermaid"
|
|
102
104
|
],
|
|
103
105
|
"author": "inokawa <stratoooo-taster@yahoo.co.jp> (https://github.com/inokawa/)",
|
|
104
106
|
"license": "MIT",
|
package/lib/utils-19qN-XsS.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const alreadyWarned = {};
|
|
4
|
-
/**
|
|
5
|
-
* @internal
|
|
6
|
-
*/
|
|
7
|
-
function warnOnce(message, cond = false) {
|
|
8
|
-
if (!cond && !alreadyWarned[message]) {
|
|
9
|
-
alreadyWarned[message] = true;
|
|
10
|
-
console.warn(message);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
exports.warnOnce = warnOnce;
|
|
15
|
-
//# sourceMappingURL=utils-19qN-XsS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-19qN-XsS.js","sources":["../src/utils.ts"],"sourcesContent":["const alreadyWarned: { [message: string]: boolean } = {};\n\n/**\n * @internal\n */\nexport function warnOnce(message: string, cond: boolean = false): void {\n if (!cond && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAmC,EAAE;AAExD;;AAEG;SACa,QAAQ,CAAC,OAAe,EAAE,OAAgB,KAAK,EAAA;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB;AACF;;;;"}
|
package/lib/utils-BWBt3EKb.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const alreadyWarned = {};
|
|
2
|
-
/**
|
|
3
|
-
* @internal
|
|
4
|
-
*/
|
|
5
|
-
function warnOnce(message, cond = false) {
|
|
6
|
-
if (!cond && !alreadyWarned[message]) {
|
|
7
|
-
alreadyWarned[message] = true;
|
|
8
|
-
console.warn(message);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export { warnOnce as w };
|
|
13
|
-
//# sourceMappingURL=utils-BWBt3EKb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-BWBt3EKb.js","sources":["../src/utils.ts"],"sourcesContent":["const alreadyWarned: { [message: string]: boolean } = {};\n\n/**\n * @internal\n */\nexport function warnOnce(message: string, cond: boolean = false): void {\n if (!cond && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAmC,EAAE;AAExD;;AAEG;SACa,QAAQ,CAAC,OAAe,EAAE,OAAgB,KAAK,EAAA;IAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACvB;AACF;;;;"}
|