add basic history extension

This commit is contained in:
Philipp Kühn 2020-03-06 11:02:35 +01:00
parent cb6a723d57
commit f7b62be436
7 changed files with 85 additions and 3 deletions

View File

@ -159,7 +159,8 @@ export class Editor extends EventEmitter {
// @ts-ignore // @ts-ignore
this[name] = this.chainCommand((...args: any) => { this[name] = this.chainCommand((...args: any) => {
return new Promise(resolve => { return new Promise(resolve => {
return method(resolve, this, ...args) // return method(resolve, this, ...args)
return method(resolve as Function, this as Editor, ...args as any)
}) })
}) })

View File

@ -14,6 +14,7 @@ export default abstract class Extension {
defaultOptions: { [key: string]: any } = {} defaultOptions: { [key: string]: any } = {}
public abstract name: string public abstract name: string
// public abstract plugins: any
public type = 'extension' public type = 'extension'

View File

@ -23,6 +23,7 @@ export default abstract class Node extends Extension {
// } // }
public abstract schema: any public abstract schema: any
// public abstract plugins?: any
// command() { // command() {
// return () => {} // return () => {}

View File

@ -0,0 +1,43 @@
import Editor, { Extension } from '@tiptap/core'
import {
history,
undo,
redo,
undoDepth,
redoDepth,
} from 'prosemirror-history'
declare module '@tiptap/core/src/Editor' {
interface Editor {
undo(): Editor,
}
}
export default class History extends Extension {
name = 'history'
init() {
// @ts-ignore
this.editor.registerCommand('undo', (next, { view }) => {
undo(view.state, view.dispatch)
next()
})
}
get plugins() {
return [
history()
]
}
// commands() {
// return {
// undo: () => undo,
// redo: () => redo,
// undoDepth: () => undoDepth,
// redoDepth: () => redoDepth,
// }
// }
}

View File

@ -0,0 +1,20 @@
{
"name": "@tiptap/history-extension",
"version": "1.0.0",
"source": "index.ts",
"main": "dist/tiptap-history-extension.js",
"umd:main": "dist/tiptap-history-extension.umd.js",
"module": "dist/tiptap-history-extension.mjs",
"unpkg": "dist/tiptap-history-extension.js",
"jsdelivr": "dist/tiptap-history-extension.js",
"files": [
"src",
"dist"
],
"peerDependencies": {
"@tiptap/core": "2.x"
},
"dependencies": {
"prosemirror-history": "^1.1.3"
}
}

View File

@ -9,6 +9,7 @@ import Editor from '@tiptap/core'
import Document from '@tiptap/document-extension' import Document from '@tiptap/document-extension'
import Paragraph from '@tiptap/paragraph-extension' import Paragraph from '@tiptap/paragraph-extension'
import Text from '@tiptap/text-extension' import Text from '@tiptap/text-extension'
import History from '@tiptap/history-extension'
export default { export default {
mounted() { mounted() {
@ -19,10 +20,11 @@ export default {
new Document(), new Document(),
new Paragraph(), new Paragraph(),
new Text(), new Text(),
new History(),
], ],
}) })
// .focus('end')
// .insertText('foo') // .insertText('foo')
// .undo()
// .insertHTML('<p>hey</p>') // .insertHTML('<p>hey</p>')
// .registerCommand('lol', (next) => { // .registerCommand('lol', (next) => {
// console.log('lol') // console.log('lol')

View File

@ -11076,6 +11076,15 @@ prosemirror-gapcursor@^1.1.3:
prosemirror-state "^1.0.0" prosemirror-state "^1.0.0"
prosemirror-view "^1.0.0" prosemirror-view "^1.0.0"
prosemirror-history@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.1.3.tgz#4f76a1e71db4ef7cdf0e13dec6d8da2aeaecd489"
integrity sha512-zGDotijea+vnfnyyUGyiy1wfOQhf0B/b6zYcCouBV8yo6JmrE9X23M5q7Nf/nATywEZbgRLG70R4DmfSTC+gfg==
dependencies:
prosemirror-state "^1.2.2"
prosemirror-transform "^1.0.0"
rope-sequence "^1.3.0"
prosemirror-inputrules@^1.1.2: prosemirror-inputrules@^1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz#487e46c763e1212a4577397aba7706139084f012" resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz#487e46c763e1212a4577397aba7706139084f012"
@ -11099,7 +11108,7 @@ prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.9.1:
dependencies: dependencies:
orderedmap "^1.1.0" orderedmap "^1.1.0"
prosemirror-state@^1.0.0, prosemirror-state@^1.3.2: prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.2:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.2.tgz#1b910b0dc01c1f00926bb9ba1589f7b7ac0d658b" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.2.tgz#1b910b0dc01c1f00926bb9ba1589f7b7ac0d658b"
integrity sha512-t/JqE3aR0SV9QrzFVkAXsQwsgrQBNs/BDbcFH20RssW0xauqNNdjTXxy/J/kM7F+0zYi6+BRmz7cMMQQFU3mwQ== integrity sha512-t/JqE3aR0SV9QrzFVkAXsQwsgrQBNs/BDbcFH20RssW0xauqNNdjTXxy/J/kM7F+0zYi6+BRmz7cMMQQFU3mwQ==
@ -12070,6 +12079,11 @@ rollup@^0.67.3:
"@types/estree" "0.0.39" "@types/estree" "0.0.39"
"@types/node" "*" "@types/node" "*"
rope-sequence@^1.3.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b"
integrity sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg==
run-async@^2.2.0: run-async@^2.2.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8"