@manuscripts/track-changes-plugin 2.0.9 → 2.0.11

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.
Files changed (46) hide show
  1. package/dist/cjs/actions.js +6 -5
  2. package/dist/cjs/change-steps/diffChangeSteps.js +1 -2
  3. package/dist/cjs/change-steps/matchInserted.js +1 -2
  4. package/dist/cjs/change-steps/processChangeSteps.js +22 -10
  5. package/dist/cjs/changes/applyChanges.js +53 -12
  6. package/dist/cjs/changes/findChanges.js +1 -2
  7. package/dist/cjs/changes/fixInconsistentChanges.js +1 -2
  8. package/dist/cjs/changes/revertChange.js +2 -3
  9. package/dist/cjs/changes/updateChangeAttrs.js +9 -3
  10. package/dist/cjs/changes/updateChangesStatus.js +1 -2
  11. package/dist/cjs/compute/nodeHelpers.js +7 -8
  12. package/dist/cjs/compute/setFragmentAsInserted.js +23 -14
  13. package/dist/cjs/compute/splitSliceIntoMergedParts.js +1 -2
  14. package/dist/cjs/index.js +20 -8
  15. package/dist/cjs/mutate/deleteAndMergeSplitNodes.js +18 -9
  16. package/dist/cjs/mutate/deleteNode.js +4 -4
  17. package/dist/cjs/mutate/deleteText.js +1 -2
  18. package/dist/cjs/mutate/mergeNode.js +1 -2
  19. package/dist/cjs/mutate/mergeTrackedMarks.js +1 -2
  20. package/dist/cjs/steps/trackReplaceAroundStep.js +18 -9
  21. package/dist/cjs/steps/trackReplaceStep.js +25 -14
  22. package/dist/cjs/steps/trackTransaction.js +17 -7
  23. package/dist/cjs/types/change.js +2 -2
  24. package/dist/cjs/types/track.js +1 -1
  25. package/dist/cjs/utils/mapChangeStep.js +1 -2
  26. package/dist/cjs/utils/track-utils.js +11 -11
  27. package/dist/cjs/utils/uuidv4.js +1 -2
  28. package/dist/es/actions.js +1 -0
  29. package/dist/es/change-steps/processChangeSteps.js +4 -1
  30. package/dist/es/changes/applyChanges.js +52 -10
  31. package/dist/es/changes/updateChangeAttrs.js +6 -0
  32. package/dist/es/compute/setFragmentAsInserted.js +2 -2
  33. package/dist/es/index.js +1 -1
  34. package/dist/es/mutate/deleteNode.js +2 -1
  35. package/dist/es/steps/trackReplaceStep.js +7 -5
  36. package/dist/es/steps/trackTransaction.js +16 -5
  37. package/dist/es/utils/track-utils.js +2 -2
  38. package/dist/types/ChangeSet.d.ts +4 -4
  39. package/dist/types/actions.d.ts +5 -1
  40. package/dist/types/changes/updateChangeAttrs.d.ts +1 -0
  41. package/dist/types/compute/setFragmentAsInserted.d.ts +2 -2
  42. package/dist/types/index.d.ts +1 -1
  43. package/dist/types/types/change.d.ts +1 -0
  44. package/dist/types/types/track.d.ts +6 -2
  45. package/dist/types/utils/track-utils.d.ts +2 -2
  46. package/package.json +8 -8
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.skipTracking = exports.setAction = exports.getAction = exports.hasAction = exports.TrackChangesAction = void 0;
3
+ exports.skipTracking = exports.TrackChangesAction = void 0;
4
+ exports.hasAction = hasAction;
5
+ exports.getAction = getAction;
6
+ exports.setAction = setAction;
4
7
  var TrackChangesAction;
5
8
  (function (TrackChangesAction) {
6
9
  TrackChangesAction["skipTrack"] = "track-changes-skip-tracking";
@@ -9,18 +12,16 @@ var TrackChangesAction;
9
12
  TrackChangesAction["setChangeStatuses"] = "track-changes-set-change-statuses";
10
13
  TrackChangesAction["refreshChanges"] = "track-changes-refresh-changes";
11
14
  TrackChangesAction["updateMetaNode"] = "track-changes-update-meta-node";
12
- })(TrackChangesAction = exports.TrackChangesAction || (exports.TrackChangesAction = {}));
15
+ TrackChangesAction["indentationAction"] = "track-changes-indentation-action";
16
+ })(TrackChangesAction || (exports.TrackChangesAction = TrackChangesAction = {}));
13
17
  function hasAction(tr) {
14
18
  return Object.values(TrackChangesAction).some((action) => !!tr.getMeta(action));
15
19
  }
16
- exports.hasAction = hasAction;
17
20
  function getAction(tr, action) {
18
21
  return tr.getMeta(action);
19
22
  }
20
- exports.getAction = getAction;
21
23
  function setAction(tr, action, payload) {
22
24
  return tr.setMeta(action, payload);
23
25
  }
24
- exports.setAction = setAction;
25
26
  const skipTracking = (tr) => setAction(tr, TrackChangesAction.skipTrack, true);
26
27
  exports.skipTracking = skipTracking;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.diffChangeSteps = void 0;
3
+ exports.diffChangeSteps = diffChangeSteps;
4
4
  const prosemirror_model_1 = require("prosemirror-model");
5
5
  const logger_1 = require("../utils/logger");
6
6
  const matchInserted_1 = require("./matchInserted");
@@ -60,4 +60,3 @@ function diffChangeSteps(deleted, inserted) {
60
60
  logger_1.log.info('FINISH DIFF: ', [...updatedDeleted, ...updated]);
61
61
  return [...updatedDeleted, ...updated];
62
62
  }
63
- exports.diffChangeSteps = diffChangeSteps;
@@ -11,7 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  return t;
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.matchInserted = void 0;
14
+ exports.matchInserted = matchInserted;
15
15
  function matchText(adjDeleted, insNode, offset, matchedDeleted, deleted) {
16
16
  const { pos, from, to, node: delNode } = adjDeleted;
17
17
  let j = offset, d = from - pos, maxSteps = to - Math.max(pos, from);
@@ -66,4 +66,3 @@ function matchInserted(matchedDeleted, deleted, inserted) {
66
66
  });
67
67
  }
68
68
  }
69
- exports.matchInserted = matchInserted;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __rest = (this && this.__rest) || function (s, e) {
26
36
  var t = {};
27
37
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -34,7 +44,7 @@ var __rest = (this && this.__rest) || function (s, e) {
34
44
  return t;
35
45
  };
36
46
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.processChangeSteps = void 0;
47
+ exports.processChangeSteps = processChangeSteps;
38
48
  const prosemirror_transform_1 = require("prosemirror-transform");
39
49
  const nodeHelpers_1 = require("../compute/nodeHelpers");
40
50
  const deleteNode_1 = require("../mutate/deleteNode");
@@ -72,7 +82,10 @@ function processChangeSteps(changes, startPos, newTr, emptyAttrs, schema, delete
72
82
  }
73
83
  const nodeAtMappedPos = newTr.doc.nodeAt(mapping.map(c.pos));
74
84
  const nodeWasAlreadyDeleted = !nodeAtMappedPos || nodeAtMappedPos !== c.node;
75
- if ((isInserted && deletesCounter > 1) || (childOfDeleted && prevDeletedNodeInserted) || nodeWasAlreadyDeleted) {
85
+ const isMoveOperation = !!emptyAttrs.moveNodeId;
86
+ if ((isInserted && deletesCounter > 1 && !isMoveOperation) ||
87
+ (childOfDeleted && prevDeletedNodeInserted) ||
88
+ nodeWasAlreadyDeleted) {
76
89
  return false;
77
90
  }
78
91
  (0, deleteNode_1.deleteOrSetNodeDeleted)(c.node, mapping.map(c.pos), newTr, deleteAttrs);
@@ -171,4 +184,3 @@ function processChangeSteps(changes, startPos, newTr, emptyAttrs, schema, delete
171
184
  });
172
185
  return [mapping, selectionPos];
173
186
  }
174
- exports.processChangeSteps = processChangeSteps;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyAcceptedRejectedChanges = exports.getUpdatedDataTracked = void 0;
3
+ exports.getUpdatedDataTracked = getUpdatedDataTracked;
4
+ exports.applyAcceptedRejectedChanges = applyAcceptedRejectedChanges;
4
5
  const prosemirror_transform_1 = require("prosemirror-transform");
5
6
  const ChangeSet_1 = require("../ChangeSet");
6
7
  const deleteNode_1 = require("../mutate/deleteNode");
@@ -9,6 +10,21 @@ const change_1 = require("../types/change");
9
10
  const logger_1 = require("../utils/logger");
10
11
  const revertChange_1 = require("./revertChange");
11
12
  const updateChangeAttrs_1 = require("./updateChangeAttrs");
13
+ function collectMoveNodeIds(containerNode, primaryMoveNodeId) {
14
+ const moveNodeIds = new Set();
15
+ moveNodeIds.add(primaryMoveNodeId);
16
+ containerNode.descendants((childNode) => {
17
+ const dataTracked = childNode.attrs.dataTracked;
18
+ if (Array.isArray(dataTracked)) {
19
+ dataTracked.forEach((trackingData) => {
20
+ if (trackingData.moveNodeId) {
21
+ moveNodeIds.add(trackingData.moveNodeId);
22
+ }
23
+ });
24
+ }
25
+ });
26
+ return moveNodeIds;
27
+ }
12
28
  function getUpdatedDataTracked(dataTracked, changeId) {
13
29
  if (!dataTracked) {
14
30
  return null;
@@ -16,7 +32,6 @@ function getUpdatedDataTracked(dataTracked, changeId) {
16
32
  const newDataTracked = dataTracked.filter((c) => c.id !== changeId);
17
33
  return newDataTracked.length ? newDataTracked : null;
18
34
  }
19
- exports.getUpdatedDataTracked = getUpdatedDataTracked;
20
35
  function applyAcceptedRejectedChanges(tr, schema, changes, changeSet, deleteMap = new prosemirror_transform_1.Mapping()) {
21
36
  changes.sort((c1, c2) => {
22
37
  if ((c1.type === 'node-change' && c1.node.type === schema.nodes.list) ||
@@ -29,6 +44,9 @@ function applyAcceptedRejectedChanges(tr, schema, changes, changeSet, deleteMap
29
44
  if (change.dataTracked.operation === change_1.CHANGE_OPERATION.move) {
30
45
  return;
31
46
  }
47
+ if (change.dataTracked.operation === change_1.CHANGE_OPERATION.delete && change.dataTracked.moveNodeId) {
48
+ return;
49
+ }
32
50
  const { pos: from, deleted } = deleteMap.mapResult(change.from);
33
51
  const node = tr.doc.nodeAt(from);
34
52
  const noChangeNeeded = !ChangeSet_1.ChangeSet.shouldDeleteChange(change);
@@ -94,27 +112,50 @@ function applyAcceptedRejectedChanges(tr, schema, changes, changeSet, deleteMap
94
112
  return;
95
113
  }
96
114
  if (change.dataTracked.status === change_1.CHANGE_STATUS.accepted) {
97
- const originalChange = changeSet.changes.find((c) => c.dataTracked.moveNodeId === change.dataTracked.moveNodeId &&
115
+ const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: getUpdatedDataTracked(node.attrs.dataTracked, change.id) });
116
+ tr.setNodeMarkup(from, undefined, attrs, node.marks);
117
+ const originalChanges = changeSet.changes.filter((c) => c.dataTracked.moveNodeId === change.dataTracked.moveNodeId &&
98
118
  c.dataTracked.operation === change_1.CHANGE_OPERATION.delete);
99
- if (originalChange) {
100
- const { pos: originalFrom } = deleteMap.mapResult(originalChange.from);
119
+ if (originalChanges.length === 0) {
120
+ logger_1.log.warn('No original change found for move operation', { change });
121
+ }
122
+ originalChanges.forEach((originalChange) => {
123
+ const { pos: originalFrom, deleted } = deleteMap.mapResult(originalChange.from);
124
+ if (deleted) {
125
+ return;
126
+ }
101
127
  const originalNode = tr.doc.nodeAt(originalFrom);
102
- const attrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: getUpdatedDataTracked(node.attrs.dataTracked, change.id) });
103
- tr.setNodeMarkup(from, undefined, attrs, node.marks);
104
128
  if (originalNode) {
105
129
  tr.delete(originalFrom, originalFrom + originalNode.nodeSize);
106
130
  deleteMap.appendMap(tr.steps[tr.steps.length - 1].getMap());
107
131
  }
108
- }
109
- else {
110
- logger_1.log.warn('No original change found for move operation', { change });
111
- }
132
+ });
112
133
  }
113
134
  else if (change.dataTracked.status === change_1.CHANGE_STATUS.rejected) {
135
+ const moveNodeIdsToRestore = collectMoveNodeIds(node, change.dataTracked.moveNodeId);
114
136
  tr.delete(from, from + node.nodeSize);
115
137
  deleteMap.appendMap(tr.steps[tr.steps.length - 1].getMap());
138
+ changeSet.changes
139
+ .filter((c) => c.dataTracked.operation === change_1.CHANGE_OPERATION.delete &&
140
+ c.dataTracked.moveNodeId &&
141
+ moveNodeIdsToRestore.has(c.dataTracked.moveNodeId) &&
142
+ ChangeSet_1.ChangeSet.isNodeChange(c))
143
+ .forEach((orig) => {
144
+ const { pos } = deleteMap.mapResult(orig.from);
145
+ const node = tr.doc.nodeAt(pos);
146
+ if (!node) {
147
+ return;
148
+ }
149
+ const dataTracked = node.attrs.dataTracked || [];
150
+ const hasMoved = dataTracked.some((d) => d.operation === change_1.CHANGE_OPERATION.move && d.status === change_1.CHANGE_STATUS.pending);
151
+ if (hasMoved) {
152
+ tr.delete(pos, pos + node.nodeSize);
153
+ deleteMap.appendMap(tr.steps[tr.steps.length - 1].getMap());
154
+ return;
155
+ }
156
+ (0, updateChangeAttrs_1.restoreNode)(tr, node, pos, schema);
157
+ });
116
158
  }
117
159
  });
118
160
  return deleteMap;
119
161
  }
120
- exports.applyAcceptedRejectedChanges = applyAcceptedRejectedChanges;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findChanges = void 0;
3
+ exports.findChanges = findChanges;
4
4
  const ChangeSet_1 = require("../ChangeSet");
5
5
  const nodeHelpers_1 = require("../compute/nodeHelpers");
6
6
  const change_1 = require("../types/change");
@@ -76,4 +76,3 @@ function findChanges(state) {
76
76
  current && changes.push(current.change);
77
77
  return new ChangeSet_1.ChangeSet(changes);
78
78
  }
79
- exports.findChanges = findChanges;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fixInconsistentChanges = void 0;
3
+ exports.fixInconsistentChanges = fixInconsistentChanges;
4
4
  const change_1 = require("../types/change");
5
5
  const uuidv4_1 = require("../utils/uuidv4");
6
6
  const updateChangeAttrs_1 = require("./updateChangeAttrs");
@@ -19,4 +19,3 @@ function fixInconsistentChanges(changeSet, currentUserID, newTr, schema) {
19
19
  });
20
20
  return changed;
21
21
  }
22
- exports.fixInconsistentChanges = fixInconsistentChanges;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.revertWrapNodeChange = exports.revertSplitNodeChange = void 0;
3
+ exports.revertSplitNodeChange = revertSplitNodeChange;
4
+ exports.revertWrapNodeChange = revertWrapNodeChange;
4
5
  const prosemirror_model_1 = require("prosemirror-model");
5
6
  const prosemirror_transform_1 = require("prosemirror-transform");
6
7
  const nodeHelpers_1 = require("../compute/nodeHelpers");
@@ -26,7 +27,6 @@ function revertSplitNodeChange(tr, change, changeSet) {
26
27
  tr.setNodeMarkup(tr.mapping.map(deleteChange.from), undefined, (0, applyChanges_1.getUpdatedDataTracked)(node.attrs.dataTracked, deleteChange.id));
27
28
  }
28
29
  }
29
- exports.revertSplitNodeChange = revertSplitNodeChange;
30
30
  function revertWrapNodeChange(tr, change, deleteMap) {
31
31
  const from = tr.mapping.map(change.from);
32
32
  const to = tr.mapping.map(change.to);
@@ -51,4 +51,3 @@ function revertWrapNodeChange(tr, change, deleteMap) {
51
51
  });
52
52
  }
53
53
  }
54
- exports.revertWrapNodeChange = revertWrapNodeChange;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateChangeChildrenAttributes = exports.updateChangeAttrs = void 0;
3
+ exports.updateChangeAttrs = updateChangeAttrs;
4
+ exports.updateChangeChildrenAttributes = updateChangeChildrenAttributes;
5
+ exports.restoreNode = restoreNode;
4
6
  const ChangeSet_1 = require("../ChangeSet");
5
7
  const nodeHelpers_1 = require("../compute/nodeHelpers");
6
8
  const change_1 = require("../types/change");
@@ -69,7 +71,6 @@ function updateChangeAttrs(tr, change, trackedAttrs, schema) {
69
71
  }
70
72
  return tr;
71
73
  }
72
- exports.updateChangeAttrs = updateChangeAttrs;
73
74
  function updateChangeChildrenAttributes(changes, tr, mapping) {
74
75
  changes.forEach((c) => {
75
76
  if (c.type === 'node-change' && !ChangeSet_1.ChangeSet.shouldDeleteChange(c)) {
@@ -83,4 +84,9 @@ function updateChangeChildrenAttributes(changes, tr, mapping) {
83
84
  }
84
85
  });
85
86
  }
86
- exports.updateChangeChildrenAttributes = updateChangeChildrenAttributes;
87
+ function restoreNode(tr, node, pos, schema) {
88
+ const updatedAttrs = Object.assign(Object.assign({}, node.attrs), { dataTracked: null });
89
+ tr.setNodeMarkup(pos, undefined, updatedAttrs, node.marks);
90
+ tr.removeMark(pos, pos + node.nodeSize, schema.marks.tracked_insert);
91
+ tr.removeMark(pos, pos + node.nodeSize, schema.marks.tracked_delete);
92
+ }
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.updateChangesStatus = void 0;
18
+ exports.updateChangesStatus = updateChangesStatus;
19
19
  const prosemirror_history_1 = require("prosemirror-history");
20
20
  const ChangeSet_1 = require("../ChangeSet");
21
21
  const change_1 = require("../types/change");
@@ -75,4 +75,3 @@ function updateChangesStatus(createdTr, changeSet, ids, status, userID, oldState
75
75
  }
76
76
  (0, prosemirror_history_1.closeHistory)(createdTr);
77
77
  }
78
- exports.updateChangesStatus = updateChangesStatus;
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMergeableMarkTrackedAttrs = exports.shouldMergeTrackedAttributes = exports.equalMarks = exports.getNodeTrackedData = exports.getBlockInlineTrackedData = exports.getTextNodeTrackedMarkData = exports.addTrackIdIfDoesntExist = void 0;
3
+ exports.addTrackIdIfDoesntExist = addTrackIdIfDoesntExist;
4
+ exports.getTextNodeTrackedMarkData = getTextNodeTrackedMarkData;
5
+ exports.getBlockInlineTrackedData = getBlockInlineTrackedData;
6
+ exports.getNodeTrackedData = getNodeTrackedData;
7
+ exports.equalMarks = equalMarks;
8
+ exports.shouldMergeTrackedAttributes = shouldMergeTrackedAttributes;
9
+ exports.getMergeableMarkTrackedAttrs = getMergeableMarkTrackedAttrs;
4
10
  const change_1 = require("../types/change");
5
11
  const logger_1 = require("../utils/logger");
6
12
  const uuidv4_1 = require("../utils/uuidv4");
@@ -10,7 +16,6 @@ function addTrackIdIfDoesntExist(attrs) {
10
16
  }
11
17
  return attrs;
12
18
  }
13
- exports.addTrackIdIfDoesntExist = addTrackIdIfDoesntExist;
14
19
  function getTextNodeTrackedMarkData(node, schema) {
15
20
  if (!node || !node.isText) {
16
21
  return undefined;
@@ -27,7 +32,6 @@ function getTextNodeTrackedMarkData(node, schema) {
27
32
  }
28
33
  return marksTrackedData[0] || undefined;
29
34
  }
30
- exports.getTextNodeTrackedMarkData = getTextNodeTrackedMarkData;
31
35
  function getBlockInlineTrackedData(node) {
32
36
  const { dataTracked } = node.attrs;
33
37
  if (dataTracked && !Array.isArray(dataTracked)) {
@@ -35,7 +39,6 @@ function getBlockInlineTrackedData(node) {
35
39
  }
36
40
  return dataTracked || [];
37
41
  }
38
- exports.getBlockInlineTrackedData = getBlockInlineTrackedData;
39
42
  function getNodeTrackedData(node, schema) {
40
43
  let tracked;
41
44
  if (node && !node.isText) {
@@ -49,12 +52,10 @@ function getNodeTrackedData(node, schema) {
49
52
  }
50
53
  return tracked;
51
54
  }
52
- exports.getNodeTrackedData = getNodeTrackedData;
53
55
  function equalMarks(n1, n2) {
54
56
  return (n1.marks.length === n2.marks.length &&
55
57
  n1.marks.every((mark) => n1.marks.find((m) => m.type === mark.type)));
56
58
  }
57
- exports.equalMarks = equalMarks;
58
59
  function shouldMergeTrackedAttributes(left, right) {
59
60
  if (!left || !right) {
60
61
  logger_1.log.warn('passed undefined dataTracked attributes to shouldMergeTrackedAttributes', {
@@ -65,9 +66,7 @@ function shouldMergeTrackedAttributes(left, right) {
65
66
  }
66
67
  return (left.status === right.status && left.operation === right.operation && left.authorID === right.authorID);
67
68
  }
68
- exports.shouldMergeTrackedAttributes = shouldMergeTrackedAttributes;
69
69
  function getMergeableMarkTrackedAttrs(node, attrs, schema) {
70
70
  const nodeAttrs = getTextNodeTrackedMarkData(node, schema);
71
71
  return nodeAttrs && shouldMergeTrackedAttributes(nodeAttrs, attrs) ? nodeAttrs : null;
72
72
  }
73
- exports.getMergeableMarkTrackedAttrs = getMergeableMarkTrackedAttrs;
@@ -15,15 +15,28 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.setFragmentAsNodeSplit = exports.setFragmentAsMoveChange = exports.setFragmentAsWrapChange = exports.setFragmentAsInserted = void 0;
36
+ exports.setFragmentAsInserted = setFragmentAsInserted;
37
+ exports.setFragmentAsWrapChange = setFragmentAsWrapChange;
38
+ exports.setFragmentAsMoveChange = setFragmentAsMoveChange;
39
+ exports.setFragmentAsNodeSplit = setFragmentAsNodeSplit;
27
40
  const prosemirror_model_1 = require("prosemirror-model");
28
41
  const change_1 = require("../types/change");
29
42
  const logger_1 = require("../utils/logger");
@@ -75,7 +88,6 @@ function setFragmentAsInserted(inserted, insertAttrs, schema) {
75
88
  const updatedInserted = loopContentAndMergeText(inserted, insertAttrs, schema);
76
89
  return updatedInserted.length === 0 ? prosemirror_model_1.Fragment.empty : prosemirror_model_1.Fragment.fromArray(updatedInserted);
77
90
  }
78
- exports.setFragmentAsInserted = setFragmentAsInserted;
79
91
  function setFragmentAsWrapChange(inserted, attrs, schema) {
80
92
  const content = [];
81
93
  inserted.forEach((node) => {
@@ -83,15 +95,13 @@ function setFragmentAsWrapChange(inserted, attrs, schema) {
83
95
  });
84
96
  return prosemirror_model_1.Fragment.from(content);
85
97
  }
86
- exports.setFragmentAsWrapChange = setFragmentAsWrapChange;
87
- function setFragmentAsMoveChange(fragment, attrs) {
98
+ function setFragmentAsMoveChange(fragment, moveAttrs) {
88
99
  const content = [];
89
100
  fragment.forEach((node) => {
90
- content.push(node.type.create(Object.assign(Object.assign({}, node.attrs), { dataTracked: [(0, nodeHelpers_1.addTrackIdIfDoesntExist)(trackUtils.createNewMoveAttrs(attrs))] }), node.content, node.marks));
101
+ content.push(node.type.create(Object.assign(Object.assign({}, node.attrs), { dataTracked: [(0, nodeHelpers_1.addTrackIdIfDoesntExist)(moveAttrs)] }), node.content, node.marks));
91
102
  });
92
103
  return prosemirror_model_1.Fragment.from(content);
93
104
  }
94
- exports.setFragmentAsMoveChange = setFragmentAsMoveChange;
95
105
  function setFragmentAsNodeSplit($pos, newTr, inserted, attrs) {
96
106
  const lastChild = inserted.lastChild;
97
107
  const referenceId = (0, uuidv4_1.uuidv4)();
@@ -114,4 +124,3 @@ function setFragmentAsNodeSplit($pos, newTr, inserted, attrs) {
114
124
  }
115
125
  return inserted;
116
126
  }
117
- exports.setFragmentAsNodeSplit = setFragmentAsNodeSplit;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.splitSliceIntoMergedParts = void 0;
3
+ exports.splitSliceIntoMergedParts = splitSliceIntoMergedParts;
4
4
  const prosemirror_model_1 = require("prosemirror-model");
5
5
  function getMergedNode(node, currentDepth, depth, first) {
6
6
  if (currentDepth === depth) {
@@ -52,4 +52,3 @@ function splitSliceIntoMergedParts(insertSlice, mergeEqualSides = false) {
52
52
  lastMergedNode,
53
53
  };
54
54
  }
55
- exports.splitSliceIntoMergedParts = splitSliceIntoMergedParts;
package/dist/cjs/index.js CHANGED
@@ -15,23 +15,35 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
39
+ exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.TrackChangesAction = exports.setAction = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
30
40
  var plugin_1 = require("./plugin");
31
41
  Object.defineProperty(exports, "trackChangesPluginKey", { enumerable: true, get: function () { return plugin_1.trackChangesPluginKey; } });
32
42
  Object.defineProperty(exports, "trackChangesPlugin", { enumerable: true, get: function () { return plugin_1.trackChangesPlugin; } });
33
43
  var actions_1 = require("./actions");
34
44
  Object.defineProperty(exports, "skipTracking", { enumerable: true, get: function () { return actions_1.skipTracking; } });
45
+ Object.defineProperty(exports, "setAction", { enumerable: true, get: function () { return actions_1.setAction; } });
46
+ Object.defineProperty(exports, "TrackChangesAction", { enumerable: true, get: function () { return actions_1.TrackChangesAction; } });
35
47
  exports.trackCommands = __importStar(require("./commands"));
36
48
  var logger_1 = require("./utils/logger");
37
49
  Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return logger_1.enableDebug; } });
@@ -15,15 +15,25 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.deleteAndMergeSplitNodes = void 0;
36
+ exports.deleteAndMergeSplitNodes = deleteAndMergeSplitNodes;
27
37
  const prosemirror_model_1 = require("prosemirror-model");
28
38
  const setFragmentAsInserted_1 = require("../compute/setFragmentAsInserted");
29
39
  const splitSliceIntoMergedParts_1 = require("../compute/splitSliceIntoMergedParts");
@@ -109,4 +119,3 @@ function deleteAndMergeSplitNodes(from, to, gap, startDoc, newTr, schema, trackA
109
119
  steps,
110
120
  };
111
121
  }
112
- exports.deleteAndMergeSplitNodes = deleteAndMergeSplitNodes;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteOrSetNodeDeleted = exports.deleteNode = void 0;
3
+ exports.deleteNode = deleteNode;
4
+ exports.deleteOrSetNodeDeleted = deleteOrSetNodeDeleted;
4
5
  const prosemirror_model_1 = require("prosemirror-model");
5
6
  const nodeHelpers_1 = require("../compute/nodeHelpers");
6
7
  const change_1 = require("../types/change");
@@ -17,12 +18,12 @@ function deleteNode(node, pos, tr) {
17
18
  return tr.delete(pos, pos + node.nodeSize);
18
19
  }
19
20
  }
20
- exports.deleteNode = deleteNode;
21
21
  function deleteOrSetNodeDeleted(node, pos, newTr, deleteAttrs) {
22
22
  const dataTracked = (0, nodeHelpers_1.getBlockInlineTrackedData)(node);
23
23
  const inserted = dataTracked === null || dataTracked === void 0 ? void 0 : dataTracked.find((d) => (d.operation === change_1.CHANGE_OPERATION.insert || d.operation === change_1.CHANGE_OPERATION.wrap_with_node) &&
24
24
  (d.status === change_1.CHANGE_STATUS.pending || d.status === change_1.CHANGE_STATUS.accepted));
25
25
  const updated = dataTracked === null || dataTracked === void 0 ? void 0 : dataTracked.find((d) => d.operation === change_1.CHANGE_OPERATION.set_node_attributes || d.operation === change_1.CHANGE_OPERATION.reference);
26
+ const moved = dataTracked === null || dataTracked === void 0 ? void 0 : dataTracked.find((d) => d.operation === change_1.CHANGE_OPERATION.move && d.status === change_1.CHANGE_STATUS.pending);
26
27
  if (inserted) {
27
28
  return deleteNode(node, pos, newTr);
28
29
  }
@@ -35,6 +36,5 @@ function deleteOrSetNodeDeleted(node, pos, newTr, deleteAttrs) {
35
36
  return;
36
37
  }
37
38
  const newDeleted = (0, nodeHelpers_1.addTrackIdIfDoesntExist)(deleteAttrs);
38
- newTr.setNodeMarkup(pos, undefined, Object.assign(Object.assign({}, node.attrs), { dataTracked: updated ? [newDeleted, updated] : [newDeleted] }), node.marks);
39
+ newTr.setNodeMarkup(pos, undefined, Object.assign(Object.assign({}, node.attrs), { dataTracked: updated ? [newDeleted, updated] : moved ? [newDeleted, moved] : [newDeleted] }), node.marks);
39
40
  }
40
- exports.deleteOrSetNodeDeleted = deleteOrSetNodeDeleted;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteTextIfInserted = void 0;
3
+ exports.deleteTextIfInserted = deleteTextIfInserted;
4
4
  const prosemirror_model_1 = require("prosemirror-model");
5
5
  const nodeHelpers_1 = require("../compute/nodeHelpers");
6
6
  function deleteTextIfInserted(node, pos, newTr, schema, deleteAttrs, from, to) {
@@ -26,4 +26,3 @@ function deleteTextIfInserted(node, pos, newTr, schema, deleteAttrs, from, to) {
26
26
  return toEndOfMark;
27
27
  }
28
28
  }
29
- exports.deleteTextIfInserted = deleteTextIfInserted;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeNode = void 0;
3
+ exports.mergeNode = mergeNode;
4
4
  const prosemirror_model_1 = require("prosemirror-model");
5
5
  const prosemirror_transform_1 = require("prosemirror-transform");
6
6
  function mergeNode(node, pos, tr) {
@@ -18,4 +18,3 @@ function mergeNode(node, pos, tr) {
18
18
  }
19
19
  return undefined;
20
20
  }
21
- exports.mergeNode = mergeNode;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeTrackedMarks = void 0;
3
+ exports.mergeTrackedMarks = mergeTrackedMarks;
4
4
  const nodeHelpers_1 = require("../compute/nodeHelpers");
5
5
  const uuidv4_1 = require("../utils/uuidv4");
6
6
  const assignId = (attrs, leftDataTracked, rightDataTracked) => {
@@ -29,4 +29,3 @@ function mergeTrackedMarks(pos, doc, newTr, schema) {
29
29
  const toEndOfMark = pos + nodeAfter.nodeSize;
30
30
  newTr.addMark(fromStartOfMark, toEndOfMark, leftMark.type.create(Object.assign(Object.assign({}, leftMark.attrs), { dataTracked: assignId(dataTracked, leftDataTracked, rightDataTracked) })));
31
31
  }
32
- exports.mergeTrackedMarks = mergeTrackedMarks;