snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted)
Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-15 21:11:02 +05:00
commit 083a46e93b
2115 changed files with 245958 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
import { Extension } from '@tiptap/core'
import { BlockMath, InlineMath } from './extensions/index.js'
import type { MathematicsOptions } from './types.js'
/**
* Mathematics extension for Tiptap that provides both inline and block math support using KaTeX.
* This extension combines the InlineMath and BlockMath extensions to provide a complete
* mathematical expression solution for rich text editing. It supports LaTeX syntax,
* custom rendering options, and interactive math nodes.
*
* @example
* ```typescript
* import { Editor } from '@tiptap/core'
* import { Mathematics } from '@tiptap/extension-mathematics'
* import { migrateMathStrings } from '@tiptap/extension-mathematics/utils'
*
* const editor = new Editor({
* extensions: [
* Mathematics.configure({
* inlineOptions: {
* onClick: (node, pos) => {
* console.log('Inline math clicked:', node.attrs.latex)
* }
* },
* blockOptions: {
* onClick: (node, pos) => {
* console.log('Block math clicked:', node.attrs.latex)
* }
* },
* katexOptions: {
* displayMode: false,
* throwOnError: false,
* macros: {
* '\\RR': '\\mathbb{R}',
* '\\ZZ': '\\mathbb{Z}'
* }
* }
* })
* ],
* content: `
* <p>Inline math: $E = mc^2$</p>
* <div data-type="block-math" data-latex="\\sum_{i=1}^{n} x_i = X"></div>
* `,
* onCreate({ editor }) {
* // Optional: Migrate existing math strings to math nodes
* migrateMathStrings(editor)
* }
* })
* ```
*/
export const Mathematics = Extension.create<MathematicsOptions>({
name: 'Mathematics',
addOptions() {
return {
inlineOptions: undefined,
blockOptions: undefined,
katexOptions: undefined,
}
},
addExtensions() {
return [
BlockMath.configure({
...this.options.blockOptions,
katexOptions: this.options.katexOptions,
}),
InlineMath.configure({
...this.options.inlineOptions,
katexOptions: this.options.katexOptions,
}),
]
},
})
export default Mathematics