import React from 'react' import Prism from 'prismjs' import 'prismjs/plugins/toolbar/prism-toolbar' import 'prismjs/plugins/show-language/prism-show-language' import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard' import 'prismjs/plugins/autoloader/prism-autoloader' // mermaid图 import mermaid from 'mermaid' import { useRouter } from 'next/router' /** * @author https://github.com/txs/ * @returns */ const PrismMac = () => { const router = useRouter() React.useEffect(() => { // addWatch4Dom() renderPrismMac() router.events.on('routeChangeComplete', renderPrismMac) return () => { router.events.off('routeChangeComplete', renderPrismMac) } }, []) return <>> } function renderPrismMac() { const container = document?.getElementById('container-inner') const codeBlocks = container?.getElementsByTagName('pre') Array.from(codeBlocks).forEach(item => { // Add line numbers if (!item.classList.contains('line-numbers')) { item.classList.add('line-numbers') item.style.whiteSpace = 'pre-wrap' } }) const codeToolBars = container?.getElementsByClassName('code-toolbar') Array.from(codeToolBars).forEach(item => { // Add pre-mac element for Mac Style UI const findPreMac = item.getElementsByClassName('pre-mac') if (findPreMac.length === 0) { const preMac = document.createElement('div') preMac.classList.add('pre-mac') preMac.innerHTML = '' item?.appendChild(preMac, item) } }) // 支持 Mermaid const mermaids = document.querySelectorAll('.notion-code .language-mermaid') for (const e of mermaids) { const chart = e.innerText e.parentElement.parentElement.classList.remove('code-toolbar') e.parentElement.parentElement.innerHTML = `