markdown-codec 11.1.17 → 11.2.1

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 CHANGED
@@ -195,7 +195,8 @@ Every construct `src/lower`/`src/emit` cannot represent losslessly is a document
195
195
  - **`md/list-marker-type-conflict`** — a nested list whose marker type disagrees with its enclosing list's minted numId keeps the enclosing type (first-wins).
196
196
  - **`md/math-inline-preserved-as-text`** — inline `\( \)` math stays a Cambria-Math-marked raw-LaTeX run; display `$$` math is a real embedded formula carrying the presentation layer.
197
197
  - **`md/image-unresolved`** — no resolver, `undefined` return, or non-PNG/JPEG bytes degrades to alt-text run.
198
- - **`md/raw-html-preserved-as-text` / `md/raw-html-dropped`** — raw HTML kept as literal text (default) or dropped; never interpreted. The preserved text's verbatim original quarantines as markdown residue on its node, and this package's own writer re-emits that residue as-is.
198
+ - **`md/raw-html-preserved-as-text` / `md/raw-html-dropped`** — raw HTML kept as literal text (default) or dropped; never interpreted, except for the superscript and subscript elements in the next item. The preserved text's verbatim original quarantines as markdown residue on its node, and this package's own writer re-emits that residue as-is.
199
+ - **Superscripts and subscripts are written as `<sup>` and `<sub>`.** Markdown has no syntax for a raised or lowered run, so a `ContentRun` carrying `verticalAlign` is written wrapped in the inline HTML element every renderer draws that way (`m<sup>2</sup>`, `I<sub>a</sub>`), inside any emphasis or link around it, the same elements in a cell of an HTML-fallback table. Reading recognises exactly that spelling back into the field: a bare `<sup>` or `<sub>` (any case, no attributes) closed by its own closing tag among the same inline siblings. Any other inline HTML, an unclosed `<sup>` or one carrying attributes included, is still preserved as text like the rest. An HTML-fallback table reads `<sup>`/`<sub>` in a cell back the same way it reads `<strong>` and the rest.
199
200
  - **`md/front-matter-key-unmapped`** — no YAML/TOML engine; only `LayoutMetadata`'s own string/array/enum fields are recognised (every one of them except `producer`, which is PDF-writer-only), each as a flat `key: value` (or `keywords: [a, b]`) line. The verbatim original block rides the package-level residue table (`readMarkdown`'s `documentPackage.source.frontmatter`), which `writeMarkdown` re-emits as-is.
200
201
  - **`md/heading-level-clamped`** — styleId beyond `Heading6` (from another format) clamps to level 6 via document-schema.js's shared `clampHeadingLevel()`.
201
202
  - **`md/heading-line-break-collapsed`** — a hard or soft break embedded in a heading's own runs (most commonly a setext heading read with more than one physical line) is promoted to setext output whenever the level admits one (1 or 2) and the break's own placement is safe to promote, the only markdown grammar that can hold a genuine line break inside heading text; a level 3-6 heading with the same shape has no such fallback and always collapses the break to a single space instead, as does a level 1/2 heading whose break placement is unsafe to promote (see `md/heading-line-break-unsafe-for-setext` below).
package/dist/codec.d.cts CHANGED
@@ -17,8 +17,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
17
17
  paragraph: z.ZodOptional<z.ZodObject<{
18
18
  alignment: z.ZodOptional<z.ZodEnum<{
19
19
  left: "left";
20
- center: "center";
21
20
  right: "right";
21
+ center: "center";
22
22
  justify: "justify";
23
23
  }>>;
24
24
  list: z.ZodOptional<z.ZodObject<{
@@ -27,8 +27,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
27
27
  checked: z.ZodOptional<z.ZodBoolean>;
28
28
  itemId: z.ZodOptional<z.ZodString>;
29
29
  format: z.ZodOptional<z.ZodEnum<{
30
- bullet: "bullet";
31
30
  decimal: "decimal";
31
+ bullet: "bullet";
32
32
  lowerLetter: "lowerLetter";
33
33
  upperLetter: "upperLetter";
34
34
  lowerRoman: "lowerRoman";
@@ -103,9 +103,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
103
103
  symbol: z.ZodString;
104
104
  name: z.ZodOptional<z.ZodString>;
105
105
  dimension: z.ZodRecord<z.ZodEnum<{
106
+ time: "time";
106
107
  length: "length";
107
108
  mass: "mass";
108
- time: "time";
109
109
  electricCurrent: "electricCurrent";
110
110
  thermodynamicTemperature: "thermodynamicTemperature";
111
111
  amountOfSubstance: "amountOfSubstance";
@@ -172,8 +172,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
172
172
  paragraph: z.ZodOptional<z.ZodObject<{
173
173
  alignment: z.ZodOptional<z.ZodEnum<{
174
174
  left: "left";
175
- center: "center";
176
175
  right: "right";
176
+ center: "center";
177
177
  justify: "justify";
178
178
  }>>;
179
179
  list: z.ZodOptional<z.ZodObject<{
@@ -182,8 +182,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
182
182
  checked: z.ZodOptional<z.ZodBoolean>;
183
183
  itemId: z.ZodOptional<z.ZodString>;
184
184
  format: z.ZodOptional<z.ZodEnum<{
185
- bullet: "bullet";
186
185
  decimal: "decimal";
186
+ bullet: "bullet";
187
187
  lowerLetter: "lowerLetter";
188
188
  upperLetter: "upperLetter";
189
189
  lowerRoman: "lowerRoman";
@@ -258,9 +258,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
258
258
  symbol: z.ZodString;
259
259
  name: z.ZodOptional<z.ZodString>;
260
260
  dimension: z.ZodRecord<z.ZodEnum<{
261
+ time: "time";
261
262
  length: "length";
262
263
  mass: "mass";
263
- time: "time";
264
264
  electricCurrent: "electricCurrent";
265
265
  thermodynamicTemperature: "thermodynamicTemperature";
266
266
  amountOfSubstance: "amountOfSubstance";
@@ -332,8 +332,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
332
332
  paragraph: z.ZodOptional<z.ZodObject<{
333
333
  alignment: z.ZodOptional<z.ZodEnum<{
334
334
  left: "left";
335
- center: "center";
336
335
  right: "right";
336
+ center: "center";
337
337
  justify: "justify";
338
338
  }>>;
339
339
  list: z.ZodOptional<z.ZodObject<{
@@ -342,8 +342,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
342
342
  checked: z.ZodOptional<z.ZodBoolean>;
343
343
  itemId: z.ZodOptional<z.ZodString>;
344
344
  format: z.ZodOptional<z.ZodEnum<{
345
- bullet: "bullet";
346
345
  decimal: "decimal";
346
+ bullet: "bullet";
347
347
  lowerLetter: "lowerLetter";
348
348
  upperLetter: "upperLetter";
349
349
  lowerRoman: "lowerRoman";
@@ -418,9 +418,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
418
418
  symbol: z.ZodString;
419
419
  name: z.ZodOptional<z.ZodString>;
420
420
  dimension: z.ZodRecord<z.ZodEnum<{
421
+ time: "time";
421
422
  length: "length";
422
423
  mass: "mass";
423
- time: "time";
424
424
  electricCurrent: "electricCurrent";
425
425
  thermodynamicTemperature: "thermodynamicTemperature";
426
426
  amountOfSubstance: "amountOfSubstance";
@@ -487,8 +487,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
487
487
  paragraph: z.ZodOptional<z.ZodObject<{
488
488
  alignment: z.ZodOptional<z.ZodEnum<{
489
489
  left: "left";
490
- center: "center";
491
490
  right: "right";
491
+ center: "center";
492
492
  justify: "justify";
493
493
  }>>;
494
494
  list: z.ZodOptional<z.ZodObject<{
@@ -497,8 +497,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
497
497
  checked: z.ZodOptional<z.ZodBoolean>;
498
498
  itemId: z.ZodOptional<z.ZodString>;
499
499
  format: z.ZodOptional<z.ZodEnum<{
500
- bullet: "bullet";
501
500
  decimal: "decimal";
501
+ bullet: "bullet";
502
502
  lowerLetter: "lowerLetter";
503
503
  upperLetter: "upperLetter";
504
504
  lowerRoman: "lowerRoman";
@@ -573,9 +573,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
573
573
  symbol: z.ZodString;
574
574
  name: z.ZodOptional<z.ZodString>;
575
575
  dimension: z.ZodRecord<z.ZodEnum<{
576
+ time: "time";
576
577
  length: "length";
577
578
  mass: "mass";
578
- time: "time";
579
579
  electricCurrent: "electricCurrent";
580
580
  thermodynamicTemperature: "thermodynamicTemperature";
581
581
  amountOfSubstance: "amountOfSubstance";
@@ -701,8 +701,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
701
701
  paragraph: z.ZodOptional<z.ZodObject<{
702
702
  alignment: z.ZodOptional<z.ZodEnum<{
703
703
  left: "left";
704
- center: "center";
705
704
  right: "right";
705
+ center: "center";
706
706
  justify: "justify";
707
707
  }>>;
708
708
  list: z.ZodOptional<z.ZodObject<{
@@ -711,8 +711,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
711
711
  checked: z.ZodOptional<z.ZodBoolean>;
712
712
  itemId: z.ZodOptional<z.ZodString>;
713
713
  format: z.ZodOptional<z.ZodEnum<{
714
- bullet: "bullet";
715
714
  decimal: "decimal";
715
+ bullet: "bullet";
716
716
  lowerLetter: "lowerLetter";
717
717
  upperLetter: "upperLetter";
718
718
  lowerRoman: "lowerRoman";
@@ -787,9 +787,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
787
787
  symbol: z.ZodString;
788
788
  name: z.ZodOptional<z.ZodString>;
789
789
  dimension: z.ZodRecord<z.ZodEnum<{
790
+ time: "time";
790
791
  length: "length";
791
792
  mass: "mass";
792
- time: "time";
793
793
  electricCurrent: "electricCurrent";
794
794
  thermodynamicTemperature: "thermodynamicTemperature";
795
795
  amountOfSubstance: "amountOfSubstance";
@@ -937,9 +937,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
937
937
  symbol: z.ZodString;
938
938
  name: z.ZodOptional<z.ZodString>;
939
939
  dimension: z.ZodRecord<z.ZodEnum<{
940
+ time: "time";
940
941
  length: "length";
941
942
  mass: "mass";
942
- time: "time";
943
943
  electricCurrent: "electricCurrent";
944
944
  thermodynamicTemperature: "thermodynamicTemperature";
945
945
  amountOfSubstance: "amountOfSubstance";
@@ -1133,9 +1133,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1133
1133
  symbol: z.ZodString;
1134
1134
  name: z.ZodOptional<z.ZodString>;
1135
1135
  dimension: z.ZodRecord<z.ZodEnum<{
1136
+ time: "time";
1136
1137
  length: "length";
1137
1138
  mass: "mass";
1138
- time: "time";
1139
1139
  electricCurrent: "electricCurrent";
1140
1140
  thermodynamicTemperature: "thermodynamicTemperature";
1141
1141
  amountOfSubstance: "amountOfSubstance";
@@ -1538,8 +1538,8 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1538
1538
  }, z.core.$strip>>;
1539
1539
  alignment: z.ZodOptional<z.ZodEnum<{
1540
1540
  left: "left";
1541
- center: "center";
1542
1541
  right: "right";
1542
+ center: "center";
1543
1543
  justify: "justify";
1544
1544
  }>>;
1545
1545
  verticalAlignment: z.ZodOptional<z.ZodEnum<{
@@ -1648,7 +1648,7 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1648
1648
  floatPosition: z.ZodOptional<z.ZodObject<{
1649
1649
  horizontal: z.ZodUnion<readonly [z.ZodObject<{
1650
1650
  relativeTo: z.ZodEnum<{
1651
- paragraph: "paragraph";
1651
+ column: "column";
1652
1652
  page: "page";
1653
1653
  margin: "margin";
1654
1654
  leftMargin: "leftMargin";
@@ -1657,15 +1657,15 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1657
1657
  bottomMargin: "bottomMargin";
1658
1658
  insideMargin: "insideMargin";
1659
1659
  outsideMargin: "outsideMargin";
1660
- column: "column";
1661
1660
  character: "character";
1661
+ paragraph: "paragraph";
1662
1662
  line: "line";
1663
1663
  frame: "frame";
1664
1664
  }>;
1665
1665
  offsetPt: z.ZodNumber;
1666
1666
  }, z.core.$strict>, z.ZodObject<{
1667
1667
  relativeTo: z.ZodEnum<{
1668
- paragraph: "paragraph";
1668
+ column: "column";
1669
1669
  page: "page";
1670
1670
  margin: "margin";
1671
1671
  leftMargin: "leftMargin";
@@ -1674,24 +1674,24 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1674
1674
  bottomMargin: "bottomMargin";
1675
1675
  insideMargin: "insideMargin";
1676
1676
  outsideMargin: "outsideMargin";
1677
- column: "column";
1678
1677
  character: "character";
1678
+ paragraph: "paragraph";
1679
1679
  line: "line";
1680
1680
  frame: "frame";
1681
1681
  }>;
1682
1682
  align: z.ZodEnum<{
1683
1683
  left: "left";
1684
- center: "center";
1685
1684
  right: "right";
1686
1685
  top: "top";
1687
1686
  bottom: "bottom";
1687
+ center: "center";
1688
1688
  inside: "inside";
1689
1689
  outside: "outside";
1690
1690
  }>;
1691
1691
  }, z.core.$strict>]>;
1692
1692
  vertical: z.ZodUnion<readonly [z.ZodObject<{
1693
1693
  relativeTo: z.ZodEnum<{
1694
- paragraph: "paragraph";
1694
+ column: "column";
1695
1695
  page: "page";
1696
1696
  margin: "margin";
1697
1697
  leftMargin: "leftMargin";
@@ -1700,15 +1700,15 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1700
1700
  bottomMargin: "bottomMargin";
1701
1701
  insideMargin: "insideMargin";
1702
1702
  outsideMargin: "outsideMargin";
1703
- column: "column";
1704
1703
  character: "character";
1704
+ paragraph: "paragraph";
1705
1705
  line: "line";
1706
1706
  frame: "frame";
1707
1707
  }>;
1708
1708
  offsetPt: z.ZodNumber;
1709
1709
  }, z.core.$strict>, z.ZodObject<{
1710
1710
  relativeTo: z.ZodEnum<{
1711
- paragraph: "paragraph";
1711
+ column: "column";
1712
1712
  page: "page";
1713
1713
  margin: "margin";
1714
1714
  leftMargin: "leftMargin";
@@ -1717,17 +1717,17 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1717
1717
  bottomMargin: "bottomMargin";
1718
1718
  insideMargin: "insideMargin";
1719
1719
  outsideMargin: "outsideMargin";
1720
- column: "column";
1721
1720
  character: "character";
1721
+ paragraph: "paragraph";
1722
1722
  line: "line";
1723
1723
  frame: "frame";
1724
1724
  }>;
1725
1725
  align: z.ZodEnum<{
1726
1726
  left: "left";
1727
- center: "center";
1728
1727
  right: "right";
1729
1728
  top: "top";
1730
1729
  bottom: "bottom";
1730
+ center: "center";
1731
1731
  inside: "inside";
1732
1732
  outside: "outside";
1733
1733
  }>;
@@ -1816,12 +1816,12 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1816
1816
  endColumn: z.ZodNumber;
1817
1817
  }, z.core.$strip>>;
1818
1818
  type: z.ZodEnum<{
1819
- decimal: "decimal";
1820
- list: "list";
1821
1819
  date: "date";
1822
1820
  custom: "custom";
1823
1821
  time: "time";
1824
1822
  whole: "whole";
1823
+ decimal: "decimal";
1824
+ list: "list";
1825
1825
  textLength: "textLength";
1826
1826
  }>;
1827
1827
  operator: z.ZodOptional<z.ZodEnum<{
@@ -2478,9 +2478,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
2478
2478
  symbol: z.ZodString;
2479
2479
  name: z.ZodOptional<z.ZodString>;
2480
2480
  dimension: z.ZodRecord<z.ZodEnum<{
2481
+ time: "time";
2481
2482
  length: "length";
2482
2483
  mass: "mass";
2483
- time: "time";
2484
2484
  electricCurrent: "electricCurrent";
2485
2485
  thermodynamicTemperature: "thermodynamicTemperature";
2486
2486
  amountOfSubstance: "amountOfSubstance";
@@ -3208,9 +3208,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
3208
3208
  symbol: z.ZodString;
3209
3209
  name: z.ZodOptional<z.ZodString>;
3210
3210
  dimension: z.ZodRecord<z.ZodEnum<{
3211
+ time: "time";
3211
3212
  length: "length";
3212
3213
  mass: "mass";
3213
- time: "time";
3214
3214
  electricCurrent: "electricCurrent";
3215
3215
  thermodynamicTemperature: "thermodynamicTemperature";
3216
3216
  amountOfSubstance: "amountOfSubstance";
@@ -3336,9 +3336,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
3336
3336
  symbol: z.ZodString;
3337
3337
  name: z.ZodOptional<z.ZodString>;
3338
3338
  dimension: z.ZodRecord<z.ZodEnum<{
3339
+ time: "time";
3339
3340
  length: "length";
3340
3341
  mass: "mass";
3341
- time: "time";
3342
3342
  electricCurrent: "electricCurrent";
3343
3343
  thermodynamicTemperature: "thermodynamicTemperature";
3344
3344
  amountOfSubstance: "amountOfSubstance";
package/dist/codec.d.ts CHANGED
@@ -17,8 +17,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
17
17
  paragraph: z.ZodOptional<z.ZodObject<{
18
18
  alignment: z.ZodOptional<z.ZodEnum<{
19
19
  left: "left";
20
- center: "center";
21
20
  right: "right";
21
+ center: "center";
22
22
  justify: "justify";
23
23
  }>>;
24
24
  list: z.ZodOptional<z.ZodObject<{
@@ -27,8 +27,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
27
27
  checked: z.ZodOptional<z.ZodBoolean>;
28
28
  itemId: z.ZodOptional<z.ZodString>;
29
29
  format: z.ZodOptional<z.ZodEnum<{
30
- bullet: "bullet";
31
30
  decimal: "decimal";
31
+ bullet: "bullet";
32
32
  lowerLetter: "lowerLetter";
33
33
  upperLetter: "upperLetter";
34
34
  lowerRoman: "lowerRoman";
@@ -103,9 +103,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
103
103
  symbol: z.ZodString;
104
104
  name: z.ZodOptional<z.ZodString>;
105
105
  dimension: z.ZodRecord<z.ZodEnum<{
106
+ time: "time";
106
107
  length: "length";
107
108
  mass: "mass";
108
- time: "time";
109
109
  electricCurrent: "electricCurrent";
110
110
  thermodynamicTemperature: "thermodynamicTemperature";
111
111
  amountOfSubstance: "amountOfSubstance";
@@ -172,8 +172,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
172
172
  paragraph: z.ZodOptional<z.ZodObject<{
173
173
  alignment: z.ZodOptional<z.ZodEnum<{
174
174
  left: "left";
175
- center: "center";
176
175
  right: "right";
176
+ center: "center";
177
177
  justify: "justify";
178
178
  }>>;
179
179
  list: z.ZodOptional<z.ZodObject<{
@@ -182,8 +182,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
182
182
  checked: z.ZodOptional<z.ZodBoolean>;
183
183
  itemId: z.ZodOptional<z.ZodString>;
184
184
  format: z.ZodOptional<z.ZodEnum<{
185
- bullet: "bullet";
186
185
  decimal: "decimal";
186
+ bullet: "bullet";
187
187
  lowerLetter: "lowerLetter";
188
188
  upperLetter: "upperLetter";
189
189
  lowerRoman: "lowerRoman";
@@ -258,9 +258,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
258
258
  symbol: z.ZodString;
259
259
  name: z.ZodOptional<z.ZodString>;
260
260
  dimension: z.ZodRecord<z.ZodEnum<{
261
+ time: "time";
261
262
  length: "length";
262
263
  mass: "mass";
263
- time: "time";
264
264
  electricCurrent: "electricCurrent";
265
265
  thermodynamicTemperature: "thermodynamicTemperature";
266
266
  amountOfSubstance: "amountOfSubstance";
@@ -332,8 +332,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
332
332
  paragraph: z.ZodOptional<z.ZodObject<{
333
333
  alignment: z.ZodOptional<z.ZodEnum<{
334
334
  left: "left";
335
- center: "center";
336
335
  right: "right";
336
+ center: "center";
337
337
  justify: "justify";
338
338
  }>>;
339
339
  list: z.ZodOptional<z.ZodObject<{
@@ -342,8 +342,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
342
342
  checked: z.ZodOptional<z.ZodBoolean>;
343
343
  itemId: z.ZodOptional<z.ZodString>;
344
344
  format: z.ZodOptional<z.ZodEnum<{
345
- bullet: "bullet";
346
345
  decimal: "decimal";
346
+ bullet: "bullet";
347
347
  lowerLetter: "lowerLetter";
348
348
  upperLetter: "upperLetter";
349
349
  lowerRoman: "lowerRoman";
@@ -418,9 +418,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
418
418
  symbol: z.ZodString;
419
419
  name: z.ZodOptional<z.ZodString>;
420
420
  dimension: z.ZodRecord<z.ZodEnum<{
421
+ time: "time";
421
422
  length: "length";
422
423
  mass: "mass";
423
- time: "time";
424
424
  electricCurrent: "electricCurrent";
425
425
  thermodynamicTemperature: "thermodynamicTemperature";
426
426
  amountOfSubstance: "amountOfSubstance";
@@ -487,8 +487,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
487
487
  paragraph: z.ZodOptional<z.ZodObject<{
488
488
  alignment: z.ZodOptional<z.ZodEnum<{
489
489
  left: "left";
490
- center: "center";
491
490
  right: "right";
491
+ center: "center";
492
492
  justify: "justify";
493
493
  }>>;
494
494
  list: z.ZodOptional<z.ZodObject<{
@@ -497,8 +497,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
497
497
  checked: z.ZodOptional<z.ZodBoolean>;
498
498
  itemId: z.ZodOptional<z.ZodString>;
499
499
  format: z.ZodOptional<z.ZodEnum<{
500
- bullet: "bullet";
501
500
  decimal: "decimal";
501
+ bullet: "bullet";
502
502
  lowerLetter: "lowerLetter";
503
503
  upperLetter: "upperLetter";
504
504
  lowerRoman: "lowerRoman";
@@ -573,9 +573,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
573
573
  symbol: z.ZodString;
574
574
  name: z.ZodOptional<z.ZodString>;
575
575
  dimension: z.ZodRecord<z.ZodEnum<{
576
+ time: "time";
576
577
  length: "length";
577
578
  mass: "mass";
578
- time: "time";
579
579
  electricCurrent: "electricCurrent";
580
580
  thermodynamicTemperature: "thermodynamicTemperature";
581
581
  amountOfSubstance: "amountOfSubstance";
@@ -701,8 +701,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
701
701
  paragraph: z.ZodOptional<z.ZodObject<{
702
702
  alignment: z.ZodOptional<z.ZodEnum<{
703
703
  left: "left";
704
- center: "center";
705
704
  right: "right";
705
+ center: "center";
706
706
  justify: "justify";
707
707
  }>>;
708
708
  list: z.ZodOptional<z.ZodObject<{
@@ -711,8 +711,8 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
711
711
  checked: z.ZodOptional<z.ZodBoolean>;
712
712
  itemId: z.ZodOptional<z.ZodString>;
713
713
  format: z.ZodOptional<z.ZodEnum<{
714
- bullet: "bullet";
715
714
  decimal: "decimal";
715
+ bullet: "bullet";
716
716
  lowerLetter: "lowerLetter";
717
717
  upperLetter: "upperLetter";
718
718
  lowerRoman: "lowerRoman";
@@ -787,9 +787,9 @@ declare const markdownCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffer>, Uin
787
787
  symbol: z.ZodString;
788
788
  name: z.ZodOptional<z.ZodString>;
789
789
  dimension: z.ZodRecord<z.ZodEnum<{
790
+ time: "time";
790
791
  length: "length";
791
792
  mass: "mass";
792
- time: "time";
793
793
  electricCurrent: "electricCurrent";
794
794
  thermodynamicTemperature: "thermodynamicTemperature";
795
795
  amountOfSubstance: "amountOfSubstance";
@@ -937,9 +937,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
937
937
  symbol: z.ZodString;
938
938
  name: z.ZodOptional<z.ZodString>;
939
939
  dimension: z.ZodRecord<z.ZodEnum<{
940
+ time: "time";
940
941
  length: "length";
941
942
  mass: "mass";
942
- time: "time";
943
943
  electricCurrent: "electricCurrent";
944
944
  thermodynamicTemperature: "thermodynamicTemperature";
945
945
  amountOfSubstance: "amountOfSubstance";
@@ -1133,9 +1133,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1133
1133
  symbol: z.ZodString;
1134
1134
  name: z.ZodOptional<z.ZodString>;
1135
1135
  dimension: z.ZodRecord<z.ZodEnum<{
1136
+ time: "time";
1136
1137
  length: "length";
1137
1138
  mass: "mass";
1138
- time: "time";
1139
1139
  electricCurrent: "electricCurrent";
1140
1140
  thermodynamicTemperature: "thermodynamicTemperature";
1141
1141
  amountOfSubstance: "amountOfSubstance";
@@ -1538,8 +1538,8 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1538
1538
  }, z.core.$strip>>;
1539
1539
  alignment: z.ZodOptional<z.ZodEnum<{
1540
1540
  left: "left";
1541
- center: "center";
1542
1541
  right: "right";
1542
+ center: "center";
1543
1543
  justify: "justify";
1544
1544
  }>>;
1545
1545
  verticalAlignment: z.ZodOptional<z.ZodEnum<{
@@ -1648,7 +1648,7 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1648
1648
  floatPosition: z.ZodOptional<z.ZodObject<{
1649
1649
  horizontal: z.ZodUnion<readonly [z.ZodObject<{
1650
1650
  relativeTo: z.ZodEnum<{
1651
- paragraph: "paragraph";
1651
+ column: "column";
1652
1652
  page: "page";
1653
1653
  margin: "margin";
1654
1654
  leftMargin: "leftMargin";
@@ -1657,15 +1657,15 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1657
1657
  bottomMargin: "bottomMargin";
1658
1658
  insideMargin: "insideMargin";
1659
1659
  outsideMargin: "outsideMargin";
1660
- column: "column";
1661
1660
  character: "character";
1661
+ paragraph: "paragraph";
1662
1662
  line: "line";
1663
1663
  frame: "frame";
1664
1664
  }>;
1665
1665
  offsetPt: z.ZodNumber;
1666
1666
  }, z.core.$strict>, z.ZodObject<{
1667
1667
  relativeTo: z.ZodEnum<{
1668
- paragraph: "paragraph";
1668
+ column: "column";
1669
1669
  page: "page";
1670
1670
  margin: "margin";
1671
1671
  leftMargin: "leftMargin";
@@ -1674,24 +1674,24 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1674
1674
  bottomMargin: "bottomMargin";
1675
1675
  insideMargin: "insideMargin";
1676
1676
  outsideMargin: "outsideMargin";
1677
- column: "column";
1678
1677
  character: "character";
1678
+ paragraph: "paragraph";
1679
1679
  line: "line";
1680
1680
  frame: "frame";
1681
1681
  }>;
1682
1682
  align: z.ZodEnum<{
1683
1683
  left: "left";
1684
- center: "center";
1685
1684
  right: "right";
1686
1685
  top: "top";
1687
1686
  bottom: "bottom";
1687
+ center: "center";
1688
1688
  inside: "inside";
1689
1689
  outside: "outside";
1690
1690
  }>;
1691
1691
  }, z.core.$strict>]>;
1692
1692
  vertical: z.ZodUnion<readonly [z.ZodObject<{
1693
1693
  relativeTo: z.ZodEnum<{
1694
- paragraph: "paragraph";
1694
+ column: "column";
1695
1695
  page: "page";
1696
1696
  margin: "margin";
1697
1697
  leftMargin: "leftMargin";
@@ -1700,15 +1700,15 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1700
1700
  bottomMargin: "bottomMargin";
1701
1701
  insideMargin: "insideMargin";
1702
1702
  outsideMargin: "outsideMargin";
1703
- column: "column";
1704
1703
  character: "character";
1704
+ paragraph: "paragraph";
1705
1705
  line: "line";
1706
1706
  frame: "frame";
1707
1707
  }>;
1708
1708
  offsetPt: z.ZodNumber;
1709
1709
  }, z.core.$strict>, z.ZodObject<{
1710
1710
  relativeTo: z.ZodEnum<{
1711
- paragraph: "paragraph";
1711
+ column: "column";
1712
1712
  page: "page";
1713
1713
  margin: "margin";
1714
1714
  leftMargin: "leftMargin";
@@ -1717,17 +1717,17 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1717
1717
  bottomMargin: "bottomMargin";
1718
1718
  insideMargin: "insideMargin";
1719
1719
  outsideMargin: "outsideMargin";
1720
- column: "column";
1721
1720
  character: "character";
1721
+ paragraph: "paragraph";
1722
1722
  line: "line";
1723
1723
  frame: "frame";
1724
1724
  }>;
1725
1725
  align: z.ZodEnum<{
1726
1726
  left: "left";
1727
- center: "center";
1728
1727
  right: "right";
1729
1728
  top: "top";
1730
1729
  bottom: "bottom";
1730
+ center: "center";
1731
1731
  inside: "inside";
1732
1732
  outside: "outside";
1733
1733
  }>;
@@ -1816,12 +1816,12 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
1816
1816
  endColumn: z.ZodNumber;
1817
1817
  }, z.core.$strip>>;
1818
1818
  type: z.ZodEnum<{
1819
- decimal: "decimal";
1820
- list: "list";
1821
1819
  date: "date";
1822
1820
  custom: "custom";
1823
1821
  time: "time";
1824
1822
  whole: "whole";
1823
+ decimal: "decimal";
1824
+ list: "list";
1825
1825
  textLength: "textLength";
1826
1826
  }>;
1827
1827
  operator: z.ZodOptional<z.ZodEnum<{
@@ -2478,9 +2478,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
2478
2478
  symbol: z.ZodString;
2479
2479
  name: z.ZodOptional<z.ZodString>;
2480
2480
  dimension: z.ZodRecord<z.ZodEnum<{
2481
+ time: "time";
2481
2482
  length: "length";
2482
2483
  mass: "mass";
2483
- time: "time";
2484
2484
  electricCurrent: "electricCurrent";
2485
2485
  thermodynamicTemperature: "thermodynamicTemperature";
2486
2486
  amountOfSubstance: "amountOfSubstance";
@@ -3208,9 +3208,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
3208
3208
  symbol: z.ZodString;
3209
3209
  name: z.ZodOptional<z.ZodString>;
3210
3210
  dimension: z.ZodRecord<z.ZodEnum<{
3211
+ time: "time";
3211
3212
  length: "length";
3212
3213
  mass: "mass";
3213
- time: "time";
3214
3214
  electricCurrent: "electricCurrent";
3215
3215
  thermodynamicTemperature: "thermodynamicTemperature";
3216
3216
  amountOfSubstance: "amountOfSubstance";
@@ -3336,9 +3336,9 @@ declare const markdownContentCodec: z.ZodCodec<z.ZodCustom<Uint8Array<ArrayBuffe
3336
3336
  symbol: z.ZodString;
3337
3337
  name: z.ZodOptional<z.ZodString>;
3338
3338
  dimension: z.ZodRecord<z.ZodEnum<{
3339
+ time: "time";
3339
3340
  length: "length";
3340
3341
  mass: "mass";
3341
- time: "time";
3342
3342
  electricCurrent: "electricCurrent";
3343
3343
  thermodynamicTemperature: "thermodynamicTemperature";
3344
3344
  amountOfSubstance: "amountOfSubstance";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_diagnostics_diagnostics = require("../diagnostics/diagnostics.cjs");
3
- require("../shared/style-constants.cjs");
3
+ const require_shared_style_constants = require("../shared/style-constants.cjs");
4
4
  let document_schema_js = require("document-schema.js");
5
5
  //#region src/emit/html-table.ts
6
6
  function escapeHtmlText(text) {
@@ -21,6 +21,10 @@ function tableNeedsHtmlFallback(table) {
21
21
  function emitRunHtml(run) {
22
22
  let text = escapeHtmlText(run.text);
23
23
  if (run.fontFamily === "Courier New") text = `<code>${text}</code>`;
24
+ if (run.verticalAlign !== void 0) {
25
+ const tag = require_shared_style_constants.VERTICAL_ALIGN_TAG[run.verticalAlign];
26
+ text = `<${tag}>${text}</${tag}>`;
27
+ }
24
28
  if (run.strike === true) text = `<del>${text}</del>`;
25
29
  if (run.italic === true) text = `<em>${text}</em>`;
26
30
  if (run.bold === true) text = `<strong>${text}</strong>`;
@@ -1,5 +1,5 @@
1
1
  import { MarkdownDiagnosticCodes, MarkdownTableGridFaultError } from "../diagnostics/diagnostics.js";
2
- import "../shared/style-constants.js";
2
+ import { VERTICAL_ALIGN_TAG } from "../shared/style-constants.js";
3
3
  import { colorToRgbHex, findTableGridFault, walkTableGrid } from "document-schema.js";
4
4
  //#region src/emit/html-table.ts
5
5
  function escapeHtmlText(text) {
@@ -20,6 +20,10 @@ function tableNeedsHtmlFallback(table) {
20
20
  function emitRunHtml(run) {
21
21
  let text = escapeHtmlText(run.text);
22
22
  if (run.fontFamily === "Courier New") text = `<code>${text}</code>`;
23
+ if (run.verticalAlign !== void 0) {
24
+ const tag = VERTICAL_ALIGN_TAG[run.verticalAlign];
25
+ text = `<${tag}>${text}</${tag}>`;
26
+ }
23
27
  if (run.strike === true) text = `<del>${text}</del>`;
24
28
  if (run.italic === true) text = `<em>${text}</em>`;
25
29
  if (run.bold === true) text = `<strong>${text}</strong>`;
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_diagnostics_diagnostics = require("../diagnostics/diagnostics.cjs");
3
3
  const require_inline_footnote = require("../inline/footnote.cjs");
4
4
  const require_shared_line_ending = require("../shared/line-ending.cjs");
5
- require("../shared/style-constants.cjs");
5
+ const require_shared_style_constants = require("../shared/style-constants.cjs");
6
6
  //#region src/emit/inline.ts
7
7
  const ESCAPE_CHARS = /* @__PURE__ */ new Set([
8
8
  "!",
@@ -74,6 +74,12 @@ function footnoteReferenceAt(constructs, index) {
74
74
  }
75
75
  function renderLeaf(run, context, index, constructs) {
76
76
  if (run.source?.format === "markdown") return run.source.xml;
77
+ const body = renderLeafBody(run, context, index, constructs);
78
+ if (run.verticalAlign === void 0) return body;
79
+ const tag = require_shared_style_constants.VERTICAL_ALIGN_TAG[run.verticalAlign];
80
+ return `<${tag}>${body}</${tag}>`;
81
+ }
82
+ function renderLeafBody(run, context, index, constructs) {
77
83
  if (run.fontFamily === "Courier New") {
78
84
  context.sink({
79
85
  code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.CODE_SPAN_AS_MONOSPACE_RUN,
@@ -1,7 +1,7 @@
1
1
  import { MarkdownDiagnosticCodes } from "../diagnostics/diagnostics.js";
2
2
  import { isValidFootnoteLabel } from "../inline/footnote.js";
3
3
  import { ESCAPED_HARD_BREAK_PATTERN, LINE_ENDING_PATTERN } from "../shared/line-ending.js";
4
- import "../shared/style-constants.js";
4
+ import { VERTICAL_ALIGN_TAG } from "../shared/style-constants.js";
5
5
  //#region src/emit/inline.ts
6
6
  const ESCAPE_CHARS = /* @__PURE__ */ new Set([
7
7
  "!",
@@ -73,6 +73,12 @@ function footnoteReferenceAt(constructs, index) {
73
73
  }
74
74
  function renderLeaf(run, context, index, constructs) {
75
75
  if (run.source?.format === "markdown") return run.source.xml;
76
+ const body = renderLeafBody(run, context, index, constructs);
77
+ if (run.verticalAlign === void 0) return body;
78
+ const tag = VERTICAL_ALIGN_TAG[run.verticalAlign];
79
+ return `<${tag}>${body}</${tag}>`;
80
+ }
81
+ function renderLeafBody(run, context, index, constructs) {
76
82
  if (run.fontFamily === "Courier New") {
77
83
  context.sink({
78
84
  code: MarkdownDiagnosticCodes.CODE_SPAN_AS_MONOSPACE_RUN,
@@ -85,7 +85,7 @@ function readTextAlign(attrs) {
85
85
  function unescapeHtml(text) {
86
86
  return text.replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&quot;", "\"").replaceAll("&#39;", "'").replaceAll("&amp;", "&");
87
87
  }
88
- const INLINE_TAG_PATTERN = /<(a|strong|b|em|i|del|s|strike|code)\b([^>]*)>/i;
88
+ const INLINE_TAG_PATTERN = /<(a|strong|b|em|i|del|s|strike|code|sup|sub)\b([^>]*)>/i;
89
89
  function applyTagStyle(style, tagName, attrs) {
90
90
  switch (tagName) {
91
91
  case "strong":
@@ -108,6 +108,14 @@ function applyTagStyle(style, tagName, attrs) {
108
108
  ...style,
109
109
  fontFamily: require_shared_style_constants.MONOSPACE_FONT_FAMILY
110
110
  };
111
+ case "sup": return {
112
+ ...style,
113
+ verticalAlign: "superscript"
114
+ };
115
+ case "sub": return {
116
+ ...style,
117
+ verticalAlign: "subscript"
118
+ };
111
119
  case "a": {
112
120
  const href = readAttr(attrs, "href");
113
121
  return href === void 0 ? style : {
@@ -84,7 +84,7 @@ function readTextAlign(attrs) {
84
84
  function unescapeHtml(text) {
85
85
  return text.replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&quot;", "\"").replaceAll("&#39;", "'").replaceAll("&amp;", "&");
86
86
  }
87
- const INLINE_TAG_PATTERN = /<(a|strong|b|em|i|del|s|strike|code)\b([^>]*)>/i;
87
+ const INLINE_TAG_PATTERN = /<(a|strong|b|em|i|del|s|strike|code|sup|sub)\b([^>]*)>/i;
88
88
  function applyTagStyle(style, tagName, attrs) {
89
89
  switch (tagName) {
90
90
  case "strong":
@@ -107,6 +107,14 @@ function applyTagStyle(style, tagName, attrs) {
107
107
  ...style,
108
108
  fontFamily: MONOSPACE_FONT_FAMILY
109
109
  };
110
+ case "sup": return {
111
+ ...style,
112
+ verticalAlign: "superscript"
113
+ };
114
+ case "sub": return {
115
+ ...style,
116
+ verticalAlign: "subscript"
117
+ };
110
118
  case "a": {
111
119
  const href = readAttr(attrs, "href");
112
120
  return href === void 0 ? style : {
@@ -9,6 +9,7 @@ function buildRun(text, style, fontFamily) {
9
9
  ...style.italic === true ? { italic: true } : {},
10
10
  ...style.strike === true ? { strike: true } : {},
11
11
  ...style.hyperlink !== void 0 ? { hyperlink: style.hyperlink } : {},
12
+ ...style.verticalAlign !== void 0 ? { verticalAlign: style.verticalAlign } : {},
12
13
  ...fontFamily !== void 0 ? { fontFamily } : {}
13
14
  };
14
15
  }
@@ -139,8 +140,42 @@ function lowerInlineNodeInto(node, style, context, acc) {
139
140
  return;
140
141
  }
141
142
  }
143
+ function scriptTag(node) {
144
+ if (node.type !== "rawHtml") return;
145
+ const match = /^<(\/?)(sup|sub)>$/i.exec(node.literal);
146
+ if (match === null) return;
147
+ return {
148
+ position: match[2]?.toLowerCase() === require_shared_style_constants.VERTICAL_ALIGN_TAG.superscript ? "superscript" : "subscript",
149
+ closing: match[1] === "/"
150
+ };
151
+ }
152
+ function closingScriptTagIndex(nodes, open, position) {
153
+ let depth = 0;
154
+ for (let index = open + 1; index < nodes.length; index++) {
155
+ const tag = scriptTag(nodes[index]);
156
+ if (tag?.position !== position) continue;
157
+ if (!tag.closing) depth += 1;
158
+ else if (depth === 0) return index;
159
+ else depth -= 1;
160
+ }
161
+ }
142
162
  function lowerNodesInto(nodes, style, context, acc) {
143
- for (const node of nodes) lowerInlineNodeInto(node, style, context, acc);
163
+ let index = 0;
164
+ while (index < nodes.length) {
165
+ const node = nodes[index];
166
+ const tag = scriptTag(node);
167
+ const close = tag === void 0 || tag.closing ? void 0 : closingScriptTagIndex(nodes, index, tag.position);
168
+ if (tag !== void 0 && close !== void 0) {
169
+ lowerNodesInto(nodes.slice(index + 1, close), {
170
+ ...style,
171
+ verticalAlign: tag.position
172
+ }, context, acc);
173
+ index = close + 1;
174
+ continue;
175
+ }
176
+ lowerInlineNodeInto(node, style, context, acc);
177
+ index += 1;
178
+ }
144
179
  }
145
180
  function lowerInlineNodes(nodes, context) {
146
181
  const acc = {
@@ -1,5 +1,5 @@
1
1
  import { MarkdownDiagnosticCodes } from "../diagnostics/diagnostics.js";
2
- import { MATH_INLINE_FONT_MARKER, MONOSPACE_FONT_FAMILY } from "../shared/style-constants.js";
2
+ import { MATH_INLINE_FONT_MARKER, MONOSPACE_FONT_FAMILY, VERTICAL_ALIGN_TAG } from "../shared/style-constants.js";
3
3
  //#region src/lower/inline.ts
4
4
  function buildRun(text, style, fontFamily) {
5
5
  return {
@@ -8,6 +8,7 @@ function buildRun(text, style, fontFamily) {
8
8
  ...style.italic === true ? { italic: true } : {},
9
9
  ...style.strike === true ? { strike: true } : {},
10
10
  ...style.hyperlink !== void 0 ? { hyperlink: style.hyperlink } : {},
11
+ ...style.verticalAlign !== void 0 ? { verticalAlign: style.verticalAlign } : {},
11
12
  ...fontFamily !== void 0 ? { fontFamily } : {}
12
13
  };
13
14
  }
@@ -138,8 +139,42 @@ function lowerInlineNodeInto(node, style, context, acc) {
138
139
  return;
139
140
  }
140
141
  }
142
+ function scriptTag(node) {
143
+ if (node.type !== "rawHtml") return;
144
+ const match = /^<(\/?)(sup|sub)>$/i.exec(node.literal);
145
+ if (match === null) return;
146
+ return {
147
+ position: match[2]?.toLowerCase() === VERTICAL_ALIGN_TAG.superscript ? "superscript" : "subscript",
148
+ closing: match[1] === "/"
149
+ };
150
+ }
151
+ function closingScriptTagIndex(nodes, open, position) {
152
+ let depth = 0;
153
+ for (let index = open + 1; index < nodes.length; index++) {
154
+ const tag = scriptTag(nodes[index]);
155
+ if (tag?.position !== position) continue;
156
+ if (!tag.closing) depth += 1;
157
+ else if (depth === 0) return index;
158
+ else depth -= 1;
159
+ }
160
+ }
141
161
  function lowerNodesInto(nodes, style, context, acc) {
142
- for (const node of nodes) lowerInlineNodeInto(node, style, context, acc);
162
+ let index = 0;
163
+ while (index < nodes.length) {
164
+ const node = nodes[index];
165
+ const tag = scriptTag(node);
166
+ const close = tag === void 0 || tag.closing ? void 0 : closingScriptTagIndex(nodes, index, tag.position);
167
+ if (tag !== void 0 && close !== void 0) {
168
+ lowerNodesInto(nodes.slice(index + 1, close), {
169
+ ...style,
170
+ verticalAlign: tag.position
171
+ }, context, acc);
172
+ index = close + 1;
173
+ continue;
174
+ }
175
+ lowerInlineNodeInto(node, style, context, acc);
176
+ index += 1;
177
+ }
143
178
  }
144
179
  function lowerInlineNodes(nodes, context) {
145
180
  const acc = {
@@ -22,6 +22,10 @@ const MATH_INLINE_FONT_MARKER = "Cambria Math";
22
22
  const QUOTE_INDENT_PT = 36;
23
23
  const TASK_CHECKBOX_UNCHECKED = "☐";
24
24
  const TASK_CHECKBOX_CHECKED = "☒";
25
+ const VERTICAL_ALIGN_TAG = {
26
+ superscript: "sup",
27
+ subscript: "sub"
28
+ };
25
29
  //#endregion
26
30
  exports.CODE_BLOCK_STYLE_ID = CODE_BLOCK_STYLE_ID;
27
31
  exports.HORIZONTAL_RULE_STYLE_ID = HORIZONTAL_RULE_STYLE_ID;
@@ -34,5 +38,6 @@ exports.QUOTE_INDENT_PT = QUOTE_INDENT_PT;
34
38
  exports.QUOTE_STYLE_ID = QUOTE_STYLE_ID;
35
39
  exports.TASK_CHECKBOX_CHECKED = TASK_CHECKBOX_CHECKED;
36
40
  exports.TASK_CHECKBOX_UNCHECKED = TASK_CHECKBOX_UNCHECKED;
41
+ exports.VERTICAL_ALIGN_TAG = VERTICAL_ALIGN_TAG;
37
42
  exports.headingStyleId = headingStyleId;
38
43
  exports.parseHeadingStyleId = parseHeadingStyleId;
@@ -12,5 +12,6 @@ declare const MATH_INLINE_FONT_MARKER = "Cambria Math";
12
12
  declare const QUOTE_INDENT_PT = 36;
13
13
  declare const TASK_CHECKBOX_UNCHECKED = "☐";
14
14
  declare const TASK_CHECKBOX_CHECKED = "☒";
15
+ declare const VERTICAL_ALIGN_TAG: Readonly<Record<"superscript" | "subscript", "sup" | "sub">>;
15
16
  //#endregion
16
- export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, headingStyleId, parseHeadingStyleId };
17
+ export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, VERTICAL_ALIGN_TAG, headingStyleId, parseHeadingStyleId };
@@ -12,5 +12,6 @@ declare const MATH_INLINE_FONT_MARKER = "Cambria Math";
12
12
  declare const QUOTE_INDENT_PT = 36;
13
13
  declare const TASK_CHECKBOX_UNCHECKED = "☐";
14
14
  declare const TASK_CHECKBOX_CHECKED = "☒";
15
+ declare const VERTICAL_ALIGN_TAG: Readonly<Record<"superscript" | "subscript", "sup" | "sub">>;
15
16
  //#endregion
16
- export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, headingStyleId, parseHeadingStyleId };
17
+ export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, VERTICAL_ALIGN_TAG, headingStyleId, parseHeadingStyleId };
@@ -21,5 +21,9 @@ const MATH_INLINE_FONT_MARKER = "Cambria Math";
21
21
  const QUOTE_INDENT_PT = 36;
22
22
  const TASK_CHECKBOX_UNCHECKED = "☐";
23
23
  const TASK_CHECKBOX_CHECKED = "☒";
24
+ const VERTICAL_ALIGN_TAG = {
25
+ superscript: "sup",
26
+ subscript: "sub"
27
+ };
24
28
  //#endregion
25
- export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, headingStyleId, parseHeadingStyleId };
29
+ export { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, MATH_INLINE_FONT_MARKER, MAX_HEADING_STYLE_LEVEL, MONOSPACE_FONT_FAMILY, QUOTE_INDENT_PT, QUOTE_STYLE_ID, TASK_CHECKBOX_CHECKED, TASK_CHECKBOX_UNCHECKED, VERTICAL_ALIGN_TAG, headingStyleId, parseHeadingStyleId };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markdown-codec",
3
- "version": "11.1.17",
3
+ "version": "11.2.1",
4
4
  "description": "Hand-written CommonMark+GFM <-> DocumentTree codec, built on document-schema.js",
5
5
  "type": "module",
6
6
  "repository": {