From feda283fcbd4ac9569578546e92c5eaa7ee6a680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 20 Nov 2020 21:30:12 +0100 Subject: [PATCH] add enableInputRules and enablePasteRules option --- docs/src/docPages/api/editor.md | 27 +++++++++++++++++++++++++++ packages/core/src/Editor.ts | 2 ++ packages/core/src/ExtensionManager.ts | 15 +++++++++++---- packages/core/src/types.ts | 2 ++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/docs/src/docPages/api/editor.md b/docs/src/docPages/api/editor.md index 92ce16c2..370e965b 100644 --- a/docs/src/docPages/api/editor.md +++ b/docs/src/docPages/api/editor.md @@ -100,6 +100,33 @@ new Editor({ | `false` | Disables autofocus. | | `null` | Disables autofocus. | +### Enable input rules +By default, tiptap enables all [input rules](/guide/build-custom-extensions/#input-rules). With `enableInputRules` you can disable that. + +```js +import { Editor } from '@tiptap/core' +import { defaultExtensions } from '@tiptap/starter-kit' + +new Editor({ + content: `

Example Text

`, + extensions: defaultExtensions(), + enableInputRules: false, +}) +``` + +### Enable paste rules +By default, tiptap enables all [paste rules](/guide/build-custom-extensions/#paste-rules). With `enablePasteRules` you can disable that. + +```js +import { Editor } from '@tiptap/core' +import { defaultExtensions } from '@tiptap/starter-kit' + +new Editor({ + content: `

Example Text

`, + extensions: defaultExtensions(), + enablePasteRules: false, +}) +``` ### Inject CSS By default, tiptap injects [a little bit of CSS](https://github.com/ueberdosis/tiptap-next/tree/main/packages/core/src/style.ts). With `injectCSS` you can disable that. diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 330e547c..f64597b9 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -52,6 +52,8 @@ export class Editor extends EventEmitter { editable: true, editorProps: {}, parseOptions: {}, + enableInputRules: true, + enablePasteRules: true, onInit: () => null, onUpdate: () => null, onTransaction: () => null, diff --git a/packages/core/src/ExtensionManager.ts b/packages/core/src/ExtensionManager.ts index eb10635a..410562b2 100644 --- a/packages/core/src/ExtensionManager.ts +++ b/packages/core/src/ExtensionManager.ts @@ -1,4 +1,3 @@ -import { Plugin } from 'prosemirror-state' import { keymap } from 'prosemirror-keymap' import { Schema, Node as ProsemirrorNode } from 'prosemirror-model' import { inputRules } from 'prosemirror-inputrules' @@ -37,7 +36,7 @@ export default class ExtensionManager { }) } - get plugins(): Plugin[] { + get plugins() { const plugins = this.extensions .map(extension => { const context = { @@ -58,7 +57,11 @@ export default class ExtensionManager { ] } - get inputRules(): any { + get inputRules() { + if (!this.editor.options.enableInputRules) { + return [] + } + return this.extensions .map(extension => { const context = { @@ -72,7 +75,11 @@ export default class ExtensionManager { .flat() } - get pasteRules(): any { + get pasteRules() { + if (!this.editor.options.enablePasteRules) { + return [] + } + return this.extensions .map(extension => { const context = { diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index d2a8727a..2f44a5c3 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -23,6 +23,8 @@ export interface EditorOptions { editable: boolean, editorProps: EditorProps, parseOptions: ParseOptions, + enableInputRules: boolean, + enablePasteRules: boolean, onInit: () => void, onUpdate: () => void, onTransaction: (props: { transaction: Transaction }) => void,