@atlaskit/editor-plugin-show-diff 14.0.4 → 14.1.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/CHANGELOG.md +9 -0
- package/dist/cjs/pm-plugins/calculateDiff/calculateDiffDecorations.js +172 -97
- package/dist/cjs/pm-plugins/calculateDiff/diffBySteps.js +20 -9
- package/dist/cjs/pm-plugins/calculateDiff/simplifyChangesWithAttribution.js +89 -0
- package/dist/cjs/pm-plugins/calculateDiff/simplifySteps.js +81 -4
- package/dist/cjs/pm-plugins/decorations/colorSchemes/attributions.js +68 -0
- package/dist/cjs/pm-plugins/decorations/colorSchemes/schemes.js +26 -2
- package/dist/cjs/pm-plugins/decorations/colorSchemes/types.js +5 -1
- package/dist/cjs/pm-plugins/decorations/createBlockChangedDecoration.js +7 -2
- package/dist/cjs/pm-plugins/decorations/createChangedRowDecorationWidgets.js +2 -2
- package/dist/cjs/pm-plugins/decorations/createInlineChangedDecoration.js +4 -2
- package/dist/cjs/pm-plugins/decorations/utils/wrapBlockNodeViewStyles.js +14 -10
- package/dist/cjs/pm-plugins/main.js +1 -0
- package/dist/cjs/showDiffPlugin.js +36 -14
- package/dist/es2019/pm-plugins/calculateDiff/calculateDiffDecorations.js +90 -19
- package/dist/es2019/pm-plugins/calculateDiff/diffBySteps.js +17 -9
- package/dist/es2019/pm-plugins/calculateDiff/simplifyChangesWithAttribution.js +64 -0
- package/dist/es2019/pm-plugins/calculateDiff/simplifySteps.js +64 -1
- package/dist/es2019/pm-plugins/decorations/colorSchemes/attributions.js +37 -0
- package/dist/es2019/pm-plugins/decorations/colorSchemes/schemes.js +19 -2
- package/dist/es2019/pm-plugins/decorations/colorSchemes/types.js +1 -0
- package/dist/es2019/pm-plugins/decorations/createBlockChangedDecoration.js +6 -3
- package/dist/es2019/pm-plugins/decorations/createChangedRowDecorationWidgets.js +3 -3
- package/dist/es2019/pm-plugins/decorations/createInlineChangedDecoration.js +6 -3
- package/dist/es2019/pm-plugins/decorations/utils/wrapBlockNodeViewStyles.js +12 -9
- package/dist/es2019/pm-plugins/main.js +1 -0
- package/dist/es2019/showDiffPlugin.js +23 -1
- package/dist/esm/pm-plugins/calculateDiff/calculateDiffDecorations.js +173 -98
- package/dist/esm/pm-plugins/calculateDiff/diffBySteps.js +20 -9
- package/dist/esm/pm-plugins/calculateDiff/simplifyChangesWithAttribution.js +82 -0
- package/dist/esm/pm-plugins/calculateDiff/simplifySteps.js +79 -5
- package/dist/esm/pm-plugins/decorations/colorSchemes/attributions.js +61 -0
- package/dist/esm/pm-plugins/decorations/colorSchemes/schemes.js +24 -1
- package/dist/esm/pm-plugins/decorations/colorSchemes/types.js +1 -0
- package/dist/esm/pm-plugins/decorations/createBlockChangedDecoration.js +8 -3
- package/dist/esm/pm-plugins/decorations/createChangedRowDecorationWidgets.js +3 -3
- package/dist/esm/pm-plugins/decorations/createInlineChangedDecoration.js +5 -3
- package/dist/esm/pm-plugins/decorations/utils/wrapBlockNodeViewStyles.js +14 -9
- package/dist/esm/pm-plugins/main.js +1 -0
- package/dist/esm/showDiffPlugin.js +36 -14
- package/dist/types/entry-points/show-diff-plugin-type.d.ts +1 -1
- package/dist/types/pm-plugins/calculateDiff/diffBySteps.d.ts +2 -1
- package/dist/types/pm-plugins/calculateDiff/simplifyChangesWithAttribution.d.ts +7 -0
- package/dist/types/pm-plugins/calculateDiff/simplifySteps.d.ts +10 -0
- package/dist/types/pm-plugins/decorations/colorSchemes/attributions.d.ts +12 -0
- package/dist/types/pm-plugins/decorations/colorSchemes/schemes.d.ts +5 -3
- package/dist/types/pm-plugins/decorations/colorSchemes/types.d.ts +6 -1
- package/dist/types/pm-plugins/decorations/createBlockChangedDecoration.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/createChangedRowDecorationWidgets.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/createInlineChangedDecoration.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/createNodeChangedDecorationWidget.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/utils/wrapBlockNodeView.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/utils/wrapBlockNodeViewStyles.d.ts +2 -1
- package/dist/types/pm-plugins/main.d.ts +3 -1
- package/dist/types/showDiffPluginType.d.ts +29 -1
- package/package.json +3 -3
|
@@ -4,6 +4,27 @@ import { getDeletedWidgets } from './pm-plugins/getDeletedWidgets';
|
|
|
4
4
|
import { getScrollableDecorations } from './pm-plugins/getScrollableDecorations';
|
|
5
5
|
import { createPlugin, showDiffPluginKey } from './pm-plugins/main';
|
|
6
6
|
import { IndicatorBarContentComponent } from './ui/IndicatorBar/IndicatorBarContentComponent';
|
|
7
|
+
const normalizeShowDiffParams = params => {
|
|
8
|
+
if (!params || !('stepsWithAttribution' in params)) {
|
|
9
|
+
return params ? {
|
|
10
|
+
...params,
|
|
11
|
+
stepAttributions: []
|
|
12
|
+
} : params;
|
|
13
|
+
}
|
|
14
|
+
const {
|
|
15
|
+
stepsWithAttribution,
|
|
16
|
+
...rest
|
|
17
|
+
} = params;
|
|
18
|
+
return {
|
|
19
|
+
...rest,
|
|
20
|
+
steps: stepsWithAttribution.map(({
|
|
21
|
+
step
|
|
22
|
+
}) => step),
|
|
23
|
+
stepAttributions: stepsWithAttribution.map(({
|
|
24
|
+
stepAttribution
|
|
25
|
+
}) => stepAttribution)
|
|
26
|
+
};
|
|
27
|
+
};
|
|
7
28
|
export const showDiffPlugin = ({
|
|
8
29
|
api,
|
|
9
30
|
config
|
|
@@ -30,7 +51,7 @@ export const showDiffPlugin = ({
|
|
|
30
51
|
});
|
|
31
52
|
}
|
|
32
53
|
return tr.setMeta(showDiffPluginKey, {
|
|
33
|
-
...params,
|
|
54
|
+
...normalizeShowDiffParams(params),
|
|
34
55
|
action: 'SHOW_DIFF'
|
|
35
56
|
});
|
|
36
57
|
},
|
|
@@ -45,6 +66,7 @@ export const showDiffPlugin = ({
|
|
|
45
66
|
}
|
|
46
67
|
return tr.setMeta(showDiffPluginKey, {
|
|
47
68
|
steps: [],
|
|
69
|
+
stepAttributions: [],
|
|
48
70
|
action: 'HIDE_DIFF'
|
|
49
71
|
});
|
|
50
72
|
},
|
|
@@ -19,6 +19,7 @@ import { createDocMarginAnchorWidget } from '../decorations/createAnchorDecorati
|
|
|
19
19
|
import { createBlockChangedDecoration } from '../decorations/createBlockChangedDecoration';
|
|
20
20
|
import { createInlineChangedDecoration } from '../decorations/createInlineChangedDecoration';
|
|
21
21
|
import { createNodeChangedDecorationWidget } from '../decorations/createNodeChangedDecorationWidget';
|
|
22
|
+
import { createAttributionColorMap, getAttributionKey, getColorSchemeForChange, isAttributionColoringEnabled } from '../decorations/colorSchemes/attributions';
|
|
22
23
|
import { extractDiffDescriptors } from '../decorations/decorationKeys';
|
|
23
24
|
import { getAttrChangeRanges, stepIsValidAttrChange } from '../decorations/utils/getAttrChangeRanges';
|
|
24
25
|
import { getMarkChangeRanges } from '../decorations/utils/getMarkChangeRanges';
|
|
@@ -27,7 +28,8 @@ import { attrAwareTokenEncoder } from './attrAwareTokenEncoder';
|
|
|
27
28
|
import { diffBySteps } from './diffBySteps';
|
|
28
29
|
import { groupChangesByBlock } from './groupChangesByBlock';
|
|
29
30
|
import { optimizeChanges } from './optimizeChanges';
|
|
30
|
-
import {
|
|
31
|
+
import { simplifyChangesWithAttribution } from './simplifyChangesWithAttribution';
|
|
32
|
+
import { simplifySteps, simplifyStepsWithAttribution } from './simplifySteps';
|
|
31
33
|
import { classifySmartChanges } from './smart/classifySmartChanges';
|
|
32
34
|
import { smartChangeLevel } from './smart/helpers';
|
|
33
35
|
var getChanges = function getChanges(_ref) {
|
|
@@ -65,6 +67,34 @@ var getChanges = function getChanges(_ref) {
|
|
|
65
67
|
var changes = simplifyChanges(changeset.changes, tr.doc);
|
|
66
68
|
return optimizeChanges(changes);
|
|
67
69
|
};
|
|
70
|
+
var getAttributedChanges = function getAttributedChanges(_ref2) {
|
|
71
|
+
var attributedChanges = _ref2.attributedChanges,
|
|
72
|
+
changeset = _ref2.changeset,
|
|
73
|
+
originalDoc = _ref2.originalDoc,
|
|
74
|
+
steppedDoc = _ref2.steppedDoc,
|
|
75
|
+
diffType = _ref2.diffType,
|
|
76
|
+
tr = _ref2.tr,
|
|
77
|
+
intl = _ref2.intl,
|
|
78
|
+
smartThresholds = _ref2.smartThresholds;
|
|
79
|
+
if (isExtendedEnabled(diffType)) {
|
|
80
|
+
if (diffType === 'smart' && fg('platform_editor_ai_smart_diff')) {
|
|
81
|
+
return classifySmartChanges({
|
|
82
|
+
changes: simplifyChangesWithAttribution(attributedChanges, tr.doc),
|
|
83
|
+
originalDoc: originalDoc,
|
|
84
|
+
newDoc: tr.doc,
|
|
85
|
+
locale: intl.locale,
|
|
86
|
+
thresholds: smartThresholds
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (diffType === 'step') {
|
|
90
|
+
return attributedChanges;
|
|
91
|
+
}
|
|
92
|
+
if (diffType === 'block') {
|
|
93
|
+
return groupChangesByBlock(changeset.changes, originalDoc, steppedDoc);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return simplifyChangesWithAttribution(attributedChanges, tr.doc);
|
|
97
|
+
};
|
|
68
98
|
|
|
69
99
|
/**
|
|
70
100
|
* Collect the inline-content ranges of every leaf text-bearing block (paragraph, heading, …)
|
|
@@ -123,28 +153,28 @@ var tableRanges = function tableRanges(doc, from, to) {
|
|
|
123
153
|
return ranges;
|
|
124
154
|
};
|
|
125
155
|
var isInsideTable = function isInsideTable(tables, pos) {
|
|
126
|
-
return tables.some(function (
|
|
127
|
-
var
|
|
128
|
-
tFrom =
|
|
129
|
-
tTo =
|
|
156
|
+
return tables.some(function (_ref3) {
|
|
157
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
158
|
+
tFrom = _ref4[0],
|
|
159
|
+
tTo = _ref4[1];
|
|
130
160
|
return pos >= tFrom && pos < tTo;
|
|
131
161
|
});
|
|
132
162
|
};
|
|
133
|
-
var calculateNodesForBlockDecoration = function calculateNodesForBlockDecoration(
|
|
134
|
-
var doc =
|
|
135
|
-
from =
|
|
136
|
-
to =
|
|
137
|
-
colorScheme =
|
|
138
|
-
|
|
139
|
-
isInserted =
|
|
140
|
-
activeIndexPos =
|
|
141
|
-
|
|
142
|
-
shouldHideDeleted =
|
|
143
|
-
|
|
144
|
-
showIndicators =
|
|
145
|
-
diffType =
|
|
146
|
-
|
|
147
|
-
coarseTableCellsOnly =
|
|
163
|
+
var calculateNodesForBlockDecoration = function calculateNodesForBlockDecoration(_ref5) {
|
|
164
|
+
var doc = _ref5.doc,
|
|
165
|
+
from = _ref5.from,
|
|
166
|
+
to = _ref5.to,
|
|
167
|
+
colorScheme = _ref5.colorScheme,
|
|
168
|
+
_ref5$isInserted = _ref5.isInserted,
|
|
169
|
+
isInserted = _ref5$isInserted === void 0 ? true : _ref5$isInserted,
|
|
170
|
+
activeIndexPos = _ref5.activeIndexPos,
|
|
171
|
+
_ref5$shouldHideDelet = _ref5.shouldHideDeleted,
|
|
172
|
+
shouldHideDeleted = _ref5$shouldHideDelet === void 0 ? false : _ref5$shouldHideDelet,
|
|
173
|
+
_ref5$showIndicators = _ref5.showIndicators,
|
|
174
|
+
showIndicators = _ref5$showIndicators === void 0 ? false : _ref5$showIndicators,
|
|
175
|
+
diffType = _ref5.diffType,
|
|
176
|
+
_ref5$coarseTableCell = _ref5.coarseTableCellsOnly,
|
|
177
|
+
coarseTableCellsOnly = _ref5$coarseTableCell === void 0 ? false : _ref5$coarseTableCell;
|
|
148
178
|
var decorations = [];
|
|
149
179
|
// Coarse path: inside the large table, only cell/header overlays are kept — the
|
|
150
180
|
// table/row/paragraph decorations there are redundant and cause expensive per-cell
|
|
@@ -190,10 +220,10 @@ var calculateNodesForBlockDecoration = function calculateNodesForBlockDecoration
|
|
|
190
220
|
*
|
|
191
221
|
* Callers are responsible for the `smart` diffType and gate checks.
|
|
192
222
|
*/
|
|
193
|
-
export var isDeletedContentPlacedBelow = function isDeletedContentPlacedBelow(
|
|
194
|
-
var change =
|
|
195
|
-
deletedDiffPlacement =
|
|
196
|
-
inlineDeletedDiffPlacement =
|
|
223
|
+
export var isDeletedContentPlacedBelow = function isDeletedContentPlacedBelow(_ref6) {
|
|
224
|
+
var change = _ref6.change,
|
|
225
|
+
deletedDiffPlacement = _ref6.deletedDiffPlacement,
|
|
226
|
+
inlineDeletedDiffPlacement = _ref6.inlineDeletedDiffPlacement;
|
|
197
227
|
var level = smartChangeLevel(change);
|
|
198
228
|
if (level === 'node' || level === 'paragraph') {
|
|
199
229
|
return deletedDiffPlacement === 'bottom';
|
|
@@ -202,31 +232,32 @@ export var isDeletedContentPlacedBelow = function isDeletedContentPlacedBelow(_r
|
|
|
202
232
|
// Inline-level (undefined) and sentence-level changes.
|
|
203
233
|
return inlineDeletedDiffPlacement === 'after';
|
|
204
234
|
};
|
|
205
|
-
var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(
|
|
206
|
-
var state =
|
|
207
|
-
pluginState =
|
|
208
|
-
nodeViewSerializer =
|
|
209
|
-
colorScheme =
|
|
210
|
-
intl =
|
|
211
|
-
activeIndexPos =
|
|
212
|
-
api =
|
|
213
|
-
|
|
214
|
-
isInverted =
|
|
215
|
-
|
|
216
|
-
diffType =
|
|
217
|
-
|
|
218
|
-
hideDeletedDiffs =
|
|
219
|
-
|
|
220
|
-
hideAddedDiffsUnderlineParam =
|
|
221
|
-
|
|
222
|
-
showIndicators =
|
|
223
|
-
smartThresholds =
|
|
224
|
-
|
|
225
|
-
deletedDiffPlacement =
|
|
226
|
-
|
|
227
|
-
inlineDeletedDiffPlacement =
|
|
235
|
+
var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref7) {
|
|
236
|
+
var state = _ref7.state,
|
|
237
|
+
pluginState = _ref7.pluginState,
|
|
238
|
+
nodeViewSerializer = _ref7.nodeViewSerializer,
|
|
239
|
+
colorScheme = _ref7.colorScheme,
|
|
240
|
+
intl = _ref7.intl,
|
|
241
|
+
activeIndexPos = _ref7.activeIndexPos,
|
|
242
|
+
api = _ref7.api,
|
|
243
|
+
_ref7$isInverted = _ref7.isInverted,
|
|
244
|
+
isInverted = _ref7$isInverted === void 0 ? false : _ref7$isInverted,
|
|
245
|
+
_ref7$diffType = _ref7.diffType,
|
|
246
|
+
diffType = _ref7$diffType === void 0 ? getDefaultDiffType() : _ref7$diffType,
|
|
247
|
+
_ref7$hideDeletedDiff = _ref7.hideDeletedDiffs,
|
|
248
|
+
hideDeletedDiffs = _ref7$hideDeletedDiff === void 0 ? false : _ref7$hideDeletedDiff,
|
|
249
|
+
_ref7$hideAddedDiffsU = _ref7.hideAddedDiffsUnderline,
|
|
250
|
+
hideAddedDiffsUnderlineParam = _ref7$hideAddedDiffsU === void 0 ? false : _ref7$hideAddedDiffsU,
|
|
251
|
+
_ref7$showIndicators = _ref7.showIndicators,
|
|
252
|
+
showIndicators = _ref7$showIndicators === void 0 ? false : _ref7$showIndicators,
|
|
253
|
+
smartThresholds = _ref7.smartThresholds,
|
|
254
|
+
_ref7$deletedDiffPlac = _ref7.deletedDiffPlacement,
|
|
255
|
+
deletedDiffPlacement = _ref7$deletedDiffPlac === void 0 ? 'top' : _ref7$deletedDiffPlac,
|
|
256
|
+
_ref7$inlineDeletedDi = _ref7.inlineDeletedDiffPlacement,
|
|
257
|
+
inlineDeletedDiffPlacement = _ref7$inlineDeletedDi === void 0 ? 'before' : _ref7$inlineDeletedDi;
|
|
228
258
|
var originalDoc = pluginState.originalDoc,
|
|
229
259
|
steps = pluginState.steps,
|
|
260
|
+
stepAttributions = pluginState.stepAttributions,
|
|
230
261
|
isDisplayingChanges = pluginState.isDisplayingChanges;
|
|
231
262
|
if (!originalDoc || !isDisplayingChanges) {
|
|
232
263
|
return {
|
|
@@ -240,8 +271,23 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
240
271
|
var hideAddedDiffsUnderline = hideAddedDiffsUnderlineParam && fg('platform_editor_ai_smart_diff');
|
|
241
272
|
var tr = state.tr;
|
|
242
273
|
var steppedDoc = originalDoc;
|
|
274
|
+
var attributionColoringEnabled = isAttributionColoringEnabled(stepAttributions);
|
|
275
|
+
var simplifiedSteps;
|
|
276
|
+
var simplifiedStepAttributions = [];
|
|
277
|
+
if (attributionColoringEnabled) {
|
|
278
|
+
var simplifiedStepsWithAttribution = simplifyStepsWithAttribution(steps, stepAttributions !== null && stepAttributions !== void 0 ? stepAttributions : [], originalDoc);
|
|
279
|
+
simplifiedSteps = simplifiedStepsWithAttribution.map(function (_ref8) {
|
|
280
|
+
var step = _ref8.step;
|
|
281
|
+
return step;
|
|
282
|
+
});
|
|
283
|
+
simplifiedStepAttributions = simplifiedStepsWithAttribution.map(function (_ref9) {
|
|
284
|
+
var stepAttribution = _ref9.stepAttribution;
|
|
285
|
+
return stepAttribution;
|
|
286
|
+
});
|
|
287
|
+
} else {
|
|
288
|
+
simplifiedSteps = simplifySteps(steps, originalDoc);
|
|
289
|
+
}
|
|
243
290
|
var attrSteps = [];
|
|
244
|
-
var simplifiedSteps = simplifySteps(steps, originalDoc);
|
|
245
291
|
var stepMaps = [];
|
|
246
292
|
var _iterator = _createForOfIteratorHelper(simplifiedSteps),
|
|
247
293
|
_step;
|
|
@@ -289,17 +335,45 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
289
335
|
// gated with it; other diff types keep the library default so their output is
|
|
290
336
|
// unchanged.
|
|
291
337
|
var tokenEncoder = diffType === 'smart' && fg('platform_editor_ai_smart_diff') ? attrAwareTokenEncoder : undefined;
|
|
292
|
-
var
|
|
293
|
-
var
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
338
|
+
var changes;
|
|
339
|
+
var attributedChanges = [];
|
|
340
|
+
var attributionColors;
|
|
341
|
+
if (attributionColoringEnabled) {
|
|
342
|
+
var changeset = ChangeSet.create(originalDoc, function (left, right) {
|
|
343
|
+
return getAttributionKey(left) === getAttributionKey(right) ? left.stepIndex > right.stepIndex ? left : right :
|
|
344
|
+
// `prosemirror-changeset` uses null as its incompatible-data sentinel even
|
|
345
|
+
// though its public combine callback is typed as returning Data.
|
|
346
|
+
null;
|
|
347
|
+
}, tokenEncoder).addSteps(steppedDoc, stepMaps, simplifiedStepAttributions.map(function (attribution, stepIndex) {
|
|
348
|
+
return _objectSpread(_objectSpread({}, attribution), {}, {
|
|
349
|
+
stepIndex: stepIndex
|
|
350
|
+
});
|
|
351
|
+
}));
|
|
352
|
+
attributedChanges = diffBySteps(originalDoc, simplifiedSteps, simplifiedStepAttributions);
|
|
353
|
+
changes = getAttributedChanges({
|
|
354
|
+
changeset: changeset,
|
|
355
|
+
originalDoc: originalDoc,
|
|
356
|
+
steppedDoc: steppedDoc,
|
|
357
|
+
diffType: diffType,
|
|
358
|
+
tr: tr,
|
|
359
|
+
attributedChanges: attributedChanges,
|
|
360
|
+
intl: intl,
|
|
361
|
+
smartThresholds: smartThresholds
|
|
362
|
+
});
|
|
363
|
+
attributionColors = createAttributionColorMap(simplifiedStepAttributions);
|
|
364
|
+
} else {
|
|
365
|
+
var _changeset = ChangeSet.create(originalDoc, undefined, tokenEncoder).addSteps(steppedDoc, stepMaps, tr.doc);
|
|
366
|
+
changes = getChanges({
|
|
367
|
+
changeset: _changeset,
|
|
368
|
+
originalDoc: originalDoc,
|
|
369
|
+
steppedDoc: steppedDoc,
|
|
370
|
+
diffType: diffType,
|
|
371
|
+
tr: tr,
|
|
372
|
+
steps: simplifiedSteps,
|
|
373
|
+
intl: intl,
|
|
374
|
+
smartThresholds: smartThresholds
|
|
375
|
+
});
|
|
376
|
+
}
|
|
303
377
|
var decorations = [];
|
|
304
378
|
|
|
305
379
|
/**
|
|
@@ -312,6 +386,7 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
312
386
|
// Our default operations are insertions, so it should match the opposite of isInverted.
|
|
313
387
|
var isInserted = !isInverted;
|
|
314
388
|
var createDecorationsForChange = function createDecorationsForChange(change) {
|
|
389
|
+
var changeColorScheme = attributionColors ? getColorSchemeForChange(change, attributedChanges, attributionColors, colorScheme) : colorScheme;
|
|
315
390
|
var isActive = activeIndexPos && change.fromB === activeIndexPos.from && change.toB === activeIndexPos.to;
|
|
316
391
|
|
|
317
392
|
// Hoisted because it decides BOTH where the deleted widget is anchored and — since the
|
|
@@ -366,7 +441,7 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
366
441
|
toB: to
|
|
367
442
|
},
|
|
368
443
|
doc: tr.doc,
|
|
369
|
-
colorScheme:
|
|
444
|
+
colorScheme: changeColorScheme,
|
|
370
445
|
isActive: isActive,
|
|
371
446
|
diffType: diffType
|
|
372
447
|
}, isExtendedEnabled(diffType) && {
|
|
@@ -387,7 +462,7 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
387
462
|
decorations.push.apply(decorations, _toConsumableArray(createInlineChangedDecoration(_objectSpread({
|
|
388
463
|
change: change,
|
|
389
464
|
doc: tr.doc,
|
|
390
|
-
colorScheme:
|
|
465
|
+
colorScheme: changeColorScheme,
|
|
391
466
|
isActive: isActive,
|
|
392
467
|
diffType: diffType
|
|
393
468
|
}, isExtendedEnabled(diffType) && {
|
|
@@ -403,7 +478,7 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
403
478
|
doc: tr.doc,
|
|
404
479
|
from: change.fromB,
|
|
405
480
|
to: change.toB,
|
|
406
|
-
colorScheme:
|
|
481
|
+
colorScheme: changeColorScheme
|
|
407
482
|
}, isExtendedEnabled(diffType) && {
|
|
408
483
|
isInserted: isInserted,
|
|
409
484
|
shouldHideDeleted: shouldHideDeleted,
|
|
@@ -422,7 +497,7 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
422
497
|
change: change,
|
|
423
498
|
doc: originalDoc,
|
|
424
499
|
nodeViewSerializer: nodeViewSerializer,
|
|
425
|
-
colorScheme:
|
|
500
|
+
colorScheme: changeColorScheme,
|
|
426
501
|
newDoc: tr.doc,
|
|
427
502
|
intl: intl,
|
|
428
503
|
activeIndexPos: activeIndexPos
|
|
@@ -539,42 +614,42 @@ var calculateDiffDecorationsInner = function calculateDiffDecorationsInner(_ref6
|
|
|
539
614
|
};
|
|
540
615
|
export var calculateDiffDecorations = memoizeOne(calculateDiffDecorationsInner,
|
|
541
616
|
// Cache results unless relevant inputs change
|
|
542
|
-
function (
|
|
543
|
-
var
|
|
544
|
-
var
|
|
545
|
-
|
|
546
|
-
pluginState =
|
|
547
|
-
state =
|
|
548
|
-
colorScheme =
|
|
549
|
-
intl =
|
|
550
|
-
activeIndexPos =
|
|
551
|
-
isInverted =
|
|
552
|
-
diffType =
|
|
553
|
-
hideDeletedDiffs =
|
|
554
|
-
hideAddedDiffsUnderline =
|
|
555
|
-
showIndicators =
|
|
556
|
-
smartThresholds =
|
|
557
|
-
deletedDiffPlacement =
|
|
558
|
-
inlineDeletedDiffPlacement =
|
|
559
|
-
var
|
|
560
|
-
|
|
561
|
-
lastPluginState =
|
|
562
|
-
lastState =
|
|
563
|
-
lastColorScheme =
|
|
564
|
-
lastIntl =
|
|
565
|
-
lastActiveIndexPos =
|
|
566
|
-
lastIsInverted =
|
|
567
|
-
lastDiffType =
|
|
568
|
-
lastHideDeletedDiffs =
|
|
569
|
-
lastHideAddedDiffsUnderline =
|
|
570
|
-
lastShowIndicators =
|
|
571
|
-
lastSmartThresholds =
|
|
572
|
-
lastDeletedDiffPlacement =
|
|
573
|
-
lastInlineDeletedDiffPlacement =
|
|
617
|
+
function (_ref0, _ref1) {
|
|
618
|
+
var _ref13;
|
|
619
|
+
var _ref10 = _slicedToArray(_ref0, 1),
|
|
620
|
+
_ref10$ = _ref10[0],
|
|
621
|
+
pluginState = _ref10$.pluginState,
|
|
622
|
+
state = _ref10$.state,
|
|
623
|
+
colorScheme = _ref10$.colorScheme,
|
|
624
|
+
intl = _ref10$.intl,
|
|
625
|
+
activeIndexPos = _ref10$.activeIndexPos,
|
|
626
|
+
isInverted = _ref10$.isInverted,
|
|
627
|
+
diffType = _ref10$.diffType,
|
|
628
|
+
hideDeletedDiffs = _ref10$.hideDeletedDiffs,
|
|
629
|
+
hideAddedDiffsUnderline = _ref10$.hideAddedDiffsUnderline,
|
|
630
|
+
showIndicators = _ref10$.showIndicators,
|
|
631
|
+
smartThresholds = _ref10$.smartThresholds,
|
|
632
|
+
deletedDiffPlacement = _ref10$.deletedDiffPlacement,
|
|
633
|
+
inlineDeletedDiffPlacement = _ref10$.inlineDeletedDiffPlacement;
|
|
634
|
+
var _ref11 = _slicedToArray(_ref1, 1),
|
|
635
|
+
_ref11$ = _ref11[0],
|
|
636
|
+
lastPluginState = _ref11$.pluginState,
|
|
637
|
+
lastState = _ref11$.state,
|
|
638
|
+
lastColorScheme = _ref11$.colorScheme,
|
|
639
|
+
lastIntl = _ref11$.intl,
|
|
640
|
+
lastActiveIndexPos = _ref11$.activeIndexPos,
|
|
641
|
+
lastIsInverted = _ref11$.isInverted,
|
|
642
|
+
lastDiffType = _ref11$.diffType,
|
|
643
|
+
lastHideDeletedDiffs = _ref11$.hideDeletedDiffs,
|
|
644
|
+
lastHideAddedDiffsUnderline = _ref11$.hideAddedDiffsUnderline,
|
|
645
|
+
lastShowIndicators = _ref11$.showIndicators,
|
|
646
|
+
lastSmartThresholds = _ref11$.smartThresholds,
|
|
647
|
+
lastDeletedDiffPlacement = _ref11$.deletedDiffPlacement,
|
|
648
|
+
lastInlineDeletedDiffPlacement = _ref11$.inlineDeletedDiffPlacement;
|
|
574
649
|
var originalDocIsSame = lastPluginState.originalDoc && pluginState.originalDoc && pluginState.originalDoc.eq(lastPluginState.originalDoc);
|
|
575
650
|
if (isExtendedEnabled(diffType)) {
|
|
576
|
-
var
|
|
577
|
-
return (
|
|
651
|
+
var _ref12;
|
|
652
|
+
return (_ref12 = colorScheme === lastColorScheme && intl.locale === lastIntl.locale && isInverted === lastIsInverted && diffType === lastDiffType && isEqual(activeIndexPos, lastActiveIndexPos) && originalDocIsSame && isEqual(pluginState.steps, lastPluginState.steps) && isEqual(pluginState.stepAttributions, lastPluginState.stepAttributions) && state.doc.eq(lastState.doc) && hideDeletedDiffs === lastHideDeletedDiffs && hideAddedDiffsUnderline === lastHideAddedDiffsUnderline && showIndicators === lastShowIndicators && isEqual(smartThresholds, lastSmartThresholds) && deletedDiffPlacement === lastDeletedDiffPlacement && inlineDeletedDiffPlacement === lastInlineDeletedDiffPlacement) !== null && _ref12 !== void 0 ? _ref12 : false;
|
|
578
653
|
}
|
|
579
|
-
return (
|
|
654
|
+
return (_ref13 = originalDocIsSame && isEqual(pluginState.steps, lastPluginState.steps) && isEqual(pluginState.stepAttributions, lastPluginState.stepAttributions) && state.doc.eq(lastState.doc) && colorScheme === lastColorScheme && intl.locale === lastIntl.locale && isEqual(activeIndexPos, lastActiveIndexPos) && hideDeletedDiffs === lastHideDeletedDiffs) !== null && _ref13 !== void 0 ? _ref13 : false;
|
|
580
655
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -8,6 +9,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
|
|
|
8
9
|
import { simplifyChanges, ChangeSet } from 'prosemirror-changeset';
|
|
9
10
|
import { Mark } from '@atlaskit/editor-prosemirror/model';
|
|
10
11
|
import { Mapping, ReplaceStep } from '@atlaskit/editor-prosemirror/transform';
|
|
12
|
+
import { getAttributionKey } from '../decorations/colorSchemes/attributions';
|
|
11
13
|
import { attrAwareTokenEncoder } from './attrAwareTokenEncoder';
|
|
12
14
|
import { optimizeChanges } from './optimizeChanges';
|
|
13
15
|
var WORD_CHAR_REGEX = /(?:[0-9A-Z_a-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDD40-\uDD65\uDD6F-\uDD85\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDED0-\uDEE3\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0\uDFF0-\uDFF9]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDDB0-\uDDDB\uDDE0-\uDDE9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D\uDD30-\uDD39]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDD70-\uDD79\uDE40-\uDE96\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2-\uDFF6]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDDD0-\uDDED\uDDF0-\uDDFA\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/;
|
|
@@ -198,9 +200,10 @@ var createMapping = function createMapping(maps) {
|
|
|
198
200
|
return mapping;
|
|
199
201
|
};
|
|
200
202
|
var createSpans = function createSpans(length) {
|
|
203
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
201
204
|
return length > 0 ? [{
|
|
202
205
|
length: length,
|
|
203
|
-
data:
|
|
206
|
+
data: data
|
|
204
207
|
}] : [];
|
|
205
208
|
};
|
|
206
209
|
var mergeOverlappingByNewDocRange = function mergeOverlappingByNewDocRange(changes) {
|
|
@@ -213,8 +216,11 @@ var mergeOverlappingByNewDocRange = function mergeOverlappingByNewDocRange(chang
|
|
|
213
216
|
var merged = [];
|
|
214
217
|
var current = _objectSpread({}, sortedChanges[0]);
|
|
215
218
|
for (var i = 1; i < sortedChanges.length; i++) {
|
|
219
|
+
var _, _2;
|
|
216
220
|
var next = sortedChanges[i];
|
|
217
|
-
var
|
|
221
|
+
var currentIdentity = getAttributionKey((_ = [].concat(_toConsumableArray(current.deleted), _toConsumableArray(current.inserted))[0]) === null || _ === void 0 ? void 0 : _.data);
|
|
222
|
+
var nextIdentity = getAttributionKey((_2 = [].concat(_toConsumableArray(next.deleted), _toConsumableArray(next.inserted))[0]) === null || _2 === void 0 ? void 0 : _2.data);
|
|
223
|
+
var isOverlapping = next.fromB <= current.toB && currentIdentity === nextIdentity;
|
|
218
224
|
if (isOverlapping) {
|
|
219
225
|
current = {
|
|
220
226
|
fromA: Math.min(current.fromA, next.fromA),
|
|
@@ -268,16 +274,18 @@ var shouldCheckGranularDiff = function shouldCheckGranularDiff(step, before, fro
|
|
|
268
274
|
var isTextContentEqual = (replacedNode === null || replacedNode === void 0 ? void 0 : replacedNode.textContent) === (replacingNode === null || replacingNode === void 0 ? void 0 : replacingNode.textContent);
|
|
269
275
|
return !isTextContentEqual || isTextContentEqual && hasSameChildMarks(replacedNode, replacingNode);
|
|
270
276
|
};
|
|
271
|
-
export var diffBySteps = function diffBySteps(originalDoc, steps) {
|
|
277
|
+
export var diffBySteps = function diffBySteps(originalDoc, steps, stepAttributions) {
|
|
272
278
|
var changes = [];
|
|
273
279
|
var currentDoc = originalDoc;
|
|
274
280
|
var successfulStepMaps = [];
|
|
275
281
|
var rangedSteps = [];
|
|
276
|
-
var _iterator2 = _createForOfIteratorHelper(steps),
|
|
282
|
+
var _iterator2 = _createForOfIteratorHelper(steps.entries()),
|
|
277
283
|
_step2;
|
|
278
284
|
try {
|
|
279
285
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
280
|
-
var
|
|
286
|
+
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
287
|
+
stepIndex = _step2$value[0],
|
|
288
|
+
step = _step2$value[1];
|
|
281
289
|
var before = currentDoc;
|
|
282
290
|
var result = step.apply(currentDoc);
|
|
283
291
|
if (result.failed !== null || !result.doc) {
|
|
@@ -292,6 +300,9 @@ export var diffBySteps = function diffBySteps(originalDoc, steps) {
|
|
|
292
300
|
from: rangeStep.from,
|
|
293
301
|
to: rangeStep.to,
|
|
294
302
|
mapIndex: successfulStepMaps.length,
|
|
303
|
+
stepAttribution: stepAttributions !== null && stepAttributions !== void 0 && stepAttributions[stepIndex] ? _objectSpread(_objectSpread({}, stepAttributions[stepIndex]), {}, {
|
|
304
|
+
stepIndex: stepIndex
|
|
305
|
+
}) : null,
|
|
295
306
|
step: step,
|
|
296
307
|
stepMap: stepMap
|
|
297
308
|
});
|
|
@@ -377,8 +388,8 @@ export var diffBySteps = function diffBySteps(originalDoc, steps) {
|
|
|
377
388
|
toA: granularToA,
|
|
378
389
|
fromB: granularFromB,
|
|
379
390
|
toB: granularToB,
|
|
380
|
-
deleted: createSpans(Math.max(0, granularToA - granularFromA)),
|
|
381
|
-
inserted: createSpans(Math.max(0, granularToB - granularFromB))
|
|
391
|
+
deleted: createSpans(Math.max(0, granularToA - granularFromA), rangedStep.stepAttribution),
|
|
392
|
+
inserted: createSpans(Math.max(0, granularToB - granularFromB), rangedStep.stepAttribution)
|
|
382
393
|
});
|
|
383
394
|
}
|
|
384
395
|
} catch (err) {
|
|
@@ -393,8 +404,8 @@ export var diffBySteps = function diffBySteps(originalDoc, steps) {
|
|
|
393
404
|
toA: toA,
|
|
394
405
|
fromB: fromB,
|
|
395
406
|
toB: toB,
|
|
396
|
-
deleted: createSpans(Math.max(0, toA - fromA)),
|
|
397
|
-
inserted: createSpans(Math.max(0, toB - fromB))
|
|
407
|
+
deleted: createSpans(Math.max(0, toA - fromA), rangedStep.stepAttribution),
|
|
408
|
+
inserted: createSpans(Math.max(0, toB - fromB), rangedStep.stepAttribution)
|
|
398
409
|
});
|
|
399
410
|
}
|
|
400
411
|
return mergeOverlappingByNewDocRange(changes);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
+
import { simplifyChanges } from 'prosemirror-changeset';
|
|
9
|
+
import { getAttributionKey } from '../decorations/colorSchemes/attributions';
|
|
10
|
+
import { optimizeChanges } from './optimizeChanges';
|
|
11
|
+
var getAttributionIdentity = function getAttributionIdentity(change) {
|
|
12
|
+
var identities = new Set();
|
|
13
|
+
for (var _i = 0, _arr = [].concat(_toConsumableArray(change.deleted), _toConsumableArray(change.inserted)); _i < _arr.length; _i++) {
|
|
14
|
+
var span = _arr[_i];
|
|
15
|
+
identities.add(getAttributionKey(span.data));
|
|
16
|
+
}
|
|
17
|
+
if (identities.size > 1) {
|
|
18
|
+
return {
|
|
19
|
+
key: undefined,
|
|
20
|
+
mergeable: false
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
key: identities.values().next().value,
|
|
25
|
+
mergeable: true
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Simplifies and optimizes consecutive changes without crossing an attribution boundary.
|
|
31
|
+
* A change which already contains more than one identity is deliberately kept isolated.
|
|
32
|
+
*/
|
|
33
|
+
export var simplifyChangesWithAttribution = function simplifyChangesWithAttribution(changes, doc) {
|
|
34
|
+
var result = [];
|
|
35
|
+
var run = [];
|
|
36
|
+
var runIdentity;
|
|
37
|
+
var flush = function flush() {
|
|
38
|
+
if (run.length > 0) {
|
|
39
|
+
// Some show-diff producers use structurally compatible Change objects rather than the
|
|
40
|
+
// library class. `simplifyChanges` reads runtime `lenA`/`lenB` getters even though they
|
|
41
|
+
// are intentionally omitted from its public declarations, so add equivalent getters
|
|
42
|
+
// without calling the library's internal constructor.
|
|
43
|
+
var normalizedRun = run.map(function (change) {
|
|
44
|
+
return _objectSpread(_objectSpread({}, change), {}, {
|
|
45
|
+
get lenA() {
|
|
46
|
+
return change.toA - change.fromA;
|
|
47
|
+
},
|
|
48
|
+
get lenB() {
|
|
49
|
+
return change.toB - change.fromB;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
result.push.apply(result, _toConsumableArray(optimizeChanges(simplifyChanges(normalizedRun, doc))));
|
|
54
|
+
}
|
|
55
|
+
run = [];
|
|
56
|
+
runIdentity = undefined;
|
|
57
|
+
};
|
|
58
|
+
var _iterator = _createForOfIteratorHelper(changes),
|
|
59
|
+
_step;
|
|
60
|
+
try {
|
|
61
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
62
|
+
var _runIdentity;
|
|
63
|
+
var change = _step.value;
|
|
64
|
+
var identity = getAttributionIdentity(change);
|
|
65
|
+
var canJoinRun = ((_runIdentity = runIdentity) === null || _runIdentity === void 0 ? void 0 : _runIdentity.mergeable) === true && identity.mergeable && runIdentity.key === identity.key;
|
|
66
|
+
if (run.length > 0 && !canJoinRun) {
|
|
67
|
+
flush();
|
|
68
|
+
}
|
|
69
|
+
run.push(change);
|
|
70
|
+
runIdentity = identity;
|
|
71
|
+
if (!identity.mergeable) {
|
|
72
|
+
flush();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
} catch (err) {
|
|
76
|
+
_iterator.e(err);
|
|
77
|
+
} finally {
|
|
78
|
+
_iterator.f();
|
|
79
|
+
}
|
|
80
|
+
flush();
|
|
81
|
+
return result;
|
|
82
|
+
};
|