react-native-nitro-markdown 0.3.2 → 0.4.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 (99) hide show
  1. package/README.md +84 -82
  2. package/cpp/core/MD4CParser.cpp +60 -25
  3. package/cpp/core/MD4CParser.hpp +13 -1
  4. package/cpp/md4c/md4c.c +1 -1
  5. package/lib/commonjs/index.js +0 -22
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/markdown-stream.js +53 -4
  8. package/lib/commonjs/markdown-stream.js.map +1 -1
  9. package/lib/commonjs/markdown.js +20 -5
  10. package/lib/commonjs/markdown.js.map +1 -1
  11. package/lib/commonjs/renderers/code.js +9 -2
  12. package/lib/commonjs/renderers/code.js.map +1 -1
  13. package/lib/commonjs/renderers/heading.js +14 -5
  14. package/lib/commonjs/renderers/heading.js.map +1 -1
  15. package/lib/commonjs/renderers/image.js +12 -3
  16. package/lib/commonjs/renderers/image.js.map +1 -1
  17. package/lib/commonjs/renderers/link.js +6 -1
  18. package/lib/commonjs/renderers/link.js.map +1 -1
  19. package/lib/commonjs/renderers/list.js +32 -8
  20. package/lib/commonjs/renderers/list.js.map +1 -1
  21. package/lib/commonjs/renderers/math.js +8 -2
  22. package/lib/commonjs/renderers/math.js.map +1 -1
  23. package/lib/commonjs/renderers/table.js +8 -2
  24. package/lib/commonjs/renderers/table.js.map +1 -1
  25. package/lib/commonjs/theme.js +47 -84
  26. package/lib/commonjs/theme.js.map +1 -1
  27. package/lib/module/index.js +1 -2
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/markdown-stream.js +54 -5
  30. package/lib/module/markdown-stream.js.map +1 -1
  31. package/lib/module/markdown.js +21 -6
  32. package/lib/module/markdown.js.map +1 -1
  33. package/lib/module/renderers/code.js +9 -2
  34. package/lib/module/renderers/code.js.map +1 -1
  35. package/lib/module/renderers/heading.js +15 -6
  36. package/lib/module/renderers/heading.js.map +1 -1
  37. package/lib/module/renderers/image.js +13 -4
  38. package/lib/module/renderers/image.js.map +1 -1
  39. package/lib/module/renderers/link.js +7 -2
  40. package/lib/module/renderers/link.js.map +1 -1
  41. package/lib/module/renderers/list.js +33 -9
  42. package/lib/module/renderers/list.js.map +1 -1
  43. package/lib/module/renderers/math.js +8 -2
  44. package/lib/module/renderers/math.js.map +1 -1
  45. package/lib/module/renderers/table.js +9 -3
  46. package/lib/module/renderers/table.js.map +1 -1
  47. package/lib/module/theme.js +46 -83
  48. package/lib/module/theme.js.map +1 -1
  49. package/lib/typescript/commonjs/index.d.ts +1 -2
  50. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/markdown-stream.d.ts +16 -0
  52. package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/markdown.d.ts +2 -2
  54. package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
  56. package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -1
  58. package/lib/typescript/commonjs/renderers/link.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/theme.d.ts +3 -4
  63. package/lib/typescript/commonjs/theme.d.ts.map +1 -1
  64. package/lib/typescript/module/index.d.ts +1 -2
  65. package/lib/typescript/module/index.d.ts.map +1 -1
  66. package/lib/typescript/module/markdown-stream.d.ts +16 -0
  67. package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
  68. package/lib/typescript/module/markdown.d.ts +2 -2
  69. package/lib/typescript/module/markdown.d.ts.map +1 -1
  70. package/lib/typescript/module/renderers/code.d.ts.map +1 -1
  71. package/lib/typescript/module/renderers/heading.d.ts.map +1 -1
  72. package/lib/typescript/module/renderers/image.d.ts.map +1 -1
  73. package/lib/typescript/module/renderers/link.d.ts.map +1 -1
  74. package/lib/typescript/module/renderers/list.d.ts.map +1 -1
  75. package/lib/typescript/module/renderers/math.d.ts.map +1 -1
  76. package/lib/typescript/module/renderers/table.d.ts.map +1 -1
  77. package/lib/typescript/module/theme.d.ts +3 -4
  78. package/lib/typescript/module/theme.d.ts.map +1 -1
  79. package/package.json +2 -2
  80. package/src/index.ts +0 -3
  81. package/src/markdown-stream.tsx +82 -5
  82. package/src/markdown.tsx +8 -2
  83. package/src/renderers/code.tsx +3 -0
  84. package/src/renderers/heading.tsx +24 -2
  85. package/src/renderers/image.tsx +4 -0
  86. package/src/renderers/link.tsx +10 -1
  87. package/src/renderers/list.tsx +30 -6
  88. package/src/renderers/math.tsx +2 -0
  89. package/src/renderers/table.tsx +3 -0
  90. package/src/theme.ts +51 -88
  91. package/lib/commonjs/default-markdown-renderer.js +0 -217
  92. package/lib/commonjs/default-markdown-renderer.js.map +0 -1
  93. package/lib/module/default-markdown-renderer.js +0 -212
  94. package/lib/module/default-markdown-renderer.js.map +0 -1
  95. package/lib/typescript/commonjs/default-markdown-renderer.d.ts +0 -10
  96. package/lib/typescript/commonjs/default-markdown-renderer.d.ts.map +0 -1
  97. package/lib/typescript/module/default-markdown-renderer.d.ts +0 -10
  98. package/lib/typescript/module/default-markdown-renderer.d.ts.map +0 -1
  99. package/src/default-markdown-renderer.tsx +0 -261
@@ -51,6 +51,7 @@ const createMathStyles = (theme: MarkdownTheme) =>
51
51
  Platform.select({ ios: "Courier", android: "monospace" }),
52
52
  fontSize: theme.fontSizes.s,
53
53
  color: theme.colors.code,
54
+ ...(Platform.OS === "android" && { includeFontPadding: false }),
54
55
  },
55
56
  mathBlockContainer: {
56
57
  marginVertical: theme.spacing.m,
@@ -81,6 +82,7 @@ const createMathStyles = (theme: MarkdownTheme) =>
81
82
  fontSize: theme.fontSizes.m,
82
83
  color: theme.colors.code,
83
84
  textAlign: "center",
85
+ ...(Platform.OS === "android" && { includeFontPadding: false }),
84
86
  },
85
87
  });
86
88
 
@@ -12,6 +12,7 @@ import {
12
12
  Text,
13
13
  StyleSheet,
14
14
  ScrollView,
15
+ Platform,
15
16
  type StyleProp,
16
17
  type TextStyle,
17
18
  type ViewStyle,
@@ -354,12 +355,14 @@ const createTableStyles = (theme: MarkdownTheme) => {
354
355
  fontSize: 12,
355
356
  fontWeight: "600",
356
357
  fontFamily: theme.fontFamilies?.regular,
358
+ ...(Platform.OS === "android" && { includeFontPadding: false }),
357
359
  },
358
360
  cellText: {
359
361
  color: colors.text || "#e5e7eb",
360
362
  fontSize: 14,
361
363
  lineHeight: 20,
362
364
  fontFamily: theme.fontFamilies?.regular,
365
+ ...(Platform.OS === "android" && { includeFontPadding: false }),
363
366
  },
364
367
  cellContentWrapper: {
365
368
  flexDirection: "row",
package/src/theme.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { TextStyle, ViewStyle } from "react-native";
1
+ import { Platform, type TextStyle, type ViewStyle } from "react-native";
2
2
  import type { MarkdownNode } from "./headless";
3
3
 
4
4
  export interface MarkdownTheme {
@@ -46,6 +46,7 @@ export interface MarkdownTheme {
46
46
  heading: string | undefined;
47
47
  mono: string | undefined;
48
48
  };
49
+ headingWeight?: TextStyle["fontWeight"];
49
50
  borderRadius: {
50
51
  s: number;
51
52
  m: number;
@@ -56,23 +57,23 @@ export interface MarkdownTheme {
56
57
 
57
58
  export const defaultMarkdownTheme: MarkdownTheme = {
58
59
  colors: {
59
- text: "#e0e0e0",
60
- textMuted: "#888",
61
- heading: "#f0f0f0",
62
- link: "#60a5fa",
63
- code: "#fbbf24",
64
- codeBackground: "#1a1a2e",
65
- codeLanguage: "#4ade80",
66
- blockquote: "#3b82f6",
67
- border: "#252525",
68
- surface: "#151515",
69
- surfaceLight: "#1a1a1a",
70
- accent: "#4ade80",
71
- tableBorder: "#334155",
72
- tableHeader: "#0f172a",
73
- tableHeaderText: "#94a3b8",
74
- tableRowEven: "#0f172a",
75
- tableRowOdd: "#1e293b",
60
+ text: "#0f172a",
61
+ textMuted: "#64748b",
62
+ heading: "#0f172a",
63
+ link: "#2563eb",
64
+ code: "#0f172a",
65
+ codeBackground: "#f1f5f9",
66
+ codeLanguage: "#94a3b8",
67
+ blockquote: "#cbd5f5",
68
+ border: "#e2e8f0",
69
+ surface: "#ffffff",
70
+ surfaceLight: "#f8fafc",
71
+ accent: "#2563eb",
72
+ tableBorder: "#e2e8f0",
73
+ tableHeader: "#f8fafc",
74
+ tableHeaderText: "#64748b",
75
+ tableRowEven: "transparent",
76
+ tableRowOdd: "#f8fafc",
76
77
  },
77
78
  spacing: {
78
79
  xs: 4,
@@ -95,22 +96,37 @@ export const defaultMarkdownTheme: MarkdownTheme = {
95
96
  h6: 14,
96
97
  },
97
98
  fontFamilies: {
98
- regular: undefined,
99
- heading: undefined,
100
- mono: undefined,
99
+ regular: Platform.select({
100
+ ios: "Avenir Next",
101
+ android: "sans-serif",
102
+ default: undefined,
103
+ }),
104
+ heading: Platform.select({
105
+ ios: "Avenir Next",
106
+ android: "sans-serif-medium",
107
+ default: undefined,
108
+ }),
109
+ mono: Platform.select({
110
+ ios: "Menlo",
111
+ android: "monospace",
112
+ default: "monospace",
113
+ }),
101
114
  },
115
+ headingWeight: undefined,
102
116
  borderRadius: {
103
- s: 4,
104
- m: 8,
105
- l: 12,
117
+ s: 6,
118
+ m: 10,
119
+ l: 14,
106
120
  },
107
- showCodeLanguage: true,
121
+ showCodeLanguage: false,
108
122
  };
109
123
 
110
124
  export type PartialMarkdownTheme = {
111
- [K in keyof MarkdownTheme]?: K extends "showCodeLanguage"
125
+ [K in keyof MarkdownTheme]?: K extends "showCodeLanguage" | "headingWeight"
112
126
  ? MarkdownTheme[K]
113
- : Partial<MarkdownTheme[K]>;
127
+ : MarkdownTheme[K] extends object
128
+ ? Partial<MarkdownTheme[K]>
129
+ : MarkdownTheme[K];
114
130
  };
115
131
 
116
132
  export type NodeStyleOverrides = Partial<
@@ -124,16 +140,16 @@ export const minimalMarkdownTheme: MarkdownTheme = {
124
140
  text: undefined,
125
141
  textMuted: undefined,
126
142
  heading: undefined,
127
- link: "#0066cc",
143
+ link: "#2563eb",
128
144
  code: undefined,
129
145
  codeBackground: "transparent",
130
- codeLanguage: "#888888",
131
- blockquote: "#cccccc",
132
- border: "#cccccc",
146
+ codeLanguage: "#94a3b8",
147
+ blockquote: "#cbd5f5",
148
+ border: "#e2e8f0",
133
149
  surface: "transparent",
134
150
  surfaceLight: "transparent",
135
- accent: "#0066cc",
136
- tableBorder: "#cccccc",
151
+ accent: "#2563eb",
152
+ tableBorder: "#e2e8f0",
137
153
  tableHeader: "transparent",
138
154
  tableHeaderText: undefined,
139
155
  tableRowEven: "transparent",
@@ -164,6 +180,7 @@ export const minimalMarkdownTheme: MarkdownTheme = {
164
180
  heading: undefined,
165
181
  mono: undefined,
166
182
  },
183
+ headingWeight: undefined,
167
184
  borderRadius: {
168
185
  s: 0,
169
186
  m: 0,
@@ -172,61 +189,6 @@ export const minimalMarkdownTheme: MarkdownTheme = {
172
189
  showCodeLanguage: false,
173
190
  };
174
191
 
175
- export const lightMarkdownTheme: MarkdownTheme = {
176
- colors: {
177
- text: "#1a1a1a",
178
- textMuted: "#6b7280",
179
- heading: "#000000",
180
- link: "#2563eb",
181
- code: "#ea580c",
182
- codeBackground: "#f3f4f6",
183
- codeLanguage: "#10b981",
184
- blockquote: "#3b82f6",
185
- border: "#e5e7eb",
186
- surface: "#ffffff",
187
- surfaceLight: "#f9fafb",
188
- accent: "#10b981",
189
- tableBorder: "#e5e7eb",
190
- tableHeader: "#f3f4f6",
191
- tableHeaderText: "#6b7280",
192
- tableRowEven: "#ffffff",
193
- tableRowOdd: "#f9fafb",
194
- },
195
- spacing: {
196
- xs: 4,
197
- s: 8,
198
- m: 12,
199
- l: 16,
200
- xl: 24,
201
- },
202
- fontSizes: {
203
- xs: 12,
204
- s: 14,
205
- m: 16,
206
- l: 18,
207
- xl: 22,
208
- h1: 32,
209
- h2: 26,
210
- h3: 22,
211
- h4: 18,
212
- h5: 16,
213
- h6: 14,
214
- },
215
- fontFamilies: {
216
- regular: undefined,
217
- heading: undefined,
218
- mono: undefined,
219
- },
220
- borderRadius: {
221
- s: 4,
222
- m: 8,
223
- l: 12,
224
- },
225
- showCodeLanguage: true,
226
- };
227
-
228
- export const darkMarkdownTheme = defaultMarkdownTheme;
229
-
230
192
  export const mergeThemes = (
231
193
  base: MarkdownTheme,
232
194
  partial?: PartialMarkdownTheme
@@ -238,6 +200,7 @@ export const mergeThemes = (
238
200
  fontSizes: { ...base.fontSizes, ...partial.fontSizes },
239
201
  fontFamilies: { ...base.fontFamilies, ...partial.fontFamilies },
240
202
  borderRadius: { ...base.borderRadius, ...partial.borderRadius },
203
+ headingWeight: partial.headingWeight ?? base.headingWeight,
241
204
  showCodeLanguage: partial.showCodeLanguage ?? base.showCodeLanguage,
242
205
  };
243
206
  };
@@ -1,217 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DefaultMarkdownRenderer = void 0;
7
- var _reactNative = require("react-native");
8
- var _headless = require("./headless.js");
9
- var _heading = require("./renderers/heading.js");
10
- var _paragraph = require("./renderers/paragraph.js");
11
- var _link = require("./renderers/link.js");
12
- var _blockquote = require("./renderers/blockquote.js");
13
- var _horizontalRule = require("./renderers/horizontal-rule.js");
14
- var _code = require("./renderers/code.js");
15
- var _list = require("./renderers/list.js");
16
- var _table = require("./renderers/table.js");
17
- var _image = require("./renderers/image.js");
18
- var _math = require("./renderers/math.js");
19
- var _theme = require("./theme.js");
20
- var _jsxRuntime = require("react/jsx-runtime");
21
- const isInline = type => {
22
- return type === "text" || type === "bold" || type === "italic" || type === "strikethrough" || type === "link" || type === "code_inline" || type === "soft_break" || type === "line_break" || type === "math_inline" || type === "html_inline";
23
- };
24
- const DefaultMarkdownRenderer = ({
25
- node,
26
- depth = 0,
27
- inListItem = false
28
- }) => {
29
- const renderChildren = (children, childInListItem = false) => {
30
- if (!children || children.length === 0) return null;
31
- const elements = [];
32
- let currentInlineGroup = [];
33
- const flushInlineGroup = () => {
34
- if (currentInlineGroup.length > 0) {
35
- elements.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
36
- style: styles.text,
37
- children: currentInlineGroup.map((child, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultMarkdownRenderer, {
38
- node: child,
39
- depth: depth + 1,
40
- inListItem: childInListItem
41
- }, `${child.type}-${index}`))
42
- }, `inline-group-${elements.length}`));
43
- currentInlineGroup = [];
44
- }
45
- };
46
- children.forEach((child, index) => {
47
- if (isInline(child.type)) {
48
- currentInlineGroup.push(child);
49
- } else {
50
- flushInlineGroup();
51
- elements.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultMarkdownRenderer, {
52
- node: child,
53
- depth: depth + 1,
54
- inListItem: childInListItem
55
- }, `${child.type}-${index}`));
56
- }
57
- });
58
- flushInlineGroup();
59
- return elements;
60
- };
61
- switch (node.type) {
62
- case "document":
63
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
64
- style: styles.document,
65
- children: renderChildren(node.children, false)
66
- });
67
- case "heading":
68
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_heading.Heading, {
69
- level: node.level ?? 1,
70
- children: renderChildren(node.children, inListItem)
71
- });
72
- case "paragraph":
73
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragraph.Paragraph, {
74
- inListItem: inListItem,
75
- children: renderChildren(node.children, inListItem)
76
- });
77
- case "text":
78
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
79
- style: styles.text,
80
- children: node.content
81
- });
82
- case "bold":
83
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
84
- style: styles.bold,
85
- children: renderChildren(node.children, inListItem)
86
- });
87
- case "italic":
88
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
89
- style: styles.italic,
90
- children: renderChildren(node.children, inListItem)
91
- });
92
- case "strikethrough":
93
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
94
- style: styles.strikethrough,
95
- children: renderChildren(node.children, inListItem)
96
- });
97
- case "link":
98
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_link.Link, {
99
- href: node.href ?? "",
100
- children: renderChildren(node.children, inListItem)
101
- });
102
- case "image":
103
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_image.Image, {
104
- url: node.href ?? "",
105
- title: node.title,
106
- alt: node.alt,
107
- Renderer: DefaultMarkdownRenderer
108
- });
109
- case "code_inline":
110
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_code.InlineCode, {
111
- children: node.content
112
- });
113
- case "code_block":
114
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_code.CodeBlock, {
115
- language: node.language,
116
- content: (0, _headless.getTextContent)(node)
117
- });
118
- case "blockquote":
119
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockquote.Blockquote, {
120
- children: renderChildren(node.children, inListItem)
121
- });
122
- case "horizontal_rule":
123
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_horizontalRule.HorizontalRule, {});
124
- case "line_break":
125
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
126
- children: "\n"
127
- });
128
- case "soft_break":
129
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
130
- children: " "
131
- });
132
- case "math_inline":
133
- {
134
- let mathContent = (0, _headless.getTextContent)(node);
135
- if (!mathContent) return null;
136
- mathContent = mathContent.replace(/^\$+|\$+$/g, "").trim();
137
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_math.MathInline, {
138
- content: mathContent
139
- });
140
- }
141
- case "math_block":
142
- {
143
- let mathContent = (0, _headless.getTextContent)(node);
144
- if (!mathContent) return null;
145
- mathContent = mathContent.replace(/^\$+|\$+$/g, "").trim();
146
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_math.MathBlock, {
147
- content: mathContent
148
- });
149
- }
150
- case "list":
151
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.List, {
152
- ordered: node.ordered ?? false,
153
- start: node.start,
154
- depth: depth,
155
- children: node.children?.map((child, index) => {
156
- if (child.type === "task_list_item") {
157
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultMarkdownRenderer, {
158
- node: child,
159
- depth: depth + 1,
160
- inListItem: true
161
- }, index);
162
- }
163
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.ListItem, {
164
- index: index,
165
- ordered: node.ordered ?? false,
166
- start: node.start ?? 1,
167
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DefaultMarkdownRenderer, {
168
- node: child,
169
- depth: depth + 1,
170
- inListItem: true
171
- })
172
- }, index);
173
- })
174
- });
175
- case "list_item":
176
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
177
- children: renderChildren(node.children, true)
178
- });
179
- case "task_list_item":
180
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.TaskListItem, {
181
- checked: node.checked ?? false,
182
- children: renderChildren(node.children, true)
183
- });
184
- case "table":
185
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_table.TableRenderer, {
186
- node: node,
187
- Renderer: DefaultMarkdownRenderer
188
- });
189
- case "table_head":
190
- case "table_body":
191
- case "table_row":
192
- case "table_cell":
193
- // Handled by TableRenderer
194
- return null;
195
- default:
196
- return null;
197
- }
198
- };
199
- exports.DefaultMarkdownRenderer = DefaultMarkdownRenderer;
200
- const styles = _reactNative.StyleSheet.create({
201
- document: {
202
- flex: 1
203
- },
204
- text: {
205
- color: _theme.defaultMarkdownTheme.colors.text
206
- },
207
- bold: {
208
- fontWeight: "700"
209
- },
210
- italic: {
211
- fontStyle: "italic"
212
- },
213
- strikethrough: {
214
- textDecorationLine: "line-through"
215
- }
216
- });
217
- //# sourceMappingURL=default-markdown-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_headless","_heading","_paragraph","_link","_blockquote","_horizontalRule","_code","_list","_table","_image","_math","_theme","_jsxRuntime","isInline","type","DefaultMarkdownRenderer","node","depth","inListItem","renderChildren","children","childInListItem","length","elements","currentInlineGroup","flushInlineGroup","push","jsx","Text","style","styles","text","map","child","index","forEach","View","document","Heading","level","Paragraph","content","bold","italic","strikethrough","Link","href","Image","url","title","alt","Renderer","InlineCode","CodeBlock","language","getTextContent","Blockquote","HorizontalRule","mathContent","replace","trim","MathInline","MathBlock","List","ordered","start","ListItem","Fragment","TaskListItem","checked","TableRenderer","exports","StyleSheet","create","flex","color","defaultMarkdownTheme","colors","fontWeight","fontStyle","textDecorationLine"],"sourceRoot":"../../src","sources":["default-markdown-renderer.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,212 +0,0 @@
1
- "use strict";
2
-
3
- import { View, Text, StyleSheet } from "react-native";
4
- import { getTextContent } from "./headless.js";
5
- import { Heading } from "./renderers/heading.js";
6
- import { Paragraph } from "./renderers/paragraph.js";
7
- import { Link } from "./renderers/link.js";
8
- import { Blockquote } from "./renderers/blockquote.js";
9
- import { HorizontalRule } from "./renderers/horizontal-rule.js";
10
- import { CodeBlock, InlineCode } from "./renderers/code.js";
11
- import { List, ListItem, TaskListItem } from "./renderers/list.js";
12
- import { TableRenderer } from "./renderers/table.js";
13
- import { Image } from "./renderers/image.js";
14
- import { MathInline, MathBlock } from "./renderers/math.js";
15
- import { defaultMarkdownTheme } from "./theme.js";
16
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
17
- const isInline = type => {
18
- return type === "text" || type === "bold" || type === "italic" || type === "strikethrough" || type === "link" || type === "code_inline" || type === "soft_break" || type === "line_break" || type === "math_inline" || type === "html_inline";
19
- };
20
- export const DefaultMarkdownRenderer = ({
21
- node,
22
- depth = 0,
23
- inListItem = false
24
- }) => {
25
- const renderChildren = (children, childInListItem = false) => {
26
- if (!children || children.length === 0) return null;
27
- const elements = [];
28
- let currentInlineGroup = [];
29
- const flushInlineGroup = () => {
30
- if (currentInlineGroup.length > 0) {
31
- elements.push(/*#__PURE__*/_jsx(Text, {
32
- style: styles.text,
33
- children: currentInlineGroup.map((child, index) => /*#__PURE__*/_jsx(DefaultMarkdownRenderer, {
34
- node: child,
35
- depth: depth + 1,
36
- inListItem: childInListItem
37
- }, `${child.type}-${index}`))
38
- }, `inline-group-${elements.length}`));
39
- currentInlineGroup = [];
40
- }
41
- };
42
- children.forEach((child, index) => {
43
- if (isInline(child.type)) {
44
- currentInlineGroup.push(child);
45
- } else {
46
- flushInlineGroup();
47
- elements.push(/*#__PURE__*/_jsx(DefaultMarkdownRenderer, {
48
- node: child,
49
- depth: depth + 1,
50
- inListItem: childInListItem
51
- }, `${child.type}-${index}`));
52
- }
53
- });
54
- flushInlineGroup();
55
- return elements;
56
- };
57
- switch (node.type) {
58
- case "document":
59
- return /*#__PURE__*/_jsx(View, {
60
- style: styles.document,
61
- children: renderChildren(node.children, false)
62
- });
63
- case "heading":
64
- return /*#__PURE__*/_jsx(Heading, {
65
- level: node.level ?? 1,
66
- children: renderChildren(node.children, inListItem)
67
- });
68
- case "paragraph":
69
- return /*#__PURE__*/_jsx(Paragraph, {
70
- inListItem: inListItem,
71
- children: renderChildren(node.children, inListItem)
72
- });
73
- case "text":
74
- return /*#__PURE__*/_jsx(Text, {
75
- style: styles.text,
76
- children: node.content
77
- });
78
- case "bold":
79
- return /*#__PURE__*/_jsx(Text, {
80
- style: styles.bold,
81
- children: renderChildren(node.children, inListItem)
82
- });
83
- case "italic":
84
- return /*#__PURE__*/_jsx(Text, {
85
- style: styles.italic,
86
- children: renderChildren(node.children, inListItem)
87
- });
88
- case "strikethrough":
89
- return /*#__PURE__*/_jsx(Text, {
90
- style: styles.strikethrough,
91
- children: renderChildren(node.children, inListItem)
92
- });
93
- case "link":
94
- return /*#__PURE__*/_jsx(Link, {
95
- href: node.href ?? "",
96
- children: renderChildren(node.children, inListItem)
97
- });
98
- case "image":
99
- return /*#__PURE__*/_jsx(Image, {
100
- url: node.href ?? "",
101
- title: node.title,
102
- alt: node.alt,
103
- Renderer: DefaultMarkdownRenderer
104
- });
105
- case "code_inline":
106
- return /*#__PURE__*/_jsx(InlineCode, {
107
- children: node.content
108
- });
109
- case "code_block":
110
- return /*#__PURE__*/_jsx(CodeBlock, {
111
- language: node.language,
112
- content: getTextContent(node)
113
- });
114
- case "blockquote":
115
- return /*#__PURE__*/_jsx(Blockquote, {
116
- children: renderChildren(node.children, inListItem)
117
- });
118
- case "horizontal_rule":
119
- return /*#__PURE__*/_jsx(HorizontalRule, {});
120
- case "line_break":
121
- return /*#__PURE__*/_jsx(Text, {
122
- children: "\n"
123
- });
124
- case "soft_break":
125
- return /*#__PURE__*/_jsx(Text, {
126
- children: " "
127
- });
128
- case "math_inline":
129
- {
130
- let mathContent = getTextContent(node);
131
- if (!mathContent) return null;
132
- mathContent = mathContent.replace(/^\$+|\$+$/g, "").trim();
133
- return /*#__PURE__*/_jsx(MathInline, {
134
- content: mathContent
135
- });
136
- }
137
- case "math_block":
138
- {
139
- let mathContent = getTextContent(node);
140
- if (!mathContent) return null;
141
- mathContent = mathContent.replace(/^\$+|\$+$/g, "").trim();
142
- return /*#__PURE__*/_jsx(MathBlock, {
143
- content: mathContent
144
- });
145
- }
146
- case "list":
147
- return /*#__PURE__*/_jsx(List, {
148
- ordered: node.ordered ?? false,
149
- start: node.start,
150
- depth: depth,
151
- children: node.children?.map((child, index) => {
152
- if (child.type === "task_list_item") {
153
- return /*#__PURE__*/_jsx(DefaultMarkdownRenderer, {
154
- node: child,
155
- depth: depth + 1,
156
- inListItem: true
157
- }, index);
158
- }
159
- return /*#__PURE__*/_jsx(ListItem, {
160
- index: index,
161
- ordered: node.ordered ?? false,
162
- start: node.start ?? 1,
163
- children: /*#__PURE__*/_jsx(DefaultMarkdownRenderer, {
164
- node: child,
165
- depth: depth + 1,
166
- inListItem: true
167
- })
168
- }, index);
169
- })
170
- });
171
- case "list_item":
172
- return /*#__PURE__*/_jsx(_Fragment, {
173
- children: renderChildren(node.children, true)
174
- });
175
- case "task_list_item":
176
- return /*#__PURE__*/_jsx(TaskListItem, {
177
- checked: node.checked ?? false,
178
- children: renderChildren(node.children, true)
179
- });
180
- case "table":
181
- return /*#__PURE__*/_jsx(TableRenderer, {
182
- node: node,
183
- Renderer: DefaultMarkdownRenderer
184
- });
185
- case "table_head":
186
- case "table_body":
187
- case "table_row":
188
- case "table_cell":
189
- // Handled by TableRenderer
190
- return null;
191
- default:
192
- return null;
193
- }
194
- };
195
- const styles = StyleSheet.create({
196
- document: {
197
- flex: 1
198
- },
199
- text: {
200
- color: defaultMarkdownTheme.colors.text
201
- },
202
- bold: {
203
- fontWeight: "700"
204
- },
205
- italic: {
206
- fontStyle: "italic"
207
- },
208
- strikethrough: {
209
- textDecorationLine: "line-through"
210
- }
211
- });
212
- //# sourceMappingURL=default-markdown-renderer.js.map