2020-09-22 05:17:30 +08:00
|
|
|
import { Command, Extension } from '@tiptap/core'
|
2020-03-06 18:02:35 +08:00
|
|
|
import {
|
|
|
|
history,
|
|
|
|
undo,
|
|
|
|
redo,
|
|
|
|
} from 'prosemirror-history'
|
|
|
|
|
|
|
|
declare module '@tiptap/core/src/Editor' {
|
2020-09-22 16:49:38 +08:00
|
|
|
interface Commands {
|
2020-09-22 05:17:30 +08:00
|
|
|
undo: () => Command,
|
|
|
|
redo: () => Command,
|
2020-03-06 18:02:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-09-10 00:55:19 +08:00
|
|
|
export interface HistoryOptions {
|
2020-09-25 19:52:17 +08:00
|
|
|
historyPluginOptions: Record<string, unknown>,
|
2020-04-14 04:32:39 +08:00
|
|
|
}
|
|
|
|
|
2020-09-09 05:44:45 +08:00
|
|
|
export default new Extension<HistoryOptions>()
|
|
|
|
.name('history')
|
|
|
|
.defaults({
|
|
|
|
historyPluginOptions: {},
|
|
|
|
})
|
|
|
|
.commands(() => ({
|
2020-09-22 05:17:30 +08:00
|
|
|
undo: () => ({ state, dispatch }) => {
|
|
|
|
return undo(state, dispatch)
|
2020-09-09 05:44:45 +08:00
|
|
|
},
|
2020-09-22 05:17:30 +08:00
|
|
|
redo: () => ({ state, dispatch }) => {
|
|
|
|
return redo(state, dispatch)
|
2020-09-09 05:44:45 +08:00
|
|
|
},
|
|
|
|
}))
|
|
|
|
.keys(({ editor }) => ({
|
|
|
|
'Mod-z': () => editor.undo(),
|
|
|
|
'Mod-y': () => editor.redo(),
|
|
|
|
'Shift-Mod-z': () => editor.redo(),
|
|
|
|
}))
|
|
|
|
.plugins(({ options }) => [
|
2020-09-24 06:29:05 +08:00
|
|
|
history(options.historyPluginOptions),
|
2020-09-09 05:44:45 +08:00
|
|
|
])
|
|
|
|
.create()
|