@pdf-testkit/core 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diff/group.d.ts +1 -1
- package/dist/diff/group.d.ts.map +1 -1
- package/dist/diff/group.js +347 -123
- package/dist/diff/group.js.map +1 -1
- package/package.json +1 -1
package/dist/diff/group.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { DiffOptions, SemanticEvent, Severity } from '../events.js';
|
|
24
24
|
import type { StructuralSnapshot } from '../types.js';
|
|
25
|
-
export type GroupKind = 'single' | 'table-
|
|
25
|
+
export type GroupKind = 'single' | 'table-resized' | 'page-shift-cascade' | 'new-page-furniture' | 'value-changed';
|
|
26
26
|
export interface EventGroup {
|
|
27
27
|
kind: GroupKind;
|
|
28
28
|
/** The member event that defines this group's severity and headline. */
|
package/dist/diff/group.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAqB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAA4B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAqB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAA4B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,wEAAwE;IACxE,IAAI,EAAE,aAAa,CAAC;IACpB,iFAAiF;IACjF,QAAQ,EAAE,QAAQ,CAAC;IACnB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAyDD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,GAAE,WAAgB,GACrB,UAAU,EAAE,CAwPd"}
|
package/dist/diff/group.js
CHANGED
|
@@ -53,14 +53,18 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
53
53
|
const nextNodes = next.nodes.filter((n) => !ignore.has(n.role));
|
|
54
54
|
const baseById = byId(baseNodes);
|
|
55
55
|
const nextById = byId(nextNodes);
|
|
56
|
+
const baseRank = readingRank(baseNodes);
|
|
56
57
|
const nextRank = readingRank(nextNodes);
|
|
57
58
|
// Re-run the matcher rather than threading its result out of `diffSnapshots`:
|
|
58
59
|
// it is deterministic over the same inputs, and grouping needs the *pairing*
|
|
59
60
|
// (which base node became which next node) that the flat event list drops.
|
|
60
61
|
const { pairs } = matchNodes(baseNodes, nextNodes);
|
|
61
62
|
const baseToNext = new Map();
|
|
62
|
-
|
|
63
|
+
const nextToBase = new Map();
|
|
64
|
+
for (const p of pairs) {
|
|
63
65
|
baseToNext.set(p.base.id, p.next.id);
|
|
66
|
+
nextToBase.set(p.next.id, p.base.id);
|
|
67
|
+
}
|
|
64
68
|
// Event indices that carry a resolvable node, split by which snapshot the id
|
|
65
69
|
// belongs to. `element-removed` is the only one pointing at the baseline.
|
|
66
70
|
// One node can produce several events (an added cell that also overflows), so
|
|
@@ -80,12 +84,42 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
80
84
|
});
|
|
81
85
|
const pageCountIdx = events.findIndex((e) => e.type === 'page-count-changed');
|
|
82
86
|
const repeated = repeatedNormTexts(nextNodes);
|
|
87
|
+
/** The document lost pages rather than gaining them. */
|
|
88
|
+
const shed = next.pageCount < baseline.pageCount;
|
|
89
|
+
/**
|
|
90
|
+
* Where a node sits in the *new* document's reading order. A removed node has
|
|
91
|
+
* no position there at all, so it borrows the slot just after the last
|
|
92
|
+
* surviving thing that preceded it in the baseline — which is exactly where
|
|
93
|
+
* its absence is felt, and lets a deletion be cited as the cause of a shift.
|
|
94
|
+
*/
|
|
95
|
+
const baseByRank = new Map();
|
|
96
|
+
for (const n of baseNodes) {
|
|
97
|
+
const r = baseRank.get(n.id);
|
|
98
|
+
if (r != null)
|
|
99
|
+
baseByRank.set(r, n);
|
|
100
|
+
}
|
|
101
|
+
const rankInNext = (nodeId) => {
|
|
102
|
+
const direct = nextRank.get(nodeId);
|
|
103
|
+
if (direct != null)
|
|
104
|
+
return direct;
|
|
105
|
+
const from = baseRank.get(nodeId);
|
|
106
|
+
if (from == null)
|
|
107
|
+
return null;
|
|
108
|
+
for (let r = from - 1; r >= 0; r--) {
|
|
109
|
+
const prev = baseByRank.get(r);
|
|
110
|
+
const mapped = prev == null ? undefined : baseToNext.get(prev.id);
|
|
111
|
+
const rank = mapped == null ? undefined : nextRank.get(mapped);
|
|
112
|
+
if (rank != null)
|
|
113
|
+
return rank + 0.5;
|
|
114
|
+
}
|
|
115
|
+
return -0.5; // Removed from the very top of the document.
|
|
116
|
+
};
|
|
83
117
|
/** -1 = unclaimed. Otherwise the index of the group this event belongs to. */
|
|
84
118
|
const claim = new Array(events.length).fill(-1);
|
|
85
119
|
const groups = [];
|
|
86
|
-
const open = (kind, rootIdx, summary) => {
|
|
120
|
+
const open = (kind, rootIdx, summary, label) => {
|
|
87
121
|
const id = groups.length;
|
|
88
|
-
groups.push({ kind, rootIdx, members: [rootIdx], summary });
|
|
122
|
+
groups.push({ kind, rootIdx, members: [rootIdx], summary, label });
|
|
89
123
|
claim[rootIdx] = id;
|
|
90
124
|
return id;
|
|
91
125
|
};
|
|
@@ -109,60 +143,109 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
109
143
|
const id = open('value-changed', addedIdx, `${role} "${before}" → "${after}"`);
|
|
110
144
|
attach(id, removedIdx);
|
|
111
145
|
}
|
|
112
|
-
// ── Rule 3 —
|
|
146
|
+
// ── Rule 3 — page furniture ────────────────────────────────────────────────
|
|
113
147
|
// A page that did not exist in the baseline brings a fresh copy of every
|
|
114
|
-
// repeated fixed element with it
|
|
115
|
-
// `page-count-changed`,
|
|
148
|
+
// repeated fixed element with it; a page that goes away takes its copy with
|
|
149
|
+
// it. Either way those adds/removes are a restatement of `page-count-changed`,
|
|
150
|
+
// not independent findings — so the rule reads whichever snapshot holds the
|
|
151
|
+
// pages that only exist on one side.
|
|
116
152
|
if (pageCountIdx !== -1) {
|
|
153
|
+
const side = shed
|
|
154
|
+
? {
|
|
155
|
+
type: 'element-removed',
|
|
156
|
+
nodes: baseNodes,
|
|
157
|
+
index: baseById,
|
|
158
|
+
eventIdx: eventIdxByBaseId,
|
|
159
|
+
repeated: repeatedNormTexts(baseNodes),
|
|
160
|
+
firstGonePage: next.pageCount,
|
|
161
|
+
}
|
|
162
|
+
: {
|
|
163
|
+
type: 'element-added',
|
|
164
|
+
nodes: nextNodes,
|
|
165
|
+
index: nextById,
|
|
166
|
+
eventIdx: eventIdxByNextId,
|
|
167
|
+
repeated,
|
|
168
|
+
firstGonePage: baseline.pageCount,
|
|
169
|
+
};
|
|
117
170
|
const furniture = [];
|
|
118
|
-
for (const root of
|
|
119
|
-
if (root.node.pageIndex <
|
|
171
|
+
for (const root of subtreeRoots(side.type, events, claim, side.index, side.eventIdx)) {
|
|
172
|
+
if (root.node.pageIndex < side.firstGonePage)
|
|
173
|
+
continue;
|
|
174
|
+
// A table row is content wherever it sits. Line-item text can repeat
|
|
175
|
+
// across pages by coincidence, and mistaking that for a running footer
|
|
176
|
+
// would drag half a table into the page-count group.
|
|
177
|
+
if (root.node.role === 'table' || TABLE_PARTS.has(root.node.role))
|
|
120
178
|
continue;
|
|
121
|
-
const subtree = collectSubtree(root.node,
|
|
122
|
-
if (!subtree.some((n) => n.normText != null && repeated.has(n.normText)))
|
|
179
|
+
const subtree = collectSubtree(root.node, side.nodes);
|
|
180
|
+
if (!subtree.some((n) => n.normText != null && side.repeated.has(n.normText)))
|
|
123
181
|
continue;
|
|
124
182
|
for (const n of subtree) {
|
|
125
|
-
const idx =
|
|
183
|
+
const idx = side.eventIdx.get(n.id);
|
|
126
184
|
if (idx != null && claim[idx] === -1)
|
|
127
185
|
furniture.push(idx);
|
|
128
186
|
}
|
|
129
187
|
}
|
|
130
188
|
if (furniture.length > 0) {
|
|
131
|
-
const id = open('new-page-furniture', pageCountIdx, furnitureSummary(events[pageCountIdx], furniture.length));
|
|
189
|
+
const id = open('new-page-furniture', pageCountIdx, furnitureSummary(events[pageCountIdx], furniture.length), 'the page-count change');
|
|
132
190
|
for (const idx of furniture)
|
|
133
191
|
attach(id, idx);
|
|
134
192
|
}
|
|
135
193
|
}
|
|
136
|
-
// ── Rule 1 — table subtree
|
|
194
|
+
// ── Rule 1 — table subtree resize ──────────────────────────────────────────
|
|
137
195
|
// Restricted to row/cell/table roles on purpose. "Anything added under a node
|
|
138
196
|
// that changed" would swallow a new paragraph inside a container that merely
|
|
139
197
|
// moved; a row or a cell, by contrast, has no meaning apart from its table.
|
|
140
|
-
// A table that
|
|
141
|
-
// extractor reports as a whole
|
|
142
|
-
// actually paired
|
|
143
|
-
|
|
144
|
-
const
|
|
198
|
+
// A table that spans a page break carries a continuation fragment, which the
|
|
199
|
+
// extractor reports as a whole separate table. Those are resolved back to the
|
|
200
|
+
// fragment that actually paired — on *both* sides, since the fragment that
|
|
201
|
+
// exists alone lives in the baseline when the table shrank.
|
|
202
|
+
const tables = {
|
|
203
|
+
baseById,
|
|
204
|
+
nextById,
|
|
205
|
+
baseToNext,
|
|
206
|
+
nextToBase,
|
|
207
|
+
contBase: continuationAnchors(baseNodes, baseRank, repeatedNormTexts(baseNodes)),
|
|
208
|
+
contNext: continuationAnchors(nextNodes, nextRank, repeated),
|
|
209
|
+
eventIdxByBaseId,
|
|
210
|
+
eventIdxByNextId,
|
|
211
|
+
};
|
|
212
|
+
// Bucket first, open second. The headline event is whichever fragment of the
|
|
213
|
+
// chain reported one, which is not knowable until every member is in hand: a
|
|
214
|
+
// table that spills onto a page it did not previously reach is announced by
|
|
215
|
+
// the *new* fragment, not by the anchor the rows are attributed to.
|
|
216
|
+
const byTable = new Map(); // canonical table key -> event indices
|
|
145
217
|
for (let i = 0; i < events.length; i++) {
|
|
146
218
|
if (claim[i] !== -1)
|
|
147
219
|
continue;
|
|
148
220
|
const e = events[i];
|
|
149
221
|
if (e.type !== 'element-added' && e.type !== 'element-removed')
|
|
150
222
|
continue;
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
223
|
+
const key = owningTable(e, tables);
|
|
224
|
+
if (key == null)
|
|
153
225
|
continue;
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
226
|
+
const bucket = byTable.get(key);
|
|
227
|
+
if (bucket)
|
|
228
|
+
bucket.push(i);
|
|
229
|
+
else
|
|
230
|
+
byTable.set(key, [i]);
|
|
231
|
+
}
|
|
232
|
+
const tableGroups = new Map(); // canonical table key -> group id
|
|
233
|
+
for (const [key, members] of byTable) {
|
|
234
|
+
// A chain whose fragments all survived intact reports nothing of its own;
|
|
235
|
+
// the earliest row/cell change then stands in as the headline.
|
|
236
|
+
const rootIdx = tableRootIdx(key, tables) ?? members[0];
|
|
237
|
+
if (claim[rootIdx] !== -1)
|
|
238
|
+
continue;
|
|
239
|
+
const gid = open('table-resized', rootIdx, '');
|
|
240
|
+
tableGroups.set(key, gid);
|
|
241
|
+
for (const i of members)
|
|
242
|
+
attach(gid, i);
|
|
163
243
|
}
|
|
164
|
-
for (const [
|
|
165
|
-
|
|
244
|
+
for (const [key, gid] of tableGroups) {
|
|
245
|
+
const g = groups[gid];
|
|
246
|
+
const { summary, label } = tableSummary(key, tables, g.members, events);
|
|
247
|
+
g.summary = summary;
|
|
248
|
+
g.label = label;
|
|
166
249
|
}
|
|
167
250
|
// ── Rule 2 — uniform page-shift cascade ────────────────────────────────────
|
|
168
251
|
// Partitioned by page *delta*, not destination: on the invoice fixture 8
|
|
@@ -194,10 +277,11 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
194
277
|
// down. Split the bucket into contiguous document runs and judge each on
|
|
195
278
|
// its own, so a genuine two-region regression reports as two findings
|
|
196
279
|
// rather than one false "everything shifted" line.
|
|
197
|
-
|
|
280
|
+
const movedIds = new Set(ranked.map((m) => events[m.i].nodeId));
|
|
281
|
+
for (const run of contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated, movedIds)) {
|
|
198
282
|
if (run.length < MIN_CASCADE_MEMBERS)
|
|
199
283
|
continue;
|
|
200
|
-
const cause = nearestPrecedingCause(groups, events,
|
|
284
|
+
const cause = nearestPrecedingCause(groups, events, rankInNext, run[0].rank, pageCountIdx);
|
|
201
285
|
if (cause == null)
|
|
202
286
|
continue; // No root -> no group. "These moved, cause unknown" helps nobody.
|
|
203
287
|
const id = open('page-shift-cascade', run[0].i, cascadeSummary(run.length, delta, run.map((m) => m.i), events, cause));
|
|
@@ -370,20 +454,23 @@ function repeatedNormTexts(nodes) {
|
|
|
370
454
|
out.add(text);
|
|
371
455
|
return out;
|
|
372
456
|
}
|
|
373
|
-
/**
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
457
|
+
/**
|
|
458
|
+
* Nodes added (or removed) whose parent was not itself added (or removed) — the
|
|
459
|
+
* tops of the subtrees that appeared or vanished wholesale.
|
|
460
|
+
*/
|
|
461
|
+
function subtreeRoots(type, events, claim, index, eventIdx) {
|
|
462
|
+
const isSameChange = (id) => {
|
|
463
|
+
const idx = eventIdx.get(id);
|
|
464
|
+
return idx != null && events[idx].type === type;
|
|
378
465
|
};
|
|
379
466
|
const out = [];
|
|
380
467
|
events.forEach((e, i) => {
|
|
381
|
-
if (claim[i] !== -1 || e.type !==
|
|
468
|
+
if (claim[i] !== -1 || e.type !== type)
|
|
382
469
|
return;
|
|
383
|
-
const node =
|
|
470
|
+
const node = index.get(e.nodeId);
|
|
384
471
|
if (!node)
|
|
385
472
|
return;
|
|
386
|
-
if (node.parentId != null &&
|
|
473
|
+
if (node.parentId != null && isSameChange(node.parentId))
|
|
387
474
|
return;
|
|
388
475
|
out.push({ idx: i, node });
|
|
389
476
|
});
|
|
@@ -411,79 +498,192 @@ function collectSubtree(root, nodes) {
|
|
|
411
498
|
return out;
|
|
412
499
|
}
|
|
413
500
|
function furnitureSummary(pageCount, extra) {
|
|
414
|
-
|
|
415
|
-
|
|
501
|
+
if (pageCount.type !== 'page-count-changed')
|
|
502
|
+
return pageCount.message;
|
|
503
|
+
const shed = pageCount.to < pageCount.from;
|
|
504
|
+
const pages = Math.abs(pageCount.to - pageCount.from);
|
|
505
|
+
const noun = `repeated header/footer element${extra === 1 ? '' : 's'}`;
|
|
506
|
+
const where = `${shed ? 'removed' : 'new'} page${pages === 1 ? '' : 's'}`;
|
|
507
|
+
return `${pageCount.message} (${shed ? '-' : '+'}${extra} ${noun} on the ${where})`;
|
|
416
508
|
}
|
|
417
509
|
// ── Rule 1 helpers ──────────────────────────────────────────────────────────
|
|
510
|
+
/** Point tolerance for "same horizontal band" / "same top edge". */
|
|
511
|
+
const SAME_BAND_PTS = 2;
|
|
418
512
|
/**
|
|
419
|
-
*
|
|
420
|
-
*
|
|
421
|
-
*
|
|
513
|
+
* Within one snapshot, map every table fragment that is a continuation of an
|
|
514
|
+
* earlier one to the *head* of its chain. A table crossing a page break is
|
|
515
|
+
* reported by the extractor as two whole tables, so without this a table that
|
|
516
|
+
* wraps reads as two findings and the row counts in the headline are taken from
|
|
517
|
+
* one fragment instead of all of them.
|
|
518
|
+
*
|
|
519
|
+
* The evidence is structural, and deliberately so. This used to run only when
|
|
520
|
+
* the page count changed, on the reasoning that a table can only have started
|
|
521
|
+
* wrapping if the document grew — but whether a table wraps and whether the
|
|
522
|
+
* document gained a page are independent facts. Raise a cell's padding enough to
|
|
523
|
+
* push the last rows onto a page that already existed and the page count never
|
|
524
|
+
* moves, yet a fresh fragment appears; the diff then announced "table added" for
|
|
525
|
+
* rows that had merely flowed over.
|
|
526
|
+
*
|
|
527
|
+
* So a fragment continues its predecessor when all four agree, which no pair of
|
|
528
|
+
* genuinely distinct tables satisfies by accident:
|
|
529
|
+
*
|
|
530
|
+
* - it sits on the very next page (a table cannot resume two pages later);
|
|
531
|
+
* - the column count matches (a split preserves the columns);
|
|
532
|
+
* - it occupies the same horizontal band, to the point;
|
|
533
|
+
* - nothing else on its page starts above it, since a continuation can only
|
|
534
|
+
* begin at the top of the content area. Repeated furniture is exempt: a
|
|
535
|
+
* running header is page-anchored and sits above everything by construction.
|
|
536
|
+
*
|
|
537
|
+
* Pairing is not consulted. It is a property of the *diff*, not of this
|
|
538
|
+
* snapshot's structure, and asking it here is what tied the rule's behaviour to
|
|
539
|
+
* the direction of the change in the first place.
|
|
422
540
|
*/
|
|
423
|
-
function
|
|
541
|
+
function continuationAnchors(nodes, rank, repeated) {
|
|
424
542
|
const out = new Map();
|
|
425
|
-
|
|
543
|
+
const tables = nodes
|
|
544
|
+
.filter((n) => n.role === 'table')
|
|
545
|
+
.sort((a, b) => (rank.get(a.id) ?? 0) - (rank.get(b.id) ?? 0));
|
|
546
|
+
if (tables.length < 2)
|
|
426
547
|
return out;
|
|
427
|
-
const
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
for (const [id, n] of nextById) {
|
|
435
|
-
if (n.role !== 'table')
|
|
436
|
-
continue;
|
|
437
|
-
const type = eventTypeOf(id);
|
|
438
|
-
if (type == null || type === 'element-added')
|
|
439
|
-
continue;
|
|
440
|
-
if (primary == null || (nextRank.get(id) ?? 0) < (nextRank.get(primary) ?? 0))
|
|
441
|
-
primary = id;
|
|
548
|
+
const byPage = new Map();
|
|
549
|
+
for (const n of nodes) {
|
|
550
|
+
const bucket = byPage.get(n.pageIndex);
|
|
551
|
+
if (bucket)
|
|
552
|
+
bucket.push(n);
|
|
553
|
+
else
|
|
554
|
+
byPage.set(n.pageIndex, [n]);
|
|
442
555
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
556
|
+
// Descendants share the fragment's top edge or sit below it, so they never
|
|
557
|
+
// trip this; only genuine preceding content does.
|
|
558
|
+
const startsPage = (t) => !(byPage.get(t.pageIndex) ?? []).some((n) => n.bbox.y < t.bbox.y - SAME_BAND_PTS &&
|
|
559
|
+
!(n.normText != null && repeated.has(n.normText)));
|
|
560
|
+
let head = null;
|
|
561
|
+
let tail = null;
|
|
562
|
+
for (const t of tables) {
|
|
563
|
+
if (tail != null && continuesFrom(tail, t) && startsPage(t)) {
|
|
564
|
+
out.set(t.id, head.id);
|
|
565
|
+
tail = t;
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
head = t;
|
|
569
|
+
tail = t;
|
|
448
570
|
}
|
|
449
571
|
return out;
|
|
450
572
|
}
|
|
451
|
-
/** The
|
|
452
|
-
function
|
|
573
|
+
/** The geometric half of the continuation test: same columns, same band, next page. */
|
|
574
|
+
function continuesFrom(prev, cand) {
|
|
575
|
+
return (cand.pageIndex === prev.pageIndex + 1 &&
|
|
576
|
+
cand.table?.cols != null &&
|
|
577
|
+
cand.table.cols === prev.table?.cols &&
|
|
578
|
+
Math.abs(cand.bbox.x - prev.bbox.x) <= SAME_BAND_PTS &&
|
|
579
|
+
Math.abs(cand.bbox.width - prev.bbox.width) <= SAME_BAND_PTS);
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* The canonical key of the logical table this add/remove belongs to, or null.
|
|
583
|
+
*
|
|
584
|
+
* The key is side-prefixed (`next:<id>` / `base:<id>`) because a table only
|
|
585
|
+
* present in the baseline has no new-snapshot id to be named by, and forcing one
|
|
586
|
+
* is what made deletions ungroupable: every descendant of a vanished fragment
|
|
587
|
+
* failed its `baseToNext` lookup and fell out as a loose row.
|
|
588
|
+
*/
|
|
589
|
+
function owningTable(e, t) {
|
|
453
590
|
const fromBase = e.type === 'element-removed';
|
|
454
|
-
const
|
|
455
|
-
const
|
|
591
|
+
const index = fromBase ? t.baseById : t.nextById;
|
|
592
|
+
const cont = fromBase ? t.contBase : t.contNext;
|
|
593
|
+
const node = 'nodeId' in e ? index.get(e.nodeId) : undefined;
|
|
456
594
|
if (!node)
|
|
457
595
|
return null;
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
596
|
+
let table;
|
|
597
|
+
if (node.role === 'table') {
|
|
598
|
+
// A table's own add/remove groups only when it is a continuation fragment of
|
|
599
|
+
// a table that survived; otherwise it is a finding in its own right.
|
|
600
|
+
const anchor = cont.get(node.id);
|
|
601
|
+
if (anchor == null)
|
|
602
|
+
return null;
|
|
603
|
+
table = index.get(anchor);
|
|
604
|
+
}
|
|
605
|
+
else {
|
|
606
|
+
if (!TABLE_PARTS.has(node.role))
|
|
466
607
|
return null;
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
608
|
+
let cur = node;
|
|
609
|
+
while (cur?.parentId != null) {
|
|
610
|
+
const parent = index.get(cur.parentId);
|
|
611
|
+
if (!parent)
|
|
470
612
|
return null;
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
613
|
+
if (parent.role === 'table') {
|
|
614
|
+
table = parent;
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
cur = parent;
|
|
474
618
|
}
|
|
475
|
-
cur = parent;
|
|
476
619
|
}
|
|
477
|
-
|
|
620
|
+
if (!table)
|
|
621
|
+
return null;
|
|
622
|
+
// Rows and cells under a continuation fragment belong to its anchor table.
|
|
623
|
+
// Name the chain from the new snapshot wherever it exists there, so a removal
|
|
624
|
+
// and an addition on the same table land under one key; a table present only
|
|
625
|
+
// in the baseline keeps a `base:` key rather than being forced into an id it
|
|
626
|
+
// does not have, which is what once made deletions ungroupable.
|
|
627
|
+
const anchorId = cont.get(table.id) ?? table.id;
|
|
628
|
+
if (!fromBase)
|
|
629
|
+
return `next:${anchorId}`;
|
|
630
|
+
const asNext = t.baseToNext.get(anchorId);
|
|
631
|
+
return asNext != null ? `next:${asNext}` : `base:${anchorId}`;
|
|
478
632
|
}
|
|
479
|
-
function
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
633
|
+
function splitKey(key) {
|
|
634
|
+
const at = key.indexOf(':');
|
|
635
|
+
return { side: key.slice(0, at), id: key.slice(at + 1) };
|
|
636
|
+
}
|
|
637
|
+
/**
|
|
638
|
+
* The event index that heads this table's group: the earliest event reported
|
|
639
|
+
* against any fragment of the chain, on either side. Looking only at the anchor
|
|
640
|
+
* misses the common case — when a table starts wrapping, the anchor fragment is
|
|
641
|
+
* unremarkable and it is the newly-appeared fragment that carries the event.
|
|
642
|
+
*/
|
|
643
|
+
function tableRootIdx(key, t) {
|
|
644
|
+
const { side, id } = splitKey(key);
|
|
645
|
+
const baseAnchor = side === 'base' ? id : t.nextToBase.get(id);
|
|
646
|
+
const nextAnchor = side === 'next' ? id : t.baseToNext.get(id);
|
|
647
|
+
const candidates = [];
|
|
648
|
+
for (const f of fragmentsOf(baseAnchor, t.baseById, t.contBase)) {
|
|
649
|
+
const idx = t.eventIdxByBaseId.get(f.id);
|
|
650
|
+
if (idx != null)
|
|
651
|
+
candidates.push(idx);
|
|
652
|
+
}
|
|
653
|
+
for (const f of fragmentsOf(nextAnchor, t.nextById, t.contNext)) {
|
|
654
|
+
const idx = t.eventIdxByNextId.get(f.id);
|
|
655
|
+
if (idx != null)
|
|
656
|
+
candidates.push(idx);
|
|
484
657
|
}
|
|
485
|
-
|
|
486
|
-
|
|
658
|
+
return candidates.length === 0 ? undefined : Math.min(...candidates);
|
|
659
|
+
}
|
|
660
|
+
/** The anchor fragment plus every continuation fragment that points at it. */
|
|
661
|
+
function fragmentsOf(anchorId, index, cont) {
|
|
662
|
+
if (anchorId == null)
|
|
663
|
+
return [];
|
|
664
|
+
const anchor = index.get(anchorId);
|
|
665
|
+
const out = anchor ? [anchor] : [];
|
|
666
|
+
for (const [id, a] of cont) {
|
|
667
|
+
if (a !== anchorId)
|
|
668
|
+
continue;
|
|
669
|
+
const n = index.get(id);
|
|
670
|
+
if (n)
|
|
671
|
+
out.push(n);
|
|
672
|
+
}
|
|
673
|
+
return out.sort((a, b) => a.pageIndex - b.pageIndex || a.order - b.order);
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* The table's before/after shape is read from the *structure* — every fragment
|
|
677
|
+
* on each side — rather than from the group's member events. Scanning members
|
|
678
|
+
* only ever sees the fragments that changed, so on a shrink it would miss the
|
|
679
|
+
* baseline's continuation fragment entirely and report a 21-row table as a
|
|
680
|
+
* 9-row one. Row and cell counts still come from the members, so the numbers in
|
|
681
|
+
* the headline always agree with what is inside the group.
|
|
682
|
+
*/
|
|
683
|
+
function tableSummary(key, t, members, events) {
|
|
684
|
+
const { side, id } = splitKey(key);
|
|
685
|
+
const baseFrags = fragmentsOf(side === 'base' ? id : t.nextToBase.get(id), t.baseById, t.contBase);
|
|
686
|
+
const nextFrags = fragmentsOf(side === 'next' ? id : t.baseToNext.get(id), t.nextById, t.contNext);
|
|
487
687
|
let rows = 0;
|
|
488
688
|
let cells = 0;
|
|
489
689
|
for (const m of members) {
|
|
@@ -491,7 +691,7 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
491
691
|
if (!('nodeId' in e))
|
|
492
692
|
continue;
|
|
493
693
|
const removed = e.type === 'element-removed';
|
|
494
|
-
const n = (removed ? baseById : nextById).get(e.nodeId);
|
|
694
|
+
const n = (removed ? t.baseById : t.nextById).get(e.nodeId);
|
|
495
695
|
if (!n)
|
|
496
696
|
continue;
|
|
497
697
|
const sign = removed ? -1 : 1;
|
|
@@ -499,23 +699,34 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
499
699
|
rows += sign;
|
|
500
700
|
else if (n.role === 'cell')
|
|
501
701
|
cells += sign;
|
|
502
|
-
// Only added tables: the group's own root is the primary fragment, already
|
|
503
|
-
// seeded above, and counting it twice doubles the reported row total.
|
|
504
|
-
else if (n.role === 'table' && e.type === 'element-added')
|
|
505
|
-
fragments.push(n);
|
|
506
702
|
}
|
|
507
|
-
const pages = [...new Set(fragments.map((f) => f.pageIndex + 1))].sort((a, b) => a - b);
|
|
508
|
-
const shape = baseTable?.table
|
|
509
|
-
? `${baseTable.table.rows}×${baseTable.table.cols} → ${fragments.reduce((s, f) => s + (f.table?.rows ?? 0), 0)}×${fragments[0]?.table?.cols ?? '?'}`
|
|
510
|
-
: 'table';
|
|
511
703
|
const delta = [
|
|
512
704
|
rows !== 0 ? `${rows > 0 ? '+' : ''}${rows} row${Math.abs(rows) === 1 ? '' : 's'}` : null,
|
|
513
705
|
cells !== 0 ? `${cells > 0 ? '+' : ''}${cells} cell${Math.abs(cells) === 1 ? '' : 's'}` : null,
|
|
514
706
|
]
|
|
515
707
|
.filter(Boolean)
|
|
516
708
|
.join(', ');
|
|
709
|
+
if (baseFrags.length === 0) {
|
|
710
|
+
return { summary: `table added (${dims(nextFrags)})${delta ? `, ${delta}` : ''}`, label: 'the new table' };
|
|
711
|
+
}
|
|
712
|
+
if (nextFrags.length === 0) {
|
|
713
|
+
return { summary: `table removed (${dims(baseFrags)})${delta ? `, ${delta}` : ''}`, label: 'the removed table' };
|
|
714
|
+
}
|
|
715
|
+
const before = totalRows(baseFrags);
|
|
716
|
+
const after = totalRows(nextFrags);
|
|
717
|
+
const verb = after < before ? 'shrank' : after > before ? 'grew' : 'changed';
|
|
718
|
+
const pages = [...new Set(nextFrags.map((f) => f.pageIndex + 1))].sort((a, b) => a - b);
|
|
517
719
|
const span = pages.length > 1 ? `, now spans pages ${pages[0]}–${pages[pages.length - 1]}` : '';
|
|
518
|
-
return
|
|
720
|
+
return {
|
|
721
|
+
summary: `table ${verb}${delta ? ` ${delta}` : ''} (${dims(baseFrags)} → ${dims(nextFrags)})${span}`,
|
|
722
|
+
label: verb === 'shrank' ? 'the table shrinking' : "the table's growth",
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
function totalRows(frags) {
|
|
726
|
+
return frags.reduce((s, f) => s + (f.table?.rows ?? 0), 0);
|
|
727
|
+
}
|
|
728
|
+
function dims(frags) {
|
|
729
|
+
return `${totalRows(frags)}×${frags[0]?.table?.cols ?? '?'}`;
|
|
519
730
|
}
|
|
520
731
|
// ── Rule 2 helpers ──────────────────────────────────────────────────────────
|
|
521
732
|
/**
|
|
@@ -523,29 +734,31 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
523
734
|
* is what turns "23 things moved" into "23 things moved *because of this*".
|
|
524
735
|
* `page-count-changed` has no position, so it is the last-resort cause.
|
|
525
736
|
*/
|
|
526
|
-
function nearestPrecedingCause(groups, events,
|
|
737
|
+
function nearestPrecedingCause(groups, events, rankInNext, firstMemberRank, pageCountIdx) {
|
|
527
738
|
let best = null;
|
|
528
|
-
let bestRank = -
|
|
739
|
+
let bestRank = -Infinity;
|
|
529
740
|
for (const g of groups) {
|
|
530
|
-
// A cascade is an effect, never a cause; citing one would produce
|
|
531
|
-
//
|
|
532
|
-
|
|
741
|
+
// A cascade is an effect, never a cause; citing one would produce "N moved
|
|
742
|
+
// following M moved following the real thing". A value change swaps one
|
|
743
|
+
// string for another in place, so it cannot push content across a page
|
|
744
|
+
// boundary and is never the reason a page shifted either.
|
|
745
|
+
if (g.kind === 'page-shift-cascade' || g.kind === 'value-changed')
|
|
533
746
|
continue;
|
|
534
747
|
const root = events[g.rootIdx];
|
|
535
748
|
if (!('nodeId' in root))
|
|
536
749
|
continue;
|
|
537
|
-
const rank =
|
|
750
|
+
const rank = rankInNext(root.nodeId);
|
|
538
751
|
if (rank == null || rank >= firstMemberRank)
|
|
539
752
|
continue;
|
|
540
753
|
if (rank > bestRank) {
|
|
541
754
|
bestRank = rank;
|
|
542
|
-
best = {
|
|
755
|
+
best = { summary: g.summary, label: g.label };
|
|
543
756
|
}
|
|
544
757
|
}
|
|
545
758
|
if (best)
|
|
546
759
|
return best;
|
|
547
760
|
if (pageCountIdx !== -1)
|
|
548
|
-
return {
|
|
761
|
+
return { summary: events[pageCountIdx].message };
|
|
549
762
|
return null;
|
|
550
763
|
}
|
|
551
764
|
/**
|
|
@@ -561,14 +774,20 @@ function nearestPrecedingCause(groups, events, nextRank, firstMemberRank, pageCo
|
|
|
561
774
|
* Anything else in the gap is content that stayed put while its neighbours
|
|
562
775
|
* moved — which is not a cascade, so the run ends there.
|
|
563
776
|
*/
|
|
564
|
-
function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated) {
|
|
777
|
+
function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated, movedIds) {
|
|
565
778
|
const byRank = new Map();
|
|
566
779
|
for (const n of nextNodes) {
|
|
567
780
|
const r = nextRank.get(n.id);
|
|
568
781
|
if (r != null)
|
|
569
782
|
byRank.set(r, n);
|
|
570
783
|
}
|
|
571
|
-
const
|
|
784
|
+
const cache = new Map();
|
|
785
|
+
const subtree = (n) => {
|
|
786
|
+
let s = cache.get(n.id);
|
|
787
|
+
if (!s)
|
|
788
|
+
cache.set(n.id, (s = collectSubtree(n, nextNodes)));
|
|
789
|
+
return s;
|
|
790
|
+
};
|
|
572
791
|
const bridges = (from, to) => {
|
|
573
792
|
for (let r = from + 1; r < to; r++) {
|
|
574
793
|
const node = byRank.get(r);
|
|
@@ -576,8 +795,18 @@ function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated)
|
|
|
576
795
|
return false;
|
|
577
796
|
if (eventIdxByNextId.has(node.id))
|
|
578
797
|
continue; // changed for its own reasons
|
|
579
|
-
|
|
580
|
-
|
|
798
|
+
const inside = subtree(node);
|
|
799
|
+
// Page-anchored, and so correctly did not move.
|
|
800
|
+
if (inside.some((d) => d.normText != null && repeated.has(d.normText)))
|
|
801
|
+
continue;
|
|
802
|
+
// An anonymous layout container whose own children are in this very run.
|
|
803
|
+
// Containers have no text to match on, so the matcher pairs them by
|
|
804
|
+
// position and they often end up without a move event even though
|
|
805
|
+
// everything they hold moved. That is a gap in the pairing, not content
|
|
806
|
+
// that stayed behind — the evidence comes from the run itself, so this
|
|
807
|
+
// can never bridge two unrelated regions together.
|
|
808
|
+
if (inside.some((d) => d.id !== node.id && movedIds.has(d.id)))
|
|
809
|
+
continue;
|
|
581
810
|
return false;
|
|
582
811
|
}
|
|
583
812
|
return true;
|
|
@@ -605,12 +834,7 @@ function cascadeSummary(count, delta, idxs, events, cause) {
|
|
|
605
834
|
.filter(Boolean)
|
|
606
835
|
.sort();
|
|
607
836
|
const dir = delta > 0 ? `+${delta}` : `${delta}`;
|
|
608
|
-
|
|
609
|
-
? "the table's growth"
|
|
610
|
-
: cause.kind === 'new-page-furniture'
|
|
611
|
-
? 'the page-count change'
|
|
612
|
-
: cause.summary;
|
|
613
|
-
return `${count} elements shifted ${dir} page${Math.abs(delta) === 1 ? '' : 's'} (${hops.join(', ')}) following ${label}`;
|
|
837
|
+
return `${count} elements shifted ${dir} page${Math.abs(delta) === 1 ? '' : 's'} (${hops.join(', ')}) following ${cause.label ?? cause.summary}`;
|
|
614
838
|
}
|
|
615
839
|
// ── Shared helpers ──────────────────────────────────────────────────────────
|
|
616
840
|
function byId(nodes) {
|
package/dist/diff/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"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"}
|