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.
- package/README.md +84 -82
- package/cpp/core/MD4CParser.cpp +60 -25
- package/cpp/core/MD4CParser.hpp +13 -1
- package/cpp/md4c/md4c.c +1 -1
- package/lib/commonjs/index.js +0 -22
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/markdown-stream.js +53 -4
- package/lib/commonjs/markdown-stream.js.map +1 -1
- package/lib/commonjs/markdown.js +20 -5
- package/lib/commonjs/markdown.js.map +1 -1
- package/lib/commonjs/renderers/code.js +9 -2
- package/lib/commonjs/renderers/code.js.map +1 -1
- package/lib/commonjs/renderers/heading.js +14 -5
- package/lib/commonjs/renderers/heading.js.map +1 -1
- package/lib/commonjs/renderers/image.js +12 -3
- package/lib/commonjs/renderers/image.js.map +1 -1
- package/lib/commonjs/renderers/link.js +6 -1
- package/lib/commonjs/renderers/link.js.map +1 -1
- package/lib/commonjs/renderers/list.js +32 -8
- package/lib/commonjs/renderers/list.js.map +1 -1
- package/lib/commonjs/renderers/math.js +8 -2
- package/lib/commonjs/renderers/math.js.map +1 -1
- package/lib/commonjs/renderers/table.js +8 -2
- package/lib/commonjs/renderers/table.js.map +1 -1
- package/lib/commonjs/theme.js +47 -84
- package/lib/commonjs/theme.js.map +1 -1
- package/lib/module/index.js +1 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/markdown-stream.js +54 -5
- package/lib/module/markdown-stream.js.map +1 -1
- package/lib/module/markdown.js +21 -6
- package/lib/module/markdown.js.map +1 -1
- package/lib/module/renderers/code.js +9 -2
- package/lib/module/renderers/code.js.map +1 -1
- package/lib/module/renderers/heading.js +15 -6
- package/lib/module/renderers/heading.js.map +1 -1
- package/lib/module/renderers/image.js +13 -4
- package/lib/module/renderers/image.js.map +1 -1
- package/lib/module/renderers/link.js +7 -2
- package/lib/module/renderers/link.js.map +1 -1
- package/lib/module/renderers/list.js +33 -9
- package/lib/module/renderers/list.js.map +1 -1
- package/lib/module/renderers/math.js +8 -2
- package/lib/module/renderers/math.js.map +1 -1
- package/lib/module/renderers/table.js +9 -3
- package/lib/module/renderers/table.js.map +1 -1
- package/lib/module/theme.js +46 -83
- package/lib/module/theme.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -2
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/markdown-stream.d.ts +16 -0
- package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
- package/lib/typescript/commonjs/markdown.d.ts +2 -2
- package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/link.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme.d.ts +3 -4
- package/lib/typescript/commonjs/theme.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -2
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/markdown-stream.d.ts +16 -0
- package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
- package/lib/typescript/module/markdown.d.ts +2 -2
- package/lib/typescript/module/markdown.d.ts.map +1 -1
- package/lib/typescript/module/renderers/code.d.ts.map +1 -1
- package/lib/typescript/module/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/module/renderers/image.d.ts.map +1 -1
- package/lib/typescript/module/renderers/link.d.ts.map +1 -1
- package/lib/typescript/module/renderers/list.d.ts.map +1 -1
- package/lib/typescript/module/renderers/math.d.ts.map +1 -1
- package/lib/typescript/module/renderers/table.d.ts.map +1 -1
- package/lib/typescript/module/theme.d.ts +3 -4
- package/lib/typescript/module/theme.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +0 -3
- package/src/markdown-stream.tsx +82 -5
- package/src/markdown.tsx +8 -2
- package/src/renderers/code.tsx +3 -0
- package/src/renderers/heading.tsx +24 -2
- package/src/renderers/image.tsx +4 -0
- package/src/renderers/link.tsx +10 -1
- package/src/renderers/list.tsx +30 -6
- package/src/renderers/math.tsx +2 -0
- package/src/renderers/table.tsx +3 -0
- package/src/theme.ts +51 -88
- package/lib/commonjs/default-markdown-renderer.js +0 -217
- package/lib/commonjs/default-markdown-renderer.js.map +0 -1
- package/lib/module/default-markdown-renderer.js +0 -212
- package/lib/module/default-markdown-renderer.js.map +0 -1
- package/lib/typescript/commonjs/default-markdown-renderer.d.ts +0 -10
- package/lib/typescript/commonjs/default-markdown-renderer.d.ts.map +0 -1
- package/lib/typescript/module/default-markdown-renderer.d.ts +0 -10
- package/lib/typescript/module/default-markdown-renderer.d.ts.map +0 -1
- package/src/default-markdown-renderer.tsx +0 -261
package/src/renderers/math.tsx
CHANGED
|
@@ -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
|
|
package/src/renderers/table.tsx
CHANGED
|
@@ -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
|
|
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: "#
|
|
60
|
-
textMuted: "#
|
|
61
|
-
heading: "#
|
|
62
|
-
link: "#
|
|
63
|
-
code: "#
|
|
64
|
-
codeBackground: "#
|
|
65
|
-
codeLanguage: "#
|
|
66
|
-
blockquote: "#
|
|
67
|
-
border: "#
|
|
68
|
-
surface: "#
|
|
69
|
-
surfaceLight: "#
|
|
70
|
-
accent: "#
|
|
71
|
-
tableBorder: "#
|
|
72
|
-
tableHeader: "#
|
|
73
|
-
tableHeaderText: "#
|
|
74
|
-
tableRowEven: "
|
|
75
|
-
tableRowOdd: "#
|
|
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:
|
|
99
|
-
|
|
100
|
-
|
|
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:
|
|
104
|
-
m:
|
|
105
|
-
l:
|
|
117
|
+
s: 6,
|
|
118
|
+
m: 10,
|
|
119
|
+
l: 14,
|
|
106
120
|
},
|
|
107
|
-
showCodeLanguage:
|
|
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
|
-
:
|
|
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: "#
|
|
143
|
+
link: "#2563eb",
|
|
128
144
|
code: undefined,
|
|
129
145
|
codeBackground: "transparent",
|
|
130
|
-
codeLanguage: "#
|
|
131
|
-
blockquote: "#
|
|
132
|
-
border: "#
|
|
146
|
+
codeLanguage: "#94a3b8",
|
|
147
|
+
blockquote: "#cbd5f5",
|
|
148
|
+
border: "#e2e8f0",
|
|
133
149
|
surface: "transparent",
|
|
134
150
|
surfaceLight: "transparent",
|
|
135
|
-
accent: "#
|
|
136
|
-
tableBorder: "#
|
|
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
|