diff --git a/wax-prosemirror-core/src/utilities/commands/Commands.js b/wax-prosemirror-core/src/utilities/commands/Commands.js index e9cf82a1beabb236946146da90ad2304388e1684..563bd74239fd0225f9ad1f84275a9206ea7b2c9c 100644 --- a/wax-prosemirror-core/src/utilities/commands/Commands.js +++ b/wax-prosemirror-core/src/utilities/commands/Commands.js @@ -128,7 +128,14 @@ const isOnSameTextBlock = state => { return false; }; -const createComment = (state, dispatch, group, viewid, conversation = []) => { +const createComment = ( + state, + dispatch, + group, + viewid, + conversation = [], + title = '', +) => { const { selection: { $from, $to }, tr, @@ -153,6 +160,7 @@ const createComment = (state, dispatch, group, viewid, conversation = []) => { group, viewid, conversation, + title, ); } return createCommentOnFootnote( @@ -161,6 +169,7 @@ const createComment = (state, dispatch, group, viewid, conversation = []) => { group, viewid, conversation, + title, ); } @@ -178,6 +187,7 @@ const createCommentOnSingleFootnote = ( group, viewid, conversation, + title, ) => { const { tr } = state; tr.step( @@ -189,6 +199,7 @@ const createCommentOnSingleFootnote = ( group, conversation, viewid, + title, }), ), ).setMeta('forceUpdate', true); @@ -201,6 +212,7 @@ const createCommentOnFootnote = ( group, viewid, conversation, + title, ) => { const { selection: { $from }, @@ -257,6 +269,7 @@ const createCommentOnFootnote = ( group, conversation, viewid, + title, }), ), ).setMeta('forceUpdate', true); diff --git a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js index b1360269fa8ac3e705c95246678b0d06aa7c6400..1f499eb98521f145d051479f5eb67c2e19edb101 100644 --- a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js +++ b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js @@ -242,17 +242,17 @@ const AskAIOverlay = ({ setPosition, position, config }) => { <ActionButton onClick={tryAgain}> <ActionText> <icons.tryAgain />{' '} - {!isEmpty(i18n) && i18n.exists(`Wax.AI. Try again`) + {!isEmpty(i18n) && i18n.exists(`Wax.AI.Try again`) ? t(`Wax.AI. Try again`) - : ' Try again'} + : 'Try again'} </ActionText> </ActionButton> <ActionButton onClick={discardResults}> <ActionText color="#FF4E4E"> <icons.deleteIco />{' '} - {!isEmpty(i18n) && i18n.exists(`Wax.AI. Discard`) - ? t(`Wax.AI. Discard`) - : ' Discard'} + {!isEmpty(i18n) && i18n.exists(`Wax.AI.Discard`) + ? t(`Wax.AI.Discard`) + : 'Discard'} </ActionText> </ActionButton> </ActionSection> diff --git a/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js b/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js index 656067d7fc2dd4014fb74aa1e22ba223ce3da937..5a7b1cdc56224b5291a3362ef0ef9e60cfa9ed42 100644 --- a/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js +++ b/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js @@ -72,16 +72,69 @@ export default ({ comment, top, commentId, recalculateTops, users }) => { } }, [activeComment]); + // const onClickPost = ({ commentValue, title }) => { + // setClickPost(true); + // const currentUser = user || (users || []).find(u => u.currentUser === true); + + // const obj = { + // content: commentValue, + // displayName: currentUser + // ? currentUser.displayName || currentUser.username + // : 'Anonymous', + // userId: currentUser ? currentUser.userId : '1', + // timestamp: Math.floor(Date.now()), + // }; + + // comment.attrs.title = title || comment.attrs.title; + // comment.attrs.conversation.push(obj); + + // const id = uuidv4(); + // allCommentsWithSameId.forEach(singleComment => { + // activeView.dispatch( + // activeView.state.tr.removeMark( + // singleComment.pos, + // singleComment.pos + singleComment.node.nodeSize, + // commentMark, + // ), + // ); + + // if (activeViewId !== 'main') { + // activeView.dispatch( + // activeView.state.tr + // .addMark( + // singleComment.pos, + // singleComment.pos + singleComment.node.nodeSize, + // commentMark.create({ + // id, + // group: comment.attrs.group, + // viewid: comment.attrs.viewid, + // conversation: comment.attrs.conversation, + // title: comment.attrs.title, + // }), + // ) + // .setMeta('forceUpdate', true), + // ); + // } + // }); + + // if (activeViewId === 'main') { + // Commands.createComment( + // pmViews.main.state, + // pmViews.main.dispatch, + // comment.attrs.group, + // comment.attrs.viewid, + // comment.attrs.conversation, + // ); + // } + // activeView.focus(); + // recalculateTops(); + // }; + const onClickPost = ({ commentValue, title }) => { setClickPost(true); - const currentUser = user || (users || []).find(u => u.currentUser === true); - const obj = { content: commentValue, - displayName: currentUser - ? currentUser.displayName || currentUser.username - : 'Anonymous', - userId: currentUser ? currentUser.userId : '1', + displayName: user.username, timestamp: Math.floor(Date.now()), }; @@ -98,34 +151,22 @@ export default ({ comment, top, commentId, recalculateTops, users }) => { ), ); - if (activeViewId !== 'main') { - activeView.dispatch( - activeView.state.tr - .addMark( - singleComment.pos, - singleComment.pos + singleComment.node.nodeSize, - commentMark.create({ - id, - group: comment.attrs.group, - viewid: comment.attrs.viewid, - conversation: comment.attrs.conversation, - title: comment.attrs.title, - }), - ) - .setMeta('forceUpdate', true), - ); - } - }); - - if (activeViewId === 'main') { - Commands.createComment( - pmViews.main.state, - pmViews.main.dispatch, - comment.attrs.group, - comment.attrs.viewid, - comment.attrs.conversation, + activeView.dispatch( + activeView.state.tr + .addMark( + singleComment.pos, + singleComment.pos + singleComment.node.nodeSize, + commentMark.create({ + id, + group: comment.attrs.group, + viewid: comment.attrs.viewid, + conversation: comment.attrs.conversation, + title: comment.attrs.title, + }), + ) + .setMeta('forceUpdate', true), ); - } + }); activeView.focus(); recalculateTops(); }; diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js index f81429ed6f31169d797b3a0be687768a8a14fd64..ebf0583f4048bb8b65e344a579ef4622bb9d26de 100644 --- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js +++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js @@ -23,81 +23,111 @@ class HeadingService extends Service { return new Heading6(this.config.get('config.OENContainersService')); }); const createNode = this.container.get('CreateNode'); - createNode({ - heading2: { - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [ - { - tag: 'h2', + createNode( + { + heading2: { + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h2', + }, + ], + toDOM(hook, next) { + const attrs = {}; + // eslint-disable-next-line no-param-reassign + hook.value = ['h2', attrs, 0]; + next(); }, - ], - toDOM(node) { - return ['h2', 0]; }, }, - }); - createNode({ - heading3: { - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [ - { - tag: 'h3', + { toWaxSchema: true }, + ); + createNode( + { + heading3: { + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h3', + }, + ], + toDOM(hook, next) { + const attrs = {}; + // eslint-disable-next-line no-param-reassign + hook.value = ['h3', attrs, 0]; + next(); }, - ], - toDOM(node) { - return ['h3', 0]; }, }, - }); - createNode({ - heading4: { - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [ - { - tag: 'h4', + { toWaxSchema: true }, + ); + createNode( + { + heading4: { + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h4', + }, + ], + toDOM(hook, next) { + const attrs = {}; + // eslint-disable-next-line no-param-reassign + hook.value = ['h4', attrs, 0]; + next(); }, - ], - toDOM(node) { - return ['h4', 0]; }, }, - }); - createNode({ - heading5: { - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [ - { - tag: 'h5', + { toWaxSchema: true }, + ); + createNode( + { + heading5: { + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h5', + }, + ], + toDOM(hook, next) { + const attrs = {}; + // eslint-disable-next-line no-param-reassign + hook.value = ['h5', attrs, 0]; + next(); }, - ], - toDOM(node) { - return ['h5', 0]; }, }, - }); - createNode({ - heading6: { - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [ - { - tag: 'h6', + { toWaxSchema: true }, + ); + createNode( + { + heading6: { + content: 'inline*', + group: 'block', + defining: true, + parseDOM: [ + { + tag: 'h6', + }, + ], + toDOM(hook, next) { + const attrs = {}; + // eslint-disable-next-line no-param-reassign + hook.value = ['h6', attrs, 0]; + next(); }, - ], - toDOM(node) { - return ['h6', 0]; }, }, - }); + { toWaxSchema: true }, + ); } } diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js similarity index 58% rename from wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js rename to wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js index ad73435656bfb3cc3d9501212e202183e5e81355..69b20f612c42099cb64d7147d1acdfa24722eb58 100644 --- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js @@ -1,15 +1,16 @@ import { SchemaHelpers } from 'wax-prosemirror-core'; -const heading = { +const heading2 = { + content: 'inline*', + group: 'block', + priority: 0, + defining: true, attrs: { id: { default: '' }, track: { default: [] }, group: { default: '' }, viewid: { default: '' }, }, - content: 'inline*', - group: 'block', - defining: true, parseDOM: [ { tag: 'h2', @@ -23,30 +24,6 @@ const heading = { next(); }, }, - { - tag: 'h3', - getAttrs(hook, next) { - Object.assign(hook, { - id: hook.dom.dataset.id, - track: SchemaHelpers.parseTracks(hook.dom.dataset.track), - group: hook.dom.dataset.group, - viewid: hook.dom.dataset.viewid, - }); - next(); - }, - }, - { - tag: 'h4', - getAttrs(hook, next) { - Object.assign(hook, { - id: hook.dom.dataset.id, - track: SchemaHelpers.parseTracks(hook.dom.dataset.track), - group: hook.dom.dataset.group, - viewid: hook.dom.dataset.viewid, - }); - next(); - }, - }, ], toDOM(hook, next) { if (hook.node.attrs.track && hook.node.attrs.track.length) { @@ -61,4 +38,4 @@ const heading = { }, }; -export default heading; +export default heading2; diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js new file mode 100644 index 0000000000000000000000000000000000000000..ae34a54d64e7979da36b148ab7a7ce9fe3af5a01 --- /dev/null +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js @@ -0,0 +1,41 @@ +import { SchemaHelpers } from 'wax-prosemirror-core'; + +const heading3 = { + content: 'inline*', + group: 'block', + priority: 0, + defining: true, + attrs: { + id: { default: '' }, + track: { default: [] }, + group: { default: '' }, + viewid: { default: '' }, + }, + parseDOM: [ + { + tag: 'h3', + getAttrs(hook, next) { + Object.assign(hook, { + id: hook.dom.dataset.id, + track: SchemaHelpers.parseTracks(hook.dom.dataset.track), + group: hook.dom.dataset.group, + viewid: hook.dom.dataset.viewid, + }); + next(); + }, + }, + ], + toDOM(hook, next) { + if (hook.node.attrs.track && hook.node.attrs.track.length) { + Object.assign(hook.value[1], { + 'data-id': hook.node.attrs.id, + 'data-track': JSON.stringify(hook.node.attrs.track), + 'data-group': hook.node.attrs.group, + 'data-viewid': hook.node.attrs.viewid, + }); + } + next(); + }, +}; + +export default heading3; diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js new file mode 100644 index 0000000000000000000000000000000000000000..31316c5f5716cc08f8429ea052813b2dc70c7b5c --- /dev/null +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js @@ -0,0 +1,41 @@ +import { SchemaHelpers } from 'wax-prosemirror-core'; + +const heading4 = { + content: 'inline*', + group: 'block', + priority: 0, + defining: true, + attrs: { + id: { default: '' }, + track: { default: [] }, + group: { default: '' }, + viewid: { default: '' }, + }, + parseDOM: [ + { + tag: 'h4', + getAttrs(hook, next) { + Object.assign(hook, { + id: hook.dom.dataset.id, + track: SchemaHelpers.parseTracks(hook.dom.dataset.track), + group: hook.dom.dataset.group, + viewid: hook.dom.dataset.viewid, + }); + next(); + }, + }, + ], + toDOM(hook, next) { + if (hook.node.attrs.track && hook.node.attrs.track.length) { + Object.assign(hook.value[1], { + 'data-id': hook.node.attrs.id, + 'data-track': JSON.stringify(hook.node.attrs.track), + 'data-group': hook.node.attrs.group, + 'data-viewid': hook.node.attrs.viewid, + }); + } + next(); + }, +}; + +export default heading4; diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js new file mode 100644 index 0000000000000000000000000000000000000000..7997d98da0dbd7cb80ee7f7a93a6743d61dc79da --- /dev/null +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js @@ -0,0 +1,41 @@ +import { SchemaHelpers } from 'wax-prosemirror-core'; + +const heading5 = { + content: 'inline*', + group: 'block', + priority: 0, + defining: true, + attrs: { + id: { default: '' }, + track: { default: [] }, + group: { default: '' }, + viewid: { default: '' }, + }, + parseDOM: [ + { + tag: 'h5', + getAttrs(hook, next) { + Object.assign(hook, { + id: hook.dom.dataset.id, + track: SchemaHelpers.parseTracks(hook.dom.dataset.track), + group: hook.dom.dataset.group, + viewid: hook.dom.dataset.viewid, + }); + next(); + }, + }, + ], + toDOM(hook, next) { + if (hook.node.attrs.track && hook.node.attrs.track.length) { + Object.assign(hook.value[1], { + 'data-id': hook.node.attrs.id, + 'data-track': JSON.stringify(hook.node.attrs.track), + 'data-group': hook.node.attrs.group, + 'data-viewid': hook.node.attrs.viewid, + }); + } + next(); + }, +}; + +export default heading5; diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js new file mode 100644 index 0000000000000000000000000000000000000000..0f6011d09181925778fc3eb314c0c8447b7bd142 --- /dev/null +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js @@ -0,0 +1,41 @@ +import { SchemaHelpers } from 'wax-prosemirror-core'; + +const heading6 = { + content: 'inline*', + group: 'block', + priority: 0, + defining: true, + attrs: { + id: { default: '' }, + track: { default: [] }, + group: { default: '' }, + viewid: { default: '' }, + }, + parseDOM: [ + { + tag: 'h6', + getAttrs(hook, next) { + Object.assign(hook, { + id: hook.dom.dataset.id, + track: SchemaHelpers.parseTracks(hook.dom.dataset.track), + group: hook.dom.dataset.group, + viewid: hook.dom.dataset.viewid, + }); + next(); + }, + }, + ], + toDOM(hook, next) { + if (hook.node.attrs.track && hook.node.attrs.track.length) { + Object.assign(hook.value[1], { + 'data-id': hook.node.attrs.id, + 'data-track': JSON.stringify(hook.node.attrs.track), + 'data-group': hook.node.attrs.group, + 'data-viewid': hook.node.attrs.viewid, + }); + } + next(); + }, +}; + +export default heading6; diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js index 4fb20498d2b2acb5f88a61e67549ec5380a2b33d..6b8751d2190f6a59c6bd1f46b8eac7b92bae9ac4 100644 --- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js @@ -3,7 +3,11 @@ import titleTrackNode from './titleTrackNode'; import subTitleTrackNode from './subTitleTrackNode'; import epigraphProseTrackNode from './epigraphProseTrackNode'; import epigraphPoetryTrackNode from './epigraphPoetryTrackNode'; -import headingTrackNode from './headingTrackNode'; +import heading2TrackNode from './heading2TrackNode'; +import heading3TrackNode from './heading3TrackNode'; +import heading4TrackNode from './heading4TrackNode'; +import heading5TrackNode from './heading5TrackNode'; +import heading6TrackNode from './heading6TrackNode'; import paragraphContTrackNode from './paragraphContTrackNode'; import extractProseTrackNode from './extractProseTrackNode'; import extractPoetryTrackNode from './extractPoetryTrackNode'; @@ -25,7 +29,11 @@ export default { extractPoetry: extractPoetryTrackNode, orderedlist: orderedListTrackNode, sourceNote: sourceNoteTrackNode, - heading: headingTrackNode, + heading2: heading2TrackNode, + heading3: heading3TrackNode, + heading4: heading4TrackNode, + heading5: heading5TrackNode, + heading6: heading6TrackNode, customTagBlock: customBlockTrackNode, // bulletlist: bulletListTrackNode, // list_item: listItemTrackNode, diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js index 913a56f83a59cad0171ba65c180dab188aa136ad..248ebe61090bda5bcf900d3162a7a52b82631968 100644 --- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js +++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js @@ -13,7 +13,7 @@ const title = { }, parseDOM: [ { - tag: 'p.title', + tag: 'h1', getAttrs(hook, next) { Object.assign(hook, { id: hook.dom.dataset.id,