import Link from '@components/Link'
import { marked } from 'marked'
import Highlight, { defaultProps, Language } from 'prism-react-renderer'
import { renderToStaticMarkup } from 'react-dom/server'
//@ts-ignore
delete defaultProps.theme
// import linkStyles from '../components/link/link.module.css'
const renderer = new marked.Renderer()
renderer.heading = (text, level, _, slugger) => {
const id = slugger.slug(text)
const Component = `h${level}`
return renderToStaticMarkup(
//@ts-ignore
{/* {title &&) } marked.setOptions({ gfm: true, breaks: true, headerIds: true, renderer, }) const markdown = (markdown: string) => marked(markdown) export default markdown const Code = ({ code, language, highlight, title, ...props }: { code: string, language: string, highlight?: string, title?: string, }) => { if (!language) return ( <>{title}
} */} {/* {language && title &&{language}
} */}
>
)
const highlightedLines = highlight
//@ts-ignore
? highlight.split(',').reduce((lines, h) => {
if (h.includes('-')) {
// Expand ranges like 3-5 into [3,4,5]
const [start, end] = h.split('-').map(Number)
const x = Array(end - start + 1)
.fill(undefined)
.map((_, i) => i + start)
return [...lines, ...x]
}
return [...lines, Number(h)]
}, [])
: ''
// https://mdxjs.com/guides/syntax-harkedighlighting#all-together
return (
<>
{
tokens.map((line, i) => (
{
line.map((token, key) => (
))
}
))}
)}