interactivity
Helpers for adding interactivity. See the Interactivity section of the guide for examples.
import {Utils} from "liqvid";
const {dragHelperReact} = Utils.interactivity;
dragHelper()
Helper for implementing drag functionality, abstracting over mouse vs touch events. Returns an event listener which should be added to both mousedown
and touchstart
events.
move: (e, hit) => void
Callback for dragging (pointer is moved while down). Receives the following arguments:e: MouseEvent | TouchEvent
The underlyingmousemove
ortouchmove
eventhit: {x, y, dx, dy}
Object containing information about the pointer location:x: number
Horizontal coordinate of pointery: number
Vertical coordinate of pointerdx: number
Horizontal displacement since last calldy: number
Vertical displacement since last call
down?: (e, hit, upHandler, moveHandler) => void
Callback for when dragging begins. Receives the following arguments:e: MouseEvent | TouchEvent
The underlyingmousedown
ortouchstart
eventhit: {x, y}
Object containing information about the pointer location:x: number
Horizontal coordinate of pointery: number
Vertical coordinate of pointerupHandler: (e: MouseEvent | TouchEvent) => void
Up handler used internally by this method (in case you need to cancel it)moveHandler: (e: MouseEvent | TouchEvent) => void
Move handler used internally by this method (in case you need to cancel it)
up?: (e, hit) => void
Callback for when dragging ends (pointer is lifted). Receives the following arguments:e: MouseEvent | TouchEvent
The underlyingmouseup
ortouchcancel
/touchend
eventhit: {x, y, dx, dy}
Object containing information about the pointer location:x: number
Horizontal coordinate of pointery: number
Vertical coordinate of pointerdx: number
Horizontal displacement since last calldy: number
Vertical displacement since last call
dragHelper<T extends Node, E extends MouseEvent | React.MouseEvent<T> | TouchEvent | React.TouchEvent<T>>(
move: (e: MouseEvent | TouchEvent, o: {x: number; y: number; dx: number; dy: number}) => void,
down?: (
e: E,
o: {x: number; y: number},
upHandler: (e: MouseEvent | TouchEvent) => void,
moveHandler: (e: MouseEvent | TouchEvent) => void
) => void,
up?: (e: MouseEvent | TouchEvent) => void
): (e: E) => void;
dragHelperReact()
React version of the previous method. Returns an of event handlers which should be added to a React element with {...}
.
Parameters:
move: (e, hit) => void
same as abovedown?: (e, hit) => void
same as aboveup?: (e, hit) => void
same as aboveinnerRef?: React.Ref
Anyref
that you want attached to the element, since this method attaches its ownref
attribute. This is a hack around https://github.com/facebook/react/issues/2043.
dragHelperReact<T extends Node>(
move: (e: MouseEvent | TouchEvent, o: {x: number; y: number; dx: number; dy: number}) => void,
down?: (
e: React.MouseEvent<T> | React.TouchEvent<T>,
o: {x: number; y: number},
upHandler: (e: MouseEvent | TouchEvent) => void,
moveHandler: (e: MouseEvent | TouchEvent) => void
) => void,
up?: (e: MouseEvent | TouchEvent) => void,
innerRef?: React.Ref<T>
): {
onMouseDown: (e: React.MouseEvent<T>) => void;
onMouseUp: (e: React.MouseEvent<T>) => void;
ref: (_: T) => void;
};