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 +43 -38
- package/assets/eva-required-import.scss +17 -0
- package/fesm2022/ez-vid-ang.mjs +2354 -175
- package/fesm2022/ez-vid-ang.mjs.map +1 -1
- package/package.json +2 -2
- package/types/ez-vid-ang.d.ts +956 -5
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** –
|
|
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
|
|
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
|
-
|
|
120
|
+
EvaControlsContainer,
|
|
121
|
+
EvaControlsDivider,
|
|
122
|
+
EvaFullscreen,
|
|
123
|
+
EvaMute,
|
|
117
124
|
EvaOverlayPlay,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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: '
|
|
130
|
-
templateUrl: './
|
|
131
|
-
styleUrl: './
|
|
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
|
-
|
|
146
|
+
EvaOverlayPlay,
|
|
144
147
|
EvaPlayer,
|
|
145
148
|
EvaPlayPause,
|
|
146
|
-
EvaPictureInPicture,
|
|
147
|
-
EvaQualitySelector,
|
|
148
149
|
EvaScrubBar,
|
|
149
150
|
EvaScrubBarBufferingTime,
|
|
150
151
|
EvaScrubBarCurrentTime,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
]
|
|
152
|
+
EvaTimeDisplay,
|
|
153
|
+
EvaUserInteractionEventsDirective,
|
|
154
|
+
EvaVolume,
|
|
155
|
+
],
|
|
156
156
|
})
|
|
157
|
-
export class
|
|
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.
|
|
177
|
-
- [**EvaCore**](documentation/core) – Main player component, directives, and providers
|
|
178
|
-
- [**EvaControls**](documentation/controls) – Video control components and
|
|
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
|
+
}
|