remark-docx 0.1.9 → 0.2.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/lib/{index.mjs → index.cjs} +73 -72
- package/lib/index.cjs.map +1 -0
- package/lib/index.js +70 -73
- package/lib/index.js.map +1 -1
- package/lib/mdast-to-docx.d.ts +4 -4
- package/package.json +11 -14
- package/lib/index.mjs.map +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var unistUtilVisit = require('unist-util-visit');
|
|
4
|
+
var docx = require('docx');
|
|
5
|
+
var unifiedLatexUtilParse = require('@unified-latex/unified-latex-util-parse');
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* @internal
|
|
@@ -21,62 +23,62 @@ const INDENT = 0.5;
|
|
|
21
23
|
const DEFAULT_NUMBERINGS = [
|
|
22
24
|
{
|
|
23
25
|
level: 0,
|
|
24
|
-
format: LevelFormat.DECIMAL,
|
|
26
|
+
format: docx.LevelFormat.DECIMAL,
|
|
25
27
|
text: "%1.",
|
|
26
|
-
alignment: AlignmentType.START,
|
|
28
|
+
alignment: docx.AlignmentType.START,
|
|
27
29
|
},
|
|
28
30
|
{
|
|
29
31
|
level: 1,
|
|
30
|
-
format: LevelFormat.DECIMAL,
|
|
32
|
+
format: docx.LevelFormat.DECIMAL,
|
|
31
33
|
text: "%2.",
|
|
32
|
-
alignment: AlignmentType.START,
|
|
34
|
+
alignment: docx.AlignmentType.START,
|
|
33
35
|
style: {
|
|
34
36
|
paragraph: {
|
|
35
|
-
indent: { start: convertInchesToTwip(INDENT * 1) },
|
|
37
|
+
indent: { start: docx.convertInchesToTwip(INDENT * 1) },
|
|
36
38
|
},
|
|
37
39
|
},
|
|
38
40
|
},
|
|
39
41
|
{
|
|
40
42
|
level: 2,
|
|
41
|
-
format: LevelFormat.DECIMAL,
|
|
43
|
+
format: docx.LevelFormat.DECIMAL,
|
|
42
44
|
text: "%3.",
|
|
43
|
-
alignment: AlignmentType.START,
|
|
45
|
+
alignment: docx.AlignmentType.START,
|
|
44
46
|
style: {
|
|
45
47
|
paragraph: {
|
|
46
|
-
indent: { start: convertInchesToTwip(INDENT * 2) },
|
|
48
|
+
indent: { start: docx.convertInchesToTwip(INDENT * 2) },
|
|
47
49
|
},
|
|
48
50
|
},
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
level: 3,
|
|
52
|
-
format: LevelFormat.DECIMAL,
|
|
54
|
+
format: docx.LevelFormat.DECIMAL,
|
|
53
55
|
text: "%4.",
|
|
54
|
-
alignment: AlignmentType.START,
|
|
56
|
+
alignment: docx.AlignmentType.START,
|
|
55
57
|
style: {
|
|
56
58
|
paragraph: {
|
|
57
|
-
indent: { start: convertInchesToTwip(INDENT * 3) },
|
|
59
|
+
indent: { start: docx.convertInchesToTwip(INDENT * 3) },
|
|
58
60
|
},
|
|
59
61
|
},
|
|
60
62
|
},
|
|
61
63
|
{
|
|
62
64
|
level: 4,
|
|
63
|
-
format: LevelFormat.DECIMAL,
|
|
65
|
+
format: docx.LevelFormat.DECIMAL,
|
|
64
66
|
text: "%5.",
|
|
65
|
-
alignment: AlignmentType.START,
|
|
67
|
+
alignment: docx.AlignmentType.START,
|
|
66
68
|
style: {
|
|
67
69
|
paragraph: {
|
|
68
|
-
indent: { start: convertInchesToTwip(INDENT * 4) },
|
|
70
|
+
indent: { start: docx.convertInchesToTwip(INDENT * 4) },
|
|
69
71
|
},
|
|
70
72
|
},
|
|
71
73
|
},
|
|
72
74
|
{
|
|
73
75
|
level: 5,
|
|
74
|
-
format: LevelFormat.DECIMAL,
|
|
76
|
+
format: docx.LevelFormat.DECIMAL,
|
|
75
77
|
text: "%6.",
|
|
76
|
-
alignment: AlignmentType.START,
|
|
78
|
+
alignment: docx.AlignmentType.START,
|
|
77
79
|
style: {
|
|
78
80
|
paragraph: {
|
|
79
|
-
indent: { start: convertInchesToTwip(INDENT * 5) },
|
|
81
|
+
indent: { start: docx.convertInchesToTwip(INDENT * 5) },
|
|
80
82
|
},
|
|
81
83
|
},
|
|
82
84
|
},
|
|
@@ -123,7 +125,7 @@ const createNumberingRegistry = () => {
|
|
|
123
125
|
};
|
|
124
126
|
const mdastToDocx = async (node, { output = "buffer", title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images, latex) => {
|
|
125
127
|
const definition = {};
|
|
126
|
-
visit(node, "definition", (node) => {
|
|
128
|
+
unistUtilVisit.visit(node, "definition", (node) => {
|
|
127
129
|
definition[node.identifier] = node.url;
|
|
128
130
|
});
|
|
129
131
|
const footnote = createFootnoteRegistry();
|
|
@@ -137,7 +139,7 @@ const mdastToDocx = async (node, { output = "buffer", title, subject, creator, k
|
|
|
137
139
|
numbering,
|
|
138
140
|
latex,
|
|
139
141
|
});
|
|
140
|
-
const doc = new Document({
|
|
142
|
+
const doc = new docx.Document({
|
|
141
143
|
title,
|
|
142
144
|
subject,
|
|
143
145
|
creator,
|
|
@@ -155,13 +157,11 @@ const mdastToDocx = async (node, { output = "buffer", title, subject, creator, k
|
|
|
155
157
|
});
|
|
156
158
|
switch (output) {
|
|
157
159
|
case "buffer":
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
// when it doesn't detect a Node environment.
|
|
162
|
-
return typeof Buffer === "function" ? Buffer.from(bufOut) : bufOut;
|
|
160
|
+
return docx.Packer.toBuffer(doc);
|
|
161
|
+
case "arrayBuffer":
|
|
162
|
+
return docx.Packer.toArrayBuffer(doc);
|
|
163
163
|
case "blob":
|
|
164
|
-
return Packer.toBlob(doc);
|
|
164
|
+
return docx.Packer.toBlob(doc);
|
|
165
165
|
}
|
|
166
166
|
};
|
|
167
167
|
const convertNodes = (nodes, ctx) => {
|
|
@@ -277,17 +277,17 @@ const buildParagraph = ({ children }, ctx) => {
|
|
|
277
277
|
const list = ctx.list;
|
|
278
278
|
const nodes = convertNodes(children, ctx);
|
|
279
279
|
if (list && list.checked != null) {
|
|
280
|
-
nodes.unshift(new CheckBox({
|
|
280
|
+
nodes.unshift(new docx.CheckBox({
|
|
281
281
|
checked: list.checked,
|
|
282
282
|
checkedState: { value: "2611" },
|
|
283
283
|
uncheckedState: { value: "2610" },
|
|
284
284
|
}));
|
|
285
285
|
}
|
|
286
|
-
return new Paragraph({
|
|
286
|
+
return new docx.Paragraph({
|
|
287
287
|
children: nodes,
|
|
288
288
|
indent: ctx.indent > 0
|
|
289
289
|
? {
|
|
290
|
-
start: convertInchesToTwip(INDENT * ctx.indent),
|
|
290
|
+
start: docx.convertInchesToTwip(INDENT * ctx.indent),
|
|
291
291
|
}
|
|
292
292
|
: undefined,
|
|
293
293
|
...(list &&
|
|
@@ -309,32 +309,32 @@ const buildHeading = ({ children, depth }, ctx) => {
|
|
|
309
309
|
let headingLevel;
|
|
310
310
|
switch (depth) {
|
|
311
311
|
case 1:
|
|
312
|
-
headingLevel = HeadingLevel.TITLE;
|
|
312
|
+
headingLevel = docx.HeadingLevel.TITLE;
|
|
313
313
|
break;
|
|
314
314
|
case 2:
|
|
315
|
-
headingLevel = HeadingLevel.HEADING_1;
|
|
315
|
+
headingLevel = docx.HeadingLevel.HEADING_1;
|
|
316
316
|
break;
|
|
317
317
|
case 3:
|
|
318
|
-
headingLevel = HeadingLevel.HEADING_2;
|
|
318
|
+
headingLevel = docx.HeadingLevel.HEADING_2;
|
|
319
319
|
break;
|
|
320
320
|
case 4:
|
|
321
|
-
headingLevel = HeadingLevel.HEADING_3;
|
|
321
|
+
headingLevel = docx.HeadingLevel.HEADING_3;
|
|
322
322
|
break;
|
|
323
323
|
case 5:
|
|
324
|
-
headingLevel = HeadingLevel.HEADING_4;
|
|
324
|
+
headingLevel = docx.HeadingLevel.HEADING_4;
|
|
325
325
|
break;
|
|
326
326
|
case 6:
|
|
327
|
-
headingLevel = HeadingLevel.HEADING_5;
|
|
327
|
+
headingLevel = docx.HeadingLevel.HEADING_5;
|
|
328
328
|
break;
|
|
329
329
|
}
|
|
330
330
|
const nodes = convertNodes(children, ctx);
|
|
331
|
-
return new Paragraph({
|
|
331
|
+
return new docx.Paragraph({
|
|
332
332
|
heading: headingLevel,
|
|
333
333
|
children: nodes,
|
|
334
334
|
});
|
|
335
335
|
};
|
|
336
336
|
const buildThematicBreak = (_) => {
|
|
337
|
-
return new Paragraph({
|
|
337
|
+
return new docx.Paragraph({
|
|
338
338
|
thematicBreak: true,
|
|
339
339
|
});
|
|
340
340
|
};
|
|
@@ -371,23 +371,23 @@ const buildTable = ({ children, align }, ctx) => {
|
|
|
371
371
|
const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
|
|
372
372
|
switch (a) {
|
|
373
373
|
case "left":
|
|
374
|
-
return AlignmentType.LEFT;
|
|
374
|
+
return docx.AlignmentType.LEFT;
|
|
375
375
|
case "right":
|
|
376
|
-
return AlignmentType.RIGHT;
|
|
376
|
+
return docx.AlignmentType.RIGHT;
|
|
377
377
|
case "center":
|
|
378
|
-
return AlignmentType.CENTER;
|
|
378
|
+
return docx.AlignmentType.CENTER;
|
|
379
379
|
default:
|
|
380
|
-
return AlignmentType.LEFT;
|
|
380
|
+
return docx.AlignmentType.LEFT;
|
|
381
381
|
}
|
|
382
382
|
});
|
|
383
|
-
return new Table({
|
|
383
|
+
return new docx.Table({
|
|
384
384
|
rows: children.map((r) => {
|
|
385
385
|
return buildTableRow(r, ctx, cellAligns);
|
|
386
386
|
}),
|
|
387
387
|
});
|
|
388
388
|
};
|
|
389
389
|
const buildTableRow = ({ children }, ctx, cellAligns) => {
|
|
390
|
-
return new TableRow({
|
|
390
|
+
return new docx.TableRow({
|
|
391
391
|
children: children.map((c, i) => {
|
|
392
392
|
return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
|
|
393
393
|
}),
|
|
@@ -395,9 +395,9 @@ const buildTableRow = ({ children }, ctx, cellAligns) => {
|
|
|
395
395
|
};
|
|
396
396
|
const buildTableCell = ({ children }, ctx, align) => {
|
|
397
397
|
const nodes = convertNodes(children, ctx);
|
|
398
|
-
return new TableCell({
|
|
398
|
+
return new docx.TableCell({
|
|
399
399
|
children: [
|
|
400
|
-
new Paragraph({
|
|
400
|
+
new docx.Paragraph({
|
|
401
401
|
alignment: align,
|
|
402
402
|
children: nodes,
|
|
403
403
|
}),
|
|
@@ -406,32 +406,32 @@ const buildTableCell = ({ children }, ctx, align) => {
|
|
|
406
406
|
};
|
|
407
407
|
const buildHtml = ({ value }) => {
|
|
408
408
|
// FIXME: transform to text for now
|
|
409
|
-
return new Paragraph({
|
|
409
|
+
return new docx.Paragraph({
|
|
410
410
|
children: [buildText(value, {})],
|
|
411
411
|
});
|
|
412
412
|
};
|
|
413
413
|
const buildCode = ({ value, lang: _lang, meta: _meta, }) => {
|
|
414
414
|
// FIXME: transform to text for now
|
|
415
|
-
return new Paragraph({
|
|
415
|
+
return new docx.Paragraph({
|
|
416
416
|
children: [buildText(value, {})],
|
|
417
417
|
});
|
|
418
418
|
};
|
|
419
419
|
const buildMath = ({ value }, ctx) => {
|
|
420
|
-
return ctx.latex(value).map((runs) => new Paragraph({
|
|
420
|
+
return ctx.latex(value).map((runs) => new docx.Paragraph({
|
|
421
421
|
children: [
|
|
422
|
-
new Math({
|
|
422
|
+
new docx.Math({
|
|
423
423
|
children: runs,
|
|
424
424
|
}),
|
|
425
425
|
],
|
|
426
426
|
}));
|
|
427
427
|
};
|
|
428
428
|
const buildInlineMath = ({ value }, ctx) => {
|
|
429
|
-
return new Math({
|
|
429
|
+
return new docx.Math({
|
|
430
430
|
children: ctx.latex(value).flatMap((runs) => runs),
|
|
431
431
|
});
|
|
432
432
|
};
|
|
433
433
|
const buildText = (text, deco) => {
|
|
434
|
-
return new TextRun({
|
|
434
|
+
return new docx.TextRun({
|
|
435
435
|
text,
|
|
436
436
|
bold: deco.strong,
|
|
437
437
|
italics: deco.emphasis,
|
|
@@ -439,11 +439,11 @@ const buildText = (text, deco) => {
|
|
|
439
439
|
});
|
|
440
440
|
};
|
|
441
441
|
const buildBreak = (_) => {
|
|
442
|
-
return new TextRun({ text: "", break: 1 });
|
|
442
|
+
return new docx.TextRun({ text: "", break: 1 });
|
|
443
443
|
};
|
|
444
444
|
const buildLink = ({ children, url }, ctx) => {
|
|
445
445
|
const nodes = convertNodes(children, ctx);
|
|
446
|
-
return new ExternalHyperlink({
|
|
446
|
+
return new docx.ExternalHyperlink({
|
|
447
447
|
link: url,
|
|
448
448
|
children: nodes,
|
|
449
449
|
});
|
|
@@ -452,7 +452,8 @@ const buildImage = ({ url }, images) => {
|
|
|
452
452
|
const img = images[url];
|
|
453
453
|
invariant(img, `Fetch image was failed: ${url}`);
|
|
454
454
|
const { image, width, height } = img;
|
|
455
|
-
return new ImageRun({
|
|
455
|
+
return new docx.ImageRun({
|
|
456
|
+
type: img.type,
|
|
456
457
|
data: image,
|
|
457
458
|
transformation: {
|
|
458
459
|
width,
|
|
@@ -479,17 +480,17 @@ const registerFootnoteDefinition = ({ children, identifier }, ctx) => {
|
|
|
479
480
|
children: children.map((node) => {
|
|
480
481
|
// Convert each node and extract the first result as a paragraph
|
|
481
482
|
const nodes = convertNodes([node], ctx);
|
|
482
|
-
if (nodes[0] instanceof Paragraph) {
|
|
483
|
+
if (nodes[0] instanceof docx.Paragraph) {
|
|
483
484
|
return nodes[0];
|
|
484
485
|
}
|
|
485
486
|
// For non-paragraph content, wrap in a paragraph
|
|
486
|
-
return new Paragraph({ children: nodes });
|
|
487
|
+
return new docx.Paragraph({ children: nodes });
|
|
487
488
|
}),
|
|
488
489
|
};
|
|
489
490
|
ctx.footnote.def(identifier, definition);
|
|
490
491
|
};
|
|
491
492
|
const buildFootnoteReference = ({ identifier }, ctx) => {
|
|
492
|
-
return new FootnoteReferenceRun(ctx.footnote.ref(identifier));
|
|
493
|
+
return new docx.FootnoteReferenceRun(ctx.footnote.ref(identifier));
|
|
493
494
|
};
|
|
494
495
|
|
|
495
496
|
const hasSquareBrackets = (arg) => {
|
|
@@ -498,7 +499,7 @@ const hasSquareBrackets = (arg) => {
|
|
|
498
499
|
const hasCurlyBrackets = (arg) => {
|
|
499
500
|
return !!arg && arg.openMark === "{" && arg.closeMark === "}";
|
|
500
501
|
};
|
|
501
|
-
const mapString = (s) => new MathRun(s);
|
|
502
|
+
const mapString = (s) => new docx.MathRun(s);
|
|
502
503
|
const mapMacro = (n, runs) => {
|
|
503
504
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
504
505
|
switch (n.content) {
|
|
@@ -708,7 +709,7 @@ const mapMacro = (n, runs) => {
|
|
|
708
709
|
const prev = runs.pop();
|
|
709
710
|
if (!prev)
|
|
710
711
|
break;
|
|
711
|
-
return new MathSuperScript({
|
|
712
|
+
return new docx.MathSuperScript({
|
|
712
713
|
children: [prev],
|
|
713
714
|
superScript: mapGroup((_c = (_b = (_a = n.args) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : []),
|
|
714
715
|
});
|
|
@@ -717,7 +718,7 @@ const mapMacro = (n, runs) => {
|
|
|
717
718
|
const prev = runs.pop();
|
|
718
719
|
if (!prev)
|
|
719
720
|
break;
|
|
720
|
-
return new MathSubScript({
|
|
721
|
+
return new docx.MathSubScript({
|
|
721
722
|
children: [prev],
|
|
722
723
|
subScript: mapGroup((_f = (_e = (_d = n.args) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.content) !== null && _f !== void 0 ? _f : []),
|
|
723
724
|
});
|
|
@@ -730,7 +731,7 @@ const mapMacro = (n, runs) => {
|
|
|
730
731
|
break;
|
|
731
732
|
case "sum": {
|
|
732
733
|
// TODO: support superscript and subscript
|
|
733
|
-
return new MathSum({
|
|
734
|
+
return new docx.MathSum({
|
|
734
735
|
children: [],
|
|
735
736
|
});
|
|
736
737
|
}
|
|
@@ -743,7 +744,7 @@ const mapMacro = (n, runs) => {
|
|
|
743
744
|
if (args.length === 2 &&
|
|
744
745
|
hasCurlyBrackets(args[0]) &&
|
|
745
746
|
hasCurlyBrackets(args[1])) {
|
|
746
|
-
return new MathFraction({
|
|
747
|
+
return new docx.MathFraction({
|
|
747
748
|
numerator: mapGroup(args[0].content),
|
|
748
749
|
denominator: mapGroup(args[1].content),
|
|
749
750
|
});
|
|
@@ -753,14 +754,14 @@ const mapMacro = (n, runs) => {
|
|
|
753
754
|
case "sqrt": {
|
|
754
755
|
const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
|
|
755
756
|
if (args.length === 1 && hasCurlyBrackets(args[0])) {
|
|
756
|
-
return new MathRadical({
|
|
757
|
+
return new docx.MathRadical({
|
|
757
758
|
children: mapGroup(args[0].content),
|
|
758
759
|
});
|
|
759
760
|
}
|
|
760
761
|
if (args.length === 2 &&
|
|
761
762
|
hasSquareBrackets(args[0]) &&
|
|
762
763
|
hasCurlyBrackets(args[1])) {
|
|
763
|
-
return new MathRadical({
|
|
764
|
+
return new docx.MathRadical({
|
|
764
765
|
children: mapGroup(args[1].content),
|
|
765
766
|
degree: mapGroup(args[0].content),
|
|
766
767
|
});
|
|
@@ -820,7 +821,7 @@ const mapNode = (n, runs) => {
|
|
|
820
821
|
* @internal
|
|
821
822
|
*/
|
|
822
823
|
const parseLatex = (value) => {
|
|
823
|
-
const parsed = parseMath(value);
|
|
824
|
+
const parsed = unifiedLatexUtilParse.parseMath(value);
|
|
824
825
|
const paragraphs = [[]];
|
|
825
826
|
let runs = paragraphs[0];
|
|
826
827
|
for (const n of parsed) {
|
|
@@ -843,14 +844,14 @@ const plugin = function (opts = {}) {
|
|
|
843
844
|
};
|
|
844
845
|
return async (node) => {
|
|
845
846
|
const imageList = [];
|
|
846
|
-
visit(node, "image", (node) => {
|
|
847
|
+
unistUtilVisit.visit(node, "image", (node) => {
|
|
847
848
|
imageList.push(node);
|
|
848
849
|
});
|
|
849
850
|
const defs = new Map();
|
|
850
|
-
visit(node, "definition", (node) => {
|
|
851
|
+
unistUtilVisit.visit(node, "definition", (node) => {
|
|
851
852
|
defs.set(node.identifier, node);
|
|
852
853
|
});
|
|
853
|
-
visit(node, "imageReference", (node) => {
|
|
854
|
+
unistUtilVisit.visit(node, "imageReference", (node) => {
|
|
854
855
|
const maybeImage = defs.get(node.identifier);
|
|
855
856
|
if (maybeImage) {
|
|
856
857
|
imageList.push(maybeImage);
|
|
@@ -880,5 +881,5 @@ const plugin = function (opts = {}) {
|
|
|
880
881
|
};
|
|
881
882
|
};
|
|
882
883
|
|
|
883
|
-
|
|
884
|
-
//# sourceMappingURL=index.
|
|
884
|
+
module.exports = plugin;
|
|
885
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/src/utils.ts","../src/src/mdast-to-docx.ts","../src/src/latex.ts","../src/src/plugin.ts"],"sourcesContent":["/**\n * @internal\n */\nexport const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\n/**\n * @internal\n */\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import {\n convertInchesToTwip,\n Packer,\n Document,\n Paragraph,\n ParagraphChild,\n Table,\n TableRow,\n TableCell,\n TableOfContents,\n TextRun,\n ImageRun,\n ExternalHyperlink,\n Math,\n HeadingLevel,\n LevelFormat,\n AlignmentType,\n IImageOptions,\n ILevelsOptions,\n FootnoteReferenceRun,\n CheckBox,\n MathRun,\n type IPropertiesOptions,\n} from \"docx\";\nimport type * as mdast from \"./models/mdast\";\nimport { invariant, unreachable } from \"./utils\";\nimport { visit } from \"unist-util-visit\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: ILevelsOptions[] = [\n {\n level: 0,\n format: LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: AlignmentType.START,\n },\n {\n level: 1,\n format: LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: IImageOptions[\"data\"];\n width: number;\n height: number;\n type: IImageOptions[\"type\"];\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<{\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n}>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n reference: string;\n checked?: boolean;\n}>;\n\n/**\n * @internal\n */\nexport type LatexParser = (value: string) => MathRun[][];\n\ntype Definition = Record<string, string>;\ntype FootnoteDefinition = Readonly<{ children: Paragraph[] }>;\n\ntype FootnoteRegistry = {\n ref: (id: string) => number;\n def: (id: string, def: FootnoteDefinition) => void;\n footnotes: () => {\n [key: string]: FootnoteDefinition;\n };\n};\n\nconst createFootnoteRegistry = (): FootnoteRegistry => {\n const idToInternalId = new Map<string, number>();\n const defs = new Map<number, FootnoteDefinition>();\n\n const getId = (id: string): number => {\n let internalId = idToInternalId.get(id);\n if (internalId == null) {\n idToInternalId.set(id, (internalId = idToInternalId.size + 1));\n }\n return internalId;\n };\n\n return {\n ref: (id) => {\n return getId(id);\n },\n def: (id, def) => {\n const internalId = getId(id);\n defs.set(internalId, def);\n },\n footnotes: () => {\n return defs.entries().reduce(\n (acc, [key, def]) => {\n acc[key] = def;\n return acc;\n },\n {} as {\n [key: string]: FootnoteDefinition;\n },\n );\n },\n };\n};\n\ntype NumberingRegistry = {\n create: () => string;\n getAll: () => Array<{ reference: string; levels: ILevelsOptions[] }>;\n};\n\nconst createNumberingRegistry = (): NumberingRegistry => {\n let counter = 1;\n\n return {\n create: () => {\n return `${ORDERED_LIST_REF}-${counter++}`;\n },\n getAll: () => {\n return Array.from({ length: counter }, (_, i) => ({\n reference: `${ORDERED_LIST_REF}-${i}`,\n levels: DEFAULT_NUMBERINGS,\n }));\n },\n };\n};\n\ntype Context = Readonly<{\n deco: Decoration;\n images: Readonly<ImageDataMap>;\n indent: number;\n list?: ListInfo;\n def: Readonly<Definition>;\n footnote: FootnoteRegistry;\n numbering: NumberingRegistry;\n latex: LatexParser;\n}>;\n\nexport interface DocxOptions\n extends Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n > {\n /**\n * Set output type of `VFile.result`. `buffer` is `Promise<Buffer>`. `arrayBuffer` is `Promise<ArrayBuffer>`. `blob` is `Promise<Blob>`.\n */\n output?: \"buffer\" | \"arrayBuffer\" | \"blob\";\n /**\n * **You must set** if your markdown includes images. See example for [browser](https://github.com/inokawa/remark-docx/blob/main/stories/playground.stories.tsx) and [Node.js](https://github.com/inokawa/remark-docx/blob/main/src/index.spec.ts).\n */\n imageResolver?: ImageResolver;\n}\n\ntype DocxChild = Paragraph | Table | TableOfContents;\ntype DocxContent = DocxChild | ParagraphChild;\n\nexport const mdastToDocx = async (\n node: mdast.Root,\n {\n output = \"buffer\",\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: DocxOptions,\n images: ImageDataMap,\n latex: LatexParser,\n): Promise<any> => {\n const definition: Definition = {};\n visit(node, \"definition\", (node) => {\n definition[node.identifier] = node.url;\n });\n\n const footnote = createFootnoteRegistry();\n const numbering = createNumberingRegistry();\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n indent: 0,\n def: definition,\n footnote,\n numbering,\n latex,\n });\n const doc = new Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n footnotes: footnote.footnotes(),\n sections: [{ children: nodes as DocxChild[] }],\n numbering: {\n config: numbering.getAll(),\n },\n });\n\n switch (output) {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"arrayBuffer\":\n return Packer.toArrayBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n};\n\nconst convertNodes = (nodes: mdast.Content[], ctx: Context): DocxContent[] => {\n const results: DocxContent[] = [];\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\": {\n results.push(buildParagraph(node, ctx));\n break;\n }\n case \"heading\": {\n results.push(buildHeading(node, ctx));\n break;\n }\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\": {\n results.push(...buildBlockquote(node, ctx));\n break;\n }\n case \"list\": {\n results.push(...buildList(node, ctx));\n break;\n }\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // noop\n break;\n case \"footnoteDefinition\": {\n registerFootnoteDefinition(node, ctx);\n break;\n }\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n const nodes = convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n });\n results.push(...nodes);\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\": {\n results.push(buildLink(node, ctx));\n break;\n }\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n results.push(...buildLinkReference(node, ctx));\n break;\n case \"imageReference\": {\n const image = buildImageReference(node, ctx);\n if (image) {\n results.push(image);\n }\n break;\n }\n case \"footnote\": {\n // inline footnote was removed in mdast v5\n break;\n }\n case \"footnoteReference\":\n results.push(buildFootnoteReference(node, ctx));\n break;\n case \"math\":\n results.push(...buildMath(node, ctx));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node, ctx));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n};\n\nconst buildParagraph = (\n { children }: mdast.Paragraph,\n ctx: Context,\n): DocxContent => {\n const list = ctx.list;\n const nodes = convertNodes(children, ctx);\n\n if (list && list.checked != null) {\n nodes.unshift(\n new CheckBox({\n checked: list.checked,\n checkedState: { value: \"2611\" },\n uncheckedState: { value: \"2610\" },\n }),\n );\n }\n return new Paragraph({\n children: nodes,\n indent:\n ctx.indent > 0\n ? {\n start: convertInchesToTwip(INDENT * ctx.indent),\n }\n : undefined,\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: list.reference,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n};\n\nconst buildHeading = (\n { children, depth }: mdast.Heading,\n ctx: Context,\n): DocxContent => {\n let headingLevel: (typeof HeadingLevel)[keyof typeof HeadingLevel];\n switch (depth) {\n case 1:\n headingLevel = HeadingLevel.TITLE;\n break;\n case 2:\n headingLevel = HeadingLevel.HEADING_1;\n break;\n case 3:\n headingLevel = HeadingLevel.HEADING_2;\n break;\n case 4:\n headingLevel = HeadingLevel.HEADING_3;\n break;\n case 5:\n headingLevel = HeadingLevel.HEADING_4;\n break;\n case 6:\n headingLevel = HeadingLevel.HEADING_5;\n break;\n }\n const nodes = convertNodes(children, ctx);\n return new Paragraph({\n heading: headingLevel,\n children: nodes,\n });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak): DocxContent => {\n return new Paragraph({\n thematicBreak: true,\n });\n};\n\nconst buildBlockquote = (\n { children }: mdast.Blockquote,\n ctx: Context,\n): DocxContent[] => {\n return convertNodes(children, {\n ...ctx,\n indent: ctx.indent + 1,\n });\n};\n\nconst buildList = (\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context,\n): DocxContent[] => {\n const isTopLevel = !ctx.list;\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n reference:\n isTopLevel && ordered\n ? ctx.numbering.create()\n : ctx.list?.reference || ORDERED_LIST_REF,\n };\n return children.flatMap((item) => {\n return buildListItem(item, {\n ...ctx,\n list,\n });\n });\n};\n\nconst buildListItem = (\n { children, checked, spread: _spread }: mdast.ListItem,\n ctx: Context,\n): DocxContent[] => {\n return convertNodes(children, {\n ...ctx,\n ...(ctx.list && { list: { ...ctx.list, checked: checked ?? undefined } }),\n });\n};\n\nconst buildTable = (\n { children, align }: mdast.Table,\n ctx: Context,\n): DocxContent => {\n const cellAligns:\n | (typeof AlignmentType)[keyof typeof AlignmentType][]\n | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return AlignmentType.LEFT;\n case \"right\":\n return AlignmentType.RIGHT;\n case \"center\":\n return AlignmentType.CENTER;\n default:\n return AlignmentType.LEFT;\n }\n });\n\n return new Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n};\n\nconst buildTableRow = (\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: (typeof AlignmentType)[keyof typeof AlignmentType][] | undefined,\n): TableRow => {\n return new TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n};\n\nconst buildTableCell = (\n { children }: mdast.TableCell,\n ctx: Context,\n align: (typeof AlignmentType)[keyof typeof AlignmentType] | undefined,\n): TableCell => {\n const nodes = convertNodes(children, ctx);\n return new TableCell({\n children: [\n new Paragraph({\n alignment: align,\n children: nodes,\n }),\n ],\n });\n};\n\nconst buildHtml = ({ value }: mdast.HTML): DocxContent => {\n // FIXME: transform to text for now\n return new Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildCode = ({\n value,\n lang: _lang,\n meta: _meta,\n}: mdast.Code): DocxContent => {\n // FIXME: transform to text for now\n return new Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildMath = ({ value }: mdast.Math, ctx: Context): DocxContent[] => {\n return ctx.latex(value).map(\n (runs) =>\n new Paragraph({\n children: [\n new Math({\n children: runs,\n }),\n ],\n }),\n );\n};\n\nconst buildInlineMath = (\n { value }: mdast.InlineMath,\n ctx: Context,\n): DocxContent => {\n return new Math({\n children: ctx.latex(value).flatMap((runs) => runs),\n });\n};\n\nconst buildText = (text: string, deco: Decoration): DocxContent => {\n return new TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n};\n\nconst buildBreak = (_: mdast.Break): DocxContent => {\n return new TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n { children, url }: Pick<mdast.Link, \"children\" | \"url\">,\n ctx: Context,\n): DocxContent => {\n const nodes = convertNodes(children, ctx);\n return new ExternalHyperlink({\n link: url,\n children: nodes,\n });\n};\n\nconst buildImage = (\n { url }: Pick<mdast.Image, \"url\">,\n images: ImageDataMap,\n): DocxContent => {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new ImageRun({\n type: img.type,\n data: image,\n transformation: {\n width,\n height,\n },\n } as IImageOptions);\n};\n\nconst buildLinkReference = (\n { children, identifier }: mdast.LinkReference,\n ctx: Context,\n): DocxContent[] => {\n const def = ctx.def[identifier];\n if (def == null) {\n return convertNodes(children, ctx);\n }\n return [buildLink({ children, url: def }, ctx)];\n};\n\nconst buildImageReference = (\n { identifier }: mdast.ImageReference,\n ctx: Context,\n): DocxContent | undefined => {\n const def = ctx.def[identifier];\n if (def == null) {\n return;\n }\n return buildImage({ url: def }, ctx.images);\n};\n\nconst registerFootnoteDefinition = (\n { children, identifier }: mdast.FootnoteDefinition,\n ctx: Context,\n): void => {\n const definition: FootnoteDefinition = {\n children: children.map((node) => {\n // Convert each node and extract the first result as a paragraph\n const nodes = convertNodes([node], ctx);\n if (nodes[0] instanceof Paragraph) {\n return nodes[0] as Paragraph;\n }\n // For non-paragraph content, wrap in a paragraph\n return new Paragraph({ children: nodes });\n }),\n };\n ctx.footnote.def(identifier, definition);\n};\n\nconst buildFootnoteReference = (\n { identifier }: mdast.FootnoteReference,\n ctx: Context,\n): DocxContent => {\n return new FootnoteReferenceRun(ctx.footnote.ref(identifier));\n};\n","import {\n MathRun,\n MathSuperScript,\n MathSubScript,\n MathRadical,\n MathFraction,\n MathSum,\n} from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\nimport { LatexParser } from \"./mdast-to-docx\";\n\nconst hasSquareBrackets = (\n arg: latex.Argument | undefined,\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBrackets = (\n arg: latex.Argument | undefined,\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): MathRun => new MathRun(s);\n\nconst mapMacro = (n: latex.Macro, runs: MathRun[]): MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBrackets(args[0])) {\n return new MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: latex.Node[]): MathRun[] => {\n const group: MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (n: latex.Node, runs: MathRun[]): MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\n/**\n * @internal\n */\nexport const parseLatex: LatexParser = (value: string): MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: MathRun[][] = [[]];\n let runs: MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport {\n mdastToDocx,\n DocxOptions,\n ImageDataMap,\n ImageData,\n} from \"./mdast-to-docx\";\nimport { invariant } from \"./utils\";\nimport { parseLatex } from \"./latex\";\n\nexport type { DocxOptions };\n\nconst plugin: Plugin<[DocxOptions?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images, parseLatex);\n };\n\n return async (node) => {\n const imageList: (mdast.Image | mdast.Definition)[] = [];\n visit(node as mdast.Root, \"image\", (node) => {\n imageList.push(node);\n });\n const defs = new Map<string, mdast.Definition>();\n visit(node as mdast.Root, \"definition\", (node) => {\n defs.set(node.identifier, node);\n });\n visit(node as mdast.Root, \"imageReference\", (node) => {\n const maybeImage = defs.get(node.identifier)!;\n if (maybeImage) {\n imageList.push(maybeImage);\n }\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const resolved = new Set<string>();\n const promises: Promise<{ img: ImageData; url: string }>[] = [];\n imageList.forEach(({ url }) => {\n if (!resolved.has(url)) {\n resolved.add(url);\n promises.push(\n (async () => {\n const img = await imageResolver(url);\n return { img, url };\n })(),\n );\n }\n });\n images = (await Promise.all(promises)).reduce((acc, { img, url }) => {\n acc[url] = img;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["LevelFormat","AlignmentType","convertInchesToTwip","visit","Document","Packer","CheckBox","Paragraph","HeadingLevel","Table","TableRow","TableCell","Math","TextRun","ExternalHyperlink","ImageRun","FootnoteReferenceRun","MathRun","MathSuperScript","MathSubScript","MathSum","MathFraction","MathRadical","parseMath"],"mappings":"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"}
|