react-native-nitro-markdown 0.4.3 → 0.5.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 (91) hide show
  1. package/README.md +351 -22
  2. package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +27 -8
  3. package/cpp/bindings/HybridMarkdownParser.cpp +216 -66
  4. package/cpp/bindings/HybridMarkdownParser.hpp +2 -0
  5. package/ios/HybridMarkdownSession.swift +33 -7
  6. package/lib/commonjs/headless.js +41 -5
  7. package/lib/commonjs/headless.js.map +1 -1
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/markdown-stream.js +107 -13
  10. package/lib/commonjs/markdown-stream.js.map +1 -1
  11. package/lib/commonjs/markdown.js +180 -25
  12. package/lib/commonjs/markdown.js.map +1 -1
  13. package/lib/commonjs/renderers/code.js +1 -0
  14. package/lib/commonjs/renderers/code.js.map +1 -1
  15. package/lib/commonjs/renderers/table.js +116 -24
  16. package/lib/commonjs/renderers/table.js.map +1 -1
  17. package/lib/commonjs/utils/incremental-ast.js +153 -0
  18. package/lib/commonjs/utils/incremental-ast.js.map +1 -0
  19. package/lib/module/headless.js +37 -4
  20. package/lib/module/headless.js.map +1 -1
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/markdown-stream.js +108 -14
  23. package/lib/module/markdown-stream.js.map +1 -1
  24. package/lib/module/markdown.js +182 -27
  25. package/lib/module/markdown.js.map +1 -1
  26. package/lib/module/renderers/code.js +1 -0
  27. package/lib/module/renderers/code.js.map +1 -1
  28. package/lib/module/renderers/table.js +116 -24
  29. package/lib/module/renderers/table.js.map +1 -1
  30. package/lib/module/utils/incremental-ast.js +147 -0
  31. package/lib/module/utils/incremental-ast.js.map +1 -0
  32. package/lib/typescript/commonjs/Markdown.nitro.d.ts +2 -0
  33. package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/headless.d.ts +13 -0
  35. package/lib/typescript/commonjs/headless.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/index.d.ts +2 -0
  37. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/markdown-stream.d.ts +6 -1
  39. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/markdown.d.ts +53 -1
  41. package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/renderers/table.d.ts +1 -1
  44. package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts +5 -2
  46. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/utils/incremental-ast.d.ts +12 -0
  48. package/lib/typescript/commonjs/utils/incremental-ast.d.ts.map +1 -0
  49. package/lib/typescript/module/Markdown.nitro.d.ts +2 -0
  50. package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
  51. package/lib/typescript/module/headless.d.ts +13 -0
  52. package/lib/typescript/module/headless.d.ts.map +1 -1
  53. package/lib/typescript/module/index.d.ts +2 -0
  54. package/lib/typescript/module/index.d.ts.map +1 -1
  55. package/lib/typescript/module/markdown-stream.d.ts +6 -1
  56. package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
  57. package/lib/typescript/module/markdown.d.ts +53 -1
  58. package/lib/typescript/module/markdown.d.ts.map +1 -1
  59. package/lib/typescript/module/renderers/code.d.ts.map +1 -1
  60. package/lib/typescript/module/renderers/table.d.ts +1 -1
  61. package/lib/typescript/module/renderers/table.d.ts.map +1 -1
  62. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts +5 -2
  63. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts.map +1 -1
  64. package/lib/typescript/module/utils/incremental-ast.d.ts +12 -0
  65. package/lib/typescript/module/utils/incremental-ast.d.ts.map +1 -0
  66. package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +2 -0
  67. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  68. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.cpp +18 -6
  69. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +4 -2
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/Func_void_double_double.kt +80 -0
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSessionSpec.kt +11 -3
  72. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.cpp +8 -0
  73. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.hpp +31 -0
  74. package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.hpp +20 -2
  75. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
  76. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec.swift +4 -2
  77. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec_cxx.swift +34 -9
  78. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.cpp +2 -0
  79. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.hpp +2 -0
  80. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.cpp +2 -0
  81. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.hpp +4 -2
  82. package/package.json +4 -3
  83. package/src/Markdown.nitro.ts +2 -0
  84. package/src/headless.ts +42 -4
  85. package/src/index.ts +7 -0
  86. package/src/markdown-stream.tsx +163 -15
  87. package/src/markdown.tsx +339 -24
  88. package/src/renderers/code.tsx +5 -1
  89. package/src/renderers/table.tsx +212 -66
  90. package/src/specs/MarkdownSession.nitro.ts +6 -2
  91. package/src/utils/incremental-ast.ts +224 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useEffect, useMemo, useRef, useReducer, useCallback } from "react";
4
4
  import { View, Text, StyleSheet, ScrollView, Platform } from "react-native";
5
+ import { getTextContent } from "../headless.js";
5
6
  import { useMarkdownContext } from "../MarkdownContext.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
8
  const extractTableData = node => {
@@ -36,10 +37,55 @@ const extractTableData = node => {
36
37
  alignments
37
38
  };
38
39
  };
40
+ const MIN_COLUMN_WIDTH = 60;
41
+ const COLUMN_MEASUREMENT_PADDING = 8;
42
+ const APPROX_CHAR_WIDTH = 7;
43
+ const MAX_ESTIMATED_CHARS = 120;
44
+ const ESTIMATED_WIDTH_STEP = 24;
45
+ const MEASUREMENT_STABILIZE_MS = 140;
46
+ const IS_ACT_TEST_ENVIRONMENT = Reflect.get(globalThis, "IS_REACT_ACT_ENVIRONMENT") === true;
47
+ const SHOULD_DEBOUNCE_MEASUREMENT = !IS_ACT_TEST_ENVIRONMENT;
39
48
  const columnWidthsReducer = (state, action) => {
40
- if (action.type === "SET_WIDTHS") return action.payload;
49
+ if (action.type === "RESET_WIDTHS") {
50
+ if (state.length === action.payload.length && state.every((width, index) => width === action.payload[index])) {
51
+ return state;
52
+ }
53
+ return action.payload;
54
+ }
55
+ if (action.type === "SET_MONOTONIC_WIDTHS") {
56
+ if (state.length !== action.payload.length) {
57
+ return action.payload;
58
+ }
59
+ const merged = action.payload.map((width, index) => Math.max(width, state[index] ?? width));
60
+ if (state.every((width, index) => width === merged[index])) {
61
+ return state;
62
+ }
63
+ return merged;
64
+ }
41
65
  return state;
42
66
  };
67
+ const estimateColumnWidths = (headers, rows, columnCount) => {
68
+ const widths = new Array(columnCount).fill(MIN_COLUMN_WIDTH);
69
+ for (let col = 0; col < columnCount; col++) {
70
+ const headerChars = Math.min(getTextContent(headers[col] ?? {
71
+ type: "text",
72
+ content: ""
73
+ }).trim().length, MAX_ESTIMATED_CHARS);
74
+ let maxChars = headerChars;
75
+ for (let row = 0; row < rows.length; row++) {
76
+ const cell = rows[row][col];
77
+ if (!cell) continue;
78
+ const cellChars = Math.min(getTextContent(cell).trim().length, MAX_ESTIMATED_CHARS);
79
+ if (cellChars > maxChars) {
80
+ maxChars = cellChars;
81
+ }
82
+ }
83
+ const estimatedWidth = maxChars * APPROX_CHAR_WIDTH + COLUMN_MEASUREMENT_PADDING;
84
+ const steppedEstimatedWidth = Math.ceil(estimatedWidth / ESTIMATED_WIDTH_STEP) * ESTIMATED_WIDTH_STEP;
85
+ widths[col] = Math.max(MIN_COLUMN_WIDTH, steppedEstimatedWidth);
86
+ }
87
+ return widths;
88
+ };
43
89
  export const TableRenderer = ({
44
90
  node,
45
91
  Renderer,
@@ -55,10 +101,15 @@ export const TableRenderer = ({
55
101
  } = useMemo(() => extractTableData(node), [node]);
56
102
  const columnCount = headers.length;
57
103
  const styles = useMemo(() => createTableStyles(theme), [theme]);
58
- const [columnWidths, dispatch] = useReducer(columnWidthsReducer, []);
104
+ const estimatedColumnWidths = useMemo(() => estimateColumnWidths(headers, rows, columnCount), [headers, rows, columnCount]);
105
+ const [columnWidths, dispatch] = useReducer(columnWidthsReducer, estimatedColumnWidths);
59
106
  const measuredWidths = useRef(new Map());
60
107
  const measuredCells = useRef(new Set());
61
108
  const widthsCalculated = useRef(false);
109
+ const columnWidthsRef = useRef(columnWidths);
110
+ const lastCellKeySignatureRef = useRef("");
111
+ const measurementTimerRef = useRef(null);
112
+ const [needsMeasurement, setNeedsMeasurement] = useReducer((_previous, nextValue) => nextValue, false);
62
113
  const expectedCellKeys = useMemo(() => {
63
114
  const keys = [];
64
115
  headers.forEach((_, colIndex) => {
@@ -71,17 +122,52 @@ export const TableRenderer = ({
71
122
  });
72
123
  return keys;
73
124
  }, [headers, rows]);
125
+ const expectedCellKeySignature = useMemo(() => expectedCellKeys.join("|"), [expectedCellKeys]);
74
126
  useEffect(() => {
75
- measuredWidths.current.clear();
76
- measuredCells.current.clear();
77
- widthsCalculated.current = false;
78
- dispatch({
79
- type: "SET_WIDTHS",
80
- payload: []
81
- });
82
- }, [expectedCellKeys]);
127
+ columnWidthsRef.current = columnWidths;
128
+ }, [columnWidths]);
129
+ useEffect(() => {
130
+ const structureChanged = lastCellKeySignatureRef.current !== expectedCellKeySignature;
131
+ lastCellKeySignatureRef.current = expectedCellKeySignature;
132
+ if (measurementTimerRef.current) {
133
+ clearTimeout(measurementTimerRef.current);
134
+ measurementTimerRef.current = null;
135
+ }
136
+ if (structureChanged) {
137
+ measuredWidths.current.clear();
138
+ measuredCells.current.clear();
139
+ widthsCalculated.current = false;
140
+ setNeedsMeasurement(false);
141
+ dispatch({
142
+ type: "RESET_WIDTHS",
143
+ payload: estimatedColumnWidths
144
+ });
145
+ } else {
146
+ dispatch({
147
+ type: "SET_MONOTONIC_WIDTHS",
148
+ payload: estimatedColumnWidths
149
+ });
150
+ if (widthsCalculated.current) {
151
+ return;
152
+ }
153
+ }
154
+ if (!SHOULD_DEBOUNCE_MEASUREMENT) {
155
+ setNeedsMeasurement(true);
156
+ return;
157
+ }
158
+ measurementTimerRef.current = setTimeout(() => {
159
+ measurementTimerRef.current = null;
160
+ setNeedsMeasurement(true);
161
+ }, MEASUREMENT_STABILIZE_MS);
162
+ return () => {
163
+ if (measurementTimerRef.current) {
164
+ clearTimeout(measurementTimerRef.current);
165
+ measurementTimerRef.current = null;
166
+ }
167
+ };
168
+ }, [estimatedColumnWidths, expectedCellKeySignature]);
83
169
  const onCellLayout = useCallback((cellKey, width) => {
84
- if (widthsCalculated.current) return;
170
+ if (width <= 0 || widthsCalculated.current || !needsMeasurement) return;
85
171
  measuredWidths.current.set(cellKey, width);
86
172
  if (!measuredCells.current.has(cellKey)) {
87
173
  measuredCells.current.add(cellKey);
@@ -89,7 +175,7 @@ export const TableRenderer = ({
89
175
  if (measuredCells.current.size < expectedCellKeys.length) return;
90
176
  const allCellsMeasured = expectedCellKeys.every(key => measuredCells.current.has(key));
91
177
  if (!allCellsMeasured) return;
92
- const maxWidths = new Array(columnCount).fill(0);
178
+ const maxWidths = [...columnWidthsRef.current];
93
179
  for (let col = 0; col < columnCount; col++) {
94
180
  const headerWidth = measuredWidths.current.get(`header-${col}`);
95
181
  if (headerWidth && headerWidth > 0) {
@@ -102,14 +188,15 @@ export const TableRenderer = ({
102
188
  maxWidths[col] = Math.max(maxWidths[col], cellWidth);
103
189
  }
104
190
  }
105
- maxWidths[col] = Math.max(maxWidths[col] + 8, 60);
191
+ maxWidths[col] = Math.max(maxWidths[col] + COLUMN_MEASUREMENT_PADDING, MIN_COLUMN_WIDTH);
106
192
  }
107
193
  widthsCalculated.current = true;
194
+ setNeedsMeasurement(false);
108
195
  dispatch({
109
- type: "SET_WIDTHS",
196
+ type: "RESET_WIDTHS",
110
197
  payload: maxWidths
111
198
  });
112
- }, [columnCount, expectedCellKeys, rows]);
199
+ }, [columnCount, expectedCellKeys, needsMeasurement, rows]);
113
200
  const getAlignment = index => {
114
201
  const align = alignments[index];
115
202
  if (align === "center") return "center";
@@ -118,9 +205,10 @@ export const TableRenderer = ({
118
205
  };
119
206
  if (columnCount === 0) return null;
120
207
  const hasWidths = columnWidths.length === columnCount;
208
+ const resolvedWidths = hasWidths ? columnWidths : estimatedColumnWidths;
121
209
  return /*#__PURE__*/_jsxs(View, {
122
210
  style: [styles.container, style],
123
- children: [!hasWidths && /*#__PURE__*/_jsxs(View, {
211
+ children: [needsMeasurement ? /*#__PURE__*/_jsxs(View, {
124
212
  style: styles.measurementContainer,
125
213
  children: [/*#__PURE__*/_jsx(View, {
126
214
  style: styles.measurementRow,
@@ -149,18 +237,20 @@ export const TableRenderer = ({
149
237
  })
150
238
  }, `measure-cell-${rowIndex}-${colIndex}`))
151
239
  }, `measure-row-${rowIndex}`))]
152
- }), hasWidths ? /*#__PURE__*/_jsx(ScrollView, {
240
+ }) : null, /*#__PURE__*/_jsx(ScrollView, {
153
241
  horizontal: true,
154
242
  showsHorizontalScrollIndicator: true,
155
243
  style: styles.tableScroll,
156
244
  bounces: false,
157
245
  children: /*#__PURE__*/_jsxs(View, {
158
- style: styles.table,
246
+ style: [styles.table, {
247
+ backgroundColor: style?.backgroundColor ?? theme.colors.surface ?? "#111827"
248
+ }],
159
249
  children: [/*#__PURE__*/_jsx(View, {
160
250
  style: styles.headerRow,
161
251
  children: headers.map((cell, colIndex) => /*#__PURE__*/_jsx(View, {
162
252
  style: [styles.headerCell, {
163
- width: columnWidths[colIndex],
253
+ width: resolvedWidths[colIndex] ?? MIN_COLUMN_WIDTH,
164
254
  alignItems: getAlignment(colIndex)
165
255
  }, colIndex === columnCount - 1 && styles.lastCell],
166
256
  children: /*#__PURE__*/_jsx(CellContent, {
@@ -171,10 +261,10 @@ export const TableRenderer = ({
171
261
  })
172
262
  }, `header-${colIndex}`))
173
263
  }), rows.map((row, rowIndex) => /*#__PURE__*/_jsx(View, {
174
- style: [styles.bodyRow, rowIndex === rows.length - 1 && styles.lastRow, rowIndex % 2 === 1 && styles.oddRow],
264
+ style: [styles.bodyRow, rowIndex === rows.length - 1 && styles.lastRow, rowIndex % 2 === 0 ? styles.evenRow : styles.oddRow],
175
265
  children: row.map((cell, colIndex) => /*#__PURE__*/_jsx(View, {
176
266
  style: [styles.bodyCell, {
177
- width: columnWidths[colIndex],
267
+ width: resolvedWidths[colIndex] ?? MIN_COLUMN_WIDTH,
178
268
  alignItems: getAlignment(colIndex)
179
269
  }, colIndex === columnCount - 1 && styles.lastCell],
180
270
  children: /*#__PURE__*/_jsx(CellContent, {
@@ -186,7 +276,7 @@ export const TableRenderer = ({
186
276
  }, `cell-${rowIndex}-${colIndex}`))
187
277
  }, `row-${rowIndex}`))]
188
278
  })
189
- }) : null]
279
+ })]
190
280
  });
191
281
  };
192
282
  const CellContent = ({
@@ -240,8 +330,7 @@ const createTableStyles = theme => {
240
330
  borderRadius: borderRadius.m,
241
331
  overflow: "hidden",
242
332
  borderWidth: 1,
243
- borderColor: colors.tableBorder || "#374151",
244
- backgroundColor: colors.surface || "#111827"
333
+ borderColor: colors.tableBorder || "#374151"
245
334
  },
246
335
  headerRow: {
247
336
  flexDirection: "row",
@@ -254,6 +343,9 @@ const createTableStyles = theme => {
254
343
  borderBottomWidth: 1,
255
344
  borderBottomColor: colors.tableBorder || "#374151"
256
345
  },
346
+ evenRow: {
347
+ backgroundColor: colors.tableRowEven || "transparent"
348
+ },
257
349
  oddRow: {
258
350
  backgroundColor: colors.tableRowOdd || "rgba(255,255,255,0.02)"
259
351
  },
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","useReducer","useCallback","View","Text","StyleSheet","ScrollView","Platform","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","extractTableData","node","headers","rows","alignments","child","children","type","row","cell","push","align","rowCells","columnWidthsReducer","state","action","payload","TableRenderer","Renderer","style","theme","columnCount","length","styles","createTableStyles","columnWidths","dispatch","measuredWidths","Map","measuredCells","Set","widthsCalculated","expectedCellKeys","keys","forEach","_","colIndex","rowIndex","current","clear","onCellLayout","cellKey","width","set","has","add","size","allCellsMeasured","every","key","maxWidths","Array","fill","col","headerWidth","get","Math","max","cellWidth","getAlignment","index","hasWidths","container","measurementContainer","measurementRow","map","measurementCell","onLayout","e","nativeEvent","layout","CellContent","horizontal","showsHorizontalScrollIndicator","tableScroll","bounces","table","headerRow","headerCell","alignItems","lastCell","textStyle","headerText","bodyRow","lastRow","oddRow","bodyCell","cellText","content","cellContentWrapper","idx","depth","inListItem","parentIsText","colors","borderRadius","m","create","marginVertical","spacing","s","position","opacity","pointerEvents","left","flexDirection","paddingVertical","paddingHorizontal","flexGrow","overflow","borderWidth","borderColor","tableBorder","backgroundColor","surface","tableHeader","borderBottomWidth","borderBottomColor","tableRowOdd","flexShrink","minWidth","borderRightWidth","borderRightColor","justifyContent","color","tableHeaderText","fontSize","fontWeight","fontFamily","fontFamilies","regular","OS","includeFontPadding","text","lineHeight","flexWrap"],"sourceRoot":"../../../src","sources":["renderers/table.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useMemo","useRef","useReducer","useCallback","View","Text","StyleSheet","ScrollView","Platform","getTextContent","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","extractTableData","node","headers","rows","alignments","child","children","type","row","cell","push","align","rowCells","MIN_COLUMN_WIDTH","COLUMN_MEASUREMENT_PADDING","APPROX_CHAR_WIDTH","MAX_ESTIMATED_CHARS","ESTIMATED_WIDTH_STEP","MEASUREMENT_STABILIZE_MS","IS_ACT_TEST_ENVIRONMENT","Reflect","get","globalThis","SHOULD_DEBOUNCE_MEASUREMENT","columnWidthsReducer","state","action","length","payload","every","width","index","merged","map","Math","max","estimateColumnWidths","columnCount","widths","Array","fill","col","headerChars","min","content","trim","maxChars","cellChars","estimatedWidth","steppedEstimatedWidth","ceil","TableRenderer","Renderer","style","theme","styles","createTableStyles","estimatedColumnWidths","columnWidths","dispatch","measuredWidths","Map","measuredCells","Set","widthsCalculated","columnWidthsRef","lastCellKeySignatureRef","measurementTimerRef","needsMeasurement","setNeedsMeasurement","_previous","nextValue","expectedCellKeys","keys","forEach","_","colIndex","rowIndex","expectedCellKeySignature","join","current","structureChanged","clearTimeout","clear","setTimeout","onCellLayout","cellKey","set","has","add","size","allCellsMeasured","key","maxWidths","headerWidth","cellWidth","getAlignment","hasWidths","resolvedWidths","container","measurementContainer","measurementRow","measurementCell","onLayout","e","nativeEvent","layout","CellContent","horizontal","showsHorizontalScrollIndicator","tableScroll","bounces","table","backgroundColor","colors","surface","headerRow","headerCell","alignItems","lastCell","textStyle","headerText","bodyRow","lastRow","evenRow","oddRow","bodyCell","cellText","cellContentWrapper","idx","depth","inListItem","parentIsText","borderRadius","m","create","marginVertical","spacing","s","position","opacity","pointerEvents","left","flexDirection","paddingVertical","paddingHorizontal","flexGrow","overflow","borderWidth","borderColor","tableBorder","tableHeader","borderBottomWidth","borderBottomColor","tableRowEven","tableRowOdd","flexShrink","minWidth","borderRightWidth","borderRightColor","justifyContent","color","tableHeaderText","fontSize","fontWeight","fontFamily","fontFamilies","regular","OS","includeFontPadding","text","lineHeight","flexWrap"],"sourceRoot":"../../../src","sources":["renderers/table.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ import { parseMarkdown, parseMarkdownWithOptions } from "../headless.js";
4
+ const PLAIN_TEXT_APPEND_PATTERN = /[`*_~[\]#!<>()|$\n\r]/;
5
+ const FENCE_LINE_PATTERN = /^ {0,3}(```+|~~~+)/;
6
+ const parseAst = (text, options) => {
7
+ if (options) {
8
+ return parseMarkdownWithOptions(text, options);
9
+ }
10
+ return parseMarkdown(text);
11
+ };
12
+ const isInsideFencedCodeBlock = text => {
13
+ const lines = text.split(/\r?\n/);
14
+ let openFenceChar = null;
15
+ let openFenceLength = 0;
16
+ for (const line of lines) {
17
+ const fenceMatch = line.match(FENCE_LINE_PATTERN);
18
+ if (!fenceMatch) continue;
19
+ const marker = fenceMatch[1];
20
+ const markerChar = marker[0];
21
+ const markerLength = marker.length;
22
+ if (!openFenceChar) {
23
+ openFenceChar = markerChar;
24
+ openFenceLength = markerLength;
25
+ continue;
26
+ }
27
+ if (markerChar === openFenceChar && markerLength >= openFenceLength) {
28
+ openFenceChar = null;
29
+ openFenceLength = 0;
30
+ }
31
+ }
32
+ return openFenceChar !== null;
33
+ };
34
+ const containsFenceLine = text => {
35
+ return text.split(/\r?\n/).some(line => FENCE_LINE_PATTERN.test(line));
36
+ };
37
+ const getTrailingLine = text => {
38
+ const lastLineBreak = Math.max(text.lastIndexOf("\n"), text.lastIndexOf("\r"));
39
+ if (lastLineBreak === -1) return text;
40
+ return text.slice(lastLineBreak + 1);
41
+ };
42
+ const getLeadingLine = text => {
43
+ const newlineIndex = text.indexOf("\n");
44
+ const carriageReturnIndex = text.indexOf("\r");
45
+ const hasNewline = newlineIndex !== -1;
46
+ const hasCarriageReturn = carriageReturnIndex !== -1;
47
+ if (!hasNewline && !hasCarriageReturn) return text;
48
+ if (!hasNewline) return text.slice(0, carriageReturnIndex);
49
+ if (!hasCarriageReturn) return text.slice(0, newlineIndex);
50
+ return text.slice(0, Math.min(newlineIndex, carriageReturnIndex));
51
+ };
52
+ const hasSplitFenceBoundary = (previousText, appendedChunk) => {
53
+ if (appendedChunk.length === 0) return false;
54
+ const candidateLine = `${getTrailingLine(previousText)}${getLeadingLine(appendedChunk)}`;
55
+ if (candidateLine.length === 0) return false;
56
+ return FENCE_LINE_PATTERN.test(candidateLine);
57
+ };
58
+ const findTrailingLeafPath = (node, path = []) => {
59
+ const children = node.children;
60
+ if (!children || children.length === 0) {
61
+ return path;
62
+ }
63
+ const lastIndex = children.length - 1;
64
+ return findTrailingLeafPath(children[lastIndex], [...path, lastIndex]);
65
+ };
66
+ const getNodeAtPath = (node, path) => {
67
+ let current = node;
68
+ for (const index of path) {
69
+ const child = current.children?.[index];
70
+ if (!child) return null;
71
+ current = child;
72
+ }
73
+ return current;
74
+ };
75
+ const appendPlainTextToAst = (ast, appendedChunk, previousTextLength) => {
76
+ if (appendedChunk.length === 0) return ast;
77
+ const path = findTrailingLeafPath(ast);
78
+ const leaf = getNodeAtPath(ast, path);
79
+ if (leaf?.type !== "text") return null;
80
+ if (typeof leaf.end !== "number" || leaf.end !== previousTextLength) {
81
+ return null;
82
+ }
83
+ const delta = appendedChunk.length;
84
+ const update = (node, depth) => {
85
+ if (depth === path.length) {
86
+ return {
87
+ ...node,
88
+ content: (node.content ?? "") + appendedChunk,
89
+ end: typeof node.end === "number" ? node.end + delta : node.end
90
+ };
91
+ }
92
+ const childIndex = path[depth];
93
+ const children = node.children?.map((child, index) => index === childIndex ? update(child, depth + 1) : child);
94
+ return {
95
+ ...node,
96
+ end: typeof node.end === "number" ? node.end + delta : node.end,
97
+ children
98
+ };
99
+ };
100
+ return update(ast, 0);
101
+ };
102
+ const endsAtBlockBoundary = text => {
103
+ return text.endsWith("\n") || text.endsWith("\r");
104
+ };
105
+ export const getNextStreamAst = ({
106
+ allowIncremental = true,
107
+ nextText,
108
+ options,
109
+ previousAst,
110
+ previousText
111
+ }) => {
112
+ if (!allowIncremental || !nextText.startsWith(previousText)) {
113
+ return parseAst(nextText, options);
114
+ }
115
+ const appendedChunk = nextText.slice(previousText.length);
116
+ if (appendedChunk.length === 0) {
117
+ return previousAst;
118
+ }
119
+ const insideFencedCodeBlock = isInsideFencedCodeBlock(previousText);
120
+ const hasFenceBoundary = containsFenceLine(appendedChunk) || hasSplitFenceBoundary(previousText, appendedChunk);
121
+ if (insideFencedCodeBlock && !hasFenceBoundary) {
122
+ const fencedTextAppendAst = appendPlainTextToAst(previousAst, appendedChunk, previousText.length);
123
+ if (fencedTextAppendAst) {
124
+ return fencedTextAppendAst;
125
+ }
126
+ }
127
+ if (!PLAIN_TEXT_APPEND_PATTERN.test(appendedChunk)) {
128
+ if (endsAtBlockBoundary(previousText)) {
129
+ return parseAst(nextText, options);
130
+ }
131
+ const textAppendedAst = appendPlainTextToAst(previousAst, appendedChunk, previousText.length);
132
+ if (textAppendedAst) {
133
+ return textAppendedAst;
134
+ }
135
+ }
136
+ if (insideFencedCodeBlock) {
137
+ return parseAst(nextText, options);
138
+ }
139
+
140
+ // Correctness-first fallback: full reparse for all non-trivial appends.
141
+ // Incremental append is only used for plain text chunks at the true trailing leaf.
142
+ return parseAst(nextText, options);
143
+ };
144
+ export const parseMarkdownAst = (text, options) => {
145
+ return parseAst(text, options);
146
+ };
147
+ //# sourceMappingURL=incremental-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["parseMarkdown","parseMarkdownWithOptions","PLAIN_TEXT_APPEND_PATTERN","FENCE_LINE_PATTERN","parseAst","text","options","isInsideFencedCodeBlock","lines","split","openFenceChar","openFenceLength","line","fenceMatch","match","marker","markerChar","markerLength","length","containsFenceLine","some","test","getTrailingLine","lastLineBreak","Math","max","lastIndexOf","slice","getLeadingLine","newlineIndex","indexOf","carriageReturnIndex","hasNewline","hasCarriageReturn","min","hasSplitFenceBoundary","previousText","appendedChunk","candidateLine","findTrailingLeafPath","node","path","children","lastIndex","getNodeAtPath","current","index","child","appendPlainTextToAst","ast","previousTextLength","leaf","type","end","delta","update","depth","content","childIndex","map","endsAtBlockBoundary","endsWith","getNextStreamAst","allowIncremental","nextText","previousAst","startsWith","insideFencedCodeBlock","hasFenceBoundary","fencedTextAppendAst","textAppendedAst","parseMarkdownAst"],"sourceRoot":"../../../src","sources":["utils/incremental-ast.ts"],"mappings":"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","ignoreList":[]}
@@ -9,5 +9,7 @@ export interface MarkdownParser extends HybridObject<{
9
9
  }> {
10
10
  parse(text: string): string;
11
11
  parseWithOptions(text: string, options: ParserOptions): string;
12
+ extractPlainText(text: string): string;
13
+ extractPlainTextWithOptions(text: string, options: ParserOptions): string;
12
14
  }
13
15
  //# sourceMappingURL=Markdown.nitro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.nitro.d.ts","sourceRoot":"","sources":["../../../src/Markdown.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC;IACnD,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;CAChB,CAAC;IACA,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC;CAChE"}
1
+ {"version":3,"file":"Markdown.nitro.d.ts","sourceRoot":"","sources":["../../../src/Markdown.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC;IACnD,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;CAChB,CAAC;IACA,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC;IAC/D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC;CAC3E"}
@@ -29,6 +29,10 @@ export type MarkdownNode = {
29
29
  isHeader?: boolean;
30
30
  /** Text alignment for table cells: 'left', 'center', or 'right'. */
31
31
  align?: string;
32
+ /** Source start offset in original markdown text (when provided by native parser). */
33
+ beg?: number;
34
+ /** Source end offset in original markdown text (when provided by native parser). */
35
+ end?: number;
32
36
  /** Nested child nodes for hierarchical elements like paragraphs, lists, and tables. */
33
37
  children?: MarkdownNode[];
34
38
  };
@@ -46,6 +50,15 @@ export declare function parseMarkdown(text: string): MarkdownNode;
46
50
  * @returns The root node of the parsed AST
47
51
  */
48
52
  export declare function parseMarkdownWithOptions(text: string, options: ParserOptions): MarkdownNode;
53
+ /**
54
+ * Parse markdown and return flattened plain text directly from native parser.
55
+ * Useful for search/indexing flows that don't need full AST rendering.
56
+ */
57
+ export declare function extractPlainText(text: string): string;
58
+ /**
59
+ * Parse markdown with options and return flattened plain text from native parser.
60
+ */
61
+ export declare function extractPlainTextWithOptions(text: string, options: ParserOptions): string;
49
62
  export type { MarkdownParser };
50
63
  /**
51
64
  * Extract text content from a markdown node recursively.
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gBACkC,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAGxD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAGd;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAkDrD,CAAC"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,gBACkC,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAOd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CAMR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAkDrD,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export * from "./headless";
2
2
  export { Markdown } from "./markdown";
3
+ export type { MarkdownProps, AstTransform, MarkdownPlugin, MarkdownVirtualizationOptions, } from "./markdown";
3
4
  export { MarkdownStream } from "./markdown-stream";
5
+ export type { MarkdownStreamProps } from "./markdown-stream";
4
6
  export { useMarkdownContext, MarkdownContext } from "./MarkdownContext";
5
7
  export type { CustomRenderer, CustomRenderers, CustomRendererProps, NodeRendererProps, BaseCustomRendererProps, EnhancedRendererProps, HeadingRendererProps, LinkRendererProps, ImageRendererProps, CodeBlockRendererProps, InlineCodeRendererProps, ListRendererProps, TaskListItemRendererProps, LinkPressHandler, MarkdownContextValue, } from "./MarkdownContext";
6
8
  export { defaultMarkdownTheme, minimalMarkdownTheme, mergeThemes, } from "./theme";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
@@ -22,7 +22,12 @@ export type MarkdownStreamProps = {
22
22
  * Useful when you want to prioritize user interactions over stream renders.
23
23
  */
24
24
  useTransitionUpdates?: boolean;
25
- } & Omit<MarkdownProps, "children">;
25
+ /**
26
+ * Enable incremental AST updates for append-only streams.
27
+ * Automatically falls back to full parse when updates are not safely mergeable.
28
+ */
29
+ incrementalParsing?: boolean;
30
+ } & Omit<MarkdownProps, "children" | "sourceAst">;
26
31
  /**
27
32
  * A component that renders streaming Markdown from a MarkdownSession.
28
33
  * It efficiently subscribes to session updates to minimize parent re-renders.
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-stream.d.ts","sourceRoot":"","sources":["../../../src/markdown-stream.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IACpC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyElD,CAAC"}
1
+ {"version":3,"file":"markdown-stream.d.ts","sourceRoot":"","sources":["../../../src/markdown-stream.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAEf,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA0CrE,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IACpC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAwKlD,CAAC"}