API

Prev Next

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:

  • rangeChanged
  • validationChanged
  • reset
  • undo
  • playbackReachedEnd

Non-Goals for Public API

Do not expose:

  • internal engine classes
  • internal state mutation helpers
  • UI-specific data or formatting
  • backend workflow semantics