From bb26465da83e370115ca376f521098c287a14670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 5 Mar 2020 22:15:17 +0100 Subject: [PATCH] add plugin support --- packages/tiptap-core/package.json | 8 ++- packages/tiptap-core/src/Editor.ts | 21 ++++-- packages/tiptap-core/src/ExtensionManager.ts | 6 ++ yarn.lock | 73 ++------------------ 4 files changed, 35 insertions(+), 73 deletions(-) diff --git a/packages/tiptap-core/package.json b/packages/tiptap-core/package.json index 04d2d8d2..9a5702c2 100644 --- a/packages/tiptap-core/package.json +++ b/packages/tiptap-core/package.json @@ -13,10 +13,12 @@ ], "dependencies": { "collect.js": "^4.20.3", - "prosemirror-example-setup": "^1.1.2", + "prosemirror-commands": "^1.1.3", + "prosemirror-dropcursor": "^1.3.2", + "prosemirror-gapcursor": "^1.1.3", + "prosemirror-inputrules": "^1.1.2", + "prosemirror-keymap": "^1.1.3", "prosemirror-model": "^1.9.1", - "prosemirror-schema-basic": "^1.1.2", - "prosemirror-schema-list": "^1.1.2", "prosemirror-state": "^1.3.2", "prosemirror-view": "^1.14.2" } diff --git a/packages/tiptap-core/src/Editor.ts b/packages/tiptap-core/src/Editor.ts index ea24bd66..ec3c98fa 100644 --- a/packages/tiptap-core/src/Editor.ts +++ b/packages/tiptap-core/src/Editor.ts @@ -1,8 +1,13 @@ import {EditorState, TextSelection, Plugin} from "prosemirror-state" import {EditorView} from "prosemirror-view" import {Schema, DOMParser, DOMSerializer} from "prosemirror-model" +import { inputRules, undoInputRule } from 'prosemirror-inputrules' +import { keymap } from 'prosemirror-keymap' +import { baseKeymap } from 'prosemirror-commands' // @ts-ignore -import {exampleSetup} from "prosemirror-example-setup" +import { dropCursor } from 'prosemirror-dropcursor' +// @ts-ignore +import { gapCursor } from 'prosemirror-gapcursor' import elementFromString from './utils/elementFromString' import injectCSS from './utils/injectCSS' @@ -59,13 +64,21 @@ export class Editor { }) } + private get plugins() { + return [ + ...this.extensionManager.plugins, + keymap({ Backspace: undoInputRule }), + keymap(baseKeymap), + dropCursor(), + gapCursor(), + ] + } + private createView() { this.view = new EditorView(this.options.element, { state: EditorState.create({ doc: this.createDocument(this.options.content), - plugins: [ - ...exampleSetup({schema: this.schema}), - ], + plugins: this.plugins, }), dispatchTransaction: this.dispatchTransaction.bind(this), }) diff --git a/packages/tiptap-core/src/ExtensionManager.ts b/packages/tiptap-core/src/ExtensionManager.ts index cc0740cf..aa76a041 100644 --- a/packages/tiptap-core/src/ExtensionManager.ts +++ b/packages/tiptap-core/src/ExtensionManager.ts @@ -28,4 +28,10 @@ export default class ExtensionManager { .all() } + get plugins(): any { + return collect(this.extensions) + .flatMap(extension => extension.plugins) + .toArray() + } + } diff --git a/yarn.lock b/yarn.lock index bc5e9cac..73de4656 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4247,11 +4247,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -crel@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/crel/-/crel-3.1.0.tgz#c0d5ed3df6b8017ff5ecc9f0743c60572e268c64" - integrity sha512-VIGY44ERxx8lXVkOEfcB0A49OkjxkQNK+j+fHvoLy7GsGX1KKgAaQ+p9N0YgvQXu+X+ryUWGDeLx/fSI+w7+eg== - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -11039,7 +11034,7 @@ property-information@^5.0.0, property-information@^5.2.0: dependencies: xtend "^4.0.0" -prosemirror-commands@^1.0.0: +prosemirror-commands@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.3.tgz#4ee481ff062a02498ff3d50cfcca2f6327fd1fde" integrity sha512-YVbKwTR4likoyhuwIUC9egbzHvnFrFUNbiesB0DB/HZ8hBcopQ42Tb4KGlYrS3n+pNDTFObN73CLFY6mYLN2IQ== @@ -11048,7 +11043,7 @@ prosemirror-commands@^1.0.0: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-dropcursor@^1.0.0: +prosemirror-dropcursor@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.2.tgz#28738c4ed7102e814d7a8a26d70018523fc7cd6d" integrity sha512-4c94OUGyobGnwcQI70OXyMhE/9T4aTgjU+CHxkd5c7D+jH/J0mKM/lk+jneFVKt7+E4/M0D9HzRPifu8U28Thw== @@ -11057,22 +11052,7 @@ prosemirror-dropcursor@^1.0.0: prosemirror-transform "^1.1.0" prosemirror-view "^1.1.0" -prosemirror-example-setup@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-example-setup/-/prosemirror-example-setup-1.1.2.tgz#0df63d14a26b174933345814cb6503ad72a4ccdb" - integrity sha512-MTpIMyqk08jFnzxeRMCinCEMtVSTUtxKgQBGxfCbVe9C6zIOqp9qZZJz5Ojaad1GETySyuj8+OIHHvQsIaaaGQ== - dependencies: - prosemirror-commands "^1.0.0" - prosemirror-dropcursor "^1.0.0" - prosemirror-gapcursor "^1.0.0" - prosemirror-history "^1.0.0" - prosemirror-inputrules "^1.0.0" - prosemirror-keymap "^1.0.0" - prosemirror-menu "^1.0.0" - prosemirror-schema-list "^1.0.0" - prosemirror-state "^1.0.0" - -prosemirror-gapcursor@^1.0.0: +prosemirror-gapcursor@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.1.3.tgz#87eb7520c0f17459774a02afb52ad322ee755efe" integrity sha512-/lgWvt2AdHjsM6oEsF65z0lhdQJGl6sQSfXSOX8/xjpd8ycfOolhgKZd4TPYpikwnh85JF4l5eIyiFZsl/RQQA== @@ -11082,16 +11062,7 @@ prosemirror-gapcursor@^1.0.0: prosemirror-state "^1.0.0" prosemirror-view "^1.0.0" -prosemirror-history@^1.0.0: - 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.0.0: +prosemirror-inputrules@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.1.2.tgz#487e46c763e1212a4577397aba7706139084f012" integrity sha512-Ja5Z3BWestlHYGvtSGqyvxMeB8QEuBjlHM8YnKtLGUXMDp965qdDV4goV8lJb17kIWHk7e7JNj6Catuoa3302g== @@ -11099,7 +11070,7 @@ prosemirror-inputrules@^1.0.0: prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-keymap@^1.0.0: +prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.1.3.tgz#be22d6108df2521608e9216a87b1a810f0ed361e" integrity sha512-PRA4NzkUMzV/NFf5pyQ6tmlIHiW/qjQ1kGWUlV2rF/dvlOxtpGpTEjIMhWgLuMf+HiDEFnUEP7uhYXu+t+491g== @@ -11107,39 +11078,14 @@ prosemirror-keymap@^1.0.0: prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" -prosemirror-menu@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.1.2.tgz#a58c81e01fdf3e4e25347cea3db24d51d17579ec" - integrity sha512-iAPBMnxaj0AXzqgzxrJPrjo5njIqUaDQjyS17R/vb6zIBnEtH1ZDPanrmZnYkBEFvvM4fBtzDZSQct5iJNTcDQ== - dependencies: - crel "^3.1.0" - prosemirror-commands "^1.0.0" - prosemirror-history "^1.0.0" - prosemirror-state "^1.0.0" - -prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.2.0, prosemirror-model@^1.9.1: +prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.9.1.tgz#8c08cf556f593c5f015548d2c1a6825661df087f" integrity sha512-Qblh8pm1c7Ll64sYLauwwzjimo/tFg1zW3Q3IWhKRhvfOEgRKqa6dC5pRrAa+XHOIjBFEYrqbi52J5bqA2dV8Q== dependencies: orderedmap "^1.1.0" -prosemirror-schema-basic@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.1.2.tgz#4bde5c339c845e0d08ec8fe473064e372ca51ae3" - integrity sha512-G4q8WflNsR1Q33QAV4MQO0xWrHLOJ+BQcKswGXMy626wlQj6c/1n1v4eC9ns+h2y1r/fJHZEgSZnsNhm9lbrDw== - dependencies: - prosemirror-model "^1.2.0" - -prosemirror-schema-list@^1.0.0, prosemirror-schema-list@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.2.tgz#310809209094b03425da7f5c337105074913da6c" - integrity sha512-dgM9PwtM4twa5WsgSYMB+J8bwjnR43DAD3L9MsR9rKm/nZR5Y85xcjB7gusVMSsbQ2NomMZF03RE6No6mTnclQ== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.2: +prosemirror-state@^1.0.0, prosemirror-state@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.3.2.tgz#1b910b0dc01c1f00926bb9ba1589f7b7ac0d658b" integrity sha512-t/JqE3aR0SV9QrzFVkAXsQwsgrQBNs/BDbcFH20RssW0xauqNNdjTXxy/J/kM7F+0zYi6+BRmz7cMMQQFU3mwQ== @@ -12110,11 +12056,6 @@ rollup@^0.67.3: "@types/estree" "0.0.39" "@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: version "2.4.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8"