refactor(web): extract document drag listeners

This commit is contained in:
2026-04-01 10:39:28 +02:00
parent 84c5760392
commit eda8722d83
5 changed files with 91 additions and 24 deletions
@@ -0,0 +1,19 @@
type MouseDragDocumentLike = {
addEventListener: (type: "mousemove" | "mouseup", listener: (event: MouseEvent) => void) => void;
removeEventListener: (type: "mousemove" | "mouseup", listener: (event: MouseEvent) => void) => void;
};
export function attachDocumentMouseDrag(
doc: MouseDragDocumentLike,
onMove: (event: MouseEvent) => void,
onUp: (event: MouseEvent) => void,
): () => void {
function cleanup() {
doc.removeEventListener("mousemove", onMove);
doc.removeEventListener("mouseup", onUp);
}
doc.addEventListener("mousemove", onMove);
doc.addEventListener("mouseup", onUp);
return cleanup;
}