@manuscripts/article-editor 4.2.8 → 4.2.10

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.
Files changed (103) hide show
  1. package/dist/cjs/EditorApp.js +8 -1
  2. package/dist/cjs/EditorApp.js.map +1 -1
  3. package/dist/cjs/Main.js +3 -3
  4. package/dist/cjs/Main.js.map +1 -1
  5. package/dist/cjs/components/inspector/SnapshotsList.js +14 -2
  6. package/dist/cjs/components/inspector/SnapshotsList.js.map +1 -1
  7. package/dist/cjs/components/projects/EditorElement.js +5 -4
  8. package/dist/cjs/components/projects/EditorElement.js.map +1 -1
  9. package/dist/cjs/components/projects/Inspector.js +6 -0
  10. package/dist/cjs/components/projects/Inspector.js.map +1 -1
  11. package/dist/cjs/components/projects/ManuscriptPageContainer.js +4 -3
  12. package/dist/cjs/components/projects/ManuscriptPageContainer.js.map +1 -1
  13. package/dist/cjs/components/tools/CompareDocumentsModal.js +170 -0
  14. package/dist/cjs/components/tools/CompareDocumentsModal.js.map +1 -0
  15. package/dist/cjs/components/track-changes/SortByDropdown.js +1 -1
  16. package/dist/cjs/components/track-changes/TrackChangesPanel.js +16 -3
  17. package/dist/cjs/components/track-changes/TrackChangesPanel.js.map +1 -1
  18. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js +7 -3
  19. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  20. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js +6 -2
  21. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js.map +1 -1
  22. package/dist/cjs/hooks/use-compare-documents.js +69 -0
  23. package/dist/cjs/hooks/use-compare-documents.js.map +1 -0
  24. package/dist/cjs/hooks/use-create-editor.js +30 -13
  25. package/dist/cjs/hooks/use-create-editor.js.map +1 -1
  26. package/dist/cjs/index.js +3 -3
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/lib/change-handlers.js +10 -1
  29. package/dist/cjs/lib/change-handlers.js.map +1 -1
  30. package/dist/cjs/lib/comparison/compare-documents.js +53 -0
  31. package/dist/cjs/lib/comparison/compare-documents.js.map +1 -0
  32. package/dist/cjs/lib/comparison/compare-paragraph-like.js +388 -0
  33. package/dist/cjs/lib/comparison/compare-paragraph-like.js.map +1 -0
  34. package/dist/cjs/lib/comparison/compare-table-element.js +567 -0
  35. package/dist/cjs/lib/comparison/compare-table-element.js.map +1 -0
  36. package/dist/cjs/lib/comparison/create-dataTracked-attrs.js +60 -0
  37. package/dist/cjs/lib/comparison/create-dataTracked-attrs.js.map +1 -0
  38. package/dist/cjs/lib/comparison/distribute-nodes.js +131 -0
  39. package/dist/cjs/lib/comparison/distribute-nodes.js.map +1 -0
  40. package/dist/cjs/lib/comparison/rebuild-nodes-tree.js +76 -0
  41. package/dist/cjs/lib/comparison/rebuild-nodes-tree.js.map +1 -0
  42. package/dist/cjs/store/Store.js +7 -2
  43. package/dist/cjs/store/Store.js.map +1 -1
  44. package/dist/es/EditorApp.js +8 -1
  45. package/dist/es/EditorApp.js.map +1 -1
  46. package/dist/es/Main.js +3 -3
  47. package/dist/es/Main.js.map +1 -1
  48. package/dist/es/components/inspector/SnapshotsList.js +15 -3
  49. package/dist/es/components/inspector/SnapshotsList.js.map +1 -1
  50. package/dist/es/components/projects/EditorElement.js +5 -4
  51. package/dist/es/components/projects/EditorElement.js.map +1 -1
  52. package/dist/es/components/projects/Inspector.js +6 -0
  53. package/dist/es/components/projects/Inspector.js.map +1 -1
  54. package/dist/es/components/projects/ManuscriptPageContainer.js +4 -3
  55. package/dist/es/components/projects/ManuscriptPageContainer.js.map +1 -1
  56. package/dist/es/components/tools/CompareDocumentsModal.js +140 -0
  57. package/dist/es/components/tools/CompareDocumentsModal.js.map +1 -0
  58. package/dist/es/components/track-changes/SortByDropdown.js +1 -1
  59. package/dist/es/components/track-changes/TrackChangesPanel.js +16 -3
  60. package/dist/es/components/track-changes/TrackChangesPanel.js.map +1 -1
  61. package/dist/es/components/track-changes/suggestion-list/Suggestion.js +7 -3
  62. package/dist/es/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  63. package/dist/es/components/track-changes/suggestion-list/SuggestionList.js +6 -2
  64. package/dist/es/components/track-changes/suggestion-list/SuggestionList.js.map +1 -1
  65. package/dist/es/hooks/use-compare-documents.js +65 -0
  66. package/dist/es/hooks/use-compare-documents.js.map +1 -0
  67. package/dist/es/hooks/use-create-editor.js +31 -14
  68. package/dist/es/hooks/use-create-editor.js.map +1 -1
  69. package/dist/es/index.js +3 -3
  70. package/dist/es/index.js.map +1 -1
  71. package/dist/es/lib/change-handlers.js +10 -1
  72. package/dist/es/lib/change-handlers.js.map +1 -1
  73. package/dist/es/lib/comparison/compare-documents.js +48 -0
  74. package/dist/es/lib/comparison/compare-documents.js.map +1 -0
  75. package/dist/es/lib/comparison/compare-paragraph-like.js +378 -0
  76. package/dist/es/lib/comparison/compare-paragraph-like.js.map +1 -0
  77. package/dist/es/lib/comparison/compare-table-element.js +559 -0
  78. package/dist/es/lib/comparison/compare-table-element.js.map +1 -0
  79. package/dist/es/lib/comparison/create-dataTracked-attrs.js +54 -0
  80. package/dist/es/lib/comparison/create-dataTracked-attrs.js.map +1 -0
  81. package/dist/es/lib/comparison/distribute-nodes.js +127 -0
  82. package/dist/es/lib/comparison/distribute-nodes.js.map +1 -0
  83. package/dist/es/lib/comparison/rebuild-nodes-tree.js +72 -0
  84. package/dist/es/lib/comparison/rebuild-nodes-tree.js.map +1 -0
  85. package/dist/es/store/Store.js +7 -2
  86. package/dist/es/store/Store.js.map +1 -1
  87. package/dist/types/EditorApp.d.ts +2 -1
  88. package/dist/types/Main.d.ts +1 -1
  89. package/dist/types/components/projects/ManuscriptPageContainer.d.ts +1 -1
  90. package/dist/types/components/tools/CompareDocumentsModal.d.ts +11 -0
  91. package/dist/types/components/track-changes/TrackChangesPanel.d.ts +1 -1
  92. package/dist/types/components/track-changes/suggestion-list/Suggestion.d.ts +1 -1
  93. package/dist/types/components/track-changes/suggestion-list/SuggestionList.d.ts +3 -3
  94. package/dist/types/hooks/use-compare-documents.d.ts +24 -0
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/lib/comparison/compare-documents.d.ts +16 -0
  97. package/dist/types/lib/comparison/compare-paragraph-like.d.ts +23 -0
  98. package/dist/types/lib/comparison/compare-table-element.d.ts +21 -0
  99. package/dist/types/lib/comparison/create-dataTracked-attrs.d.ts +15 -0
  100. package/dist/types/lib/comparison/distribute-nodes.d.ts +19 -0
  101. package/dist/types/lib/comparison/rebuild-nodes-tree.d.ts +14 -0
  102. package/dist/types/store/Store.d.ts +3 -1
  103. package/package.json +5 -3
@@ -0,0 +1,567 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compareFigCaption = exports.compareTableElement = void 0;
7
+ /*!
8
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
9
+ *
10
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
11
+ *
12
+ * The Original Code is manuscripts-frontend.
13
+ *
14
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
15
+ *
16
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
17
+ */
18
+ const transform_1 = require("@manuscripts/transform");
19
+ const diff_match_patch_1 = __importDefault(require("diff-match-patch"));
20
+ const lodash_1 = require("lodash");
21
+ const uuid_1 = require("uuid");
22
+ const compare_paragraph_like_1 = require("./compare-paragraph-like");
23
+ const create_dataTracked_attrs_1 = require("./create-dataTracked-attrs");
24
+ /**
25
+ * Compare two table elements and track changes between them.
26
+ * This is the main entry point for table comparison.
27
+ */
28
+ const compareTableElement = (originalNode, comparisonNode) => {
29
+ if (!originalNode || !comparisonNode) {
30
+ return comparisonNode;
31
+ }
32
+ const newContent = [];
33
+ comparisonNode.content.forEach((comparisonChild) => {
34
+ let originalChild = undefined;
35
+ originalNode.content.forEach((origChild) => {
36
+ if (origChild.type.name === comparisonChild.type.name) {
37
+ originalChild = origChild;
38
+ }
39
+ });
40
+ if (originalChild) {
41
+ if (comparisonChild.type.name === 'table') {
42
+ newContent.push(compareTable(originalChild, comparisonChild));
43
+ }
44
+ else if (comparisonChild.type.name === 'figcaption') {
45
+ newContent.push((0, exports.compareFigCaption)(originalChild, comparisonChild));
46
+ }
47
+ else {
48
+ const origWithAttrs = originalChild;
49
+ const compWithAttrs = comparisonChild;
50
+ if (!(0, lodash_1.isEqual)(origWithAttrs.attrs, compWithAttrs.attrs)) {
51
+ const newAttrs = {
52
+ ...compWithAttrs.attrs,
53
+ dataTracked: [
54
+ (0, create_dataTracked_attrs_1.createComparisonSetAttrsDataTracked)('', origWithAttrs.attrs),
55
+ ],
56
+ };
57
+ newContent.push(comparisonChild.type.create(newAttrs, comparisonChild.content));
58
+ }
59
+ else {
60
+ newContent.push(comparisonChild);
61
+ }
62
+ }
63
+ }
64
+ else {
65
+ newContent.push(markNodeAsInserted(comparisonChild));
66
+ }
67
+ });
68
+ originalNode.content.forEach((originalChild) => {
69
+ let found = false;
70
+ comparisonNode.content.forEach((comparisonChild) => {
71
+ if (originalChild.type.name === comparisonChild.type.name) {
72
+ found = true;
73
+ }
74
+ });
75
+ if (!found) {
76
+ newContent.push(markNodeAsDeleted(originalChild));
77
+ }
78
+ });
79
+ return transform_1.schema.nodes.table_element.create(comparisonNode.attrs, newContent);
80
+ };
81
+ exports.compareTableElement = compareTableElement;
82
+ /**
83
+ * Compare figcaption nodes and their content.
84
+ */
85
+ const compareFigCaption = (originalNode, comparisonNode) => {
86
+ const newContent = [];
87
+ comparisonNode.content.forEach((comparisonChild) => {
88
+ let originalChild = undefined;
89
+ originalNode.content.forEach((origChild) => {
90
+ if (origChild.type.name === comparisonChild.type.name) {
91
+ originalChild = origChild;
92
+ }
93
+ });
94
+ if (originalChild) {
95
+ if (comparisonChild.type.name === 'caption_title') {
96
+ const hasOnlyText = containsOnlyTextNodes(originalChild) &&
97
+ containsOnlyTextNodes(comparisonChild);
98
+ if (hasOnlyText) {
99
+ const result = (0, compare_paragraph_like_1.compareParagraphLike)(originalChild, comparisonChild);
100
+ newContent.push(result);
101
+ }
102
+ else {
103
+ newContent.push(transform_1.schema.nodes.caption_title.create(comparisonChild.attrs, comparisonChild.content));
104
+ }
105
+ }
106
+ else if (comparisonChild.type.name === 'caption') {
107
+ newContent.push(transform_1.schema.nodes.caption.create(comparisonChild.attrs, comparisonChild.content));
108
+ }
109
+ else {
110
+ newContent.push(comparisonChild);
111
+ }
112
+ }
113
+ else {
114
+ newContent.push(markNodeAsInserted(comparisonChild));
115
+ }
116
+ });
117
+ originalNode.content.forEach((originalChild) => {
118
+ let found = false;
119
+ comparisonNode.content.forEach((comparisonChild) => {
120
+ if (originalChild.type.name === comparisonChild.type.name) {
121
+ found = true;
122
+ }
123
+ });
124
+ if (!found) {
125
+ newContent.push(markNodeAsDeleted(originalChild));
126
+ }
127
+ });
128
+ return transform_1.schema.nodes.figcaption.create(comparisonNode.attrs, newContent);
129
+ };
130
+ exports.compareFigCaption = compareFigCaption;
131
+ const containsOnlyTextNodes = (node) => {
132
+ if (!node.content || node.content.childCount === 0) {
133
+ return true;
134
+ }
135
+ for (let i = 0; i < node.content.childCount; i++) {
136
+ const child = node.content.child(i);
137
+ if (child.type.name !== 'text') {
138
+ return false;
139
+ }
140
+ }
141
+ return true;
142
+ };
143
+ /**
144
+ * Compare table nodes and their rows.
145
+ */
146
+ const compareTable = (originalNode, comparisonNode) => {
147
+ const newContent = [];
148
+ const originalRows = [];
149
+ const comparisonRows = [];
150
+ const originalOther = [];
151
+ const comparisonOther = [];
152
+ originalNode.content.forEach((child) => {
153
+ if (child.type.name === 'table_row') {
154
+ originalRows.push(child);
155
+ }
156
+ else {
157
+ originalOther.push(child);
158
+ }
159
+ });
160
+ comparisonNode.content.forEach((child) => {
161
+ if (child.type.name === 'table_row') {
162
+ comparisonRows.push(child);
163
+ }
164
+ else {
165
+ comparisonOther.push(child);
166
+ }
167
+ });
168
+ const matches = findRowMatches(originalRows, comparisonRows);
169
+ const matchedOrigIndices = new Set(matches.map((m) => m.origIndex));
170
+ for (let compIndex = 0; compIndex < comparisonRows.length; compIndex++) {
171
+ const match = matches.find((m) => m.compIndex === compIndex);
172
+ if (match) {
173
+ const originalRow = originalRows[match.origIndex];
174
+ const comparisonRow = comparisonRows[compIndex];
175
+ newContent.push(compareTableRow(originalRow, comparisonRow));
176
+ }
177
+ else {
178
+ newContent.push(markRowAsInserted(comparisonRows[compIndex]));
179
+ }
180
+ }
181
+ for (let origIndex = 0; origIndex < originalRows.length; origIndex++) {
182
+ if (!matchedOrigIndices.has(origIndex)) {
183
+ let insertPosition = 0;
184
+ const prevOrigIndex = origIndex - 1;
185
+ const nextOrigIndex = origIndex + 1;
186
+ if (prevOrigIndex >= 0 && matchedOrigIndices.has(prevOrigIndex)) {
187
+ const prevMatch = matches.find((m) => m.origIndex === prevOrigIndex);
188
+ if (prevMatch) {
189
+ const prevCompIndex = prevMatch.compIndex;
190
+ insertPosition = newContent.findIndex((node) => node.attrs &&
191
+ comparisonRows[prevCompIndex].attrs &&
192
+ node.attrs.id === comparisonRows[prevCompIndex].attrs.id);
193
+ if (insertPosition >= 0) {
194
+ insertPosition += 1;
195
+ }
196
+ }
197
+ }
198
+ else if (nextOrigIndex < originalRows.length &&
199
+ matchedOrigIndices.has(nextOrigIndex)) {
200
+ const nextMatch = matches.find((m) => m.origIndex === nextOrigIndex);
201
+ if (nextMatch) {
202
+ const nextCompIndex = nextMatch.compIndex;
203
+ insertPosition = newContent.findIndex((node) => node.attrs &&
204
+ comparisonRows[nextCompIndex].attrs &&
205
+ node.attrs.id === comparisonRows[nextCompIndex].attrs.id);
206
+ }
207
+ }
208
+ if (insertPosition < 0) {
209
+ insertPosition = Math.min(origIndex, newContent.length);
210
+ }
211
+ newContent.splice(insertPosition, 0, markRowAsDeleted(originalRows[origIndex]));
212
+ }
213
+ }
214
+ comparisonOther.forEach((node) => {
215
+ const originalOtherNode = originalOther.find((n) => n.type.name === node.type.name);
216
+ if (originalOtherNode) {
217
+ const origWithAttrs = originalOtherNode;
218
+ const compWithAttrs = node;
219
+ if (!(0, lodash_1.isEqual)(origWithAttrs.attrs, compWithAttrs.attrs)) {
220
+ const newAttrs = {
221
+ ...compWithAttrs.attrs,
222
+ dataTracked: [
223
+ (0, create_dataTracked_attrs_1.createComparisonSetAttrsDataTracked)('', origWithAttrs.attrs),
224
+ ],
225
+ };
226
+ newContent.push(node.type.create(newAttrs, node.content));
227
+ }
228
+ else {
229
+ newContent.push(node);
230
+ }
231
+ }
232
+ else {
233
+ newContent.push(markNodeAsInserted(node));
234
+ }
235
+ });
236
+ originalOther.forEach((node) => {
237
+ const exists = comparisonOther.some((n) => n.type.name === node.type.name);
238
+ if (!exists) {
239
+ newContent.push(markNodeAsDeleted(node));
240
+ }
241
+ });
242
+ return transform_1.schema.nodes.table.create(comparisonNode.attrs, newContent);
243
+ };
244
+ const findRowMatches = (originalRows, comparisonRows) => {
245
+ const similarityThreshold = 0.7;
246
+ const matches = [];
247
+ const similarityMatrix = [];
248
+ for (let i = 0; i < originalRows.length; i++) {
249
+ similarityMatrix[i] = [];
250
+ for (let j = 0; j < comparisonRows.length; j++) {
251
+ const similarity = calculateRowSimilarity(originalRows[i], comparisonRows[j]);
252
+ similarityMatrix[i][j] =
253
+ similarity >= similarityThreshold ? similarity : 0;
254
+ }
255
+ }
256
+ for (let i = 0; i < originalRows.length; i++) {
257
+ const origRow = originalRows[i];
258
+ if (!origRow.attrs?.id) {
259
+ continue;
260
+ }
261
+ for (let j = 0; j < comparisonRows.length; j++) {
262
+ const compRow = comparisonRows[j];
263
+ if (compRow.attrs?.id && origRow.attrs.id === compRow.attrs.id) {
264
+ matches.push({ origIndex: i, compIndex: j, similarity: 1 });
265
+ for (let x = 0; x < originalRows.length; x++) {
266
+ similarityMatrix[x][j] = 0;
267
+ }
268
+ for (let y = 0; y < comparisonRows.length; y++) {
269
+ similarityMatrix[i][y] = 0;
270
+ }
271
+ break;
272
+ }
273
+ }
274
+ }
275
+ let remainingMatches = true;
276
+ while (remainingMatches) {
277
+ remainingMatches = false;
278
+ let bestMatch = { origIndex: -1, compIndex: -1, similarity: 0 };
279
+ for (let i = 0; i < originalRows.length; i++) {
280
+ for (let j = 0; j < comparisonRows.length; j++) {
281
+ if (similarityMatrix[i][j] > bestMatch.similarity) {
282
+ bestMatch = {
283
+ origIndex: i,
284
+ compIndex: j,
285
+ similarity: similarityMatrix[i][j],
286
+ };
287
+ }
288
+ }
289
+ }
290
+ if (bestMatch.similarity > 0) {
291
+ matches.push(bestMatch);
292
+ remainingMatches = true;
293
+ for (let x = 0; x < originalRows.length; x++) {
294
+ similarityMatrix[x][bestMatch.compIndex] = 0;
295
+ }
296
+ for (let y = 0; y < comparisonRows.length; y++) {
297
+ similarityMatrix[bestMatch.origIndex][y] = 0;
298
+ }
299
+ }
300
+ }
301
+ matches.sort((a, b) => a.origIndex - b.origIndex);
302
+ return matches;
303
+ };
304
+ /**
305
+ * Compare table row nodes and their cells.
306
+ */
307
+ const compareTableRow = (originalRow, comparisonRow) => {
308
+ const newContent = [];
309
+ const originalCells = [];
310
+ const comparisonCells = [];
311
+ if (originalRow.content) {
312
+ originalRow.content.forEach((cell) => {
313
+ originalCells.push(cell);
314
+ });
315
+ }
316
+ if (comparisonRow.content) {
317
+ comparisonRow.content.forEach((cell) => {
318
+ comparisonCells.push(cell);
319
+ });
320
+ }
321
+ const minCells = Math.min(originalCells.length, comparisonCells.length);
322
+ for (let i = 0; i < minCells; i++) {
323
+ newContent.push(compareTableCell(originalCells[i], comparisonCells[i]));
324
+ }
325
+ for (let i = minCells; i < comparisonCells.length; i++) {
326
+ newContent.push(markCellAsInserted(comparisonCells[i]));
327
+ }
328
+ for (let i = minCells; i < originalCells.length; i++) {
329
+ newContent.push(markCellAsDeleted(originalCells[i]));
330
+ }
331
+ const origRowAttrs = originalRow;
332
+ const compRowAttrs = comparisonRow;
333
+ const rowAttrs = { ...compRowAttrs.attrs };
334
+ if (!(0, lodash_1.isEqual)(origRowAttrs.attrs, compRowAttrs.attrs)) {
335
+ rowAttrs.dataTracked = [
336
+ (0, create_dataTracked_attrs_1.createComparisonSetAttrsDataTracked)('', origRowAttrs.attrs),
337
+ ];
338
+ }
339
+ return transform_1.schema.nodes.table_row.create(rowAttrs, newContent);
340
+ };
341
+ /**
342
+ * Compare table cell nodes and their content.
343
+ */
344
+ const compareTableCell = (originalCell, comparisonCell) => {
345
+ const newContent = [];
346
+ const originalTextBlocks = [];
347
+ const comparisonTextBlocks = [];
348
+ if (originalCell.content) {
349
+ originalCell.content.forEach((block) => {
350
+ originalTextBlocks.push(block);
351
+ });
352
+ }
353
+ if (comparisonCell.content) {
354
+ comparisonCell.content.forEach((block) => {
355
+ comparisonTextBlocks.push(block);
356
+ });
357
+ }
358
+ const minBlocks = Math.min(originalTextBlocks.length, comparisonTextBlocks.length);
359
+ for (let i = 0; i < minBlocks; i++) {
360
+ newContent.push((0, compare_paragraph_like_1.compareParagraphLike)(originalTextBlocks[i], comparisonTextBlocks[i]));
361
+ }
362
+ for (let i = minBlocks; i < comparisonTextBlocks.length; i++) {
363
+ newContent.push(markNodeAsInserted(comparisonTextBlocks[i]));
364
+ }
365
+ for (let i = minBlocks; i < originalTextBlocks.length; i++) {
366
+ newContent.push(markNodeAsDeleted(originalTextBlocks[i]));
367
+ }
368
+ const origCellAttrs = originalCell;
369
+ const compCellAttrs = comparisonCell;
370
+ const cellAttrs = { ...compCellAttrs.attrs };
371
+ if (!(0, lodash_1.isEqual)(origCellAttrs.attrs, compCellAttrs.attrs)) {
372
+ cellAttrs.dataTracked = [
373
+ (0, create_dataTracked_attrs_1.createComparisonSetAttrsDataTracked)('', origCellAttrs.attrs),
374
+ ];
375
+ }
376
+ return comparisonCell.type.create(cellAttrs, newContent);
377
+ };
378
+ /**
379
+ * Mark a node and its content as inserted.
380
+ */
381
+ const markNodeAsInserted = (node) => {
382
+ if (node.isText) {
383
+ return node.mark([
384
+ transform_1.schema.marks.tracked_insert.create({ dataTracked: { id: (0, uuid_1.v4)() } }),
385
+ ]);
386
+ }
387
+ const newContent = [];
388
+ if (node.content && node.content.childCount > 0) {
389
+ node.content.forEach((child) => {
390
+ newContent.push(markNodeAsInserted(child));
391
+ });
392
+ }
393
+ const nodeWithAttrs = node;
394
+ const newAttrs = {
395
+ ...nodeWithAttrs.attrs,
396
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)('')],
397
+ };
398
+ return node.type.create(newAttrs, newContent, node.marks);
399
+ };
400
+ /**
401
+ * Mark a node and its content as deleted.
402
+ */
403
+ const markNodeAsDeleted = (node) => {
404
+ if (node.isText) {
405
+ return node.mark([
406
+ transform_1.schema.marks.tracked_delete.create({ dataTracked: { id: (0, uuid_1.v4)() } }),
407
+ ]);
408
+ }
409
+ const newContent = [];
410
+ if (node.content && node.content.childCount > 0) {
411
+ node.content.forEach((child) => {
412
+ newContent.push(markNodeAsDeleted(child));
413
+ });
414
+ }
415
+ const nodeWithAttrs = node;
416
+ const newAttrs = {
417
+ ...nodeWithAttrs.attrs,
418
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)('')],
419
+ };
420
+ return node.type.create(newAttrs, newContent, node.marks);
421
+ };
422
+ /**
423
+ * Mark a row as inserted, including all its cells
424
+ */
425
+ const markRowAsInserted = (row) => {
426
+ const newContent = [];
427
+ if (row.content) {
428
+ row.content.forEach((cell) => {
429
+ newContent.push(markCellAsInserted(cell));
430
+ });
431
+ }
432
+ const rowWithAttrs = row;
433
+ const newAttrs = {
434
+ ...rowWithAttrs.attrs,
435
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)('')],
436
+ };
437
+ return transform_1.schema.nodes.table_row.create(newAttrs, newContent);
438
+ };
439
+ /**
440
+ * Mark a row as deleted, including all its cells
441
+ */
442
+ const markRowAsDeleted = (row) => {
443
+ const newContent = [];
444
+ if (row.content) {
445
+ row.content.forEach((cell) => {
446
+ newContent.push(markCellAsDeleted(cell));
447
+ });
448
+ }
449
+ const rowWithAttrs = row;
450
+ const newAttrs = {
451
+ ...rowWithAttrs.attrs,
452
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)('')],
453
+ };
454
+ return transform_1.schema.nodes.table_row.create(newAttrs, newContent);
455
+ };
456
+ /**
457
+ * Mark a cell as inserted, including all its content
458
+ */
459
+ const markCellAsInserted = (cell) => {
460
+ const newContent = [];
461
+ if (cell.content) {
462
+ cell.content.forEach((block) => {
463
+ newContent.push(markNodeAsInserted(block));
464
+ });
465
+ }
466
+ const cellWithAttrs = cell;
467
+ const newAttrs = {
468
+ ...cellWithAttrs.attrs,
469
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)('')],
470
+ };
471
+ return cell.type.create(newAttrs, newContent);
472
+ };
473
+ /**
474
+ * Mark a cell as deleted, including all its content
475
+ */
476
+ const markCellAsDeleted = (cell) => {
477
+ const newContent = [];
478
+ if (cell.content) {
479
+ cell.content.forEach((block) => {
480
+ newContent.push(markNodeAsDeleted(block));
481
+ });
482
+ }
483
+ const cellWithAttrs = cell;
484
+ const newAttrs = {
485
+ ...cellWithAttrs.attrs,
486
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)('')],
487
+ };
488
+ return cell.type.create(newAttrs, newContent);
489
+ };
490
+ /**
491
+ * Calculate a similarity score between two rows
492
+ * Returns a number between 0 (completely different) and 1 (identical)
493
+ */
494
+ const calculateRowSimilarity = (row1, row2) => {
495
+ if (row1.type.name !== row2.type.name) {
496
+ return 0;
497
+ }
498
+ const cellCount1 = row1.content ? row1.content.childCount : 0;
499
+ const cellCount2 = row2.content ? row2.content.childCount : 0;
500
+ if (cellCount1 === 0 && cellCount2 === 0) {
501
+ return 1;
502
+ }
503
+ if (cellCount1 === 0 || cellCount2 === 0) {
504
+ return 0;
505
+ }
506
+ if (Math.abs(cellCount1 - cellCount2) >
507
+ Math.min(cellCount1, cellCount2) / 2) {
508
+ return 0.1;
509
+ }
510
+ let matchingCells = 0;
511
+ const minCells = Math.min(cellCount1, cellCount2);
512
+ for (let i = 0; i < minCells; i++) {
513
+ const cell1 = row1.content.child(i);
514
+ const cell2 = row2.content.child(i);
515
+ const text1 = cell1.textContent || '';
516
+ const text2 = cell2.textContent || '';
517
+ const similarity = calculateTextSimilarity(text1, text2);
518
+ if (similarity > 0.7) {
519
+ matchingCells += similarity;
520
+ }
521
+ }
522
+ return matchingCells / minCells;
523
+ };
524
+ /**
525
+ * Calculate text similarity using Levenshtein distance
526
+ */
527
+ const calculateTextSimilarity = (text1, text2) => {
528
+ if (text1 === text2) {
529
+ return 1;
530
+ }
531
+ if (!text1 || !text2) {
532
+ return 0;
533
+ }
534
+ const cleanText1 = cleanTextForComparison(text1);
535
+ const cleanText2 = cleanTextForComparison(text2);
536
+ if (cleanText1 === cleanText2) {
537
+ return 0.95;
538
+ }
539
+ const maxLen = Math.max(cleanText1.length, cleanText2.length);
540
+ if (maxLen === 0) {
541
+ return 1;
542
+ }
543
+ const dmp = new diff_match_patch_1.default();
544
+ const diffs = dmp.diff_main(cleanText1, cleanText2);
545
+ dmp.diff_cleanupSemantic(diffs);
546
+ let diffSize = 0;
547
+ for (const [op, text] of diffs) {
548
+ if (op !== 0) {
549
+ diffSize += text.length;
550
+ }
551
+ }
552
+ if (diffSize <= 3) {
553
+ return 0.9;
554
+ }
555
+ const distance = dmp.diff_levenshtein(diffs);
556
+ return 1 - distance / maxLen;
557
+ };
558
+ /**
559
+ * Clean text for comparison by removing likely typos
560
+ */
561
+ const cleanTextForComparison = (text) => {
562
+ const repeatedCharsRegex = /([a-z])\1{1,2}/gi;
563
+ let cleaned = text.replace(repeatedCharsRegex, '$1');
564
+ cleaned = cleaned.replace(/\s+/g, ' ').trim();
565
+ return cleaned;
566
+ };
567
+ //# sourceMappingURL=compare-table-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-table-element.js","sourceRoot":"","sources":["../../../../src/lib/comparison/compare-table-element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createComparisonInsertAttrsDataTracked = exports.createComparisonDeleteAttrsDataTracked = exports.createComparisonSetAttrsDataTracked = void 0;
4
+ /*!
5
+ * The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
6
+ *
7
+ * Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
8
+ *
9
+ * The Original Code is manuscripts-frontend.
10
+ *
11
+ * The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
12
+ *
13
+ * All portions of the code written by Atypon Systems LLC are Copyright (c) 2025 Atypon Systems LLC. All Rights Reserved.
14
+ */
15
+ const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
16
+ const uuid_1 = require("uuid");
17
+ // Creates a dataTracked attribute for a set node attributes operation in comparison context
18
+ const createComparisonSetAttrsDataTracked = (authorID, oldAttrs) => {
19
+ return {
20
+ id: (0, uuid_1.v4)(),
21
+ authorID,
22
+ reviewedByID: null,
23
+ operation: track_changes_plugin_1.CHANGE_OPERATION.set_node_attributes,
24
+ status: track_changes_plugin_1.CHANGE_STATUS.pending,
25
+ statusUpdateAt: Date.now(),
26
+ createdAt: Date.now(),
27
+ updatedAt: Date.now(),
28
+ oldAttrs,
29
+ };
30
+ };
31
+ exports.createComparisonSetAttrsDataTracked = createComparisonSetAttrsDataTracked;
32
+ // Creates a dataTracked attribute for a delete node operation in comparison context
33
+ const createComparisonDeleteAttrsDataTracked = (authorID) => {
34
+ return {
35
+ id: (0, uuid_1.v4)(),
36
+ authorID,
37
+ reviewedByID: null,
38
+ operation: track_changes_plugin_1.CHANGE_OPERATION.delete,
39
+ status: track_changes_plugin_1.CHANGE_STATUS.pending,
40
+ statusUpdateAt: Date.now(),
41
+ createdAt: Date.now(),
42
+ updatedAt: Date.now(),
43
+ };
44
+ };
45
+ exports.createComparisonDeleteAttrsDataTracked = createComparisonDeleteAttrsDataTracked;
46
+ // Creates a dataTracked attribute for an insert node operation in comparison context
47
+ const createComparisonInsertAttrsDataTracked = (authorID) => {
48
+ return {
49
+ id: (0, uuid_1.v4)(),
50
+ authorID,
51
+ reviewedByID: null,
52
+ operation: track_changes_plugin_1.CHANGE_OPERATION.insert,
53
+ status: track_changes_plugin_1.CHANGE_STATUS.pending,
54
+ statusUpdateAt: Date.now(),
55
+ createdAt: Date.now(),
56
+ updatedAt: Date.now(),
57
+ };
58
+ };
59
+ exports.createComparisonInsertAttrsDataTracked = createComparisonInsertAttrsDataTracked;
60
+ //# sourceMappingURL=create-dataTracked-attrs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dataTracked-attrs.js","sourceRoot":"","sources":["../../../../src/lib/comparison/create-dataTracked-attrs.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACH,4EAI0C;AAC1C,+BAAmC;AAEnC,4FAA4F;AACrF,MAAM,mCAAmC,GAAG,CACjD,QAAgB,EAChB,QAAiC,EACnB,EAAE;IAChB,OAAO;QACL,EAAE,EAAE,IAAA,SAAM,GAAE;QACZ,QAAQ;QACR,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,uCAAgB,CAAC,mBAAmB;QAC/C,MAAM,EAAE,oCAAa,CAAC,OAAO;QAC7B,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AAfY,QAAA,mCAAmC,uCAe/C;AAED,oFAAoF;AAC7E,MAAM,sCAAsC,GAAG,CACpD,QAAgB,EACF,EAAE;IAChB,OAAO;QACL,EAAE,EAAE,IAAA,SAAM,GAAE;QACZ,QAAQ;QACR,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,uCAAgB,CAAC,MAAM;QAClC,MAAM,EAAE,oCAAa,CAAC,OAAO;QAC7B,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,sCAAsC,0CAalD;AAED,qFAAqF;AAC9E,MAAM,sCAAsC,GAAG,CACpD,QAAgB,EACF,EAAE;IAChB,OAAO;QACL,EAAE,EAAE,IAAA,SAAM,GAAE;QACZ,QAAQ;QACR,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,uCAAgB,CAAC,MAAM;QAClC,MAAM,EAAE,oCAAa,CAAC,OAAO;QAC7B,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,sCAAsC,0CAalD"}