@manuscripts/track-changes-plugin 2.3.12 → 2.3.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.
package/README.md CHANGED
@@ -28,7 +28,7 @@ ProseMirror plugin designed to track changes within a document, similar to the t
28
28
  Rejecting the change means reverting to the state of nodes or text or attributes before the change and discarding metadata about it.
29
29
  - History of edits (who, what, when) is supported only in the boundaries of dataTracked attributes metadata. The plugin doesn't provide Undo/Redo capabilities but perfectly compatible with default prosemirror-history plugin.
30
30
 
31
- ### How it works under the hood
31
+ ### How it works under the hood
32
32
 
33
33
  1. Transaction intercepted and decided upon if needs to be tracked or not. Done in appendTransaction method of the plugin. Besides explicit disabling there is a number of internal cases that disables tracking
34
34
  2. Each type of prosemirror change step type is processed by differently. **trackTransaction** function invokes a function for each of those, such as trackReplaceStep or trackReplaceAroundStep.
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isIndentationAction = exports.skipTracking = exports.TrackChangesAction = void 0;
3
+ exports.isIndentationAction = exports.skipSelect = exports.skipTracking = exports.TrackChangesAction = void 0;
4
4
  exports.hasAction = hasAction;
5
5
  exports.getAction = getAction;
6
6
  exports.setAction = setAction;
7
7
  var TrackChangesAction;
8
8
  (function (TrackChangesAction) {
9
+ TrackChangesAction["skipSelection"] = "track-changes-skip-selection";
9
10
  TrackChangesAction["skipTrack"] = "track-changes-skip-tracking";
10
11
  TrackChangesAction["setUserID"] = "track-changes-set-user-id";
11
12
  TrackChangesAction["setPluginStatus"] = "track-changes-set-track-status";
@@ -26,5 +27,7 @@ function setAction(tr, action, payload) {
26
27
  }
27
28
  const skipTracking = (tr) => setAction(tr, TrackChangesAction.skipTrack, true);
28
29
  exports.skipTracking = skipTracking;
30
+ const skipSelect = (tr) => setAction(tr, TrackChangesAction.skipSelection, true);
31
+ exports.skipSelect = skipSelect;
29
32
  const isIndentationAction = (action) => action === 'indent' || action === 'unindent';
30
33
  exports.isIndentationAction = isIndentationAction;
package/dist/cjs/index.js CHANGED
@@ -36,12 +36,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.TrackChangesAction = exports.setAction = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
39
+ exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.TrackChangesAction = exports.setAction = exports.skipSelect = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
40
40
  var plugin_1 = require("./plugin");
41
41
  Object.defineProperty(exports, "trackChangesPluginKey", { enumerable: true, get: function () { return plugin_1.trackChangesPluginKey; } });
42
42
  Object.defineProperty(exports, "trackChangesPlugin", { enumerable: true, get: function () { return plugin_1.trackChangesPlugin; } });
43
43
  var actions_1 = require("./actions");
44
44
  Object.defineProperty(exports, "skipTracking", { enumerable: true, get: function () { return actions_1.skipTracking; } });
45
+ Object.defineProperty(exports, "skipSelect", { enumerable: true, get: function () { return actions_1.skipSelect; } });
45
46
  Object.defineProperty(exports, "setAction", { enumerable: true, get: function () { return actions_1.setAction; } });
46
47
  Object.defineProperty(exports, "TrackChangesAction", { enumerable: true, get: function () { return actions_1.TrackChangesAction; } });
47
48
  exports.trackCommands = __importStar(require("./commands"));
@@ -20,10 +20,19 @@ exports.fixAndSetSelectionAfterTracking = fixAndSetSelectionAfterTracking;
20
20
  const prosemirror_state_1 = require("prosemirror-state");
21
21
  const prosemirror_transform_1 = require("prosemirror-transform");
22
22
  const structureChange_1 = require("../changeHelpers/structureChange");
23
+ const actions_1 = require("../actions");
23
24
  const getSelectionStaticConstructor = (sel) => Object.getPrototypeOf(sel).constructor;
24
25
  exports.getSelectionStaticConstructor = getSelectionStaticConstructor;
25
26
  function fixAndSetSelectionAfterTracking(newTr, oldTr, deletedNodeMapping, trContext) {
26
27
  const wasNodeSelection = oldTr.selection instanceof prosemirror_state_1.NodeSelection;
28
+ if ((0, actions_1.getAction)(oldTr, actions_1.TrackChangesAction.skipSelection)) {
29
+ if (oldTr.selection.to > oldTr.doc.nodeSize) {
30
+ const sel = (0, exports.getSelectionStaticConstructor)(oldTr.selection);
31
+ const near = sel.near(newTr.doc.resolve(oldTr.doc.nodeSize), -1);
32
+ newTr.setSelection(near);
33
+ }
34
+ return newTr;
35
+ }
27
36
  if (!wasNodeSelection && !oldTr.selectionSet && trContext.selectionPosFromInsertion) {
28
37
  const sel = (0, exports.getSelectionStaticConstructor)(oldTr.selection);
29
38
  const near = sel.near(newTr.doc.resolve(trContext.selectionPosFromInsertion), -1);
@@ -1,5 +1,6 @@
1
1
  export var TrackChangesAction;
2
2
  (function (TrackChangesAction) {
3
+ TrackChangesAction["skipSelection"] = "track-changes-skip-selection";
3
4
  TrackChangesAction["skipTrack"] = "track-changes-skip-tracking";
4
5
  TrackChangesAction["setUserID"] = "track-changes-set-user-id";
5
6
  TrackChangesAction["setPluginStatus"] = "track-changes-set-track-status";
@@ -19,4 +20,5 @@ export function setAction(tr, action, payload) {
19
20
  return tr.setMeta(action, payload);
20
21
  }
21
22
  export const skipTracking = (tr) => setAction(tr, TrackChangesAction.skipTrack, true);
23
+ export const skipSelect = (tr) => setAction(tr, TrackChangesAction.skipSelection, true);
22
24
  export const isIndentationAction = (action) => action === 'indent' || action === 'unindent';
package/dist/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { trackChangesPluginKey, trackChangesPlugin } from './plugin';
2
- export { skipTracking, setAction, TrackChangesAction } from './actions';
2
+ export { skipTracking, skipSelect, setAction, TrackChangesAction } from './actions';
3
3
  export * as trackCommands from './commands';
4
4
  export { enableDebug } from './utils/logger';
5
5
  export { ChangeSet } from './ChangeSet';
@@ -16,9 +16,18 @@
16
16
  import { NodeSelection as NodeSelectionClass, TextSelection } from 'prosemirror-state';
17
17
  import { Mapping, ReplaceStep } from 'prosemirror-transform';
18
18
  import { isStructuralChange } from '../changeHelpers/structureChange';
19
+ import { getAction, TrackChangesAction } from '../actions';
19
20
  export const getSelectionStaticConstructor = (sel) => Object.getPrototypeOf(sel).constructor;
20
21
  export function fixAndSetSelectionAfterTracking(newTr, oldTr, deletedNodeMapping, trContext) {
21
22
  const wasNodeSelection = oldTr.selection instanceof NodeSelectionClass;
23
+ if (getAction(oldTr, TrackChangesAction.skipSelection)) {
24
+ if (oldTr.selection.to > oldTr.doc.nodeSize) {
25
+ const sel = getSelectionStaticConstructor(oldTr.selection);
26
+ const near = sel.near(newTr.doc.resolve(oldTr.doc.nodeSize), -1);
27
+ newTr.setSelection(near);
28
+ }
29
+ return newTr;
30
+ }
22
31
  if (!wasNodeSelection && !oldTr.selectionSet && trContext.selectionPosFromInsertion) {
23
32
  const sel = getSelectionStaticConstructor(oldTr.selection);
24
33
  const near = sel.near(newTr.doc.resolve(trContext.selectionPosFromInsertion), -1);
@@ -2,6 +2,7 @@ import { Transaction } from 'prosemirror-state';
2
2
  import { CHANGE_STATUS, StructureAttrs } from './types/change';
3
3
  import { TrackChangesStatus } from './types/track';
4
4
  export declare enum TrackChangesAction {
5
+ skipSelection = "track-changes-skip-selection",
5
6
  skipTrack = "track-changes-skip-tracking",
6
7
  setUserID = "track-changes-set-user-id",
7
8
  setPluginStatus = "track-changes-set-track-status",
@@ -12,6 +13,7 @@ export declare enum TrackChangesAction {
12
13
  indentationAction = "track-changes-indentation-action"
13
14
  }
14
15
  export type TrackChangesActionParams = {
16
+ [TrackChangesAction.skipSelection]: boolean;
15
17
  [TrackChangesAction.skipTrack]: boolean;
16
18
  [TrackChangesAction.setUserID]: string;
17
19
  [TrackChangesAction.setPluginStatus]: TrackChangesStatus;
@@ -30,4 +32,5 @@ export declare function hasAction(tr: Transaction): boolean;
30
32
  export declare function getAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K): TrackChangesActionParams[K] | undefined;
31
33
  export declare function setAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K, payload: TrackChangesActionParams[K]): Transaction;
32
34
  export declare const skipTracking: (tr: Transaction) => Transaction;
35
+ export declare const skipSelect: (tr: Transaction) => Transaction;
33
36
  export declare const isIndentationAction: (action: ReturnType<typeof getAction>) => action is "indent" | "unindent";
@@ -1,5 +1,5 @@
1
1
  export { trackChangesPluginKey, trackChangesPlugin } from './plugin';
2
- export { skipTracking, setAction, TrackChangesAction } from './actions';
2
+ export { skipTracking, skipSelect, setAction, TrackChangesAction } from './actions';
3
3
  export * as trackCommands from './commands';
4
4
  export { enableDebug } from './utils/logger';
5
5
  export { ChangeSet } from './ChangeSet';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manuscripts/track-changes-plugin",
3
- "version": "2.3.12",
3
+ "version": "2.3.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",
@@ -22,7 +22,7 @@
22
22
  "typecheck": "tsc --project tsconfig.test.json --noEmit",
23
23
  "lint": "eslint --cache --ext .js,.ts, ./src ./test",
24
24
  "lint:fix": "eslint --fix --ext .js,.ts, ./src ./test",
25
- "prepare": "husky install"
25
+ "prepare": "husky"
26
26
  },
27
27
  "dependencies": {
28
28
  "debug": "4.4.1",