@manuscripts/track-changes-plugin 1.10.4 → 1.10.5-LEAN-4160.0

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.
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _ChangeSet_instances, _ChangeSet_changes, _ChangeSet_isSameNodeChange, _ChangeSet_isNotPendingOrDeleted;
13
+ var _ChangeSet_instances, _ChangeSet_changes, _ChangeSet_isSameNodeChange, _ChangeSet_isNotPendingOrDeleted, _ChangeSet_createMoveChange;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ChangeSet = void 0;
16
16
  const change_1 = require("./types/change");
@@ -79,6 +79,7 @@ class ChangeSet {
79
79
  get groupChanges() {
80
80
  const rootNodes = [];
81
81
  let currentInlineChange;
82
+ const compositeChangesMap = new Map();
82
83
  this.changeTree.map((change, index) => {
83
84
  if (this.canJoinAdjacentInlineChanges(change, index)) {
84
85
  currentInlineChange = currentInlineChange ? [...currentInlineChange, change] : [change];
@@ -89,6 +90,16 @@ class ChangeSet {
89
90
  currentInlineChange = undefined;
90
91
  return;
91
92
  }
93
+ if (change.dataTracked.movedChangeId) {
94
+ const moveChange = compositeChangesMap.get(change.dataTracked.movedChangeId);
95
+ if (!moveChange) {
96
+ compositeChangesMap.set(change.dataTracked.movedChangeId, __classPrivateFieldGet(this, _ChangeSet_instances, "m", _ChangeSet_createMoveChange).call(this, change));
97
+ }
98
+ else {
99
+ rootNodes.push([Object.assign(Object.assign({}, moveChange), { children: [...moveChange.children, change] })]);
100
+ }
101
+ return;
102
+ }
92
103
  rootNodes.push([change]);
93
104
  });
94
105
  return rootNodes.filter((changes) => changes.filter((c) => c.dataTracked.operation !== change_1.CHANGE_OPERATION.reference).length);
@@ -198,6 +209,9 @@ class ChangeSet {
198
209
  static isReferenceChange(change) {
199
210
  return change.type === 'reference-change';
200
211
  }
212
+ static isMoveChange(change) {
213
+ return change.type === 'move-change';
214
+ }
201
215
  }
202
216
  exports.ChangeSet = ChangeSet;
203
217
  _ChangeSet_changes = new WeakMap(), _ChangeSet_instances = new WeakSet(), _ChangeSet_isSameNodeChange = function _ChangeSet_isSameNodeChange(currentChange, nextChange) {
@@ -205,4 +219,18 @@ _ChangeSet_changes = new WeakMap(), _ChangeSet_instances = new WeakSet(), _Chang
205
219
  }, _ChangeSet_isNotPendingOrDeleted = function _ChangeSet_isNotPendingOrDeleted(change) {
206
220
  return (change.dataTracked.operation !== change_1.CHANGE_OPERATION.delete &&
207
221
  change.dataTracked.status !== change_1.CHANGE_STATUS.pending);
222
+ }, _ChangeSet_createMoveChange = function _ChangeSet_createMoveChange(change) {
223
+ if (!ChangeSet.isNodeChange(change)) {
224
+ throw new Error('Expected NodeChange for move operation');
225
+ }
226
+ const node = change.node;
227
+ return {
228
+ id: change.dataTracked.movedChangeId,
229
+ type: 'move-change',
230
+ from: change.from,
231
+ to: change.to,
232
+ dataTracked: Object.assign(Object.assign({}, change.dataTracked), { operation: change_1.CHANGE_OPERATION.move }),
233
+ node,
234
+ children: [change],
235
+ };
208
236
  };
@@ -60,7 +60,6 @@ function trackReplaceStep(step, oldState, newTr, attrs, stepResult, currentStepD
60
60
  changeSteps.splice(changeSteps.indexOf(backSpacedText));
61
61
  }
62
62
  const textWasDeleted = !!changeSteps.length && !(fromA === fromB);
63
- console.log(textWasDeleted);
64
63
  if (!backSpacedText && newSliceContent.size > 0) {
65
64
  logger_1.log.info('newSliceContent', newSliceContent);
66
65
  let fragment = (0, setFragmentAsInserted_1.setFragmentAsInserted)(newSliceContent, trackUtils.createNewInsertAttrs(attrs), oldState.schema);
@@ -35,6 +35,9 @@ function trackTransaction(tr, oldState, newTr, authorID) {
35
35
  let iters = 0;
36
36
  logger_1.log.info('ORIGINAL transaction', tr);
37
37
  let trContext = {};
38
+ if (tr.getMeta('NodeMove')) {
39
+ emptyAttrs.movedChangeId = (0, uuidv4_1.uuidv4)();
40
+ }
38
41
  for (let i = tr.steps.length - 1; i >= 0; i--) {
39
42
  const step = tr.steps[i];
40
43
  logger_1.log.info('transaction step', step);
@@ -24,6 +24,7 @@ var CHANGE_OPERATION;
24
24
  CHANGE_OPERATION["wrap_with_node"] = "wrap_with_node";
25
25
  CHANGE_OPERATION["node_split"] = "node_split";
26
26
  CHANGE_OPERATION["reference"] = "reference";
27
+ CHANGE_OPERATION["move"] = "move";
27
28
  })(CHANGE_OPERATION = exports.CHANGE_OPERATION || (exports.CHANGE_OPERATION = {}));
28
29
  var CHANGE_STATUS;
29
30
  (function (CHANGE_STATUS) {
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _ChangeSet_instances, _ChangeSet_changes, _ChangeSet_isSameNodeChange, _ChangeSet_isNotPendingOrDeleted;
12
+ var _ChangeSet_instances, _ChangeSet_changes, _ChangeSet_isSameNodeChange, _ChangeSet_isNotPendingOrDeleted, _ChangeSet_createMoveChange;
13
13
  import { CHANGE_OPERATION, CHANGE_STATUS, } from './types/change';
14
14
  import { log } from './utils/logger';
15
15
  export class ChangeSet {
@@ -76,6 +76,7 @@ export class ChangeSet {
76
76
  get groupChanges() {
77
77
  const rootNodes = [];
78
78
  let currentInlineChange;
79
+ const compositeChangesMap = new Map();
79
80
  this.changeTree.map((change, index) => {
80
81
  if (this.canJoinAdjacentInlineChanges(change, index)) {
81
82
  currentInlineChange = currentInlineChange ? [...currentInlineChange, change] : [change];
@@ -86,6 +87,16 @@ export class ChangeSet {
86
87
  currentInlineChange = undefined;
87
88
  return;
88
89
  }
90
+ if (change.dataTracked.movedChangeId) {
91
+ const moveChange = compositeChangesMap.get(change.dataTracked.movedChangeId);
92
+ if (!moveChange) {
93
+ compositeChangesMap.set(change.dataTracked.movedChangeId, __classPrivateFieldGet(this, _ChangeSet_instances, "m", _ChangeSet_createMoveChange).call(this, change));
94
+ }
95
+ else {
96
+ rootNodes.push([Object.assign(Object.assign({}, moveChange), { children: [...moveChange.children, change] })]);
97
+ }
98
+ return;
99
+ }
89
100
  rootNodes.push([change]);
90
101
  });
91
102
  return rootNodes.filter((changes) => changes.filter((c) => c.dataTracked.operation !== CHANGE_OPERATION.reference).length);
@@ -195,10 +206,27 @@ export class ChangeSet {
195
206
  static isReferenceChange(change) {
196
207
  return change.type === 'reference-change';
197
208
  }
209
+ static isMoveChange(change) {
210
+ return change.type === 'move-change';
211
+ }
198
212
  }
199
213
  _ChangeSet_changes = new WeakMap(), _ChangeSet_instances = new WeakSet(), _ChangeSet_isSameNodeChange = function _ChangeSet_isSameNodeChange(currentChange, nextChange) {
200
214
  return currentChange.from === nextChange.from && currentChange.to === nextChange.to;
201
215
  }, _ChangeSet_isNotPendingOrDeleted = function _ChangeSet_isNotPendingOrDeleted(change) {
202
216
  return (change.dataTracked.operation !== CHANGE_OPERATION.delete &&
203
217
  change.dataTracked.status !== CHANGE_STATUS.pending);
218
+ }, _ChangeSet_createMoveChange = function _ChangeSet_createMoveChange(change) {
219
+ if (!ChangeSet.isNodeChange(change)) {
220
+ throw new Error('Expected NodeChange for move operation');
221
+ }
222
+ const node = change.node;
223
+ return {
224
+ id: change.dataTracked.movedChangeId,
225
+ type: 'move-change',
226
+ from: change.from,
227
+ to: change.to,
228
+ dataTracked: Object.assign(Object.assign({}, change.dataTracked), { operation: CHANGE_OPERATION.move }),
229
+ node,
230
+ children: [change],
231
+ };
204
232
  };
@@ -34,7 +34,6 @@ export function trackReplaceStep(step, oldState, newTr, attrs, stepResult, curre
34
34
  changeSteps.splice(changeSteps.indexOf(backSpacedText));
35
35
  }
36
36
  const textWasDeleted = !!changeSteps.length && !(fromA === fromB);
37
- console.log(textWasDeleted);
38
37
  if (!backSpacedText && newSliceContent.size > 0) {
39
38
  log.info('newSliceContent', newSliceContent);
40
39
  let fragment = setFragmentAsInserted(newSliceContent, trackUtils.createNewInsertAttrs(attrs), oldState.schema);
@@ -29,6 +29,9 @@ export function trackTransaction(tr, oldState, newTr, authorID) {
29
29
  let iters = 0;
30
30
  log.info('ORIGINAL transaction', tr);
31
31
  let trContext = {};
32
+ if (tr.getMeta('NodeMove')) {
33
+ emptyAttrs.movedChangeId = uuidv4();
34
+ }
32
35
  for (let i = tr.steps.length - 1; i >= 0; i--) {
33
36
  const step = tr.steps[i];
34
37
  log.info('transaction step', step);
@@ -21,6 +21,7 @@ export var CHANGE_OPERATION;
21
21
  CHANGE_OPERATION["wrap_with_node"] = "wrap_with_node";
22
22
  CHANGE_OPERATION["node_split"] = "node_split";
23
23
  CHANGE_OPERATION["reference"] = "reference";
24
+ CHANGE_OPERATION["move"] = "move";
24
25
  })(CHANGE_OPERATION || (CHANGE_OPERATION = {}));
25
26
  export var CHANGE_STATUS;
26
27
  (function (CHANGE_STATUS) {
@@ -1,4 +1,4 @@
1
- import { IncompleteChange, NodeAttrChange, NodeChange, ReferenceChange, TextChange, TrackedAttrs, TrackedChange } from './types/change';
1
+ import { IncompleteChange, MoveChange, NodeAttrChange, NodeChange, ReferenceChange, TextChange, TrackedAttrs, TrackedChange } from './types/change';
2
2
  export declare class ChangeSet {
3
3
  #private;
4
4
  constructor(changes?: (TrackedChange | IncompleteChange)[]);
@@ -30,4 +30,5 @@ export declare class ChangeSet {
30
30
  static isNodeChange(change: TrackedChange): change is NodeChange;
31
31
  static isNodeAttrChange(change: TrackedChange): change is NodeAttrChange;
32
32
  static isReferenceChange(change: TrackedChange): change is ReferenceChange;
33
+ static isMoveChange(change: TrackedChange): change is MoveChange;
33
34
  }
@@ -20,7 +20,8 @@ export declare enum CHANGE_OPERATION {
20
20
  set_node_attributes = "set_attrs",
21
21
  wrap_with_node = "wrap_with_node",
22
22
  node_split = "node_split",
23
- reference = "reference"
23
+ reference = "reference",
24
+ move = "move"
24
25
  }
25
26
  export declare enum CHANGE_STATUS {
26
27
  accepted = "accepted",
@@ -36,6 +37,7 @@ type InsertDeleteAttrs = {
36
37
  statusUpdateAt: number;
37
38
  createdAt: number;
38
39
  updatedAt: number;
40
+ movedChangeId?: string;
39
41
  };
40
42
  export type UpdateAttrs = Omit<InsertDeleteAttrs, 'operation'> & {
41
43
  operation: CHANGE_OPERATION.set_node_attributes;
@@ -51,7 +53,10 @@ export type ReferenceAttrs = Omit<InsertDeleteAttrs, 'operation'> & {
51
53
  operation: CHANGE_OPERATION.reference;
52
54
  referenceId: string;
53
55
  };
54
- export type TrackedAttrs = InsertDeleteAttrs | UpdateAttrs | WrapAttrs | NodeSplitAttrs | ReferenceAttrs;
56
+ export type NodeMoveAttrs = Omit<InsertDeleteAttrs, 'operation'> & {
57
+ operation: CHANGE_OPERATION.move;
58
+ };
59
+ export type TrackedAttrs = InsertDeleteAttrs | UpdateAttrs | WrapAttrs | NodeSplitAttrs | ReferenceAttrs | NodeMoveAttrs;
55
60
  type Change = {
56
61
  id: string;
57
62
  from: number;
@@ -85,7 +90,12 @@ export type ReferenceChange = Change & {
85
90
  export type MarkChange = Change & {
86
91
  type: 'mark-change';
87
92
  };
88
- export type TrackedChange = TextChange | NodeChange | NodeAttrChange | WrapChange | ReferenceChange | MarkChange;
93
+ export type MoveChange = Change & {
94
+ type: 'move-change';
95
+ node: Node;
96
+ children: TrackedChange[];
97
+ };
98
+ export type TrackedChange = TextChange | NodeChange | NodeAttrChange | WrapChange | ReferenceChange | MoveChange | MarkChange;
89
99
  export type PartialChange<T extends TrackedChange> = Omit<T, 'dataTracked'> & {
90
100
  dataTracked: Partial<TrackedAttrs>;
91
101
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manuscripts/track-changes-plugin",
3
- "version": "1.10.4",
3
+ "version": "1.10.5-LEAN-4160.0",
4
4
  "author": "Atypon Systems LLC",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Atypon-OpenSource/manuscripts-track-changes-plugin",