From b30a00a9713fd52865129132317beb6fa875017c Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Sun, 13 Nov 2022 03:39:02 +0100 Subject: type script --- src_js/dragger.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src_js/dragger.ts (limited to 'src_js/dragger.ts') diff --git a/src_js/dragger.ts b/src_js/dragger.ts new file mode 100644 index 0000000..0aeda91 --- /dev/null +++ b/src_js/dragger.ts @@ -0,0 +1,42 @@ + +type MouseHandler = (evt: MouseEvent) => void; + +type MoveHandler = (evt: MouseEvent, dx: number, dy: number) => void; + +type CreateMoveHandler = (evt: MouseEvent) => MoveHandler; + +type Dragger = { + initX: number, + initY: number, + moveHandler: MoveHandler; +} + + +const draggers: Dragger[] = []; + + +export function mouseDownHandler( + createMoveHandlerCb: CreateMoveHandler +): MouseHandler { + return evt => { + draggers.push({ + initX: evt.screenX, + initY: evt.screenY, + moveHandler: createMoveHandlerCb(evt) + }); + }; +} + + +document.addEventListener('mousemove', evt => { + for (const dragger of draggers) { + const dx = evt.screenX - dragger.initX; + const dy = evt.screenY - dragger.initY; + dragger.moveHandler(evt, dx, dy); + } +}); + + +document.addEventListener('mouseup', () => { + draggers.splice(0); +}); -- cgit v1.2.3-70-g09d2