react-native-nitro-markdown 0.4.3 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +417 -25
  2. package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +46 -8
  3. package/android/src/main/java/com/nitromarkdown/NitroMarkdownPackage.kt +2 -1
  4. package/cpp/bindings/HybridMarkdownParser.cpp +216 -66
  5. package/cpp/bindings/HybridMarkdownParser.hpp +2 -0
  6. package/ios/HybridMarkdownSession.swift +51 -7
  7. package/lib/commonjs/MarkdownContext.js.map +1 -1
  8. package/lib/commonjs/headless.js +61 -5
  9. package/lib/commonjs/headless.js.map +1 -1
  10. package/lib/commonjs/index.js +9 -1
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/markdown-stream.js +107 -13
  13. package/lib/commonjs/markdown-stream.js.map +1 -1
  14. package/lib/commonjs/markdown.js +191 -26
  15. package/lib/commonjs/markdown.js.map +1 -1
  16. package/lib/commonjs/renderers/code.js +21 -2
  17. package/lib/commonjs/renderers/code.js.map +1 -1
  18. package/lib/commonjs/renderers/table/cell-content.js +32 -0
  19. package/lib/commonjs/renderers/table/cell-content.js.map +1 -0
  20. package/lib/commonjs/renderers/table/index.js +310 -0
  21. package/lib/commonjs/renderers/table/index.js.map +1 -0
  22. package/lib/commonjs/renderers/table/table-reducer.js +29 -0
  23. package/lib/commonjs/renderers/table/table-reducer.js.map +1 -0
  24. package/lib/commonjs/renderers/table/table-utils.js +68 -0
  25. package/lib/commonjs/renderers/table/table-utils.js.map +1 -0
  26. package/lib/commonjs/renderers/table/types.js +6 -0
  27. package/lib/commonjs/renderers/table/types.js.map +1 -0
  28. package/lib/commonjs/renderers/table.js +6 -306
  29. package/lib/commonjs/renderers/table.js.map +1 -1
  30. package/lib/commonjs/theme.js +10 -1
  31. package/lib/commonjs/theme.js.map +1 -1
  32. package/lib/commonjs/use-markdown-stream.js +9 -1
  33. package/lib/commonjs/use-markdown-stream.js.map +1 -1
  34. package/lib/commonjs/utils/code-highlight.js +101 -0
  35. package/lib/commonjs/utils/code-highlight.js.map +1 -0
  36. package/lib/commonjs/utils/incremental-ast.js +153 -0
  37. package/lib/commonjs/utils/incremental-ast.js.map +1 -0
  38. package/lib/module/MarkdownContext.js.map +1 -1
  39. package/lib/module/headless.js +56 -4
  40. package/lib/module/headless.js.map +1 -1
  41. package/lib/module/index.js +1 -0
  42. package/lib/module/index.js.map +1 -1
  43. package/lib/module/markdown-stream.js +108 -14
  44. package/lib/module/markdown-stream.js.map +1 -1
  45. package/lib/module/markdown.js +193 -28
  46. package/lib/module/markdown.js.map +1 -1
  47. package/lib/module/renderers/code.js +21 -2
  48. package/lib/module/renderers/code.js.map +1 -1
  49. package/lib/module/renderers/table/cell-content.js +27 -0
  50. package/lib/module/renderers/table/cell-content.js.map +1 -0
  51. package/lib/module/renderers/table/index.js +305 -0
  52. package/lib/module/renderers/table/index.js.map +1 -0
  53. package/lib/module/renderers/table/table-reducer.js +24 -0
  54. package/lib/module/renderers/table/table-reducer.js.map +1 -0
  55. package/lib/module/renderers/table/table-utils.js +62 -0
  56. package/lib/module/renderers/table/table-utils.js.map +1 -0
  57. package/lib/module/renderers/table/types.js +4 -0
  58. package/lib/module/renderers/table/types.js.map +1 -0
  59. package/lib/module/renderers/table.js +1 -305
  60. package/lib/module/renderers/table.js.map +1 -1
  61. package/lib/module/theme.js +10 -1
  62. package/lib/module/theme.js.map +1 -1
  63. package/lib/module/use-markdown-stream.js +9 -1
  64. package/lib/module/use-markdown-stream.js.map +1 -1
  65. package/lib/module/utils/code-highlight.js +97 -0
  66. package/lib/module/utils/code-highlight.js.map +1 -0
  67. package/lib/module/utils/incremental-ast.js +147 -0
  68. package/lib/module/utils/incremental-ast.js.map +1 -0
  69. package/lib/typescript/commonjs/Markdown.nitro.d.ts +2 -0
  70. package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/MarkdownContext.d.ts +6 -0
  72. package/lib/typescript/commonjs/MarkdownContext.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/headless.d.ts +18 -0
  74. package/lib/typescript/commonjs/headless.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/index.d.ts +4 -0
  76. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/markdown-stream.d.ts +6 -1
  78. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/markdown.d.ts +77 -1
  80. package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/renderers/table/cell-content.d.ts +15 -0
  83. package/lib/typescript/commonjs/renderers/table/cell-content.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/renderers/table/index.d.ts +11 -0
  85. package/lib/typescript/commonjs/renderers/table/index.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/renderers/table/table-reducer.d.ts +5 -0
  87. package/lib/typescript/commonjs/renderers/table/table-reducer.d.ts.map +1 -0
  88. package/lib/typescript/commonjs/renderers/table/table-utils.d.ts +10 -0
  89. package/lib/typescript/commonjs/renderers/table/table-utils.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/renderers/table/types.d.ts +24 -0
  91. package/lib/typescript/commonjs/renderers/table/types.d.ts.map +1 -0
  92. package/lib/typescript/commonjs/renderers/table.d.ts +1 -11
  93. package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
  94. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts +14 -2
  95. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/theme.d.ts +18 -2
  97. package/lib/typescript/commonjs/theme.d.ts.map +1 -1
  98. package/lib/typescript/commonjs/use-markdown-stream.d.ts +4 -0
  99. package/lib/typescript/commonjs/use-markdown-stream.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/utils/code-highlight.d.ts +8 -0
  101. package/lib/typescript/commonjs/utils/code-highlight.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/utils/incremental-ast.d.ts +12 -0
  103. package/lib/typescript/commonjs/utils/incremental-ast.d.ts.map +1 -0
  104. package/lib/typescript/module/Markdown.nitro.d.ts +2 -0
  105. package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
  106. package/lib/typescript/module/MarkdownContext.d.ts +6 -0
  107. package/lib/typescript/module/MarkdownContext.d.ts.map +1 -1
  108. package/lib/typescript/module/headless.d.ts +18 -0
  109. package/lib/typescript/module/headless.d.ts.map +1 -1
  110. package/lib/typescript/module/index.d.ts +4 -0
  111. package/lib/typescript/module/index.d.ts.map +1 -1
  112. package/lib/typescript/module/markdown-stream.d.ts +6 -1
  113. package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
  114. package/lib/typescript/module/markdown.d.ts +77 -1
  115. package/lib/typescript/module/markdown.d.ts.map +1 -1
  116. package/lib/typescript/module/renderers/code.d.ts.map +1 -1
  117. package/lib/typescript/module/renderers/table/cell-content.d.ts +15 -0
  118. package/lib/typescript/module/renderers/table/cell-content.d.ts.map +1 -0
  119. package/lib/typescript/module/renderers/table/index.d.ts +11 -0
  120. package/lib/typescript/module/renderers/table/index.d.ts.map +1 -0
  121. package/lib/typescript/module/renderers/table/table-reducer.d.ts +5 -0
  122. package/lib/typescript/module/renderers/table/table-reducer.d.ts.map +1 -0
  123. package/lib/typescript/module/renderers/table/table-utils.d.ts +10 -0
  124. package/lib/typescript/module/renderers/table/table-utils.d.ts.map +1 -0
  125. package/lib/typescript/module/renderers/table/types.d.ts +24 -0
  126. package/lib/typescript/module/renderers/table/types.d.ts.map +1 -0
  127. package/lib/typescript/module/renderers/table.d.ts +1 -11
  128. package/lib/typescript/module/renderers/table.d.ts.map +1 -1
  129. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts +14 -2
  130. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts.map +1 -1
  131. package/lib/typescript/module/theme.d.ts +18 -2
  132. package/lib/typescript/module/theme.d.ts.map +1 -1
  133. package/lib/typescript/module/use-markdown-stream.d.ts +4 -0
  134. package/lib/typescript/module/use-markdown-stream.d.ts.map +1 -1
  135. package/lib/typescript/module/utils/code-highlight.d.ts +8 -0
  136. package/lib/typescript/module/utils/code-highlight.d.ts.map +1 -0
  137. package/lib/typescript/module/utils/incremental-ast.d.ts +12 -0
  138. package/lib/typescript/module/utils/incremental-ast.d.ts.map +1 -0
  139. package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +38 -26
  140. package/nitrogen/generated/android/NitroMarkdownOnLoad.hpp +13 -4
  141. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
  142. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.cpp +49 -34
  143. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +25 -24
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/Func_void_double_double.kt +80 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSessionSpec.kt +34 -21
  146. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.cpp +8 -0
  147. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.hpp +31 -0
  148. package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.hpp +34 -2
  149. package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
  150. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec.swift +6 -2
  151. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec_cxx.swift +57 -9
  152. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.cpp +2 -0
  153. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.hpp +2 -0
  154. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.cpp +4 -0
  155. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.hpp +6 -2
  156. package/package.json +9 -5
  157. package/react-native-nitro-markdown.podspec +1 -1
  158. package/src/Markdown.nitro.ts +2 -0
  159. package/src/MarkdownContext.ts +6 -0
  160. package/src/headless.ts +54 -4
  161. package/src/index.ts +10 -0
  162. package/src/markdown-stream.tsx +163 -15
  163. package/src/markdown.tsx +381 -26
  164. package/src/renderers/code.tsx +32 -3
  165. package/src/renderers/table/cell-content.tsx +38 -0
  166. package/src/renderers/table/index.tsx +419 -0
  167. package/src/renderers/table/table-reducer.ts +36 -0
  168. package/src/renderers/table/table-utils.ts +81 -0
  169. package/src/renderers/table/types.ts +24 -0
  170. package/src/renderers/table.tsx +1 -401
  171. package/src/specs/MarkdownSession.nitro.ts +16 -2
  172. package/src/theme.ts +29 -1
  173. package/src/use-markdown-stream.ts +10 -0
  174. package/src/utils/code-highlight.ts +102 -0
  175. package/src/utils/incremental-ast.ts +224 -0
@@ -6,7 +6,35 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.MarkdownStream = void 0;
7
7
  var _react = require("react");
8
8
  var _markdown = require("./markdown.js");
9
+ var _incrementalAst = require("./utils/incremental-ast.js");
9
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ const normalizeOffset = value => {
12
+ if (!Number.isFinite(value)) return null;
13
+ if (value <= 0) return 0;
14
+ return Math.floor(value);
15
+ };
16
+ const resolveStreamText = ({
17
+ forceFullSync,
18
+ pendingFrom,
19
+ pendingTo,
20
+ previousText,
21
+ session
22
+ }) => {
23
+ if (forceFullSync || pendingFrom === null || pendingTo === null) {
24
+ return session.getAllText();
25
+ }
26
+ if (pendingTo < pendingFrom) {
27
+ return session.getAllText();
28
+ }
29
+ if (pendingFrom === previousText.length) {
30
+ const appendedChunk = session.getTextRange(pendingFrom, pendingTo);
31
+ return `${previousText}${appendedChunk}`;
32
+ }
33
+ if (pendingFrom === 0) {
34
+ return session.getTextRange(0, pendingTo);
35
+ }
36
+ return session.getAllText();
37
+ };
10
38
  /**
11
39
  * A component that renders streaming Markdown from a MarkdownSession.
12
40
  * It efficiently subscribes to session updates to minimize parent re-renders.
@@ -16,18 +44,47 @@ const MarkdownStream = ({
16
44
  updateIntervalMs = 50,
17
45
  updateStrategy = "interval",
18
46
  useTransitionUpdates = false,
47
+ incrementalParsing = true,
48
+ options,
49
+ plugins,
19
50
  ...props
20
51
  }) => {
21
- const [text, setText] = (0, _react.useState)(() => session.getAllText());
52
+ const parseText = (0, _react.useCallback)(text => (0, _incrementalAst.parseMarkdownAst)(text, options), [options]);
53
+ const createEmptyAst = () => ({
54
+ type: "document",
55
+ children: []
56
+ });
57
+ const initialText = session.getAllText();
58
+ const hasBeforeParsePlugins = plugins?.some(plugin => typeof plugin.beforeParse === "function") ?? false;
59
+ const [renderState, setRenderState] = (0, _react.useState)(() => ({
60
+ text: initialText,
61
+ ast: hasBeforeParsePlugins ? createEmptyAst() : parseText(initialText)
62
+ }));
63
+ const renderStateRef = (0, _react.useRef)(renderState);
22
64
  const pendingUpdateRef = (0, _react.useRef)(false);
65
+ const pendingFromRef = (0, _react.useRef)(null);
66
+ const pendingToRef = (0, _react.useRef)(null);
67
+ const forceFullSyncRef = (0, _react.useRef)(false);
23
68
  const updateTimerRef = (0, _react.useRef)(null);
24
69
  const rafRef = (0, _react.useRef)(null);
25
- const lastEmittedRef = (0, _react.useRef)(text);
70
+ const allowIncremental = incrementalParsing && !hasBeforeParsePlugins;
71
+ (0, _react.useEffect)(() => {
72
+ renderStateRef.current = renderState;
73
+ }, [renderState]);
26
74
  (0, _react.useEffect)(() => {
27
- // Ensure initial state is synced
28
75
  const initialText = session.getAllText();
29
- setText(initialText);
30
- lastEmittedRef.current = initialText;
76
+ const initialState = {
77
+ text: initialText,
78
+ ast: hasBeforeParsePlugins ? createEmptyAst() : parseText(initialText)
79
+ };
80
+ pendingUpdateRef.current = false;
81
+ pendingFromRef.current = null;
82
+ pendingToRef.current = null;
83
+ forceFullSyncRef.current = false;
84
+ renderStateRef.current = initialState;
85
+ setRenderState(initialState);
86
+ }, [hasBeforeParsePlugins, parseText, session]);
87
+ (0, _react.useEffect)(() => {
31
88
  const flushUpdate = () => {
32
89
  updateTimerRef.current = null;
33
90
  if (rafRef.current !== null) {
@@ -36,15 +93,39 @@ const MarkdownStream = ({
36
93
  }
37
94
  if (!pendingUpdateRef.current) return;
38
95
  pendingUpdateRef.current = false;
39
- const latest = session.getAllText();
40
- if (latest === lastEmittedRef.current) return;
41
- lastEmittedRef.current = latest;
96
+ const previousState = renderStateRef.current;
97
+ const pendingFrom = pendingFromRef.current;
98
+ const pendingTo = pendingToRef.current;
99
+ const forceFullSync = forceFullSyncRef.current;
100
+ pendingFromRef.current = null;
101
+ pendingToRef.current = null;
102
+ forceFullSyncRef.current = false;
103
+ const latest = resolveStreamText({
104
+ forceFullSync,
105
+ pendingFrom,
106
+ pendingTo,
107
+ previousText: previousState.text,
108
+ session
109
+ });
110
+ if (latest === previousState.text) return;
111
+ const nextAst = hasBeforeParsePlugins ? previousState.ast : (0, _incrementalAst.getNextStreamAst)({
112
+ allowIncremental,
113
+ nextText: latest,
114
+ options,
115
+ previousAst: previousState.ast,
116
+ previousText: previousState.text
117
+ });
118
+ const nextState = {
119
+ text: latest,
120
+ ast: nextAst
121
+ };
122
+ renderStateRef.current = nextState;
42
123
  if (useTransitionUpdates) {
43
124
  (0, _react.startTransition)(() => {
44
- setText(latest);
125
+ setRenderState(nextState);
45
126
  });
46
127
  } else {
47
- setText(latest);
128
+ setRenderState(nextState);
48
129
  }
49
130
  };
50
131
  const scheduleFlush = () => {
@@ -58,7 +139,17 @@ const MarkdownStream = ({
58
139
  updateTimerRef.current = setTimeout(flushUpdate, updateIntervalMs);
59
140
  }
60
141
  };
61
- const unsubscribe = session.addListener(() => {
142
+ const unsubscribe = session.addListener((from, to) => {
143
+ const nextFrom = normalizeOffset(from);
144
+ const nextTo = normalizeOffset(to);
145
+ if (nextFrom === null || nextTo === null || nextTo < nextFrom) {
146
+ forceFullSyncRef.current = true;
147
+ } else {
148
+ const currentFrom = pendingFromRef.current;
149
+ const currentTo = pendingToRef.current;
150
+ pendingFromRef.current = currentFrom === null ? nextFrom : Math.min(currentFrom, nextFrom);
151
+ pendingToRef.current = currentTo === null ? nextTo : Math.max(currentTo, nextTo);
152
+ }
62
153
  pendingUpdateRef.current = true;
63
154
  scheduleFlush();
64
155
  });
@@ -73,10 +164,13 @@ const MarkdownStream = ({
73
164
  rafRef.current = null;
74
165
  }
75
166
  };
76
- }, [session, updateIntervalMs, updateStrategy, useTransitionUpdates]);
167
+ }, [allowIncremental, hasBeforeParsePlugins, options, session, updateIntervalMs, updateStrategy, useTransitionUpdates]);
77
168
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_markdown.Markdown, {
78
169
  ...props,
79
- children: text
170
+ options: options,
171
+ plugins: plugins,
172
+ sourceAst: hasBeforeParsePlugins ? undefined : renderState.ast,
173
+ children: renderState.text
80
174
  });
81
175
  };
82
176
  exports.MarkdownStream = MarkdownStream;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_markdown","_jsxRuntime","MarkdownStream","session","updateIntervalMs","updateStrategy","useTransitionUpdates","props","text","setText","useState","getAllText","pendingUpdateRef","useRef","updateTimerRef","rafRef","lastEmittedRef","useEffect","initialText","current","flushUpdate","cancelAnimationFrame","latest","startTransition","scheduleFlush","requestAnimationFrame","setTimeout","unsubscribe","addListener","clearTimeout","jsx","Markdown","children","exports"],"sourceRoot":"../../src","sources":["markdown-stream.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAA0D,IAAAE,WAAA,GAAAF,OAAA;AA0B1D;AACA;AACA;AACA;AACO,MAAMG,cAAuC,GAAGA,CAAC;EACtDC,OAAO;EACPC,gBAAgB,GAAG,EAAE;EACrBC,cAAc,GAAG,UAAU;EAC3BC,oBAAoB,GAAG,KAAK;EAC5B,GAAGC;AACL,CAAC,KAAK;EACJ,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMP,OAAO,CAACQ,UAAU,CAAC,CAAC,CAAC;EAC5D,MAAMC,gBAAgB,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EACtC,MAAMC,cAAc,GAAG,IAAAD,aAAM,EAAuC,IAAI,CAAC;EACzE,MAAME,MAAM,GAAG,IAAAF,aAAM,EAAgB,IAAI,CAAC;EAC1C,MAAMG,cAAc,GAAG,IAAAH,aAAM,EAACL,IAAI,CAAC;EAEnC,IAAAS,gBAAS,EAAC,MAAM;IACd;IACA,MAAMC,WAAW,GAAGf,OAAO,CAACQ,UAAU,CAAC,CAAC;IACxCF,OAAO,CAACS,WAAW,CAAC;IACpBF,cAAc,CAACG,OAAO,GAAGD,WAAW;IAEpC,MAAME,WAAW,GAAGA,CAAA,KAAM;MACxBN,cAAc,CAACK,OAAO,GAAG,IAAI;MAC7B,IAAIJ,MAAM,CAACI,OAAO,KAAK,IAAI,EAAE;QAC3BE,oBAAoB,CAACN,MAAM,CAACI,OAAO,CAAC;QACpCJ,MAAM,CAACI,OAAO,GAAG,IAAI;MACvB;MACA,IAAI,CAACP,gBAAgB,CAACO,OAAO,EAAE;MAC/BP,gBAAgB,CAACO,OAAO,GAAG,KAAK;MAEhC,MAAMG,MAAM,GAAGnB,OAAO,CAACQ,UAAU,CAAC,CAAC;MACnC,IAAIW,MAAM,KAAKN,cAAc,CAACG,OAAO,EAAE;MACvCH,cAAc,CAACG,OAAO,GAAGG,MAAM;MAE/B,IAAIhB,oBAAoB,EAAE;QACxB,IAAAiB,sBAAe,EAAC,MAAM;UACpBd,OAAO,CAACa,MAAM,CAAC;QACjB,CAAC,CAAC;MACJ,CAAC,MAAM;QACLb,OAAO,CAACa,MAAM,CAAC;MACjB;IACF,CAAC;IAED,MAAME,aAAa,GAAGA,CAAA,KAAM;MAC1B,IAAInB,cAAc,KAAK,KAAK,EAAE;QAC5B,IAAIU,MAAM,CAACI,OAAO,KAAK,IAAI,EAAE;UAC3BJ,MAAM,CAACI,OAAO,GAAGM,qBAAqB,CAACL,WAAW,CAAC;QACrD;QACA;MACF;MAEA,IAAI,CAACN,cAAc,CAACK,OAAO,EAAE;QAC3BL,cAAc,CAACK,OAAO,GAAGO,UAAU,CAACN,WAAW,EAAEhB,gBAAgB,CAAC;MACpE;IACF,CAAC;IAED,MAAMuB,WAAW,GAAGxB,OAAO,CAACyB,WAAW,CAAC,MAAM;MAC5ChB,gBAAgB,CAACO,OAAO,GAAG,IAAI;MAC/BK,aAAa,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,MAAM;MACXG,WAAW,CAAC,CAAC;MACb,IAAIb,cAAc,CAACK,OAAO,EAAE;QAC1BU,YAAY,CAACf,cAAc,CAACK,OAAO,CAAC;QACpCL,cAAc,CAACK,OAAO,GAAG,IAAI;MAC/B;MACA,IAAIJ,MAAM,CAACI,OAAO,KAAK,IAAI,EAAE;QAC3BE,oBAAoB,CAACN,MAAM,CAACI,OAAO,CAAC;QACpCJ,MAAM,CAACI,OAAO,GAAG,IAAI;MACvB;IACF,CAAC;EACH,CAAC,EAAE,CAAChB,OAAO,EAAEC,gBAAgB,EAAEC,cAAc,EAAEC,oBAAoB,CAAC,CAAC;EAErE,oBAAO,IAAAL,WAAA,CAAA6B,GAAA,EAAC9B,SAAA,CAAA+B,QAAQ;IAAA,GAAKxB,KAAK;IAAAyB,QAAA,EAAGxB;EAAI,CAAW,CAAC;AAC/C,CAAC;AAACyB,OAAA,CAAA/B,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_markdown","_incrementalAst","_jsxRuntime","normalizeOffset","value","Number","isFinite","Math","floor","resolveStreamText","forceFullSync","pendingFrom","pendingTo","previousText","session","getAllText","length","appendedChunk","getTextRange","MarkdownStream","updateIntervalMs","updateStrategy","useTransitionUpdates","incrementalParsing","options","plugins","props","parseText","useCallback","text","parseMarkdownAst","createEmptyAst","type","children","initialText","hasBeforeParsePlugins","some","plugin","beforeParse","renderState","setRenderState","useState","ast","renderStateRef","useRef","pendingUpdateRef","pendingFromRef","pendingToRef","forceFullSyncRef","updateTimerRef","rafRef","allowIncremental","useEffect","current","initialState","flushUpdate","cancelAnimationFrame","previousState","latest","nextAst","getNextStreamAst","nextText","previousAst","nextState","startTransition","scheduleFlush","requestAnimationFrame","setTimeout","unsubscribe","addListener","from","to","nextFrom","nextTo","currentFrom","currentTo","min","max","clearTimeout","jsx","Markdown","sourceAst","undefined","exports"],"sourceRoot":"../../src","sources":["markdown-stream.tsx"],"mappings":"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","ignoreList":[]}
@@ -21,9 +21,119 @@ var _table = require("./renderers/table.js");
21
21
  var _theme = require("./theme.js");
22
22
  var _jsxRuntime = require("react/jsx-runtime");
23
23
  const baseStylesCache = new WeakMap();
24
+ const parseAstCache = new Map();
25
+ const MAX_PARSE_CACHE_ENTRIES = 32;
26
+ const MAX_CACHEABLE_TEXT_LENGTH = 24_000;
27
+ const isMarkdownNode = value => {
28
+ if (typeof value !== "object" || value === null) return false;
29
+ return typeof Reflect.get(value, "type") === "string";
30
+ };
31
+ const warnInDev = (message, error) => {
32
+ if (typeof __DEV__ === "undefined" || !__DEV__) return;
33
+ const runtimeConsole = Reflect.get(globalThis, "console");
34
+ if (typeof runtimeConsole === "object" && runtimeConsole !== null && "warn" in runtimeConsole && typeof runtimeConsole.warn === "function") {
35
+ runtimeConsole.warn(message, error);
36
+ }
37
+ };
38
+ const cloneMarkdownNode = node => {
39
+ return {
40
+ ...node,
41
+ children: node.children?.map(cloneMarkdownNode)
42
+ };
43
+ };
44
+ const getParserOptionsKey = options => {
45
+ if (!options) return "gfm:default|math:default";
46
+ const gfm = options.gfm === undefined ? "default" : options.gfm ? "1" : "0";
47
+ const math = options.math === undefined ? "default" : options.math ? "1" : "0";
48
+ return `gfm:${gfm}|math:${math}`;
49
+ };
50
+ const normalizeParserOptions = options => {
51
+ if (!options) return undefined;
52
+ const gfm = options.gfm;
53
+ const math = options.math;
54
+ if (gfm === undefined && math === undefined) {
55
+ return undefined;
56
+ }
57
+ return {
58
+ gfm,
59
+ math
60
+ };
61
+ };
62
+ const parseWithNativeParser = (text, options) => {
63
+ if (options) {
64
+ return (0, _headless.parseMarkdownWithOptions)(text, options);
65
+ }
66
+ return (0, _headless.parseMarkdown)(text);
67
+ };
68
+ const getCachedParsedAst = (text, options) => {
69
+ if (text.length > MAX_CACHEABLE_TEXT_LENGTH) {
70
+ return parseWithNativeParser(text, options);
71
+ }
72
+ const cacheKey = `${getParserOptionsKey(options)}|${text}`;
73
+ const cachedNode = parseAstCache.get(cacheKey);
74
+ if (cachedNode) {
75
+ parseAstCache.delete(cacheKey);
76
+ parseAstCache.set(cacheKey, cachedNode);
77
+ return cloneMarkdownNode(cachedNode);
78
+ }
79
+ const parsedNode = parseWithNativeParser(text, options);
80
+ parseAstCache.set(cacheKey, parsedNode);
81
+ if (parseAstCache.size > MAX_PARSE_CACHE_ENTRIES) {
82
+ const oldestCacheKey = parseAstCache.keys().next().value;
83
+ if (typeof oldestCacheKey === "string") {
84
+ parseAstCache.delete(oldestCacheKey);
85
+ }
86
+ }
87
+ return cloneMarkdownNode(parsedNode);
88
+ };
89
+ const applyBeforeParsePlugins = (markdown, plugins, onError) => {
90
+ if (!plugins || plugins.length === 0) {
91
+ return markdown;
92
+ }
93
+ const sorted = [...plugins].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
94
+ let nextMarkdown = markdown;
95
+ for (const plugin of sorted) {
96
+ if (!plugin.beforeParse) continue;
97
+ try {
98
+ const transformed = plugin.beforeParse(nextMarkdown);
99
+ if (typeof transformed === "string") {
100
+ nextMarkdown = transformed;
101
+ }
102
+ } catch (error) {
103
+ const pluginLabel = plugin.name ? ` (${plugin.name})` : "";
104
+ warnInDev(`[react-native-nitro-markdown] plugin beforeParse${pluginLabel} threw; using previous markdown.`, error);
105
+ onError?.(error instanceof Error ? error : new Error(String(error)), 'before-plugin', plugin.name);
106
+ }
107
+ }
108
+ return nextMarkdown;
109
+ };
110
+ const applyAfterParsePlugins = (ast, plugins, onError) => {
111
+ if (!plugins || plugins.length === 0) {
112
+ return ast;
113
+ }
114
+ const sorted = [...plugins].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
115
+ let nextAst = ast;
116
+ for (const plugin of sorted) {
117
+ if (!plugin.afterParse) continue;
118
+ try {
119
+ const transformed = plugin.afterParse(nextAst);
120
+ if (isMarkdownNode(transformed)) {
121
+ nextAst = transformed;
122
+ }
123
+ } catch (error) {
124
+ const pluginLabel = plugin.name ? ` (${plugin.name})` : "";
125
+ warnInDev(`[react-native-nitro-markdown] plugin afterParse${pluginLabel} threw; using previous AST.`, error);
126
+ onError?.(error instanceof Error ? error : new Error(String(error)), 'after-plugin', plugin.name);
127
+ }
128
+ }
129
+ return nextAst;
130
+ };
24
131
  const Markdown = ({
25
132
  children,
26
133
  options,
134
+ plugins,
135
+ sourceAst,
136
+ astTransform,
27
137
  renderers = {},
28
138
  theme: userTheme,
29
139
  styles: nodeStyles,
@@ -31,43 +141,87 @@ const Markdown = ({
31
141
  style,
32
142
  onParsingInProgress,
33
143
  onParseComplete,
34
- onLinkPress
144
+ onLinkPress,
145
+ onError,
146
+ virtualize = false,
147
+ virtualizationMinBlocks = 40,
148
+ virtualization,
149
+ tableOptions,
150
+ highlightCode
35
151
  }) => {
152
+ const parserOptionGfm = options?.gfm;
153
+ const parserOptionMath = options?.math;
36
154
  const parseResult = (0, _react.useMemo)(() => {
37
155
  try {
38
- let ast;
39
- if (options) {
40
- ast = (0, _headless.parseMarkdownWithOptions)(children, options);
41
- } else {
42
- ast = (0, _headless.parseMarkdown)(children);
156
+ const markdownToParse = applyBeforeParsePlugins(children, plugins, onError ? (e, phase, name) => onError(e, phase, name) : undefined);
157
+ const parserOptions = normalizeParserOptions({
158
+ gfm: parserOptionGfm,
159
+ math: parserOptionMath
160
+ });
161
+ let parsedAst = sourceAst ? cloneMarkdownNode(sourceAst) : getCachedParsedAst(markdownToParse, parserOptions);
162
+ parsedAst = applyAfterParsePlugins(parsedAst, plugins, onError ? (e, phase, name) => onError(e, phase, name) : undefined);
163
+ let ast = parsedAst;
164
+ if (astTransform) {
165
+ try {
166
+ const nextAst = astTransform(parsedAst);
167
+ if (isMarkdownNode(nextAst)) {
168
+ ast = nextAst;
169
+ }
170
+ } catch (error) {
171
+ warnInDev("[react-native-nitro-markdown] astTransform threw; falling back to parsed AST.", error);
172
+ ast = parsedAst;
173
+ }
43
174
  }
44
175
  return {
45
- ast,
46
- text: (0, _headless.getFlattenedText)(ast)
176
+ ast
47
177
  };
48
- } catch {
178
+ } catch (parseError) {
179
+ onError?.(parseError instanceof Error ? parseError : new Error(String(parseError)), 'parse');
49
180
  return {
50
- ast: null,
51
- text: ""
181
+ ast: null
52
182
  };
53
183
  }
54
- }, [children, options]);
184
+ }, [children, parserOptionGfm, parserOptionMath, plugins, sourceAst, astTransform, onError]);
55
185
  (0, _react.useEffect)(() => {
56
186
  onParsingInProgress?.();
57
- }, [children, options, onParsingInProgress]);
187
+ }, [children, parserOptionGfm, parserOptionMath, plugins, onParsingInProgress]);
58
188
  (0, _react.useEffect)(() => {
59
- if (!parseResult.ast) return;
60
- onParseComplete?.({
189
+ if (!parseResult.ast || !onParseComplete) return;
190
+ onParseComplete({
61
191
  raw: children,
62
192
  ast: parseResult.ast,
63
- text: parseResult.text
193
+ text: (0, _headless.getFlattenedText)(parseResult.ast)
64
194
  });
65
- }, [children, onParseComplete, parseResult.ast, parseResult.text]);
195
+ }, [children, onParseComplete, parseResult.ast]);
66
196
  const theme = (0, _react.useMemo)(() => {
67
197
  const base = stylingStrategy === "minimal" ? _theme.minimalMarkdownTheme : _theme.defaultMarkdownTheme;
68
198
  return (0, _theme.mergeThemes)(base, userTheme);
69
199
  }, [userTheme, stylingStrategy]);
70
200
  const baseStyles = getBaseStyles(theme);
201
+ const contextValue = (0, _react.useMemo)(() => ({
202
+ renderers,
203
+ theme,
204
+ styles: nodeStyles,
205
+ stylingStrategy,
206
+ onLinkPress,
207
+ tableOptions,
208
+ highlightCode
209
+ }), [renderers, theme, nodeStyles, stylingStrategy, onLinkPress, tableOptions, highlightCode]);
210
+ const topLevelBlocks = parseResult.ast?.type === "document" ? parseResult.ast.children ?? [] : parseResult.ast ? [parseResult.ast] : [];
211
+ const shouldVirtualizeBySetting = virtualize === true || virtualize === "auto" && topLevelBlocks.length >= virtualizationMinBlocks;
212
+ const shouldVirtualize = parseResult.ast !== null && shouldVirtualizeBySetting;
213
+ const keyExtractor = (0, _react.useCallback)((node, index) => {
214
+ const beg = typeof node.beg === "number" ? node.beg : index;
215
+ const end = typeof node.end === "number" ? node.end : index;
216
+ return `${node.type}:${beg}:${end}:${index}`;
217
+ }, []);
218
+ const renderVirtualizedItem = (0, _react.useCallback)(({
219
+ item
220
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(NodeRenderer, {
221
+ node: item,
222
+ depth: 0,
223
+ inListItem: false
224
+ }), []);
71
225
  if (!parseResult.ast) {
72
226
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
73
227
  style: [baseStyles.container, style],
@@ -78,16 +232,21 @@ const Markdown = ({
78
232
  });
79
233
  }
80
234
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MarkdownContext.MarkdownContext.Provider, {
81
- value: {
82
- renderers,
83
- theme,
84
- styles: nodeStyles,
85
- stylingStrategy,
86
- onLinkPress
87
- },
235
+ value: contextValue,
88
236
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
89
237
  style: [baseStyles.container, style],
90
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(NodeRenderer, {
238
+ children: shouldVirtualize ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
239
+ data: topLevelBlocks,
240
+ renderItem: renderVirtualizedItem,
241
+ keyExtractor: keyExtractor,
242
+ style: baseStyles.virtualizedList,
243
+ initialNumToRender: virtualization?.initialNumToRender ?? 12,
244
+ maxToRenderPerBatch: virtualization?.maxToRenderPerBatch ?? 12,
245
+ windowSize: virtualization?.windowSize ?? 10,
246
+ updateCellsBatchingPeriod: virtualization?.updateCellsBatchingPeriod ?? 16,
247
+ removeClippedSubviews: virtualization?.removeClippedSubviews ?? true,
248
+ showsVerticalScrollIndicator: false
249
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(NodeRenderer, {
91
250
  node: parseResult.ast,
92
251
  depth: 0,
93
252
  inListItem: false
@@ -99,7 +258,7 @@ exports.Markdown = Markdown;
99
258
  const isInline = type => {
100
259
  return type === "text" || type === "bold" || type === "italic" || type === "strikethrough" || type === "link" || type === "code_inline" || type === "soft_break" || type === "line_break" || type === "html_inline" || type === "math_inline";
101
260
  };
102
- const NodeRenderer = ({
261
+ const NodeRendererComponent = ({
103
262
  node,
104
263
  depth,
105
264
  inListItem,
@@ -363,6 +522,9 @@ const NodeRenderer = ({
363
522
  return null;
364
523
  }
365
524
  };
525
+ const NodeRenderer = /*#__PURE__*/(0, _react.memo)(NodeRendererComponent, (previousProps, nextProps) => {
526
+ return previousProps.node === nextProps.node && previousProps.depth === nextProps.depth && previousProps.inListItem === nextProps.inListItem && previousProps.parentIsText === nextProps.parentIsText;
527
+ });
366
528
  const getBaseStyles = theme => {
367
529
  const cached = baseStylesCache.get(theme);
368
530
  if (cached) return cached;
@@ -374,6 +536,9 @@ const createBaseStyles = theme => _reactNative.StyleSheet.create({
374
536
  container: {
375
537
  flex: 1
376
538
  },
539
+ virtualizedList: {
540
+ flex: 1
541
+ },
377
542
  document: {
378
543
  flex: 1
379
544
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_headless","_MarkdownContext","_blockquote","_code","_heading","_horizontalRule","_image","_link","_list","_math","_paragraph","_table","_theme","_jsxRuntime","baseStylesCache","WeakMap","Markdown","children","options","renderers","theme","userTheme","styles","nodeStyles","stylingStrategy","style","onParsingInProgress","onParseComplete","onLinkPress","parseResult","useMemo","ast","parseMarkdownWithOptions","parseMarkdown","text","getFlattenedText","useEffect","raw","base","minimalMarkdownTheme","defaultMarkdownTheme","mergeThemes","baseStyles","getBaseStyles","jsx","View","container","Text","errorText","MarkdownContext","Provider","value","NodeRenderer","node","depth","inListItem","exports","isInline","type","parentIsText","useMarkdownContext","renderChildren","childInListItem","childParentIsText","length","elements","currentInlineGroup","flushInlineGroup","hasMath","some","child","push","flexDirection","alignItems","flexWrap","flexShrink","map","n","idx","Wrapper","Fragment","wrapperProps","forEach","index","customRenderer","childrenRendered","baseProps","Renderer","enhancedProps","level","href","title","url","alt","content","getTextContent","language","ordered","start","checked","result","undefined","nodeStyleOverride","document","Heading","Paragraph","bold","italic","strikethrough","Link","Image","InlineCode","CodeBlock","Blockquote","HorizontalRule","mathContent","replace","trim","MathInline","MathBlock","List","ListItem","TaskListItem","TableRenderer","cached","get","created","createBaseStyles","set","StyleSheet","create","flex","color","fontSize","fontFamily","fontFamilies","mono","Platform","OS","includeFontPadding","colors","fontSizes","m","lineHeight","regular","fontWeight","fontStyle","textDecorationLine"],"sourceRoot":"../../src","sources":["markdown.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_headless","_MarkdownContext","_blockquote","_code","_heading","_horizontalRule","_image","_link","_list","_math","_paragraph","_table","_theme","_jsxRuntime","baseStylesCache","WeakMap","parseAstCache","Map","MAX_PARSE_CACHE_ENTRIES","MAX_CACHEABLE_TEXT_LENGTH","isMarkdownNode","value","Reflect","get","warnInDev","message","error","__DEV__","runtimeConsole","globalThis","warn","cloneMarkdownNode","node","children","map","getParserOptionsKey","options","gfm","undefined","math","normalizeParserOptions","parseWithNativeParser","text","parseMarkdownWithOptions","parseMarkdown","getCachedParsedAst","length","cacheKey","cachedNode","delete","set","parsedNode","size","oldestCacheKey","keys","next","applyBeforeParsePlugins","markdown","plugins","onError","sorted","sort","a","b","priority","nextMarkdown","plugin","beforeParse","transformed","pluginLabel","name","Error","String","applyAfterParsePlugins","ast","nextAst","afterParse","Markdown","sourceAst","astTransform","renderers","theme","userTheme","styles","nodeStyles","stylingStrategy","style","onParsingInProgress","onParseComplete","onLinkPress","virtualize","virtualizationMinBlocks","virtualization","tableOptions","highlightCode","parserOptionGfm","parserOptionMath","parseResult","useMemo","markdownToParse","e","phase","parserOptions","parsedAst","parseError","useEffect","raw","getFlattenedText","base","minimalMarkdownTheme","defaultMarkdownTheme","mergeThemes","baseStyles","getBaseStyles","contextValue","topLevelBlocks","type","shouldVirtualizeBySetting","shouldVirtualize","keyExtractor","useCallback","index","beg","end","renderVirtualizedItem","item","jsx","NodeRenderer","depth","inListItem","View","container","Text","errorText","MarkdownContext","Provider","FlatList","data","renderItem","virtualizedList","initialNumToRender","maxToRenderPerBatch","windowSize","updateCellsBatchingPeriod","removeClippedSubviews","showsVerticalScrollIndicator","exports","isInline","NodeRendererComponent","parentIsText","useMarkdownContext","renderChildren","childInListItem","childParentIsText","elements","currentInlineGroup","flushInlineGroup","hasMath","some","child","push","flexDirection","alignItems","flexWrap","flexShrink","n","idx","Wrapper","Fragment","wrapperProps","forEach","customRenderer","childrenRendered","baseProps","Renderer","enhancedProps","level","href","title","url","alt","content","getTextContent","language","ordered","start","checked","result","nodeStyleOverride","document","Heading","Paragraph","bold","italic","strikethrough","Link","Image","InlineCode","CodeBlock","Blockquote","HorizontalRule","mathContent","replace","trim","MathInline","MathBlock","List","ListItem","TaskListItem","TableRenderer","memo","previousProps","nextProps","cached","created","createBaseStyles","StyleSheet","create","flex","color","fontSize","fontFamily","fontFamilies","mono","Platform","OS","includeFontPadding","colors","fontSizes","m","lineHeight","regular","fontWeight","fontStyle","textDecorationLine"],"sourceRoot":"../../src","sources":["markdown.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
9
  var _headless = require("../headless.js");
10
10
  var _MarkdownContext = require("../MarkdownContext.js");
11
+ var _codeHighlight = require("../utils/code-highlight.js");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  const CodeBlock = ({
13
14
  language,
@@ -15,9 +16,11 @@ const CodeBlock = ({
15
16
  node,
16
17
  style
17
18
  }) => {
19
+ const ctx = (0, _MarkdownContext.useMarkdownContext)();
18
20
  const {
19
21
  theme
20
- } = (0, _MarkdownContext.useMarkdownContext)();
22
+ } = ctx;
23
+ const highlighter = ctx.highlightCode === true ? _codeHighlight.defaultHighlighter : typeof ctx.highlightCode === 'function' ? ctx.highlightCode : null;
21
24
  const displayContent = content ?? (node ? (0, _headless.getTextContent)(node) : "");
22
25
  const styles = (0, _react.useMemo)(() => _reactNative.StyleSheet.create({
23
26
  codeBlock: {
@@ -62,8 +65,24 @@ const CodeBlock = ({
62
65
  }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
63
66
  horizontal: true,
64
67
  showsHorizontalScrollIndicator: false,
65
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
68
+ bounces: false,
69
+ children: highlighter && language ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
70
+ style: styles.codeBlockText,
71
+ selectable: true,
72
+ children: highlighter(language, displayContent).map((token, i) => {
73
+ const tokenColor = ctx.theme.colors.codeTokenColors?.[token.type];
74
+ return tokenColor ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
75
+ style: {
76
+ color: tokenColor
77
+ },
78
+ children: token.text
79
+ }, i) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
80
+ children: token.text
81
+ }, i);
82
+ })
83
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
66
84
  style: styles.codeBlockText,
85
+ selectable: true,
67
86
  children: displayContent
68
87
  })
69
88
  })]