Files
nocodb/packages/nc-gui/helpers/tiptap-markdown/extensions/nodes/code-block.ts
2025-01-14 01:49:08 +03:00

32 lines
873 B
TypeScript

import { Node } from '@tiptap/core'
import type { MarkdownNodeSpec } from '../../types'
// TODO: Extend from tiptap extension
export const CodeBlock = Node.create<any, { markdown: MarkdownNodeSpec }>({
name: 'codeBlock',
addStorage() {
return {
markdown: {
serialize(state, node) {
state.write(`\`\`\`${node.attrs.language || ''}\n`)
state.text(node.textContent, false)
state.ensureNewLine()
state.write('```')
state.closeBlock(node)
},
parse: {
setup(markdownit) {
markdownit.set({
langPrefix: this.options.languageClassPrefix ?? 'language-',
})
},
updateDOM(element) {
element.innerHTML = element.innerHTML.replace(/\n<\/code><\/pre>/g, '</code></pre>')
},
},
},
}
},
})