@manuscripts/track-changes-plugin 2.0.12 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,7 +75,7 @@ function applyAcceptedRejectedChanges(tr, schema, changes, changeSet, deleteMap
75
75
  deleteMap.appendMap(tr.steps[tr.steps.length - 1].getMap());
76
76
  }
77
77
  else if (ChangeSet_1.ChangeSet.isNodeChange(change) && noChangeNeeded) {
78
- const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: (0, deleteNode_1.keepDeleteWithMoveNodeId)(node) });
78
+ const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: (0, deleteNode_1.keepPairedChanges)(node) });
79
79
  tr.setNodeMarkup(from, undefined, attrs, node.marks);
80
80
  if (node.isAtom) {
81
81
  tr.removeMark(from, deleteMap.map(change.to), schema.marks.tracked_insert);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.keepDeleteWithMoveNodeId = void 0;
3
+ exports.keepPairedChanges = void 0;
4
4
  exports.deleteNode = deleteNode;
5
5
  exports.deleteOrSetNodeDeleted = deleteOrSetNodeDeleted;
6
6
  const prosemirror_model_1 = require("prosemirror-model");
@@ -49,9 +49,9 @@ function deleteOrSetNodeDeleted(node, pos, newTr, deleteAttrs) {
49
49
  (0, dropStructureChange_1.dropStructuralChangeShadow)(structure.moveNodeId, newTr);
50
50
  }
51
51
  }
52
- const keepDeleteWithMoveNodeId = (node) => {
52
+ const keepPairedChanges = (node) => {
53
53
  var _a;
54
- const dataTracked = (_a = (0, nodeHelpers_1.getBlockInlineTrackedData)(node)) === null || _a === void 0 ? void 0 : _a.filter((c) => c.operation === change_1.CHANGE_OPERATION.delete && c.moveNodeId);
54
+ const dataTracked = (_a = (0, nodeHelpers_1.getBlockInlineTrackedData)(node)) === null || _a === void 0 ? void 0 : _a.filter((c) => (c.operation === change_1.CHANGE_OPERATION.delete && c.moveNodeId) || c.operation === change_1.CHANGE_OPERATION.reference);
55
55
  return (dataTracked === null || dataTracked === void 0 ? void 0 : dataTracked.length) ? dataTracked : null;
56
56
  };
57
- exports.keepDeleteWithMoveNodeId = keepDeleteWithMoveNodeId;
57
+ exports.keepPairedChanges = keepPairedChanges;
@@ -34,9 +34,10 @@ const dropStructuralChangeShadow = (moveNodeId, tr) => {
34
34
  return tr;
35
35
  };
36
36
  exports.dropStructuralChangeShadow = dropStructuralChangeShadow;
37
- const dropOrphanChanges = (newTr, dropDataTracked) => {
37
+ const dropOrphanChanges = (newTr) => {
38
38
  const changeSet = (0, findChanges_1.findChanges)(prosemirror_state_1.EditorState.create({ doc: newTr.doc }));
39
39
  const shadowIds = new Set();
40
+ const referenceIds = new Set();
40
41
  const changesIds = new Set();
41
42
  changeSet.changes.forEach((c) => {
42
43
  if (c.dataTracked.moveNodeId && c.dataTracked.operation === change_1.CHANGE_OPERATION.delete) {
@@ -46,14 +47,38 @@ const dropOrphanChanges = (newTr, dropDataTracked) => {
46
47
  c.dataTracked.operation === change_1.CHANGE_OPERATION.move) {
47
48
  changesIds.add(c.dataTracked.moveNodeId);
48
49
  }
50
+ if (c.dataTracked.operation === change_1.CHANGE_OPERATION.node_split) {
51
+ changesIds.add(c.dataTracked.id);
52
+ }
53
+ if (c.dataTracked.operation === change_1.CHANGE_OPERATION.reference) {
54
+ referenceIds.add(c.dataTracked.referenceId);
55
+ }
49
56
  });
50
- if (!shadowIds.size && !changesIds.size) {
57
+ if (!shadowIds.size && !referenceIds.size && !changesIds.size) {
51
58
  return;
52
59
  }
53
60
  changeSet.changes.forEach((c) => {
61
+ if (c.dataTracked.operation === change_1.CHANGE_OPERATION.reference &&
62
+ !changesIds.has(c.dataTracked.referenceId)) {
63
+ const node = newTr.doc.nodeAt(c.from);
64
+ const dataTracked = node && ((0, nodeHelpers_1.getBlockInlineTrackedData)(node) || []).filter((d) => d.id !== c.id);
65
+ newTr.setNodeMarkup(c.from, undefined, Object.assign(Object.assign({}, node === null || node === void 0 ? void 0 : node.attrs), { dataTracked }));
66
+ }
67
+ if (c.type === 'node-change' &&
68
+ c.dataTracked.operation === change_1.CHANGE_OPERATION.node_split &&
69
+ !referenceIds.has(c.id)) {
70
+ const _a = c.dataTracked, { id } = _a, attrs = __rest(_a, ["id"]);
71
+ newTr.replaceWith(c.from, c.to, (0, setFragmentAsInserted_1.setFragmentAsInserted)(prosemirror_model_1.Fragment.from(c.node), (0, track_utils_1.createNewInsertAttrs)(attrs), newTr.doc.type.schema));
72
+ const referenceChanges = ((0, nodeHelpers_1.getBlockInlineTrackedData)(c.node) || []).filter((d) => d.operation === change_1.CHANGE_OPERATION.reference);
73
+ if (referenceChanges.length) {
74
+ const node = newTr.doc.nodeAt(c.from);
75
+ const dataTracked = (node && (0, nodeHelpers_1.getBlockInlineTrackedData)(node)) || [];
76
+ newTr.setNodeMarkup(c.from, undefined, Object.assign(Object.assign({}, node === null || node === void 0 ? void 0 : node.attrs), { dataTracked: [...dataTracked, ...referenceChanges] }));
77
+ }
78
+ }
54
79
  if (c.dataTracked.moveNodeId &&
55
80
  !(shadowIds.has(c.dataTracked.moveNodeId) && changesIds.has(c.dataTracked.moveNodeId))) {
56
- if (c.dataTracked.operation === change_1.CHANGE_OPERATION.delete || dropDataTracked) {
81
+ if (c.dataTracked.operation === change_1.CHANGE_OPERATION.delete) {
57
82
  if (c.type === 'text-change') {
58
83
  newTr.removeMark(c.from, c.to, newTr.doc.type.schema.marks.tracked_delete);
59
84
  }
@@ -62,7 +87,7 @@ const dropOrphanChanges = (newTr, dropDataTracked) => {
62
87
  }
63
88
  }
64
89
  else if (c.type === 'node-change') {
65
- const _a = c.dataTracked, { id, moveNodeId } = _a, attrs = __rest(_a, ["id", "moveNodeId"]);
90
+ const _b = c.dataTracked, { id, moveNodeId } = _b, attrs = __rest(_b, ["id", "moveNodeId"]);
66
91
  newTr.replaceWith(c.from, c.to, (0, setFragmentAsInserted_1.setFragmentAsInserted)(prosemirror_model_1.Fragment.from(c.node), (0, track_utils_1.createNewInsertAttrs)(attrs), newTr.doc.type.schema));
67
92
  }
68
93
  }
@@ -1,6 +1,6 @@
1
1
  import { Mapping } from 'prosemirror-transform';
2
2
  import { ChangeSet } from '../ChangeSet';
3
- import { deleteNode, keepDeleteWithMoveNodeId } from '../mutate/deleteNode';
3
+ import { deleteNode, keepPairedChanges } from '../mutate/deleteNode';
4
4
  import { mergeNode } from '../mutate/mergeNode';
5
5
  import { CHANGE_OPERATION, CHANGE_STATUS } from '../types/change';
6
6
  import { log } from '../utils/logger';
@@ -71,7 +71,7 @@ export function applyAcceptedRejectedChanges(tr, schema, changes, changeSet, del
71
71
  deleteMap.appendMap(tr.steps[tr.steps.length - 1].getMap());
72
72
  }
73
73
  else if (ChangeSet.isNodeChange(change) && noChangeNeeded) {
74
- const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: keepDeleteWithMoveNodeId(node) });
74
+ const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: keepPairedChanges(node) });
75
75
  tr.setNodeMarkup(from, undefined, attrs, node.marks);
76
76
  if (node.isAtom) {
77
77
  tr.removeMark(from, deleteMap.map(change.to), schema.marks.tracked_insert);
@@ -44,8 +44,8 @@ export function deleteOrSetNodeDeleted(node, pos, newTr, deleteAttrs) {
44
44
  dropStructuralChangeShadow(structure.moveNodeId, newTr);
45
45
  }
46
46
  }
47
- export const keepDeleteWithMoveNodeId = (node) => {
47
+ export const keepPairedChanges = (node) => {
48
48
  var _a;
49
- const dataTracked = (_a = getBlockInlineTrackedData(node)) === null || _a === void 0 ? void 0 : _a.filter((c) => c.operation === CHANGE_OPERATION.delete && c.moveNodeId);
49
+ const dataTracked = (_a = getBlockInlineTrackedData(node)) === null || _a === void 0 ? void 0 : _a.filter((c) => (c.operation === CHANGE_OPERATION.delete && c.moveNodeId) || c.operation === CHANGE_OPERATION.reference);
50
50
  return (dataTracked === null || dataTracked === void 0 ? void 0 : dataTracked.length) ? dataTracked : null;
51
51
  };
@@ -30,9 +30,10 @@ export const dropStructuralChangeShadow = (moveNodeId, tr) => {
30
30
  }
31
31
  return tr;
32
32
  };
33
- export const dropOrphanChanges = (newTr, dropDataTracked) => {
33
+ export const dropOrphanChanges = (newTr) => {
34
34
  const changeSet = findChanges(EditorState.create({ doc: newTr.doc }));
35
35
  const shadowIds = new Set();
36
+ const referenceIds = new Set();
36
37
  const changesIds = new Set();
37
38
  changeSet.changes.forEach((c) => {
38
39
  if (c.dataTracked.moveNodeId && c.dataTracked.operation === CHANGE_OPERATION.delete) {
@@ -42,14 +43,38 @@ export const dropOrphanChanges = (newTr, dropDataTracked) => {
42
43
  c.dataTracked.operation === CHANGE_OPERATION.move) {
43
44
  changesIds.add(c.dataTracked.moveNodeId);
44
45
  }
46
+ if (c.dataTracked.operation === CHANGE_OPERATION.node_split) {
47
+ changesIds.add(c.dataTracked.id);
48
+ }
49
+ if (c.dataTracked.operation === CHANGE_OPERATION.reference) {
50
+ referenceIds.add(c.dataTracked.referenceId);
51
+ }
45
52
  });
46
- if (!shadowIds.size && !changesIds.size) {
53
+ if (!shadowIds.size && !referenceIds.size && !changesIds.size) {
47
54
  return;
48
55
  }
49
56
  changeSet.changes.forEach((c) => {
57
+ if (c.dataTracked.operation === CHANGE_OPERATION.reference &&
58
+ !changesIds.has(c.dataTracked.referenceId)) {
59
+ const node = newTr.doc.nodeAt(c.from);
60
+ const dataTracked = node && (getBlockInlineTrackedData(node) || []).filter((d) => d.id !== c.id);
61
+ newTr.setNodeMarkup(c.from, undefined, Object.assign(Object.assign({}, node === null || node === void 0 ? void 0 : node.attrs), { dataTracked }));
62
+ }
63
+ if (c.type === 'node-change' &&
64
+ c.dataTracked.operation === CHANGE_OPERATION.node_split &&
65
+ !referenceIds.has(c.id)) {
66
+ const _a = c.dataTracked, { id } = _a, attrs = __rest(_a, ["id"]);
67
+ newTr.replaceWith(c.from, c.to, setFragmentAsInserted(Fragment.from(c.node), createNewInsertAttrs(attrs), newTr.doc.type.schema));
68
+ const referenceChanges = (getBlockInlineTrackedData(c.node) || []).filter((d) => d.operation === CHANGE_OPERATION.reference);
69
+ if (referenceChanges.length) {
70
+ const node = newTr.doc.nodeAt(c.from);
71
+ const dataTracked = (node && getBlockInlineTrackedData(node)) || [];
72
+ newTr.setNodeMarkup(c.from, undefined, Object.assign(Object.assign({}, node === null || node === void 0 ? void 0 : node.attrs), { dataTracked: [...dataTracked, ...referenceChanges] }));
73
+ }
74
+ }
50
75
  if (c.dataTracked.moveNodeId &&
51
76
  !(shadowIds.has(c.dataTracked.moveNodeId) && changesIds.has(c.dataTracked.moveNodeId))) {
52
- if (c.dataTracked.operation === CHANGE_OPERATION.delete || dropDataTracked) {
77
+ if (c.dataTracked.operation === CHANGE_OPERATION.delete) {
53
78
  if (c.type === 'text-change') {
54
79
  newTr.removeMark(c.from, c.to, newTr.doc.type.schema.marks.tracked_delete);
55
80
  }
@@ -58,7 +83,7 @@ export const dropOrphanChanges = (newTr, dropDataTracked) => {
58
83
  }
59
84
  }
60
85
  else if (c.type === 'node-change') {
61
- const _a = c.dataTracked, { id, moveNodeId } = _a, attrs = __rest(_a, ["id", "moveNodeId"]);
86
+ const _b = c.dataTracked, { id, moveNodeId } = _b, attrs = __rest(_b, ["id", "moveNodeId"]);
62
87
  newTr.replaceWith(c.from, c.to, setFragmentAsInserted(Fragment.from(c.node), createNewInsertAttrs(attrs), newTr.doc.type.schema));
63
88
  }
64
89
  }
@@ -3,4 +3,4 @@ import { Transaction } from 'prosemirror-state';
3
3
  import { NewDeleteAttrs } from '../types/track';
4
4
  export declare function deleteNode(node: PMNode, pos: number, tr: Transaction): Transaction;
5
5
  export declare function deleteOrSetNodeDeleted(node: PMNode, pos: number, newTr: Transaction, deleteAttrs: NewDeleteAttrs): Transaction | undefined;
6
- export declare const keepDeleteWithMoveNodeId: (node: PMNode) => Partial<import("../types/change").TrackedAttrs>[] | null;
6
+ export declare const keepPairedChanges: (node: PMNode) => Partial<import("../types/change").TrackedAttrs>[] | null;
@@ -2,5 +2,5 @@ import { Fragment } from 'prosemirror-model';
2
2
  import { Transaction } from 'prosemirror-state';
3
3
  import { NewEmptyAttrs } from '../types/track';
4
4
  export declare const dropStructuralChangeShadow: (moveNodeId: string | undefined, tr: Transaction) => Transaction;
5
- export declare const dropOrphanChanges: (newTr: Transaction, dropDataTracked?: boolean) => void;
5
+ export declare const dropOrphanChanges: (newTr: Transaction) => void;
6
6
  export declare const joinStructureChanges: (attrs: NewEmptyAttrs, sliceContent: Fragment, content: Fragment, tr: Transaction, newTr: Transaction) => Fragment;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manuscripts/track-changes-plugin",
3
- "version": "2.0.12",
3
+ "version": "2.0.13",
4
4
  "author": "Atypon Systems LLC",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Atypon-OpenSource/manuscripts-track-changes-plugin",