Skip to content

Commit a000ab8

Browse files
committed
chore: cleanup
1 parent d2e1d60 commit a000ab8

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

packages/react-native-sdk/src/syntax-highlighting/SyntaxHighlighter.tsx

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { type PropsWithChildren } from 'react';
1+
import React, { type PropsWithChildren, useMemo } from 'react';
22
import { Platform, Text } from 'react-native';
33

44
import './prism-config';
@@ -22,19 +22,13 @@ import { MarkdownReactiveScrollView } from '../components';
2222

2323
const DEFAULT_FONT_SIZE = 13;
2424

25-
// TODO: Just do useMemo, there's no real need for this type of caching.
26-
const styleCache = new Map();
27-
2825
const generateNewStylesheet = ({
2926
stylesheet,
3027
highlighter,
3128
}: {
3229
stylesheet: SyntaxHighlighterStylesheet;
3330
highlighter: NativeSyntaxHighlighterProps['highlighter'];
3431
}) => {
35-
if (styleCache.has(stylesheet)) {
36-
return styleCache.get(stylesheet);
37-
}
3832
stylesheet = Array.isArray(stylesheet) ? stylesheet[0] : stylesheet;
3933

4034
const transformedStyle = Object.entries(stylesheet ?? {}).reduce<RNSheet>(
@@ -55,7 +49,6 @@ const generateNewStylesheet = ({
5549

5650
const defaultColor = (topLevel && topLevel.color) || '#000';
5751

58-
styleCache.set(stylesheet, { transformedStyle, defaultColor });
5952
return { transformedStyle, defaultColor };
6053
};
6154

@@ -171,24 +164,35 @@ const NativeSyntaxHighlighter = ({
171164
CodeTag = MarkdownReactiveScrollView,
172165
...rest
173166
}: PropsWithChildren<NativeSyntaxHighlighterProps>) => {
174-
const { transformedStyle, defaultColor } = generateNewStylesheet({
175-
stylesheet: style,
176-
highlighter,
177-
});
167+
const { transformedStyle, defaultColor } = useMemo(
168+
() =>
169+
generateNewStylesheet({
170+
stylesheet: style,
171+
highlighter,
172+
}),
173+
[highlighter, style],
174+
);
175+
const renderer = useMemo(
176+
() =>
177+
nativeRenderer({
178+
defaultColor: defaultColor as string,
179+
fontFamily,
180+
fontSize,
181+
}),
182+
[defaultColor, fontFamily, fontSize],
183+
);
184+
178185
const Highlighter =
179186
highlighter === 'prism' ? SyntaxHighlighterPrism : SyntaxHighlighter;
187+
180188
return (
181189
<Highlighter
182190
PreTag={PreTag}
183191
CodeTag={CodeTag}
184192
{...rest}
185-
style={transformedStyle}
193+
style={transformedStyle as SyntaxHighlighterStylesheet}
186194
horizontal={true}
187-
renderer={nativeRenderer({
188-
defaultColor,
189-
fontFamily,
190-
fontSize,
191-
})}
195+
renderer={renderer}
192196
>
193197
{children}
194198
</Highlighter>

0 commit comments

Comments
 (0)