@manuscripts/article-editor 3.9.1-LEAN-2023.0 → 3.9.1-LEAN-4533.1

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 (126) 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 +7 -1
  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/TrackChangesPanel.js +16 -3
  16. package/dist/cjs/components/track-changes/TrackChangesPanel.js.map +1 -1
  17. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js +7 -3
  18. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  19. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js +6 -2
  20. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js.map +1 -1
  21. package/dist/cjs/hooks/use-compare-documents.js +69 -0
  22. package/dist/cjs/hooks/use-compare-documents.js.map +1 -0
  23. package/dist/cjs/hooks/use-create-editor.js +30 -13
  24. package/dist/cjs/hooks/use-create-editor.js.map +1 -1
  25. package/dist/cjs/index.js +3 -3
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/lib/change-handlers.js +5 -28
  28. package/dist/cjs/lib/change-handlers.js.map +1 -1
  29. package/dist/cjs/lib/comparison/compare-documents.js +53 -0
  30. package/dist/cjs/lib/comparison/compare-documents.js.map +1 -0
  31. package/dist/cjs/lib/comparison/compare-paragraph-like.js +388 -0
  32. package/dist/cjs/lib/comparison/compare-paragraph-like.js.map +1 -0
  33. package/dist/cjs/lib/comparison/compare-table-element.js +567 -0
  34. package/dist/cjs/lib/comparison/compare-table-element.js.map +1 -0
  35. package/dist/cjs/lib/comparison/create-dataTracked-attrs.js +60 -0
  36. package/dist/cjs/lib/comparison/create-dataTracked-attrs.js.map +1 -0
  37. package/dist/cjs/lib/comparison/distribute-nodes.js +131 -0
  38. package/dist/cjs/lib/comparison/distribute-nodes.js.map +1 -0
  39. package/dist/cjs/lib/comparison/rebuild-nodes-tree.js +76 -0
  40. package/dist/cjs/lib/comparison/rebuild-nodes-tree.js.map +1 -0
  41. package/dist/cjs/lib/{__tests__/layout.test.js → tracking.js} +38 -25
  42. package/dist/cjs/lib/tracking.js.map +1 -0
  43. package/dist/cjs/store/Store.js +7 -2
  44. package/dist/cjs/store/Store.js.map +1 -1
  45. package/dist/es/EditorApp.js +8 -1
  46. package/dist/es/EditorApp.js.map +1 -1
  47. package/dist/es/Main.js +3 -3
  48. package/dist/es/Main.js.map +1 -1
  49. package/dist/es/components/inspector/SnapshotsList.js +15 -3
  50. package/dist/es/components/inspector/SnapshotsList.js.map +1 -1
  51. package/dist/es/components/projects/EditorElement.js +5 -4
  52. package/dist/es/components/projects/EditorElement.js.map +1 -1
  53. package/dist/es/components/projects/Inspector.js +7 -1
  54. package/dist/es/components/projects/Inspector.js.map +1 -1
  55. package/dist/es/components/projects/ManuscriptPageContainer.js +4 -3
  56. package/dist/es/components/projects/ManuscriptPageContainer.js.map +1 -1
  57. package/dist/es/components/tools/CompareDocumentsModal.js +140 -0
  58. package/dist/es/components/tools/CompareDocumentsModal.js.map +1 -0
  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 +1 -23
  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/lib/tracking.js +46 -0
  86. package/dist/es/lib/tracking.js.map +1 -0
  87. package/dist/es/store/Store.js +7 -2
  88. package/dist/es/store/Store.js.map +1 -1
  89. package/dist/types/EditorApp.d.ts +2 -1
  90. package/dist/types/Main.d.ts +1 -1
  91. package/dist/types/components/projects/Inspector.d.ts +1 -1
  92. package/dist/types/components/projects/ManuscriptPageContainer.d.ts +1 -1
  93. package/dist/types/components/projects/inputs.d.ts +1 -1
  94. package/dist/types/components/tools/CompareDocumentsModal.d.ts +11 -0
  95. package/dist/types/components/track-changes/TrackChangesPanel.d.ts +1 -1
  96. package/dist/types/components/track-changes/suggestion-list/Suggestion.d.ts +1 -1
  97. package/dist/types/components/track-changes/suggestion-list/SuggestionList.d.ts +3 -3
  98. package/dist/types/{lib/__tests__/preferences.test.d.ts → hooks/use-compare-documents.d.ts} +13 -1
  99. package/dist/types/index.d.ts +1 -1
  100. package/dist/types/lib/change-handlers.d.ts +0 -1
  101. package/dist/types/lib/comparison/compare-documents.d.ts +16 -0
  102. package/dist/types/lib/{__tests__/roles.test.d.ts → comparison/compare-paragraph-like.d.ts} +12 -1
  103. package/dist/{es/__mocks__/fileMock.js → types/lib/comparison/compare-table-element.d.ts} +11 -3
  104. package/dist/{es/__mocks__/styleMock.js → types/lib/comparison/create-dataTracked-attrs.d.ts} +5 -3
  105. package/dist/{cjs/__mocks__/styleMock.js → types/lib/comparison/distribute-nodes.d.ts} +9 -5
  106. package/dist/{cjs/__mocks__/fileMock.js → types/lib/comparison/rebuild-nodes-tree.d.ts} +4 -5
  107. package/dist/types/lib/{__tests__/layout.test.d.ts → tracking.d.ts} +17 -0
  108. package/dist/types/store/Store.d.ts +3 -1
  109. package/package.json +84 -77
  110. package/dist/cjs/__mocks__/fileMock.js.map +0 -1
  111. package/dist/cjs/__mocks__/styleMock.js.map +0 -1
  112. package/dist/cjs/lib/__tests__/layout.test.js.map +0 -1
  113. package/dist/cjs/lib/__tests__/preferences.test.js +0 -50
  114. package/dist/cjs/lib/__tests__/preferences.test.js.map +0 -1
  115. package/dist/cjs/lib/__tests__/roles.test.js +0 -32
  116. package/dist/cjs/lib/__tests__/roles.test.js.map +0 -1
  117. package/dist/es/__mocks__/fileMock.js.map +0 -1
  118. package/dist/es/__mocks__/styleMock.js.map +0 -1
  119. package/dist/es/lib/__tests__/layout.test.js +0 -33
  120. package/dist/es/lib/__tests__/layout.test.js.map +0 -1
  121. package/dist/es/lib/__tests__/preferences.test.js +0 -25
  122. package/dist/es/lib/__tests__/preferences.test.js.map +0 -1
  123. package/dist/es/lib/__tests__/roles.test.js +0 -30
  124. package/dist/es/lib/__tests__/roles.test.js.map +0 -1
  125. package/dist/types/__mocks__/fileMock.d.ts +0 -13
  126. package/dist/types/__mocks__/styleMock.d.ts +0 -13
@@ -0,0 +1,388 @@
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.compareTextLikeContent = exports.rebuildFromDiff = exports.containsOnlyTextNodes = exports.compareParagraphLike = 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 create_dataTracked_attrs_1 = require("./create-dataTracked-attrs");
22
+ // Compares two ManuscriptNode objects that are paragraph-like
23
+ // It checks if the nodes contain only text nodes and if so, it compares the text content
24
+ // Otherwise, it flattens the nodes and compares the chunks
25
+ const compareParagraphLike = (originalNode, comparisonNode) => {
26
+ const originalHasOnlyText = (0, exports.containsOnlyTextNodes)(originalNode);
27
+ const comparisonHasOnlyText = (0, exports.containsOnlyTextNodes)(comparisonNode);
28
+ if (originalHasOnlyText && comparisonHasOnlyText) {
29
+ return (0, exports.compareTextLikeContent)(originalNode, comparisonNode, comparisonNode.type);
30
+ }
31
+ const originalChunks = flattenParagraph(Array.from({ length: originalNode.content.childCount }, (_, i) => originalNode.content.child(i)));
32
+ const comparisonChunks = flattenParagraph(Array.from({ length: comparisonNode.content.childCount }, (_, i) => comparisonNode.content.child(i)));
33
+ const originalString = stringifyChunks(originalChunks);
34
+ const comparisonString = stringifyChunks(comparisonChunks);
35
+ const dmp = new diff_match_patch_1.default();
36
+ const diffs = dmp.diff_main(originalString, comparisonString);
37
+ const content = (0, exports.rebuildFromDiff)(diffs, originalChunks, comparisonChunks);
38
+ return comparisonNode.type.create(comparisonNode.attrs, content);
39
+ };
40
+ exports.compareParagraphLike = compareParagraphLike;
41
+ // Checks if a node contains only text nodes
42
+ const containsOnlyTextNodes = (node) => {
43
+ if (!node.content || node.content.childCount === 0) {
44
+ return true;
45
+ }
46
+ for (let i = 0; i < node.content.childCount; i++) {
47
+ const child = node.content.child(i);
48
+ if (child.type.name !== 'text') {
49
+ return false;
50
+ }
51
+ }
52
+ return true;
53
+ };
54
+ exports.containsOnlyTextNodes = containsOnlyTextNodes;
55
+ // Flattens a paragraph-like node into a list of text and inline chunks
56
+ const flattenParagraph = (nodes) => {
57
+ const chunks = [];
58
+ let inlineCounter = 0;
59
+ for (const node of nodes) {
60
+ if (node.type.name === 'text') {
61
+ chunks.push({ type: 'text', key: node.text, node });
62
+ }
63
+ else {
64
+ let tag = '';
65
+ if (node.type.name === 'cross_reference' &&
66
+ node.attrs &&
67
+ node.attrs.rids) {
68
+ tag = `[CROSS_REF:${node.attrs.rids.join(',')}]`;
69
+ }
70
+ else {
71
+ tag = `[INLINE_${inlineCounter++}]`;
72
+ }
73
+ chunks.push({ type: 'inline', key: tag, node });
74
+ }
75
+ }
76
+ return chunks;
77
+ };
78
+ // Stringifies a list of chunks into a single string
79
+ const stringifyChunks = (chunks) => {
80
+ return chunks.map((c) => c.key).join('');
81
+ };
82
+ // Rebuilds a ManuscriptNode tree from a list of diffs
83
+ const rebuildFromDiff = (diffs, originalChunks, comparisonChunks) => {
84
+ const result = [];
85
+ const originalChunkMap = buildChunkPositionMap(originalChunks);
86
+ const comparisonChunkMap = buildChunkPositionMap(comparisonChunks);
87
+ const originalInlineMap = new Map();
88
+ const comparisonInlineMap = new Map();
89
+ originalChunks.forEach((chunk) => {
90
+ if (chunk.type === 'inline') {
91
+ const node = chunk.node;
92
+ if (node.attrs && node.attrs.id) {
93
+ originalInlineMap.set(node.attrs.id, node);
94
+ }
95
+ if (node.type.name === 'cross_reference' &&
96
+ node.attrs &&
97
+ node.attrs.rids) {
98
+ originalInlineMap.set(`cross_ref:${node.attrs.rids.join(',')}`, node);
99
+ }
100
+ }
101
+ });
102
+ comparisonChunks.forEach((chunk) => {
103
+ if (chunk.type === 'inline') {
104
+ const node = chunk.node;
105
+ if (node.attrs && node.attrs.id) {
106
+ comparisonInlineMap.set(node.attrs.id, node);
107
+ }
108
+ if (node.type.name === 'cross_reference' &&
109
+ node.attrs &&
110
+ node.attrs.rids) {
111
+ comparisonInlineMap.set(`cross_ref:${node.attrs.rids.join(',')}`, node);
112
+ }
113
+ }
114
+ });
115
+ let origPos = 0;
116
+ let compPos = 0;
117
+ for (const [op, str] of diffs) {
118
+ if (op === 0) {
119
+ const startCompPos = compPos;
120
+ compPos += str.length;
121
+ origPos += str.length;
122
+ const chunks = getChunksInRange(comparisonChunks, comparisonChunkMap, startCompPos, compPos);
123
+ for (const chunk of chunks) {
124
+ if (chunk.type === 'text') {
125
+ const chunkStartPos = getChunkStartPos(comparisonChunks, comparisonChunks.indexOf(chunk));
126
+ const chunkEndPos = chunkStartPos + chunk.key.length;
127
+ if (startCompPos > chunkStartPos || compPos < chunkEndPos) {
128
+ const startOffset = Math.max(0, startCompPos - chunkStartPos);
129
+ const endOffset = Math.min(chunk.key.length, compPos - chunkStartPos);
130
+ const textContent = chunk.key.substring(startOffset, endOffset);
131
+ const textNode = transform_1.schema.text(textContent);
132
+ result.push(textNode);
133
+ }
134
+ else {
135
+ result.push(chunk.node);
136
+ }
137
+ }
138
+ else {
139
+ const inlineNode = chunk.node;
140
+ if (inlineNode.type.name === 'cross_reference' &&
141
+ inlineNode.attrs &&
142
+ inlineNode.attrs.rids) {
143
+ const key = `cross_ref:${inlineNode.attrs.rids.join(',')}`;
144
+ const originalNode = originalInlineMap.get(key);
145
+ if (originalNode) {
146
+ if (!(0, lodash_1.isEqual)(originalNode.attrs, inlineNode.attrs)) {
147
+ const comparedNode = compareInlineNodeAttrs(originalNode, inlineNode, 'set');
148
+ result.push(comparedNode);
149
+ }
150
+ else {
151
+ result.push(inlineNode);
152
+ }
153
+ }
154
+ }
155
+ else if (inlineNode.attrs && inlineNode.attrs.id) {
156
+ const originalNode = originalInlineMap.get(inlineNode.attrs.id);
157
+ if (originalNode) {
158
+ if (!(0, lodash_1.isEqual)(originalNode.attrs, inlineNode.attrs)) {
159
+ const comparedNode = compareInlineNodeAttrs(originalNode, inlineNode, 'set');
160
+ result.push(comparedNode);
161
+ }
162
+ else {
163
+ result.push(inlineNode);
164
+ }
165
+ }
166
+ }
167
+ else {
168
+ result.push(inlineNode);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ else if (op === 1) {
174
+ const startCompPos = compPos;
175
+ compPos += str.length;
176
+ const chunks = getChunksInRange(comparisonChunks, comparisonChunkMap, startCompPos, compPos);
177
+ for (const chunk of chunks) {
178
+ if (chunk.type === 'text') {
179
+ const chunkStartPos = getChunkStartPos(comparisonChunks, comparisonChunks.indexOf(chunk));
180
+ const chunkEndPos = chunkStartPos + chunk.key.length;
181
+ if (startCompPos > chunkStartPos || compPos < chunkEndPos) {
182
+ const startOffset = Math.max(0, startCompPos - chunkStartPos);
183
+ const endOffset = Math.min(chunk.key.length, compPos - chunkStartPos);
184
+ const textContent = chunk.key.substring(startOffset, endOffset);
185
+ const textNode = transform_1.schema.text(textContent, [
186
+ transform_1.schema.marks.tracked_insert.create({
187
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)(''),
188
+ }),
189
+ ]);
190
+ result.push(textNode);
191
+ }
192
+ else {
193
+ result.push(chunk.node.mark([
194
+ transform_1.schema.marks.tracked_insert.create({
195
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)(''),
196
+ }),
197
+ ]));
198
+ }
199
+ }
200
+ else {
201
+ const inlineNode = chunk.node;
202
+ if (inlineNode.type.name === 'cross_reference' &&
203
+ inlineNode.attrs &&
204
+ inlineNode.attrs.rids) {
205
+ const key = `cross_ref:${inlineNode.attrs.rids.join(',')}`;
206
+ const originalNode = originalInlineMap.get(key);
207
+ if (originalNode) {
208
+ if (!(0, lodash_1.isEqual)(originalNode.attrs, inlineNode.attrs)) {
209
+ const comparedNode = compareInlineNodeAttrs(originalNode, inlineNode, 'set');
210
+ result.push(comparedNode);
211
+ }
212
+ else {
213
+ result.push(inlineNode);
214
+ }
215
+ }
216
+ else {
217
+ const trackedNode = compareInlineNodeAttrs(null, inlineNode, 'insert');
218
+ result.push(trackedNode);
219
+ }
220
+ }
221
+ else if (inlineNode.attrs && inlineNode.attrs.id) {
222
+ const originalNode = originalInlineMap.get(inlineNode.attrs.id);
223
+ if (originalNode) {
224
+ if (!(0, lodash_1.isEqual)(originalNode.attrs, inlineNode.attrs)) {
225
+ const comparedNode = compareInlineNodeAttrs(originalNode, inlineNode, 'set');
226
+ result.push(comparedNode);
227
+ }
228
+ else {
229
+ result.push(inlineNode);
230
+ }
231
+ }
232
+ else {
233
+ const trackedNode = compareInlineNodeAttrs(null, inlineNode, 'insert');
234
+ result.push(trackedNode);
235
+ }
236
+ }
237
+ else {
238
+ const trackedNode = compareInlineNodeAttrs(null, inlineNode, 'insert');
239
+ result.push(trackedNode);
240
+ }
241
+ }
242
+ }
243
+ }
244
+ else if (op === -1) {
245
+ const startOrigPos = origPos;
246
+ origPos += str.length;
247
+ const chunks = getChunksInRange(originalChunks, originalChunkMap, startOrigPos, origPos);
248
+ for (const chunk of chunks) {
249
+ if (chunk.type === 'text') {
250
+ const chunkStartPos = getChunkStartPos(originalChunks, originalChunks.indexOf(chunk));
251
+ const chunkEndPos = chunkStartPos + chunk.key.length;
252
+ if (startOrigPos > chunkStartPos || origPos < chunkEndPos) {
253
+ const startOffset = Math.max(0, startOrigPos - chunkStartPos);
254
+ const endOffset = Math.min(chunk.key.length, origPos - chunkStartPos);
255
+ const textContent = chunk.key.substring(startOffset, endOffset);
256
+ const textNode = transform_1.schema.text(textContent, [
257
+ transform_1.schema.marks.tracked_delete.create({
258
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)(''),
259
+ }),
260
+ ]);
261
+ result.push(textNode);
262
+ }
263
+ else {
264
+ result.push(chunk.node.mark([
265
+ transform_1.schema.marks.tracked_delete.create({
266
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)(''),
267
+ }),
268
+ ]));
269
+ }
270
+ }
271
+ else {
272
+ const inlineNode = chunk.node;
273
+ if (inlineNode.type.name === 'cross_reference' &&
274
+ inlineNode.attrs &&
275
+ inlineNode.attrs.rids) {
276
+ const key = `cross_ref:${inlineNode.attrs.rids.join(',')}`;
277
+ const comparisonNode = comparisonInlineMap.get(key);
278
+ if (!comparisonNode) {
279
+ const trackedNode = compareInlineNodeAttrs(inlineNode, inlineNode, 'delete');
280
+ result.push(trackedNode);
281
+ }
282
+ }
283
+ else if (inlineNode.attrs && inlineNode.attrs.id) {
284
+ const comparisonNode = comparisonInlineMap.get(inlineNode.attrs.id);
285
+ if (!comparisonNode) {
286
+ const trackedNode = compareInlineNodeAttrs(inlineNode, inlineNode, 'delete');
287
+ result.push(trackedNode);
288
+ }
289
+ }
290
+ else {
291
+ const trackedNode = compareInlineNodeAttrs(inlineNode, inlineNode, 'delete');
292
+ result.push(trackedNode);
293
+ }
294
+ }
295
+ }
296
+ }
297
+ }
298
+ return result;
299
+ };
300
+ exports.rebuildFromDiff = rebuildFromDiff;
301
+ // Gets the start position of a chunk
302
+ const getChunkStartPos = (chunks, index) => {
303
+ let pos = 0;
304
+ for (let i = 0; i < index; i++) {
305
+ pos += chunks[i].key.length;
306
+ }
307
+ return pos;
308
+ };
309
+ // Gets the chunks in a range
310
+ const getChunksInRange = (chunks, posMap, startPos, endPos) => {
311
+ const result = [];
312
+ for (let i = 0; i < chunks.length; i++) {
313
+ const { startPos: chunkStart, endPos: chunkEnd } = posMap[i];
314
+ if (chunkEnd > startPos && chunkStart < endPos) {
315
+ result.push(chunks[i]);
316
+ }
317
+ }
318
+ return result;
319
+ };
320
+ // Builds a map of chunk positions
321
+ const buildChunkPositionMap = (chunks) => {
322
+ const posMap = [];
323
+ let currentPos = 0;
324
+ for (let i = 0; i < chunks.length; i++) {
325
+ const chunk = chunks[i];
326
+ const chunkLength = chunk.key.length;
327
+ posMap.push({
328
+ startPos: currentPos,
329
+ endPos: currentPos + chunkLength,
330
+ });
331
+ currentPos += chunkLength;
332
+ }
333
+ return posMap;
334
+ };
335
+ // Compares the attributes of two inline nodes
336
+ const compareInlineNodeAttrs = (originalNode, comparisonNode, operation = 'set') => {
337
+ if (operation === 'insert' || !originalNode) {
338
+ return comparisonNode.type.create({
339
+ ...comparisonNode.attrs,
340
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)('')],
341
+ }, comparisonNode.content, comparisonNode.marks);
342
+ }
343
+ else if (operation === 'delete') {
344
+ return originalNode.type.create({
345
+ ...originalNode.attrs,
346
+ dataTracked: [(0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)('')],
347
+ }, originalNode.content, originalNode.marks);
348
+ }
349
+ else if (!(0, lodash_1.isEqual)(originalNode.attrs, comparisonNode.attrs)) {
350
+ return comparisonNode.type.create({
351
+ ...comparisonNode.attrs,
352
+ dataTracked: [
353
+ (0, create_dataTracked_attrs_1.createComparisonSetAttrsDataTracked)('', originalNode.attrs),
354
+ ],
355
+ }, comparisonNode.content, comparisonNode.marks);
356
+ }
357
+ else {
358
+ return comparisonNode;
359
+ }
360
+ };
361
+ // Compares the text content of two ManuscriptNode objects
362
+ const compareTextLikeContent = (original, comparison, wrapperNodeType) => {
363
+ const dmp = new diff_match_patch_1.default();
364
+ const diffs = dmp.diff_main(original.textContent, comparison.textContent);
365
+ dmp.diff_cleanupSemantic(diffs);
366
+ const content = diffs.map(([op, text]) => {
367
+ if (op === -1) {
368
+ return transform_1.schema.text(text, [
369
+ transform_1.schema.marks.tracked_delete.create({
370
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonDeleteAttrsDataTracked)(''),
371
+ }),
372
+ ]);
373
+ }
374
+ else if (op === 1) {
375
+ return transform_1.schema.text(text, [
376
+ transform_1.schema.marks.tracked_insert.create({
377
+ dataTracked: (0, create_dataTracked_attrs_1.createComparisonInsertAttrsDataTracked)(''),
378
+ }),
379
+ ]);
380
+ }
381
+ else {
382
+ return transform_1.schema.text(text);
383
+ }
384
+ });
385
+ return wrapperNodeType.create(comparison.attrs, content);
386
+ };
387
+ exports.compareTextLikeContent = compareTextLikeContent;
388
+ //# sourceMappingURL=compare-paragraph-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-paragraph-like.js","sourceRoot":"","sources":["../../../../src/lib/comparison/compare-paragraph-like.ts"],"names":[],"mappings":"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"}