@astryxdesign/core 0.6.1 → 0.6.2-canary.0faf070

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 (166) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/BottomSheet/BottomSheet.d.ts +1 -1
  3. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  4. package/dist/BottomSheet/BottomSheet.js +3 -1
  5. package/dist/BottomSheet/BottomSheetPanel.d.ts +7 -5
  6. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
  7. package/dist/BottomSheet/BottomSheetPanel.js +56 -19
  8. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  9. package/dist/CheckboxInput/CheckboxInput.js +12 -2
  10. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  11. package/dist/Collapsible/Collapsible.js +6 -1
  12. package/dist/DateRangeInput/DateRangeInput.d.ts +3 -0
  13. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  14. package/dist/DateRangeInput/DateRangeInput.js +16 -9
  15. package/dist/Dialog/DialogHeader.d.ts +1 -1
  16. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  17. package/dist/Dialog/DialogHeader.js +10 -7
  18. package/dist/FileInput/FileInput.d.ts.map +1 -1
  19. package/dist/FileInput/FileInput.js +9 -3
  20. package/dist/Kbd/Kbd.d.ts +5 -3
  21. package/dist/Kbd/Kbd.d.ts.map +1 -1
  22. package/dist/Kbd/Kbd.js +36 -42
  23. package/dist/Link/Link.d.ts.map +1 -1
  24. package/dist/Link/Link.js +6 -2
  25. package/dist/Markdown/Markdown.d.ts +10 -2
  26. package/dist/Markdown/Markdown.d.ts.map +1 -1
  27. package/dist/Markdown/Markdown.js +58 -14
  28. package/dist/Markdown/index.d.ts +1 -1
  29. package/dist/Markdown/index.d.ts.map +1 -1
  30. package/dist/Markdown/parser.d.ts +126 -12
  31. package/dist/Markdown/parser.d.ts.map +1 -1
  32. package/dist/Markdown/parser.js +369 -34
  33. package/dist/Markdown/utils.d.ts +1 -1
  34. package/dist/Markdown/utils.d.ts.map +1 -1
  35. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  36. package/dist/PowerSearch/PowerSearchEditPopover.js +46 -30
  37. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  38. package/dist/RadioList/RadioListItem.js +13 -1
  39. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  40. package/dist/SegmentedControl/SegmentedControlItem.js +5 -5
  41. package/dist/SideNav/SideNav.d.ts +2 -1
  42. package/dist/SideNav/SideNav.d.ts.map +1 -1
  43. package/dist/SideNav/SideNav.js +9 -3
  44. package/dist/Slider/Slider.d.ts.map +1 -1
  45. package/dist/Slider/Slider.js +19 -10
  46. package/dist/Spinner/Spinner.d.ts +1 -1
  47. package/dist/Spinner/Spinner.d.ts.map +1 -1
  48. package/dist/Spinner/Spinner.js +23 -15
  49. package/dist/Switch/Switch.d.ts.map +1 -1
  50. package/dist/Switch/Switch.js +11 -0
  51. package/dist/TabList/Tab.d.ts +1 -1
  52. package/dist/TabList/Tab.d.ts.map +1 -1
  53. package/dist/TabList/Tab.js +20 -7
  54. package/dist/ToggleButton/ToggleButton.d.ts +2 -1
  55. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  56. package/dist/ToggleButton/ToggleButton.js +7 -1
  57. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  58. package/dist/Typeahead/BaseTypeahead.js +15 -6
  59. package/dist/astryx.css +13 -2
  60. package/dist/hooks/scrollKeyboardDelegation.d.ts +3 -0
  61. package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -0
  62. package/dist/hooks/scrollKeyboardDelegation.js +146 -0
  63. package/dist/hooks/useScrollableArea.d.ts +6 -2
  64. package/dist/hooks/useScrollableArea.d.ts.map +1 -1
  65. package/dist/hooks/useScrollableArea.js +17 -5
  66. package/dist/utils/interactionOverlay.stylex.d.ts +8 -0
  67. package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
  68. package/dist/utils/interactionOverlay.stylex.js +9 -0
  69. package/locales/en.json +16 -0
  70. package/locales/pseudo.json +12 -0
  71. package/package.json +7 -5
  72. package/scripts/agent-doc-state.mjs +1 -1
  73. package/src/BottomSheet/BottomSheet.doc.mjs +8 -1
  74. package/src/BottomSheet/BottomSheet.spec.md +46 -20
  75. package/src/BottomSheet/BottomSheet.test.tsx +6 -3
  76. package/src/BottomSheet/BottomSheet.tsx +3 -1
  77. package/src/BottomSheet/BottomSheetKeyboard.test.tsx +195 -0
  78. package/src/BottomSheet/BottomSheetPanel.test.tsx +11 -1
  79. package/src/BottomSheet/BottomSheetPanel.tsx +49 -16
  80. package/src/BottomSheet/__tests__/BottomSheetKeyboard.a11y.browser.spec.ts +344 -0
  81. package/src/Button/__tests__/Button.a11y.chromium.spec.ts +17 -1
  82. package/src/Button/__tests__/Button.a11y.known-failures.ts +0 -29
  83. package/src/Button/__tests__/Button.a11y.renders.tsx +9 -2
  84. package/src/Button/__tests__/Button.a11y.states.ts +9 -0
  85. package/src/CheckboxInput/CheckboxInput.doc.mjs +11 -0
  86. package/src/CheckboxInput/CheckboxInput.test.tsx +34 -0
  87. package/src/CheckboxInput/CheckboxInput.tsx +21 -1
  88. package/src/ClickableCard/ClickableCard.test.tsx +102 -5
  89. package/src/Collapsible/Collapsible.doc.mjs +11 -0
  90. package/src/Collapsible/Collapsible.test.tsx +21 -0
  91. package/src/Collapsible/Collapsible.tsx +5 -0
  92. package/src/DateRangeInput/DateRangeInput.doc.mjs +35 -7
  93. package/src/DateRangeInput/DateRangeInput.spec.md +203 -0
  94. package/src/DateRangeInput/DateRangeInput.test.tsx +100 -4
  95. package/src/DateRangeInput/DateRangeInput.tsx +29 -20
  96. package/src/Dialog/Dialog.doc.mjs +3 -0
  97. package/src/Dialog/Dialog.spec.md +1 -1
  98. package/src/Dialog/DialogHeader.doc.mjs +38 -0
  99. package/src/Dialog/DialogHeader.test.tsx +49 -0
  100. package/src/Dialog/DialogHeader.tsx +23 -4
  101. package/src/Dialog/modules/DialogHeader.spec.md +152 -0
  102. package/src/FileInput/FileInput.doc.mjs +2 -0
  103. package/src/FileInput/FileInput.spec.md +199 -0
  104. package/src/FileInput/FileInput.test.tsx +14 -0
  105. package/src/FileInput/FileInput.tsx +13 -3
  106. package/src/Kbd/Kbd.doc.mjs +3 -3
  107. package/src/Kbd/Kbd.test.tsx +57 -1
  108. package/src/Kbd/Kbd.tsx +57 -37
  109. package/src/Link/Link.doc.mjs +11 -0
  110. package/src/Link/Link.test.tsx +24 -0
  111. package/src/Link/Link.tsx +5 -0
  112. package/src/Markdown/Markdown.doc.mjs +167 -42
  113. package/src/Markdown/Markdown.public.test.ts +157 -0
  114. package/src/Markdown/Markdown.spec.md +255 -71
  115. package/src/Markdown/Markdown.test.tsx +107 -3
  116. package/src/Markdown/Markdown.tsx +116 -35
  117. package/src/Markdown/incremental.test.ts +175 -7
  118. package/src/Markdown/index.ts +6 -0
  119. package/src/Markdown/parser.perf.test.ts +3 -1
  120. package/src/Markdown/parser.test.ts +122 -0
  121. package/src/Markdown/parser.ts +609 -81
  122. package/src/Markdown/utils.ts +6 -0
  123. package/src/Outline/Outline.spec.md +1 -1
  124. package/src/Outline/modules/parseOutlineFromMarkdown.spec.md +142 -0
  125. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +150 -1
  126. package/src/PowerSearch/PowerSearchEditPopover.tsx +51 -28
  127. package/src/RadioList/RadioList.doc.mjs +11 -0
  128. package/src/RadioList/RadioList.test.tsx +32 -0
  129. package/src/RadioList/RadioListItem.tsx +25 -1
  130. package/src/ScrollableArea/modules/useScrollableArea.spec.md +50 -22
  131. package/src/SegmentedControl/SegmentedControl.doc.mjs +2 -2
  132. package/src/SegmentedControl/SegmentedControl.test.tsx +31 -0
  133. package/src/SegmentedControl/SegmentedControlItem.tsx +6 -9
  134. package/src/SideNav/SideNav.doc.mjs +1 -1
  135. package/src/SideNav/SideNav.test.tsx +10 -0
  136. package/src/SideNav/SideNav.tsx +14 -2
  137. package/src/Slider/Slider.doc.mjs +27 -0
  138. package/src/Slider/Slider.spec.md +61 -47
  139. package/src/Slider/Slider.test.tsx +146 -0
  140. package/src/Slider/Slider.tsx +37 -13
  141. package/src/Spinner/Spinner.doc.mjs +6 -3
  142. package/src/Spinner/Spinner.test.tsx +37 -0
  143. package/src/Spinner/Spinner.tsx +31 -14
  144. package/src/Switch/Switch.doc.mjs +11 -0
  145. package/src/Switch/Switch.test.tsx +16 -0
  146. package/src/Switch/Switch.tsx +28 -0
  147. package/src/TabList/Tab.tsx +35 -7
  148. package/src/TabList/TabList.doc.mjs +11 -0
  149. package/src/TabList/TabList.test.tsx +66 -0
  150. package/src/TabList/__tests__/Tabs.a11y.known-failures.ts +1 -34
  151. package/src/ToggleButton/ToggleButton.test.tsx +133 -0
  152. package/src/ToggleButton/ToggleButton.tsx +9 -2
  153. package/src/ToggleButton/__tests__/ToggleButton.a11y.chromium.spec.ts +209 -0
  154. package/src/Tokenizer/Tokenizer.spec.md +142 -75
  155. package/src/Typeahead/BaseTypeahead.spec.md +4 -3
  156. package/src/Typeahead/BaseTypeahead.tsx +15 -6
  157. package/src/Typeahead/Typeahead.test.tsx +53 -0
  158. package/src/__tests__/PressedState.a11y.chromium.spec.ts +813 -0
  159. package/src/__tests__/pressState.ts +93 -0
  160. package/src/hooks/scrollKeyboardDelegation.test.ts +155 -0
  161. package/src/hooks/scrollKeyboardDelegation.ts +233 -0
  162. package/src/hooks/useScrollableArea.doc.mjs +15 -3
  163. package/src/hooks/useScrollableArea.test.tsx +59 -1
  164. package/src/hooks/useScrollableArea.ts +34 -10
  165. package/src/theme/derivedVarRegistry.test.ts +6 -4
  166. package/src/utils/interactionOverlay.stylex.ts +20 -0
package/dist/Kbd/Kbd.js CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file Kbd.tsx
7
- * @input Uses React, StyleX, theme tokens
8
- * @output Exports Kbd component and KbdProps
7
+ * @input Uses React, StyleX, theme tokens, shortcut key names and aliases
8
+ * @output Exports Kbd component and KbdProps with canonical shortcut labels
9
9
  * @position Core implementation; renders styled keyboard shortcut indicators
10
10
  *
11
11
  * SYNC: When modified, update:
@@ -35,26 +35,20 @@ const styles = {
35
35
  * Note: `mod` is not in this map — it resolves dynamically via platform
36
36
  * detection inside the component.
37
37
  */
38
- const KEY_DISPLAY = {
39
- ctrl: '\u2303',
40
- // ⌃
41
- alt: '\u2325',
42
- // ⌥
43
- shift: '\u21E7',
44
- // ⇧
45
- enter: '\u21B5',
46
- // ↵
47
- backspace: '\u232B',
48
- // ⌫
49
- escape: 'Esc',
50
- tab: '\u21E5',
51
- // ⇥
52
- up: '\u2191',
53
- down: '\u2193',
54
- left: '\u2190',
55
- right: '\u2192',
56
- plus: '+'
57
- };
38
+ const KEY_DISPLAY = new Map([['ctrl', '\u2303'],
39
+ // ⌃
40
+ ['alt', '\u2325'],
41
+ // ⌥
42
+ ['shift', '\u21E7'],
43
+ // ⇧
44
+ ['enter', '\u21B5'],
45
+ // ↵
46
+ ['backspace', '\u232B'],
47
+ // ⌫
48
+ ['escape', 'Esc'], ['tab', '\u21E5'],
49
+ // ⇥
50
+ ['up', '\u2191'], ['down', '\u2193'], ['left', '\u2190'], ['right', '\u2192'], ['plus', '+']]);
51
+ const KBD_KEY_ALIASES = new Map([['esc', 'escape'], ['return', 'enter']]);
58
52
 
59
53
  /**
60
54
  * Resolves a key name to its display string. Handles the platform-aware
@@ -65,7 +59,7 @@ function getKeyDisplay(key, isMac) {
65
59
  if (key === 'mod') {
66
60
  return isMac ? '\u2318' : 'Ctrl';
67
61
  }
68
- return KEY_DISPLAY[key] ?? key.toUpperCase();
62
+ return KEY_DISPLAY.get(key) ?? key.toUpperCase();
69
63
  }
70
64
 
71
65
  /**
@@ -73,25 +67,12 @@ function getKeyDisplay(key, isMac) {
73
67
  * (⌘, ⇧, ↵, …) that assistive tech cannot announce meaningfully, so the
74
68
  * accessible name for the shortcut is built from these words instead.
75
69
  */
76
- const KEY_LABEL = {
77
- ctrl: 'Control',
78
- alt: 'Alt',
79
- shift: 'Shift',
80
- enter: 'Enter',
81
- backspace: 'Backspace',
82
- escape: 'Escape',
83
- tab: 'Tab',
84
- up: 'Up arrow',
85
- down: 'Down arrow',
86
- left: 'Left arrow',
87
- right: 'Right arrow',
88
- plus: 'Plus'
89
- };
70
+ const KEY_LABEL = new Map([['ctrl', 'Control'], ['alt', 'Alt'], ['shift', 'Shift'], ['enter', 'Enter'], ['backspace', 'Backspace'], ['escape', 'Escape'], ['tab', 'Tab'], ['up', 'Up arrow'], ['down', 'Down arrow'], ['left', 'Left arrow'], ['right', 'Right arrow'], ['plus', 'Plus']]);
90
71
  function getKeyLabel(key, isMac) {
91
72
  if (key === 'mod') {
92
73
  return isMac ? 'Command' : 'Control';
93
74
  }
94
- return KEY_LABEL[key] ?? key.toUpperCase();
75
+ return KEY_LABEL.get(key) ?? key.toUpperCase();
95
76
  }
96
77
  function subscribeToPlatformChanges() {
97
78
  return () => {};
@@ -123,24 +104,37 @@ export function Kbd({
123
104
  ...rest
124
105
  }) {
125
106
  const isMac = useSyncExternalStore(subscribeToPlatformChanges, isApplePlatform, getServerPlatformSnapshot);
126
- const parts = keys.split('+').map(key => key.trim().toLowerCase());
107
+ const keyOccurrences = new Map();
108
+ const parts = keys.split('+').map(key => key.trim().toLowerCase()).map(sourceKey => {
109
+ const occurrence = keyOccurrences.get(sourceKey) ?? 0;
110
+ keyOccurrences.set(sourceKey, occurrence + 1);
111
+ return {
112
+ key: KBD_KEY_ALIASES.get(sourceKey) ?? sourceKey,
113
+ reactKey: `${sourceKey}:${occurrence}`
114
+ };
115
+ });
127
116
 
128
117
  // Screen-reader name: the joined spoken labels (e.g. "Command + K"), since
129
118
  // the visual glyphs below are announced meaninglessly by assistive tech.
130
- const accessibleName = parts.map(key => getKeyLabel(key, isMac)).join(' + ');
119
+ const accessibleName = parts.map(({
120
+ key
121
+ }) => getKeyLabel(key, isMac)).join(' + ');
131
122
  return /*#__PURE__*/_jsx("span", {
132
123
  ...rest,
133
124
  ref: ref,
134
125
  role: "img",
135
126
  "aria-label": accessibleName,
136
127
  ...mergeProps(themeProps('kbd'), stylex.props(styles.wrapper, xstyle), className, style),
137
- children: parts.map(key => /*#__PURE__*/_jsx("kbd", {
128
+ children: parts.map(({
129
+ key,
130
+ reactKey
131
+ }) => /*#__PURE__*/_jsx("kbd", {
138
132
  "aria-hidden": "true",
139
133
  ...{
140
134
  className: "x3nfvp2 x6s0dn4 xl56j7k x16asifk x1grt7ep x7a5moj xx3sua9 x17x4s8c xlxy82 x1q0q8m5 xib2hle xv1l7n4 x9ynric x141an7d x1e4wzip x1ltkj2j x87ps6o"
141
135
  },
142
136
  children: getKeyDisplay(key, isMac)
143
- }, key))
137
+ }, reactKey))
144
138
  });
145
139
  }
146
140
  Kbd.displayName = 'Kbd';
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAmG/C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAC1C,iBAAiB,GAAG,iBAAiB,CACtC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACvD;;;;;OAKG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC;IACnD;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,KAAK,EACL,IAAI,EACJ,YAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,IAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAgB,EAChB,OAAkB,EAClB,QAAY,EACZ,QAAQ,EACR,GAAG,EAAE,YAAY,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAyIX;yBAlKe,IAAI"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/Link/Link.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAoG/C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAC1C,iBAAiB,GAAG,iBAAiB,CACtC;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACvD;;;;;OAKG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC;IACnD;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EACF,KAAK,EACL,IAAI,EACJ,YAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,OAAO,EACP,YAAoB,EACpB,IAAa,EACb,IAAI,EACJ,MAAM,EACN,KAAgB,EAChB,OAAkB,EAClB,QAAY,EACZ,QAAQ,EACR,GAAG,EAAE,YAAY,EACjB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BA6IX;yBAtKe,IAAI"}
package/dist/Link/Link.js CHANGED
@@ -28,6 +28,7 @@ import { computeTargetAndRel } from "./computeTargetAndRel.js";
28
28
  import { useInteractiveRole } from "../hooks/useInteractiveRole.js";
29
29
  import { themeProps } from "../utils/themeProps.js";
30
30
  import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
31
+ import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
31
32
  import { useTranslator } from "../i18n/index.js";
32
33
 
33
34
  /**
@@ -206,7 +207,10 @@ export function Link({
206
207
  disabled: isDisabled,
207
208
  ...mergeProps(themeProps('link', {
208
209
  color
209
- }), focusOutlineProps.focusVisible(styles.base, styles.buttonReset, linkColorStyles[color], hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
210
+ }), focusOutlineProps.focusVisible(styles.base, styles.buttonReset, linkColorStyles[color],
211
+ // The system's pressed overlay behind the text; the hover stays the
212
+ // colour change above, so a press is the one background it paints.
213
+ !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
210
214
  ...props,
211
215
  children: sharedContent
212
216
  });
@@ -241,7 +245,7 @@ export function Link({
241
245
  tabIndex: isDisabled ? -1 : undefined,
242
246
  ...mergeProps(themeProps('link', {
243
247
  color
244
- }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
248
+ }), focusOutlineProps.focusVisible(styles.base, linkColorStyles[color], !isDisabled && interactionOverlayStyles.pressedBackgroundColor, hasUnderline && styles.hasUnderline, isStandalone && styles.standalone, isDisabled && styles.disabled, xstyle), className, style),
245
249
  ...props,
246
250
  children: sharedContent
247
251
  });
@@ -5,7 +5,7 @@ import type { CitationSource } from '../Citation/Citation';
5
5
  /**
6
6
  * A plugin that transforms text patterns into custom React elements
7
7
  * inside Markdown. Applied to parsed text nodes only — code blocks,
8
- * inline code, and other non-prose contexts are unaffected.
8
+ * inline code, math, and other non-prose contexts are unaffected.
9
9
  *
10
10
  * Follows Lexical's TextMatchTransformer architecture:
11
11
  * - `pattern` for initial regex matching
@@ -38,6 +38,14 @@ export interface MarkdownComponents {
38
38
  inlineCode?: React.ComponentType<{
39
39
  children: string;
40
40
  }>;
41
+ /**
42
+ * Renders opt-in `$…$` and `$$…$$` math. Supplying this renderer enables
43
+ * math parsing; Astryx passes the raw expression and does not execute it.
44
+ */
45
+ math?: React.ComponentType<{
46
+ value: string;
47
+ display: 'inline' | 'block';
48
+ }>;
41
49
  citation?: React.ComponentType<{
42
50
  source: CitationSource;
43
51
  number: number;
@@ -125,7 +133,7 @@ export interface MarkdownProps extends BaseProps<HTMLElement> {
125
133
  components?: Partial<MarkdownComponents>;
126
134
  /**
127
135
  * Plugins that transform text patterns into custom React elements.
128
- * Applied to text nodes after parsing — code blocks and inline code
136
+ * Applied to text nodes after parsing — code blocks, inline code, and math
129
137
  * are unaffected. Patterns are matched in order; first match wins
130
138
  * for overlapping ranges.
131
139
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/Markdown/Markdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/Markdown/Markdown.tsx"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file Markdown.tsx
7
- * @input Markdown string, parser AST types
8
- * @output Exports Markdown component and MarkdownProps
7
+ * @input Markdown string, parser AST types, optional custom renderers
8
+ * @output Exports Markdown component, MarkdownProps, and renderer contracts
9
9
  * @position Core implementation; renders markdown as Astryx components
10
10
  */
11
11
  import { useMemo, useRef } from 'react';
@@ -42,7 +42,7 @@ import { useTranslator } from "../i18n/index.js";
42
42
  /**
43
43
  * A plugin that transforms text patterns into custom React elements
44
44
  * inside Markdown. Applied to parsed text nodes only — code blocks,
45
- * inline code, and other non-prose contexts are unaffected.
45
+ * inline code, math, and other non-prose contexts are unaffected.
46
46
  *
47
47
  * Follows Lexical's TextMatchTransformer architecture:
48
48
  * - `pattern` for initial regex matching
@@ -336,6 +336,9 @@ function countInlineTextLength(nodes) {
336
336
  case 'code':
337
337
  len += node.content.length;
338
338
  break;
339
+ case 'math':
340
+ len += node.value.length;
341
+ break;
339
342
  case 'image':
340
343
  len += node.alt.length;
341
344
  break;
@@ -370,6 +373,9 @@ function countBlockTextLength(nodes) {
370
373
  case 'codeblock':
371
374
  len += node.content.length;
372
375
  break;
376
+ case 'math':
377
+ len += node.value.length;
378
+ break;
373
379
  case 'blockquote':
374
380
  len += countBlockTextLength(node.children);
375
381
  break;
@@ -625,6 +631,18 @@ function renderInline(node, index, onLinkClick, cursor, citationCtx, linkCompone
625
631
  }, index);
626
632
  return codeEl;
627
633
  }
634
+ case 'math':
635
+ {
636
+ const MathComp = components?.math;
637
+ if (MathComp == null) {
638
+ return wrapTextWithFade(`$${node.value}$`, cursor, index);
639
+ }
640
+ cursor.offset += node.value.length;
641
+ return /*#__PURE__*/_jsx(MathComp, {
642
+ value: node.value,
643
+ display: "inline"
644
+ }, index);
645
+ }
628
646
  case 'link':
629
647
  {
630
648
  const safeHref = sanitizeUrl(node.href);
@@ -732,6 +750,7 @@ function getElementSpacing(node, density) {
732
750
  case 'paragraph':
733
751
  return compact ? styles.spacingParagraphCompact : styles.spacingParagraphDefault;
734
752
  case 'codeblock':
753
+ case 'math':
735
754
  return compact ? styles.spacingCodeblockCompact : styles.spacingCodeblockDefault;
736
755
  case 'blockquote':
737
756
  return compact ? styles.spacingBlockquoteCompact : styles.spacingBlockquoteDefault;
@@ -851,6 +870,21 @@ function renderBlock(node, index, blockCount, density, headingLevelStart, onLink
851
870
  })
852
871
  }, index);
853
872
  }
873
+ case 'math':
874
+ {
875
+ cursor.offset += node.value.length;
876
+ const MathComp = components?.math;
877
+ if (MathComp == null) {
878
+ return /*#__PURE__*/_jsx("div", {
879
+ role: "paragraph",
880
+ children: `$$${node.value}$$`
881
+ }, index);
882
+ }
883
+ return /*#__PURE__*/_jsx(MathComp, {
884
+ value: node.value,
885
+ display: "block"
886
+ }, index);
887
+ }
854
888
  case 'blockquote':
855
889
  {
856
890
  const BlockquoteComp = components?.blockquote;
@@ -1071,21 +1105,29 @@ export function Markdown({
1071
1105
  const LinkComponent = useLinkComponent();
1072
1106
  // Derive the set of source IDs for the parser (stable across renders when sources don't change)
1073
1107
  const sourceIds = useMemo(() => sources ? new Set(Object.keys(sources)) : undefined, [sources]);
1074
- const parseOptions = useMemo(() => ({
1108
+ const hasMathRenderer = components?.math != null;
1109
+ const legacyParseOptions = useMemo(() => ({
1075
1110
  sourceIds,
1076
1111
  autolink
1077
1112
  }), [sourceIds, autolink]);
1113
+ const mathParseOptions = useMemo(() => ({
1114
+ sourceIds,
1115
+ autolink,
1116
+ math: true
1117
+ }), [sourceIds, autolink]);
1078
1118
 
1079
1119
  // Smooth bursty streamed chunks into a steady character-by-character reveal.
1080
1120
  // When not streaming, the hook returns children unchanged (no-op).
1081
1121
  const smoothedText = useStreamingText(children, isStreaming);
1082
1122
  const incrementalStateRef = useRef(createIncrementalState());
1083
- // Reset incremental cache when the autolink option toggles — cached
1084
- // settled blocks were parsed with the previous setting.
1123
+ // Reset incremental cache when parser-affecting component options toggle —
1124
+ // cached settled blocks were parsed with the previous setting.
1085
1125
  const prevAutolinkRef = useRef(autolink);
1086
- if (prevAutolinkRef.current !== autolink) {
1126
+ const prevMathRef = useRef(hasMathRenderer);
1127
+ if (prevAutolinkRef.current !== autolink || prevMathRef.current !== hasMathRenderer) {
1087
1128
  incrementalStateRef.current = createIncrementalState();
1088
1129
  prevAutolinkRef.current = autolink;
1130
+ prevMathRef.current = hasMathRenderer;
1089
1131
  }
1090
1132
  const blocks = useMemo(() => {
1091
1133
  if (display === 'inline') {
@@ -1096,11 +1138,12 @@ export function Markdown({
1096
1138
  incrementalStateRef.current = createIncrementalState();
1097
1139
  return [];
1098
1140
  }
1099
- const input = trimStreamingArtifacts(smoothedText);
1100
- return parseMarkdownIncremental(input, incrementalStateRef.current, parseOptions);
1141
+ const options = hasMathRenderer ? mathParseOptions : legacyParseOptions;
1142
+ const input = trimStreamingArtifacts(smoothedText, options);
1143
+ return hasMathRenderer ? parseMarkdownIncremental(input, incrementalStateRef.current, mathParseOptions) : parseMarkdownIncremental(input, incrementalStateRef.current, legacyParseOptions);
1101
1144
  }
1102
- return parseMarkdown(children, parseOptions);
1103
- }, [display, smoothedText, children, isStreaming, parseOptions]);
1145
+ return hasMathRenderer ? parseMarkdown(children, mathParseOptions) : parseMarkdown(children, legacyParseOptions);
1146
+ }, [display, smoothedText, children, isStreaming, hasMathRenderer, mathParseOptions, legacyParseOptions]);
1104
1147
 
1105
1148
  // Assign each top-level heading the slug that parseOutlineFromMarkdown
1106
1149
  // would derive for it, so Outline hash links built from the same source
@@ -1126,9 +1169,10 @@ export function Markdown({
1126
1169
  if (display !== 'inline') {
1127
1170
  return [];
1128
1171
  }
1129
- const input = isStreaming ? trimStreamingArtifacts(smoothedText) : children;
1130
- return parseInline(input, parseOptions);
1131
- }, [display, smoothedText, children, isStreaming, parseOptions]);
1172
+ const options = hasMathRenderer ? mathParseOptions : legacyParseOptions;
1173
+ const input = isStreaming ? trimStreamingArtifacts(smoothedText, options) : children;
1174
+ return hasMathRenderer ? parseInline(input, mathParseOptions) : parseInline(input, legacyParseOptions);
1175
+ }, [display, smoothedText, children, isStreaming, hasMathRenderer, mathParseOptions, legacyParseOptions]);
1132
1176
 
1133
1177
  // Track recent boundaries for stacked fade-in animation.
1134
1178
  // The number of spans needed = ceil(animationDuration / tickInterval).
@@ -6,5 +6,5 @@
6
6
  export { Markdown } from './Markdown';
7
7
  export type { MarkdownProps, MarkdownSource, MarkdownComponents, MarkdownInlinePlugin, } from './Markdown';
8
8
  export { parseMarkdown, parseMarkdownIncremental, createIncrementalState, parseInline, } from './parser';
9
- export type { BlockNode, InlineNode, SourceRange, ListItemNode, TableCellNode, TableAlignment, IncrementalState as IncrementalParseState, } from './parser';
9
+ export type { BlockNode, BlockNodeWithMath, MathBlockNode, InlineNode, InlineNodeWithMath, MathInlineNode, SourceRange, ListItemNode, TableCellNode, TableAlignment, ParseOptions, MathParseOptions, IncrementalState as IncrementalParseState, } from './parser';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Markdown/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,IAAI,qBAAqB,GAC1C,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Markdown/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,IAAI,qBAAqB,GAC1C,MAAM,UAAU,CAAC"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * @file parser.ts
3
3
  * @input Markdown string
4
- * @output Array of MarkdownNode AST nodes; heading slug helpers
4
+ * @output Array of MarkdownNode AST nodes, including opt-in math; heading slug
5
+ * helpers
5
6
  * (inlineText, slugify, uniqueSlug) shared by Markdown rendering and
6
7
  * Outline's parseOutlineFromMarkdown
7
8
  * @position Core parser; consumed by Markdown.tsx and Outline
8
9
  */
10
+ /** Nodes returned by default and legacy parser calls. */
9
11
  export type InlineNode = {
10
12
  type: 'text';
11
13
  content: string;
@@ -35,14 +37,49 @@ export type InlineNode = {
35
37
  } | {
36
38
  type: 'break';
37
39
  };
38
- export type BlockNode = BlockNodeKind & {
40
+ /** The additional inline node returned only when parsing with `math: true`. */
41
+ export type MathInlineNode = {
42
+ type: 'math';
43
+ value: string;
44
+ };
45
+ /** Nodes returned by an explicitly math-enabled inline parse. */
46
+ export type InlineNodeWithMath = {
47
+ type: 'text';
48
+ content: string;
49
+ } | {
50
+ type: 'bold';
51
+ children: InlineNodeWithMath[];
52
+ } | {
53
+ type: 'italic';
54
+ children: InlineNodeWithMath[];
55
+ } | {
56
+ type: 'strikethrough';
57
+ children: InlineNodeWithMath[];
58
+ } | {
59
+ type: 'code';
60
+ content: string;
61
+ } | MathInlineNode | {
62
+ type: 'link';
63
+ href: string;
64
+ children: InlineNodeWithMath[];
65
+ } | {
66
+ type: 'image';
67
+ src: string;
68
+ alt: string;
69
+ } | {
70
+ type: 'citation';
71
+ sourceId: string;
72
+ } | {
73
+ type: 'break';
74
+ };
75
+ type BlockMetadata = {
39
76
  /**
40
77
  * Where this block came from in the source, when parsed with the
41
78
  * `sourceRanges` option. Top-level blocks only.
42
79
  */
43
80
  range?: SourceRange;
44
81
  };
45
- type BlockNodeKind = {
82
+ type LegacyBlockNodeKind = {
46
83
  type: 'heading';
47
84
  level: 1 | 2 | 3 | 4 | 5 | 6;
48
85
  children: InlineNode[];
@@ -76,6 +113,49 @@ type BlockNodeKind = {
76
113
  src: string;
77
114
  alt: string;
78
115
  };
116
+ /** Blocks returned by default and legacy parser calls. */
117
+ export type BlockNode = LegacyBlockNodeKind & BlockMetadata;
118
+ /** The additional block returned only when parsing with `math: true`. */
119
+ export type MathBlockNode = {
120
+ type: 'math';
121
+ value: string;
122
+ } & BlockMetadata;
123
+ type MathEnabledBlockNodeKind = {
124
+ type: 'heading';
125
+ level: 1 | 2 | 3 | 4 | 5 | 6;
126
+ children: InlineNodeWithMath[];
127
+ } | {
128
+ type: 'paragraph';
129
+ children: InlineNodeWithMath[];
130
+ } | {
131
+ type: 'codeblock';
132
+ language: string;
133
+ content: string;
134
+ } | MathBlockNode | {
135
+ type: 'blockquote';
136
+ children: BlockNodeWithMath[];
137
+ } | {
138
+ type: 'list';
139
+ ordered: boolean;
140
+ start?: number;
141
+ /** Ordered-list marker delimiter ('.' or ')'). Undefined for bullets. */
142
+ delimiter?: '.' | ')';
143
+ loose?: boolean;
144
+ items: ListItemNodeWithMath[];
145
+ } | {
146
+ type: 'table';
147
+ headers: TableCellNodeWithMath[];
148
+ alignments: TableAlignment[];
149
+ rows: TableCellNodeWithMath[][];
150
+ } | {
151
+ type: 'hr';
152
+ } | {
153
+ type: 'image';
154
+ src: string;
155
+ alt: string;
156
+ };
157
+ /** Blocks returned by an explicitly math-enabled block parse. */
158
+ export type BlockNodeWithMath = MathEnabledBlockNodeKind & BlockMetadata;
79
159
  /**
80
160
  * Where a block sits in the source string handed to `parseMarkdown`:
81
161
  * `source.slice(start, end)` is the block, and `end` excludes the block's
@@ -93,9 +173,16 @@ export type ListItemNode = {
93
173
  checked?: boolean;
94
174
  children: BlockNode[];
95
175
  };
176
+ type ListItemNodeWithMath = {
177
+ checked?: boolean;
178
+ children: BlockNodeWithMath[];
179
+ };
96
180
  export type TableCellNode = {
97
181
  children: InlineNode[];
98
182
  };
183
+ type TableCellNodeWithMath = {
184
+ children: InlineNodeWithMath[];
185
+ };
99
186
  export type TableAlignment = 'left' | 'center' | 'right' | null;
100
187
  /**
101
188
  * Options for the markdown parser entry points.
@@ -104,7 +191,7 @@ export type TableAlignment = 'left' | 'center' | 'right' | null;
104
191
  * `parseMarkdownIncremental` functions also accept the legacy
105
192
  * `ReadonlySet<string>` shape as the second argument.
106
193
  */
107
- export type ParseOptions = {
194
+ type CommonParseOptions = {
108
195
  /** Set of citation source ids — `[id]` / `【id】` markers in this set
109
196
  * become citation nodes instead of plain text / links. */
110
197
  sourceIds?: ReadonlySet<string>;
@@ -131,14 +218,32 @@ export type ParseOptions = {
131
218
  */
132
219
  sourceRanges?: boolean;
133
220
  };
221
+ /** Options for default and legacy parser results. */
222
+ export type ParseOptions = CommonParseOptions & {
223
+ math?: false | undefined;
224
+ };
225
+ /**
226
+ * Options that explicitly parse `$…$` and `$$…$$` into math-enabled result
227
+ * unions. Keeping this separate prevents a legacy `ParseOptions` annotation
228
+ * from silently widening an exhaustive node switch.
229
+ */
230
+ export type MathParseOptions = CommonParseOptions & {
231
+ math: true;
232
+ };
134
233
  export declare function parseInline(text: string, sourceIds?: ReadonlySet<string>): InlineNode[];
234
+ export declare function parseInline(text: string, options: MathParseOptions): InlineNodeWithMath[];
135
235
  export declare function parseInline(text: string, options: ParseOptions): InlineNode[];
136
236
  export declare function parseMarkdown(input: string, sourceIds?: ReadonlySet<string>): BlockNode[];
237
+ export declare function parseMarkdown(input: string, options: MathParseOptions): BlockNodeWithMath[];
137
238
  export declare function parseMarkdown(input: string, options: ParseOptions): BlockNode[];
138
- export interface IncrementalState {
239
+ type IncrementalBlockNode<MathEnabled extends boolean> = MathEnabled extends true ? BlockNodeWithMath : BlockNode;
240
+ declare const incrementalStateMode: unique symbol;
241
+ export interface IncrementalState<MathEnabled extends boolean = false> {
242
+ /** @internal Nominally couples a factory-created cache to its node union. */
243
+ readonly [incrementalStateMode]: MathEnabled;
139
244
  prevInput: string;
140
245
  settledText: string;
141
- settledBlocks: BlockNode[];
246
+ settledBlocks: IncrementalBlockNode<MathEnabled>[];
142
247
  settledUpTo: number;
143
248
  /**
144
249
  * The `autolink` option the cached `settledBlocks` were parsed with.
@@ -147,6 +252,8 @@ export interface IncrementalState {
147
252
  * with newly-arriving content.
148
253
  */
149
254
  autolink?: 'gfm';
255
+ /** Whether the cached settled blocks were parsed with math enabled. */
256
+ math?: MathEnabled;
150
257
  /**
151
258
  * The `sourceRanges` option the cached `settledBlocks` were parsed with.
152
259
  * Flipping it invalidates them the same way `autolink` does: they either
@@ -171,17 +278,23 @@ type IncrementalWork = {
171
278
  /** Block nodes parsed anew this call (settled delta + unsettled tail). */
172
279
  readonly renderedBlocks: number;
173
280
  };
174
- export declare function createIncrementalState(): IncrementalState;
281
+ /**
282
+ * Create an incremental parser cache. Use the `<true>` type argument with
283
+ * `MathParseOptions` so the cache and returned nodes share the math contract.
284
+ */
285
+ export declare function createIncrementalState<MathEnabled extends boolean = false>(): IncrementalState<MathEnabled>;
175
286
  /**
176
287
  * Deterministic work counters for the most recent incremental parse.
177
288
  * @internal Exported from this module for performance regression tests only.
178
289
  */
179
- export declare function getIncrementalParseWork(state: IncrementalState): IncrementalWork;
290
+ export declare function getIncrementalParseWork(state: IncrementalState<boolean>): IncrementalWork;
180
291
  /**
181
292
  * Strip trailing incomplete inline syntax that appears during streaming.
182
293
  * Only affects the tail of the last line — safe to apply to the full string.
183
294
  */
184
- export declare function trimStreamingArtifacts(input: string): string;
295
+ export declare function trimStreamingArtifacts(input: string, options?: {
296
+ math?: boolean;
297
+ }): string;
185
298
  /**
186
299
  * Parse one cumulative snapshot of a streaming Markdown document.
187
300
  *
@@ -193,10 +306,11 @@ export declare function trimStreamingArtifacts(input: string): string;
193
306
  * starts with the settled prefix (a replacement rather than an append),
194
307
  * the cache is discarded and the whole document is re-parsed.
195
308
  */
196
- export declare function parseMarkdownIncremental(input: string, state: IncrementalState, sourceIds?: ReadonlySet<string>): BlockNode[];
197
- export declare function parseMarkdownIncremental(input: string, state: IncrementalState, options: ParseOptions): BlockNode[];
309
+ export declare function parseMarkdownIncremental(input: string, state: IncrementalState<false>, sourceIds?: ReadonlySet<string>): BlockNode[];
310
+ export declare function parseMarkdownIncremental(input: string, state: IncrementalState<true>, options: MathParseOptions): BlockNodeWithMath[];
311
+ export declare function parseMarkdownIncremental(input: string, state: IncrementalState<false>, options: ParseOptions): BlockNode[];
198
312
  /** Flatten inline nodes into their plain text content. */
199
- export declare function inlineText(nodes: InlineNode[]): string;
313
+ export declare function inlineText(nodes: ReadonlyArray<InlineNodeWithMath>): string;
200
314
  /** Turn heading text into a URL-safe slug (lowercase, hyphen-separated). */
201
315
  export declare function slugify(value: string): string;
202
316
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/Markdown/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/Markdown/parser.ts"],"names":[],"mappings":"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"}