diff --git a/editors/editoria/src/Editoria.js b/editors/editoria/src/Editoria.js index 78e16814bd68efc099e284860f5da7e26ed593a7..7551560bcc1945c0b4162442f6cffe4bc9389544 100644 --- a/editors/editoria/src/Editoria.js +++ b/editors/editoria/src/Editoria.js @@ -48,6 +48,7 @@ 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/WaxView.js b/wax-prosemirror-core/src/WaxView.js index a327326039c6c21724366e5c42028321f32972c6..9d2ce10f9f21e706af628958faa0f916eaf81ebb 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -15,7 +15,7 @@ import trackedTransaction from "./track-changes/trackedTransaction"; import { WaxContext } from "./ioc-react"; export default props => { - const { readonly, onBlur, options, debug, autoFocus } = props; + const { readonly, onBlur, options, debug, autoFocus, user } = props; const editorRef = useRef(); const context = useContext(WaxContext); @@ -29,7 +29,7 @@ export default props => { dispatchTransaction: transaction => { const { TrackChange } = props; const tr = TrackChange - ? trackedTransaction(transaction, view.state, this) + ? trackedTransaction(transaction, view.state, user) : transaction; const state = view.state.apply(tr); diff --git a/wax-prosemirror-core/src/track-changes/trackedTransaction.js b/wax-prosemirror-core/src/track-changes/trackedTransaction.js index f171a0bfc5e704156dc1d493d6d1c31d1132c86e..e5fce432977fd581b2d10c80d4cbb6a7fec17ac0 100644 --- a/wax-prosemirror-core/src/track-changes/trackedTransaction.js +++ b/wax-prosemirror-core/src/track-changes/trackedTransaction.js @@ -13,7 +13,7 @@ import markDeletion from "./markDeletion"; import markInsertion from "./markInsertion"; import markWrapping from "./markWrapping"; -const trackedTransaction = (tr, state, editor) => { +const trackedTransaction = (tr, state, currentUser) => { if ( !tr.steps.length || (tr.meta && @@ -25,7 +25,7 @@ const trackedTransaction = (tr, state, editor) => { ) { return tr; } - const user = editor.props.user.userId, + const user = currentUser.userId, approved = false, // !editor.view.state.doc.firstChild.attrs.tracked && // editor.docInfo.access_rights !== "write-tracked", @@ -34,7 +34,7 @@ const trackedTransaction = (tr, state, editor) => { exactDate = Date.now(), date10 = Math.floor(exactDate / 600000) * 10, // 10 minute interval date1 = Math.floor(exactDate / 60000), // 1 minute interval - username = editor.props.user.username, + username = currentUser.username, // We only insert content if this is not directly a tr for cell deletion. This is because tables delete rows by deleting the // contents of each cell and replacing it with an empty paragraph. cellDeleteTr = @@ -48,6 +48,7 @@ const trackedTransaction = (tr, state, editor) => { if (!step) { return; } + if (step instanceof ReplaceStep) { const newStep = approved ? step @@ -66,6 +67,7 @@ const trackedTransaction = (tr, state, editor) => { if (trTemp.maybeStep(newStep).failed) { return; } + const mappedNewStepTo = newStep.getMap().map(newStep.to); markInsertion( trTemp, diff --git a/wax-prosemirror-services/src/LinkService/LinkTool.js b/wax-prosemirror-services/src/LinkService/LinkTool.js index 2a7888e0c4b5b4deab21fbe2226c96b5e27adf09..6a02fde44b4cf229024debe223a61088c0e060cc 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, promptForURL } from "../lib/Utils"; +import { markActive } from "../lib/Utils"; import Tools from "../lib/Tools"; import { injectable } from "inversify"; import { icons } from "wax-prosemirror-components"; diff --git a/wax-prosemirror-services/src/lib/ToolGroup.js b/wax-prosemirror-services/src/lib/ToolGroup.js index 1340e666f8fbfa0e1ae2f9bc57302b2fde3060ea..93ae0ef7d02058e2baafda4730a26e676b76227d 100644 --- a/wax-prosemirror-services/src/lib/ToolGroup.js +++ b/wax-prosemirror-services/src/lib/ToolGroup.js @@ -1,6 +1,7 @@ import React, { useState } from "react"; import { injectable } from "inversify"; import { isFunction } from "lodash"; + @injectable() export default class ToolGroup { _config = {}; diff --git a/wax-prosemirror-services/src/lib/Utils.js b/wax-prosemirror-services/src/lib/Utils.js index ba2fcf3e5763d746fac41b6577f9e674a88d6312..a686d1b86f05b9578ecb820f67940b52364caf3a 100644 --- a/wax-prosemirror-services/src/lib/Utils.js +++ b/wax-prosemirror-services/src/lib/Utils.js @@ -53,16 +53,6 @@ const getMarkPosition = ($start, mark) => { return { from: startPos, to: endPos }; }; -const promptForURL = () => { - let url = window && window.prompt("Enter the URL", "https://"); - - if (url && !/^https?:\/\//i.test(url)) { - url = "http://" + url; - } - - return url; -}; - const createTable = (state, dispatch) => { let rowCount = window && window.prompt("How many rows?", 2); let colCount = window && window.prompt("How many columns?", 2); @@ -81,11 +71,4 @@ const createTable = (state, dispatch) => { dispatch(state.tr.replaceSelectionWith(table)); }; -export { - markActive, - blockActive, - canInsert, - promptForURL, - createTable, - getMarkPosition -}; +export { markActive, blockActive, canInsert, createTable, getMarkPosition };