OptionalconfigAndStyle: ConfigAndStyle<TimelineConfig, TimelineStyle>true if visible, false if not visible
Stream of all events emitted by this timeline instance, including lifecycle events (TimelineEventType.TIMELINE_READY), viewport changes (TimelineEventType.TIMELINE_SCROLL, TimelineEventType.TIMELINE_ZOOM, TimelineEventType.TIMELINE_SLOT_SCROLL), and interaction events (TimelineEventType.TIMELINE_TIMECODE_CLICK, TimelineEventType.TIMELINE_SCRUBBER_MOVE, TimelineEventType.TIMELINE_PLAYHEAD_MOVE).
ScrubberLane instance.
Current style configuration of the timeline. Reflects the active visual settings such as dimensions, colours, and playhead appearance.
Adds TimelineLaneApi instance to a slot.
Optionaloptions: { index?: number; slot?: TimelineSlotType }Optionalindex?: numberPosition within the slot; defaults to end.
Optionalslot?: TimelineSlotTypeTarget slot — HEADER, MAIN, or FOOTER. Defaults to MAIN.
Adds multiple instantiated TimelineLaneApi instances to a slot.
Optionaloptions: { index?: number; slot?: TimelineSlotType }Optionalindex?: numberStarting index for the added lanes; each subsequent lane is inserted right after the previous one. Defaults to end of slot.
Optionalslot?: TimelineSlotTypeTarget slot — HEADER, MAIN, or FOOTER. Defaults to MAIN.
Live mode only. Clamps a seek target to both edges of what's actually reachable right now —
mirroring the same bounds the player itself already enforces on every seek (see
HlsPlayerController.constrainSeekTime's [liveStartTime, liveSyncPosition] clamp), so the
timeline UI never visually promises a position the player would silently redirect away from:
_liveTrueStartTime: inside [_liveDisplayOrigin, _liveTrueStartTime) — genuinely only
a non-empty range under TimelineConfig.liveHistoryRetention — content is still
rendered (thumbnails, markers, ticks) but no longer actually reachable: its segments are
already evicted upstream, exactly like EvictedRegionOverlay marks.liveSyncPosition: inside LiveEdgeOverlay's reserved/locked region — not
evicted, just not live yet.Called from every seek entry point that originates from a user interaction with the timeline (scrubber/timecode click, playhead drag, timecode edit) — see call sites.
Destroys Timeline and it's dependencies
Forces a full catch-up of the rendered left bound to the true, current liveStartTime —
closing the gap completely, unlike TimelineConfig.liveHistoryRetention's automatic
behavior, which only ever maintains a bounded (at-most-threshold) trailing gap and never fully
closes it on its own. A no-op if there's nothing to evict (including whenever no threshold is
configured, since the left bound already tracks liveStartTime exactly in that case).
Absolute canvas Y of a lane's own slot's top-left, accounting for HEADER/MAIN/FOOTER vertical stacking. Used to translate a "spans the whole timeline" geometry into a slot's own local coordinate space (HEADER is 0, FOOTER is header+main height, etc.).
Which slot a lane currently lives in. Falls back to MAIN if the lane isn't attached.
Get a slot by type — HEADER (adaptive height, stacked above MAIN), MAIN (bounded/scrollable height, the primary content area), or FOOTER (adaptive height, stacked below MAIN).
Height of the HEADER + MAIN + FOOTER content, i.e. getStageHeight minus the outer
vertical TimelineStyle.padding. Components anchored inside _spanningContainer (the
playhead, scrubber, live edge overlay) span exactly this content region — not the raw stage,
which would bleed into the padding above HEADER and below FOOTER.
Absolute canvas y where the HEADER + MAIN + FOOTER content begins, i.e. the outer top TimelineStyle.padding edge. Pairs with getSpanningContentHeight for anything that needs to span that same content region in absolute/canvas coordinates.
Same as getTimecodedFloatingDimension(), but scoped to the slot that owns the given lane (HEADER/FOOTER lanes have their own content height, distinct from MAIN's).
single TimelineLaneApi instance
Returns lanes in the given slot, defaulting to MAIN (backward-compatible).
Optionalslot: TimelineSlotTypecurrent zoom perent
Removes all timeline lanes
Scrolls timeline
in range from 0 - timeline start or first timestamp, to 100 - timeline end or last timestamop
Optionaloptions: VerticalScrollOptionsScrolls timeline to playhead position
Shows or hides Timeline description pane
Shows or hides Timeline description pane
Explicit user-controlled visibility toggle for a slot's vertical scrollbar. Only MAIN has a mounted scrollbar today — no-op for HEADER/FOOTER.
Live-updates the timeline's style. Only the provided fields are changed; everything else keeps its current value. Propagates to the playhead, scrubber, vertical scrollbar, thumbnail hover preview, slots, and every timeline lane, and emits TimelineEventType.TIMELINE_STYLE_CHANGE.
Recalculates and settles layout, called on window resize event
Toggles Timeline description pane
Toggles Timeline description pane
Toggles the CTI between its interactive and read-only state
Zoom in. Zoom scale in single method call is defined with TimelineConfig.zoomScale
Zoom out. Zoom scale in single method call is defined with TimelineConfig.zoomScale
Timeline zoom
number between 100 and TimelineConfig.zoomMax
Timeline zoom
number between 100 and TimelineConfig.zoomMax
Zoom to max resolution
Unique identifier for this timeline instance.