Skip to content
Snippets Groups Projects
Commit ca84e98b authored by chris's avatar chris
Browse files

find block change

parent 5e07cab4
No related branches found
No related tags found
1 merge request!160add track change plugin through service
...@@ -16,29 +16,6 @@ export default options => { ...@@ -16,29 +16,6 @@ export default options => {
key, key,
state: { state: {
init(config, 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 { return {
decos: DecorationSet.empty, decos: DecorationSet.empty,
}; };
...@@ -46,11 +23,25 @@ export default options => { ...@@ -46,11 +23,25 @@ export default options => {
apply(tr, prev, oldState, state) { apply(tr, prev, oldState, state) {
const meta = tr.getMeta(key); const meta = tr.getMeta(key);
if (meta) { if (meta) {
// There has been an update, return values from meta instead
// of previous values
return meta; 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); let { decos } = this.getState(oldState);
if (tr.selectionSet) { if (tr.selectionSet) {
......
// 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);
// }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment