Built by the cards and previews that start playback, and held in
PlayerProvider's queue, which localStorage keeps across reloads. An embed
plays in the provider's iframe; a file (an upload) and a stream play in
MediaPlayer.
()
| ()
| (PlayerItemBase
& { kind: "stream"; streamUrl: string; type: string; duration?: number; trackNum?: number; resolveUrl: string; resolveIndex: number; resolvedAt: number; embedUrl?: string; })