webapp/src/components/Editor/extensions/CustomBlockquote.ts
2024-02-08 02:12:10 +03:00

48 lines
1.1 KiB
TypeScript

import { Blockquote } from '@tiptap/extension-blockquote'
export type QuoteTypes = 'quote' | 'punchline'
declare module '@tiptap/core' {
interface Commands<ReturnType> {
CustomBlockquote: {
toggleBlockquote: (type: QuoteTypes) => ReturnType
setBlockQuoteFloat: (float: null | 'left' | 'right') => ReturnType
}
}
}
export const CustomBlockquote = Blockquote.extend({
name: 'blockquote',
defaultOptions: {
HTMLAttributes: {}
},
group: 'block',
content: 'block+',
addAttributes() {
return {
'data-float': {
default: null
},
'data-type': {
default: null
}
}
},
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
addCommands() {
return {
toggleBlockquote:
(type) =>
({ commands }) => {
return commands.toggleWrap(this.name, { 'data-type': type })
},
setBlockQuoteFloat:
(value) =>
({ commands }) => {
return commands.updateAttributes(this.name, { 'data-float': value })
}
}
}
})