react-native-nitro-markdown 0.5.3 → 0.5.4

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 (118) hide show
  1. package/README.md +77 -10
  2. package/android/CMakeLists.txt +1 -1
  3. package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +9 -3
  4. package/cpp/bindings/HybridMarkdownParser.cpp +4 -2
  5. package/cpp/core/MD4CParser.cpp +20 -2
  6. package/cpp/core/MarkdownTypes.hpp +1 -1
  7. package/lib/commonjs/headless.js +2 -2
  8. package/lib/commonjs/markdown.js +16 -12
  9. package/lib/commonjs/markdown.js.map +1 -1
  10. package/lib/commonjs/renderers/blockquote.js +15 -13
  11. package/lib/commonjs/renderers/blockquote.js.map +1 -1
  12. package/lib/commonjs/renderers/code.js +57 -53
  13. package/lib/commonjs/renderers/code.js.map +1 -1
  14. package/lib/commonjs/renderers/heading.js +48 -46
  15. package/lib/commonjs/renderers/heading.js.map +1 -1
  16. package/lib/commonjs/renderers/horizontal-rule.js +10 -8
  17. package/lib/commonjs/renderers/horizontal-rule.js.map +1 -1
  18. package/lib/commonjs/renderers/image.js +12 -3
  19. package/lib/commonjs/renderers/image.js.map +1 -1
  20. package/lib/commonjs/renderers/list.js +75 -70
  21. package/lib/commonjs/renderers/list.js.map +1 -1
  22. package/lib/commonjs/renderers/math.js +4 -3
  23. package/lib/commonjs/renderers/math.js.map +1 -1
  24. package/lib/commonjs/renderers/paragraph.js +15 -13
  25. package/lib/commonjs/renderers/paragraph.js.map +1 -1
  26. package/lib/commonjs/renderers/style-cache.js +14 -0
  27. package/lib/commonjs/renderers/style-cache.js.map +1 -0
  28. package/lib/commonjs/renderers/table/index.js +7 -4
  29. package/lib/commonjs/renderers/table/index.js.map +1 -1
  30. package/lib/module/headless.js +2 -2
  31. package/lib/module/markdown.js +16 -12
  32. package/lib/module/markdown.js.map +1 -1
  33. package/lib/module/renderers/blockquote.js +15 -13
  34. package/lib/module/renderers/blockquote.js.map +1 -1
  35. package/lib/module/renderers/code.js +57 -53
  36. package/lib/module/renderers/code.js.map +1 -1
  37. package/lib/module/renderers/heading.js +48 -46
  38. package/lib/module/renderers/heading.js.map +1 -1
  39. package/lib/module/renderers/horizontal-rule.js +10 -8
  40. package/lib/module/renderers/horizontal-rule.js.map +1 -1
  41. package/lib/module/renderers/image.js +13 -4
  42. package/lib/module/renderers/image.js.map +1 -1
  43. package/lib/module/renderers/list.js +75 -70
  44. package/lib/module/renderers/list.js.map +1 -1
  45. package/lib/module/renderers/math.js +4 -3
  46. package/lib/module/renderers/math.js.map +1 -1
  47. package/lib/module/renderers/paragraph.js +15 -13
  48. package/lib/module/renderers/paragraph.js.map +1 -1
  49. package/lib/module/renderers/style-cache.js +10 -0
  50. package/lib/module/renderers/style-cache.js.map +1 -0
  51. package/lib/module/renderers/table/index.js +7 -4
  52. package/lib/module/renderers/table/index.js.map +1 -1
  53. package/lib/typescript/commonjs/Markdown.nitro.d.ts +1 -0
  54. package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/headless.d.ts +2 -2
  56. package/lib/typescript/commonjs/markdown.d.ts +1 -1
  57. package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
  58. package/lib/typescript/commonjs/renderers/blockquote.d.ts +1 -1
  59. package/lib/typescript/commonjs/renderers/blockquote.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/renderers/heading.d.ts +1 -1
  62. package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts +1 -1
  64. package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/renderers/list.d.ts +1 -1
  67. package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/renderers/math.d.ts +1 -1
  69. package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/renderers/paragraph.d.ts +1 -1
  71. package/lib/typescript/commonjs/renderers/paragraph.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/renderers/style-cache.d.ts +3 -0
  73. package/lib/typescript/commonjs/renderers/style-cache.d.ts.map +1 -0
  74. package/lib/typescript/commonjs/renderers/table/index.d.ts.map +1 -1
  75. package/lib/typescript/module/Markdown.nitro.d.ts +1 -0
  76. package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
  77. package/lib/typescript/module/headless.d.ts +2 -2
  78. package/lib/typescript/module/markdown.d.ts +1 -1
  79. package/lib/typescript/module/markdown.d.ts.map +1 -1
  80. package/lib/typescript/module/renderers/blockquote.d.ts +1 -1
  81. package/lib/typescript/module/renderers/blockquote.d.ts.map +1 -1
  82. package/lib/typescript/module/renderers/code.d.ts.map +1 -1
  83. package/lib/typescript/module/renderers/heading.d.ts +1 -1
  84. package/lib/typescript/module/renderers/heading.d.ts.map +1 -1
  85. package/lib/typescript/module/renderers/horizontal-rule.d.ts +1 -1
  86. package/lib/typescript/module/renderers/horizontal-rule.d.ts.map +1 -1
  87. package/lib/typescript/module/renderers/image.d.ts.map +1 -1
  88. package/lib/typescript/module/renderers/list.d.ts +1 -1
  89. package/lib/typescript/module/renderers/list.d.ts.map +1 -1
  90. package/lib/typescript/module/renderers/math.d.ts +1 -1
  91. package/lib/typescript/module/renderers/math.d.ts.map +1 -1
  92. package/lib/typescript/module/renderers/paragraph.d.ts +1 -1
  93. package/lib/typescript/module/renderers/paragraph.d.ts.map +1 -1
  94. package/lib/typescript/module/renderers/style-cache.d.ts +3 -0
  95. package/lib/typescript/module/renderers/style-cache.d.ts.map +1 -0
  96. package/lib/typescript/module/renderers/table/index.d.ts.map +1 -1
  97. package/nitro.json +12 -3
  98. package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +2 -2
  99. package/nitrogen/generated/android/c++/JFunc_void.hpp +2 -2
  100. package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +2 -2
  101. package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +2 -2
  102. package/nitrogen/generated/ios/NitroMarkdown+autolinking.rb +2 -0
  103. package/nitrogen/generated/shared/c++/ParserOptions.hpp +6 -2
  104. package/package.json +5 -5
  105. package/react-native-nitro-markdown.podspec +3 -0
  106. package/src/Markdown.nitro.ts +1 -0
  107. package/src/headless.ts +2 -2
  108. package/src/markdown.tsx +30 -12
  109. package/src/renderers/blockquote.tsx +22 -17
  110. package/src/renderers/code.tsx +75 -63
  111. package/src/renderers/heading.tsx +60 -54
  112. package/src/renderers/horizontal-rule.tsx +17 -12
  113. package/src/renderers/image.tsx +15 -4
  114. package/src/renderers/list.tsx +93 -76
  115. package/src/renderers/math.tsx +8 -3
  116. package/src/renderers/paragraph.tsx +22 -17
  117. package/src/renderers/style-cache.ts +14 -0
  118. package/src/renderers/table/index.tsx +15 -10
@@ -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 styles = useMemo(() => StyleSheet.create({
22
- codeBlock: {
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: highlighter && language ? /*#__PURE__*/_jsx(Text, {
34
+ children: highlightedTokens ? /*#__PURE__*/_jsx(Text, {
66
35
  style: styles.codeBlockText,
67
36
  selectable: true,
68
- children: highlighter(language, displayContent).map((token, i) => {
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 = useMemo(() => StyleSheet.create({
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","styles","create","codeBlock","backgroundColor","colors","codeBackground","borderRadius","m","padding","spacing","l","marginVertical","borderWidth","borderColor","border","codeLanguage","color","fontSize","fontSizes","xs","fontWeight","marginBottom","s","textTransform","letterSpacing","fontFamily","fontFamilies","mono","OS","includeFontPadding","codeBlockText","select","ios","android","text","lineHeight","showLanguage","showCodeLanguage","children","horizontal","showsHorizontalScrollIndicator","bounces","selectable","map","token","i","tokenColor","codeTokenColors","type","InlineCode","codeInline","code","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../src","sources":["renderers/code.tsx"],"mappings":"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","ignoreList":[]}
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 headingWeight = theme.headingWeight ?? (Platform.OS === "android" && theme.fontFamilies.heading && !ANDROID_SYSTEM_FONTS.has(theme.fontFamilies.heading) ? "normal" : "700");
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":["useMemo","Text","StyleSheet","Platform","useMarkdownContext","jsx","_jsx","ANDROID_SYSTEM_FONTS","Set","Heading","level","children","style","theme","headingWeight","OS","fontFamilies","heading","has","styles","create","color","colors","fontWeight","marginTop","spacing","xl","marginBottom","m","fontFamily","letterSpacing","includeFontPadding","h1","fontSize","fontSizes","lineHeight","borderBottomWidth","borderBottomColor","border","paddingBottom","s","h2","h3","h4","h5","h6","textMuted","headingStyles"],"sourceRoot":"../../../src","sources":["renderers/heading.tsx"],"mappings":"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","ignoreList":[]}
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 = useMemo(() => StyleSheet.create({
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":["useMemo","View","StyleSheet","useMarkdownContext","jsx","_jsx","HorizontalRule","style","theme","styles","create","horizontalRule","height","backgroundColor","colors","border","marginVertical","spacing","xl"],"sourceRoot":"../../../src","sources":["renderers/horizontal-rule.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAiB,OAAO;AACxC,SAASC,IAAI,EAAEC,UAAU,QAAwB,cAAc;AAC/D,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAMxD,OAAO,MAAMC,cAAuC,GAAGA,CAAC;EAAEC;AAAM,CAAC,KAAK;EACpE,MAAM;IAAEC;EAAM,CAAC,GAAGL,kBAAkB,CAAC,CAAC;EACtC,MAAMM,MAAM,GAAGT,OAAO,CACpB,MACEE,UAAU,CAACQ,MAAM,CAAC;IAChBC,cAAc,EAAE;MACdC,MAAM,EAAE,CAAC;MACTC,eAAe,EAAEL,KAAK,CAACM,MAAM,CAACC,MAAM;MACpCC,cAAc,EAAER,KAAK,CAACS,OAAO,CAACC;IAChC;EACF,CAAC,CAAC,EACJ,CAACV,KAAK,CACR,CAAC;EACD,oBAAOH,IAAA,CAACJ,IAAI;IAACM,KAAK,EAAE,CAACE,MAAM,CAACE,cAAc,EAAEJ,KAAK;EAAE,CAAE,CAAC;AACxD,CAAC","ignoreList":[]}
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, useLayoutEffect, useMemo } from "react";
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
- useLayoutEffect(() => {
97
- // Fast path for consistent aspect ratios if checking picsum
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","useLayoutEffect","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","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":[]}
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":[]}
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import { useMemo } from "react";
4
3
  import { View, 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, jsxs as _jsxs } from "react/jsx-runtime";
7
- // Note: ordered and start are accepted for API consistency but layout is
8
- // handled at the ListItem level — the List container is style-only.
7
+ // ordered/start stay on List for renderer API parity; markers render in ListItem.
9
8
  export const List = ({
10
9
  depth,
11
10
  children,
@@ -14,15 +13,7 @@ export const List = ({
14
13
  const {
15
14
  theme
16
15
  } = useMarkdownContext();
17
- const styles = useMemo(() => StyleSheet.create({
18
- list: {
19
- marginBottom: theme.spacing.m
20
- },
21
- listNested: {
22
- marginLeft: theme.spacing.s,
23
- marginBottom: 0
24
- }
25
- }), [theme]);
16
+ const styles = getCachedStyles(listStylesCache, theme, createListStyles);
26
17
  return /*#__PURE__*/_jsx(View, {
27
18
  style: [styles.list, depth > 0 && styles.listNested, style],
28
19
  children: children
@@ -38,29 +29,7 @@ export const ListItem = ({
38
29
  const {
39
30
  theme
40
31
  } = useMarkdownContext();
41
- const styles = useMemo(() => StyleSheet.create({
42
- listItem: {
43
- flexDirection: "row",
44
- marginBottom: theme.spacing.s,
45
- alignItems: "flex-start"
46
- },
47
- listBullet: {
48
- color: theme.colors.accent,
49
- fontSize: theme.fontSizes.m,
50
- lineHeight: theme.fontSizes.m * 1.6,
51
- marginRight: theme.spacing.s,
52
- minWidth: 22,
53
- textAlign: "center",
54
- fontFamily: theme.fontFamilies.regular,
55
- ...(Platform.OS === "android" && {
56
- includeFontPadding: false
57
- })
58
- },
59
- listItemContent: {
60
- flex: 1,
61
- minWidth: 0
62
- }
63
- }), [theme]);
32
+ const styles = getCachedStyles(listItemStylesCache, theme, createListItemStyles);
64
33
  const bullet = ordered ? `${start + index}.` : "•";
65
34
  return /*#__PURE__*/_jsxs(View, {
66
35
  style: [styles.listItem, style],
@@ -81,41 +50,7 @@ export const TaskListItem = ({
81
50
  const {
82
51
  theme
83
52
  } = useMarkdownContext();
84
- const styles = useMemo(() => StyleSheet.create({
85
- taskListItem: {
86
- flexDirection: "row",
87
- alignItems: "flex-start",
88
- marginBottom: theme.spacing.s
89
- },
90
- taskCheckbox: {
91
- width: 18,
92
- height: 18,
93
- borderRadius: 4,
94
- borderWidth: 2,
95
- borderColor: theme.colors.accent,
96
- alignItems: "center",
97
- justifyContent: "center",
98
- marginRight: theme.spacing.s,
99
- marginTop: 2
100
- },
101
- taskCheckboxChecked: {
102
- backgroundColor: theme.colors.accent
103
- },
104
- taskCheckboxText: {
105
- color: theme.colors.surface,
106
- fontSize: 12,
107
- lineHeight: 12,
108
- fontWeight: "700",
109
- fontFamily: theme.fontFamilies.regular,
110
- ...(Platform.OS === "android" && {
111
- includeFontPadding: false
112
- })
113
- },
114
- taskContent: {
115
- flex: 1,
116
- minWidth: 0
117
- }
118
- }), [theme]);
53
+ const styles = getCachedStyles(taskListItemStylesCache, theme, createTaskListItemStyles);
119
54
  return /*#__PURE__*/_jsxs(View, {
120
55
  style: [styles.taskListItem, style],
121
56
  children: [/*#__PURE__*/_jsx(View, {
@@ -130,4 +65,74 @@ export const TaskListItem = ({
130
65
  })]
131
66
  });
132
67
  };
68
+ const listStylesCache = new WeakMap();
69
+ const listItemStylesCache = new WeakMap();
70
+ const taskListItemStylesCache = new WeakMap();
71
+ const createListStyles = theme => StyleSheet.create({
72
+ list: {
73
+ marginBottom: theme.spacing.m
74
+ },
75
+ listNested: {
76
+ marginLeft: theme.spacing.s,
77
+ marginBottom: 0
78
+ }
79
+ });
80
+ const createListItemStyles = theme => StyleSheet.create({
81
+ listItem: {
82
+ flexDirection: "row",
83
+ marginBottom: theme.spacing.s,
84
+ alignItems: "flex-start"
85
+ },
86
+ listBullet: {
87
+ color: theme.colors.accent,
88
+ fontSize: theme.fontSizes.m,
89
+ lineHeight: theme.fontSizes.m * 1.6,
90
+ marginRight: theme.spacing.s,
91
+ minWidth: 22,
92
+ textAlign: "center",
93
+ fontFamily: theme.fontFamilies.regular,
94
+ ...(Platform.OS === "android" && {
95
+ includeFontPadding: false
96
+ })
97
+ },
98
+ listItemContent: {
99
+ flex: 1,
100
+ minWidth: 0
101
+ }
102
+ });
103
+ const createTaskListItemStyles = theme => StyleSheet.create({
104
+ taskListItem: {
105
+ flexDirection: "row",
106
+ alignItems: "flex-start",
107
+ marginBottom: theme.spacing.s
108
+ },
109
+ taskCheckbox: {
110
+ width: 18,
111
+ height: 18,
112
+ borderRadius: 4,
113
+ borderWidth: 2,
114
+ borderColor: theme.colors.accent,
115
+ alignItems: "center",
116
+ justifyContent: "center",
117
+ marginRight: theme.spacing.s,
118
+ marginTop: 2
119
+ },
120
+ taskCheckboxChecked: {
121
+ backgroundColor: theme.colors.accent
122
+ },
123
+ taskCheckboxText: {
124
+ color: theme.colors.surface,
125
+ fontSize: 12,
126
+ lineHeight: 12,
127
+ fontWeight: "700",
128
+ fontFamily: theme.fontFamilies.regular,
129
+ ...(Platform.OS === "android" && {
130
+ includeFontPadding: false
131
+ })
132
+ },
133
+ taskContent: {
134
+ flex: 1,
135
+ minWidth: 0
136
+ }
137
+ });
133
138
  //# sourceMappingURL=list.js.map