1
0
mirror of https://github.com/elk-zone/elk synced 2024-12-03 01:08:07 +09:00
elk/composables/tiptap/shiki.ts

26 lines
649 B
TypeScript

import CodeBlock from '@tiptap/extension-code-block'
import { VueNodeViewRenderer } from '@tiptap/vue-3'
import { createHighlightPlugin } from 'prosemirror-highlight'
import { shikiParser } from './shiki-parser'
import TiptapCodeBlock from '~/components/tiptap/TiptapCodeBlock.vue'
export const TiptapPluginCodeBlockShiki = CodeBlock.extend({
addOptions() {
return {
...this.parent?.(),
defaultLanguage: null,
}
},
addProseMirrorPlugins() {
return [
createHighlightPlugin({ parser: shikiParser, nodeTypes: ['codeBlock'] }),
]
},
addNodeView() {
return VueNodeViewRenderer(TiptapCodeBlock)
},
})