-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathsubscript.ts
60 lines (51 loc) · 1.79 KB
/
subscript.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import type { ButtonViewReturn, GeneralOptions } from '@/type'
import type { Extensions } from '@tiptap/core'
import type { SubscriptExtensionOptions as TiptapSubscriptOptions } from '@tiptap/extension-subscript'
import type { SuperscriptExtensionOptions as TiptapSuperscriptOptions } from '@tiptap/extension-superscript'
import { Extension } from '@tiptap/core'
import { Subscript as TiptapSubscript } from '@tiptap/extension-subscript'
import { Superscript as TiptapSuperscript } from '@tiptap/extension-superscript'
import { SubscriptActionButton } from './components/ActionButton'
/**
* Represents the interface for subscript and superscript options, extending GeneralOptions.
*/
export interface SubAndSuperScriptOptions extends GeneralOptions<SubAndSuperScriptOptions> {
/**
* subscript options or false, indicating whether subscript is enabled
*
* @default true
*/
subscript: Partial<TiptapSubscriptOptions> | false
/**
* superscript options or false, indicating whether superscript is enabled
*
* @default true
*/
superscript: Partial<TiptapSuperscriptOptions> | false
}
export const SubAndSuperScript = /* @__PURE__*/ Extension.create<SubAndSuperScriptOptions>({
name: 'subAndSuperScript',
addOptions() {
return {
...this.parent?.(),
button: ({ editor, extension, t }) => ({
component: SubscriptActionButton,
componentProps: {
editor,
extension,
t
}
})
}
},
addExtensions() {
const extensions: Extensions = []
if (this.options.subscript !== false) {
extensions.push(TiptapSubscript.configure(this.options.subscript))
}
if (this.options.superscript !== false) {
extensions.push(TiptapSuperscript.configure(this.options.superscript))
}
return extensions
}
})