diff --git a/wax-prosemirror-components/package.json b/wax-prosemirror-components/package.json index aad9053e8b3d7f61707bf2aef86b52c0ed44860c..0c58cba6ae4b8553bcf1a63fe21f999e0228ff26 100644 --- a/wax-prosemirror-components/package.json +++ b/wax-prosemirror-components/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror UI components", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-core/package.json b/wax-prosemirror-core/package.json index a344cd488f65ee8e745ab0e136eb9c6e388ff20d..1859f683f53ac351262b824d950a6d5b4ec3cca5 100644 --- a/wax-prosemirror-core/package.json +++ b/wax-prosemirror-core/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror core", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-layouts/package.json b/wax-prosemirror-layouts/package.json index 07aa8505d5d0520fa03983d718720a2c410ea1e8..b970837d45569755e5bd79f76c284fc5eae325f3 100644 --- a/wax-prosemirror-layouts/package.json +++ b/wax-prosemirror-layouts/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror layouts", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-layouts/src/layouts/EditorElements.js b/wax-prosemirror-layouts/src/layouts/EditorElements.js index 32cce8b5db0e6772ebd91f56ef73b1e1859bf930..24c5a1ea52eee6325c6dacf202cf4f10bc6f12f0 100644 --- a/wax-prosemirror-layouts/src/layouts/EditorElements.js +++ b/wax-prosemirror-layouts/src/layouts/EditorElements.js @@ -16,6 +16,16 @@ export default css` color: white; } + div[contenteditable='false'] { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + } + .ProseMirror footnote { font-size: 0; display: inline-block; @@ -177,6 +187,9 @@ export default css` span.insertion { color: blue; + footnote: { + background: blue; + } } .selected-insertion, diff --git a/wax-prosemirror-plugins/package.json b/wax-prosemirror-plugins/package.json index 3340795d9862f8e1e8218bdd03bbaf6f4a4dfac1..3fec8e90f09a043a21a7d7c391303723c62fbd44 100644 --- a/wax-prosemirror-plugins/package.json +++ b/wax-prosemirror-plugins/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror plugins", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-schema/package.json b/wax-prosemirror-schema/package.json index 41892f0ec9ea72d6921b5b1a66ef200c0f4b3d9e..2338d05b30419e9fc9b2f1e4c6794d710c2a73fa 100644 --- a/wax-prosemirror-schema/package.json +++ b/wax-prosemirror-schema/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror schema", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-services/package.json b/wax-prosemirror-services/package.json index b2326e6dc8478b3dfe6f5c3d5e697081c6e63e1a..ea041e3f4bea0ef6a5abc07508875b4749e00bf2 100644 --- a/wax-prosemirror-services/package.json +++ b/wax-prosemirror-services/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror services", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index 035acd1b6fd43d212f6075d0f18b1c128db0c952..12cd2c22f49e6ca6beb83856f2398b9c4d94bd63 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -2,7 +2,7 @@ import React, { useEffect, useRef, useContext } from 'react'; import { filter } from 'lodash'; import { EditorView } from 'prosemirror-view'; -import { EditorState } from 'prosemirror-state'; +import { EditorState, TextSelection } from 'prosemirror-state'; import { StepMap } from 'prosemirror-transform'; import { baseKeymap } from 'prosemirror-commands'; import { keymap } from 'prosemirror-keymap'; diff --git a/wax-prosemirror-services/src/NoteService/NoteComponent.js b/wax-prosemirror-services/src/NoteService/NoteComponent.js index 068e33c73cfd1dbf0204d7c19dc7511b0b3b25c6..e378c0536a23f9c382e7b47e657ead80e50591e6 100644 --- a/wax-prosemirror-services/src/NoteService/NoteComponent.js +++ b/wax-prosemirror-services/src/NoteService/NoteComponent.js @@ -1,37 +1,32 @@ -import React, { - useContext, - useState, - useEffect, - useMemo, - Fragment -} from "react"; -import { WaxContext } from "wax-prosemirror-core"; -import { DocumentHelpers } from "wax-prosemirror-utilities"; -import NoteEditor from "./NoteEditor"; +import React, { useContext, useState, useMemo } from 'react'; +import useDeepCompareEffect from 'use-deep-compare-effect'; + +import { WaxContext } from 'wax-prosemirror-core'; +import { DocumentHelpers } from 'wax-prosemirror-utilities'; +import NoteEditor from './NoteEditor'; export default () => { - const { view: { main } } = useContext(WaxContext); - const [notes, setNotes] = useState([]); - useEffect( - () => { - setNotes(updateNotes(main)); - }, + const { + view: { main }, + } = useContext(WaxContext); - [JSON.stringify(updateNotes(main))] - ); + const [notes, setNotes] = useState([]); + useDeepCompareEffect(() => { + setNotes(updateNotes(main)); + }, [updateNotes(main)]); const noteComponent = useMemo( () => <NoteEditor notes={notes} view={main} />, - [notes] + [notes], ); - return <Fragment>{noteComponent}</Fragment>; + return <>{noteComponent}</>; }; const updateNotes = view => { if (view) { return DocumentHelpers.findChildrenByType( view.state.doc, view.state.schema.nodes.footnote, - true + true, ); } return []; diff --git a/wax-prosemirror-services/src/NoteService/NoteEditor.js b/wax-prosemirror-services/src/NoteService/NoteEditor.js index 7cf4f57522743738fe5b978de33cfbcc0dced83c..4641df66756a57f988e7fe6614680647daf3391b 100644 --- a/wax-prosemirror-services/src/NoteService/NoteEditor.js +++ b/wax-prosemirror-services/src/NoteService/NoteEditor.js @@ -1,12 +1,13 @@ -import React, { Fragment } from "react"; -import Editor from "./Editor"; +/* eslint react/prop-types: 0 */ +import React from 'react'; +import Editor from './Editor'; export default ({ notes, view }) => { return ( - <Fragment> + <> {notes.map(note => ( <Editor key={note.node.attrs.id} node={note.node} view={view} /> ))} - </Fragment> + </> ); }; diff --git a/wax-prosemirror-services/src/NoteService/NoteService.js b/wax-prosemirror-services/src/NoteService/NoteService.js index c28ca7ff8e2b6418b9424215bf051b2d8cf87687..db23620a2423b480b442f1754af90d763d738829 100644 --- a/wax-prosemirror-services/src/NoteService/NoteService.js +++ b/wax-prosemirror-services/src/NoteService/NoteService.js @@ -1,36 +1,37 @@ -import Service from "../Service"; -import { footNoteNode } from "wax-prosemirror-schema"; -import { CommentBubbleComponent } from "wax-prosemirror-components"; -import Note from "./Note"; -import NoteComponent from "./NoteComponent"; +import Service from '../Service'; +import { footNoteNode } from 'wax-prosemirror-schema'; +import { CommentBubbleComponent } from 'wax-prosemirror-components'; +import Note from './Note'; +import NoteComponent from './NoteComponent'; class NoteService extends Service { - name = "NoteService"; + name = 'NoteService'; boot() { - const layout = this.container.get("Layout"); - const createOverlay = this.container.get("CreateOverlay"); - layout.addComponent("notesArea", NoteComponent); + const layout = this.container.get('Layout'); + const createOverlay = this.container.get('CreateOverlay'); + layout.addComponent('notesArea', NoteComponent); + createOverlay( CommentBubbleComponent, { - showComment: activeViewId => activeViewId !== "main", - group: "notes" + showComment: activeViewId => activeViewId !== 'main', + group: 'notes', }, { - markType: "", + markType: '', followCursor: false, - selection: true - } + selection: true, + }, ); } register() { - const createNode = this.container.get("CreateNode"); - this.container.bind("Note").to(Note); + const createNode = this.container.get('CreateNode'); + this.container.bind('Note').to(Note); createNode({ - footnote: footNoteNode + footnote: footNoteNode, }); } } diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markDeletion.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markDeletion.js index 2381142968674efd2444b06b097c4b365ef61aab..b577ad96901d871530d251d114aa92db034274cb 100644 --- a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markDeletion.js +++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markDeletion.js @@ -19,7 +19,8 @@ const markDeletion = (tr, from, to, user, date, group) => { node.isInline && node.marks.find( mark => - mark.type.name === 'insertion' && mark.attrs.user === user.userId, + mark.type.name === 'insertion' && + mark.attrs.user.toString() === user.userId.toString(), ) ) { const removeStep = new ReplaceStep( diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/replaceAroundStep.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/replaceAroundStep.js index f83b25f67632f18ad8850e1825f3cef0538fa117..373ec42c13646e51f2094ec641b45519be3000ed 100644 --- a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/replaceAroundStep.js +++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/replaceAroundStep.js @@ -1,6 +1,7 @@ import markDeletion from './markDeletion'; import markInsertion from './markInsertion'; import markWrapping from './markWrapping'; +import { liftListItem } from 'prosemirror-schema-list'; const replaceAroundStep = ( state, @@ -45,8 +46,8 @@ const replaceAroundStep = ( ); } } else { - console.log('to fix'); - newTr.step(step); + console.log('to fix lift list item'); + // newTr.step(step); const ranges = [ { from: step.getMap().map(step.from, -1), @@ -57,12 +58,18 @@ const replaceAroundStep = ( to: step.getMap().map(step.to), }, ]; + ranges.forEach(range => doc.nodesBetween(range.from, range.to, (node, pos) => { if (pos < range.from) { return true; } - markInsertion(newTr, range.from, range.to, user, date); + liftListItem(node.type)(state, newTr => { + newTr.steps.forEach(step => { + tr.step(step); + map.appendMap(step.getMap()); + }); + }); }), ); } diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js index 1e4e88eadb14558cffcb55af1f297b3ff58e97d2..ff0902f65c33988803dade2c73577acd43926349 100644 --- a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js +++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js @@ -27,7 +27,11 @@ const trackedTransaction = (tr, state, user) => { // images if (tr.meta.inputType === 'backwardsDelete' && !tr.steps.lenght) { const $pos = state.selection.$anchor; - if ($pos.depth === 1) return tr; + let node; + if ($pos.depth === 1) { + node = $pos.node($pos.depth); + if (node.content.content[0].type.name === 'image') return tr; + } } if ( diff --git a/wax-prosemirror-themes/package.json b/wax-prosemirror-themes/package.json index d63550ca5b630d9c39c928c48d7100089cc02874..ec7374590202328ace9da078dfc15e8f5430e60b 100644 --- a/wax-prosemirror-themes/package.json +++ b/wax-prosemirror-themes/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror themes", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c" diff --git a/wax-prosemirror-utilities/package.json b/wax-prosemirror-utilities/package.json index 28ea30ba3b99c93dfd1caf72c4d82210e17808e3..355d7156d7bb458290c84a67ae745ec1b7f87633 100644 --- a/wax-prosemirror-utilities/package.json +++ b/wax-prosemirror-utilities/package.json @@ -4,7 +4,7 @@ "version": "0.0.13", "description": "Wax prosemirror utilities", "license": "MIT", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "BABEL_ENV=production rollup -c"