refactor(app): implement canvas-based diff rendering

This commit is contained in:
Mohamed Boudra
2026-08-17 21:14:37 +02:00
parent 75adf53893
commit d03cf14703
66 changed files with 6147 additions and 3210 deletions
@@ -0,0 +1,28 @@
import { hitTestDiffDocument } from "./hit-testing";
import type { DiffDocumentModel, DiffHit } from "./types";
export interface SurfaceWindowOrigin {
x: number;
y: number;
}
export function hitTestDiffPagePoint(input: {
model: DiffDocumentModel;
pageX: number;
pageY: number;
surfaceOrigin: SurfaceWindowOrigin;
scrollTop: number;
horizontalOffsetForPath: (path: string) => number;
}): DiffHit | null {
const x = input.pageX - input.surfaceOrigin.x;
const documentY = input.pageY - input.surfaceOrigin.y + input.scrollTop;
const file = input.model.files.find(
(entry) => entry.top <= documentY && documentY < entry.bottom,
);
return hitTestDiffDocument({
model: input.model,
x,
documentY,
horizontalOffset: file ? input.horizontalOffsetForPath(file.path) : 0,
});
}