import { Cue, TextTrack } from "../../media/types/index.js"; import { MessageActor } from "../../core/actors/create-machine-actor.js"; import { ForwardBufferConfig } from "../../media/buffer/forward-buffer.js"; import { TextMessagePipelines } from "../primitives/text-segment-load-pipeline.js"; import "./text-tracks.js"; //#region src/playback/actors/text-track-segment-loader.d.ts /** * Mirrors the v/a `SegmentLoaderMessage` shape. `range` carries the * forward-window anchor (`range.start` is treated as the load anchor; * the actor computes its own forward window internally via * `getSegmentsToLoad`). When `range` is omitted (metadata mode), this * actor is a no-op — text tracks have no init-segment concept. */ type TextTrackSegmentLoaderMessage = { type: 'load'; track: TextTrack; range?: { start: number; end: number; }; }; /** Finite states of the actor. */ type TextTrackSegmentLoaderActorState = 'idle' | 'loading' | 'destroyed'; /** Non-finite (extended) data managed by the actor. */ interface TextTrackSegmentLoaderActorContext { /** * Track ID of the segment currently being fetched, or null. Paired * with `inFlightSegmentId` so the continue-vs-preempt check survives * cross-track segment-id collisions (e.g. each track starts at * `seg-0`). */ inFlightTrackId: string | null; /** * Segment ID currently being fetched, or null. Used together with * `inFlightTrackId` by the `loading` state's `load` handler. */ inFlightSegmentId: string | null; } type TextTrackSegmentLoaderActor = MessageActor; /** * Configuration for `createTextTrackSegmentLoaderActor`. Spread over * `DEFAULT_FORWARD_BUFFER_CONFIG` to override individual forward-window * fields (e.g. `bufferDuration`). Text tracks don't have a back-buffer * concern — cues evict by their playhead-relative window at runtime — * so no `backBuffer` config field. */ interface TextTrackSegmentLoaderActorConfig { forwardBuffer?: Partial; /** Ordered step pipeline. Defaults to {@link DEFAULT_TEXT_MESSAGE_PIPELINES} (`resolveCues → dispatchCues`). */ messagePipelines?: TextMessagePipelines; } //#endregion export { TextTrackSegmentLoaderActor, TextTrackSegmentLoaderActorConfig, TextTrackSegmentLoaderActorContext, TextTrackSegmentLoaderActorState, TextTrackSegmentLoaderMessage }; //# sourceMappingURL=text-track-segment-loader.d.ts.map