From 90d20e75fb58dabfe740bd5944ebe1f81ba6f361 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 21 Mar 2022 09:26:31 +0200 Subject: [PATCH] lists --- editors/demo/src/HHMI/config/config.js | 4 +-- wax-prosemirror-plugins/src/ChatPlugin.js | 42 +++++++++++++++-------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js index e5f77e92e..d5f40e10d 100644 --- a/editors/demo/src/HHMI/config/config.js +++ b/editors/demo/src/HHMI/config/config.js @@ -35,7 +35,7 @@ import { import { DefaultSchema } from 'wax-prosemirror-utilities'; import invisibles, { hardBreak } from '@guardian/prosemirror-invisibles'; -const getContent = source => { +const getContentOnEnter = source => { console.log('editor content', source); }; @@ -68,7 +68,7 @@ export default { }, ], - // ChatService: { getContent }, + ChatService: { getContentOnEnter }, SchemaService: DefaultSchema, RulesService: [emDash, ellipsis], diff --git a/wax-prosemirror-plugins/src/ChatPlugin.js b/wax-prosemirror-plugins/src/ChatPlugin.js index 369932323..63096466e 100644 --- a/wax-prosemirror-plugins/src/ChatPlugin.js +++ b/wax-prosemirror-plugins/src/ChatPlugin.js @@ -33,26 +33,38 @@ export default props => { }, props: { handleKeyDown(view, event) { + let isList = false; if (event.key === 'Enter' && !event.shiftKey) { if (view.state.doc.content.size <= 2) { return true; } - const WaxOptions = { - doc: {}, - schema: view.props.options.schema, - plugins: view.props.options.plugins, - }; - const parse = parser(view.props.options.schema); - WaxOptions.doc = parse(''); - - const serialize = serializer(view.props.options.schema); - props.getContent(serialize(view.state.doc.content)); - - view.updateState(EditorState.create(WaxOptions)); - if (view.dispatch) { - view.state.tr.setMeta('addToHistory', false); + const { + selection: { from, to }, + } = view.state; + + view.state.doc.nodesBetween(from, to, node => { + if (node.type.name === 'list_item') isList = true; + }); + + if (!isList) { + const serialize = serializer(view.props.options.schema); + props.getContentOnEnter(serialize(view.state.doc.content)); + + const WaxOptions = { + doc: {}, + schema: view.props.options.schema, + plugins: view.props.options.plugins, + }; + + const parse = parser(view.props.options.schema); + WaxOptions.doc = parse(''); + view.updateState(EditorState.create(WaxOptions)); + + if (view.dispatch) { + view.state.tr.setMeta('addToHistory', false); + } + return true; } - return true; } return false; }, -- GitLab