Skip to main content

useCanvasSequenceHover()v4.0.527

Connects one layer row to the shared canvas hover state.

warning

Experimental API: This package is not stable. Its public API may change without a major version bump.

LayerRow.tsx
import { useCanvasSequenceHover, type CanvasController, type TimelineTrackData, getCanvasSequenceNodePathInfo, } from '@remotion/sdk'; export const LayerRow = ({controller, track}: { controller: CanvasController; track: TimelineTrackData; }) => { const {hovered, onPointerEnter, onPointerLeave} = useCanvasSequenceHover( controller.hover, getCanvasSequenceNodePathInfo(track), 'timeline', ); return ( <button onPointerEnter={onPointerEnter} onPointerLeave={onPointerLeave} onFocus={onPointerEnter} onBlur={onPointerLeave} style={{background: hovered ? '#dbeafe' : 'transparent'}} > {track.sequence.displayName ?? track.sequence.type} </button> ); };

Parameters​

controller​

The CanvasHoverController, normally controller.hover from useCanvasController().

nodePathInfo​

The track's SequenceNodePathInfo, or null for a row that cannot be hovered. Resolve it with getCanvasSequenceNodePathInfo() or the same custom resolver passed to <Canvas>.

source​

'timeline' for a layer list or 'canvas' for an overlay. The source is used when clearing hover so one surface does not clear the other surface's state.

Return value​

hovered​

A boolean indicating whether this source node is hovered. Multiple mounted instances with the same source identity can be highlighted together.

onPointerEnter​

Call when the pointer enters the row, or when a keyboard focus should highlight it.

onPointerLeave​

Call when the pointer leaves the row or it loses focus. It clears hover only if this hook still owns the current hover state.

Compatibility​

BrowsersEnvironments
Chrome
Firefox
Safari

See also​