mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 11:06:16 -08:00
Address the file-size review finding and prepare for a future EPG list view by extracting the view-agnostic pieces out of the 538-line timeline component and 411-line utils file; both are now well under the line ceiling and the shared building blocks are re-exported from `@iptvnator/ui/epg`. - `epg-timeline.utils.ts` (227) keeps axis/blocks/date helpers; the short-programme render strategy (tiers, grouping, zoom bounds) moves to `epg-timeline-render.util.ts` (re-exported for API compatibility). - `epg-archive.util.ts` — pure catch-up gating (`isWithinArchiveWindow`, `canCatchUpProgramme`, `epgDialogActionFor`) off `when`/`startMs` primitives. - `epg-summary.util.ts` — `EpgTimelineSummary` + collapsed-summary progress maths. - `epg-programme-dialog.service.ts` — `EpgProgrammeDialogService`, opens the shared details dialog and returns the chosen action. - `epg-timeline-scroll.controller.ts` — `TimelineScrollController` owns ribbon scrolling + channel-select auto-focus (with its migrated spec). Behaviour unchanged. epg-timeline.component.ts 538→393, epg-timeline.utils.ts 411→227. Tests: ui-epg 78 (10 suites), portal-shared-ui 47, playlist-m3u 30; lint + web build green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>