diff --git a/wax-prosemirror-core/index.js b/wax-prosemirror-core/index.js index d969e668be7cd60e07725a49126c99ab2d136c04..0a82d854a80de35a8f99f2c4d1aa421b89808cc7 100644 --- a/wax-prosemirror-core/index.js +++ b/wax-prosemirror-core/index.js @@ -1,2 +1,2 @@ -export { WaxContext, useInjection } from "./src/ioc-react"; +export { WaxContext, useInjection } from "./src/WaxContext"; export { default as Wax } from "./src/Wax"; diff --git a/wax-prosemirror-core/src/Wax.js b/wax-prosemirror-core/src/Wax.js index 7e260db033b0b44a183d9fa7a6536dabafda3c82..825a00e273284b7605a2704fd6ef85aeda1e64d6 100644 --- a/wax-prosemirror-core/src/Wax.js +++ b/wax-prosemirror-core/src/Wax.js @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import WaxProvider from "./ioc-react"; +import WaxProvider from "./WaxContext"; import Application from "./Application"; import debounce from "lodash/debounce"; diff --git a/wax-prosemirror-core/src/ioc-react.js b/wax-prosemirror-core/src/WaxContext.js similarity index 100% rename from wax-prosemirror-core/src/ioc-react.js rename to wax-prosemirror-core/src/WaxContext.js diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 439515b5e3744696ce5da416bbba4cf120a96330..7f593654d6c1311e1aba1cf8e96c7e209b44323d 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -3,10 +3,12 @@ import React, { useEffect, useRef, useContext } from "react"; import applyDevTools from "prosemirror-dev-tools"; import { EditorState } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; + import "prosemirror-view/style/prosemirror.css"; import { trackedTransaction } from "wax-prosemirror-services"; -import { WaxContext } from "./ioc-react"; +import { WaxContext } from "./WaxContext"; +import transformPasted from "./helpers/TransformPasted"; export default props => { const { @@ -36,6 +38,9 @@ export default props => { onBlur(view.state.doc.content); } : null + }, + transformPasted: slice => { + return transformPasted(slice, view); } } ); diff --git a/wax-prosemirror-core/src/helpers/TransformPasted.js b/wax-prosemirror-core/src/helpers/TransformPasted.js new file mode 100644 index 0000000000000000000000000000000000000000..5fc679e6db852dabe7f01b0f5fca876c34888a00 --- /dev/null +++ b/wax-prosemirror-core/src/helpers/TransformPasted.js @@ -0,0 +1,36 @@ +import { v4 as uuidv4 } from "uuid"; +import { DocumentHelpers } from "wax-prosemirror-utilities"; + +const transformPasted = (slice, view) => { + const { content } = slice; + const commentNodes = DocumentHelpers.findChildrenByMark( + content, + view.state.schema.marks.comment, + true + ); + + const notes = DocumentHelpers.findChildrenByType( + content, + view.state.schema.nodes.footnote, + true + ); + + const allComments = commentNodes.map(node => { + return node.node.marks.filter(comment => { + return comment.type.name === "comment"; + }); + }); + + //TODO check to alter attr with transform + allComments.forEach(comment => { + comment[0].attrs.id = uuidv4(); + }); + + notes.forEach(note => { + note.node.attrs.id = uuidv4(); + }); + + return slice; +}; + +export default transformPasted; diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index f10e5ea5342043af49d58477db69cbe7e525e27f..12ce67a8888d038999c8868a8cafe5e6d775ff00 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -10,6 +10,7 @@ import { Commands } from "wax-prosemirror-utilities"; import { NoteEditorContainer } from "wax-prosemirror-components"; import { DocumentHelpers } from "wax-prosemirror-utilities"; import { filter } from "lodash"; +import transformPasted from "./helpers/TransformPasted"; export default ({ node, view }) => { const editorRef = useRef(); @@ -62,6 +63,9 @@ export default ({ node, view }) => { // the parent editor is focused. if (noteView.hasFocus()) noteView.focus(); } + }, + transformPasted: slice => { + return transformPasted(slice, noteView); } } ); diff --git a/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js b/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js new file mode 100644 index 0000000000000000000000000000000000000000..0e2e797a260b87da7afce1d498014253aeb63060 --- /dev/null +++ b/wax-prosemirror-services/src/NoteService/helpers/TransformPasted.js @@ -0,0 +1,26 @@ +import { v4 as uuidv4 } from "uuid"; +import { DocumentHelpers } from "wax-prosemirror-utilities"; + +const transformPasted = (slice, view) => { + const { content } = slice; + const commentNodes = DocumentHelpers.findChildrenByMark( + content, + view.state.schema.marks.comment, + true + ); + + const allComments = commentNodes.map(node => { + return node.node.marks.filter(comment => { + return comment.type.name === "comment"; + }); + }); + + //TODO check to alter attr with transform + allComments.forEach(comment => { + comment[0].attrs.id = uuidv4(); + }); + + return slice; +}; + +export default transformPasted;