From e997ed7494d3c1be968e3c08b345eaa80fc65a32 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 3 Feb 2020 13:00:41 +0200 Subject: [PATCH] move commands to utilities --- editors/editoria/src/Editoria.js | 1 - .../src/track-changes/trackedTransaction.js | 3 +- .../DisplayBlockLevel/TitleService/Title.js | 1 - .../src/ImageService/Image.js | 4 +-- .../src/InlineAnnotations/CodeService/Code.js | 4 +-- .../EmphasisService/Emphasis.js | 4 +-- .../SmallCapsService/SmallCaps.js | 4 +-- .../StrikeThroughService/StrikeThrough.js | 6 ++-- .../InlineAnnotations/StrongService/Strong.js | 4 +-- .../SubscriptService/Subscript.js | 4 +-- .../SuperscriptService/Superscript.js | 4 +-- .../UnderlineService/Underline.js | 4 +-- .../src/LinkService/LinkTool.js | 17 +++------- .../BulletListService/BulletList.js | 4 +-- .../OrderedListService/OrderedList.js | 4 +-- .../src/NoteService/Editor.js | 9 +++-- .../src/OverlayService/usePosition.js | 1 - .../EditTableService/TableDropDownOptions.js | 4 +-- .../TablesService/InsertTableService/Table.js | 6 ++-- wax-prosemirror-utilities/index.js | 1 + .../src/commands/Commands.js | 34 ++++++------------- 21 files changed, 50 insertions(+), 73 deletions(-) rename wax-prosemirror-services/src/lib/Utils.js => wax-prosemirror-utilities/src/commands/Commands.js (64%) diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index 7551560bc..78e16814b 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -48,7 +48,6 @@ const Editoria = () => ( autoFocus placeholder="Type Something..." fileUpload={file => renderImage(file)} - TrackChange value={ '<p class="paragraph">this is some text <a href="www.sss.ff" >some</a> more</p>' } diff --git a/wax-prosemirror-core/src/track-changes/trackedTransaction.js b/wax-prosemirror-core/src/track-changes/trackedTransaction.js index e5fce4329..8f98b7f69 100644 --- a/wax-prosemirror-core/src/track-changes/trackedTransaction.js +++ b/wax-prosemirror-core/src/track-changes/trackedTransaction.js @@ -49,7 +49,8 @@ const trackedTransaction = (tr, state, currentUser) => { return; } - if (step instanceof ReplaceStep) { + //if (step instanceof ReplaceStep) { + if (step.jsonID === "replace") { const newStep = approved ? step : step.slice.size && !cellDeleteTr diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/TitleService/Title.js b/wax-prosemirror-services/src/DisplayBlockLevel/TitleService/Title.js index 94c85205f..9f77b510c 100644 --- a/wax-prosemirror-services/src/DisplayBlockLevel/TitleService/Title.js +++ b/wax-prosemirror-services/src/DisplayBlockLevel/TitleService/Title.js @@ -1,7 +1,6 @@ import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { setBlockType } from "prosemirror-commands"; -import { blockActive } from "../../lib/Utils"; @injectable() export default class Title extends Tools { diff --git a/wax-prosemirror-services/src/ImageService/Image.js b/wax-prosemirror-services/src/ImageService/Image.js index 41d4a1ba6..e4cd287c4 100644 --- a/wax-prosemirror-services/src/ImageService/Image.js +++ b/wax-prosemirror-services/src/ImageService/Image.js @@ -4,7 +4,7 @@ import { isEmpty } from "lodash"; import { injectable } from "inversify"; import { icons, ImageUpload } from "wax-prosemirror-components"; import Tools from "../lib/Tools"; -import { canInsert } from "../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import fileUpload from "./fileUpload"; @injectable() @@ -18,7 +18,7 @@ export default class Image extends Tools { get enable() { return state => { - return canInsert(state.config.schema.nodes.image)(state); + return Commands.canInsert(state.config.schema.nodes.image)(state); }; } diff --git a/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js b/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js index 61887249a..ba88b541c 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js +++ b/wax-prosemirror-services/src/InlineAnnotations/CodeService/Code.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Code extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.code)(state); + return Commands.markActive(state.config.schema.marks.code)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js index 21f977f7a..e248a1604 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js +++ b/wax-prosemirror-services/src/InlineAnnotations/EmphasisService/Emphasis.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Emphasis extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.em)(state); + return Commands.markActive(state.config.schema.marks.em)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/SmallCapsService/SmallCaps.js b/wax-prosemirror-services/src/InlineAnnotations/SmallCapsService/SmallCaps.js index 34162290c..e424113e5 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/SmallCapsService/SmallCaps.js +++ b/wax-prosemirror-services/src/InlineAnnotations/SmallCapsService/SmallCaps.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class SmallCaps extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.smallcaps)(state); + return Commands.markActive(state.config.schema.marks.smallcaps)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/StrikeThroughService/StrikeThrough.js b/wax-prosemirror-services/src/InlineAnnotations/StrikeThroughService/StrikeThrough.js index ef38b0a08..60b3be567 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/StrikeThroughService/StrikeThrough.js +++ b/wax-prosemirror-services/src/InlineAnnotations/StrikeThroughService/StrikeThrough.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,9 @@ export default class StrikeThrough extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.strikethrough)(state); + return Commands.markActive(state.config.schema.marks.strikethrough)( + state + ); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/StrongService/Strong.js b/wax-prosemirror-services/src/InlineAnnotations/StrongService/Strong.js index c2f94db1e..989f238a2 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/StrongService/Strong.js +++ b/wax-prosemirror-services/src/InlineAnnotations/StrongService/Strong.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Strong extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.strong)(state); + return Commands.markActive(state.config.schema.marks.strong)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/SubscriptService/Subscript.js b/wax-prosemirror-services/src/InlineAnnotations/SubscriptService/Subscript.js index 53ef5fc74..9bfd47526 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/SubscriptService/Subscript.js +++ b/wax-prosemirror-services/src/InlineAnnotations/SubscriptService/Subscript.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Subscript extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.subscript)(state); + return Commands.markActive(state.config.schema.marks.subscript)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/SuperscriptService/Superscript.js b/wax-prosemirror-services/src/InlineAnnotations/SuperscriptService/Superscript.js index 9063597cd..f502bbf7c 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/SuperscriptService/Superscript.js +++ b/wax-prosemirror-services/src/InlineAnnotations/SuperscriptService/Superscript.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Superscript extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.superscript)(state); + return Commands.markActive(state.config.schema.marks.superscript)(state); }; } } diff --git a/wax-prosemirror-services/src/InlineAnnotations/UnderlineService/Underline.js b/wax-prosemirror-services/src/InlineAnnotations/UnderlineService/Underline.js index 1c1026b9c..168dcb15f 100644 --- a/wax-prosemirror-services/src/InlineAnnotations/UnderlineService/Underline.js +++ b/wax-prosemirror-services/src/InlineAnnotations/UnderlineService/Underline.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -17,7 +17,7 @@ export default class Underline extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.underline)(state); + return Commands.markActive(state.config.schema.marks.underline)(state); }; } } diff --git a/wax-prosemirror-services/src/LinkService/LinkTool.js b/wax-prosemirror-services/src/LinkService/LinkTool.js index 6a02fde44..a34f89301 100644 --- a/wax-prosemirror-services/src/LinkService/LinkTool.js +++ b/wax-prosemirror-services/src/LinkService/LinkTool.js @@ -1,5 +1,5 @@ import { toggleMark } from "prosemirror-commands"; -import { markActive } from "../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -11,20 +11,11 @@ export default class LinkTool extends Tools { get run() { return (state, dispatch) => { - if (markActive(state.config.schema.marks.link)(state)) { + if (Commands.markActive(state.config.schema.marks.link)(state)) { toggleMark(state.config.schema.marks.link)(state, dispatch); return true; } - const { selection: { $from, $to } } = state; - dispatch( - state.tr - .setMeta("addToHistory", false) - .addMark( - $from.pos, - $to.pos, - state.schema.marks.link.create({ href: "" }) - ) - ); + Commands.createLink(state, dispatch); }; } @@ -34,7 +25,7 @@ export default class LinkTool extends Tools { get active() { return state => { - return markActive(state.config.schema.marks.link)(state); + return Commands.markActive(state.config.schema.marks.link)(state); }; } } diff --git a/wax-prosemirror-services/src/ListsService/BulletListService/BulletList.js b/wax-prosemirror-services/src/ListsService/BulletListService/BulletList.js index 9caea1dc7..80ab99f14 100644 --- a/wax-prosemirror-services/src/ListsService/BulletListService/BulletList.js +++ b/wax-prosemirror-services/src/ListsService/BulletListService/BulletList.js @@ -2,7 +2,7 @@ import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; import { wrapInList } from "prosemirror-schema-list"; -import { blockActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; @injectable() export default class BulletList extends Tools { @@ -23,7 +23,7 @@ export default class BulletList extends Tools { get active() { return state => { - return blockActive(state.config.schema.nodes.bulletlist)(state); + return Commands.blockActive(state.config.schema.nodes.bulletlist)(state); }; } } diff --git a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js index cff84727c..9f01a6b82 100644 --- a/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js +++ b/wax-prosemirror-services/src/ListsService/OrderedListService/OrderedList.js @@ -2,7 +2,7 @@ import Tools from "../../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; import { wrapInList } from "prosemirror-schema-list"; -import { blockActive } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; @injectable() export default class OrderedList extends Tools { @@ -23,7 +23,7 @@ export default class OrderedList extends Tools { get active() { return state => { - return blockActive(state.config.schema.nodes.orderedlist)(state); + return Commands.blockActive(state.config.schema.nodes.orderedlist)(state); }; } } diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index 5f7c4a852..3e6b902dc 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -5,8 +5,7 @@ import { StepMap } from "prosemirror-transform"; import { keymap } from "prosemirror-keymap"; import { undo, redo } from "prosemirror-history"; import { WaxContext } from "wax-prosemirror-core/src/ioc-react"; - -import { markActive } from "../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; export default ({ node, view, pos }) => { const editorRef = useRef(); @@ -23,9 +22,9 @@ export default ({ node, view, pos }) => { "Mod-z": () => undo(view.state, view.dispatch), "Mod-y": () => redo(view.state, view.dispatch), "Mod-u": () => - markActive(noteView.state.config.schema.marks.underline)( - noteView.state - ) + Commands.markActive( + noteView.state.config.schema.marks.underline + )(noteView.state) }) ] }), diff --git a/wax-prosemirror-services/src/OverlayService/usePosition.js b/wax-prosemirror-services/src/OverlayService/usePosition.js index e4fe442f4..2dfaa600c 100644 --- a/wax-prosemirror-services/src/OverlayService/usePosition.js +++ b/wax-prosemirror-services/src/OverlayService/usePosition.js @@ -1,6 +1,5 @@ import { useState, useContext, useEffect, useCallback } from "react"; import { isObject } from "lodash"; -import { markActive, getMarkPosition } from "../lib/Utils"; import { WaxContext } from "wax-prosemirror-core/src/ioc-react"; import { DocumentHelpers } from "wax-prosemirror-utilities"; diff --git a/wax-prosemirror-services/src/TablesService/EditTableService/TableDropDownOptions.js b/wax-prosemirror-services/src/TablesService/EditTableService/TableDropDownOptions.js index b9d317b1c..25ea0d512 100644 --- a/wax-prosemirror-services/src/TablesService/EditTableService/TableDropDownOptions.js +++ b/wax-prosemirror-services/src/TablesService/EditTableService/TableDropDownOptions.js @@ -4,7 +4,7 @@ import { injectable } from "inversify"; import { isEmpty } from "lodash"; import { TableDropDown } from "wax-prosemirror-components"; import { addColumnBefore } from "prosemirror-tables"; -import { canInsert } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import Tools from "../../lib/Tools"; @injectable() @@ -20,7 +20,7 @@ export default class TableDropDownOptions extends Tools { get enable() { return state => { - return canInsert(state.config.schema.nodes.table)(state); + return Commands.canInsert(state.config.schema.nodes.table)(state); }; } diff --git a/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js b/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js index 238c9084e..cae1293ff 100644 --- a/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js +++ b/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js @@ -1,5 +1,5 @@ import Tools from "../../lib/Tools"; -import { createTable, canInsert } from "../../lib/Utils"; +import { Commands } from "wax-prosemirror-utilities"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; @@ -10,13 +10,13 @@ export default class Table extends Tools { get run() { return (state, dispatch) => { - return createTable(state, dispatch); + return Commands.createTable(state, dispatch); }; } get enable() { return state => { - return canInsert(state.config.schema.nodes.table)(state); + return Commands.canInsert(state.config.schema.nodes.table)(state); }; } } diff --git a/wax-prosemirror-utilities/index.js b/wax-prosemirror-utilities/index.js index d2548468a..6996a4213 100644 --- a/wax-prosemirror-utilities/index.js +++ b/wax-prosemirror-utilities/index.js @@ -1,2 +1,3 @@ export { default as SchemaHelpers } from "./src/schema/SchemaHelpers"; export { default as DocumentHelpers } from "./src/document/DocumentHelpers"; +export { default as Commands } from "./src/commands/Commands"; diff --git a/wax-prosemirror-services/src/lib/Utils.js b/wax-prosemirror-utilities/src/commands/Commands.js similarity index 64% rename from wax-prosemirror-services/src/lib/Utils.js rename to wax-prosemirror-utilities/src/commands/Commands.js index a686d1b86..16d1fb8d6 100644 --- a/wax-prosemirror-services/src/lib/Utils.js +++ b/wax-prosemirror-utilities/src/commands/Commands.js @@ -30,29 +30,6 @@ const canInsert = type => state => { return false; }; -const getMarkPosition = ($start, mark) => { - let startIndex = $start.index(), - endIndex = $start.indexAfter(); - while ( - startIndex > 0 && - mark.isInSet($start.parent.child(startIndex - 1).marks) - ) - startIndex--; - while ( - endIndex < $start.parent.childCount && - mark.isInSet($start.parent.child(endIndex).marks) - ) - endIndex++; - let startPos = $start.start(), - endPos = startPos; - for (let i = 0; i < endIndex; i++) { - let size = $start.parent.child(i).nodeSize; - if (i < startIndex) startPos += size; - endPos += size; - } - return { from: startPos, to: endPos }; -}; - const createTable = (state, dispatch) => { let rowCount = window && window.prompt("How many rows?", 2); let colCount = window && window.prompt("How many columns?", 2); @@ -71,4 +48,13 @@ const createTable = (state, dispatch) => { dispatch(state.tr.replaceSelectionWith(table)); }; -export { markActive, blockActive, canInsert, createTable, getMarkPosition }; +const createLink = (state, dispatch) => { + const { selection: { $from, $to } } = state; + dispatch( + state.tr + .setMeta("addToHistory", false) + .addMark($from.pos, $to.pos, state.schema.marks.link.create({ href: "" })) + ); +}; + +export default { markActive, blockActive, canInsert, createTable, createLink }; -- GitLab