react-native-nitro-markdown 0.5.5 → 0.5.7

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 (35) hide show
  1. package/README.md +32 -8
  2. package/android/src/main/AndroidManifest.xml +1 -4
  3. package/android/src/main/java/com/nitromarkdown/NitroMarkdownPackage.kt +2 -0
  4. package/lib/commonjs/headless.js +38 -15
  5. package/lib/commonjs/headless.js.map +1 -1
  6. package/lib/commonjs/markdown-stream.js.map +1 -1
  7. package/lib/commonjs/markdown.js +4 -0
  8. package/lib/commonjs/markdown.js.map +1 -1
  9. package/lib/commonjs/renderers/math.js +175 -15
  10. package/lib/commonjs/renderers/math.js.map +1 -1
  11. package/lib/commonjs/renderers/paragraph.js +3 -0
  12. package/lib/commonjs/renderers/paragraph.js.map +1 -1
  13. package/lib/module/headless.js +38 -15
  14. package/lib/module/headless.js.map +1 -1
  15. package/lib/module/markdown-stream.js.map +1 -1
  16. package/lib/module/markdown.js +4 -0
  17. package/lib/module/markdown.js.map +1 -1
  18. package/lib/module/renderers/math.js +176 -16
  19. package/lib/module/renderers/math.js.map +1 -1
  20. package/lib/module/renderers/paragraph.js +3 -0
  21. package/lib/module/renderers/paragraph.js.map +1 -1
  22. package/lib/typescript/commonjs/headless.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/markdown-stream.d.ts +2 -1
  24. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
  26. package/lib/typescript/module/headless.d.ts.map +1 -1
  27. package/lib/typescript/module/markdown-stream.d.ts +2 -1
  28. package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
  29. package/lib/typescript/module/renderers/math.d.ts.map +1 -1
  30. package/package.json +7 -2
  31. package/src/headless.ts +44 -9
  32. package/src/markdown-stream.tsx +2 -1
  33. package/src/markdown.tsx +4 -0
  34. package/src/renderers/math.tsx +232 -11
  35. package/src/renderers/paragraph.tsx +3 -0
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { View, Text, StyleSheet, Platform } from "react-native";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import { View, Text, PanResponder, StyleSheet, Platform } from "react-native";
4
5
  import { getCachedStyles } from "./style-cache.js";
5
6
  import { useMarkdownContext } from "../MarkdownContext.js";
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  let MathJaxComponent = null;
9
+ let SvgFromXmlComponent = null;
10
+ let texToSvg = null;
8
11
  try {
9
12
  // eslint-disable-next-line @typescript-eslint/no-require-imports
10
13
  const mathJaxModule = require("react-native-mathjax-svg");
11
14
  MathJaxComponent = mathJaxModule.default || mathJaxModule;
15
+ texToSvg = mathJaxModule.texToSvg ?? null;
16
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
17
+ SvgFromXmlComponent = require("react-native-svg").SvgFromXml;
12
18
  } catch {
13
19
  if (__DEV__) {
14
20
  // eslint-disable-next-line no-console
@@ -16,6 +22,104 @@ try {
16
22
  }
17
23
  }
18
24
  const mathStylesCache = new WeakMap();
25
+ const SVG_WIDTH_PATTERN = /<svg[^>]*\bwidth="([\d.]+)(?:ex|px)"/i;
26
+ const SVG_HEIGHT_PATTERN = /<svg[^>]*\bheight="([\d.]+)(?:ex|px)"/i;
27
+ function colorizeSvg(svg, color) {
28
+ return color ? svg.replace(/currentColor/gim, color) : svg;
29
+ }
30
+ function createMathSvg(content, fontSize, color) {
31
+ if (!texToSvg) return null;
32
+ try {
33
+ const xml = colorizeSvg(texToSvg(content, fontSize / 2), color);
34
+ const widthMatch = SVG_WIDTH_PATTERN.exec(xml);
35
+ const heightMatch = SVG_HEIGHT_PATTERN.exec(xml);
36
+ if (!widthMatch || !heightMatch) return null;
37
+ const width = Number.parseFloat(widthMatch[1]);
38
+ const height = Number.parseFloat(heightMatch[1]);
39
+ if (!Number.isFinite(width) || !Number.isFinite(height)) return null;
40
+ return {
41
+ xml,
42
+ width,
43
+ height
44
+ };
45
+ } catch {
46
+ return null;
47
+ }
48
+ }
49
+ const HorizontalMathViewport = ({
50
+ children,
51
+ contentWidth,
52
+ style,
53
+ contentStyle
54
+ }) => {
55
+ const [viewportWidth, setViewportWidth] = useState(0);
56
+ const [measuredContentWidth, setMeasuredContentWidth] = useState(contentWidth ?? 0);
57
+ const [offset, setOffset] = useState(0);
58
+ const viewportWidthRef = useRef(0);
59
+ const contentWidthRef = useRef(contentWidth ?? 0);
60
+ const offsetRef = useRef(0);
61
+ const gestureStartOffsetRef = useRef(0);
62
+ const [panHandlers, setPanHandlers] = useState(null);
63
+ const setClampedOffset = useCallback(nextOffset => {
64
+ const maxOffset = Math.max(0, contentWidthRef.current - viewportWidthRef.current);
65
+ const clampedOffset = Math.min(0, Math.max(-maxOffset, nextOffset));
66
+ offsetRef.current = clampedOffset;
67
+ setOffset(clampedOffset);
68
+ }, []);
69
+ useEffect(() => {
70
+ if (typeof contentWidth !== "number") return;
71
+ contentWidthRef.current = contentWidth;
72
+ setMeasuredContentWidth(contentWidth);
73
+ setClampedOffset(offsetRef.current);
74
+ }, [contentWidth, setClampedOffset]);
75
+ const handleViewportLayout = useCallback(event => {
76
+ viewportWidthRef.current = event.nativeEvent.layout.width;
77
+ setViewportWidth(viewportWidthRef.current);
78
+ setClampedOffset(offsetRef.current);
79
+ }, [setClampedOffset]);
80
+ const handleContentLayout = useCallback(event => {
81
+ if (typeof contentWidth === "number") return;
82
+ contentWidthRef.current = event.nativeEvent.layout.width;
83
+ setMeasuredContentWidth(contentWidthRef.current);
84
+ setClampedOffset(offsetRef.current);
85
+ }, [contentWidth, setClampedOffset]);
86
+ useEffect(() => {
87
+ const responder = PanResponder.create({
88
+ onMoveShouldSetPanResponder: (_event, gestureState) => {
89
+ const hasOverflow = contentWidthRef.current > viewportWidthRef.current + 1;
90
+ const isHorizontal = Math.abs(gestureState.dx) > Math.abs(gestureState.dy) + 4;
91
+ return hasOverflow && isHorizontal;
92
+ },
93
+ onPanResponderGrant: () => {
94
+ gestureStartOffsetRef.current = offsetRef.current;
95
+ },
96
+ onPanResponderMove: (_event, gestureState) => {
97
+ setClampedOffset(gestureStartOffsetRef.current + gestureState.dx);
98
+ },
99
+ onPanResponderTerminationRequest: () => false
100
+ });
101
+ setPanHandlers(responder.panHandlers);
102
+ }, [setClampedOffset]);
103
+ const centeredOffset = measuredContentWidth > 0 && viewportWidth > measuredContentWidth ? (viewportWidth - measuredContentWidth) / 2 : 0;
104
+ return /*#__PURE__*/_jsx(View, {
105
+ style: style,
106
+ onLayout: handleViewportLayout,
107
+ pointerEvents: "box-only",
108
+ ...(panHandlers ?? {}),
109
+ children: /*#__PURE__*/_jsx(View, {
110
+ style: [contentStyle, typeof contentWidth === "number" && {
111
+ width: contentWidth
112
+ }, {
113
+ transform: [{
114
+ translateX: centeredOffset + offset
115
+ }]
116
+ }],
117
+ onLayout: handleContentLayout,
118
+ pointerEvents: "none",
119
+ children: children
120
+ })
121
+ });
122
+ };
19
123
  const createMathStyles = theme => StyleSheet.create({
20
124
  mathInlineContainer: {
21
125
  marginHorizontal: 2,
@@ -40,26 +144,49 @@ const createMathStyles = theme => StyleSheet.create({
40
144
  })
41
145
  },
42
146
  mathBlockContainer: {
147
+ width: "100%",
148
+ maxWidth: "100%",
149
+ alignSelf: "stretch",
43
150
  marginVertical: theme.spacing.m,
44
151
  paddingVertical: theme.spacing.l,
45
152
  paddingHorizontal: theme.spacing.l,
46
153
  backgroundColor: theme.colors.surface,
47
154
  borderRadius: theme.borderRadius.l,
48
- alignItems: "center",
49
155
  borderWidth: 1,
50
156
  borderColor: theme.colors.border,
51
157
  // Ensure we don't collapse if MathJax fails to report size immediately
52
- minHeight: 48
158
+ minHeight: 48,
159
+ overflow: "hidden"
160
+ },
161
+ mathBlockScroll: {
162
+ width: "100%",
163
+ alignSelf: "stretch",
164
+ maxWidth: "100%",
165
+ overflow: "hidden"
166
+ },
167
+ mathBlockScrollContent: {
168
+ alignSelf: "flex-start",
169
+ alignItems: "center",
170
+ justifyContent: "center"
171
+ },
172
+ mathBlockSvg: {
173
+ backgroundColor: "transparent"
174
+ },
175
+ mathBlockSvgFrame: {
176
+ flexShrink: 0
53
177
  },
54
178
  mathBlockFallbackContainer: {
179
+ width: "100%",
180
+ maxWidth: "100%",
181
+ alignSelf: "stretch",
55
182
  marginVertical: theme.spacing.m,
56
183
  paddingVertical: theme.spacing.m,
57
184
  paddingHorizontal: theme.spacing.l,
58
185
  backgroundColor: theme.colors.codeBackground,
59
186
  borderRadius: theme.borderRadius.m,
60
- alignItems: "center",
61
187
  borderWidth: 1,
62
- borderColor: theme.colors.border
188
+ borderColor: theme.colors.border,
189
+ overflow: "hidden"
63
190
  },
64
191
  mathBlockFallback: {
65
192
  fontFamily: theme.fontFamilies.mono ?? Platform.select({
@@ -69,6 +196,7 @@ const createMathStyles = theme => StyleSheet.create({
69
196
  fontSize: theme.fontSizes.m,
70
197
  color: theme.colors.code,
71
198
  textAlign: "center",
199
+ flexShrink: 0,
72
200
  ...(Platform.OS === "android" && {
73
201
  includeFontPadding: false
74
202
  })
@@ -115,25 +243,57 @@ export const MathBlock = ({
115
243
  } = useMarkdownContext();
116
244
  const styles = getCachedStyles(mathStylesCache, theme, createMathStyles);
117
245
  if (!content) return null;
246
+ const displayContent = `\\displaystyle ${content}`;
247
+ const blockSvg = SvgFromXmlComponent && createMathSvg(displayContent, theme.fontSizes.l, theme.colors.text);
248
+ if (blockSvg && SvgFromXmlComponent) {
249
+ return /*#__PURE__*/_jsx(View, {
250
+ style: [styles.mathBlockContainer, style],
251
+ children: /*#__PURE__*/_jsx(HorizontalMathViewport, {
252
+ style: styles.mathBlockScroll,
253
+ contentStyle: styles.mathBlockScrollContent,
254
+ contentWidth: blockSvg.width,
255
+ children: /*#__PURE__*/_jsx(View, {
256
+ style: [styles.mathBlockSvgFrame, {
257
+ width: blockSvg.width,
258
+ height: blockSvg.height
259
+ }],
260
+ children: /*#__PURE__*/_jsx(SvgFromXmlComponent, {
261
+ xml: blockSvg.xml,
262
+ width: blockSvg.width,
263
+ height: blockSvg.height,
264
+ style: styles.mathBlockSvg
265
+ })
266
+ })
267
+ })
268
+ });
269
+ }
118
270
  if (MathJaxComponent) {
119
271
  return /*#__PURE__*/_jsx(View, {
120
272
  style: [styles.mathBlockContainer, style],
121
- children: /*#__PURE__*/_jsx(MathJaxComponent, {
122
- fontSize: theme.fontSizes.l,
123
- color: theme.colors.text,
124
- fontCache: false,
125
- style: {
126
- backgroundColor: "transparent"
127
- },
128
- children: `\\displaystyle ${content}`
273
+ children: /*#__PURE__*/_jsx(HorizontalMathViewport, {
274
+ style: styles.mathBlockScroll,
275
+ contentStyle: styles.mathBlockScrollContent,
276
+ children: /*#__PURE__*/_jsx(MathJaxComponent, {
277
+ fontSize: theme.fontSizes.l,
278
+ color: theme.colors.text,
279
+ fontCache: false,
280
+ style: {
281
+ backgroundColor: "transparent"
282
+ },
283
+ children: displayContent
284
+ })
129
285
  })
130
286
  });
131
287
  }
132
288
  return /*#__PURE__*/_jsx(View, {
133
289
  style: [styles.mathBlockFallbackContainer, style],
134
- children: /*#__PURE__*/_jsx(Text, {
135
- style: styles.mathBlockFallback,
136
- children: content
290
+ children: /*#__PURE__*/_jsx(HorizontalMathViewport, {
291
+ style: styles.mathBlockScroll,
292
+ contentStyle: styles.mathBlockScrollContent,
293
+ children: /*#__PURE__*/_jsx(Text, {
294
+ style: styles.mathBlockFallback,
295
+ children: content
296
+ })
137
297
  })
138
298
  });
139
299
  };
@@ -1 +1 @@
1
- {"version":3,"names":["View","Text","StyleSheet","Platform","getCachedStyles","useMarkdownContext","jsx","_jsx","MathJaxComponent","mathJaxModule","require","default","__DEV__","console","warn","mathStylesCache","WeakMap","createMathStyles","theme","create","mathInlineContainer","marginHorizontal","justifyContent","mathInlineFallbackContainer","backgroundColor","colors","codeBackground","paddingHorizontal","spacing","xs","paddingVertical","borderRadius","s","mathInlineFallback","fontFamily","fontFamilies","mono","select","ios","android","fontSize","fontSizes","color","code","OS","includeFontPadding","mathBlockContainer","marginVertical","m","l","surface","alignItems","borderWidth","borderColor","border","minHeight","mathBlockFallbackContainer","mathBlockFallback","textAlign","MathInline","content","style","styles","children","text","fontCache","MathBlock"],"sourceRoot":"../../../src","sources":["renderers/math.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","View","Text","PanResponder","StyleSheet","Platform","getCachedStyles","useMarkdownContext","jsx","_jsx","MathJaxComponent","SvgFromXmlComponent","texToSvg","mathJaxModule","require","default","SvgFromXml","__DEV__","console","warn","mathStylesCache","WeakMap","SVG_WIDTH_PATTERN","SVG_HEIGHT_PATTERN","colorizeSvg","svg","color","replace","createMathSvg","content","fontSize","xml","widthMatch","exec","heightMatch","width","Number","parseFloat","height","isFinite","HorizontalMathViewport","children","contentWidth","style","contentStyle","viewportWidth","setViewportWidth","measuredContentWidth","setMeasuredContentWidth","offset","setOffset","viewportWidthRef","contentWidthRef","offsetRef","gestureStartOffsetRef","panHandlers","setPanHandlers","setClampedOffset","nextOffset","maxOffset","Math","max","current","clampedOffset","min","handleViewportLayout","event","nativeEvent","layout","handleContentLayout","responder","create","onMoveShouldSetPanResponder","_event","gestureState","hasOverflow","isHorizontal","abs","dx","dy","onPanResponderGrant","onPanResponderMove","onPanResponderTerminationRequest","centeredOffset","onLayout","pointerEvents","transform","translateX","createMathStyles","theme","mathInlineContainer","marginHorizontal","justifyContent","mathInlineFallbackContainer","backgroundColor","colors","codeBackground","paddingHorizontal","spacing","xs","paddingVertical","borderRadius","s","mathInlineFallback","fontFamily","fontFamilies","mono","select","ios","android","fontSizes","code","OS","includeFontPadding","mathBlockContainer","maxWidth","alignSelf","marginVertical","m","l","surface","borderWidth","borderColor","border","minHeight","overflow","mathBlockScroll","mathBlockScrollContent","alignItems","mathBlockSvg","mathBlockSvgFrame","flexShrink","mathBlockFallbackContainer","mathBlockFallback","textAlign","MathInline","styles","text","fontCache","MathBlock","displayContent","blockSvg"],"sourceRoot":"../../../src","sources":["renderers/math.tsx"],"mappings":"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","ignoreList":[]}
@@ -21,8 +21,11 @@ export const Paragraph = ({
21
21
  const stylesCache = new WeakMap();
22
22
  const createStyles = theme => StyleSheet.create({
23
23
  paragraph: {
24
+ width: "100%",
25
+ maxWidth: "100%",
24
26
  flexDirection: "row",
25
27
  flexWrap: "wrap",
28
+ flexShrink: 1,
26
29
  marginBottom: theme.spacing.l,
27
30
  gap: 0
28
31
  },
@@ -1 +1 @@
1
- {"version":3,"names":["View","StyleSheet","getCachedStyles","useMarkdownContext","jsx","_jsx","Paragraph","children","inListItem","style","theme","styles","stylesCache","createStyles","paragraph","paragraphInListItem","WeakMap","create","flexDirection","flexWrap","marginBottom","spacing","l","gap","marginTop"],"sourceRoot":"../../../src","sources":["renderers/paragraph.tsx"],"mappings":";;AACA,SAASA,IAAI,EAAEC,UAAU,QAAwC,cAAc;AAC/E,SAASC,eAAe,QAAQ,kBAAe;AAC/C,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASxD,OAAO,MAAMC,SAA6B,GAAGA,CAAC;EAC5CC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAM,CAAC,GAAGP,kBAAkB,CAAC,CAAC;EACtC,MAAMQ,MAAM,GAAGT,eAAe,CAACU,WAAW,EAAEF,KAAK,EAAEG,YAAY,CAAC;EAEhE,oBACER,IAAA,CAACL,IAAI;IACHS,KAAK,EAAE,CACLE,MAAM,CAACG,SAAS,EAChBN,UAAU,IAAIG,MAAM,CAACI,mBAAmB,EACxCN,KAAK,CACL;IAAAF,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CAAC;AAID,MAAMK,WAAW,GAAG,IAAII,OAAO,CAAiC,CAAC;AAEjE,MAAMH,YAAY,GAAIH,KAAoB,IACxCT,UAAU,CAACgB,MAAM,CAAC;EAChBH,SAAS,EAAE;IACTI,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBC,YAAY,EAAEV,KAAK,CAACW,OAAO,CAACC,CAAC;IAC7BC,GAAG,EAAE;EACP,CAAC;EACDR,mBAAmB,EAAE;IACnBK,YAAY,EAAE,CAAC;IACfI,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["View","StyleSheet","getCachedStyles","useMarkdownContext","jsx","_jsx","Paragraph","children","inListItem","style","theme","styles","stylesCache","createStyles","paragraph","paragraphInListItem","WeakMap","create","width","maxWidth","flexDirection","flexWrap","flexShrink","marginBottom","spacing","l","gap","marginTop"],"sourceRoot":"../../../src","sources":["renderers/paragraph.tsx"],"mappings":";;AACA,SAASA,IAAI,EAAEC,UAAU,QAAwC,cAAc;AAC/E,SAASC,eAAe,QAAQ,kBAAe;AAC/C,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASxD,OAAO,MAAMC,SAA6B,GAAGA,CAAC;EAC5CC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAM,CAAC,GAAGP,kBAAkB,CAAC,CAAC;EACtC,MAAMQ,MAAM,GAAGT,eAAe,CAACU,WAAW,EAAEF,KAAK,EAAEG,YAAY,CAAC;EAEhE,oBACER,IAAA,CAACL,IAAI;IACHS,KAAK,EAAE,CACLE,MAAM,CAACG,SAAS,EAChBN,UAAU,IAAIG,MAAM,CAACI,mBAAmB,EACxCN,KAAK,CACL;IAAAF,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CAAC;AAID,MAAMK,WAAW,GAAG,IAAII,OAAO,CAAiC,CAAC;AAEjE,MAAMH,YAAY,GAAIH,KAAoB,IACxCT,UAAU,CAACgB,MAAM,CAAC;EAChBH,SAAS,EAAE;IACTI,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,MAAM;IAChBC,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBC,UAAU,EAAE,CAAC;IACbC,YAAY,EAAEb,KAAK,CAACc,OAAO,CAACC,CAAC;IAC7BC,GAAG,EAAE;EACP,CAAC;EACDX,mBAAmB,EAAE;IACnBQ,YAAY,EAAE,CAAC;IACfI,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -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,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,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AAyBhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAgBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CASR;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;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
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;AAiBF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AA8BhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAqBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CAaR;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,MAoDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
@@ -7,7 +7,8 @@ export type MarkdownStreamProps = {
7
7
  */
8
8
  session: MarkdownSession;
9
9
  /**
10
- * Throttle UI updates to avoid re-rendering on every token.
10
+ * Throttle UI updates when updateStrategy is "interval".
11
+ * Ignored when updateStrategy is "raf".
11
12
  * Defaults to 50ms, which keeps UI responsive while streaming.
12
13
  */
13
14
  updateIntervalMs?: number;
@@ -1 +1 @@
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,CAyKlD,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;;;;OAIG;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,CAyKlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../../src/renderers/math.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAiB,MAAM,OAAO,CAAC;AAC/C,OAAO,EAML,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AA0BtB,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AA4DF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA2B1C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA0BxC,CAAC"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../../src/renderers/math.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAA4B,MAAM,OAAO,CAAC;AAE1D,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAsCtB,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAiOF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA2B1C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAmExC,CAAC"}
@@ -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,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,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AAyBhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAgBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CASR;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;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
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;AAiBF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AA8BhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAqBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CAaR;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,MAoDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
@@ -7,7 +7,8 @@ export type MarkdownStreamProps = {
7
7
  */
8
8
  session: MarkdownSession;
9
9
  /**
10
- * Throttle UI updates to avoid re-rendering on every token.
10
+ * Throttle UI updates when updateStrategy is "interval".
11
+ * Ignored when updateStrategy is "raf".
11
12
  * Defaults to 50ms, which keeps UI responsive while streaming.
12
13
  */
13
14
  updateIntervalMs?: number;
@@ -1 +1 @@
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,CAyKlD,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;;;;OAIG;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,CAyKlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../../src/renderers/math.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAiB,MAAM,OAAO,CAAC;AAC/C,OAAO,EAML,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AA0BtB,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AA4DF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA2B1C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA0BxC,CAAC"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../../src/renderers/math.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAA4B,MAAM,OAAO,CAAC;AAE1D,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAsCtB,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAiOF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA2B1C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAmExC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-markdown",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "High-performance Markdown parser for React Native using Nitro Modules and md4c",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -136,7 +136,12 @@
136
136
  "esm": true
137
137
  }
138
138
  ],
139
- "typescript"
139
+ [
140
+ "typescript",
141
+ {
142
+ "tsc": "../../node_modules/.bin/tsc"
143
+ }
144
+ ]
140
145
  ]
141
146
  }
142
147
  }
package/src/headless.ts CHANGED
@@ -79,6 +79,21 @@ export type MarkdownNode = {
79
79
  children?: MarkdownNode[];
80
80
  };
81
81
 
82
+ const createEmptyDocument = (): MarkdownNode => ({
83
+ type: "document",
84
+ children: [],
85
+ });
86
+
87
+ function reportNativeParserFailure(methodName: string, error?: unknown): void {
88
+ if (__DEV__) {
89
+ // eslint-disable-next-line no-console
90
+ console.error(
91
+ `[NitroMarkdown] ${methodName}: native parser failed.`,
92
+ error,
93
+ );
94
+ }
95
+ }
96
+
82
97
  let MarkdownParserModule: MarkdownParser | null = null;
83
98
  try {
84
99
  MarkdownParserModule =
@@ -118,8 +133,13 @@ export function parseMarkdown(
118
133
  MarkdownParserModule != null &&
119
134
  typeof MarkdownParserModule.parse === "function"
120
135
  ) {
121
- const jsonStr = MarkdownParserModule.parse(text);
122
- return JSON.parse(jsonStr) as MarkdownNode;
136
+ try {
137
+ const jsonStr = MarkdownParserModule.parse(text);
138
+ return JSON.parse(jsonStr) as MarkdownNode;
139
+ } catch (error) {
140
+ reportNativeParserFailure("parseMarkdown", error);
141
+ return createEmptyDocument();
142
+ }
123
143
  }
124
144
 
125
145
  if (__DEV__) {
@@ -128,7 +148,7 @@ export function parseMarkdown(
128
148
  "[NitroMarkdown] parseMarkdown: native parser unavailable — check installation.",
129
149
  );
130
150
  }
131
- return { type: "document", children: [] };
151
+ return createEmptyDocument();
132
152
  }
133
153
 
134
154
  /**
@@ -145,8 +165,13 @@ export function parseMarkdownWithOptions(
145
165
  MarkdownParserModule != null &&
146
166
  typeof MarkdownParserModule.parseWithOptions === "function"
147
167
  ) {
148
- const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
149
- return JSON.parse(jsonStr) as MarkdownNode;
168
+ try {
169
+ const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
170
+ return JSON.parse(jsonStr) as MarkdownNode;
171
+ } catch (error) {
172
+ reportNativeParserFailure("parseMarkdownWithOptions", error);
173
+ return createEmptyDocument();
174
+ }
150
175
  }
151
176
 
152
177
  if (__DEV__) {
@@ -155,7 +180,7 @@ export function parseMarkdownWithOptions(
155
180
  "[NitroMarkdown] parseMarkdownWithOptions: native parser unavailable — check installation.",
156
181
  );
157
182
  }
158
- return { type: "document", children: [] };
183
+ return createEmptyDocument();
159
184
  }
160
185
 
161
186
  /**
@@ -167,7 +192,11 @@ export function extractPlainText(text: string): string {
167
192
  MarkdownParserModule != null &&
168
193
  typeof MarkdownParserModule.extractPlainText === "function"
169
194
  ) {
170
- return MarkdownParserModule.extractPlainText(text);
195
+ try {
196
+ return MarkdownParserModule.extractPlainText(text);
197
+ } catch (error) {
198
+ reportNativeParserFailure("extractPlainText", error);
199
+ }
171
200
  }
172
201
 
173
202
  return getFlattenedText(parseMarkdown(text));
@@ -184,7 +213,11 @@ export function extractPlainTextWithOptions(
184
213
  MarkdownParserModule != null &&
185
214
  typeof MarkdownParserModule.extractPlainTextWithOptions === "function"
186
215
  ) {
187
- return MarkdownParserModule.extractPlainTextWithOptions(text, options);
216
+ try {
217
+ return MarkdownParserModule.extractPlainTextWithOptions(text, options);
218
+ } catch (error) {
219
+ reportNativeParserFailure("extractPlainTextWithOptions", error);
220
+ }
188
221
  }
189
222
 
190
223
  return getFlattenedText(parseMarkdownWithOptions(text, options));
@@ -221,7 +254,9 @@ export const getFlattenedText = (node: MarkdownNode): string => {
221
254
  node.type === "math_block" ||
222
255
  node.type === "html_block"
223
256
  ) {
224
- return (node.content ?? "").trim() + "\n\n";
257
+ const blockContent =
258
+ node.content ?? node.children?.map(getFlattenedText).join("") ?? "";
259
+ return blockContent.trim() + "\n\n";
225
260
  }
226
261
 
227
262
  if (node.type === "line_break") return "\n";
@@ -56,7 +56,8 @@ export type MarkdownStreamProps = {
56
56
  */
57
57
  session: MarkdownSession;
58
58
  /**
59
- * Throttle UI updates to avoid re-rendering on every token.
59
+ * Throttle UI updates when updateStrategy is "interval".
60
+ * Ignored when updateStrategy is "raf".
60
61
  * Defaults to 50ms, which keeps UI responsive while streaming.
61
62
  */
62
63
  updateIntervalMs?: number;
package/src/markdown.tsx CHANGED
@@ -998,12 +998,16 @@ const getBaseStyles = (theme: MarkdownTheme): BaseStyles => {
998
998
  const createBaseStyles = (theme: MarkdownTheme) =>
999
999
  StyleSheet.create({
1000
1000
  container: {
1001
+ width: "100%",
1002
+ maxWidth: "100%",
1001
1003
  flexShrink: 1,
1002
1004
  },
1003
1005
  virtualizedList: {
1004
1006
  flex: 1,
1005
1007
  },
1006
1008
  document: {
1009
+ width: "100%",
1010
+ maxWidth: "100%",
1007
1011
  flexShrink: 1,
1008
1012
  },
1009
1013
  errorText: {