Angular DestroyRef for automatic subscription cleanup.
References to scrollable container for favorite videos section.
Signal storing the current user's favorite videos.
Signal containing all videos grouped by their category. Key = category name, Value = array of videos.
Signal representing loading state during video fetching.
References to scrollable containers for each video category. Used to control left/right scroll actions.
Signal indicating whether the video player overlay is visible.
Computed signal returning the authenticated user object.
Injected authentication service used to retrieve current user data.
Computed list of loaded videos from the VideoService.
Injected service responsible for loading and managing videos.
Holds the currently selected video for playback.
Signal tracking which category carousels should display scroll arrows. Key = category name, Value = boolean visibility flag.
Returns the scroll container element corresponding to a given video category.
The category name to locate.
The HTML element of the scroll container, or null if not found.
Handles a click event on a video item.
Toggles the video player overlay and sets the selected video.
Current visibility state of the video player.
The video object that was clicked.
Lifecycle hook — executed after every view check. Ensures arrow visibility stays accurate when layout updates occur.
Lifecycle hook — initializes video data and sets up reactive states.
VideoService.Listens for window resize events and triggers re-evaluation of arrow visibility.
Browser resize event
Scrolls the video list to the left for the specified category.
Either a category name ('favorite') or index number.
Scrolls the video list to the right for the specified category.
Either a category name ('favorite') or index number.
Updates the visibility of scroll arrows for each video category carousel.
Updates the list of favorite videos after a user action (like/unlike).
Main content component.
Displays all video sections grouped by category and manages favorite videos, scrolling behavior, and responsive UI updates.
Responsibilities:
Selector:
app-main-contentStandalone:true