From 6e74b389121af96ca8596a947af34530d41c5332 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 16 Jan 2020 14:13:50 +0200 Subject: [PATCH] Text tool service --- editors/editoria/src/Editoria.js | 3 +- editors/editoria/src/config/config.js | 12 ++++---- .../src/nodes/extractPoetryNode.js | 2 +- .../BlockQuoteService/BlockQuote.js | 22 +++++++++++++++ .../BlockQuoteService/BlockQuoteService.js | 20 +++++++++++++ .../ExtractPoetryService/ExtractPoetry.js | 22 +++++++++++++++ .../ExtractPoetryService.js | 20 +++++++++++++ .../ExtractProseService/ExtractProse.js | 22 +++++++++++++++ .../ExtractProseService.js | 20 +++++++++++++ .../ParagraphContinued.js | 4 +-- .../ParagraphContinuedService.js | 8 ++++++ .../ParagraphService/ParagraphService.js | 2 +- .../SourceNoteService/SourceNote.js | 22 +++++++++++++++ .../SourceNoteService/SourceNoteService.js | 20 +++++++++++++ .../src/TextBlockLevel/index.js | 28 ++++++++++--------- .../TextToolGroupService/Text.js | 27 ++++++++++++++++-- 16 files changed, 228 insertions(+), 26 deletions(-) create mode 100644 wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js create mode 100644 wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js create mode 100644 wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js create mode 100644 wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js create mode 100644 wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index 2ad25dee4..cf9c690d2 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -51,9 +51,8 @@ const Editoria = () => ( value="<p> <span style='font-style:italic;'>test</span>hello <code> this is the code</code></p>" layout={EditoriaLayout} user={user} - debug /> - <div id="editors"></div> + <div id="editors" /> </Fragment> ); diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js index 05a78a8f1..893459088 100644 --- a/editors/editoria/src/config/config.js +++ b/editors/editoria/src/config/config.js @@ -14,7 +14,9 @@ import { BaseToolGroupService, DisplayBlockLevelService, DisplayToolGroupService, - ImageToolGroupService + ImageToolGroupService, + TextBlockLevelService, + TextToolGroupService } from "wax-prosemirror-services"; import invisibles, { @@ -31,7 +33,7 @@ export default { }, { templateArea: "leftSideBar", - toolGroups: ["Display"] + toolGroups: ["Display", "Text"] } ], @@ -59,8 +61,8 @@ export default { new BaseToolGroupService(), new DisplayBlockLevelService(), new DisplayToolGroupService(), - new ImageToolGroupService() - // new TextBlockLevelService(), - // new TextToolGroupService() + new ImageToolGroupService(), + new TextBlockLevelService(), + new TextToolGroupService() ] }; diff --git a/wax-prosemirror-schema/src/nodes/extractPoetryNode.js b/wax-prosemirror-schema/src/nodes/extractPoetryNode.js index 63bbaa546..bf4499c03 100644 --- a/wax-prosemirror-schema/src/nodes/extractPoetryNode.js +++ b/wax-prosemirror-schema/src/nodes/extractPoetryNode.js @@ -22,7 +22,7 @@ const extractPoetry = { ], toDOM(hook, next) { const attrs = blockLevelToDOM(hook.node); - hook.value[("p", attrs, 0)]; + hook.value = ["p", attrs, 0]; next(); } }; diff --git a/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js new file mode 100644 index 000000000..77ac0af54 --- /dev/null +++ b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuote.js @@ -0,0 +1,22 @@ +import Tools from "../../lib/Tools"; +import { injectable } from "inversify"; +import { wrapIn } from "prosemirror-commands"; + +@injectable() +class BlockQuote extends Tools { + title = "Change to Block Quote"; + content = "Block Quote"; + + get run() { + return (state, dispatch) => { + wrapIn(state.config.schema.nodes.blockquote)(state, dispatch); + }; + } + + get enable() { + return state => { + return wrapIn(state.config.schema.nodes.blockquote)(state); + }; + } +} +export default BlockQuote; diff --git a/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js new file mode 100644 index 000000000..b81a5f94c --- /dev/null +++ b/wax-prosemirror-services/src/TextBlockLevel/BlockQuoteService/BlockQuoteService.js @@ -0,0 +1,20 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import { blockQuoteNode } from "wax-prosemirror-schema"; +import BlockQuote from "./BlockQuote"; + +class BlockQuoteService extends Service { + boot() {} + + register() { + this.container.bind("BlockQuote").to(BlockQuote); + const createNode = this.container.get("CreateNode"); + createNode( + { + blockquote: blockQuoteNode + }, + { toWaxSchema: true } + ); + } +} + +export default BlockQuoteService; diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js new file mode 100644 index 000000000..f3507f5d8 --- /dev/null +++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetry.js @@ -0,0 +1,22 @@ +import Tools from "../../lib/Tools"; +import { injectable } from "inversify"; +import { setBlockType } from "prosemirror-commands"; + +@injectable() +class ExtractPoetry extends Tools { + title = "Change to Extract Poetry"; + content = "Extract Poetry"; + + get run() { + return (state, dispatch) => { + setBlockType(state.config.schema.nodes.extractPoetry)(state, dispatch); + }; + } + + get enable() { + return state => { + return setBlockType(state.config.schema.nodes.extractPoetry)(state); + }; + } +} +export default ExtractPoetry; diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js index e69de29bb..9b0a043a0 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js +++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractPoetryService/ExtractPoetryService.js @@ -0,0 +1,20 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import { extractPoetryNode } from "wax-prosemirror-schema"; +import ExtractPoetry from "./ExtractPoetry"; + +class ExtractPoetryService extends Service { + boot() {} + + register() { + this.container.bind("ExtractPoetry").to(ExtractPoetry); + const createNode = this.container.get("CreateNode"); + createNode( + { + extractPoetry: extractPoetryNode + }, + { toWaxSchema: true } + ); + } +} + +export default ExtractPoetryService; diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js new file mode 100644 index 000000000..261cfe18d --- /dev/null +++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProse.js @@ -0,0 +1,22 @@ +import Tools from "../../lib/Tools"; +import { injectable } from "inversify"; +import { setBlockType } from "prosemirror-commands"; + +@injectable() +class ExtractProse extends Tools { + title = "Change to Extract Prose"; + content = "Extract Prose"; + + get run() { + return (state, dispatch) => { + setBlockType(state.config.schema.nodes.extractProse)(state, dispatch); + }; + } + + get enable() { + return state => { + return setBlockType(state.config.schema.nodes.extractProse)(state); + }; + } +} +export default ExtractProse; diff --git a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js index e69de29bb..74933be55 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js +++ b/wax-prosemirror-services/src/TextBlockLevel/ExtractProseService/ExtractProseService.js @@ -0,0 +1,20 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import { extractProseNode } from "wax-prosemirror-schema"; +import ExtractProse from "./ExtractProse"; + +class ExtractProseService extends Service { + boot() {} + + register() { + this.container.bind("ExtractProse").to(ExtractProse); + const createNode = this.container.get("CreateNode"); + createNode( + { + extractProse: extractProseNode + }, + { toWaxSchema: true } + ); + } +} + +export default ExtractProseService; diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js index ce7affa84..bcc3c506e 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js +++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinued.js @@ -9,13 +9,13 @@ class ParagraphContinued extends Tools { get run() { return (state, dispatch) => { - setBlockType(state.config.schema.nodes.paragraph)(state, dispatch); + setBlockType(state.config.schema.nodes.paragraphCont)(state, dispatch); }; } get enable() { return state => { - return setBlockType(state.config.schema.nodes.paragraph)(state); + return setBlockType(state.config.schema.nodes.paragraphCont)(state); }; } } diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js index 553f8bfc9..dbb93a649 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js +++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphContinuedService/ParagraphContinuedService.js @@ -1,4 +1,5 @@ import Service from "wax-prosemirror-core/src/services/Service"; +import { paragraphContNode } from "wax-prosemirror-schema"; import ParagraphContinued from "./ParagraphContinued"; class ParagraphContinuedService extends Service { @@ -6,6 +7,13 @@ class ParagraphContinuedService extends Service { register() { this.container.bind("ParagraphContinued").to(ParagraphContinued); + const createNode = this.container.get("CreateNode"); + createNode( + { + paragraphCont: paragraphContNode + }, + { toWaxSchema: true } + ); } } diff --git a/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js b/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js index aecfcffd8..b02a73f21 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js +++ b/wax-prosemirror-services/src/TextBlockLevel/ParagraphService/ParagraphService.js @@ -1,7 +1,7 @@ import Service from "wax-prosemirror-core/src/services/Service"; import Paragraph from "./Paragraph"; -class PsragraphService extends Service { +class ParagraphService extends Service { boot() {} register() { diff --git a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js new file mode 100644 index 000000000..5e05eea06 --- /dev/null +++ b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNote.js @@ -0,0 +1,22 @@ +import Tools from "../../lib/Tools"; +import { injectable } from "inversify"; +import { setBlockType } from "prosemirror-commands"; + +@injectable() +class SourceNote extends Tools { + title = "Change to Source Note"; + content = "Source Note"; + + get run() { + return (state, dispatch) => { + setBlockType(state.config.schema.nodes.sourceNote)(state, dispatch); + }; + } + + get enable() { + return state => { + return setBlockType(state.config.schema.nodes.sourceNote)(state); + }; + } +} +export default SourceNote; diff --git a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js index e69de29bb..f57ac2f92 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js +++ b/wax-prosemirror-services/src/TextBlockLevel/SourceNoteService/SourceNoteService.js @@ -0,0 +1,20 @@ +import Service from "wax-prosemirror-core/src/services/Service"; +import { sourceNoteNode } from "wax-prosemirror-schema"; +import SourceNote from "./SourceNote"; + +class SourceNoteService extends Service { + boot() {} + + register() { + this.container.bind("SourceNote").to(SourceNote); + const createNode = this.container.get("CreateNode"); + createNode( + { + sourceNote: sourceNoteNode + }, + { toWaxSchema: true } + ); + } +} + +export default SourceNoteService; diff --git a/wax-prosemirror-services/src/TextBlockLevel/index.js b/wax-prosemirror-services/src/TextBlockLevel/index.js index 3bf999cd8..750644104 100644 --- a/wax-prosemirror-services/src/TextBlockLevel/index.js +++ b/wax-prosemirror-services/src/TextBlockLevel/index.js @@ -1,13 +1,15 @@ -// import ExtractPoetryService from "./ExtractPoetryService/ExtractPoetryService"; -// import ExtractProseService from "./ExtractProseService/ExtractProseService"; -// import ParagraphContinuedService from "./ParagraphContinuedService/ParagraphContinuedService"; -// import ParagraphService from "./ParagraphService/ParagraphService"; -// import SourceNoteService from "./SourceNoteService/SourceNoteService"; -// -// export default [ -// new ExtractPoetryService(), -// new ExtractProseService(), -// new ParagraphContinuedService(), -// new ParagraphService(), -// new SourceNoteService() -// ]; +import ExtractPoetryService from "./ExtractPoetryService/ExtractPoetryService"; +import ExtractProseService from "./ExtractProseService/ExtractProseService"; +import ParagraphContinuedService from "./ParagraphContinuedService/ParagraphContinuedService"; +import ParagraphService from "./ParagraphService/ParagraphService"; +import SourceNoteService from "./SourceNoteService/SourceNoteService"; +import BlockQuoteService from "./BlockQuoteService/BlockQuoteService"; + +export default [ + new ExtractPoetryService(), + new ExtractProseService(), + new ParagraphContinuedService(), + new ParagraphService(), + new SourceNoteService(), + new BlockQuoteService() +]; diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js index e14231b12..b1cdb108a 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js +++ b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js @@ -1,12 +1,35 @@ +import React from "react"; import { injectable, inject } from "inversify"; import ToolGroup from "../../lib/ToolGroup"; @injectable() class Text extends ToolGroup { tools = []; - constructor() { + title = () => { + return ( + <span> + Text + <hr /> + </span> + ); + }; + constructor( + @inject("Paragraph") paragraph, + @inject("ParagraphContinued") paragraphContinued, + @inject("ExtractProse") extractProse, + @inject("ExtractPoetry") extractPoetry, + @inject("SourceNote") sourceNote, + @inject("BlockQuote") blockQuote + ) { super(); - this.tools = []; + this.tools = [ + paragraph, + paragraphContinued, + extractProse, + extractPoetry, + sourceNote, + blockQuote + ]; } } -- GitLab