mirror of
https://github.com/ueberdosis/tiptap.git
synced 2024-11-30 17:09:02 +08:00
41 lines
769 B
JavaScript
41 lines
769 B
JavaScript
import * as shiki from 'shiki'
|
|
|
|
let highlighter = null
|
|
|
|
async function init() {
|
|
if (highlighter) {
|
|
return highlighter
|
|
}
|
|
|
|
highlighter = await shiki.createHighlighter({
|
|
themes: ['material-theme-darker'],
|
|
langs: [
|
|
'html',
|
|
'js',
|
|
'jsx',
|
|
'ts',
|
|
'tsx',
|
|
'css',
|
|
'vue-html',
|
|
'vue',
|
|
'scss',
|
|
],
|
|
})
|
|
|
|
return highlighter
|
|
}
|
|
|
|
// eslint-disable-next-line
|
|
self.addEventListener('message', async event => {
|
|
init().then(async () => {
|
|
const { code, language } = event.data
|
|
|
|
await highlighter.loadLanguage(language)
|
|
|
|
const html = highlighter.codeToHtml(code, { lang: language, theme: 'material-theme-darker' })
|
|
|
|
// eslint-disable-next-line
|
|
self.postMessage({ code, language, html })
|
|
})
|
|
})
|