Core Concepts

Prev Next

Core Concepts

Time Representation Rules

ℹ️ Note
This is a capability invariant.

  • Internal manager unit: seconds
  • Fractional seconds: allowed
  • Player contract I/O: seconds
  • Hook/module state exchange: seconds
  • UI formatting/parsing happens at edges only (e.g., HH:MM:SS.mmm)
  • Manager must never store milliseconds, frame numbers, or timecode strings

TrimRange

Represents selected media interval:

  • startTime
  • endTime
  • Derived: duration = endTime - startTime

TrimState

Represents manager-owned capability state:

  • initialRange
  • current range
  • videoDuration
  • validation
  • history (single-level in v1.1)

Selection Engine

Owns deterministic range transitions:

  • setStartTime
  • setEndTime
  • moveRange
  • reset
  • undo

Validation Engine

Guarantees legal ranges:

  • startTime >= 0
  • endTime <= videoDuration
  • startTime < endTime

⚠️ Warning
Validation failure must preserve prior valid range.

History Engine

v1.1 model:

  • single previous snapshot
  • reset() saves current range to history before reset
  • undo() restores the previous snapshot once

Playback Sync Engine

Ensures preview behavior respects selected range:

  • at/after endTime → pause
  • seek back to startTime

ℹ️ Note
Sync behavior is evaluated against player time updates, not UI events.