src/components/wiki/markdown-ast.tsx (24 lines of code) (raw):

import React, {useContext} from 'react'; import Markdown from 'react-native-markdown-display'; import MarkdownItInstance from './markdown-instance'; import markdownStyles from './markdown-view-styles'; import {ThemeContext} from '../theme/theme-context'; import type {MarkdownASTNode} from 'types/Markdown'; import type {Theme} from 'types/Theme'; import type {TextStyleProp} from 'types/Internal'; type Props = { ast: MarkdownASTNode[]; rules: Record<string, any>; textStyle?: TextStyleProp; }; const MarkdownAST = (props: Props) => { const {ast, rules, textStyle} = props; const theme: Theme = useContext(ThemeContext); return ( <Markdown style={markdownStyles(theme?.uiTheme, textStyle)} markdownit={MarkdownItInstance} rules={rules} > {ast} </Markdown> ); }; export default React.memo<Props>( MarkdownAST, (prevProps: Props, nextProps: Props) => prevProps.ast === nextProps.ast, ) as React$AbstractComponent<Props, unknown>;