Signature
useTimelineViewportRangeControl(options: TimelineViewportRangeControlOptions = {}): objectParameters
| Name | Type | Description |
|---|---|---|
| options | TimelineViewportRangeControlOptions | Viewport scrollbar options plus optional decimal precision for spoken time values. |
Returns
object
Timeline viewport metrics and `RangeScrollbar.Root` props with formatted value text.
Return members
| Name | Signature | Description |
|---|---|---|
endValueText | endValueText: string | Formatted visible viewport end time. |
onValueChange | (value: RangeScrollbarValue, details: RangeScrollbarValueChangeDetails): void | Handles controlled range changes by panning or zooming the timeline engine. |
range | range: UseRangeScrollbarResult | Generic range scrollbar state derived from timeline viewport state. |
rootProps | rootProps: object | Props for `RangeScrollbar.Root`, including formatted `aria-valuetext`. |
scrollLeft | scrollLeft: number | Current horizontal timeline scroll offset in pixels. |
startValueText | startValueText: string | Formatted visible viewport start time. |
totalDurationSeconds | totalDurationSeconds: number | Full timeline duration represented by the scrollbar domain, in seconds. |
valueText | valueText: string | Formatted visible viewport range for assistive technology. |
viewDurationSeconds | viewDurationSeconds: number | Visible viewport duration in seconds. |
viewEndSeconds | viewEndSeconds: number | Visible viewport end time in seconds. |
viewportWidth | viewportWidth: number | Measured timeline viewport width in pixels. |
viewStartSeconds | viewStartSeconds: number | Visible viewport start time in seconds. |
zoomScale | zoomScale: number | Current timeline zoom scale in pixels per second. |
Examples
const viewport = useTimelineViewportRangeControl();
return ( <RangeScrollbar.Root {...viewport.rootProps}> <RangeScrollbar.Thumb> <RangeScrollbar.Handle side="start" /> <RangeScrollbar.Handle side="end" /> </RangeScrollbar.Thumb> </RangeScrollbar.Root>);