mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-10 01:18:55 -05:00
Adjusted CSS for video control wrappers to ensure consistent alignment and spacing across desktop and mobile. Reduced gaps between PiP and fullscreen buttons, and hid subtitles button on small screens for better layout. Updated CustomRemainingTime.css to increase font size, padding, and font weight for better readability on smaller devices.
Video.js Components
This directory contains the organized Video.js components, separated into logical modules for better maintainability and reusability.
Directory Structure
components/
├── controls/ # Control components (buttons, menus, etc.)
│ └── NextVideoButton.js
├── markers/ # Progress bar markers and indicators
│ └── ChapterMarkers.js
├── overlays/ # Overlay components (end screens, popups, etc.)
│ └── EndScreenOverlay.js
├── video-player/ # Main video player component
│ └── VideoJSPlayer.jsx
├── index.js # Main exports file
└── README.md # This file
Components Overview
VideoJSPlayer (Main Component)
- Location:
video-player/VideoJSPlayer.jsx - Purpose: Main Video.js player component that orchestrates all other components
- Features:
- Video.js initialization and configuration
- Event handling and lifecycle management
- Integration with all sub-components
EndScreenOverlay
- Location:
overlays/EndScreenOverlay.js - Purpose: Displays related videos when the current video ends
- Features:
- Grid layout for related videos
- Thumbnail and metadata display
- Click navigation to related videos
ChapterMarkers
- Location:
markers/ChapterMarkers.js - Purpose: Provides chapter navigation on the progress bar
- Features:
- Visual chapter markers on progress bar
- Floating tooltip with chapter information
- Click-to-jump functionality
- Continuous chapter display while hovering
NextVideoButton
- Location:
controls/NextVideoButton.js - Purpose: Custom control bar button for next video navigation
- Features:
- Custom SVG icon
- Accessibility support
- Event triggering for next video functionality
Usage
Import Individual Components
import EndScreenOverlay from './components/overlays/EndScreenOverlay';
import ChapterMarkers from './components/markers/ChapterMarkers';
import NextVideoButton from './components/controls/NextVideoButton';
Import from Index
import {
VideoJSPlayer,
EndScreenOverlay,
ChapterMarkers,
NextVideoButton,
} from './components';
Use Main Component
import { VideoJSPlayer } from './components';
function App() {
return <VideoJSPlayer />;
}
Development Guidelines
- Separation of Concerns: Each component should have a single, well-defined responsibility
- Video.js Registration: Each component registers itself with Video.js using
videojs.registerComponent() - Event Handling: Use Video.js event system for communication between components
- Cleanup: Implement proper cleanup in
dispose()methods to prevent memory leaks - Accessibility: Ensure all components follow accessibility best practices
Adding New Components
- Create the component in the appropriate subdirectory
- Register it with Video.js using
videojs.registerComponent() - Export it from the subdirectory's index file (if needed)
- Add it to the main
components/index.jsfile - Update this README with the new component information
Dependencies
- video.js: Core Video.js library
- React: For the main VideoJSPlayer component
- videojs.dom: For DOM manipulation utilities
- videojs.getComponent: For extending Video.js base components