@@ -13,6 +13,7 @@ export const Code: React.FC<{
1313 defaultLanguage ?: string ;
1414 className ?: string ;
1515 showCopy ?: boolean ;
16+ showLangLabel ?: boolean ;
1617 themes ?: {
1718 light : BundledTheme ;
1819 dark : BundledTheme ;
@@ -25,29 +26,32 @@ export const Code: React.FC<{
2526 light : "catppuccin-latte" ,
2627 dark : "dracula"
2728 } ,
28- showCopy = true
29+ showCopy = true ,
30+ showLangLabel = true
2931} ) => {
3032 const { recordMap } = useNotionContext ( ) ;
31- const [ isCopied , setIsCopied ] = useState ( false ) ;
33+
3234 const content = getBlockTitle ( block , recordMap ) ;
3335 const [ code , setCode ] = useState < string | undefined > ( undefined ) ;
36+ const [ isCopied , setIsCopied ] = useState ( false ) ;
37+
3438 const timer = useRef < null | number > ( null ) ;
3539
36- const language = (
37- block . properties ?. language ?. [ 0 ] ?. [ 0 ] || defaultLanguage
38- ) . toLowerCase ( ) ;
3940 const caption = block . properties . caption ;
4041
42+ const providedLangType = block . properties ?. language ?. [ 0 ] ?. [ 0 ] ;
43+ const lang = ( providedLangType || defaultLanguage ) . toLowerCase ( ) ;
44+
4145 useEffect ( ( ) => {
4246 async function renderCodeToHtml ( ) {
4347 const htmlCode = await codeToHtml ( content , {
44- lang : language ,
48+ lang,
4549 themes
4650 } ) ;
4751 setCode ( htmlCode ) ;
4852 }
4953 content && renderCodeToHtml ( ) ;
50- } , [ content , language , themes ] ) ;
54+ } , [ content , lang , themes ] ) ;
5155
5256 const clickCopy = useCallback ( ( ) => {
5357 navigator . clipboard . writeText ( content ) . then ( ( ) => {
@@ -65,11 +69,11 @@ export const Code: React.FC<{
6569
6670 return (
6771 < figure className = { cs ( styles . codeBlock , className ) } >
72+ { showLangLabel && providedLangType ? (
73+ < span className = { styles . codeLanLabel } > { providedLangType } </ span >
74+ ) : null }
6875 { showCopy ? (
69- < button
70- onClick = { clickCopy }
71- className = { styles . codeCopyButton }
72- >
76+ < button onClick = { clickCopy } className = { styles . codeCopyButton } >
7377 < IoMdCopy />
7478 { isCopied ? "Copied" : "Copy" }
7579 </ button >
0 commit comments