From 1ad2b6aa788b5cee9c56c1b6e139d8b60a1a78b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sat, 29 Sep 2018 11:57:49 +0200 Subject: [PATCH] refactoring --- packages/tiptap-extensions/src/index.js | 2 ++ packages/tiptap-extensions/src/nodes/Mention.js | 7 ++++--- .../plugins/{suggestions.js => Ssuggestions.js} | 15 +++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) rename packages/tiptap-extensions/src/plugins/{suggestions.js => Ssuggestions.js} (96%) diff --git a/packages/tiptap-extensions/src/index.js b/packages/tiptap-extensions/src/index.js index ce7fa0bb..856fd598 100644 --- a/packages/tiptap-extensions/src/index.js +++ b/packages/tiptap-extensions/src/index.js @@ -20,3 +20,5 @@ export { default as UnderlineMark } from './marks/Underline' export { default as HistoryExtension } from './extensions/History' export { default as PlaceholderExtension } from './extensions/Placeholder' + +export { default as SuggestionsPlugin } from './plugins/Suggestions' diff --git a/packages/tiptap-extensions/src/nodes/Mention.js b/packages/tiptap-extensions/src/nodes/Mention.js index ce4bdf3a..f01bdebc 100644 --- a/packages/tiptap-extensions/src/nodes/Mention.js +++ b/packages/tiptap-extensions/src/nodes/Mention.js @@ -1,6 +1,6 @@ import { Node } from 'tiptap' import { replaceText } from 'tiptap-commands' -import { triggerCharacter, suggestionsPlugin } from '../plugins/suggestions' +import { suggestionsPlugin } from '../plugins/suggestions' export default class MentionNode extends Node { @@ -43,10 +43,11 @@ export default class MentionNode extends Node { return [ suggestionsPlugin({ suggestionClass: 'mention-suggestion', - matcher: triggerCharacter('@', { + matcher: { + char: '@', allowSpaces: false, startOfLine: false, - }), + }, command: ({ position, attrs, schema }) => { return replaceText(position, schema.nodes.mention, attrs) }, diff --git a/packages/tiptap-extensions/src/plugins/suggestions.js b/packages/tiptap-extensions/src/plugins/Ssuggestions.js similarity index 96% rename from packages/tiptap-extensions/src/plugins/suggestions.js rename to packages/tiptap-extensions/src/plugins/Ssuggestions.js index 4dd410d2..d435337f 100644 --- a/packages/tiptap-extensions/src/plugins/suggestions.js +++ b/packages/tiptap-extensions/src/plugins/Ssuggestions.js @@ -8,7 +8,11 @@ import { Decoration, DecorationSet } from 'prosemirror-view'; * @param {Boolean} allowSpaces * @returns {function(*)} */ -export function triggerCharacter(char, { allowSpaces = false, startOfLine = false }) { +export function triggerCharacter({ + char = '@', + allowSpaces = false, + startOfLine = false, +}) { /** * @param {ResolvedPos} $position @@ -24,7 +28,6 @@ export function triggerCharacter(char, { allowSpaces = false, startOfLine = fals // Lookup the boundaries of the current node const textFrom = $position.before() const textTo = $position.end() - const text = $position.doc.textBetween(textFrom, textTo, '\0', '\0') let match @@ -65,7 +68,11 @@ export function triggerCharacter(char, { allowSpaces = false, startOfLine = fals * @returns {Plugin} */ export function suggestionsPlugin({ - matcher = triggerCharacter('#'), + matcher = { + char: '@', + allowSpaces: false, + startOfLine: false, + }, suggestionClass = 'suggestion', command = () => false, items = [], @@ -188,7 +195,7 @@ export function suggestionsPlugin({ // Try to match against where our cursor currently is const $position = selection.$from - const match = matcher($position) + const match = triggerCharacter(matcher)($position) const decorationId = (Math.random() + 1).toString(36).substr(2, 5) // If we found a match, update the current state to show it