ez-vid-ang 21.2.2 → 21.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,11 +7,17 @@ Highly configurable, performant and easy-to-use Angular component library for vi
7
7
  ⚡ **Zoneless** - Built for zoneless Angular applications by default<br/>
8
8
  🧩 **Standalone architecture** – No NgModules required; simpler imports, better tree-shaking, and improved DX<br/>
9
9
  🚀 **High performance** – Powered by RxJS; change detection runs only when needed (no zone pollution)<br/>
10
- 🎨 **Highly customizable** – Styling variables, custom icons, and fonts. Bring your own assets<br/>
10
+ 🎨 **Highly customizable** – 200+ CSS variables, custom icons, and fonts. Bring your own assets<br/>
11
11
  ♿ **ARIA compliant** – All components follow ARIA standards and support custom inputs<br/>
12
12
  🌍 **Multilanguage support** – Configurable text inputs for full localization<br/>
13
13
  ▶️ **Inspired by modern players** – Familiar UX similar to popular platforms<br/>
14
14
  📱 **Responsive design** - Works across all screen sizes and devices<br/>
15
+ ⚙️ **Settings panel** – YouTube-style navigable settings menu with sub-menus<br/>
16
+ ⌨️ **Keyboard shortcuts overlay** – Press `?` to show all shortcuts, auto-integrated<br/>
17
+ 💾 **Configuration storage** – Persist user preferences (volume, speed, loop, cinema mode) to localStorage<br/>
18
+ 🎬 **Cinema mode** – Dim the page and focus on the video<br/>
19
+ 🖼️ **Thumbnail preview** – Hover the scrub bar to see video frame thumbnails via VTT sprite sheets<br/>
20
+ 📺 **Remote playback** – Cast to ChromeCast or AirPlay with one click, auto-hides when no devices available<br/>
15
21
 
16
22
  ## Example project
17
23
 
@@ -106,58 +112,57 @@ Add the required styles to your angular.json:
106
112
  > }
107
113
  > ```
108
114
 
109
- Import the needed components and types into your standalone component or NgModule:
110
- ```
111
- import { Component } from '@angular/core';
115
+ Import only the components you need every component is standalone and tree-shakable:
116
+ ```typescript
117
+ import { Component, signal } from '@angular/core';
112
118
  import {
113
- EvaActiveChapter,
114
- EvaBackward,
115
119
  EvaBuffering,
116
- EvaChapterMarker,
120
+ EvaControlsContainer,
121
+ EvaControlsDivider,
122
+ EvaFullscreen,
123
+ EvaMute,
117
124
  EvaOverlayPlay,
118
- EvaControlsContainer, EvaControlsDivider,
119
- EvaForward, EvaFullscreen, EvaHlsDirective,
120
- EvaMute, EvaMuteAria, EvaPlaybackSpeed, EvaPlayer,
121
- EvaPlayPause, EvaQualitySelector, EvaScrubBar,
122
- EvaScrubBarBufferingTime, EvaScrubBarCurrentTime,
123
- EvaSubtitleDisplay,EvaPictureInPicture,
124
- EvaTimeDisplay, EvaTrack, EvaTrackSelector,
125
- EvaVideoElementConfiguration, EvaVideoSource, EvaVolume
126
- } from "ez-vid-ang";
125
+ EvaPlayer,
126
+ EvaPlayPause,
127
+ EvaScrubBar,
128
+ EvaScrubBarBufferingTime,
129
+ EvaScrubBarCurrentTime,
130
+ EvaTimeDisplay,
131
+ EvaUserInteractionEventsDirective,
132
+ EvaVideoSource,
133
+ EvaVolume,
134
+ } from 'ez-vid-ang';
127
135
 
128
136
  @Component({
129
- selector: 'lt-home-page',
130
- templateUrl: './home-page.html',
131
- styleUrl: './home-page.scss',
137
+ selector: 'app-player',
138
+ templateUrl: './player.html',
139
+ styleUrl: './player.scss',
132
140
  imports: [
133
- EvaActiveChapter,
134
- EvaBackward,
135
141
  EvaBuffering,
136
- EvaOverlayPlay,
137
142
  EvaControlsContainer,
138
143
  EvaControlsDivider,
139
- EvaForward,
140
144
  EvaFullscreen,
141
- EvaHlsDirective,
142
145
  EvaMute,
143
- EvaPlaybackSpeed,
146
+ EvaOverlayPlay,
144
147
  EvaPlayer,
145
148
  EvaPlayPause,
146
- EvaPictureInPicture,
147
- EvaQualitySelector,
148
149
  EvaScrubBar,
149
150
  EvaScrubBarBufferingTime,
150
151
  EvaScrubBarCurrentTime,
151
- EvaSubtitleDisplay,
152
- EvaTimeDisplay,
153
- EvaTrackSelector,
154
- EvaVolume
155
- ]
152
+ EvaTimeDisplay,
153
+ EvaUserInteractionEventsDirective,
154
+ EvaVolume,
155
+ ],
156
156
  })
157
- export class HomePage {}
158
-
157
+ export class PlayerComponent {
158
+ protected readonly sources = signal<EvaVideoSource[]>([
159
+ { type: 'video/mp4', src: '/video.mp4' },
160
+ ]);
161
+ }
159
162
  ```
160
163
 
164
+ See [Simple Example](documentation/example-simple.md) and [Full-Featured Example](documentation/example-configuration.md) for complete usage.
165
+
161
166
  ## Development
162
167
 
163
168
  ### Linting
@@ -173,11 +178,11 @@ All magic numbers are centralized in `src/lib/constants.ts`. See [linting docume
173
178
 
174
179
  ## Components
175
180
 
176
- Library has four groups of components. You can click on the name to go to the documentation:
177
- - [**EvaCore**](documentation/core) – Main player component, directives, and providers
178
- - [**EvaControls**](documentation/controls) – Video control components and pipes
181
+ Library has four groups of components. Click on the name to go to the documentation:
182
+ - [**EvaCore**](documentation/core) – Main player component, directives (keyboard shortcuts, configuration storage), and providers
183
+ - [**EvaControls**](documentation/controls) – Video control components (play/pause, volume, scrub bar, fullscreen, playback speed, quality selector, track selector, loop, picture-in-picture, download, screenshot, context menu, settings panel, keyboard shortcuts overlay, cinema mode, error overlay, chapter list, and more)
179
184
  - [**EvaBuffering**](documentation/buffering) – Loading and buffering indicators
180
- - [**EvaStreaming**](documentation/streaming) – Directives for live streaming support
185
+ - [**EvaStreaming**](documentation/streaming) – Directives for HLS and DASH live streaming support
181
186
 
182
187
  ---
183
188
  ### 💖 Support This Project
@@ -108,3 +108,20 @@
108
108
  --eva-volume-knob-size: 15px;
109
109
  --eva-volume-knob-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
110
110
  }
111
+
112
+ .eva-cinema-backdrop {
113
+ position: fixed;
114
+ top: 0;
115
+ left: 0;
116
+ width: 100vw;
117
+ height: 100vh;
118
+ z-index: var(--eva-cinema-backdrop-z-index, 999);
119
+ background: var(--eva-cinema-backdrop-background, rgba(0, 0, 0, 0.7));
120
+ cursor: pointer;
121
+ animation: eva-cinema-backdrop-fade-in var(--eva-transition-duration, 0.25s) ease forwards;
122
+ }
123
+
124
+ @keyframes eva-cinema-backdrop-fade-in {
125
+ from { opacity: 0; }
126
+ to { opacity: 1; }
127
+ }