@manuscripts/track-changes-plugin 1.7.15-LEAN-3643.0 → 1.7.15

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.skipTracking = exports.setAction = exports.getAction = exports.TrackChangesAction = void 0;
3
+ exports.skipTracking = exports.setAction = exports.getAction = exports.hasAction = exports.TrackChangesAction = void 0;
4
4
  var TrackChangesAction;
5
5
  (function (TrackChangesAction) {
6
6
  TrackChangesAction["skipTrack"] = "track-changes-skip-tracking";
@@ -11,6 +11,10 @@ var TrackChangesAction;
11
11
  TrackChangesAction["applyAndRemoveChanges"] = "track-changes-apply-remove-changes";
12
12
  TrackChangesAction["updateMetaNode"] = "track-changes-update-meta-node";
13
13
  })(TrackChangesAction = exports.TrackChangesAction || (exports.TrackChangesAction = {}));
14
+ function hasAction(tr) {
15
+ return Object.values(TrackChangesAction).some((action) => !!tr.getMeta(action));
16
+ }
17
+ exports.hasAction = hasAction;
14
18
  function getAction(tr, action) {
15
19
  return tr.getMeta(action);
16
20
  }
@@ -46,6 +46,9 @@ const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous', initialStatu
46
46
  };
47
47
  },
48
48
  apply(tr, pluginState, _oldState, newState) {
49
+ if (!tr.docChanged && !(0, actions_1.hasAction)(tr)) {
50
+ return pluginState;
51
+ }
49
52
  const setUserID = (0, actions_1.getAction)(tr, actions_1.TrackChangesAction.setUserID);
50
53
  const setStatus = (0, actions_1.getAction)(tr, actions_1.TrackChangesAction.setPluginStatus);
51
54
  if (setUserID) {
@@ -30,16 +30,16 @@ const setFragmentAsInserted_1 = require("../compute/setFragmentAsInserted");
30
30
  const deleteAndMergeSplitNodes_1 = require("../mutate/deleteAndMergeSplitNodes");
31
31
  const logger_1 = require("../utils/logger");
32
32
  const trackUtils = __importStar(require("../utils/track-utils"));
33
- function trackReplaceAroundStep(step, oldState, tr, newTr, attrs, currentStepDoc) {
33
+ function trackReplaceAroundStep(step, oldState, tr, newTr, attrs) {
34
34
  logger_1.log.info('###### ReplaceAroundStep ######');
35
35
  const { from, to, gapFrom, gapTo, insert, slice, structure, } = step;
36
- const newStep = step.invert(currentStepDoc);
36
+ const newStep = step.invert(oldState.doc);
37
37
  const stepResult = newTr.maybeStep(newStep);
38
38
  if (stepResult.failed) {
39
39
  logger_1.log.error(`inverting ReplaceAroundStep failed: "${stepResult.failed}"`, newStep);
40
40
  return [];
41
41
  }
42
- const gap = currentStepDoc.slice(gapFrom, gapTo);
42
+ const gap = oldState.doc.slice(gapFrom, gapTo);
43
43
  logger_1.log.info('RETAINED GAP CONTENT', gap);
44
44
  const { sliceWasSplit, newSliceContent, steps: deleteSteps, } = (0, deleteAndMergeSplitNodes_1.deleteAndMergeSplitNodes)(from, to, { start: gapFrom, end: gapTo }, newTr.doc, newTr, oldState.schema, attrs, slice);
45
45
  const steps = deleteSteps;
@@ -71,7 +71,7 @@ function trackTransaction(tr, oldState, newTr, authorID) {
71
71
  }
72
72
  }
73
73
  else if (step instanceof prosemirror_transform_1.ReplaceAroundStep) {
74
- let steps = (0, trackReplaceAroundStep_1.trackReplaceAroundStep)(step, oldState, tr, newTr, emptyAttrs, tr.docs[i]);
74
+ let steps = (0, trackReplaceAroundStep_1.trackReplaceAroundStep)(step, oldState, tr, newTr, emptyAttrs);
75
75
  const deleted = steps.filter((s) => s.type !== 'insert-slice');
76
76
  const inserted = steps.filter((s) => s.type === 'insert-slice');
77
77
  logger_1.log.info('INSERT STEPS: ', inserted);
@@ -8,6 +8,9 @@ export var TrackChangesAction;
8
8
  TrackChangesAction["applyAndRemoveChanges"] = "track-changes-apply-remove-changes";
9
9
  TrackChangesAction["updateMetaNode"] = "track-changes-update-meta-node";
10
10
  })(TrackChangesAction || (TrackChangesAction = {}));
11
+ export function hasAction(tr) {
12
+ return Object.values(TrackChangesAction).some((action) => !!tr.getMeta(action));
13
+ }
11
14
  export function getAction(tr, action) {
12
15
  return tr.getMeta(action);
13
16
  }
package/dist/es/plugin.js CHANGED
@@ -10,7 +10,7 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import { Plugin, PluginKey } from 'prosemirror-state';
13
- import { getAction, setAction, TrackChangesAction } from './actions';
13
+ import { getAction, hasAction, setAction, TrackChangesAction } from './actions';
14
14
  import { applyAcceptedRejectedChanges } from './changes/applyChanges';
15
15
  import { findChanges } from './changes/findChanges';
16
16
  import { fixInconsistentChanges } from './changes/fixInconsistentChanges';
@@ -43,6 +43,9 @@ export const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous', initi
43
43
  };
44
44
  },
45
45
  apply(tr, pluginState, _oldState, newState) {
46
+ if (!tr.docChanged && !hasAction(tr)) {
47
+ return pluginState;
48
+ }
46
49
  const setUserID = getAction(tr, TrackChangesAction.setUserID);
47
50
  const setStatus = getAction(tr, TrackChangesAction.setPluginStatus);
48
51
  if (setUserID) {
@@ -4,16 +4,16 @@ import { setFragmentAsInserted } from '../compute/setFragmentAsInserted';
4
4
  import { deleteAndMergeSplitNodes } from '../mutate/deleteAndMergeSplitNodes';
5
5
  import { log } from '../utils/logger';
6
6
  import * as trackUtils from '../utils/track-utils';
7
- export function trackReplaceAroundStep(step, oldState, tr, newTr, attrs, currentStepDoc) {
7
+ export function trackReplaceAroundStep(step, oldState, tr, newTr, attrs) {
8
8
  log.info('###### ReplaceAroundStep ######');
9
9
  const { from, to, gapFrom, gapTo, insert, slice, structure, } = step;
10
- const newStep = step.invert(currentStepDoc);
10
+ const newStep = step.invert(oldState.doc);
11
11
  const stepResult = newTr.maybeStep(newStep);
12
12
  if (stepResult.failed) {
13
13
  log.error(`inverting ReplaceAroundStep failed: "${stepResult.failed}"`, newStep);
14
14
  return [];
15
15
  }
16
- const gap = currentStepDoc.slice(gapFrom, gapTo);
16
+ const gap = oldState.doc.slice(gapFrom, gapTo);
17
17
  log.info('RETAINED GAP CONTENT', gap);
18
18
  const { sliceWasSplit, newSliceContent, steps: deleteSteps, } = deleteAndMergeSplitNodes(from, to, { start: gapFrom, end: gapTo }, newTr.doc, newTr, oldState.schema, attrs, slice);
19
19
  const steps = deleteSteps;
@@ -68,7 +68,7 @@ export function trackTransaction(tr, oldState, newTr, authorID) {
68
68
  }
69
69
  }
70
70
  else if (step instanceof ReplaceAroundStep) {
71
- let steps = trackReplaceAroundStep(step, oldState, tr, newTr, emptyAttrs, tr.docs[i]);
71
+ let steps = trackReplaceAroundStep(step, oldState, tr, newTr, emptyAttrs);
72
72
  const deleted = steps.filter((s) => s.type !== 'insert-slice');
73
73
  const inserted = steps.filter((s) => s.type === 'insert-slice');
74
74
  log.info('INSERT STEPS: ', inserted);
@@ -22,6 +22,7 @@ export type TrackChangesActionParams = {
22
22
  [TrackChangesAction.applyAndRemoveChanges]: boolean;
23
23
  [TrackChangesAction.updateMetaNode]: boolean;
24
24
  };
25
+ export declare function hasAction(tr: Transaction): boolean;
25
26
  export declare function getAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K): TrackChangesActionParams[K] | undefined;
26
27
  export declare function setAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K, payload: TrackChangesActionParams[K]): Transaction;
27
28
  export declare const skipTracking: (tr: Transaction) => Transaction;
@@ -1,6 +1,5 @@
1
- import { Node as PMNode } from 'prosemirror-model';
2
1
  import type { EditorState, Transaction } from 'prosemirror-state';
3
2
  import { ReplaceAroundStep } from 'prosemirror-transform';
4
3
  import { ChangeStep } from '../types/step';
5
4
  import { NewEmptyAttrs } from '../types/track';
6
- export declare function trackReplaceAroundStep(step: ReplaceAroundStep, oldState: EditorState, tr: Transaction, newTr: Transaction, attrs: NewEmptyAttrs, currentStepDoc: PMNode): ChangeStep[];
5
+ export declare function trackReplaceAroundStep(step: ReplaceAroundStep, oldState: EditorState, tr: Transaction, newTr: Transaction, attrs: NewEmptyAttrs): ChangeStep[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manuscripts/track-changes-plugin",
3
- "version": "1.7.15-LEAN-3643.0",
3
+ "version": "1.7.15",
4
4
  "author": "Atypon Systems LLC",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Atypon-OpenSource/manuscripts-track-changes-plugin",
@@ -69,4 +69,4 @@
69
69
  "resolutions": {
70
70
  "eslint-mdx": "2.0.5"
71
71
  }
72
- }
72
+ }