From ca84e98b6449bbc7ff952b3cbefff681734a81ce Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Wed, 16 Sep 2020 10:50:35 +0300 Subject: [PATCH] find block change --- .../src/trackChanges/TrackChangePlugin.js | 41 ++++----- .../src/trackChanges/helpers.js | 84 ------------------- 2 files changed, 16 insertions(+), 109 deletions(-) delete mode 100644 wax-prosemirror-plugins/src/trackChanges/helpers.js diff --git a/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js b/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js index 0de481e2e..2fb5bdcbd 100644 --- a/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js +++ b/wax-prosemirror-plugins/src/trackChanges/TrackChangePlugin.js @@ -16,29 +16,6 @@ export default options => { key, state: { init(config, state) { - const userIds = []; - state.doc.descendants(node => { - if (node.attrs.track) { - node.attrs.track.forEach(track => { - if (!userIds.includes(track.user) && track.user !== 0) { - userIds.push(track.user); - } - }); - } else { - node.marks.forEach(mark => { - if ( - ['deletion', 'insertion', 'format_change'].includes( - mark.type.name, - ) && - !userIds.includes(mark.attrs.user) && - mark.attrs.user !== 0 - ) { - userIds.push(mark.attrs.user); - } - }); - } - }); - return { decos: DecorationSet.empty, }; @@ -46,11 +23,25 @@ export default options => { apply(tr, prev, oldState, state) { const meta = tr.getMeta(key); if (meta) { - // There has been an update, return values from meta instead - // of previous values return meta; } + const { + selection: { from, to }, + } = state; + + state.doc.nodesBetween(from, to, (node, pos) => { + if ( + node.attrs.track && + node.attrs.track.find(track => track.type === 'block_change') + ) { + const blockChangeTrack = node.attrs.track.find( + track => track.type === 'block_change', + ); + console.log(blockChangeTrack); + } + }); + let { decos } = this.getState(oldState); if (tr.selectionSet) { diff --git a/wax-prosemirror-plugins/src/trackChanges/helpers.js b/wax-prosemirror-plugins/src/trackChanges/helpers.js deleted file mode 100644 index 0cdeda125..000000000 --- a/wax-prosemirror-plugins/src/trackChanges/helpers.js +++ /dev/null @@ -1,84 +0,0 @@ -// import { Decoration, DecorationSet } from 'prosemirror-view'; -// import { DocumentHelpers } from 'wax-prosemirror-utilities'; -// -// import { -// key, -// selectedInsertionSpec, -// selectedDeletionSpec, -// selectedChangeFormatSpec, -// selectedChangeBlockSpec, -// } from './TrackChangePlugin'; -// -// export function getSelectedChanges(state) { -// const { decos } = key.getState(state); -// -// const insertion = decos.find( -// undefined, -// undefined, -// spec => spec === selectedInsertionSpec, -// )[0]; -// const deletion = decos.find( -// undefined, -// undefined, -// spec => spec === selectedDeletionSpec, -// )[0]; -// const format_change = decos.find( -// undefined, -// undefined, -// spec => spec === selectedChangeFormatSpec, -// )[0]; -// const block_change = decos.find( -// undefined, -// undefined, -// spec => spec === selectedChangeBlockSpec, -// )[0]; -// -// return { insertion, deletion, format_change, block_change }; -// } -// -// export function setSelectedChanges(state, type, pos) { -// const { tr } = state; -// const node = tr.doc.nodeAt(pos); -// const mark = node.attrs.track -// ? node.attrs.track.find(trackAttr => trackAttr.type === type) -// : node.marks.find(mark => mark.type.name === type); -// if (!mark) { -// return; -// } -// -// DocumentHelpers.findMarkPosition(state, pos, type); -// -// const selectedChange = node.isInline -// ? DocumentHelpers.findMarkPosition(state, pos, type) -// : { from: pos, to: pos + node.nodeSize }; -// let decos = DecorationSet.empty; -// let spec; -// if (type === 'insertion') { -// spec = selectedInsertionSpec; -// } else if (type === 'deletion') { -// spec = selectedDeletionSpec; -// } else if (type === 'format_change') { -// spec = selectedChangeFormatSpec; -// } else if (type === 'block_change') { -// spec = selectedChangeBlockSpec; -// } -// const decoType = node.isInline ? Decoration.inline : Decoration.node; -// decos = decos.add(tr.doc, [ -// decoType( -// selectedChange.from, -// selectedChange.to, -// { -// class: `selected-${type}`, -// }, -// spec, -// ), -// ]); -// tr.setMeta(key, { decos }).setMeta('track', true); -// } -// -// export function deactivateAllSelectedChanges(tr) { -// const pluginState = { -// decos: DecorationSet.empty, -// }; -// return tr.setMeta(key, pluginState).setMeta('track', true); -// } -- GitLab