react-native-nitro-markdown 0.5.3 → 0.5.5
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 +89 -10
- package/android/CMakeLists.txt +1 -1
- package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +9 -3
- package/cpp/CMakeLists.txt +2 -1
- package/cpp/bindings/HybridMarkdownParser.cpp +4 -2
- package/cpp/core/MD4CParser.cpp +69 -2
- package/cpp/core/MD4CParser.hpp +17 -0
- package/cpp/core/MarkdownTypes.hpp +1 -1
- package/lib/commonjs/headless.js +2 -2
- package/lib/commonjs/markdown.js +56 -44
- package/lib/commonjs/markdown.js.map +1 -1
- package/lib/commonjs/renderers/blockquote.js +15 -13
- package/lib/commonjs/renderers/blockquote.js.map +1 -1
- package/lib/commonjs/renderers/code.js +57 -53
- package/lib/commonjs/renderers/code.js.map +1 -1
- package/lib/commonjs/renderers/heading.js +48 -46
- package/lib/commonjs/renderers/heading.js.map +1 -1
- package/lib/commonjs/renderers/horizontal-rule.js +10 -8
- package/lib/commonjs/renderers/horizontal-rule.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/list.js +75 -70
- package/lib/commonjs/renderers/list.js.map +1 -1
- package/lib/commonjs/renderers/math.js +4 -3
- package/lib/commonjs/renderers/math.js.map +1 -1
- package/lib/commonjs/renderers/paragraph.js +15 -13
- package/lib/commonjs/renderers/paragraph.js.map +1 -1
- package/lib/commonjs/renderers/style-cache.js +14 -0
- package/lib/commonjs/renderers/style-cache.js.map +1 -0
- package/lib/commonjs/renderers/table/index.js +7 -4
- package/lib/commonjs/renderers/table/index.js.map +1 -1
- package/lib/module/headless.js +2 -2
- package/lib/module/markdown.js +56 -44
- package/lib/module/markdown.js.map +1 -1
- package/lib/module/renderers/blockquote.js +15 -13
- package/lib/module/renderers/blockquote.js.map +1 -1
- package/lib/module/renderers/code.js +57 -53
- package/lib/module/renderers/code.js.map +1 -1
- package/lib/module/renderers/heading.js +48 -46
- package/lib/module/renderers/heading.js.map +1 -1
- package/lib/module/renderers/horizontal-rule.js +10 -8
- package/lib/module/renderers/horizontal-rule.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/list.js +75 -70
- package/lib/module/renderers/list.js.map +1 -1
- package/lib/module/renderers/math.js +4 -3
- package/lib/module/renderers/math.js.map +1 -1
- package/lib/module/renderers/paragraph.js +15 -13
- package/lib/module/renderers/paragraph.js.map +1 -1
- package/lib/module/renderers/style-cache.js +10 -0
- package/lib/module/renderers/style-cache.js.map +1 -0
- package/lib/module/renderers/table/index.js +7 -4
- package/lib/module/renderers/table/index.js.map +1 -1
- package/lib/typescript/commonjs/Markdown.nitro.d.ts +1 -0
- package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
- package/lib/typescript/commonjs/headless.d.ts +2 -2
- package/lib/typescript/commonjs/markdown.d.ts +7 -1
- package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/blockquote.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/blockquote.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/heading.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/list.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/math.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/paragraph.d.ts +1 -1
- package/lib/typescript/commonjs/renderers/paragraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/style-cache.d.ts +3 -0
- package/lib/typescript/commonjs/renderers/style-cache.d.ts.map +1 -0
- package/lib/typescript/commonjs/renderers/table/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme.d.ts +2 -2
- package/lib/typescript/commonjs/theme.d.ts.map +1 -1
- package/lib/typescript/module/Markdown.nitro.d.ts +1 -0
- package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
- package/lib/typescript/module/headless.d.ts +2 -2
- package/lib/typescript/module/markdown.d.ts +7 -1
- package/lib/typescript/module/markdown.d.ts.map +1 -1
- package/lib/typescript/module/renderers/blockquote.d.ts +1 -1
- package/lib/typescript/module/renderers/blockquote.d.ts.map +1 -1
- package/lib/typescript/module/renderers/code.d.ts.map +1 -1
- package/lib/typescript/module/renderers/heading.d.ts +1 -1
- package/lib/typescript/module/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/module/renderers/horizontal-rule.d.ts +1 -1
- package/lib/typescript/module/renderers/horizontal-rule.d.ts.map +1 -1
- package/lib/typescript/module/renderers/image.d.ts.map +1 -1
- package/lib/typescript/module/renderers/list.d.ts +1 -1
- package/lib/typescript/module/renderers/list.d.ts.map +1 -1
- package/lib/typescript/module/renderers/math.d.ts +1 -1
- package/lib/typescript/module/renderers/math.d.ts.map +1 -1
- package/lib/typescript/module/renderers/paragraph.d.ts +1 -1
- package/lib/typescript/module/renderers/paragraph.d.ts.map +1 -1
- package/lib/typescript/module/renderers/style-cache.d.ts +3 -0
- package/lib/typescript/module/renderers/style-cache.d.ts.map +1 -0
- package/lib/typescript/module/renderers/table/index.d.ts.map +1 -1
- package/lib/typescript/module/theme.d.ts +2 -2
- package/lib/typescript/module/theme.d.ts.map +1 -1
- package/nitro.json +12 -3
- package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void.hpp +2 -2
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
- package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +2 -2
- package/nitrogen/generated/ios/NitroMarkdown+autolinking.rb +2 -0
- package/nitrogen/generated/shared/c++/ParserOptions.hpp +6 -2
- package/package.json +6 -5
- package/react-native-nitro-markdown.podspec +3 -0
- package/src/Markdown.nitro.ts +1 -0
- package/src/headless.ts +2 -2
- package/src/markdown.tsx +102 -58
- package/src/renderers/blockquote.tsx +22 -17
- package/src/renderers/code.tsx +75 -63
- package/src/renderers/heading.tsx +60 -54
- package/src/renderers/horizontal-rule.tsx +17 -12
- package/src/renderers/image.tsx +15 -4
- package/src/renderers/list.tsx +93 -76
- package/src/renderers/math.tsx +8 -3
- package/src/renderers/paragraph.tsx +22 -17
- package/src/renderers/style-cache.ts +14 -0
- package/src/renderers/table/index.tsx +15 -10
- package/src/theme.ts +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useMemo } from "react";
|
|
4
3
|
import { View, StyleSheet } from "react-native";
|
|
4
|
+
import { getCachedStyles } from "./style-cache.js";
|
|
5
5
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
export const Blockquote = ({
|
|
@@ -11,21 +11,23 @@ export const Blockquote = ({
|
|
|
11
11
|
const {
|
|
12
12
|
theme
|
|
13
13
|
} = useMarkdownContext();
|
|
14
|
-
const styles =
|
|
15
|
-
blockquote: {
|
|
16
|
-
borderLeftWidth: 4,
|
|
17
|
-
borderLeftColor: theme.colors.blockquote,
|
|
18
|
-
paddingLeft: theme.spacing.l,
|
|
19
|
-
marginVertical: theme.spacing.m,
|
|
20
|
-
backgroundColor: theme.colors.surfaceLight,
|
|
21
|
-
paddingVertical: theme.spacing.m,
|
|
22
|
-
paddingRight: theme.spacing.m,
|
|
23
|
-
borderRadius: theme.borderRadius.s
|
|
24
|
-
}
|
|
25
|
-
}), [theme]);
|
|
14
|
+
const styles = getCachedStyles(stylesCache, theme, createStyles);
|
|
26
15
|
return /*#__PURE__*/_jsx(View, {
|
|
27
16
|
style: [styles.blockquote, style],
|
|
28
17
|
children: children
|
|
29
18
|
});
|
|
30
19
|
};
|
|
20
|
+
const stylesCache = new WeakMap();
|
|
21
|
+
const createStyles = theme => StyleSheet.create({
|
|
22
|
+
blockquote: {
|
|
23
|
+
borderLeftWidth: 4,
|
|
24
|
+
borderLeftColor: theme.colors.blockquote,
|
|
25
|
+
paddingLeft: theme.spacing.l,
|
|
26
|
+
marginVertical: theme.spacing.m,
|
|
27
|
+
backgroundColor: theme.colors.surfaceLight,
|
|
28
|
+
paddingVertical: theme.spacing.m,
|
|
29
|
+
paddingRight: theme.spacing.m,
|
|
30
|
+
borderRadius: theme.borderRadius.s
|
|
31
|
+
}
|
|
32
|
+
});
|
|
31
33
|
//# sourceMappingURL=blockquote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["View","StyleSheet","getCachedStyles","useMarkdownContext","jsx","_jsx","Blockquote","children","style","theme","styles","stylesCache","createStyles","blockquote","WeakMap","create","borderLeftWidth","borderLeftColor","colors","paddingLeft","spacing","l","marginVertical","m","backgroundColor","surfaceLight","paddingVertical","paddingRight","borderRadius","s"],"sourceRoot":"../../../src","sources":["renderers/blockquote.tsx"],"mappings":";;AACA,SAASA,IAAI,EAAEC,UAAU,QAAwB,cAAc;AAC/D,SAASC,eAAe,QAAQ,kBAAe;AAC/C,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,UAA+B,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAM,CAAC,KAAK;EACtE,MAAM;IAAEC;EAAM,CAAC,GAAGN,kBAAkB,CAAC,CAAC;EACtC,MAAMO,MAAM,GAAGR,eAAe,CAACS,WAAW,EAAEF,KAAK,EAAEG,YAAY,CAAC;EAEhE,oBAAOP,IAAA,CAACL,IAAI;IAACQ,KAAK,EAAE,CAACE,MAAM,CAACG,UAAU,EAAEL,KAAK,CAAE;IAAAD,QAAA,EAAEA;EAAQ,CAAO,CAAC;AACnE,CAAC;AAID,MAAMI,WAAW,GAAG,IAAIG,OAAO,CAAkC,CAAC;AAElE,MAAMF,YAAY,GAAIH,KAAoB,IACxCR,UAAU,CAACc,MAAM,CAAC;EAChBF,UAAU,EAAE;IACVG,eAAe,EAAE,CAAC;IAClBC,eAAe,EAAER,KAAK,CAACS,MAAM,CAACL,UAAU;IACxCM,WAAW,EAAEV,KAAK,CAACW,OAAO,CAACC,CAAC;IAC5BC,cAAc,EAAEb,KAAK,CAACW,OAAO,CAACG,CAAC;IAC/BC,eAAe,EAAEf,KAAK,CAACS,MAAM,CAACO,YAAY;IAC1CC,eAAe,EAAEjB,KAAK,CAACW,OAAO,CAACG,CAAC;IAChCI,YAAY,EAAElB,KAAK,CAACW,OAAO,CAACG,CAAC;IAC7BK,YAAY,EAAEnB,KAAK,CAACmB,YAAY,CAACC;EACnC;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { View, Text, StyleSheet, ScrollView, Platform } from "react-native";
|
|
5
|
+
import { getCachedStyles } from "./style-cache.js";
|
|
5
6
|
import { getTextContent } from "../headless.js";
|
|
6
7
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
7
8
|
import { defaultHighlighter } from "../utils/code-highlight.js";
|
|
@@ -18,40 +19,8 @@ export const CodeBlock = ({
|
|
|
18
19
|
} = ctx;
|
|
19
20
|
const highlighter = ctx.highlightCode === true ? defaultHighlighter : typeof ctx.highlightCode === "function" ? ctx.highlightCode : null;
|
|
20
21
|
const displayContent = content ?? (node ? getTextContent(node) : "");
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
backgroundColor: theme.colors.codeBackground,
|
|
24
|
-
borderRadius: theme.borderRadius.m,
|
|
25
|
-
padding: theme.spacing.l,
|
|
26
|
-
marginVertical: theme.spacing.m,
|
|
27
|
-
borderWidth: 1,
|
|
28
|
-
borderColor: theme.colors.border
|
|
29
|
-
},
|
|
30
|
-
codeLanguage: {
|
|
31
|
-
color: theme.colors.codeLanguage,
|
|
32
|
-
fontSize: theme.fontSizes.xs,
|
|
33
|
-
fontWeight: "600",
|
|
34
|
-
marginBottom: theme.spacing.s,
|
|
35
|
-
textTransform: "uppercase",
|
|
36
|
-
letterSpacing: 0.5,
|
|
37
|
-
fontFamily: theme.fontFamilies.mono,
|
|
38
|
-
...(Platform.OS === "android" && {
|
|
39
|
-
includeFontPadding: false
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
codeBlockText: {
|
|
43
|
-
fontFamily: theme.fontFamilies.mono ?? Platform.select({
|
|
44
|
-
ios: "Courier",
|
|
45
|
-
android: "monospace"
|
|
46
|
-
}),
|
|
47
|
-
fontSize: theme.fontSizes.s,
|
|
48
|
-
color: theme.colors.text,
|
|
49
|
-
lineHeight: theme.fontSizes.s * 1.5,
|
|
50
|
-
...(Platform.OS === "android" && {
|
|
51
|
-
includeFontPadding: false
|
|
52
|
-
})
|
|
53
|
-
}
|
|
54
|
-
}), [theme]);
|
|
22
|
+
const highlightedTokens = useMemo(() => highlighter && language ? highlighter(language, displayContent) : null, [displayContent, highlighter, language]);
|
|
23
|
+
const styles = getCachedStyles(codeBlockStylesCache, theme, createCodeStyles);
|
|
55
24
|
const showLanguage = theme.showCodeLanguage && language;
|
|
56
25
|
return /*#__PURE__*/_jsxs(View, {
|
|
57
26
|
style: [styles.codeBlock, style],
|
|
@@ -62,10 +31,10 @@ export const CodeBlock = ({
|
|
|
62
31
|
horizontal: true,
|
|
63
32
|
showsHorizontalScrollIndicator: false,
|
|
64
33
|
bounces: false,
|
|
65
|
-
children:
|
|
34
|
+
children: highlightedTokens ? /*#__PURE__*/_jsx(Text, {
|
|
66
35
|
style: styles.codeBlockText,
|
|
67
36
|
selectable: true,
|
|
68
|
-
children:
|
|
37
|
+
children: highlightedTokens.map((token, i) => {
|
|
69
38
|
const tokenColor = ctx.theme.colors.codeTokenColors?.[token.type];
|
|
70
39
|
return tokenColor ? /*#__PURE__*/_jsx(Text, {
|
|
71
40
|
style: {
|
|
@@ -94,26 +63,61 @@ export const InlineCode = ({
|
|
|
94
63
|
theme
|
|
95
64
|
} = useMarkdownContext();
|
|
96
65
|
const displayContent = content ?? children ?? (node ? getTextContent(node) : "");
|
|
97
|
-
const styles =
|
|
98
|
-
codeInline: {
|
|
99
|
-
fontFamily: theme.fontFamilies.mono ?? Platform.select({
|
|
100
|
-
ios: "Courier",
|
|
101
|
-
android: "monospace"
|
|
102
|
-
}),
|
|
103
|
-
fontSize: theme.fontSizes.s,
|
|
104
|
-
color: theme.colors.code,
|
|
105
|
-
backgroundColor: theme.colors.codeBackground,
|
|
106
|
-
paddingHorizontal: theme.spacing.xs,
|
|
107
|
-
paddingVertical: 2,
|
|
108
|
-
borderRadius: theme.borderRadius.s,
|
|
109
|
-
...(Platform.OS === "android" && {
|
|
110
|
-
includeFontPadding: false
|
|
111
|
-
})
|
|
112
|
-
}
|
|
113
|
-
}), [theme]);
|
|
66
|
+
const styles = getCachedStyles(inlineCodeStylesCache, theme, createInlineStyles);
|
|
114
67
|
return /*#__PURE__*/_jsx(Text, {
|
|
115
68
|
style: [styles.codeInline, style],
|
|
116
69
|
children: displayContent
|
|
117
70
|
});
|
|
118
71
|
};
|
|
72
|
+
const codeBlockStylesCache = new WeakMap();
|
|
73
|
+
const inlineCodeStylesCache = new WeakMap();
|
|
74
|
+
const getMonoFontFamily = theme => theme.fontFamilies.mono ?? Platform.select({
|
|
75
|
+
ios: "Courier",
|
|
76
|
+
android: "monospace"
|
|
77
|
+
});
|
|
78
|
+
const createCodeStyles = theme => StyleSheet.create({
|
|
79
|
+
codeBlock: {
|
|
80
|
+
backgroundColor: theme.colors.codeBackground,
|
|
81
|
+
borderRadius: theme.borderRadius.m,
|
|
82
|
+
padding: theme.spacing.l,
|
|
83
|
+
marginVertical: theme.spacing.m,
|
|
84
|
+
borderWidth: 1,
|
|
85
|
+
borderColor: theme.colors.border
|
|
86
|
+
},
|
|
87
|
+
codeLanguage: {
|
|
88
|
+
color: theme.colors.codeLanguage,
|
|
89
|
+
fontSize: theme.fontSizes.xs,
|
|
90
|
+
fontWeight: "600",
|
|
91
|
+
marginBottom: theme.spacing.s,
|
|
92
|
+
textTransform: "uppercase",
|
|
93
|
+
letterSpacing: 0.5,
|
|
94
|
+
fontFamily: theme.fontFamilies.mono,
|
|
95
|
+
...(Platform.OS === "android" && {
|
|
96
|
+
includeFontPadding: false
|
|
97
|
+
})
|
|
98
|
+
},
|
|
99
|
+
codeBlockText: {
|
|
100
|
+
fontFamily: getMonoFontFamily(theme),
|
|
101
|
+
fontSize: theme.fontSizes.s,
|
|
102
|
+
color: theme.colors.text,
|
|
103
|
+
lineHeight: theme.fontSizes.s * 1.5,
|
|
104
|
+
...(Platform.OS === "android" && {
|
|
105
|
+
includeFontPadding: false
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const createInlineStyles = theme => StyleSheet.create({
|
|
110
|
+
codeInline: {
|
|
111
|
+
fontFamily: getMonoFontFamily(theme),
|
|
112
|
+
fontSize: theme.fontSizes.s,
|
|
113
|
+
color: theme.colors.code,
|
|
114
|
+
backgroundColor: theme.colors.codeBackground,
|
|
115
|
+
paddingHorizontal: theme.spacing.xs,
|
|
116
|
+
paddingVertical: 2,
|
|
117
|
+
borderRadius: theme.borderRadius.s,
|
|
118
|
+
...(Platform.OS === "android" && {
|
|
119
|
+
includeFontPadding: false
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
});
|
|
119
123
|
//# sourceMappingURL=code.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","View","Text","StyleSheet","ScrollView","Platform","getTextContent","useMarkdownContext","defaultHighlighter","jsx","_jsx","jsxs","_jsxs","CodeBlock","language","content","node","style","ctx","theme","highlighter","highlightCode","displayContent","
|
|
1
|
+
{"version":3,"names":["useMemo","View","Text","StyleSheet","ScrollView","Platform","getCachedStyles","getTextContent","useMarkdownContext","defaultHighlighter","jsx","_jsx","jsxs","_jsxs","CodeBlock","language","content","node","style","ctx","theme","highlighter","highlightCode","displayContent","highlightedTokens","styles","codeBlockStylesCache","createCodeStyles","showLanguage","showCodeLanguage","codeBlock","children","codeLanguage","horizontal","showsHorizontalScrollIndicator","bounces","codeBlockText","selectable","map","token","i","tokenColor","colors","codeTokenColors","type","color","text","InlineCode","inlineCodeStylesCache","createInlineStyles","codeInline","WeakMap","getMonoFontFamily","fontFamilies","mono","select","ios","android","create","backgroundColor","codeBackground","borderRadius","m","padding","spacing","l","marginVertical","borderWidth","borderColor","border","fontSize","fontSizes","xs","fontWeight","marginBottom","s","textTransform","letterSpacing","fontFamily","OS","includeFontPadding","lineHeight","code","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../src","sources":["renderers/code.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useMemo } from "react";
|
|
4
3
|
import { Text, StyleSheet, Platform } from "react-native";
|
|
4
|
+
import { getCachedStyles } from "./style-cache.js";
|
|
5
5
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
const ANDROID_SYSTEM_FONTS = new Set(["sans-serif", "sans-serif-medium", "sans-serif-light", "sans-serif-condensed", "sans-serif-thin", "serif", "monospace"]);
|
|
@@ -13,55 +13,57 @@ export const Heading = ({
|
|
|
13
13
|
const {
|
|
14
14
|
theme
|
|
15
15
|
} = useMarkdownContext();
|
|
16
|
-
const
|
|
17
|
-
const styles = useMemo(() => StyleSheet.create({
|
|
18
|
-
heading: {
|
|
19
|
-
color: theme.colors.heading,
|
|
20
|
-
fontWeight: headingWeight,
|
|
21
|
-
marginTop: theme.spacing.xl,
|
|
22
|
-
marginBottom: theme.spacing.m,
|
|
23
|
-
fontFamily: theme.fontFamilies.heading,
|
|
24
|
-
letterSpacing: -0.2,
|
|
25
|
-
...(Platform.OS === "android" && {
|
|
26
|
-
includeFontPadding: false
|
|
27
|
-
})
|
|
28
|
-
},
|
|
29
|
-
h1: {
|
|
30
|
-
fontSize: theme.fontSizes.h1,
|
|
31
|
-
lineHeight: theme.fontSizes.h1 * 1.3,
|
|
32
|
-
borderBottomWidth: 1,
|
|
33
|
-
borderBottomColor: theme.colors.border,
|
|
34
|
-
paddingBottom: theme.spacing.s,
|
|
35
|
-
letterSpacing: -0.6
|
|
36
|
-
},
|
|
37
|
-
h2: {
|
|
38
|
-
fontSize: theme.fontSizes.h2,
|
|
39
|
-
lineHeight: theme.fontSizes.h2 * 1.3,
|
|
40
|
-
letterSpacing: -0.4
|
|
41
|
-
},
|
|
42
|
-
h3: {
|
|
43
|
-
fontSize: theme.fontSizes.h3,
|
|
44
|
-
lineHeight: theme.fontSizes.h3 * 1.3,
|
|
45
|
-
letterSpacing: -0.2
|
|
46
|
-
},
|
|
47
|
-
h4: {
|
|
48
|
-
fontSize: theme.fontSizes.h4,
|
|
49
|
-
lineHeight: theme.fontSizes.h4 * 1.3
|
|
50
|
-
},
|
|
51
|
-
h5: {
|
|
52
|
-
fontSize: theme.fontSizes.h5,
|
|
53
|
-
lineHeight: theme.fontSizes.h5 * 1.3
|
|
54
|
-
},
|
|
55
|
-
h6: {
|
|
56
|
-
fontSize: theme.fontSizes.h6,
|
|
57
|
-
lineHeight: theme.fontSizes.h6 * 1.3,
|
|
58
|
-
color: theme.colors.textMuted
|
|
59
|
-
}
|
|
60
|
-
}), [headingWeight, theme]);
|
|
16
|
+
const styles = getCachedStyles(stylesCache, theme, createStyles);
|
|
61
17
|
const headingStyles = [styles.heading, level === 1 && styles.h1, level === 2 && styles.h2, level === 3 && styles.h3, level === 4 && styles.h4, level === 5 && styles.h5, level === 6 && styles.h6];
|
|
62
18
|
return /*#__PURE__*/_jsx(Text, {
|
|
63
19
|
style: [...headingStyles, style],
|
|
64
20
|
children: children
|
|
65
21
|
});
|
|
66
22
|
};
|
|
23
|
+
const stylesCache = new WeakMap();
|
|
24
|
+
const getHeadingWeight = theme => theme.headingWeight ?? (Platform.OS === "android" && theme.fontFamilies.heading && !ANDROID_SYSTEM_FONTS.has(theme.fontFamilies.heading) ? "normal" : "700");
|
|
25
|
+
const createStyles = theme => StyleSheet.create({
|
|
26
|
+
heading: {
|
|
27
|
+
color: theme.colors.heading,
|
|
28
|
+
fontWeight: getHeadingWeight(theme),
|
|
29
|
+
marginTop: theme.spacing.xl,
|
|
30
|
+
marginBottom: theme.spacing.m,
|
|
31
|
+
fontFamily: theme.fontFamilies.heading,
|
|
32
|
+
letterSpacing: -0.2,
|
|
33
|
+
...(Platform.OS === "android" && {
|
|
34
|
+
includeFontPadding: false
|
|
35
|
+
})
|
|
36
|
+
},
|
|
37
|
+
h1: {
|
|
38
|
+
fontSize: theme.fontSizes.h1,
|
|
39
|
+
lineHeight: theme.fontSizes.h1 * 1.3,
|
|
40
|
+
borderBottomWidth: 1,
|
|
41
|
+
borderBottomColor: theme.colors.border,
|
|
42
|
+
paddingBottom: theme.spacing.s,
|
|
43
|
+
letterSpacing: -0.6
|
|
44
|
+
},
|
|
45
|
+
h2: {
|
|
46
|
+
fontSize: theme.fontSizes.h2,
|
|
47
|
+
lineHeight: theme.fontSizes.h2 * 1.3,
|
|
48
|
+
letterSpacing: -0.4
|
|
49
|
+
},
|
|
50
|
+
h3: {
|
|
51
|
+
fontSize: theme.fontSizes.h3,
|
|
52
|
+
lineHeight: theme.fontSizes.h3 * 1.3,
|
|
53
|
+
letterSpacing: -0.2
|
|
54
|
+
},
|
|
55
|
+
h4: {
|
|
56
|
+
fontSize: theme.fontSizes.h4,
|
|
57
|
+
lineHeight: theme.fontSizes.h4 * 1.3
|
|
58
|
+
},
|
|
59
|
+
h5: {
|
|
60
|
+
fontSize: theme.fontSizes.h5,
|
|
61
|
+
lineHeight: theme.fontSizes.h5 * 1.3
|
|
62
|
+
},
|
|
63
|
+
h6: {
|
|
64
|
+
fontSize: theme.fontSizes.h6,
|
|
65
|
+
lineHeight: theme.fontSizes.h6 * 1.3,
|
|
66
|
+
color: theme.colors.textMuted
|
|
67
|
+
}
|
|
68
|
+
});
|
|
67
69
|
//# sourceMappingURL=heading.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["Text","StyleSheet","Platform","getCachedStyles","useMarkdownContext","jsx","_jsx","ANDROID_SYSTEM_FONTS","Set","Heading","level","children","style","theme","styles","stylesCache","createStyles","headingStyles","heading","h1","h2","h3","h4","h5","h6","WeakMap","getHeadingWeight","headingWeight","OS","fontFamilies","has","create","color","colors","fontWeight","marginTop","spacing","xl","marginBottom","m","fontFamily","letterSpacing","includeFontPadding","fontSize","fontSizes","lineHeight","borderBottomWidth","borderBottomColor","border","paddingBottom","s","textMuted"],"sourceRoot":"../../../src","sources":["renderers/heading.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useMemo } from "react";
|
|
4
3
|
import { View, StyleSheet } from "react-native";
|
|
4
|
+
import { getCachedStyles } from "./style-cache.js";
|
|
5
5
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
export const HorizontalRule = ({
|
|
@@ -10,15 +10,17 @@ export const HorizontalRule = ({
|
|
|
10
10
|
const {
|
|
11
11
|
theme
|
|
12
12
|
} = useMarkdownContext();
|
|
13
|
-
const styles =
|
|
14
|
-
horizontalRule: {
|
|
15
|
-
height: 1,
|
|
16
|
-
backgroundColor: theme.colors.border,
|
|
17
|
-
marginVertical: theme.spacing.xl
|
|
18
|
-
}
|
|
19
|
-
}), [theme]);
|
|
13
|
+
const styles = getCachedStyles(stylesCache, theme, createStyles);
|
|
20
14
|
return /*#__PURE__*/_jsx(View, {
|
|
21
15
|
style: [styles.horizontalRule, style]
|
|
22
16
|
});
|
|
23
17
|
};
|
|
18
|
+
const stylesCache = new WeakMap();
|
|
19
|
+
const createStyles = theme => StyleSheet.create({
|
|
20
|
+
horizontalRule: {
|
|
21
|
+
height: 1,
|
|
22
|
+
backgroundColor: theme.colors.border,
|
|
23
|
+
marginVertical: theme.spacing.xl
|
|
24
|
+
}
|
|
25
|
+
});
|
|
24
26
|
//# sourceMappingURL=horizontal-rule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["View","StyleSheet","getCachedStyles","useMarkdownContext","jsx","_jsx","HorizontalRule","style","theme","styles","stylesCache","createStyles","horizontalRule","WeakMap","create","height","backgroundColor","colors","border","marginVertical","spacing","xl"],"sourceRoot":"../../../src","sources":["renderers/horizontal-rule.tsx"],"mappings":";;AACA,SAASA,IAAI,EAAEC,UAAU,QAAwB,cAAc;AAC/D,SAASC,eAAe,QAAQ,kBAAe;AAC/C,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOxD,OAAO,MAAMC,cAAuC,GAAGA,CAAC;EAAEC;AAAM,CAAC,KAAK;EACpE,MAAM;IAAEC;EAAM,CAAC,GAAGL,kBAAkB,CAAC,CAAC;EACtC,MAAMM,MAAM,GAAGP,eAAe,CAACQ,WAAW,EAAEF,KAAK,EAAEG,YAAY,CAAC;EAChE,oBAAON,IAAA,CAACL,IAAI;IAACO,KAAK,EAAE,CAACE,MAAM,CAACG,cAAc,EAAEL,KAAK;EAAE,CAAE,CAAC;AACxD,CAAC;AAID,MAAMG,WAAW,GAAG,IAAIG,OAAO,CAAsC,CAAC;AAEtE,MAAMF,YAAY,GAAIH,KAAoB,IACxCP,UAAU,CAACa,MAAM,CAAC;EAChBF,cAAc,EAAE;IACdG,MAAM,EAAE,CAAC;IACTC,eAAe,EAAER,KAAK,CAACS,MAAM,CAACC,MAAM;IACpCC,cAAc,EAAEX,KAAK,CAACY,OAAO,CAACC;EAChC;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useState,
|
|
3
|
+
import { useState, useEffect, useMemo } from "react";
|
|
4
4
|
import { View, Text, Image as RNImage, StyleSheet, Platform } from "react-native";
|
|
5
5
|
import { parseMarkdownWithOptions } from "../headless.js";
|
|
6
6
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
@@ -93,18 +93,24 @@ export const Image = ({
|
|
|
93
93
|
})
|
|
94
94
|
}
|
|
95
95
|
}), [theme, aspectRatio]);
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
let isMounted = true;
|
|
98
|
+
setLoading(true);
|
|
99
|
+
setError(false);
|
|
100
|
+
setAspectRatio(undefined);
|
|
98
101
|
const picsumMatch = url.match(/picsum\.photos\/.*\/(\d+)\/(\d+)/);
|
|
99
102
|
if (picsumMatch) {
|
|
100
103
|
const w = parseInt(picsumMatch[1], 10);
|
|
101
104
|
const h = parseInt(picsumMatch[2], 10);
|
|
102
105
|
if (!isNaN(w) && !isNaN(h) && h !== 0) {
|
|
103
106
|
setAspectRatio(w / h);
|
|
107
|
+
return () => {
|
|
108
|
+
isMounted = false;
|
|
109
|
+
};
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
RNImage.getSize(url, (width, height) => {
|
|
107
|
-
if (width > 0 && height > 0) {
|
|
113
|
+
if (isMounted && width > 0 && height > 0) {
|
|
108
114
|
setAspectRatio(width / height);
|
|
109
115
|
}
|
|
110
116
|
}, error => {
|
|
@@ -113,6 +119,9 @@ export const Image = ({
|
|
|
113
119
|
console.warn("[NitroMarkdown] Failed to get image dimensions:", error);
|
|
114
120
|
}
|
|
115
121
|
});
|
|
122
|
+
return () => {
|
|
123
|
+
isMounted = false;
|
|
124
|
+
};
|
|
116
125
|
}, [url]);
|
|
117
126
|
const altContent = useMemo(() => {
|
|
118
127
|
if (!alt || !Renderer) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useMemo","View","Text","Image","RNImage","StyleSheet","Platform","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","OS","includeFontPadding","imageError","padding","l","imageErrorText","imageCaption","xs","marginTop","fontStyle","textAlign","isMounted","picsumMatch","match","w","parseInt","h","isNaN","getSize","__DEV__","console","warn","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":[]}
|