Skip to content

Instantly share code, notes, and snippets.

@DimitryDushkin
Created July 20, 2019 20:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DimitryDushkin/877498b8c2d8ec0a5356ddbcac36907a to your computer and use it in GitHub Desktop.
Save DimitryDushkin/877498b8c2d8ec0a5356ddbcac36907a to your computer and use it in GitHub Desktop.
export function useDraggable(draggableRef: React.RefObject<HTMLElement>) {
const drag$ = useRef<Observable<DragEvent>>();
useLayoutEffect(() => {
if (!draggableRef.current) {
return () => {};
}
const down$ = fromEvent<PointerEvent>(draggableRef.current, "pointerdown");
const move$ = fromEvent<PointerEvent>(document, "pointermove");
const up$ = fromEvent<PointerEvent>(document, "pointerup");
drag$.current = createDragObservable(up$, down$, move$);
}, [draggableRef]);
return drag$;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment