@saiansh2525/react-native-nitro-markdown 0.3.2

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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +468 -0
  3. package/android/CMakeLists.txt +40 -0
  4. package/android/build.gradle +92 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +4 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +7 -0
  8. package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +61 -0
  9. package/android/src/main/java/com/nitromarkdown/NitroMarkdownPackage.kt +27 -0
  10. package/cpp/CMakeLists.txt +46 -0
  11. package/cpp/bindings/HybridMarkdownParser.cpp +114 -0
  12. package/cpp/bindings/HybridMarkdownParser.hpp +28 -0
  13. package/cpp/bindings/HybridMarkdownSession.cpp +0 -0
  14. package/cpp/core/MD4CParser.cpp +440 -0
  15. package/cpp/core/MD4CParser.hpp +21 -0
  16. package/cpp/core/MarkdownSessionCore.cpp +0 -0
  17. package/cpp/core/MarkdownTypes.hpp +124 -0
  18. package/cpp/md4c/md4c.c +6610 -0
  19. package/cpp/md4c/md4c.h +410 -0
  20. package/ios/HybridMarkdownSession.swift +64 -0
  21. package/lib/commonjs/Markdown.nitro.js +6 -0
  22. package/lib/commonjs/Markdown.nitro.js.map +1 -0
  23. package/lib/commonjs/MarkdownContext.js +17 -0
  24. package/lib/commonjs/MarkdownContext.js.map +1 -0
  25. package/lib/commonjs/MarkdownSession.js +11 -0
  26. package/lib/commonjs/MarkdownSession.js.map +1 -0
  27. package/lib/commonjs/default-markdown-renderer.js +217 -0
  28. package/lib/commonjs/default-markdown-renderer.js.map +1 -0
  29. package/lib/commonjs/headless.js +98 -0
  30. package/lib/commonjs/headless.js.map +1 -0
  31. package/lib/commonjs/index.js +226 -0
  32. package/lib/commonjs/index.js.map +1 -0
  33. package/lib/commonjs/markdown-stream.js +32 -0
  34. package/lib/commonjs/markdown-stream.js.map +1 -0
  35. package/lib/commonjs/markdown.js +385 -0
  36. package/lib/commonjs/markdown.js.map +1 -0
  37. package/lib/commonjs/package.json +1 -0
  38. package/lib/commonjs/renderers/blockquote.js +36 -0
  39. package/lib/commonjs/renderers/blockquote.js.map +1 -0
  40. package/lib/commonjs/renderers/code.js +99 -0
  41. package/lib/commonjs/renderers/code.js.map +1 -0
  42. package/lib/commonjs/renderers/heading.js +63 -0
  43. package/lib/commonjs/renderers/heading.js.map +1 -0
  44. package/lib/commonjs/renderers/horizontal-rule.js +29 -0
  45. package/lib/commonjs/renderers/horizontal-rule.js.map +1 -0
  46. package/lib/commonjs/renderers/image.js +184 -0
  47. package/lib/commonjs/renderers/image.js.map +1 -0
  48. package/lib/commonjs/renderers/link.js +35 -0
  49. package/lib/commonjs/renderers/link.js.map +1 -0
  50. package/lib/commonjs/renderers/list.js +114 -0
  51. package/lib/commonjs/renderers/list.js.map +1 -0
  52. package/lib/commonjs/renderers/math.js +137 -0
  53. package/lib/commonjs/renderers/math.js.map +1 -0
  54. package/lib/commonjs/renderers/paragraph.js +37 -0
  55. package/lib/commonjs/renderers/paragraph.js.map +1 -0
  56. package/lib/commonjs/renderers/table.js +290 -0
  57. package/lib/commonjs/renderers/table.js.map +1 -0
  58. package/lib/commonjs/specs/MarkdownSession.nitro.js +6 -0
  59. package/lib/commonjs/specs/MarkdownSession.nitro.js.map +1 -0
  60. package/lib/commonjs/theme.js +191 -0
  61. package/lib/commonjs/theme.js.map +1 -0
  62. package/lib/commonjs/use-markdown-stream.js +71 -0
  63. package/lib/commonjs/use-markdown-stream.js.map +1 -0
  64. package/lib/module/Markdown.nitro.js +4 -0
  65. package/lib/module/Markdown.nitro.js.map +1 -0
  66. package/lib/module/MarkdownContext.js +12 -0
  67. package/lib/module/MarkdownContext.js.map +1 -0
  68. package/lib/module/MarkdownSession.js +7 -0
  69. package/lib/module/MarkdownSession.js.map +1 -0
  70. package/lib/module/default-markdown-renderer.js +212 -0
  71. package/lib/module/default-markdown-renderer.js.map +1 -0
  72. package/lib/module/headless.js +90 -0
  73. package/lib/module/headless.js.map +1 -0
  74. package/lib/module/index.js +21 -0
  75. package/lib/module/index.js.map +1 -0
  76. package/lib/module/markdown-stream.js +27 -0
  77. package/lib/module/markdown-stream.js.map +1 -0
  78. package/lib/module/markdown.js +380 -0
  79. package/lib/module/markdown.js.map +1 -0
  80. package/lib/module/package.json +1 -0
  81. package/lib/module/renderers/blockquote.js +31 -0
  82. package/lib/module/renderers/blockquote.js.map +1 -0
  83. package/lib/module/renderers/code.js +93 -0
  84. package/lib/module/renderers/code.js.map +1 -0
  85. package/lib/module/renderers/heading.js +58 -0
  86. package/lib/module/renderers/heading.js.map +1 -0
  87. package/lib/module/renderers/horizontal-rule.js +24 -0
  88. package/lib/module/renderers/horizontal-rule.js.map +1 -0
  89. package/lib/module/renderers/image.js +179 -0
  90. package/lib/module/renderers/image.js.map +1 -0
  91. package/lib/module/renderers/link.js +30 -0
  92. package/lib/module/renderers/link.js.map +1 -0
  93. package/lib/module/renderers/list.js +107 -0
  94. package/lib/module/renderers/list.js.map +1 -0
  95. package/lib/module/renderers/math.js +131 -0
  96. package/lib/module/renderers/math.js.map +1 -0
  97. package/lib/module/renderers/paragraph.js +32 -0
  98. package/lib/module/renderers/paragraph.js.map +1 -0
  99. package/lib/module/renderers/table.js +285 -0
  100. package/lib/module/renderers/table.js.map +1 -0
  101. package/lib/module/specs/MarkdownSession.nitro.js +4 -0
  102. package/lib/module/specs/MarkdownSession.nitro.js.map +1 -0
  103. package/lib/module/theme.js +186 -0
  104. package/lib/module/theme.js.map +1 -0
  105. package/lib/module/use-markdown-stream.js +66 -0
  106. package/lib/module/use-markdown-stream.js.map +1 -0
  107. package/lib/typescript/commonjs/Markdown.nitro.d.ts +13 -0
  108. package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/MarkdownContext.d.ts +65 -0
  110. package/lib/typescript/commonjs/MarkdownContext.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/MarkdownSession.d.ts +4 -0
  112. package/lib/typescript/commonjs/MarkdownSession.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/default-markdown-renderer.d.ts +10 -0
  114. package/lib/typescript/commonjs/default-markdown-renderer.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/headless.d.ts +61 -0
  116. package/lib/typescript/commonjs/headless.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/index.d.ts +22 -0
  118. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/markdown-stream.d.ts +15 -0
  120. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/markdown.d.ts +60 -0
  122. package/lib/typescript/commonjs/markdown.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/package.json +1 -0
  124. package/lib/typescript/commonjs/renderers/blockquote.d.ts +9 -0
  125. package/lib/typescript/commonjs/renderers/blockquote.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/renderers/code.d.ts +19 -0
  127. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/renderers/heading.d.ts +10 -0
  129. package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts +8 -0
  131. package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts.map +1 -0
  132. package/lib/typescript/commonjs/renderers/image.d.ts +13 -0
  133. package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/renderers/link.d.ts +10 -0
  135. package/lib/typescript/commonjs/renderers/link.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/renderers/list.d.ts +26 -0
  137. package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/renderers/math.d.ts +14 -0
  139. package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/renderers/paragraph.d.ts +10 -0
  141. package/lib/typescript/commonjs/renderers/paragraph.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/renderers/table.d.ts +12 -0
  143. package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts +12 -0
  145. package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/theme.d.ts +65 -0
  147. package/lib/typescript/commonjs/theme.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/use-markdown-stream.d.ts +22 -0
  149. package/lib/typescript/commonjs/use-markdown-stream.d.ts.map +1 -0
  150. package/lib/typescript/module/Markdown.nitro.d.ts +13 -0
  151. package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -0
  152. package/lib/typescript/module/MarkdownContext.d.ts +65 -0
  153. package/lib/typescript/module/MarkdownContext.d.ts.map +1 -0
  154. package/lib/typescript/module/MarkdownSession.d.ts +4 -0
  155. package/lib/typescript/module/MarkdownSession.d.ts.map +1 -0
  156. package/lib/typescript/module/default-markdown-renderer.d.ts +10 -0
  157. package/lib/typescript/module/default-markdown-renderer.d.ts.map +1 -0
  158. package/lib/typescript/module/headless.d.ts +61 -0
  159. package/lib/typescript/module/headless.d.ts.map +1 -0
  160. package/lib/typescript/module/index.d.ts +22 -0
  161. package/lib/typescript/module/index.d.ts.map +1 -0
  162. package/lib/typescript/module/markdown-stream.d.ts +15 -0
  163. package/lib/typescript/module/markdown-stream.d.ts.map +1 -0
  164. package/lib/typescript/module/markdown.d.ts +60 -0
  165. package/lib/typescript/module/markdown.d.ts.map +1 -0
  166. package/lib/typescript/module/package.json +1 -0
  167. package/lib/typescript/module/renderers/blockquote.d.ts +9 -0
  168. package/lib/typescript/module/renderers/blockquote.d.ts.map +1 -0
  169. package/lib/typescript/module/renderers/code.d.ts +19 -0
  170. package/lib/typescript/module/renderers/code.d.ts.map +1 -0
  171. package/lib/typescript/module/renderers/heading.d.ts +10 -0
  172. package/lib/typescript/module/renderers/heading.d.ts.map +1 -0
  173. package/lib/typescript/module/renderers/horizontal-rule.d.ts +8 -0
  174. package/lib/typescript/module/renderers/horizontal-rule.d.ts.map +1 -0
  175. package/lib/typescript/module/renderers/image.d.ts +13 -0
  176. package/lib/typescript/module/renderers/image.d.ts.map +1 -0
  177. package/lib/typescript/module/renderers/link.d.ts +10 -0
  178. package/lib/typescript/module/renderers/link.d.ts.map +1 -0
  179. package/lib/typescript/module/renderers/list.d.ts +26 -0
  180. package/lib/typescript/module/renderers/list.d.ts.map +1 -0
  181. package/lib/typescript/module/renderers/math.d.ts +14 -0
  182. package/lib/typescript/module/renderers/math.d.ts.map +1 -0
  183. package/lib/typescript/module/renderers/paragraph.d.ts +10 -0
  184. package/lib/typescript/module/renderers/paragraph.d.ts.map +1 -0
  185. package/lib/typescript/module/renderers/table.d.ts +12 -0
  186. package/lib/typescript/module/renderers/table.d.ts.map +1 -0
  187. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts +12 -0
  188. package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts.map +1 -0
  189. package/lib/typescript/module/theme.d.ts +65 -0
  190. package/lib/typescript/module/theme.d.ts.map +1 -0
  191. package/lib/typescript/module/use-markdown-stream.d.ts +22 -0
  192. package/lib/typescript/module/use-markdown-stream.d.ts.map +1 -0
  193. package/nitro.json +19 -0
  194. package/nitrogen/generated/.gitattributes +1 -0
  195. package/nitrogen/generated/android/NitroMarkdown+autolinking.cmake +82 -0
  196. package/nitrogen/generated/android/NitroMarkdown+autolinking.gradle +27 -0
  197. package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +56 -0
  198. package/nitrogen/generated/android/NitroMarkdownOnLoad.hpp +25 -0
  199. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  200. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.cpp +91 -0
  201. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +70 -0
  202. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/Func_void.kt +80 -0
  203. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSessionSpec.kt +78 -0
  204. package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/NitroMarkdownOnLoad.kt +35 -0
  205. package/nitrogen/generated/ios/NitroMarkdown+autolinking.rb +60 -0
  206. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.cpp +41 -0
  207. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.hpp +93 -0
  208. package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Umbrella.hpp +45 -0
  209. package/nitrogen/generated/ios/NitroMarkdownAutolinking.mm +43 -0
  210. package/nitrogen/generated/ios/NitroMarkdownAutolinking.swift +26 -0
  211. package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.cpp +11 -0
  212. package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.hpp +108 -0
  213. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  214. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec.swift +59 -0
  215. package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec_cxx.swift +190 -0
  216. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.cpp +22 -0
  217. package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.hpp +65 -0
  218. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.cpp +26 -0
  219. package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.hpp +67 -0
  220. package/nitrogen/generated/shared/c++/ParserOptions.hpp +87 -0
  221. package/package.json +134 -0
  222. package/react-native-nitro-markdown.podspec +42 -0
  223. package/src/Markdown.nitro.ts +12 -0
  224. package/src/MarkdownContext.ts +98 -0
  225. package/src/MarkdownSession.ts +8 -0
  226. package/src/default-markdown-renderer.tsx +261 -0
  227. package/src/headless.ts +171 -0
  228. package/src/index.ts +52 -0
  229. package/src/markdown-stream.tsx +32 -0
  230. package/src/markdown.tsx +521 -0
  231. package/src/renderers/blockquote.tsx +30 -0
  232. package/src/renderers/code.tsx +112 -0
  233. package/src/renderers/heading.tsx +66 -0
  234. package/src/renderers/horizontal-rule.tsx +23 -0
  235. package/src/renderers/image.tsx +204 -0
  236. package/src/renderers/link.tsx +33 -0
  237. package/src/renderers/list.tsx +123 -0
  238. package/src/renderers/math.tsx +147 -0
  239. package/src/renderers/paragraph.tsx +45 -0
  240. package/src/renderers/table.tsx +370 -0
  241. package/src/specs/MarkdownSession.nitro.ts +14 -0
  242. package/src/theme.ts +243 -0
  243. package/src/use-markdown-stream.ts +83 -0
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ import { useState, useLayoutEffect, useMemo } from "react";
4
+ import { View, Text, Image as RNImage, StyleSheet } from "react-native";
5
+ import { parseMarkdownWithOptions } from "../headless.js";
6
+ import { useMarkdownContext } from "../MarkdownContext.js";
7
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const renderInlineContent = (node, Renderer) => {
9
+ if (node.type === "paragraph" && node.children) {
10
+ return /*#__PURE__*/_jsx(_Fragment, {
11
+ children: node.children.map((child, idx) => /*#__PURE__*/_jsx(Renderer, {
12
+ node: child,
13
+ depth: 0,
14
+ inListItem: false
15
+ }, idx))
16
+ });
17
+ }
18
+ return null;
19
+ };
20
+ export const Image = ({
21
+ url,
22
+ title,
23
+ alt,
24
+ Renderer,
25
+ style
26
+ }) => {
27
+ const [loading, setLoading] = useState(true);
28
+ const [error, setError] = useState(false);
29
+ const [aspectRatio, setAspectRatio] = useState(undefined);
30
+ const {
31
+ theme
32
+ } = useMarkdownContext();
33
+ const styles = useMemo(() => StyleSheet.create({
34
+ imageContainer: {
35
+ marginVertical: theme.spacing.m,
36
+ alignItems: "center"
37
+ },
38
+ image: {
39
+ width: "100%",
40
+ // If we have an aspect ratio, use it. Otherwise, use minHeight as fallback.
41
+ aspectRatio: aspectRatio,
42
+ minHeight: aspectRatio ? undefined : 200,
43
+ borderRadius: theme.borderRadius.m,
44
+ backgroundColor: theme.colors.surface
45
+ },
46
+ imageHidden: {
47
+ opacity: 0,
48
+ position: "absolute"
49
+ },
50
+ imageLoading: {
51
+ width: "100%",
52
+ // Match the image size if possible
53
+ aspectRatio: aspectRatio,
54
+ height: aspectRatio ? undefined : 200,
55
+ borderRadius: theme.borderRadius.m,
56
+ backgroundColor: theme.colors.surface,
57
+ justifyContent: "center",
58
+ alignItems: "center"
59
+ },
60
+ imageLoadingText: {
61
+ color: theme.colors.textMuted,
62
+ fontSize: theme.fontSizes.s,
63
+ fontFamily: theme.fontFamilies.regular
64
+ },
65
+ imageError: {
66
+ width: "100%",
67
+ padding: theme.spacing.l,
68
+ borderRadius: theme.borderRadius.m,
69
+ backgroundColor: theme.colors.surface,
70
+ alignItems: "center",
71
+ marginVertical: theme.spacing.m
72
+ },
73
+ imageErrorText: {
74
+ color: theme.colors.textMuted,
75
+ fontSize: theme.fontSizes.s,
76
+ fontFamily: theme.fontFamilies.regular
77
+ },
78
+ imageCaption: {
79
+ color: theme.colors.textMuted,
80
+ fontSize: theme.fontSizes.xs,
81
+ marginTop: theme.spacing.s,
82
+ fontStyle: "italic",
83
+ textAlign: "center",
84
+ fontFamily: theme.fontFamilies.regular
85
+ }
86
+ }), [theme, aspectRatio]);
87
+ useLayoutEffect(() => {
88
+ // Fast path for consistent aspect ratios if checking picsum
89
+ const picsumMatch = url.match(/picsum\.photos\/.*\/(\d+)\/(\d+)/);
90
+ if (picsumMatch) {
91
+ const w = parseInt(picsumMatch[1], 10);
92
+ const h = parseInt(picsumMatch[2], 10);
93
+ if (!isNaN(w) && !isNaN(h) && h !== 0) {
94
+ setAspectRatio(w / h);
95
+ }
96
+ }
97
+ RNImage.getSize(url, (width, height) => {
98
+ if (width > 0 && height > 0) {
99
+ setAspectRatio(width / height);
100
+ }
101
+ }, () => {});
102
+ }, [url]);
103
+ const altContent = useMemo(() => {
104
+ if (!alt || !Renderer) return null;
105
+ if (alt.includes("$") || alt.includes("*") || alt.includes("_") || alt.includes("`") || alt.includes("[")) {
106
+ try {
107
+ const ast = parseMarkdownWithOptions(alt, {
108
+ math: true,
109
+ gfm: true
110
+ });
111
+ if (ast?.type === "document" && ast.children?.[0]?.type === "paragraph") {
112
+ const paragraph = ast.children[0];
113
+ const inlineContent = renderInlineContent(paragraph, Renderer);
114
+ if (inlineContent) {
115
+ return inlineContent;
116
+ }
117
+ }
118
+ return /*#__PURE__*/_jsx(Text, {
119
+ style: styles.imageErrorText,
120
+ children: alt
121
+ });
122
+ } catch {
123
+ return /*#__PURE__*/_jsx(Text, {
124
+ style: styles.imageErrorText,
125
+ children: alt
126
+ });
127
+ }
128
+ }
129
+ return /*#__PURE__*/_jsx(Text, {
130
+ style: styles.imageErrorText,
131
+ children: alt
132
+ });
133
+ }, [alt, Renderer, styles.imageErrorText]);
134
+ if (error) {
135
+ return /*#__PURE__*/_jsx(View, {
136
+ style: [styles.imageError, style],
137
+ children: /*#__PURE__*/_jsxs(View, {
138
+ style: {
139
+ flexDirection: "row",
140
+ alignItems: "baseline",
141
+ flexWrap: "wrap",
142
+ justifyContent: "center"
143
+ },
144
+ children: [/*#__PURE__*/_jsx(Text, {
145
+ style: styles.imageErrorText,
146
+ children: "\uD83D\uDDBC\uFE0F "
147
+ }), altContent || /*#__PURE__*/_jsx(Text, {
148
+ style: styles.imageErrorText,
149
+ children: title || "Image failed to load"
150
+ })]
151
+ })
152
+ });
153
+ }
154
+ return /*#__PURE__*/_jsxs(View, {
155
+ style: [styles.imageContainer, style],
156
+ children: [loading && !aspectRatio && /*#__PURE__*/_jsx(View, {
157
+ style: styles.imageLoading,
158
+ children: /*#__PURE__*/_jsx(Text, {
159
+ style: styles.imageLoadingText,
160
+ children: "Loading image..."
161
+ })
162
+ }), /*#__PURE__*/_jsx(RNImage, {
163
+ source: {
164
+ uri: url
165
+ },
166
+ style: [styles.image, loading && !aspectRatio && styles.imageHidden],
167
+ resizeMode: "contain",
168
+ onLoad: () => setLoading(false),
169
+ onError: () => {
170
+ setLoading(false);
171
+ setError(true);
172
+ }
173
+ }), title && !loading && /*#__PURE__*/_jsx(Text, {
174
+ style: styles.imageCaption,
175
+ children: title
176
+ })]
177
+ });
178
+ };
179
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useLayoutEffect","useMemo","View","Text","Image","RNImage","StyleSheet","parseMarkdownWithOptions","useMarkdownContext","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","renderInlineContent","node","Renderer","type","children","map","child","idx","depth","inListItem","url","title","alt","style","loading","setLoading","error","setError","aspectRatio","setAspectRatio","undefined","theme","styles","create","imageContainer","marginVertical","spacing","m","alignItems","image","width","minHeight","borderRadius","backgroundColor","colors","surface","imageHidden","opacity","position","imageLoading","height","justifyContent","imageLoadingText","color","textMuted","fontSize","fontSizes","s","fontFamily","fontFamilies","regular","imageError","padding","l","imageErrorText","imageCaption","xs","marginTop","fontStyle","textAlign","picsumMatch","match","w","parseInt","h","isNaN","getSize","altContent","includes","ast","math","gfm","paragraph","inlineContent","flexDirection","flexWrap","source","uri","resizeMode","onLoad","onError"],"sourceRoot":"../../../src","sources":["renderers/image.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from "react";
4
+ import { Text, StyleSheet, Linking } from "react-native";
5
+ import { useMarkdownContext } from "../MarkdownContext.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const Link = ({
8
+ href,
9
+ children,
10
+ style
11
+ }) => {
12
+ const {
13
+ theme
14
+ } = useMarkdownContext();
15
+ const styles = useMemo(() => StyleSheet.create({
16
+ link: {
17
+ color: theme.colors.link,
18
+ textDecorationLine: "underline"
19
+ }
20
+ }), [theme]);
21
+ const handlePress = () => {
22
+ if (href) Linking.openURL(href);
23
+ };
24
+ return /*#__PURE__*/_jsx(Text, {
25
+ style: [styles.link, style],
26
+ onPress: handlePress,
27
+ children: children
28
+ });
29
+ };
30
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","Text","StyleSheet","Linking","useMarkdownContext","jsx","_jsx","Link","href","children","style","theme","styles","create","link","color","colors","textDecorationLine","handlePress","openURL","onPress"],"sourceRoot":"../../../src","sources":["renderers/link.tsx"],"mappings":";;AAAA,SAAoBA,OAAO,QAAiB,OAAO;AACnD,SAASC,IAAI,EAAEC,UAAU,EAAEC,OAAO,QAAwB,cAAc;AACxE,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,IAAmB,GAAGA,CAAC;EAAEC,IAAI;EAAEC,QAAQ;EAAEC;AAAM,CAAC,KAAK;EAChE,MAAM;IAAEC;EAAM,CAAC,GAAGP,kBAAkB,CAAC,CAAC;EACtC,MAAMQ,MAAM,GAAGZ,OAAO,CACpB,MACEE,UAAU,CAACW,MAAM,CAAC;IAChBC,IAAI,EAAE;MACJC,KAAK,EAAEJ,KAAK,CAACK,MAAM,CAACF,IAAI;MACxBG,kBAAkB,EAAE;IACtB;EACF,CAAC,CAAC,EACJ,CAACN,KAAK,CACR,CAAC;EAED,MAAMO,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIV,IAAI,EAAEL,OAAO,CAACgB,OAAO,CAACX,IAAI,CAAC;EACjC,CAAC;EAED,oBACEF,IAAA,CAACL,IAAI;IAACS,KAAK,EAAE,CAACE,MAAM,CAACE,IAAI,EAAEJ,KAAK,CAAE;IAACU,OAAO,EAAEF,WAAY;IAAAT,QAAA,EACrDA;EAAQ,CACL,CAAC;AAEX,CAAC","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from "react";
4
+ import { View, Text, StyleSheet } from "react-native";
5
+ import { useMarkdownContext } from "../MarkdownContext.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export const List = ({
8
+ depth,
9
+ children,
10
+ style
11
+ }) => {
12
+ const {
13
+ theme
14
+ } = useMarkdownContext();
15
+ const styles = useMemo(() => StyleSheet.create({
16
+ list: {
17
+ marginBottom: theme.spacing.m
18
+ },
19
+ listNested: {
20
+ marginLeft: theme.spacing.s,
21
+ marginBottom: 0
22
+ }
23
+ }), [theme]);
24
+ return /*#__PURE__*/_jsx(View, {
25
+ style: [styles.list, depth > 0 && styles.listNested, style],
26
+ children: children
27
+ });
28
+ };
29
+ export const ListItem = ({
30
+ children,
31
+ index,
32
+ ordered,
33
+ start,
34
+ style
35
+ }) => {
36
+ const {
37
+ theme
38
+ } = useMarkdownContext();
39
+ const styles = useMemo(() => StyleSheet.create({
40
+ listItem: {
41
+ flexDirection: "row",
42
+ marginBottom: theme.spacing.s,
43
+ alignItems: "flex-start"
44
+ },
45
+ listBullet: {
46
+ color: theme.colors.accent,
47
+ fontSize: theme.fontSizes.m,
48
+ lineHeight: theme.fontSizes.m * 1.6,
49
+ marginRight: theme.spacing.s,
50
+ minWidth: 20,
51
+ textAlign: "center",
52
+ fontFamily: theme.fontFamilies.regular
53
+ },
54
+ listItemContent: {
55
+ flex: 1,
56
+ minWidth: 0
57
+ }
58
+ }), [theme]);
59
+ const bullet = ordered ? `${start + index}.` : "•";
60
+ return /*#__PURE__*/_jsxs(View, {
61
+ style: [styles.listItem, style],
62
+ children: [/*#__PURE__*/_jsx(Text, {
63
+ style: styles.listBullet,
64
+ children: bullet
65
+ }), /*#__PURE__*/_jsx(View, {
66
+ style: styles.listItemContent,
67
+ children: children
68
+ })]
69
+ });
70
+ };
71
+ export const TaskListItem = ({
72
+ children,
73
+ checked,
74
+ style
75
+ }) => {
76
+ const {
77
+ theme
78
+ } = useMarkdownContext();
79
+ const styles = useMemo(() => StyleSheet.create({
80
+ taskListItem: {
81
+ flexDirection: "row",
82
+ alignItems: "flex-start",
83
+ marginBottom: theme.spacing.s
84
+ },
85
+ taskCheckbox: {
86
+ fontSize: theme.fontSizes.l,
87
+ lineHeight: theme.fontSizes.m * 1.6,
88
+ marginRight: theme.spacing.s,
89
+ color: theme.colors.accent
90
+ },
91
+ taskContent: {
92
+ flex: 1,
93
+ minWidth: 0
94
+ }
95
+ }), [theme]);
96
+ return /*#__PURE__*/_jsxs(View, {
97
+ style: [styles.taskListItem, style],
98
+ children: [/*#__PURE__*/_jsx(Text, {
99
+ style: styles.taskCheckbox,
100
+ children: checked ? "☑" : "☐"
101
+ }), /*#__PURE__*/_jsx(View, {
102
+ style: styles.taskContent,
103
+ children: children
104
+ })]
105
+ });
106
+ };
107
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","Text","StyleSheet","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","List","depth","children","style","theme","styles","create","list","marginBottom","spacing","m","listNested","marginLeft","s","ListItem","index","ordered","start","listItem","flexDirection","alignItems","listBullet","color","colors","accent","fontSize","fontSizes","lineHeight","marginRight","minWidth","textAlign","fontFamily","fontFamilies","regular","listItemContent","flex","bullet","TaskListItem","checked","taskListItem","taskCheckbox","l","taskContent"],"sourceRoot":"../../../src","sources":["renderers/list.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from "react";
4
+ import { View, Text, StyleSheet, Platform } from "react-native";
5
+ import { useMarkdownContext } from "../MarkdownContext.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ let MathJaxComponent = null;
8
+ try {
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
10
+ const mathJaxModule = require("react-native-mathjax-svg");
11
+ MathJaxComponent = mathJaxModule.default || mathJaxModule;
12
+ } catch {
13
+ // ignored
14
+ }
15
+ const createMathStyles = theme => StyleSheet.create({
16
+ mathInlineContainer: {
17
+ marginHorizontal: 2,
18
+ // Ensure the inline view has layout alignment
19
+ justifyContent: "center"
20
+ },
21
+ mathInlineFallbackContainer: {
22
+ backgroundColor: theme.colors.codeBackground,
23
+ paddingHorizontal: theme.spacing.xs,
24
+ paddingVertical: 2,
25
+ borderRadius: theme.borderRadius.s,
26
+ marginHorizontal: 2
27
+ },
28
+ mathInlineFallback: {
29
+ fontFamily: theme.fontFamilies.mono ?? Platform.select({
30
+ ios: "Courier",
31
+ android: "monospace"
32
+ }),
33
+ fontSize: theme.fontSizes.s,
34
+ color: theme.colors.code
35
+ },
36
+ mathBlockContainer: {
37
+ marginVertical: theme.spacing.m,
38
+ paddingVertical: theme.spacing.l,
39
+ paddingHorizontal: theme.spacing.l,
40
+ backgroundColor: theme.colors.surface,
41
+ borderRadius: theme.borderRadius.l,
42
+ alignItems: "center",
43
+ borderWidth: 1,
44
+ borderColor: theme.colors.border,
45
+ // Ensure we don't collapse if MathJax fails to report size immediately
46
+ minHeight: 48
47
+ },
48
+ mathBlockFallbackContainer: {
49
+ marginVertical: theme.spacing.m,
50
+ paddingVertical: theme.spacing.m,
51
+ paddingHorizontal: theme.spacing.l,
52
+ backgroundColor: theme.colors.codeBackground,
53
+ borderRadius: theme.borderRadius.m,
54
+ alignItems: "center",
55
+ borderWidth: 1,
56
+ borderColor: theme.colors.border
57
+ },
58
+ mathBlockFallback: {
59
+ fontFamily: theme.fontFamilies.mono ?? Platform.select({
60
+ ios: "Courier",
61
+ android: "monospace"
62
+ }),
63
+ fontSize: theme.fontSizes.m,
64
+ color: theme.colors.code,
65
+ textAlign: "center"
66
+ }
67
+ });
68
+ export const MathInline = ({
69
+ content,
70
+ style
71
+ }) => {
72
+ const {
73
+ theme
74
+ } = useMarkdownContext();
75
+ const styles = useMemo(() => createMathStyles(theme), [theme]);
76
+ if (!content) return null;
77
+ if (MathJaxComponent) {
78
+ const fontSize = theme.fontSizes.s;
79
+ return /*#__PURE__*/_jsx(View, {
80
+ style: [styles.mathInlineContainer, style],
81
+ children: /*#__PURE__*/_jsx(MathJaxComponent, {
82
+ fontSize: fontSize,
83
+ color: theme.colors.text,
84
+ fontCache: false,
85
+ style: {
86
+ backgroundColor: "transparent"
87
+ },
88
+ children: content
89
+ })
90
+ });
91
+ }
92
+ return /*#__PURE__*/_jsx(View, {
93
+ style: [styles.mathInlineFallbackContainer, style],
94
+ children: /*#__PURE__*/_jsx(Text, {
95
+ style: styles.mathInlineFallback,
96
+ children: content
97
+ })
98
+ });
99
+ };
100
+ export const MathBlock = ({
101
+ content,
102
+ style
103
+ }) => {
104
+ const {
105
+ theme
106
+ } = useMarkdownContext();
107
+ const styles = useMemo(() => createMathStyles(theme), [theme]);
108
+ if (!content) return null;
109
+ if (MathJaxComponent) {
110
+ return /*#__PURE__*/_jsx(View, {
111
+ style: [styles.mathBlockContainer, style],
112
+ children: /*#__PURE__*/_jsx(MathJaxComponent, {
113
+ fontSize: theme.fontSizes.l,
114
+ color: theme.colors.text,
115
+ fontCache: false,
116
+ style: {
117
+ backgroundColor: "transparent"
118
+ },
119
+ children: `\\displaystyle ${content}`
120
+ })
121
+ });
122
+ }
123
+ return /*#__PURE__*/_jsx(View, {
124
+ style: [styles.mathBlockFallbackContainer, style],
125
+ children: /*#__PURE__*/_jsx(Text, {
126
+ style: styles.mathBlockFallback,
127
+ children: content
128
+ })
129
+ });
130
+ };
131
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","Text","StyleSheet","Platform","useMarkdownContext","jsx","_jsx","MathJaxComponent","mathJaxModule","require","default","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","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":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from "react";
4
+ import { View, StyleSheet } from "react-native";
5
+ import { useMarkdownContext } from "../MarkdownContext.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const Paragraph = ({
8
+ children,
9
+ inListItem,
10
+ style
11
+ }) => {
12
+ const {
13
+ theme
14
+ } = useMarkdownContext();
15
+ const styles = useMemo(() => StyleSheet.create({
16
+ paragraph: {
17
+ flexDirection: "row",
18
+ flexWrap: "wrap",
19
+ marginBottom: theme.spacing.l,
20
+ gap: 0
21
+ },
22
+ paragraphInListItem: {
23
+ marginBottom: 0,
24
+ marginTop: 0
25
+ }
26
+ }), [theme]);
27
+ return /*#__PURE__*/_jsx(View, {
28
+ style: [styles.paragraph, inListItem && styles.paragraphInListItem, style],
29
+ children: children
30
+ });
31
+ };
32
+ //# sourceMappingURL=paragraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","StyleSheet","useMarkdownContext","jsx","_jsx","Paragraph","children","inListItem","style","theme","styles","create","paragraph","flexDirection","flexWrap","marginBottom","spacing","l","gap","paragraphInListItem","marginTop"],"sourceRoot":"../../../src","sources":["renderers/paragraph.tsx"],"mappings":";;AAAA,SAAoBA,OAAO,QAAiB,OAAO;AACnD,SAASC,IAAI,EAAEC,UAAU,QAAwC,cAAc;AAC/E,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,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,GAAGX,OAAO,CACpB,MACEE,UAAU,CAACU,MAAM,CAAC;IAChBC,SAAS,EAAE;MACTC,aAAa,EAAE,KAAK;MACpBC,QAAQ,EAAE,MAAM;MAChBC,YAAY,EAAEN,KAAK,CAACO,OAAO,CAACC,CAAC;MAC7BC,GAAG,EAAE;IACP,CAAC;IACDC,mBAAmB,EAAE;MACnBJ,YAAY,EAAE,CAAC;MACfK,SAAS,EAAE;IACb;EACF,CAAC,CAAC,EACJ,CAACX,KAAK,CACR,CAAC;EAED,oBACEL,IAAA,CAACJ,IAAI;IACHQ,KAAK,EAAE,CACLE,MAAM,CAACE,SAAS,EAChBL,UAAU,IAAIG,MAAM,CAACS,mBAAmB,EACxCX,KAAK,CACL;IAAAF,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CAAC","ignoreList":[]}