remark-docx 0.0.7 → 0.1.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 CHANGED
@@ -1,74 +1,361 @@
1
+ import { __awaiter } from 'tslib';
1
2
  import { visit } from 'unist-util-visit';
2
3
  import * as docx from 'docx';
3
4
  import { convertInchesToTwip, Packer } from 'docx';
5
+ import { parseMath } from '@unified-latex/unified-latex-util-parse';
4
6
 
5
- /*! *****************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
-
20
- var __assign = function() {
21
- __assign = Object.assign || function __assign(t) {
22
- for (var s, i = 1, n = arguments.length; i < n; i++) {
23
- s = arguments[i];
24
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
25
- }
26
- return t;
27
- };
28
- return __assign.apply(this, arguments);
29
- };
30
-
31
- function __awaiter(thisArg, _arguments, P, generator) {
32
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
- return new (P || (P = Promise))(function (resolve, reject) {
34
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
- step((generator = generator.apply(thisArg, _arguments || [])).next());
38
- });
39
- }
40
-
41
- function __generator(thisArg, body) {
42
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
43
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
44
- function verb(n) { return function (v) { return step([n, v]); }; }
45
- function step(op) {
46
- if (f) throw new TypeError("Generator is already executing.");
47
- while (_) try {
48
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
49
- if (y = 0, t) op = [op[0] & 2, t.value];
50
- switch (op[0]) {
51
- case 0: case 1: t = op; break;
52
- case 4: _.label++; return { value: op[1], done: false };
53
- case 5: _.label++; y = op[1]; op = [0]; continue;
54
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
55
- default:
56
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
57
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
58
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
59
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
60
- if (t[2]) _.ops.pop();
61
- _.trys.pop(); continue;
62
- }
63
- op = body.call(thisArg, _);
64
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
65
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
66
- }
7
+ const unreachable = (_) => {
8
+ throw new Error("unreachable");
9
+ };
10
+ function invariant(cond, message) {
11
+ if (!cond)
12
+ throw new Error(message);
67
13
  }
68
14
 
69
- var ORDERED_LIST_REF = "ordered";
70
- var INDENT = 0.5;
71
- var DEFAULT_NUMBERINGS = [
15
+ const hasSquareBracket = (arg) => {
16
+ return !!arg && arg.openMark === "[" && arg.closeMark === "]";
17
+ };
18
+ const hasCurlyBracket = (arg) => {
19
+ return !!arg && arg.openMark === "{" && arg.closeMark === "}";
20
+ };
21
+ const mapString = (s) => new docx.MathRun(s);
22
+ const mapMacro = (n, runs) => {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h;
24
+ switch (n.content) {
25
+ case "#":
26
+ return mapString("#");
27
+ case "$":
28
+ return mapString("$");
29
+ case "%":
30
+ return mapString("%");
31
+ case "&":
32
+ return mapString("&");
33
+ case "textasciitilde":
34
+ return mapString("~");
35
+ case "textasciicircum":
36
+ return mapString("^");
37
+ case "textbackslash":
38
+ return mapString("∖");
39
+ case "{":
40
+ return mapString("{");
41
+ case "}":
42
+ return mapString("}");
43
+ case "textbar":
44
+ return mapString("|");
45
+ case "textless":
46
+ return mapString("<");
47
+ case "textgreater":
48
+ return mapString(">");
49
+ case "neq":
50
+ return mapString("≠");
51
+ case "sim":
52
+ return mapString("∼");
53
+ case "simeq":
54
+ return mapString("≃");
55
+ case "approx":
56
+ return mapString("≈");
57
+ case "fallingdotseq":
58
+ return mapString("≒");
59
+ case "risingdotseq":
60
+ return mapString("≓");
61
+ case "equiv":
62
+ return mapString("≡");
63
+ case "geq":
64
+ return mapString("≥");
65
+ case "geqq":
66
+ return mapString("≧");
67
+ case "leq":
68
+ return mapString("≤");
69
+ case "leqq":
70
+ return mapString("≦");
71
+ case "gg":
72
+ return mapString("≫");
73
+ case "ll":
74
+ return mapString("≪");
75
+ case "times":
76
+ return mapString("×");
77
+ case "div":
78
+ return mapString("÷");
79
+ case "pm":
80
+ return mapString("±");
81
+ case "mp":
82
+ return mapString("∓");
83
+ case "oplus":
84
+ return mapString("⊕");
85
+ case "ominus":
86
+ return mapString("⊖");
87
+ case "otimes":
88
+ return mapString("⊗");
89
+ case "oslash":
90
+ return mapString("⊘");
91
+ case "circ":
92
+ return mapString("∘");
93
+ case "cdot":
94
+ return mapString("⋅");
95
+ case "bullet":
96
+ return mapString("∙");
97
+ case "ltimes":
98
+ return mapString("⋉");
99
+ case "rtimes":
100
+ return mapString("⋊");
101
+ case "in":
102
+ return mapString("∈");
103
+ case "ni":
104
+ return mapString("∋");
105
+ case "notin":
106
+ return mapString("∉");
107
+ case "subset":
108
+ return mapString("⊂");
109
+ case "supset":
110
+ return mapString("⊃");
111
+ case "subseteq":
112
+ return mapString("⊆");
113
+ case "supseteq":
114
+ return mapString("⊇");
115
+ case "nsubseteq":
116
+ return mapString("⊈");
117
+ case "nsupseteq":
118
+ return mapString("⊉");
119
+ case "subsetneq":
120
+ return mapString("⊊");
121
+ case "supsetneq":
122
+ return mapString("⊋");
123
+ case "cap":
124
+ return mapString("∩");
125
+ case "cup":
126
+ return mapString("∪");
127
+ case "emptyset":
128
+ return mapString("∅");
129
+ case "infty":
130
+ return mapString("∞");
131
+ case "partial":
132
+ return mapString("∂");
133
+ case "aleph":
134
+ return mapString("ℵ");
135
+ case "hbar":
136
+ return mapString("ℏ");
137
+ case "wp":
138
+ return mapString("℘");
139
+ case "Re":
140
+ return mapString("ℜ");
141
+ case "Im":
142
+ return mapString("ℑ");
143
+ case "alpha":
144
+ return mapString("α");
145
+ case "beta":
146
+ return mapString("β");
147
+ case "gamma":
148
+ return mapString("γ");
149
+ case "delta":
150
+ return mapString("δ");
151
+ case "epsilon":
152
+ return mapString("ϵ");
153
+ case "zeta":
154
+ return mapString("ζ");
155
+ case "eta":
156
+ return mapString("η");
157
+ case "theta":
158
+ return mapString("θ");
159
+ case "iota":
160
+ return mapString("ι");
161
+ case "kappa":
162
+ return mapString("κ");
163
+ case "lambda":
164
+ return mapString("λ");
165
+ case "eta":
166
+ return mapString("η");
167
+ case "mu":
168
+ return mapString("μ");
169
+ case "nu":
170
+ return mapString("ν");
171
+ case "xi":
172
+ return mapString("ξ");
173
+ case "pi":
174
+ return mapString("π");
175
+ case "rho":
176
+ return mapString("ρ");
177
+ case "sigma":
178
+ return mapString("σ");
179
+ case "tau":
180
+ return mapString("τ");
181
+ case "upsilon":
182
+ return mapString("υ");
183
+ case "phi":
184
+ return mapString("ϕ");
185
+ case "chi":
186
+ return mapString("χ");
187
+ case "psi":
188
+ return mapString("ψ");
189
+ case "omega":
190
+ return mapString("ω");
191
+ case "varepsilon":
192
+ return mapString("ε");
193
+ case "vartheta":
194
+ return mapString("ϑ");
195
+ case "varrho":
196
+ return mapString("ϱ");
197
+ case "varsigma":
198
+ return mapString("ς");
199
+ case "varphi":
200
+ return mapString("φ");
201
+ case "Gamma":
202
+ return mapString("Γ");
203
+ case "Delta":
204
+ return mapString("Δ");
205
+ case "Theta":
206
+ return mapString("Θ");
207
+ case "Lambda":
208
+ return mapString("Λ");
209
+ case "Xi":
210
+ return mapString("Ξ");
211
+ case "Pi":
212
+ return mapString("Π");
213
+ case "Sigma":
214
+ return mapString("Σ");
215
+ case "Upsilon":
216
+ return mapString("Υ");
217
+ case "Phi":
218
+ return mapString("Φ");
219
+ case "Psi":
220
+ return mapString("Ψ");
221
+ case "Omega":
222
+ return mapString("Ω");
223
+ case "newline":
224
+ case "\\":
225
+ // line break
226
+ return false;
227
+ case "^": {
228
+ const prev = runs.pop();
229
+ if (!prev)
230
+ break;
231
+ return new docx.MathSuperScript({
232
+ children: [prev],
233
+ 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 : []),
234
+ });
235
+ }
236
+ case "_": {
237
+ const prev = runs.pop();
238
+ if (!prev)
239
+ break;
240
+ return new docx.MathSubScript({
241
+ children: [prev],
242
+ 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 : []),
243
+ });
244
+ }
245
+ case "hat":
246
+ // TODO: implement
247
+ break;
248
+ case "widehat":
249
+ // TODO: implement
250
+ break;
251
+ case "sum": {
252
+ // TODO: support superscript and subscript
253
+ return new docx.MathSum({
254
+ children: [],
255
+ });
256
+ }
257
+ case "int":
258
+ return mapString("∫");
259
+ case "frac":
260
+ case "tfrac":
261
+ case "dfrac": {
262
+ const args = (_g = n.args) !== null && _g !== void 0 ? _g : [];
263
+ if (args.length === 2 &&
264
+ hasCurlyBracket(args[0]) &&
265
+ hasCurlyBracket(args[1])) {
266
+ return new docx.MathFraction({
267
+ numerator: mapGroup(args[0].content),
268
+ denominator: mapGroup(args[1].content),
269
+ });
270
+ }
271
+ break;
272
+ }
273
+ case "sqrt": {
274
+ const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
275
+ if (args.length === 1 && hasCurlyBracket(args[0])) {
276
+ return new docx.MathRadical({
277
+ children: mapGroup(args[0].content),
278
+ });
279
+ }
280
+ if (args.length === 2 &&
281
+ hasSquareBracket(args[0]) &&
282
+ hasCurlyBracket(args[1])) {
283
+ return new docx.MathRadical({
284
+ children: mapGroup(args[1].content),
285
+ degree: mapGroup(args[0].content),
286
+ });
287
+ }
288
+ break;
289
+ }
290
+ }
291
+ return mapString(n.content);
292
+ };
293
+ const mapGroup = (nodes) => {
294
+ const group = [];
295
+ for (const c of nodes) {
296
+ group.push(...(mapNode(c, group) || []));
297
+ }
298
+ return group;
299
+ };
300
+ const mapNode = (n, runs) => {
301
+ switch (n.type) {
302
+ case "root":
303
+ break;
304
+ case "string":
305
+ return [mapString(n.content)];
306
+ case "whitespace":
307
+ break;
308
+ case "parbreak":
309
+ break;
310
+ case "comment":
311
+ break;
312
+ case "macro":
313
+ const run = mapMacro(n, runs);
314
+ if (!run) {
315
+ // line break
316
+ return false;
317
+ }
318
+ else {
319
+ return [run];
320
+ }
321
+ case "environment":
322
+ case "mathenv":
323
+ break;
324
+ case "verbatim":
325
+ break;
326
+ case "inlinemath":
327
+ break;
328
+ case "displaymath":
329
+ break;
330
+ case "group":
331
+ return mapGroup(n.content);
332
+ case "verb":
333
+ break;
334
+ default:
335
+ unreachable();
336
+ }
337
+ return [];
338
+ };
339
+ const parseLatex = (value) => {
340
+ const parsed = parseMath(value);
341
+ const paragraphs = [[]];
342
+ let runs = paragraphs[0];
343
+ for (const n of parsed) {
344
+ const res = mapNode(n, runs);
345
+ if (!res) {
346
+ // line break
347
+ paragraphs.push((runs = []));
348
+ }
349
+ else {
350
+ runs.push(...res);
351
+ }
352
+ }
353
+ return paragraphs;
354
+ };
355
+
356
+ const ORDERED_LIST_REF = "ordered";
357
+ const INDENT = 0.5;
358
+ const DEFAULT_NUMBERINGS = [
72
359
  {
73
360
  level: 0,
74
361
  format: docx.LevelFormat.DECIMAL,
@@ -131,25 +418,21 @@ var DEFAULT_NUMBERINGS = [
131
418
  },
132
419
  },
133
420
  ];
134
- var error = function (message) {
135
- throw new Error(message);
136
- };
137
- function mdastToDocx(node, _a, images) {
138
- var output = _a.output, title = _a.title, subject = _a.subject, creator = _a.creator, keywords = _a.keywords, description = _a.description, lastModifiedBy = _a.lastModifiedBy, revision = _a.revision, styles = _a.styles, background = _a.background;
139
- var nodes = convertNodes(node.children, {
421
+ function mdastToDocx(node, { output, title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) {
422
+ const nodes = convertNodes(node.children, {
140
423
  deco: {},
141
- images: images,
424
+ images,
142
425
  });
143
- var doc = new docx.Document({
144
- title: title,
145
- subject: subject,
146
- creator: creator,
147
- keywords: keywords,
148
- description: description,
149
- lastModifiedBy: lastModifiedBy,
150
- revision: revision,
151
- styles: styles,
152
- background: background,
426
+ const doc = new docx.Document({
427
+ title,
428
+ subject,
429
+ creator,
430
+ keywords,
431
+ description,
432
+ lastModifiedBy,
433
+ revision,
434
+ styles,
435
+ background,
153
436
  sections: [{ children: nodes }],
154
437
  numbering: {
155
438
  config: [
@@ -168,10 +451,8 @@ function mdastToDocx(node, _a, images) {
168
451
  }
169
452
  }
170
453
  function convertNodes(nodes, ctx) {
171
- var _a;
172
- var results = [];
173
- for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
174
- var node = nodes_1[_i];
454
+ const results = [];
455
+ for (const node of nodes) {
175
456
  switch (node.type) {
176
457
  case "paragraph":
177
458
  results.push(buildParagraph(node, ctx));
@@ -180,26 +461,23 @@ function convertNodes(nodes, ctx) {
180
461
  results.push(buildHeading(node, ctx));
181
462
  break;
182
463
  case "thematicBreak":
183
- results.push(buildThematicBreak(node));
464
+ results.push(buildThematicBreak());
184
465
  break;
185
466
  case "blockquote":
186
- results.push.apply(results, buildBlockquote(node, ctx));
467
+ results.push(...buildBlockquote(node, ctx));
187
468
  break;
188
469
  case "list":
189
- results.push.apply(results, buildList(node, ctx));
470
+ results.push(...buildList(node, ctx));
190
471
  break;
191
472
  case "listItem":
192
- error("unreachable");
193
- break;
473
+ invariant(false, "unreachable");
194
474
  case "table":
195
475
  results.push(buildTable(node, ctx));
196
476
  break;
197
477
  case "tableRow":
198
- error("unreachable");
199
- break;
478
+ invariant(false, "unreachable");
200
479
  case "tableCell":
201
- error("unreachable");
202
- break;
480
+ invariant(false, "unreachable");
203
481
  case "html":
204
482
  results.push(buildHtml(node));
205
483
  break;
@@ -224,8 +502,8 @@ function convertNodes(nodes, ctx) {
224
502
  case "emphasis":
225
503
  case "strong":
226
504
  case "delete": {
227
- var type = node.type, children = node.children;
228
- results.push.apply(results, convertNodes(children, __assign(__assign({}, ctx), { deco: __assign(__assign({}, ctx.deco), (_a = {}, _a[type] = true, _a)) })));
505
+ const { type, children } = node;
506
+ results.push(...convertNodes(children, Object.assign(Object.assign({}, ctx), { deco: Object.assign(Object.assign({}, ctx.deco), { [type]: true }) })));
229
507
  break;
230
508
  }
231
509
  case "inlineCode":
@@ -233,7 +511,7 @@ function convertNodes(nodes, ctx) {
233
511
  results.push(buildText(node.value, ctx.deco));
234
512
  break;
235
513
  case "break":
236
- results.push(buildBreak(node));
514
+ results.push(buildBreak());
237
515
  break;
238
516
  case "link":
239
517
  results.push(buildLink(node, ctx));
@@ -254,19 +532,21 @@ function convertNodes(nodes, ctx) {
254
532
  // FIXME: unimplemented
255
533
  break;
256
534
  case "math":
257
- results.push(buildMath(node));
535
+ results.push(...buildMath(node));
258
536
  break;
259
537
  case "inlineMath":
260
538
  results.push(buildInlineMath(node));
261
539
  break;
540
+ default:
541
+ unreachable();
542
+ break;
262
543
  }
263
544
  }
264
545
  return results;
265
546
  }
266
- function buildParagraph(_a, ctx) {
267
- _a.type; var children = _a.children;
268
- var list = ctx.list;
269
- return new docx.Paragraph(__assign({ children: convertNodes(children, ctx) }, (list &&
547
+ function buildParagraph({ children }, ctx) {
548
+ const list = ctx.list;
549
+ return new docx.Paragraph(Object.assign({ children: convertNodes(children, ctx) }, (list &&
270
550
  (list.ordered
271
551
  ? {
272
552
  numbering: {
@@ -280,9 +560,8 @@ function buildParagraph(_a, ctx) {
280
560
  },
281
561
  }))));
282
562
  }
283
- function buildHeading(_a, ctx) {
284
- _a.type; var children = _a.children, depth = _a.depth;
285
- var heading;
563
+ function buildHeading({ children, depth }, ctx) {
564
+ let heading;
286
565
  switch (depth) {
287
566
  case 1:
288
567
  heading = docx.HeadingLevel.TITLE;
@@ -304,39 +583,34 @@ function buildHeading(_a, ctx) {
304
583
  break;
305
584
  }
306
585
  return new docx.Paragraph({
307
- heading: heading,
586
+ heading,
308
587
  children: convertNodes(children, ctx),
309
588
  });
310
589
  }
311
- function buildThematicBreak(_a) {
312
- _a.type;
590
+ function buildThematicBreak(_) {
313
591
  return new docx.Paragraph({
314
592
  thematicBreak: true,
315
593
  });
316
594
  }
317
- function buildBlockquote(_a, ctx) {
318
- _a.type; var children = _a.children;
595
+ function buildBlockquote({ children }, ctx) {
319
596
  // FIXME: do nothing for now
320
597
  return convertNodes(children, ctx);
321
598
  }
322
- function buildList(_a, ctx) {
323
- _a.type; var children = _a.children, ordered = _a.ordered; _a.start; _a.spread;
324
- var list = {
599
+ function buildList({ children, ordered, start: _start, spread: _spread }, ctx) {
600
+ const list = {
325
601
  level: ctx.list ? ctx.list.level + 1 : 0,
326
602
  ordered: !!ordered,
327
603
  };
328
- return children.reduce(function (acc, item) {
329
- acc.push.apply(acc, buildListItem(item, __assign(__assign({}, ctx), { list: list })));
604
+ return children.reduce((acc, item) => {
605
+ acc.push(...buildListItem(item, Object.assign(Object.assign({}, ctx), { list })));
330
606
  return acc;
331
607
  }, []);
332
608
  }
333
- function buildListItem(_a, ctx) {
334
- _a.type; var children = _a.children; _a.checked; _a.spread;
609
+ function buildListItem({ children, checked: _checked, spread: _spread }, ctx) {
335
610
  return convertNodes(children, ctx);
336
611
  }
337
- function buildTable(_a, ctx) {
338
- _a.type; var children = _a.children, align = _a.align;
339
- var cellAligns = align === null || align === void 0 ? void 0 : align.map(function (a) {
612
+ function buildTable({ children, align }, ctx) {
613
+ const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
340
614
  switch (a) {
341
615
  case "left":
342
616
  return docx.AlignmentType.LEFT;
@@ -349,21 +623,19 @@ function buildTable(_a, ctx) {
349
623
  }
350
624
  });
351
625
  return new docx.Table({
352
- rows: children.map(function (r) {
626
+ rows: children.map((r) => {
353
627
  return buildTableRow(r, ctx, cellAligns);
354
628
  }),
355
629
  });
356
630
  }
357
- function buildTableRow(_a, ctx, cellAligns) {
358
- _a.type; var children = _a.children;
631
+ function buildTableRow({ children }, ctx, cellAligns) {
359
632
  return new docx.TableRow({
360
- children: children.map(function (c, i) {
633
+ children: children.map((c, i) => {
361
634
  return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
362
635
  }),
363
636
  });
364
637
  }
365
- function buildTableCell(_a, ctx, align) {
366
- _a.type; var children = _a.children;
638
+ function buildTableCell({ children }, ctx, align) {
367
639
  return new docx.TableCell({
368
640
  children: [
369
641
  new docx.Paragraph({
@@ -373,110 +645,91 @@ function buildTableCell(_a, ctx, align) {
373
645
  ],
374
646
  });
375
647
  }
376
- function buildHtml(_a) {
377
- _a.type; var value = _a.value;
648
+ function buildHtml({ value }) {
378
649
  // FIXME: transform to text for now
379
650
  return new docx.Paragraph({
380
651
  children: [buildText(value, {})],
381
652
  });
382
653
  }
383
- function buildCode(_a) {
384
- _a.type; var value = _a.value; _a.lang; _a.meta;
654
+ function buildCode({ value, lang: _lang, meta: _meta }) {
385
655
  // FIXME: transform to text for now
386
656
  return new docx.Paragraph({
387
657
  children: [buildText(value, {})],
388
658
  });
389
659
  }
390
- function buildMath(_a) {
391
- _a.type; var value = _a.value;
392
- // FIXME: transform to text for now
393
- return new docx.Paragraph({
394
- children: [new docx.TextRun(value)],
395
- });
660
+ function buildMath({ value }) {
661
+ return parseLatex(value).map((runs) => new docx.Paragraph({
662
+ children: [
663
+ new docx.Math({
664
+ children: runs,
665
+ }),
666
+ ],
667
+ }));
396
668
  }
397
- function buildInlineMath(_a) {
398
- _a.type; var value = _a.value;
399
- // FIXME: transform to text for now
400
- return new docx.TextRun(value);
669
+ function buildInlineMath({ value }) {
670
+ return new docx.Math({
671
+ children: parseLatex(value).flatMap((runs) => runs),
672
+ });
401
673
  }
402
674
  function buildText(text, deco) {
403
675
  return new docx.TextRun({
404
- text: text,
676
+ text,
405
677
  bold: deco.strong,
406
678
  italics: deco.emphasis,
407
679
  strike: deco.delete,
408
680
  });
409
681
  }
410
- function buildBreak(_a) {
411
- _a.type;
682
+ function buildBreak(_) {
412
683
  return new docx.TextRun({ text: "", break: 1 });
413
684
  }
414
- function buildLink(_a, ctx) {
415
- _a.type; var children = _a.children, url = _a.url; _a.title;
685
+ function buildLink({ children, url, title: _title }, ctx) {
416
686
  return new docx.ExternalHyperlink({
417
687
  link: url,
418
688
  children: convertNodes(children, ctx),
419
689
  });
420
690
  }
421
- function buildImage(_a, images) {
422
- _a.type; var url = _a.url; _a.title; _a.alt;
423
- if (!images[url]) {
424
- return error("Fetch image was failed: ".concat(url));
425
- }
426
- var _b = images[url], image = _b.image, width = _b.width, height = _b.height;
691
+ function buildImage({ url, title: _title, alt: _alt }, images) {
692
+ const img = images[url];
693
+ invariant(img, `Fetch image was failed: ${url}`);
694
+ const { image, width, height } = img;
427
695
  return new docx.ImageRun({
428
696
  data: image,
429
697
  transformation: {
430
- width: width,
431
- height: height,
698
+ width,
699
+ height,
432
700
  },
433
701
  });
434
702
  }
435
- function buildFootnote(_a, ctx) {
436
- _a.type; var children = _a.children;
703
+ function buildFootnote({ children }, ctx) {
437
704
  // FIXME: transform to paragraph for now
438
705
  return new docx.Paragraph({
439
706
  children: convertNodes(children, ctx),
440
707
  });
441
708
  }
442
709
 
443
- var plugin = function (opts) {
444
- var _this = this;
445
- if (opts === void 0) { opts = {}; }
446
- var images = {};
447
- this.Compiler = function (node) {
710
+ const plugin = function (opts = {}) {
711
+ let images = {};
712
+ this.Compiler = (node) => {
448
713
  return mdastToDocx(node, opts, images);
449
714
  };
450
- return function (node) { return __awaiter(_this, void 0, void 0, function () {
451
- var imageList, imageResolver, imageDatas;
452
- return __generator(this, function (_a) {
453
- switch (_a.label) {
454
- case 0:
455
- imageList = [];
456
- visit(node, "image", function (node) {
457
- imageList.push(node);
458
- });
459
- if (imageList.length === 0) {
460
- return [2 /*return*/, node];
461
- }
462
- imageResolver = opts.imageResolver;
463
- if (!imageResolver) {
464
- throw new Error("options.imageResolver is not defined.");
465
- }
466
- return [4 /*yield*/, Promise.all(imageList.map(function (_a) {
467
- var url = _a.url;
468
- return imageResolver(url);
469
- }))];
470
- case 1:
471
- imageDatas = _a.sent();
472
- images = imageList.reduce(function (acc, img, i) {
473
- acc[img.url] = imageDatas[i];
474
- return acc;
475
- }, {});
476
- return [2 /*return*/, node];
477
- }
715
+ return (node) => __awaiter(this, void 0, void 0, function* () {
716
+ const imageList = [];
717
+ visit(node, "image", (node) => {
718
+ imageList.push(node);
478
719
  });
479
- }); };
720
+ if (imageList.length === 0) {
721
+ return node;
722
+ }
723
+ const imageResolver = opts.imageResolver;
724
+ invariant(imageResolver, "options.imageResolver is not defined.");
725
+ const imageDatas = yield Promise.all(imageList.map(({ url }) => imageResolver(url)));
726
+ images = imageList.reduce((acc, img, i) => {
727
+ acc[img.url] = imageDatas[i];
728
+ return acc;
729
+ }, {});
730
+ return node;
731
+ });
480
732
  };
481
733
 
482
734
  export { plugin as default };
735
+ //# sourceMappingURL=index.mjs.map