Files
iptvnator/libs/ui/playback/src/lib/art-player/art-player.component.html
T
4grayandClaude Opus 5.5 3f763310e2 feat(playback): draw catch-up programmes as seek-bar segments
Catch-up / timeshift playback of a live channel now passes the EPG
programmes overlapping its archive window to the shared player controls
as timeline segments, relative to the playback start.

- buildCatchupTimelineSegments (ui/playback) clips programmes to the
  window: Xtream requests exactly [start, stop] of the programme, M3U
  runs from utc to lutc (getM3uCatchupWindowEndSeconds in m3u-utils).
- timelineSegments is plumbed like mediaTitle: WebPlayerViewComponent ->
  the four engine hosts -> app-player-controls.
- Producers: Xtream live layout, unified Favorites/Recent live tab
  (Xtream and M3U), M3U playlist player. Stalker has no archive playback.
- Unit specs per host, helper specs, Electron E2E for Xtream catch-up.
- Contract doc updated; feature release note supersedes the internal
  timeline-segments model note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:01:15 +02:00

30 lines
1.1 KiB
HTML

<div
#playerRoot
class="art-player-shell"
[class.art-player-shell--shared-controls]="sharedControls"
>
<div #artplayer class="artplayer-container"></div>
@if (sharedControls) {
<div class="art-player-interaction-capture" aria-hidden="true"></div>
<app-player-controls
[controller]="controlsAdapter"
[playerSurface]="playerRoot"
[fullscreenTarget]="fullscreenTarget()"
[mediaTitle]="mediaTitle()"
[upNext]="upNext()"
[timelineSegments]="timelineSegments()"
[showControls]="interactionEnabled()"
[shortcutsEnabled]="interactionEnabled()"
(previousEpisodeRequested)="previousEpisodeRequested.emit()"
(nextEpisodeRequested)="nextEpisodeRequested.emit()"
/>
} @else {
<app-series-playback-navigation-controls
[navigation]="seriesNavigation()"
(previousEpisodeRequested)="previousEpisodeRequested.emit()"
(nextEpisodeRequested)="nextEpisodeRequested.emit()"
/>
}
</div>