tiptap/packages/extension-history/src/index.ts

54 lines
1.0 KiB
TypeScript
Raw Normal View History

2020-10-22 18:34:49 +08:00
import { Command, createExtension } from '@tiptap/core'
2020-10-23 04:40:40 +08:00
import { history, undo, redo } from 'prosemirror-history'
2020-03-06 18:02:35 +08:00
2020-09-10 00:55:19 +08:00
export interface HistoryOptions {
2020-09-28 03:29:51 +08:00
depth: number,
newGroupDelay: number,
2020-04-14 04:32:39 +08:00
}
2020-10-23 04:40:40 +08:00
const History = createExtension({
2020-10-22 18:34:49 +08:00
defaultOptions: <HistoryOptions>{
2020-09-27 16:52:09 +08:00
depth: 100,
newGroupDelay: 500,
2020-10-22 18:34:49 +08:00
},
addCommands() {
return {
2020-11-13 22:08:30 +08:00
/**
* Undo recent changes
*/
2020-10-23 04:40:40 +08:00
undo: (): Command => ({ state, dispatch }) => {
2020-10-22 18:34:49 +08:00
return undo(state, dispatch)
},
2020-11-13 22:08:30 +08:00
/**
* Reapply reverted changes
*/
2020-10-23 04:40:40 +08:00
redo: (): Command => ({ state, dispatch }) => {
2020-10-22 18:34:49 +08:00
return redo(state, dispatch)
},
}
},
addProseMirrorPlugins() {
return [
history(this.options),
]
},
addKeyboardShortcuts() {
return {
'Mod-z': () => this.editor.commands.undo(),
'Mod-y': () => this.editor.commands.redo(),
'Shift-Mod-z': () => this.editor.commands.redo(),
2020-10-22 18:34:49 +08:00
}
},
})
2020-10-23 04:40:40 +08:00
export default History
2020-11-11 04:18:22 +08:00
declare module '@tiptap/core' {
2020-10-23 04:40:40 +08:00
interface AllExtensions {
History: typeof History,
}
}