import { createEditor } from '@prosekit/core'
import { defineMath, defineMathPlugin } from '@prosekit/extensions'
import katex from 'katex'
import 'katex/dist/katex.min.css'
function createMathEditor() {
const editor = createEditor({
extensions: [
defineMath({
renderMathBlock: (content) => {
const div = document.createElement('div')
div.className = 'math-block'
try {
katex.render(content, div, {
displayMode: true,
throwOnError: false,
errorColor: '#cc0000',
macros: {
'\\RR': '\\mathbb{R}',
},
})
} catch (error) {
div.className = 'math-block math-error'
div.textContent = `LaTeX Error: ${error.message}`
}
return div
},
renderMathInline: (content) => {
const span = document.createElement('span')
span.className = 'math-inline'
try {
katex.render(content, span, {
displayMode: false,
throwOnError: false,
})
} catch (error) {
span.className = 'math-inline math-error'
span.textContent = content
}
return span
},
}),
defineMathPlugin(),
],
})
return editor
}
const editor = createMathEditor()