markdown-codec 1.3.31 → 1.4.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.
Files changed (69) hide show
  1. package/dist/ast/ast.cjs +2 -1
  2. package/dist/ast/ast.d.cts +2 -2
  3. package/dist/ast/ast.d.ts +2 -2
  4. package/dist/ast/ast.js +2 -1
  5. package/dist/{ast-BXYwy08e.d.cts → ast-DbjiuYr8.d.cts} +13 -3
  6. package/dist/{ast-BXYwy08e.d.ts → ast-DbjiuYr8.d.ts} +13 -3
  7. package/dist/block/block.cjs +44 -4
  8. package/dist/block/block.d.cts +3 -3
  9. package/dist/block/block.d.ts +3 -3
  10. package/dist/block/block.js +44 -4
  11. package/dist/block/definitions.d.cts +1 -1
  12. package/dist/block/definitions.d.ts +1 -1
  13. package/dist/block/node.cjs +1 -1
  14. package/dist/block/node.d.cts +2 -2
  15. package/dist/block/node.d.ts +2 -2
  16. package/dist/block/node.js +1 -1
  17. package/dist/block/table.d.cts +1 -1
  18. package/dist/block/table.d.ts +1 -1
  19. package/dist/diagnostics/diagnostics.cjs +3 -0
  20. package/dist/diagnostics/diagnostics.d.cts +1 -1
  21. package/dist/diagnostics/diagnostics.d.ts +1 -1
  22. package/dist/diagnostics/diagnostics.js +3 -0
  23. package/dist/{diagnostics-DmuWc7d8.d.cts → diagnostics-B72W0P_E.d.cts} +3 -0
  24. package/dist/{diagnostics-DmuWc7d8.d.ts → diagnostics-B72W0P_E.d.ts} +3 -0
  25. package/dist/emit/emit.cjs +3 -1
  26. package/dist/emit/emit.js +4 -2
  27. package/dist/emit/inline.cjs +2 -3
  28. package/dist/emit/inline.d.cts +1 -1
  29. package/dist/emit/inline.d.ts +1 -1
  30. package/dist/emit/inline.js +2 -3
  31. package/dist/emit/table.d.cts +1 -1
  32. package/dist/emit/table.d.ts +1 -1
  33. package/dist/html/render.cjs +6 -0
  34. package/dist/html/render.d.cts +1 -1
  35. package/dist/html/render.d.ts +1 -1
  36. package/dist/html/render.js +6 -0
  37. package/dist/index.d.cts +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/inline/inline.cjs +16 -0
  40. package/dist/inline/inline.d.cts +1 -1
  41. package/dist/inline/inline.d.ts +1 -1
  42. package/dist/inline/inline.js +16 -0
  43. package/dist/inline/math.cjs +10 -0
  44. package/dist/inline/math.d.cts +4 -0
  45. package/dist/inline/math.d.ts +4 -0
  46. package/dist/inline/math.js +9 -0
  47. package/dist/inline/node.d.cts +1 -1
  48. package/dist/inline/node.d.ts +1 -1
  49. package/dist/{inline-B50cM6cn.d.ts → inline-TuBQ2TUr.d.ts} +1 -1
  50. package/dist/{inline-C9YEGDV5.d.cts → inline-uVHJ5xzT.d.cts} +1 -1
  51. package/dist/lower/front-matter.d.cts +1 -1
  52. package/dist/lower/front-matter.d.ts +1 -1
  53. package/dist/lower/inline.cjs +7 -0
  54. package/dist/lower/inline.d.cts +2 -2
  55. package/dist/lower/inline.d.ts +2 -2
  56. package/dist/lower/inline.js +8 -1
  57. package/dist/lower/lower.cjs +14 -0
  58. package/dist/lower/lower.js +15 -1
  59. package/dist/lower/table.d.cts +1 -1
  60. package/dist/lower/table.d.ts +1 -1
  61. package/dist/options/options.d.cts +1 -1
  62. package/dist/options/options.d.ts +1 -1
  63. package/dist/read.d.cts +1 -1
  64. package/dist/read.d.ts +1 -1
  65. package/dist/shared/style-constants.cjs +4 -0
  66. package/dist/shared/style-constants.d.cts +3 -1
  67. package/dist/shared/style-constants.d.ts +3 -1
  68. package/dist/shared/style-constants.js +3 -1
  69. package/package.json +1 -1
package/dist/ast/ast.cjs CHANGED
@@ -12,7 +12,8 @@ const BLOCK_NODE_TYPES = /* @__PURE__ */ new Set([
12
12
  "htmlBlock",
13
13
  "table",
14
14
  "tableRow",
15
- "tableCell"
15
+ "tableCell",
16
+ "mathBlock"
16
17
  ]);
17
18
  function isMarkdownBlockNode(node) {
18
19
  return BLOCK_NODE_TYPES.has(node.type);
@@ -1,2 +1,2 @@
1
- import { A as MarkdownTableCellNode, C as MarkdownParagraphNode, D as MarkdownStrikethroughNode, E as MarkdownSoftBreakNode, F as isMarkdownBlockNode, I as isMarkdownInlineNode, M as MarkdownTableRowNode, N as MarkdownTextNode, O as MarkdownStrongNode, P as MarkdownThematicBreakNode, S as MarkdownOrderedListDelimiter, T as MarkdownRawHtmlNode, _ as MarkdownLinkNode, a as MarkdownCodeBlockNode, b as MarkdownListNode, c as MarkdownEmphasisMarker, d as MarkdownHardBreakNode, f as MarkdownHeadingNode, g as MarkdownInlineNode, h as MarkdownImageNode, i as MarkdownBulletMarker, j as MarkdownTableNode, k as MarkdownTableAlignment, l as MarkdownEmphasisNode, m as MarkdownHtmlBlockNode, n as MarkdownBlockNode, o as MarkdownCodeSpanNode, p as MarkdownHeadingStyle, r as MarkdownBlockquoteNode, s as MarkdownDocumentNode, t as MarkdownAutolinkNode, u as MarkdownEntityNode, v as MarkdownListItemNode, w as MarkdownPosition, x as MarkdownNode, y as MarkdownListMarkerType } from "../ast-BXYwy08e.cjs";
2
- export { MarkdownAutolinkNode, MarkdownBlockNode, MarkdownBlockquoteNode, MarkdownBulletMarker, MarkdownCodeBlockNode, MarkdownCodeSpanNode, MarkdownDocumentNode, MarkdownEmphasisMarker, MarkdownEmphasisNode, MarkdownEntityNode, MarkdownHardBreakNode, MarkdownHeadingNode, MarkdownHeadingStyle, MarkdownHtmlBlockNode, MarkdownImageNode, MarkdownInlineNode, MarkdownLinkNode, MarkdownListItemNode, MarkdownListMarkerType, MarkdownListNode, MarkdownNode, MarkdownOrderedListDelimiter, MarkdownParagraphNode, MarkdownPosition, MarkdownRawHtmlNode, MarkdownSoftBreakNode, MarkdownStrikethroughNode, MarkdownStrongNode, MarkdownTableAlignment, MarkdownTableCellNode, MarkdownTableNode, MarkdownTableRowNode, MarkdownTextNode, MarkdownThematicBreakNode, isMarkdownBlockNode, isMarkdownInlineNode };
1
+ import { A as MarkdownStrongNode, C as MarkdownNode, D as MarkdownRawHtmlNode, E as MarkdownPosition, F as MarkdownTextNode, I as MarkdownThematicBreakNode, L as isMarkdownBlockNode, M as MarkdownTableCellNode, N as MarkdownTableNode, O as MarkdownSoftBreakNode, P as MarkdownTableRowNode, R as isMarkdownInlineNode, S as MarkdownMathInlineNode, T as MarkdownParagraphNode, _ as MarkdownLinkNode, a as MarkdownCodeBlockNode, b as MarkdownListNode, c as MarkdownEmphasisMarker, d as MarkdownHardBreakNode, f as MarkdownHeadingNode, g as MarkdownInlineNode, h as MarkdownImageNode, i as MarkdownBulletMarker, j as MarkdownTableAlignment, k as MarkdownStrikethroughNode, l as MarkdownEmphasisNode, m as MarkdownHtmlBlockNode, n as MarkdownBlockNode, o as MarkdownCodeSpanNode, p as MarkdownHeadingStyle, r as MarkdownBlockquoteNode, s as MarkdownDocumentNode, t as MarkdownAutolinkNode, u as MarkdownEntityNode, v as MarkdownListItemNode, w as MarkdownOrderedListDelimiter, x as MarkdownMathBlockNode, y as MarkdownListMarkerType } from "../ast-DbjiuYr8.cjs";
2
+ export { MarkdownAutolinkNode, MarkdownBlockNode, MarkdownBlockquoteNode, MarkdownBulletMarker, MarkdownCodeBlockNode, MarkdownCodeSpanNode, MarkdownDocumentNode, MarkdownEmphasisMarker, MarkdownEmphasisNode, MarkdownEntityNode, MarkdownHardBreakNode, MarkdownHeadingNode, MarkdownHeadingStyle, MarkdownHtmlBlockNode, MarkdownImageNode, MarkdownInlineNode, MarkdownLinkNode, MarkdownListItemNode, MarkdownListMarkerType, MarkdownListNode, MarkdownMathBlockNode, MarkdownMathInlineNode, MarkdownNode, MarkdownOrderedListDelimiter, MarkdownParagraphNode, MarkdownPosition, MarkdownRawHtmlNode, MarkdownSoftBreakNode, MarkdownStrikethroughNode, MarkdownStrongNode, MarkdownTableAlignment, MarkdownTableCellNode, MarkdownTableNode, MarkdownTableRowNode, MarkdownTextNode, MarkdownThematicBreakNode, isMarkdownBlockNode, isMarkdownInlineNode };
package/dist/ast/ast.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as MarkdownTableCellNode, C as MarkdownParagraphNode, D as MarkdownStrikethroughNode, E as MarkdownSoftBreakNode, F as isMarkdownBlockNode, I as isMarkdownInlineNode, M as MarkdownTableRowNode, N as MarkdownTextNode, O as MarkdownStrongNode, P as MarkdownThematicBreakNode, S as MarkdownOrderedListDelimiter, T as MarkdownRawHtmlNode, _ as MarkdownLinkNode, a as MarkdownCodeBlockNode, b as MarkdownListNode, c as MarkdownEmphasisMarker, d as MarkdownHardBreakNode, f as MarkdownHeadingNode, g as MarkdownInlineNode, h as MarkdownImageNode, i as MarkdownBulletMarker, j as MarkdownTableNode, k as MarkdownTableAlignment, l as MarkdownEmphasisNode, m as MarkdownHtmlBlockNode, n as MarkdownBlockNode, o as MarkdownCodeSpanNode, p as MarkdownHeadingStyle, r as MarkdownBlockquoteNode, s as MarkdownDocumentNode, t as MarkdownAutolinkNode, u as MarkdownEntityNode, v as MarkdownListItemNode, w as MarkdownPosition, x as MarkdownNode, y as MarkdownListMarkerType } from "../ast-BXYwy08e.js";
2
- export { MarkdownAutolinkNode, MarkdownBlockNode, MarkdownBlockquoteNode, MarkdownBulletMarker, MarkdownCodeBlockNode, MarkdownCodeSpanNode, MarkdownDocumentNode, MarkdownEmphasisMarker, MarkdownEmphasisNode, MarkdownEntityNode, MarkdownHardBreakNode, MarkdownHeadingNode, MarkdownHeadingStyle, MarkdownHtmlBlockNode, MarkdownImageNode, MarkdownInlineNode, MarkdownLinkNode, MarkdownListItemNode, MarkdownListMarkerType, MarkdownListNode, MarkdownNode, MarkdownOrderedListDelimiter, MarkdownParagraphNode, MarkdownPosition, MarkdownRawHtmlNode, MarkdownSoftBreakNode, MarkdownStrikethroughNode, MarkdownStrongNode, MarkdownTableAlignment, MarkdownTableCellNode, MarkdownTableNode, MarkdownTableRowNode, MarkdownTextNode, MarkdownThematicBreakNode, isMarkdownBlockNode, isMarkdownInlineNode };
1
+ import { A as MarkdownStrongNode, C as MarkdownNode, D as MarkdownRawHtmlNode, E as MarkdownPosition, F as MarkdownTextNode, I as MarkdownThematicBreakNode, L as isMarkdownBlockNode, M as MarkdownTableCellNode, N as MarkdownTableNode, O as MarkdownSoftBreakNode, P as MarkdownTableRowNode, R as isMarkdownInlineNode, S as MarkdownMathInlineNode, T as MarkdownParagraphNode, _ as MarkdownLinkNode, a as MarkdownCodeBlockNode, b as MarkdownListNode, c as MarkdownEmphasisMarker, d as MarkdownHardBreakNode, f as MarkdownHeadingNode, g as MarkdownInlineNode, h as MarkdownImageNode, i as MarkdownBulletMarker, j as MarkdownTableAlignment, k as MarkdownStrikethroughNode, l as MarkdownEmphasisNode, m as MarkdownHtmlBlockNode, n as MarkdownBlockNode, o as MarkdownCodeSpanNode, p as MarkdownHeadingStyle, r as MarkdownBlockquoteNode, s as MarkdownDocumentNode, t as MarkdownAutolinkNode, u as MarkdownEntityNode, v as MarkdownListItemNode, w as MarkdownOrderedListDelimiter, x as MarkdownMathBlockNode, y as MarkdownListMarkerType } from "../ast-DbjiuYr8.js";
2
+ export { MarkdownAutolinkNode, MarkdownBlockNode, MarkdownBlockquoteNode, MarkdownBulletMarker, MarkdownCodeBlockNode, MarkdownCodeSpanNode, MarkdownDocumentNode, MarkdownEmphasisMarker, MarkdownEmphasisNode, MarkdownEntityNode, MarkdownHardBreakNode, MarkdownHeadingNode, MarkdownHeadingStyle, MarkdownHtmlBlockNode, MarkdownImageNode, MarkdownInlineNode, MarkdownLinkNode, MarkdownListItemNode, MarkdownListMarkerType, MarkdownListNode, MarkdownMathBlockNode, MarkdownMathInlineNode, MarkdownNode, MarkdownOrderedListDelimiter, MarkdownParagraphNode, MarkdownPosition, MarkdownRawHtmlNode, MarkdownSoftBreakNode, MarkdownStrikethroughNode, MarkdownStrongNode, MarkdownTableAlignment, MarkdownTableCellNode, MarkdownTableNode, MarkdownTableRowNode, MarkdownTextNode, MarkdownThematicBreakNode, isMarkdownBlockNode, isMarkdownInlineNode };
package/dist/ast/ast.js CHANGED
@@ -11,7 +11,8 @@ const BLOCK_NODE_TYPES = /* @__PURE__ */ new Set([
11
11
  "htmlBlock",
12
12
  "table",
13
13
  "tableRow",
14
- "tableCell"
14
+ "tableCell",
15
+ "mathBlock"
15
16
  ]);
16
17
  function isMarkdownBlockNode(node) {
17
18
  return BLOCK_NODE_TYPES.has(node.type);
@@ -6,7 +6,7 @@ interface MarkdownPosition {
6
6
  readonly endColumn: number;
7
7
  }
8
8
  type MarkdownNode = MarkdownBlockNode | MarkdownInlineNode;
9
- type MarkdownBlockNode = MarkdownDocumentNode | MarkdownParagraphNode | MarkdownHeadingNode | MarkdownBlockquoteNode | MarkdownListNode | MarkdownListItemNode | MarkdownCodeBlockNode | MarkdownThematicBreakNode | MarkdownHtmlBlockNode | MarkdownTableNode | MarkdownTableRowNode | MarkdownTableCellNode;
9
+ type MarkdownBlockNode = MarkdownDocumentNode | MarkdownParagraphNode | MarkdownHeadingNode | MarkdownBlockquoteNode | MarkdownListNode | MarkdownListItemNode | MarkdownCodeBlockNode | MarkdownThematicBreakNode | MarkdownHtmlBlockNode | MarkdownTableNode | MarkdownTableRowNode | MarkdownTableCellNode | MarkdownMathBlockNode;
10
10
  interface MarkdownDocumentNode {
11
11
  readonly type: 'document';
12
12
  readonly children: MarkdownBlockNode[];
@@ -84,7 +84,12 @@ interface MarkdownTableCellNode {
84
84
  readonly children: MarkdownInlineNode[];
85
85
  readonly position?: MarkdownPosition;
86
86
  }
87
- type MarkdownInlineNode = MarkdownTextNode | MarkdownEmphasisNode | MarkdownStrongNode | MarkdownStrikethroughNode | MarkdownCodeSpanNode | MarkdownLinkNode | MarkdownImageNode | MarkdownAutolinkNode | MarkdownHardBreakNode | MarkdownSoftBreakNode | MarkdownRawHtmlNode | MarkdownEntityNode;
87
+ interface MarkdownMathBlockNode {
88
+ readonly type: 'mathBlock';
89
+ readonly literal: string;
90
+ readonly position?: MarkdownPosition;
91
+ }
92
+ type MarkdownInlineNode = MarkdownTextNode | MarkdownEmphasisNode | MarkdownStrongNode | MarkdownStrikethroughNode | MarkdownCodeSpanNode | MarkdownLinkNode | MarkdownImageNode | MarkdownAutolinkNode | MarkdownHardBreakNode | MarkdownSoftBreakNode | MarkdownRawHtmlNode | MarkdownEntityNode | MarkdownMathInlineNode;
88
93
  type MarkdownEmphasisMarker = '_' | '*';
89
94
  interface MarkdownTextNode {
90
95
  readonly type: 'text';
@@ -154,7 +159,12 @@ interface MarkdownEntityNode {
154
159
  readonly value: string;
155
160
  readonly position?: MarkdownPosition;
156
161
  }
162
+ interface MarkdownMathInlineNode {
163
+ readonly type: 'mathInline';
164
+ readonly literal: string;
165
+ readonly position?: MarkdownPosition;
166
+ }
157
167
  declare function isMarkdownBlockNode(node: MarkdownNode): node is MarkdownBlockNode;
158
168
  declare function isMarkdownInlineNode(node: MarkdownNode): node is MarkdownInlineNode;
159
169
  //#endregion
160
- export { MarkdownTableCellNode as A, MarkdownParagraphNode as C, MarkdownStrikethroughNode as D, MarkdownSoftBreakNode as E, isMarkdownBlockNode as F, isMarkdownInlineNode as I, MarkdownTableRowNode as M, MarkdownTextNode as N, MarkdownStrongNode as O, MarkdownThematicBreakNode as P, MarkdownOrderedListDelimiter as S, MarkdownRawHtmlNode as T, MarkdownLinkNode as _, MarkdownCodeBlockNode as a, MarkdownListNode as b, MarkdownEmphasisMarker as c, MarkdownHardBreakNode as d, MarkdownHeadingNode as f, MarkdownInlineNode as g, MarkdownImageNode as h, MarkdownBulletMarker as i, MarkdownTableNode as j, MarkdownTableAlignment as k, MarkdownEmphasisNode as l, MarkdownHtmlBlockNode as m, MarkdownBlockNode as n, MarkdownCodeSpanNode as o, MarkdownHeadingStyle as p, MarkdownBlockquoteNode as r, MarkdownDocumentNode as s, MarkdownAutolinkNode as t, MarkdownEntityNode as u, MarkdownListItemNode as v, MarkdownPosition as w, MarkdownNode as x, MarkdownListMarkerType as y };
170
+ export { MarkdownStrongNode as A, MarkdownNode as C, MarkdownRawHtmlNode as D, MarkdownPosition as E, MarkdownTextNode as F, MarkdownThematicBreakNode as I, isMarkdownBlockNode as L, MarkdownTableCellNode as M, MarkdownTableNode as N, MarkdownSoftBreakNode as O, MarkdownTableRowNode as P, isMarkdownInlineNode as R, MarkdownMathInlineNode as S, MarkdownParagraphNode as T, MarkdownLinkNode as _, MarkdownCodeBlockNode as a, MarkdownListNode as b, MarkdownEmphasisMarker as c, MarkdownHardBreakNode as d, MarkdownHeadingNode as f, MarkdownInlineNode as g, MarkdownImageNode as h, MarkdownBulletMarker as i, MarkdownTableAlignment as j, MarkdownStrikethroughNode as k, MarkdownEmphasisNode as l, MarkdownHtmlBlockNode as m, MarkdownBlockNode as n, MarkdownCodeSpanNode as o, MarkdownHeadingStyle as p, MarkdownBlockquoteNode as r, MarkdownDocumentNode as s, MarkdownAutolinkNode as t, MarkdownEntityNode as u, MarkdownListItemNode as v, MarkdownOrderedListDelimiter as w, MarkdownMathBlockNode as x, MarkdownListMarkerType as y };
@@ -6,7 +6,7 @@ interface MarkdownPosition {
6
6
  readonly endColumn: number;
7
7
  }
8
8
  type MarkdownNode = MarkdownBlockNode | MarkdownInlineNode;
9
- type MarkdownBlockNode = MarkdownDocumentNode | MarkdownParagraphNode | MarkdownHeadingNode | MarkdownBlockquoteNode | MarkdownListNode | MarkdownListItemNode | MarkdownCodeBlockNode | MarkdownThematicBreakNode | MarkdownHtmlBlockNode | MarkdownTableNode | MarkdownTableRowNode | MarkdownTableCellNode;
9
+ type MarkdownBlockNode = MarkdownDocumentNode | MarkdownParagraphNode | MarkdownHeadingNode | MarkdownBlockquoteNode | MarkdownListNode | MarkdownListItemNode | MarkdownCodeBlockNode | MarkdownThematicBreakNode | MarkdownHtmlBlockNode | MarkdownTableNode | MarkdownTableRowNode | MarkdownTableCellNode | MarkdownMathBlockNode;
10
10
  interface MarkdownDocumentNode {
11
11
  readonly type: 'document';
12
12
  readonly children: MarkdownBlockNode[];
@@ -84,7 +84,12 @@ interface MarkdownTableCellNode {
84
84
  readonly children: MarkdownInlineNode[];
85
85
  readonly position?: MarkdownPosition;
86
86
  }
87
- type MarkdownInlineNode = MarkdownTextNode | MarkdownEmphasisNode | MarkdownStrongNode | MarkdownStrikethroughNode | MarkdownCodeSpanNode | MarkdownLinkNode | MarkdownImageNode | MarkdownAutolinkNode | MarkdownHardBreakNode | MarkdownSoftBreakNode | MarkdownRawHtmlNode | MarkdownEntityNode;
87
+ interface MarkdownMathBlockNode {
88
+ readonly type: 'mathBlock';
89
+ readonly literal: string;
90
+ readonly position?: MarkdownPosition;
91
+ }
92
+ type MarkdownInlineNode = MarkdownTextNode | MarkdownEmphasisNode | MarkdownStrongNode | MarkdownStrikethroughNode | MarkdownCodeSpanNode | MarkdownLinkNode | MarkdownImageNode | MarkdownAutolinkNode | MarkdownHardBreakNode | MarkdownSoftBreakNode | MarkdownRawHtmlNode | MarkdownEntityNode | MarkdownMathInlineNode;
88
93
  type MarkdownEmphasisMarker = '_' | '*';
89
94
  interface MarkdownTextNode {
90
95
  readonly type: 'text';
@@ -154,7 +159,12 @@ interface MarkdownEntityNode {
154
159
  readonly value: string;
155
160
  readonly position?: MarkdownPosition;
156
161
  }
162
+ interface MarkdownMathInlineNode {
163
+ readonly type: 'mathInline';
164
+ readonly literal: string;
165
+ readonly position?: MarkdownPosition;
166
+ }
157
167
  declare function isMarkdownBlockNode(node: MarkdownNode): node is MarkdownBlockNode;
158
168
  declare function isMarkdownInlineNode(node: MarkdownNode): node is MarkdownInlineNode;
159
169
  //#endregion
160
- export { MarkdownTableCellNode as A, MarkdownParagraphNode as C, MarkdownStrikethroughNode as D, MarkdownSoftBreakNode as E, isMarkdownBlockNode as F, isMarkdownInlineNode as I, MarkdownTableRowNode as M, MarkdownTextNode as N, MarkdownStrongNode as O, MarkdownThematicBreakNode as P, MarkdownOrderedListDelimiter as S, MarkdownRawHtmlNode as T, MarkdownLinkNode as _, MarkdownCodeBlockNode as a, MarkdownListNode as b, MarkdownEmphasisMarker as c, MarkdownHardBreakNode as d, MarkdownHeadingNode as f, MarkdownInlineNode as g, MarkdownImageNode as h, MarkdownBulletMarker as i, MarkdownTableNode as j, MarkdownTableAlignment as k, MarkdownEmphasisNode as l, MarkdownHtmlBlockNode as m, MarkdownBlockNode as n, MarkdownCodeSpanNode as o, MarkdownHeadingStyle as p, MarkdownBlockquoteNode as r, MarkdownDocumentNode as s, MarkdownAutolinkNode as t, MarkdownEntityNode as u, MarkdownListItemNode as v, MarkdownPosition as w, MarkdownNode as x, MarkdownListMarkerType as y };
170
+ export { MarkdownStrongNode as A, MarkdownNode as C, MarkdownRawHtmlNode as D, MarkdownPosition as E, MarkdownTextNode as F, MarkdownThematicBreakNode as I, isMarkdownBlockNode as L, MarkdownTableCellNode as M, MarkdownTableNode as N, MarkdownSoftBreakNode as O, MarkdownTableRowNode as P, isMarkdownInlineNode as R, MarkdownMathInlineNode as S, MarkdownParagraphNode as T, MarkdownLinkNode as _, MarkdownCodeBlockNode as a, MarkdownListNode as b, MarkdownEmphasisMarker as c, MarkdownHardBreakNode as d, MarkdownHeadingNode as f, MarkdownInlineNode as g, MarkdownImageNode as h, MarkdownBulletMarker as i, MarkdownTableAlignment as j, MarkdownStrikethroughNode as k, MarkdownEmphasisNode as l, MarkdownHtmlBlockNode as m, MarkdownBlockNode as n, MarkdownCodeSpanNode as o, MarkdownHeadingStyle as p, MarkdownBlockquoteNode as r, MarkdownDocumentNode as s, MarkdownAutolinkNode as t, MarkdownEntityNode as u, MarkdownListItemNode as v, MarkdownOrderedListDelimiter as w, MarkdownMathBlockNode as x, MarkdownListMarkerType as y };
@@ -14,12 +14,14 @@ const TASK_LIST_MARKER_PATTERN = /^\[([ xX])\][ \t]/;
14
14
  const NUL_REPLACEMENT = "�";
15
15
  const NUL_PATTERN = /\0/g;
16
16
  const LINE_ENDING_PATTERN = /\r\n|\n|\r/;
17
- const MAYBE_SPECIAL_PATTERN = /^[#`~*+_=<>0-9|:-]/;
17
+ const MAYBE_SPECIAL_PATTERN = /^[#$`~*+_=<>0-9|:-]/;
18
18
  const ATX_MARKER_PATTERN = /^#{1,6}(?:[ \t]+|$)/;
19
19
  const ATX_ONLY_CLOSING_SEQUENCE_PATTERN = /^[ \t]*#+[ \t]*$/;
20
20
  const ATX_TRAILING_CLOSING_SEQUENCE_PATTERN = /[ \t]+#+[ \t]*$/;
21
21
  const CODE_FENCE_PATTERN = /^`{3,}(?!.*`)|^~{3,}/;
22
22
  const CLOSING_CODE_FENCE_PATTERN = /^(?:`{3,}|~{3,})(?=[ \t]*$)/;
23
+ const MATH_BLOCK_MARKER_PATTERN = /^\$\$[ \t]*$/;
24
+ const MATH_BLOCK_MARKER_LENGTH = 2;
23
25
  const SETEXT_UNDERLINE_PATTERN = /^(?:=+|-+)[ \t]*$/;
24
26
  const THEMATIC_BREAK_PATTERN = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/;
25
27
  const BLANK_CONTENT_PATTERN = /^[ \t\n]*$/;
@@ -83,10 +85,19 @@ var BlockParser = class {
83
85
  });
84
86
  return;
85
87
  }
86
- if (node.kind === "htmlBlock" && !HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType)) this.sink({
87
- code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.UNTERMINATED_HTML_BLOCK,
88
+ if (node.kind === "htmlBlock" && !HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType)) {
89
+ this.sink({
90
+ code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.UNTERMINATED_HTML_BLOCK,
91
+ severity: "warning",
92
+ message: `HTML block (type ${String(node.htmlBlockType)}) starting at line ${String(node.startLine)} never met its own end condition before the end of the document`,
93
+ line: node.startLine
94
+ });
95
+ return;
96
+ }
97
+ if (node.kind === "mathBlock") this.sink({
98
+ code: require_diagnostics_diagnostics.MarkdownDiagnosticCodes.UNCLOSED_MATH_BLOCK,
88
99
  severity: "warning",
89
- message: `HTML block (type ${String(node.htmlBlockType)}) starting at line ${String(node.startLine)} never met its own end condition before the end of the document`,
100
+ message: `math block starting at line ${String(node.startLine)} was never closed by a matching closing $$ before the end of the document`,
90
101
  line: node.startLine
91
102
  });
92
103
  }
@@ -119,6 +130,7 @@ var BlockParser = class {
119
130
  case "blockquote": return this.continueBlockquote();
120
131
  case "listItem": return this.continueListItem(node);
121
132
  case "codeBlock": return this.continueCodeBlock(node);
133
+ case "mathBlock": return this.continueMathBlock(node);
122
134
  case "htmlBlock": return this.line.blank && HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType) ? "not-matched" : "matched";
123
135
  case "paragraph":
124
136
  case "table": return this.line.blank ? "not-matched" : "matched";
@@ -172,6 +184,13 @@ var BlockParser = class {
172
184
  for (let remaining = node.fenceOffset; remaining > 0 && this.line.peek() === " "; remaining -= 1) this.line.advance(1);
173
185
  return "matched";
174
186
  }
187
+ continueMathBlock(node) {
188
+ if (!this.line.indented && MATH_BLOCK_MARKER_PATTERN.test(this.line.restFromNextNonspace())) {
189
+ this.finalize(node);
190
+ return "finished";
191
+ }
192
+ return "matched";
193
+ }
175
194
  openNewBlocks(matchedContainer) {
176
195
  let container = matchedContainer;
177
196
  let matchedLeaf = container.kind !== "paragraph" && container.kind !== "table" && require_block_node.acceptsLines(container.kind);
@@ -196,6 +215,7 @@ var BlockParser = class {
196
215
  () => this.tryBlockquoteStart(),
197
216
  () => this.tryAtxHeadingStart(),
198
217
  () => this.tryCodeFenceStart(),
218
+ () => this.tryMathBlockStart(),
199
219
  () => this.tryHtmlBlockStart(container),
200
220
  () => this.tryPromoteParagraph(container),
201
221
  () => this.tryThematicBreakStart(),
@@ -244,6 +264,15 @@ var BlockParser = class {
244
264
  this.line.advance(fence.length);
245
265
  return "leaf";
246
266
  }
267
+ tryMathBlockStart() {
268
+ if (this.line.indented) return "none";
269
+ if (!MATH_BLOCK_MARKER_PATTERN.test(this.line.restFromNextNonspace())) return "none";
270
+ this.closeUnmatchedBlocks();
271
+ this.addChild("mathBlock");
272
+ this.line.advanceToNextNonspace();
273
+ this.line.advance(MATH_BLOCK_MARKER_LENGTH);
274
+ return "leaf";
275
+ }
247
276
  tryHtmlBlockStart(container) {
248
277
  if (this.line.indented || this.line.peekNextNonspace() !== "<") return "none";
249
278
  const interruptsParagraph = container.kind === "paragraph" || !this.allClosed && !this.line.blank && this.tip.kind === "paragraph";
@@ -374,6 +403,9 @@ var BlockParser = class {
374
403
  case "codeBlock":
375
404
  this.finalizeCodeBlock(node);
376
405
  return;
406
+ case "mathBlock":
407
+ this.finalizeMathBlock(node);
408
+ return;
377
409
  case "htmlBlock":
378
410
  node.literal = node.content.replace(TRAILING_HTML_BLANK_LINES_PATTERN, "");
379
411
  return;
@@ -392,6 +424,10 @@ var BlockParser = class {
392
424
  node.infoString = require_inline_entity.unescapeString(node.content.slice(0, breakIndex).trim());
393
425
  node.literal = node.content.slice(breakIndex + 1);
394
426
  }
427
+ finalizeMathBlock(node) {
428
+ const breakIndex = node.content.indexOf("\n");
429
+ node.literal = breakIndex === -1 ? "" : node.content.slice(breakIndex + 1);
430
+ }
395
431
  };
396
432
  function toInlineChildren(content, references, options) {
397
433
  return require_inline_inline.parseInlines(content.trim(), references, options);
@@ -501,6 +537,10 @@ function toAstBlock(node, references, options) {
501
537
  literal: node.literal
502
538
  };
503
539
  case "thematicBreak": return { type: "thematicBreak" };
540
+ case "mathBlock": return {
541
+ type: "mathBlock",
542
+ literal: node.literal
543
+ };
504
544
  case "table": return toTableNode(node, references, options);
505
545
  case "document":
506
546
  case "listItem": return;
@@ -1,7 +1,7 @@
1
- import { s as MarkdownDocumentNode } from "../ast-BXYwy08e.cjs";
2
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.cjs";
1
+ import { s as MarkdownDocumentNode } from "../ast-DbjiuYr8.cjs";
2
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.cjs";
3
3
  import { n as LinkReferenceMap } from "../link-Dv4kxVjk.cjs";
4
- import { t as InlineParseOptions } from "../inline-C9YEGDV5.cjs";
4
+ import { t as InlineParseOptions } from "../inline-uVHJ5xzT.cjs";
5
5
  //#region src/block/block.d.ts
6
6
  interface MarkdownParseOptions extends InlineParseOptions {
7
7
  readonly gfmTables?: boolean;
@@ -1,7 +1,7 @@
1
- import { s as MarkdownDocumentNode } from "../ast-BXYwy08e.js";
2
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.js";
1
+ import { s as MarkdownDocumentNode } from "../ast-DbjiuYr8.js";
2
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.js";
3
3
  import { n as LinkReferenceMap } from "../link-Dv4kxVjk.js";
4
- import { t as InlineParseOptions } from "../inline-B50cM6cn.js";
4
+ import { t as InlineParseOptions } from "../inline-TuBQ2TUr.js";
5
5
  //#region src/block/block.d.ts
6
6
  interface MarkdownParseOptions extends InlineParseOptions {
7
7
  readonly gfmTables?: boolean;
@@ -13,12 +13,14 @@ const TASK_LIST_MARKER_PATTERN = /^\[([ xX])\][ \t]/;
13
13
  const NUL_REPLACEMENT = "�";
14
14
  const NUL_PATTERN = /\0/g;
15
15
  const LINE_ENDING_PATTERN = /\r\n|\n|\r/;
16
- const MAYBE_SPECIAL_PATTERN = /^[#`~*+_=<>0-9|:-]/;
16
+ const MAYBE_SPECIAL_PATTERN = /^[#$`~*+_=<>0-9|:-]/;
17
17
  const ATX_MARKER_PATTERN = /^#{1,6}(?:[ \t]+|$)/;
18
18
  const ATX_ONLY_CLOSING_SEQUENCE_PATTERN = /^[ \t]*#+[ \t]*$/;
19
19
  const ATX_TRAILING_CLOSING_SEQUENCE_PATTERN = /[ \t]+#+[ \t]*$/;
20
20
  const CODE_FENCE_PATTERN = /^`{3,}(?!.*`)|^~{3,}/;
21
21
  const CLOSING_CODE_FENCE_PATTERN = /^(?:`{3,}|~{3,})(?=[ \t]*$)/;
22
+ const MATH_BLOCK_MARKER_PATTERN = /^\$\$[ \t]*$/;
23
+ const MATH_BLOCK_MARKER_LENGTH = 2;
22
24
  const SETEXT_UNDERLINE_PATTERN = /^(?:=+|-+)[ \t]*$/;
23
25
  const THEMATIC_BREAK_PATTERN = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/;
24
26
  const BLANK_CONTENT_PATTERN = /^[ \t\n]*$/;
@@ -82,10 +84,19 @@ var BlockParser = class {
82
84
  });
83
85
  return;
84
86
  }
85
- if (node.kind === "htmlBlock" && !HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType)) this.sink({
86
- code: MarkdownDiagnosticCodes.UNTERMINATED_HTML_BLOCK,
87
+ if (node.kind === "htmlBlock" && !HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType)) {
88
+ this.sink({
89
+ code: MarkdownDiagnosticCodes.UNTERMINATED_HTML_BLOCK,
90
+ severity: "warning",
91
+ message: `HTML block (type ${String(node.htmlBlockType)}) starting at line ${String(node.startLine)} never met its own end condition before the end of the document`,
92
+ line: node.startLine
93
+ });
94
+ return;
95
+ }
96
+ if (node.kind === "mathBlock") this.sink({
97
+ code: MarkdownDiagnosticCodes.UNCLOSED_MATH_BLOCK,
87
98
  severity: "warning",
88
- message: `HTML block (type ${String(node.htmlBlockType)}) starting at line ${String(node.startLine)} never met its own end condition before the end of the document`,
99
+ message: `math block starting at line ${String(node.startLine)} was never closed by a matching closing $$ before the end of the document`,
89
100
  line: node.startLine
90
101
  });
91
102
  }
@@ -118,6 +129,7 @@ var BlockParser = class {
118
129
  case "blockquote": return this.continueBlockquote();
119
130
  case "listItem": return this.continueListItem(node);
120
131
  case "codeBlock": return this.continueCodeBlock(node);
132
+ case "mathBlock": return this.continueMathBlock(node);
121
133
  case "htmlBlock": return this.line.blank && HTML_BLOCK_BLANK_LINE_END_TYPES.includes(node.htmlBlockType) ? "not-matched" : "matched";
122
134
  case "paragraph":
123
135
  case "table": return this.line.blank ? "not-matched" : "matched";
@@ -171,6 +183,13 @@ var BlockParser = class {
171
183
  for (let remaining = node.fenceOffset; remaining > 0 && this.line.peek() === " "; remaining -= 1) this.line.advance(1);
172
184
  return "matched";
173
185
  }
186
+ continueMathBlock(node) {
187
+ if (!this.line.indented && MATH_BLOCK_MARKER_PATTERN.test(this.line.restFromNextNonspace())) {
188
+ this.finalize(node);
189
+ return "finished";
190
+ }
191
+ return "matched";
192
+ }
174
193
  openNewBlocks(matchedContainer) {
175
194
  let container = matchedContainer;
176
195
  let matchedLeaf = container.kind !== "paragraph" && container.kind !== "table" && acceptsLines(container.kind);
@@ -195,6 +214,7 @@ var BlockParser = class {
195
214
  () => this.tryBlockquoteStart(),
196
215
  () => this.tryAtxHeadingStart(),
197
216
  () => this.tryCodeFenceStart(),
217
+ () => this.tryMathBlockStart(),
198
218
  () => this.tryHtmlBlockStart(container),
199
219
  () => this.tryPromoteParagraph(container),
200
220
  () => this.tryThematicBreakStart(),
@@ -243,6 +263,15 @@ var BlockParser = class {
243
263
  this.line.advance(fence.length);
244
264
  return "leaf";
245
265
  }
266
+ tryMathBlockStart() {
267
+ if (this.line.indented) return "none";
268
+ if (!MATH_BLOCK_MARKER_PATTERN.test(this.line.restFromNextNonspace())) return "none";
269
+ this.closeUnmatchedBlocks();
270
+ this.addChild("mathBlock");
271
+ this.line.advanceToNextNonspace();
272
+ this.line.advance(MATH_BLOCK_MARKER_LENGTH);
273
+ return "leaf";
274
+ }
246
275
  tryHtmlBlockStart(container) {
247
276
  if (this.line.indented || this.line.peekNextNonspace() !== "<") return "none";
248
277
  const interruptsParagraph = container.kind === "paragraph" || !this.allClosed && !this.line.blank && this.tip.kind === "paragraph";
@@ -373,6 +402,9 @@ var BlockParser = class {
373
402
  case "codeBlock":
374
403
  this.finalizeCodeBlock(node);
375
404
  return;
405
+ case "mathBlock":
406
+ this.finalizeMathBlock(node);
407
+ return;
376
408
  case "htmlBlock":
377
409
  node.literal = node.content.replace(TRAILING_HTML_BLANK_LINES_PATTERN, "");
378
410
  return;
@@ -391,6 +423,10 @@ var BlockParser = class {
391
423
  node.infoString = unescapeString(node.content.slice(0, breakIndex).trim());
392
424
  node.literal = node.content.slice(breakIndex + 1);
393
425
  }
426
+ finalizeMathBlock(node) {
427
+ const breakIndex = node.content.indexOf("\n");
428
+ node.literal = breakIndex === -1 ? "" : node.content.slice(breakIndex + 1);
429
+ }
394
430
  };
395
431
  function toInlineChildren(content, references, options) {
396
432
  return parseInlines(content.trim(), references, options);
@@ -500,6 +536,10 @@ function toAstBlock(node, references, options) {
500
536
  literal: node.literal
501
537
  };
502
538
  case "thematicBreak": return { type: "thematicBreak" };
539
+ case "mathBlock": return {
540
+ type: "mathBlock",
541
+ literal: node.literal
542
+ };
503
543
  case "table": return toTableNode(node, references, options);
504
544
  case "document":
505
545
  case "listItem": return;
@@ -1,4 +1,4 @@
1
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.cjs";
1
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.cjs";
2
2
  import { t as LinkReferenceDefinition } from "../link-Dv4kxVjk.cjs";
3
3
  //#region src/block/definitions.d.ts
4
4
  declare function extractDefinitions(content: string, references: Map<string, LinkReferenceDefinition>, sink?: MarkdownDiagnosticSink, startLine?: number): string;
@@ -1,4 +1,4 @@
1
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.js";
1
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.js";
2
2
  import { t as LinkReferenceDefinition } from "../link-Dv4kxVjk.js";
3
3
  //#region src/block/definitions.d.ts
4
4
  declare function extractDefinitions(content: string, references: Map<string, LinkReferenceDefinition>, sink?: MarkdownDiagnosticSink, startLine?: number): string;
@@ -60,7 +60,7 @@ function canContain(parent, child) {
60
60
  }
61
61
  }
62
62
  function acceptsLines(kind) {
63
- return kind === "paragraph" || kind === "codeBlock" || kind === "htmlBlock" || kind === "table";
63
+ return kind === "paragraph" || kind === "codeBlock" || kind === "htmlBlock" || kind === "table" || kind === "mathBlock";
64
64
  }
65
65
  //#endregion
66
66
  exports.BlockNode = BlockNode;
@@ -1,7 +1,7 @@
1
- import { S as MarkdownOrderedListDelimiter, i as MarkdownBulletMarker, k as MarkdownTableAlignment } from "../ast-BXYwy08e.cjs";
1
+ import { i as MarkdownBulletMarker, j as MarkdownTableAlignment, w as MarkdownOrderedListDelimiter } from "../ast-DbjiuYr8.cjs";
2
2
  import { t as HtmlBlockType } from "../html-bkz2QTuq.cjs";
3
3
  //#region src/block/node.d.ts
4
- type BlockNodeKind = 'document' | 'paragraph' | 'heading' | 'blockquote' | 'list' | 'listItem' | 'codeBlock' | 'htmlBlock' | 'thematicBreak' | 'table';
4
+ type BlockNodeKind = 'document' | 'paragraph' | 'heading' | 'blockquote' | 'list' | 'listItem' | 'codeBlock' | 'htmlBlock' | 'thematicBreak' | 'table' | 'mathBlock';
5
5
  type BlockHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
6
6
  interface ListMarkerData {
7
7
  readonly type: 'bullet' | 'ordered';
@@ -1,7 +1,7 @@
1
- import { S as MarkdownOrderedListDelimiter, i as MarkdownBulletMarker, k as MarkdownTableAlignment } from "../ast-BXYwy08e.js";
1
+ import { i as MarkdownBulletMarker, j as MarkdownTableAlignment, w as MarkdownOrderedListDelimiter } from "../ast-DbjiuYr8.js";
2
2
  import { t as HtmlBlockType } from "../html-bkz2QTuq.js";
3
3
  //#region src/block/node.d.ts
4
- type BlockNodeKind = 'document' | 'paragraph' | 'heading' | 'blockquote' | 'list' | 'listItem' | 'codeBlock' | 'htmlBlock' | 'thematicBreak' | 'table';
4
+ type BlockNodeKind = 'document' | 'paragraph' | 'heading' | 'blockquote' | 'list' | 'listItem' | 'codeBlock' | 'htmlBlock' | 'thematicBreak' | 'table' | 'mathBlock';
5
5
  type BlockHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
6
6
  interface ListMarkerData {
7
7
  readonly type: 'bullet' | 'ordered';
@@ -59,7 +59,7 @@ function canContain(parent, child) {
59
59
  }
60
60
  }
61
61
  function acceptsLines(kind) {
62
- return kind === "paragraph" || kind === "codeBlock" || kind === "htmlBlock" || kind === "table";
62
+ return kind === "paragraph" || kind === "codeBlock" || kind === "htmlBlock" || kind === "table" || kind === "mathBlock";
63
63
  }
64
64
  //#endregion
65
65
  export { BlockNode, acceptsLines, canContain };
@@ -1,4 +1,4 @@
1
- import { k as MarkdownTableAlignment } from "../ast-BXYwy08e.cjs";
1
+ import { j as MarkdownTableAlignment } from "../ast-DbjiuYr8.cjs";
2
2
  //#region src/block/table.d.ts
3
3
  declare function splitTableRow(line: string): string[];
4
4
  declare function parseTableDelimiterRow(line: string): MarkdownTableAlignment[] | undefined;
@@ -1,4 +1,4 @@
1
- import { k as MarkdownTableAlignment } from "../ast-BXYwy08e.js";
1
+ import { j as MarkdownTableAlignment } from "../ast-DbjiuYr8.js";
2
2
  //#region src/block/table.d.ts
3
3
  declare function splitTableRow(line: string): string[];
4
4
  declare function parseTableDelimiterRow(line: string): MarkdownTableAlignment[] | undefined;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const NOOP_MARKDOWN_DIAGNOSTIC_SINK = () => {};
4
4
  const MarkdownDiagnosticCodes = {
5
5
  UNCLOSED_FENCE: "md/unclosed-fence",
6
+ UNCLOSED_MATH_BLOCK: "md/unclosed-math-block",
6
7
  UNTERMINATED_HTML_BLOCK: "md/unterminated-html-block",
7
8
  TABLE_CELL_COUNT_MISMATCH: "md/table-cell-count-mismatch",
8
9
  DUPLICATE_LINK_REFERENCE: "md/duplicate-link-reference",
@@ -17,6 +18,8 @@ const MarkdownDiagnosticCodes = {
17
18
  IMAGE_UNRESOLVED: "md/image-unresolved",
18
19
  RAW_HTML_PRESERVED_AS_TEXT: "md/raw-html-preserved-as-text",
19
20
  RAW_HTML_DROPPED: "md/raw-html-dropped",
21
+ MATH_BLOCK_PRESERVED_AS_TEXT: "md/math-block-preserved-as-text",
22
+ MATH_INLINE_PRESERVED_AS_TEXT: "md/math-inline-preserved-as-text",
20
23
  FRONT_MATTER_KEY_UNMAPPED: "md/front-matter-key-unmapped",
21
24
  HEADING_LEVEL_CLAMPED: "md/heading-level-clamped",
22
25
  ADJACENT_LINKS_MERGED: "md/adjacent-links-merged",
@@ -1,2 +1,2 @@
1
- import { a as MarkdownInputTooLargeError, c as MarkdownParseError, d as NOOP_MARKDOWN_DIAGNOSTIC_SINK, i as MarkdownDiagnosticSink, l as MarkdownUnsupportedDocumentKindError, n as MarkdownDiagnosticCodes, o as MarkdownInvalidUtf8Error, r as MarkdownDiagnosticSeverity, s as MarkdownNestingLimitExceededError, t as MarkdownDiagnostic, u as MarkdownWriteError } from "../diagnostics-DmuWc7d8.cjs";
1
+ import { a as MarkdownInputTooLargeError, c as MarkdownParseError, d as NOOP_MARKDOWN_DIAGNOSTIC_SINK, i as MarkdownDiagnosticSink, l as MarkdownUnsupportedDocumentKindError, n as MarkdownDiagnosticCodes, o as MarkdownInvalidUtf8Error, r as MarkdownDiagnosticSeverity, s as MarkdownNestingLimitExceededError, t as MarkdownDiagnostic, u as MarkdownWriteError } from "../diagnostics-B72W0P_E.cjs";
2
2
  export { MarkdownDiagnostic, MarkdownDiagnosticCodes, MarkdownDiagnosticSeverity, MarkdownDiagnosticSink, MarkdownInputTooLargeError, MarkdownInvalidUtf8Error, MarkdownNestingLimitExceededError, MarkdownParseError, MarkdownUnsupportedDocumentKindError, MarkdownWriteError, NOOP_MARKDOWN_DIAGNOSTIC_SINK };
@@ -1,2 +1,2 @@
1
- import { a as MarkdownInputTooLargeError, c as MarkdownParseError, d as NOOP_MARKDOWN_DIAGNOSTIC_SINK, i as MarkdownDiagnosticSink, l as MarkdownUnsupportedDocumentKindError, n as MarkdownDiagnosticCodes, o as MarkdownInvalidUtf8Error, r as MarkdownDiagnosticSeverity, s as MarkdownNestingLimitExceededError, t as MarkdownDiagnostic, u as MarkdownWriteError } from "../diagnostics-DmuWc7d8.js";
1
+ import { a as MarkdownInputTooLargeError, c as MarkdownParseError, d as NOOP_MARKDOWN_DIAGNOSTIC_SINK, i as MarkdownDiagnosticSink, l as MarkdownUnsupportedDocumentKindError, n as MarkdownDiagnosticCodes, o as MarkdownInvalidUtf8Error, r as MarkdownDiagnosticSeverity, s as MarkdownNestingLimitExceededError, t as MarkdownDiagnostic, u as MarkdownWriteError } from "../diagnostics-B72W0P_E.js";
2
2
  export { MarkdownDiagnostic, MarkdownDiagnosticCodes, MarkdownDiagnosticSeverity, MarkdownDiagnosticSink, MarkdownInputTooLargeError, MarkdownInvalidUtf8Error, MarkdownNestingLimitExceededError, MarkdownParseError, MarkdownUnsupportedDocumentKindError, MarkdownWriteError, NOOP_MARKDOWN_DIAGNOSTIC_SINK };
@@ -2,6 +2,7 @@
2
2
  const NOOP_MARKDOWN_DIAGNOSTIC_SINK = () => {};
3
3
  const MarkdownDiagnosticCodes = {
4
4
  UNCLOSED_FENCE: "md/unclosed-fence",
5
+ UNCLOSED_MATH_BLOCK: "md/unclosed-math-block",
5
6
  UNTERMINATED_HTML_BLOCK: "md/unterminated-html-block",
6
7
  TABLE_CELL_COUNT_MISMATCH: "md/table-cell-count-mismatch",
7
8
  DUPLICATE_LINK_REFERENCE: "md/duplicate-link-reference",
@@ -16,6 +17,8 @@ const MarkdownDiagnosticCodes = {
16
17
  IMAGE_UNRESOLVED: "md/image-unresolved",
17
18
  RAW_HTML_PRESERVED_AS_TEXT: "md/raw-html-preserved-as-text",
18
19
  RAW_HTML_DROPPED: "md/raw-html-dropped",
20
+ MATH_BLOCK_PRESERVED_AS_TEXT: "md/math-block-preserved-as-text",
21
+ MATH_INLINE_PRESERVED_AS_TEXT: "md/math-inline-preserved-as-text",
19
22
  FRONT_MATTER_KEY_UNMAPPED: "md/front-matter-key-unmapped",
20
23
  HEADING_LEVEL_CLAMPED: "md/heading-level-clamped",
21
24
  ADJACENT_LINKS_MERGED: "md/adjacent-links-merged",
@@ -10,6 +10,7 @@ type MarkdownDiagnosticSink = (diagnostic: MarkdownDiagnostic) => void;
10
10
  declare const NOOP_MARKDOWN_DIAGNOSTIC_SINK: MarkdownDiagnosticSink;
11
11
  declare const MarkdownDiagnosticCodes: {
12
12
  readonly UNCLOSED_FENCE: "md/unclosed-fence";
13
+ readonly UNCLOSED_MATH_BLOCK: "md/unclosed-math-block";
13
14
  readonly UNTERMINATED_HTML_BLOCK: "md/unterminated-html-block";
14
15
  readonly TABLE_CELL_COUNT_MISMATCH: "md/table-cell-count-mismatch";
15
16
  readonly DUPLICATE_LINK_REFERENCE: "md/duplicate-link-reference";
@@ -24,6 +25,8 @@ declare const MarkdownDiagnosticCodes: {
24
25
  readonly IMAGE_UNRESOLVED: "md/image-unresolved";
25
26
  readonly RAW_HTML_PRESERVED_AS_TEXT: "md/raw-html-preserved-as-text";
26
27
  readonly RAW_HTML_DROPPED: "md/raw-html-dropped";
28
+ readonly MATH_BLOCK_PRESERVED_AS_TEXT: "md/math-block-preserved-as-text";
29
+ readonly MATH_INLINE_PRESERVED_AS_TEXT: "md/math-inline-preserved-as-text";
27
30
  readonly FRONT_MATTER_KEY_UNMAPPED: "md/front-matter-key-unmapped";
28
31
  readonly HEADING_LEVEL_CLAMPED: "md/heading-level-clamped";
29
32
  readonly ADJACENT_LINKS_MERGED: "md/adjacent-links-merged";
@@ -10,6 +10,7 @@ type MarkdownDiagnosticSink = (diagnostic: MarkdownDiagnostic) => void;
10
10
  declare const NOOP_MARKDOWN_DIAGNOSTIC_SINK: MarkdownDiagnosticSink;
11
11
  declare const MarkdownDiagnosticCodes: {
12
12
  readonly UNCLOSED_FENCE: "md/unclosed-fence";
13
+ readonly UNCLOSED_MATH_BLOCK: "md/unclosed-math-block";
13
14
  readonly UNTERMINATED_HTML_BLOCK: "md/unterminated-html-block";
14
15
  readonly TABLE_CELL_COUNT_MISMATCH: "md/table-cell-count-mismatch";
15
16
  readonly DUPLICATE_LINK_REFERENCE: "md/duplicate-link-reference";
@@ -24,6 +25,8 @@ declare const MarkdownDiagnosticCodes: {
24
25
  readonly IMAGE_UNRESOLVED: "md/image-unresolved";
25
26
  readonly RAW_HTML_PRESERVED_AS_TEXT: "md/raw-html-preserved-as-text";
26
27
  readonly RAW_HTML_DROPPED: "md/raw-html-dropped";
28
+ readonly MATH_BLOCK_PRESERVED_AS_TEXT: "md/math-block-preserved-as-text";
29
+ readonly MATH_INLINE_PRESERVED_AS_TEXT: "md/math-inline-preserved-as-text";
27
30
  readonly FRONT_MATTER_KEY_UNMAPPED: "md/front-matter-key-unmapped";
28
31
  readonly HEADING_LEVEL_CLAMPED: "md/heading-level-clamped";
29
32
  readonly ADJACENT_LINKS_MERGED: "md/adjacent-links-merged";
@@ -34,7 +34,8 @@ const QUOTABLE_STYLE_IDS = /* @__PURE__ */ new Set([
34
34
  require_shared_style_constants.QUOTE_STYLE_ID,
35
35
  require_shared_style_constants.CODE_BLOCK_STYLE_ID,
36
36
  require_shared_style_constants.HORIZONTAL_RULE_STYLE_ID,
37
- require_shared_style_constants.HTML_PREFORMATTED_STYLE_ID
37
+ require_shared_style_constants.HTML_PREFORMATTED_STYLE_ID,
38
+ require_shared_style_constants.MATH_BLOCK_STYLE_ID
38
39
  ]);
39
40
  function isQuotableStyle(styleId) {
40
41
  if (styleId === void 0) return false;
@@ -52,6 +53,7 @@ function renderParagraphBody(paragraph, context) {
52
53
  return literal.length === 0 ? `${fence}\n${fence}` : `${fence}\n${literal}\n${fence}`;
53
54
  }
54
55
  if (paragraph.styleId === "HTMLPreformatted") return paragraph.runs.map((run) => run.text).join("");
56
+ if (paragraph.styleId === "MathBlock") return `$$\n${paragraph.runs.map((run) => run.text).join("")}\n$$`;
55
57
  const headingLevel = paragraph.styleId === void 0 ? void 0 : require_shared_style_constants.parseHeadingStyleId(paragraph.styleId);
56
58
  if (headingLevel !== void 0) {
57
59
  let level = headingLevel;
package/dist/emit/emit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "../defaults/defaults.js";
2
2
  import { MarkdownDiagnosticCodes, MarkdownUnsupportedDocumentKindError, NOOP_MARKDOWN_DIAGNOSTIC_SINK } from "../diagnostics/diagnostics.js";
3
3
  import { parseListNumId } from "../shared/list-id.js";
4
- import { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, QUOTE_STYLE_ID, parseHeadingStyleId } from "../shared/style-constants.js";
4
+ import { CODE_BLOCK_STYLE_ID, HORIZONTAL_RULE_STYLE_ID, HTML_PREFORMATTED_STYLE_ID, MATH_BLOCK_STYLE_ID, QUOTE_STYLE_ID, parseHeadingStyleId } from "../shared/style-constants.js";
5
5
  import { emitFrontMatter } from "./front-matter.js";
6
6
  import { emitRuns } from "./inline.js";
7
7
  import { emitImage } from "./image.js";
@@ -33,7 +33,8 @@ const QUOTABLE_STYLE_IDS = /* @__PURE__ */ new Set([
33
33
  QUOTE_STYLE_ID,
34
34
  CODE_BLOCK_STYLE_ID,
35
35
  HORIZONTAL_RULE_STYLE_ID,
36
- HTML_PREFORMATTED_STYLE_ID
36
+ HTML_PREFORMATTED_STYLE_ID,
37
+ MATH_BLOCK_STYLE_ID
37
38
  ]);
38
39
  function isQuotableStyle(styleId) {
39
40
  if (styleId === void 0) return false;
@@ -51,6 +52,7 @@ function renderParagraphBody(paragraph, context) {
51
52
  return literal.length === 0 ? `${fence}\n${fence}` : `${fence}\n${literal}\n${fence}`;
52
53
  }
53
54
  if (paragraph.styleId === "HTMLPreformatted") return paragraph.runs.map((run) => run.text).join("");
55
+ if (paragraph.styleId === "MathBlock") return `$$\n${paragraph.runs.map((run) => run.text).join("")}\n$$`;
54
56
  const headingLevel = paragraph.styleId === void 0 ? void 0 : parseHeadingStyleId(paragraph.styleId);
55
57
  if (headingLevel !== void 0) {
56
58
  let level = headingLevel;
@@ -11,8 +11,6 @@ const ESCAPE_CHARS = /* @__PURE__ */ new Set([
11
11
  "%",
12
12
  "&",
13
13
  "'",
14
- "(",
15
- ")",
16
14
  "*",
17
15
  "+",
18
16
  ",",
@@ -87,6 +85,7 @@ function renderLeaf(run, context) {
87
85
  });
88
86
  return renderCodeSpan(run.text);
89
87
  }
88
+ if (run.fontFamily === "Cambria Math") return `\\(${run.text}\\)`;
90
89
  return escapeMarkdownText(run.text);
91
90
  }
92
91
  const STYLE_KEYS = [
@@ -136,7 +135,7 @@ function renderNestedStyles(runs, depth, context) {
136
135
  return out;
137
136
  }
138
137
  function isPlainAutolink(run) {
139
- if (run.hyperlink === void 0 || run.hyperlink.length === 0 || run.bold === true || run.italic === true || run.strike === true || run.fontFamily === "Courier New") return false;
138
+ if (run.hyperlink === void 0 || run.hyperlink.length === 0 || run.bold === true || run.italic === true || run.strike === true || run.fontFamily === "Courier New" || run.fontFamily === "Cambria Math") return false;
140
139
  return run.text === run.hyperlink || run.hyperlink === `mailto:${run.text}`;
141
140
  }
142
141
  function escapeLinkDestination(destination) {
@@ -1,4 +1,4 @@
1
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.cjs";
1
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.cjs";
2
2
  import { ContentRun } from "document-schema.js";
3
3
  //#region src/emit/inline.d.ts
4
4
  interface InlineEmitContext {
@@ -1,4 +1,4 @@
1
- import { i as MarkdownDiagnosticSink } from "../diagnostics-DmuWc7d8.js";
1
+ import { i as MarkdownDiagnosticSink } from "../diagnostics-B72W0P_E.js";
2
2
  import { ContentRun } from "document-schema.js";
3
3
  //#region src/emit/inline.d.ts
4
4
  interface InlineEmitContext {