@byomakase/omakase-player
    Preparing search index...

    Interface TimelineConfig

    interface TimelineConfig {
        htmlElementId: string;
        layoutEasingDuration: number;
        liveEdgeBufferSpace?: number;
        liveHistoryRetention?: number;
        liveReflowCadence?: number;
        liveScrollSmoothing?: boolean;
        playheadDragScrollMaxSpeedAfterPx: number;
        scrollEasingDuration: number;
        scrubberClickSeek: boolean;
        scrubberSnapArea: number;
        timecodeClickEdit: boolean;
        zoomBaseline: number;
        zoomEasingDuration: number;
        zoomMax: number;
        zoomScale: number;
        zoomScaleWheel: number;
        zoomWheelEnabled: boolean;
    }
    Index

    Properties

    htmlElementId: string
    layoutEasingDuration: number
    liveEdgeBufferSpace?: number

    Live mode only. Seconds of "excess space" manually reserved as a locked/unreachable region past the live edge, absorbing manifest growth without reflowing the timeline until it's used up. When undefined, the locked region is always the automatic minimum (liveEdgeDuration - liveSyncPosition), so every manifest update that grows the edge reflows the timeline.

    Its "absorb without reflow" benefit is EVENT-mode-centric: for a CONTINUOUS (sliding-window) stream, liveStartTime drifts on essentially every manifest update regardless of this setting, which alone makes the timeline reflow-eligible — this option only governs whether the extent side of that reflow also grows, not whether a reflow happens at all. liveReflowCadence is the setting that actually throttles reflow frequency for CONTINUOUS streams.

    liveHistoryRetention?: number

    CONTINUOUS live mode only. Seconds of "evicted but still shown" slack the rendered timeline's left bound is allowed to lag behind the true, current live start by, at all times — a continuously-maintained rolling cap, not a one-time batch flush.

    Undefined (default): today's behavior — the left bound tracks the true live start exactly, on every reflow. The timeline never shows anything the player can no longer actually seek to.

    Set: the left bound trails the true live start by up to (never more than) this many seconds, advancing incrementally alongside it rather than jumping — so at most this many seconds of otherwise-evicted content stays visible/scrollable-to at any given moment. This cap is enforced every tick regardless of liveReflowCadence (an unrelated, extent-growth-only throttle) — "at most N seconds" is a hard guarantee. The gap can still be closed completely on demand, independent of the cap, via TimelineApi.evictLiveHistory. Either way, emits TimelineEventType.TIMELINE_LIVE_ORIGIN_ADVANCED whenever the left bound actually advances, so lanes holding onto now-unreachable items (e.g. thumbnails, which are never pruned upstream) can release them.

    liveReflowCadence?: number

    Live mode only. Minimum accumulated growth of liveEdgeDuration (seconds) required between geometry reflows (timecoded-width resize/reposition) while live. Segment/manifest updates that arrive in between are absorbed silently — the rendered width, scroll position, and every derived coordinate (ticks, markers, playhead) stay exactly as they were — until accumulated growth since the last reflow reaches this cadence, at which point a single reflow catches up all of the held growth at once. The live-edge-proximity overlay keeps tracking every update regardless of this setting. When undefined, every live-state update that changes the geometry reflows immediately (the previous default behavior).

    liveScrollSmoothing?: boolean

    Live mode only. When true, an automatic scroll-to-live-edge snap animates the scroll position over scrollEasingDuration instead of jumping there instantly. The timeline's width still resizes immediately to fit the new extent — only the follow-scroll itself eases. Manual scrolling/zooming is unaffected. Defaults to false (instant snap).

    playheadDragScrollMaxSpeedAfterPx: number
    scrollEasingDuration: number
    scrubberClickSeek: boolean
    scrubberSnapArea: number
    timecodeClickEdit: boolean
    zoomBaseline: number
    zoomEasingDuration: number
    zoomMax: number
    zoomScale: number
    zoomScaleWheel: number
    zoomWheelEnabled: boolean