API
Public Surface
Manager public API should expose capability operations only.
type VideoTrimManager = {
getState: () => VideoTrimManagerState;
setStartTime: (startTime: number) => boolean;
setEndTime: (endTime: number) => boolean;
moveRange: (offsetSeconds: number) => boolean;
reset: () => void;
undo: () => boolean;
subscribe: (listener: VideoTrimManagerListener) => () => void;
destroy: () => void;
};
Factory:
createVideoTrimManager(options: {
player: VideoTrimPlayerContract;
initialRange?: { startTime: number; endTime: number };
playbackSync?: { epsilonSeconds?: number };
})
State Shape
type VideoTrimManagerState = {
initialRange: TrimRange;
range: TrimRange;
videoDuration: number;
validation: TrimValidationState;
canUndo: boolean;
};
Event Contract
Capability events are contract-level snapshots:
rangeChangedvalidationChangedresetundoplaybackReachedEnd
Non-Goals for Public API
Do not expose:
- internal engine classes
- internal state mutation helpers
- UI-specific data or formatting
- backend workflow semantics