@manuscripts/track-changes-plugin 1.7.11 → 1.7.12-LEAN-3608.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.
- package/dist/cjs/ChangeSet.js +6 -0
- package/dist/cjs/actions.js +1 -0
- package/dist/cjs/change-steps/processChangeSteps.js +6 -0
- package/dist/cjs/changes/findChanges.js +11 -0
- package/dist/cjs/changes/updateChangeAttrs.js +7 -2
- package/dist/cjs/commands.js +21 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/steps/trackReplaceAroundStep.js +18 -7
- package/dist/cjs/types/change.js +1 -0
- package/dist/cjs/utils/track-utils.js +5 -1
- package/dist/es/ChangeSet.js +6 -0
- package/dist/es/actions.js +1 -0
- package/dist/es/change-steps/processChangeSteps.js +6 -0
- package/dist/es/changes/findChanges.js +11 -0
- package/dist/es/changes/updateChangeAttrs.js +7 -2
- package/dist/es/commands.js +22 -2
- package/dist/es/index.js +1 -1
- package/dist/es/steps/trackReplaceAroundStep.js +18 -7
- package/dist/es/types/change.js +1 -0
- package/dist/es/utils/track-utils.js +3 -0
- package/dist/types/ChangeSet.d.ts +3 -1
- package/dist/types/actions.d.ts +3 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/change.d.ts +14 -3
- package/dist/types/types/step.d.ts +8 -2
- package/dist/types/types/track.d.ts +4 -0
- package/dist/types/utils/track-utils.d.ts +2 -1
- package/package.json +2 -2
package/dist/cjs/ChangeSet.js
CHANGED
|
@@ -80,6 +80,9 @@ class ChangeSet {
|
|
|
80
80
|
get nodeAttrChanges() {
|
|
81
81
|
return this.changes.filter((c) => c.type === 'node-attr-change');
|
|
82
82
|
}
|
|
83
|
+
get nodeTypeChange() {
|
|
84
|
+
return this.changes.filter((c) => c.type === 'node-type-change');
|
|
85
|
+
}
|
|
83
86
|
get bothNodeChanges() {
|
|
84
87
|
return this.changes.filter((c) => c.type === 'node-change' || c.type === 'node-attr-change');
|
|
85
88
|
}
|
|
@@ -147,6 +150,9 @@ class ChangeSet {
|
|
|
147
150
|
static isNodeAttrChange(change) {
|
|
148
151
|
return change.type === 'node-attr-change';
|
|
149
152
|
}
|
|
153
|
+
static isNodeTypeChange(change) {
|
|
154
|
+
return change.type === 'node-type-change';
|
|
155
|
+
}
|
|
150
156
|
}
|
|
151
157
|
exports.ChangeSet = ChangeSet;
|
|
152
158
|
_ChangeSet_changes = new WeakMap(), _ChangeSet_instances = new WeakSet(), _ChangeSet_isSameNodeChange = function _ChangeSet_isSameNodeChange(currentChange, nextChange) {
|
package/dist/cjs/actions.js
CHANGED
|
@@ -10,6 +10,7 @@ var TrackChangesAction;
|
|
|
10
10
|
TrackChangesAction["refreshChanges"] = "track-changes-refresh-changes";
|
|
11
11
|
TrackChangesAction["applyAndRemoveChanges"] = "track-changes-apply-remove-changes";
|
|
12
12
|
TrackChangesAction["updateMetaNode"] = "track-changes-update-meta-node";
|
|
13
|
+
TrackChangesAction["updateNodeType"] = "track-changes-update-node-type";
|
|
13
14
|
})(TrackChangesAction = exports.TrackChangesAction || (exports.TrackChangesAction = {}));
|
|
14
15
|
function getAction(tr, action) {
|
|
15
16
|
return tr.getMeta(action);
|
|
@@ -91,6 +91,12 @@ function processChangeSteps(changes, startPos, newTr, emptyAttrs, schema) {
|
|
|
91
91
|
newTr.insert(insertPos, c.fragment);
|
|
92
92
|
}
|
|
93
93
|
break;
|
|
94
|
+
case 'update-node-type':
|
|
95
|
+
const nodeName = c.node.type.name;
|
|
96
|
+
const attr = (0, nodeHelpers_1.addTrackIdIfDoesntExist)(trackUtils.createNewUpdateType(emptyAttrs, nodeName));
|
|
97
|
+
const newNode = c.nodeType.content.firstChild;
|
|
98
|
+
newTr.setNodeMarkup(c.from, newNode.type, Object.assign(Object.assign({}, newNode.attrs), { dataTracked: [attr] }));
|
|
99
|
+
break;
|
|
94
100
|
case 'insert-slice':
|
|
95
101
|
const newStep = new prosemirror_transform_1.ReplaceStep(mapping.map(c.from), mapping.map(c.to), c.slice, false);
|
|
96
102
|
const stepResult = newTr.maybeStep(newStep);
|
|
@@ -45,6 +45,17 @@ function findChanges(state) {
|
|
|
45
45
|
oldAttrs: dataTracked.oldAttrs,
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
+
else if (dataTracked.operation === change_1.CHANGE_OPERATION.set_node_type) {
|
|
49
|
+
change = {
|
|
50
|
+
id,
|
|
51
|
+
type: 'node-type-change',
|
|
52
|
+
from: pos,
|
|
53
|
+
dataTracked,
|
|
54
|
+
nodeType: node.type.name,
|
|
55
|
+
newAttrs: node.attrs,
|
|
56
|
+
oldAttrs: dataTracked.oldAttrs,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
48
59
|
else {
|
|
49
60
|
change = {
|
|
50
61
|
id,
|
|
@@ -26,10 +26,15 @@ function updateChangeAttrs(tr, change, trackedAttrs, schema) {
|
|
|
26
26
|
}
|
|
27
27
|
tr.addMark(change.from, change.to, oldMark.type.create(Object.assign(Object.assign({}, oldMark.attrs), { dataTracked: Object.assign(Object.assign({}, oldTrackData), trackedAttrs) })));
|
|
28
28
|
}
|
|
29
|
-
else if ((change.type === 'node-change' ||
|
|
29
|
+
else if ((change.type === 'node-change' ||
|
|
30
|
+
change.type === 'node-attr-change' ||
|
|
31
|
+
change.type === 'node-type-change') &&
|
|
32
|
+
!operation) {
|
|
30
33
|
tr.setNodeMarkup(change.from, undefined, Object.assign(Object.assign({}, node.attrs), { dataTracked: null }), node.marks);
|
|
31
34
|
}
|
|
32
|
-
else if (change.type === 'node-change' ||
|
|
35
|
+
else if (change.type === 'node-change' ||
|
|
36
|
+
change.type === 'node-attr-change' ||
|
|
37
|
+
change.type === 'node-type-change') {
|
|
33
38
|
const trackedDataSource = (0, nodeHelpers_1.getBlockInlineTrackedData)(node) || [];
|
|
34
39
|
const targetDataTracked = trackedDataSource.find((t) => change.id === t.id);
|
|
35
40
|
const newDataTracked = trackedDataSource.map((oldTrack) => {
|
package/dist/cjs/commands.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.refreshChanges = exports.applyAndRemoveChanges = exports.setUserID = exports.setChangeStatuses = exports.setTrackingStatus = void 0;
|
|
4
|
+
const transform_1 = require("@manuscripts/transform");
|
|
4
5
|
const actions_1 = require("./actions");
|
|
5
6
|
const plugin_1 = require("./plugin");
|
|
6
7
|
const track_1 = require("./types/track");
|
|
@@ -22,8 +23,27 @@ const setTrackingStatus = (status) => (state, dispatch) => {
|
|
|
22
23
|
};
|
|
23
24
|
exports.setTrackingStatus = setTrackingStatus;
|
|
24
25
|
const setChangeStatuses = (status, ids) => (state, dispatch) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const tr = state.tr;
|
|
28
|
+
const nodeTypeChanges = (_a = plugin_1.trackChangesPluginKey.getState(state)) === null || _a === void 0 ? void 0 : _a.changeSet.nodeTypeChange;
|
|
29
|
+
if (nodeTypeChanges) {
|
|
30
|
+
nodeTypeChanges.map((change) => {
|
|
31
|
+
var _a;
|
|
32
|
+
if (ids.includes(change.id)) {
|
|
33
|
+
let node = state.doc.nodeAt(change.from);
|
|
34
|
+
if (status == 'pending' && node) {
|
|
35
|
+
console.log('is pending', change);
|
|
36
|
+
let oppositeType = (node === null || node === void 0 ? void 0 : node.type) !== transform_1.schema.nodes.bullet_list ? transform_1.schema.nodes.bullet_list : transform_1.schema.nodes.ordered_list;
|
|
37
|
+
tr.setMeta(actions_1.TrackChangesAction.updateNodeType, true).setNodeMarkup(change.from, oppositeType, node.attrs, node.marks);
|
|
38
|
+
}
|
|
39
|
+
else if (status == 'rejected' && node) {
|
|
40
|
+
(0, actions_1.skipTracking)(tr.setNodeMarkup(change.from, (_a = state.doc.nodeAt(change.from)) === null || _a === void 0 ? void 0 : _a.type.schema.nodes[change.oldAttrs], node.attrs, node.marks));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
25
45
|
dispatch &&
|
|
26
|
-
dispatch((0, actions_1.setAction)(
|
|
46
|
+
dispatch((0, actions_1.setAction)(tr, actions_1.TrackChangesAction.setChangeStatuses, {
|
|
27
47
|
status,
|
|
28
48
|
ids,
|
|
29
49
|
}));
|
package/dist/cjs/index.js
CHANGED
|
@@ -26,12 +26,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
26
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
|
|
29
|
+
exports.ChangeSet = exports.enableDebug = exports.trackCommands = exports.TrackChangesAction = exports.skipTracking = exports.trackChangesPlugin = exports.trackChangesPluginKey = void 0;
|
|
30
30
|
var plugin_1 = require("./plugin");
|
|
31
31
|
Object.defineProperty(exports, "trackChangesPluginKey", { enumerable: true, get: function () { return plugin_1.trackChangesPluginKey; } });
|
|
32
32
|
Object.defineProperty(exports, "trackChangesPlugin", { enumerable: true, get: function () { return plugin_1.trackChangesPlugin; } });
|
|
33
33
|
var actions_1 = require("./actions");
|
|
34
34
|
Object.defineProperty(exports, "skipTracking", { enumerable: true, get: function () { return actions_1.skipTracking; } });
|
|
35
|
+
Object.defineProperty(exports, "TrackChangesAction", { enumerable: true, get: function () { return actions_1.TrackChangesAction; } });
|
|
35
36
|
exports.trackCommands = __importStar(require("./commands"));
|
|
36
37
|
var logger_1 = require("./utils/logger");
|
|
37
38
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return logger_1.enableDebug; } });
|
|
@@ -57,13 +57,24 @@ function trackReplaceAroundStep(step, oldState, tr, newTr, attrs) {
|
|
|
57
57
|
insertedSlice = insertedSlice.insertAt(insertedSlice.size === 0 ? 0 : insert, gap.content);
|
|
58
58
|
logger_1.log.info('insertedSlice after inserted gap', insertedSlice);
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
if (tr.getMeta(actions_1.TrackChangesAction.updateNodeType)) {
|
|
61
|
+
console.log('steep', newTr.doc.nodeAt(from), slice);
|
|
62
|
+
deleteSteps.push({
|
|
63
|
+
type: 'update-node-type',
|
|
64
|
+
from: from,
|
|
65
|
+
nodeType: slice,
|
|
66
|
+
node: newTr.doc.nodeAt(from),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
deleteSteps.push({
|
|
71
|
+
type: 'insert-slice',
|
|
72
|
+
from: gapFrom,
|
|
73
|
+
to: gapTo,
|
|
74
|
+
slice: insertedSlice,
|
|
75
|
+
sliceWasSplit,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
67
78
|
}
|
|
68
79
|
else {
|
|
69
80
|
}
|
package/dist/cjs/types/change.js
CHANGED
|
@@ -6,6 +6,7 @@ var CHANGE_OPERATION;
|
|
|
6
6
|
CHANGE_OPERATION["insert"] = "insert";
|
|
7
7
|
CHANGE_OPERATION["delete"] = "delete";
|
|
8
8
|
CHANGE_OPERATION["set_node_attributes"] = "set_attrs";
|
|
9
|
+
CHANGE_OPERATION["set_node_type"] = "set_type";
|
|
9
10
|
})(CHANGE_OPERATION = exports.CHANGE_OPERATION || (exports.CHANGE_OPERATION = {}));
|
|
10
11
|
var CHANGE_STATUS;
|
|
11
12
|
(function (CHANGE_STATUS) {
|
|
@@ -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.createNewUpdateAttrs = exports.createNewDeleteAttrs = exports.createNewInsertAttrs = void 0;
|
|
14
|
+
exports.createNewUpdateType = exports.createNewUpdateAttrs = exports.createNewDeleteAttrs = exports.createNewInsertAttrs = void 0;
|
|
15
15
|
const change_1 = require("../types/change");
|
|
16
16
|
function createNewInsertAttrs(attrs) {
|
|
17
17
|
return Object.assign(Object.assign({}, attrs), { operation: change_1.CHANGE_OPERATION.insert });
|
|
@@ -26,3 +26,7 @@ function createNewUpdateAttrs(attrs, oldAttrs) {
|
|
|
26
26
|
return Object.assign(Object.assign({}, attrs), { operation: change_1.CHANGE_OPERATION.set_node_attributes, oldAttrs: JSON.parse(JSON.stringify(restAttrs)) });
|
|
27
27
|
}
|
|
28
28
|
exports.createNewUpdateAttrs = createNewUpdateAttrs;
|
|
29
|
+
function createNewUpdateType(attrs, oldAttrs) {
|
|
30
|
+
return Object.assign(Object.assign({}, attrs), { operation: change_1.CHANGE_OPERATION.set_node_type, oldAttrs: oldAttrs });
|
|
31
|
+
}
|
|
32
|
+
exports.createNewUpdateType = createNewUpdateType;
|
package/dist/es/ChangeSet.js
CHANGED
|
@@ -77,6 +77,9 @@ export class ChangeSet {
|
|
|
77
77
|
get nodeAttrChanges() {
|
|
78
78
|
return this.changes.filter((c) => c.type === 'node-attr-change');
|
|
79
79
|
}
|
|
80
|
+
get nodeTypeChange() {
|
|
81
|
+
return this.changes.filter((c) => c.type === 'node-type-change');
|
|
82
|
+
}
|
|
80
83
|
get bothNodeChanges() {
|
|
81
84
|
return this.changes.filter((c) => c.type === 'node-change' || c.type === 'node-attr-change');
|
|
82
85
|
}
|
|
@@ -144,6 +147,9 @@ export class ChangeSet {
|
|
|
144
147
|
static isNodeAttrChange(change) {
|
|
145
148
|
return change.type === 'node-attr-change';
|
|
146
149
|
}
|
|
150
|
+
static isNodeTypeChange(change) {
|
|
151
|
+
return change.type === 'node-type-change';
|
|
152
|
+
}
|
|
147
153
|
}
|
|
148
154
|
_ChangeSet_changes = new WeakMap(), _ChangeSet_instances = new WeakSet(), _ChangeSet_isSameNodeChange = function _ChangeSet_isSameNodeChange(currentChange, nextChange) {
|
|
149
155
|
return currentChange.from === nextChange.from && currentChange.to === nextChange.to;
|
package/dist/es/actions.js
CHANGED
|
@@ -7,6 +7,7 @@ export var TrackChangesAction;
|
|
|
7
7
|
TrackChangesAction["refreshChanges"] = "track-changes-refresh-changes";
|
|
8
8
|
TrackChangesAction["applyAndRemoveChanges"] = "track-changes-apply-remove-changes";
|
|
9
9
|
TrackChangesAction["updateMetaNode"] = "track-changes-update-meta-node";
|
|
10
|
+
TrackChangesAction["updateNodeType"] = "track-changes-update-node-type";
|
|
10
11
|
})(TrackChangesAction || (TrackChangesAction = {}));
|
|
11
12
|
export function getAction(tr, action) {
|
|
12
13
|
return tr.getMeta(action);
|
|
@@ -65,6 +65,12 @@ export function processChangeSteps(changes, startPos, newTr, emptyAttrs, schema)
|
|
|
65
65
|
newTr.insert(insertPos, c.fragment);
|
|
66
66
|
}
|
|
67
67
|
break;
|
|
68
|
+
case 'update-node-type':
|
|
69
|
+
const nodeName = c.node.type.name;
|
|
70
|
+
const attr = addTrackIdIfDoesntExist(trackUtils.createNewUpdateType(emptyAttrs, nodeName));
|
|
71
|
+
const newNode = c.nodeType.content.firstChild;
|
|
72
|
+
newTr.setNodeMarkup(c.from, newNode.type, Object.assign(Object.assign({}, newNode.attrs), { dataTracked: [attr] }));
|
|
73
|
+
break;
|
|
68
74
|
case 'insert-slice':
|
|
69
75
|
const newStep = new ReplaceStep(mapping.map(c.from), mapping.map(c.to), c.slice, false);
|
|
70
76
|
const stepResult = newTr.maybeStep(newStep);
|
|
@@ -42,6 +42,17 @@ export function findChanges(state) {
|
|
|
42
42
|
oldAttrs: dataTracked.oldAttrs,
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
+
else if (dataTracked.operation === CHANGE_OPERATION.set_node_type) {
|
|
46
|
+
change = {
|
|
47
|
+
id,
|
|
48
|
+
type: 'node-type-change',
|
|
49
|
+
from: pos,
|
|
50
|
+
dataTracked,
|
|
51
|
+
nodeType: node.type.name,
|
|
52
|
+
newAttrs: node.attrs,
|
|
53
|
+
oldAttrs: dataTracked.oldAttrs,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
45
56
|
else {
|
|
46
57
|
change = {
|
|
47
58
|
id,
|
|
@@ -23,10 +23,15 @@ export function updateChangeAttrs(tr, change, trackedAttrs, schema) {
|
|
|
23
23
|
}
|
|
24
24
|
tr.addMark(change.from, change.to, oldMark.type.create(Object.assign(Object.assign({}, oldMark.attrs), { dataTracked: Object.assign(Object.assign({}, oldTrackData), trackedAttrs) })));
|
|
25
25
|
}
|
|
26
|
-
else if ((change.type === 'node-change' ||
|
|
26
|
+
else if ((change.type === 'node-change' ||
|
|
27
|
+
change.type === 'node-attr-change' ||
|
|
28
|
+
change.type === 'node-type-change') &&
|
|
29
|
+
!operation) {
|
|
27
30
|
tr.setNodeMarkup(change.from, undefined, Object.assign(Object.assign({}, node.attrs), { dataTracked: null }), node.marks);
|
|
28
31
|
}
|
|
29
|
-
else if (change.type === 'node-change' ||
|
|
32
|
+
else if (change.type === 'node-change' ||
|
|
33
|
+
change.type === 'node-attr-change' ||
|
|
34
|
+
change.type === 'node-type-change') {
|
|
30
35
|
const trackedDataSource = getBlockInlineTrackedData(node) || [];
|
|
31
36
|
const targetDataTracked = trackedDataSource.find((t) => change.id === t.id);
|
|
32
37
|
const newDataTracked = trackedDataSource.map((oldTrack) => {
|
package/dist/es/commands.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { schema } from '@manuscripts/transform';
|
|
2
|
+
import { setAction, skipTracking, TrackChangesAction } from './actions';
|
|
2
3
|
import { trackChangesPluginKey } from './plugin';
|
|
3
4
|
import { TrackChangesStatus } from './types/track';
|
|
4
5
|
export const setTrackingStatus = (status) => (state, dispatch) => {
|
|
@@ -18,8 +19,27 @@ export const setTrackingStatus = (status) => (state, dispatch) => {
|
|
|
18
19
|
return false;
|
|
19
20
|
};
|
|
20
21
|
export const setChangeStatuses = (status, ids) => (state, dispatch) => {
|
|
22
|
+
var _a;
|
|
23
|
+
const tr = state.tr;
|
|
24
|
+
const nodeTypeChanges = (_a = trackChangesPluginKey.getState(state)) === null || _a === void 0 ? void 0 : _a.changeSet.nodeTypeChange;
|
|
25
|
+
if (nodeTypeChanges) {
|
|
26
|
+
nodeTypeChanges.map((change) => {
|
|
27
|
+
var _a;
|
|
28
|
+
if (ids.includes(change.id)) {
|
|
29
|
+
let node = state.doc.nodeAt(change.from);
|
|
30
|
+
if (status == 'pending' && node) {
|
|
31
|
+
console.log('is pending', change);
|
|
32
|
+
let oppositeType = (node === null || node === void 0 ? void 0 : node.type) !== schema.nodes.bullet_list ? schema.nodes.bullet_list : schema.nodes.ordered_list;
|
|
33
|
+
tr.setMeta(TrackChangesAction.updateNodeType, true).setNodeMarkup(change.from, oppositeType, node.attrs, node.marks);
|
|
34
|
+
}
|
|
35
|
+
else if (status == 'rejected' && node) {
|
|
36
|
+
skipTracking(tr.setNodeMarkup(change.from, (_a = state.doc.nodeAt(change.from)) === null || _a === void 0 ? void 0 : _a.type.schema.nodes[change.oldAttrs], node.attrs, node.marks));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
21
41
|
dispatch &&
|
|
22
|
-
dispatch(setAction(
|
|
42
|
+
dispatch(setAction(tr, TrackChangesAction.setChangeStatuses, {
|
|
23
43
|
status,
|
|
24
44
|
ids,
|
|
25
45
|
}));
|
package/dist/es/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { trackChangesPluginKey, trackChangesPlugin } from './plugin';
|
|
2
|
-
export { skipTracking } from './actions';
|
|
2
|
+
export { skipTracking, TrackChangesAction } from './actions';
|
|
3
3
|
export * as trackCommands from './commands';
|
|
4
4
|
export { enableDebug } from './utils/logger';
|
|
5
5
|
export { ChangeSet } from './ChangeSet';
|
|
@@ -31,13 +31,24 @@ export function trackReplaceAroundStep(step, oldState, tr, newTr, attrs) {
|
|
|
31
31
|
insertedSlice = insertedSlice.insertAt(insertedSlice.size === 0 ? 0 : insert, gap.content);
|
|
32
32
|
log.info('insertedSlice after inserted gap', insertedSlice);
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
if (tr.getMeta(TrackChangesAction.updateNodeType)) {
|
|
35
|
+
console.log('steep', newTr.doc.nodeAt(from), slice);
|
|
36
|
+
deleteSteps.push({
|
|
37
|
+
type: 'update-node-type',
|
|
38
|
+
from: from,
|
|
39
|
+
nodeType: slice,
|
|
40
|
+
node: newTr.doc.nodeAt(from),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
deleteSteps.push({
|
|
45
|
+
type: 'insert-slice',
|
|
46
|
+
from: gapFrom,
|
|
47
|
+
to: gapTo,
|
|
48
|
+
slice: insertedSlice,
|
|
49
|
+
sliceWasSplit,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
else {
|
|
43
54
|
}
|
package/dist/es/types/change.js
CHANGED
|
@@ -3,6 +3,7 @@ export var CHANGE_OPERATION;
|
|
|
3
3
|
CHANGE_OPERATION["insert"] = "insert";
|
|
4
4
|
CHANGE_OPERATION["delete"] = "delete";
|
|
5
5
|
CHANGE_OPERATION["set_node_attributes"] = "set_attrs";
|
|
6
|
+
CHANGE_OPERATION["set_node_type"] = "set_type";
|
|
6
7
|
})(CHANGE_OPERATION || (CHANGE_OPERATION = {}));
|
|
7
8
|
export var CHANGE_STATUS;
|
|
8
9
|
(function (CHANGE_STATUS) {
|
|
@@ -20,3 +20,6 @@ export function createNewUpdateAttrs(attrs, oldAttrs) {
|
|
|
20
20
|
const { dataTracked } = oldAttrs, restAttrs = __rest(oldAttrs, ["dataTracked"]);
|
|
21
21
|
return Object.assign(Object.assign({}, attrs), { operation: CHANGE_OPERATION.set_node_attributes, oldAttrs: JSON.parse(JSON.stringify(restAttrs)) });
|
|
22
22
|
}
|
|
23
|
+
export function createNewUpdateType(attrs, oldAttrs) {
|
|
24
|
+
return Object.assign(Object.assign({}, attrs), { operation: CHANGE_OPERATION.set_node_type, oldAttrs: oldAttrs });
|
|
25
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IncompleteChange, NodeAttrChange, NodeChange, TextChange, TrackedAttrs, TrackedChange } from './types/change';
|
|
1
|
+
import { IncompleteChange, NodeAttrChange, NodeChange, NodeTypeChange, TextChange, TrackedAttrs, TrackedChange } from './types/change';
|
|
2
2
|
export declare class ChangeSet {
|
|
3
3
|
#private;
|
|
4
4
|
constructor(changes?: (TrackedChange | IncompleteChange)[]);
|
|
@@ -11,6 +11,7 @@ export declare class ChangeSet {
|
|
|
11
11
|
get textChanges(): TrackedChange[];
|
|
12
12
|
get nodeChanges(): TrackedChange[];
|
|
13
13
|
get nodeAttrChanges(): TrackedChange[];
|
|
14
|
+
get nodeTypeChange(): TrackedChange[];
|
|
14
15
|
get bothNodeChanges(): TrackedChange[];
|
|
15
16
|
get isEmpty(): boolean;
|
|
16
17
|
get hasInconsistentData(): boolean;
|
|
@@ -25,4 +26,5 @@ export declare class ChangeSet {
|
|
|
25
26
|
static isTextChange(change: TrackedChange): change is TextChange;
|
|
26
27
|
static isNodeChange(change: TrackedChange): change is NodeChange;
|
|
27
28
|
static isNodeAttrChange(change: TrackedChange): change is NodeAttrChange;
|
|
29
|
+
static isNodeTypeChange(change: TrackedChange): change is NodeTypeChange;
|
|
28
30
|
}
|
package/dist/types/actions.d.ts
CHANGED
|
@@ -8,7 +8,8 @@ export declare enum TrackChangesAction {
|
|
|
8
8
|
setChangeStatuses = "track-changes-set-change-statuses",
|
|
9
9
|
refreshChanges = "track-changes-refresh-changes",
|
|
10
10
|
applyAndRemoveChanges = "track-changes-apply-remove-changes",
|
|
11
|
-
updateMetaNode = "track-changes-update-meta-node"
|
|
11
|
+
updateMetaNode = "track-changes-update-meta-node",
|
|
12
|
+
updateNodeType = "track-changes-update-node-type"
|
|
12
13
|
}
|
|
13
14
|
export type TrackChangesActionParams = {
|
|
14
15
|
[TrackChangesAction.skipTrack]: boolean;
|
|
@@ -21,6 +22,7 @@ export type TrackChangesActionParams = {
|
|
|
21
22
|
[TrackChangesAction.refreshChanges]: boolean;
|
|
22
23
|
[TrackChangesAction.applyAndRemoveChanges]: boolean;
|
|
23
24
|
[TrackChangesAction.updateMetaNode]: boolean;
|
|
25
|
+
[TrackChangesAction.updateNodeType]: boolean;
|
|
24
26
|
};
|
|
25
27
|
export declare function getAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K): TrackChangesActionParams[K] | undefined;
|
|
26
28
|
export declare function setAction<K extends keyof TrackChangesActionParams>(tr: Transaction, action: K, payload: TrackChangesActionParams[K]): Transaction;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { trackChangesPluginKey, trackChangesPlugin } from './plugin';
|
|
2
|
-
export { skipTracking } from './actions';
|
|
2
|
+
export { skipTracking, TrackChangesAction } from './actions';
|
|
3
3
|
export * as trackCommands from './commands';
|
|
4
4
|
export { enableDebug } from './utils/logger';
|
|
5
5
|
export { ChangeSet } from './ChangeSet';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare enum CHANGE_OPERATION {
|
|
2
2
|
insert = "insert",
|
|
3
3
|
delete = "delete",
|
|
4
|
-
set_node_attributes = "set_attrs"
|
|
4
|
+
set_node_attributes = "set_attrs",
|
|
5
|
+
set_node_type = "set_type"
|
|
5
6
|
}
|
|
6
7
|
export declare enum CHANGE_STATUS {
|
|
7
8
|
accepted = "accepted",
|
|
@@ -22,7 +23,11 @@ export type UpdateAttrs = Omit<InsertDeleteAttrs, 'operation'> & {
|
|
|
22
23
|
operation: CHANGE_OPERATION.set_node_attributes;
|
|
23
24
|
oldAttrs: Record<string, any>;
|
|
24
25
|
};
|
|
25
|
-
export type
|
|
26
|
+
export type UpdateType = Omit<InsertDeleteAttrs, 'operation'> & {
|
|
27
|
+
operation: CHANGE_OPERATION.set_node_type;
|
|
28
|
+
oldAttrs: string;
|
|
29
|
+
};
|
|
30
|
+
export type TrackedAttrs = InsertDeleteAttrs | UpdateAttrs | UpdateType;
|
|
26
31
|
type Change = {
|
|
27
32
|
id: string;
|
|
28
33
|
from: number;
|
|
@@ -44,6 +49,12 @@ export type NodeAttrChange = Change & {
|
|
|
44
49
|
oldAttrs: Record<string, any>;
|
|
45
50
|
newAttrs: Record<string, any>;
|
|
46
51
|
};
|
|
52
|
+
export type NodeTypeChange = Change & {
|
|
53
|
+
type: 'node-type-change';
|
|
54
|
+
nodeType: string;
|
|
55
|
+
oldAttrs: string;
|
|
56
|
+
newAttrs: Record<string, any>;
|
|
57
|
+
};
|
|
47
58
|
export type WrapChange = Change & {
|
|
48
59
|
type: 'wrap-change';
|
|
49
60
|
wrapperNode: string;
|
|
@@ -51,7 +62,7 @@ export type WrapChange = Change & {
|
|
|
51
62
|
export type MarkChange = Change & {
|
|
52
63
|
type: 'mark-change';
|
|
53
64
|
};
|
|
54
|
-
export type TrackedChange = TextChange | NodeChange | NodeAttrChange | WrapChange | MarkChange;
|
|
65
|
+
export type TrackedChange = TextChange | NodeChange | NodeAttrChange | WrapChange | MarkChange | NodeTypeChange;
|
|
55
66
|
export type PartialChange<T extends TrackedChange> = Omit<T, 'dataTracked'> & {
|
|
56
67
|
dataTracked: Partial<TrackedAttrs>;
|
|
57
68
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Node as PMNode } from 'prosemirror-model';
|
|
1
|
+
import { Node as PMNode, Slice } from 'prosemirror-model';
|
|
2
2
|
import { ExposedFragment, ExposedSlice } from './pm';
|
|
3
3
|
export interface DeleteNodeStep {
|
|
4
4
|
pos: number;
|
|
@@ -29,10 +29,16 @@ export interface InsertSliceStep {
|
|
|
29
29
|
type: 'insert-slice';
|
|
30
30
|
slice: ExposedSlice;
|
|
31
31
|
}
|
|
32
|
+
export interface TypeSliceStep {
|
|
33
|
+
type: 'update-node-type';
|
|
34
|
+
from: number;
|
|
35
|
+
nodeType: Slice;
|
|
36
|
+
node: PMNode;
|
|
37
|
+
}
|
|
32
38
|
export interface UpdateNodeAttrsStep {
|
|
33
39
|
pos: number;
|
|
34
40
|
type: 'update-node-attrs';
|
|
35
41
|
node: PMNode;
|
|
36
42
|
newAttrs: Record<string, any>;
|
|
37
43
|
}
|
|
38
|
-
export type ChangeStep = DeleteNodeStep | DeleteTextStep | MergeFragmentStep | InsertSliceStep | UpdateNodeAttrsStep;
|
|
44
|
+
export type ChangeStep = DeleteNodeStep | DeleteTextStep | MergeFragmentStep | InsertSliceStep | UpdateNodeAttrsStep | TypeSliceStep;
|
|
@@ -23,6 +23,10 @@ export type NewUpdateAttrs = Omit<TrackedAttrs, 'id' | 'operation'> & {
|
|
|
23
23
|
operation: CHANGE_OPERATION.set_node_attributes;
|
|
24
24
|
oldAttrs: Record<string, any>;
|
|
25
25
|
};
|
|
26
|
+
export type NewUpdateType = Omit<TrackedAttrs, 'id' | 'operation'> & {
|
|
27
|
+
operation: CHANGE_OPERATION.set_node_type;
|
|
28
|
+
oldAttrs: string;
|
|
29
|
+
};
|
|
26
30
|
export type NewTrackedAttrs = NewInsertAttrs | NewDeleteAttrs | NewUpdateAttrs;
|
|
27
31
|
export declare enum TrackChangesStatus {
|
|
28
32
|
enabled = "enabled",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { NewDeleteAttrs, NewEmptyAttrs, NewInsertAttrs, NewUpdateAttrs } from '../types/track';
|
|
1
|
+
import { NewDeleteAttrs, NewEmptyAttrs, NewInsertAttrs, NewUpdateAttrs, NewUpdateType } from '../types/track';
|
|
2
2
|
export declare function createNewInsertAttrs(attrs: NewEmptyAttrs): NewInsertAttrs;
|
|
3
3
|
export declare function createNewDeleteAttrs(attrs: NewEmptyAttrs): NewDeleteAttrs;
|
|
4
4
|
export declare function createNewUpdateAttrs(attrs: NewEmptyAttrs, oldAttrs: Record<string, any>): NewUpdateAttrs;
|
|
5
|
+
export declare function createNewUpdateType(attrs: NewEmptyAttrs, oldAttrs: string): NewUpdateType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/track-changes-plugin",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.12-LEAN-3608.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",
|
|
@@ -69,4 +69,4 @@
|
|
|
69
69
|
"resolutions": {
|
|
70
70
|
"eslint-mdx": "2.0.5"
|
|
71
71
|
}
|
|
72
|
-
}
|
|
72
|
+
}
|