diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js index 09caa7d42b0d8abae38e5a82af6eb4d93bfceb08..5efeb8d0f655f64ca298bdff62e383202911bf7e 100644 --- a/editors/editoria/src/config/config.js +++ b/editors/editoria/src/config/config.js @@ -21,6 +21,8 @@ import { NoteToolGroupService, TrackChangeService, CommentsService, + CodeBlockService, + CodeBlockToolGroupService, } from 'wax-prosemirror-services'; import { WaxSelectionPlugin } from 'wax-prosemirror-plugins'; @@ -45,6 +47,7 @@ export default { 'Lists', 'Images', 'Tables', + 'CodeBlock', ], }, { @@ -86,5 +89,7 @@ export default { new AnnotationToolGroupService(), new NoteToolGroupService(), new ListToolGroupService(), + new CodeBlockService(), + new CodeBlockToolGroupService(), ], }; diff --git a/wax-prosemirror-schema/src/nodes/codeBlockNode.js b/wax-prosemirror-schema/src/nodes/codeBlockNode.js index 18ae5b2945ae3a23a623471be12bdd23c83eb112..21fbdd2c6f0f2f1586126d5e48ad4585c67fd5af 100644 --- a/wax-prosemirror-schema/src/nodes/codeBlockNode.js +++ b/wax-prosemirror-schema/src/nodes/codeBlockNode.js @@ -1,5 +1,5 @@ const codeBlock = { - content: 'text*', + content: 'block+', group: 'block', code: true, defining: true, diff --git a/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js index 29c71105cb1e80c5ba164b2c57c7f20a36481dda..1fa6cab708e1d27144164541cce854b5a9ff70ca 100644 --- a/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js +++ b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js @@ -6,7 +6,7 @@ export default class CodeBlockService extends Service { boot() {} register() { - this.container.bind('CodeBlock').to(CodeBlockTool); + this.container.bind('CodeBlockTool').to(CodeBlockTool); const createNode = this.container.get('CreateNode'); createNode({ diff --git a/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js index 8e7faff1bf164aedd26d261dcebe4456224e5a14..bce0d126dce3ae81c8b8ec4afac5b49e35659f14 100644 --- a/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js +++ b/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js @@ -1,14 +1,18 @@ import Tools from '../lib/Tools'; import { injectable } from 'inversify'; import { icons } from 'wax-prosemirror-components'; -import { Fragment } from 'prosemirror-model'; +import { wrapIn } from 'prosemirror-commands'; @injectable() class CodeBlockTool extends Tools { title = 'Insert Code Block'; content = icons.footnote; - get run() {} + get run() { + return (state, dispatch) => { + wrapIn(state.config.schema.nodes.codeblock)(state, dispatch); + }; + } get enable() {} } diff --git a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js index 8ad99cdf3a807800578e7628d78e02ac4092e97e..51fdb7b5e98bbc8ce3c08412066f56444d653b85 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js +++ b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js @@ -4,7 +4,7 @@ import ToolGroup from '../../lib/ToolGroup'; @injectable() class CodeBlock extends ToolGroup { tools = []; - constructor(@inject('CodeBlock') codeblock) { + constructor(@inject('CodeBlockTool') codeblock) { super(); this.tools = [codeblock]; }