udpate markdown tsx file path

This commit is contained in:
duanfuxiang
2025-04-13 17:34:11 +08:00
parent 1d88715666
commit 4a5823721e
17 changed files with 49 additions and 49 deletions

View File

@@ -0,0 +1,55 @@
import { memo } from 'react'
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
import {
oneDark,
oneLight,
} from 'react-syntax-highlighter/dist/esm/styles/prism'
function SyntaxHighlighterWrapper({
isDarkMode,
language,
hasFilename,
wrapLines,
children,
isOpen = true,
}: {
isDarkMode: boolean
language: string | undefined
hasFilename: boolean
wrapLines: boolean
children: string
isOpen?: boolean
}) {
if (!isOpen) return null;
return (
<SyntaxHighlighter
language={language}
style={isDarkMode ? oneDark : oneLight}
customStyle={{
borderRadius: hasFilename
? '0 0 var(--radius-s) var(--radius-s)'
: 'var(--radius-s)',
margin: 0,
padding: 'var(--size-4-2)',
fontSize: 'var(--font-ui-small)',
fontFamily:
language === 'markdown' ? 'var(--font-interface)' : 'inherit',
}}
wrapLines={wrapLines}
lineProps={
// Wrapping should work without lineProps, but Obsidian's default CSS seems to override SyntaxHighlighter's styles.
// We manually override the white-space property to ensure proper wrapping.
wrapLines
? {
style: { whiteSpace: 'pre-wrap' },
}
: undefined
}
>
{children}
</SyntaxHighlighter>
)
}
export const MemoizedSyntaxHighlighterWrapper = memo(SyntaxHighlighterWrapper)