From a2d5eef6b2ee264f17af50353f298af99ecac4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 21 Jan 2021 12:13:20 +0100 Subject: [PATCH] add commands experiment --- .../Experiments/Commands/CommandsList.vue | 112 ++++++++++++++ .../demos/Experiments/Commands/commands.js | 25 +++ docs/src/demos/Experiments/Commands/index.vue | 145 ++++++++++++++++++ docs/src/docPages/api/commands.md | 1 + docs/src/docPages/experiments.md | 1 + docs/src/docPages/experiments/commands.md | 5 + packages/core/src/commands/deleteRange.ts | 14 ++ packages/core/src/extensions/commands.ts | 2 + 8 files changed, 305 insertions(+) create mode 100644 docs/src/demos/Experiments/Commands/CommandsList.vue create mode 100644 docs/src/demos/Experiments/Commands/commands.js create mode 100644 docs/src/demos/Experiments/Commands/index.vue create mode 100644 docs/src/docPages/experiments/commands.md create mode 100644 packages/core/src/commands/deleteRange.ts diff --git a/docs/src/demos/Experiments/Commands/CommandsList.vue b/docs/src/demos/Experiments/Commands/CommandsList.vue new file mode 100644 index 00000000..3c72c13f --- /dev/null +++ b/docs/src/demos/Experiments/Commands/CommandsList.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/docs/src/demos/Experiments/Commands/commands.js b/docs/src/demos/Experiments/Commands/commands.js new file mode 100644 index 00000000..3bf67dff --- /dev/null +++ b/docs/src/demos/Experiments/Commands/commands.js @@ -0,0 +1,25 @@ +import { Extension } from '@tiptap/core' +import Suggestion from '@tiptap/suggestion' + +export default Extension.create({ + name: 'mention', + + defaultOptions: { + suggestion: { + char: '/', + startOfLine: true, + command: ({ editor, range, attributes }) => { + attributes.command({ editor, range }) + }, + }, + }, + + addProseMirrorPlugins() { + return [ + Suggestion({ + editor: this.editor, + ...this.options.suggestion, + }), + ] + }, +}) diff --git a/docs/src/demos/Experiments/Commands/index.vue b/docs/src/demos/Experiments/Commands/index.vue new file mode 100644 index 00000000..57a7da2b --- /dev/null +++ b/docs/src/demos/Experiments/Commands/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/docs/src/docPages/api/commands.md b/docs/src/docPages/api/commands.md index 7b9e68db..0103e3f0 100644 --- a/docs/src/docPages/api/commands.md +++ b/docs/src/docPages/api/commands.md @@ -175,6 +175,7 @@ Have a look at all of the core commands listed below. They should give you a goo | Command | Description | | --------------------- | --------------------------------------- | | .blur() | Removes focus from the editor. | +| .deleteRange() | Delete a given range. | | .deleteSelection() | Delete the selection, if there is one. | | .focus() | Focus the editor at the given position. | | .scrollIntoView() | Scroll the selection into view. | diff --git a/docs/src/docPages/experiments.md b/docs/src/docPages/experiments.md index 774263f0..1c0d8d84 100644 --- a/docs/src/docPages/experiments.md +++ b/docs/src/docPages/experiments.md @@ -6,3 +6,4 @@ Congratulations! You’ve found our secret playground with a list of experiments * [Comments](/experiments/comments) * [CharacterLimit](/experiments/character-limit) * [Color](/experiments/color) +* [Commands](/experiments/commands) diff --git a/docs/src/docPages/experiments/commands.md b/docs/src/docPages/experiments/commands.md new file mode 100644 index 00000000..62c1593d --- /dev/null +++ b/docs/src/docPages/experiments/commands.md @@ -0,0 +1,5 @@ +# Commands + +⚠️ Experiment + + diff --git a/packages/core/src/commands/deleteRange.ts b/packages/core/src/commands/deleteRange.ts new file mode 100644 index 00000000..8c2d721e --- /dev/null +++ b/packages/core/src/commands/deleteRange.ts @@ -0,0 +1,14 @@ +import { Command, Range } from '../types' + +/** + * Delete a given range. + */ +export const deleteRange = (range: Range): Command => ({ tr, dispatch }) => { + const { from, to } = range + + if (dispatch) { + tr.delete(from, to) + } + + return true +} diff --git a/packages/core/src/extensions/commands.ts b/packages/core/src/extensions/commands.ts index 117b5708..2c267821 100644 --- a/packages/core/src/extensions/commands.ts +++ b/packages/core/src/extensions/commands.ts @@ -4,6 +4,7 @@ import * as clearContent from '../commands/clearContent' import * as clearNodes from '../commands/clearNodes' import * as command from '../commands/command' import * as createParagraphNear from '../commands/createParagraphNear' +import * as deleteRange from '../commands/deleteRange' import * as deleteSelection from '../commands/deleteSelection' import * as exitCode from '../commands/exitCode' import * as extendMarkRange from '../commands/extendMarkRange' @@ -52,6 +53,7 @@ export const Commands = Extension.create({ ...clearNodes, ...command, ...createParagraphNear, + ...deleteRange, ...deleteSelection, ...exitCode, ...extendMarkRange,