@manuscripts/track-changes-plugin 1.7.6 → 1.7.8

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.
@@ -30,7 +30,10 @@ class ChangeSet {
30
30
  });
31
31
  }
32
32
  get invalidChanges() {
33
- return __classPrivateFieldGet(this, _ChangeSet_changes, "f").filter((c) => !this.changes.find((cc) => c.id === cc.id));
33
+ const invalid = __classPrivateFieldGet(this, _ChangeSet_changes, "f").filter((c) => {
34
+ return !this.changes.includes(c);
35
+ });
36
+ return invalid;
34
37
  }
35
38
  get changeTree() {
36
39
  const rootNodes = [];
@@ -6,10 +6,11 @@ const uuidv4_1 = require("../utils/uuidv4");
6
6
  const updateChangeAttrs_1 = require("./updateChangeAttrs");
7
7
  function fixInconsistentChanges(changeSet, currentUserID, newTr, schema) {
8
8
  const iteratedIds = new Set();
9
+ const validIds = new Set(changeSet.changes.map((c) => c.id));
9
10
  let changed = false;
10
11
  changeSet.invalidChanges.forEach((c) => {
11
12
  const { id, authorID, operation, reviewedByID, status, createdAt, statusUpdateAt, updatedAt } = c.dataTracked;
12
- const newAttrs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ((!id || iteratedIds.has(id) || id.length === 0) && { id: (0, uuidv4_1.uuidv4)() })), (!authorID && { authorID: currentUserID })), (!reviewedByID && { reviewedByID: null })), (!status && { status: change_1.CHANGE_STATUS.pending })), (!createdAt && { createdAt: Date.now() })), (!updatedAt && { updatedAt: Date.now() })), (!statusUpdateAt && { statusUpdateAt: 0 }));
13
+ const newAttrs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ((!id || iteratedIds.has(id) || validIds.has(id) || id.length === 0) && { id: (0, uuidv4_1.uuidv4)() })), (!authorID && { authorID: currentUserID })), (!reviewedByID && { reviewedByID: null })), (!status && { status: change_1.CHANGE_STATUS.pending })), (!createdAt && { createdAt: Date.now() })), (!updatedAt && { updatedAt: Date.now() })), (!statusUpdateAt && { statusUpdateAt: 0 }));
13
14
  if (Object.keys(newAttrs).length > 0) {
14
15
  (0, updateChangeAttrs_1.updateChangeAttrs)(newTr, c, Object.assign(Object.assign({}, c.dataTracked), newAttrs), schema);
15
16
  changed = true;
@@ -23,7 +23,7 @@ const trackTransaction_1 = require("./steps/trackTransaction");
23
23
  const track_1 = require("./types/track");
24
24
  const logger_1 = require("./utils/logger");
25
25
  exports.trackChangesPluginKey = new prosemirror_state_1.PluginKey('track-changes');
26
- const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) => {
26
+ const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous', initialStatus: track_1.TrackChangesStatus.enabled }) => {
27
27
  const { userID, debug, skipTrsWithMetas = [] } = opts;
28
28
  let editorView;
29
29
  if (debug) {
@@ -40,7 +40,7 @@ const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) => {
40
40
  state: {
41
41
  init(_config, state) {
42
42
  return {
43
- status: track_1.TrackChangesStatus.enabled,
43
+ status: opts.initialStatus || track_1.TrackChangesStatus.enabled,
44
44
  userID,
45
45
  changeSet: (0, findChanges_1.findChanges)(state),
46
46
  };
@@ -82,6 +82,12 @@ const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) => {
82
82
  trs.forEach((tr) => {
83
83
  const wasAppended = tr.getMeta('appendedTransaction');
84
84
  const skipMetaUsed = skipTrsWithMetas.some((m) => tr.getMeta(m) || (wasAppended === null || wasAppended === void 0 ? void 0 : wasAppended.getMeta(m)));
85
+ const collabRebased = tr.getMeta('rebased');
86
+ if (collabRebased !== undefined) {
87
+ (0, actions_1.setAction)(createdTr, actions_1.TrackChangesAction.refreshChanges, true);
88
+ docChanged = true;
89
+ return;
90
+ }
85
91
  const skipTrackUsed = (0, actions_1.getAction)(tr, actions_1.TrackChangesAction.skipTrack) ||
86
92
  (wasAppended && (0, actions_1.getAction)(wasAppended, actions_1.TrackChangesAction.skipTrack));
87
93
  if (tr.docChanged &&
@@ -27,7 +27,10 @@ export class ChangeSet {
27
27
  });
28
28
  }
29
29
  get invalidChanges() {
30
- return __classPrivateFieldGet(this, _ChangeSet_changes, "f").filter((c) => !this.changes.find((cc) => c.id === cc.id));
30
+ const invalid = __classPrivateFieldGet(this, _ChangeSet_changes, "f").filter((c) => {
31
+ return !this.changes.includes(c);
32
+ });
33
+ return invalid;
31
34
  }
32
35
  get changeTree() {
33
36
  const rootNodes = [];
@@ -3,10 +3,11 @@ import { uuidv4 } from '../utils/uuidv4';
3
3
  import { updateChangeAttrs } from './updateChangeAttrs';
4
4
  export function fixInconsistentChanges(changeSet, currentUserID, newTr, schema) {
5
5
  const iteratedIds = new Set();
6
+ const validIds = new Set(changeSet.changes.map((c) => c.id));
6
7
  let changed = false;
7
8
  changeSet.invalidChanges.forEach((c) => {
8
9
  const { id, authorID, operation, reviewedByID, status, createdAt, statusUpdateAt, updatedAt } = c.dataTracked;
9
- const newAttrs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ((!id || iteratedIds.has(id) || id.length === 0) && { id: uuidv4() })), (!authorID && { authorID: currentUserID })), (!reviewedByID && { reviewedByID: null })), (!status && { status: CHANGE_STATUS.pending })), (!createdAt && { createdAt: Date.now() })), (!updatedAt && { updatedAt: Date.now() })), (!statusUpdateAt && { statusUpdateAt: 0 }));
10
+ const newAttrs = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ((!id || iteratedIds.has(id) || validIds.has(id) || id.length === 0) && { id: uuidv4() })), (!authorID && { authorID: currentUserID })), (!reviewedByID && { reviewedByID: null })), (!status && { status: CHANGE_STATUS.pending })), (!createdAt && { createdAt: Date.now() })), (!updatedAt && { updatedAt: Date.now() })), (!statusUpdateAt && { statusUpdateAt: 0 }));
10
11
  if (Object.keys(newAttrs).length > 0) {
11
12
  updateChangeAttrs(newTr, c, Object.assign(Object.assign({}, c.dataTracked), newAttrs), schema);
12
13
  changed = true;
package/dist/es/plugin.js CHANGED
@@ -20,7 +20,7 @@ import { trackTransaction } from './steps/trackTransaction';
20
20
  import { TrackChangesStatus } from './types/track';
21
21
  import { enableDebug, log } from './utils/logger';
22
22
  export const trackChangesPluginKey = new PluginKey('track-changes');
23
- export const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) => {
23
+ export const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous', initialStatus: TrackChangesStatus.enabled }) => {
24
24
  const { userID, debug, skipTrsWithMetas = [] } = opts;
25
25
  let editorView;
26
26
  if (debug) {
@@ -37,7 +37,7 @@ export const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) =>
37
37
  state: {
38
38
  init(_config, state) {
39
39
  return {
40
- status: TrackChangesStatus.enabled,
40
+ status: opts.initialStatus || TrackChangesStatus.enabled,
41
41
  userID,
42
42
  changeSet: findChanges(state),
43
43
  };
@@ -79,6 +79,12 @@ export const trackChangesPlugin = (opts = { userID: 'anonymous:Anonymous' }) =>
79
79
  trs.forEach((tr) => {
80
80
  const wasAppended = tr.getMeta('appendedTransaction');
81
81
  const skipMetaUsed = skipTrsWithMetas.some((m) => tr.getMeta(m) || (wasAppended === null || wasAppended === void 0 ? void 0 : wasAppended.getMeta(m)));
82
+ const collabRebased = tr.getMeta('rebased');
83
+ if (collabRebased !== undefined) {
84
+ setAction(createdTr, TrackChangesAction.refreshChanges, true);
85
+ docChanged = true;
86
+ return;
87
+ }
82
88
  const skipTrackUsed = getAction(tr, TrackChangesAction.skipTrack) ||
83
89
  (wasAppended && getAction(wasAppended, TrackChangesAction.skipTrack));
84
90
  if (tr.docChanged &&
@@ -5,6 +5,7 @@ export interface TrackChangesOptions {
5
5
  debug?: boolean;
6
6
  userID: string;
7
7
  skipTrsWithMetas?: (PluginKey | string)[];
8
+ initialStatus?: TrackChangesStatus;
8
9
  }
9
10
  export interface TrackChangesState {
10
11
  status: TrackChangesStatus;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manuscripts/track-changes-plugin",
3
- "version": "1.7.6",
3
+ "version": "1.7.8",
4
4
  "author": "Atypon Systems LLC",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Atypon-OpenSource/manuscripts-track-changes-plugin",