@halibegic/react-video-player 0.0.16 → 0.0.17

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
@@ -20,23 +20,19 @@ function App() {
20
20
  }
21
21
  ```
22
22
 
23
- | Prop | Type | Description | Default |
24
- | -------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------- |
25
- | `url` | `string` | The vod stream URL | - |
26
- | `watchHistory` | `{ enabled: boolean; storageKey: string; }` | (Optional) Enable watch history and specify a **unique** storage key for each vod player instance | - |
23
+ | Prop | Type | Description | Default |
24
+ | ----------- | ---------------------------------------- | ------------------------------------------------------- | ------- |
25
+ | `url` | `string` | The vod stream URL | - |
26
+ | `startTime` | `number` | (Optional) Start time in seconds to begin playback from | - |
27
+ | `onEvent` | `(event: string, data: unknown) => void` | (Optional) Event handler callback for player events | - |
27
28
 
28
- **Example with `watchHistory`:**
29
+ **Example with `startTime`:**
29
30
 
30
31
  ```tsx
31
32
  import { VodPlayer } from "@halibegic/react-video-player";
32
33
 
33
34
  function App() {
34
- return (
35
- <VodPlayer
36
- url="https://example.com/vod.m3u8"
37
- watchHistory={{ enabled: true, storageKey: "video-1" }}
38
- />
39
- );
35
+ return <VodPlayer url="https://example.com/vod.m3u8" startTime={10} />;
40
36
  }
41
37
  ```
42
38
 
@@ -67,10 +63,9 @@ function App() {
67
63
  | `url` | `string` | The live stream URL | - |
68
64
  | `startDate` | `string` | Start date for the live event in ISO 8601 format | - |
69
65
  | `endDate` | `string` | End date for the live event in ISO 8601 format | - |
66
+ | `onEvent` | `(event: string, data: unknown) => void` | (Optional) Event handler callback for player events | - |
70
67
  | `messages` | `{ eventNotStarted: string; eventFinished: string; eventStartingSoon?: string; live?: string; }` | (Optional) Custom messages for event not started, finished, starting soon, and live states | `{ eventNotStarted: "Event has not started yet.", eventFinished: "Event has finished.", eventStartingSoon: "Starting soon...", live: "Live" }` |
71
68
 
72
- **Example with `messages`:**
73
-
74
69
  ## Keyboard Shortcuts
75
70
 
76
71
  The video player supports the following keyboard shortcuts:
@@ -85,6 +80,102 @@ The video player supports the following keyboard shortcuts:
85
80
  | `M` | Mute/Unmute | Toggle mute (0% ↔ 100%) |
86
81
  | `F` | Fullscreen | Toggle fullscreen mode |
87
82
 
83
+ ## Events
84
+
85
+ Both `VodPlayer` and `LivePlayer` support event handling through the `onEvent` prop. This allows you to listen to various player events and respond accordingly.
86
+
87
+ ### Event Types
88
+
89
+ | Event Name | Data Type | Description |
90
+ | ------------------ | ------------------------------------------- | ----------------------------------------------------- |
91
+ | `play` | `void` | Fired when playback starts |
92
+ | `pause` | `void` | Fired when playback is paused |
93
+ | `ended` | `void` | Fired when playback reaches the end |
94
+ | `seeking` | `void` | Fired when seeking starts |
95
+ | `seeked` | `void` | Fired when seeking is complete |
96
+ | `timeUpdate` | `{ currentTime: number; duration: number }` | Fired during playback with current time and duration |
97
+ | `volumeChange` | `{ volume: number }` | Fired when volume changes (0-1) |
98
+ | `fullscreenChange` | `{ isFullscreen: boolean }` | Fired when fullscreen mode changes |
99
+ | `qualityChange` | `{ level: number \| null }` | Fired when video quality changes |
100
+ | `loadedMetadata` | `{ duration: number }` | Fired when video metadata is loaded |
101
+ | `loadStart` | `void` | Fired when loading starts |
102
+ | `playing` | `void` | Fired when playback actually starts (after buffering) |
103
+ | `waiting` | `void` | Fired when playback is waiting for data |
104
+ | `error` | `unknown` | Fired when an error occurs |
105
+
106
+ ### Usage Examples
107
+
108
+ #### VOD Player with Events
109
+
110
+ ```tsx
111
+ import { VodPlayer } from "@halibegic/react-video-player";
112
+
113
+ function App() {
114
+ const handlePlayerEvent = (event: string, data: unknown) => {
115
+ switch (event) {
116
+ case "play":
117
+ console.log("Play");
118
+ break;
119
+ case "pause":
120
+ console.log("Pause");
121
+ break;
122
+ case "timeUpdate":
123
+ const { currentTime, duration } = data as {
124
+ currentTime: number;
125
+ duration: number;
126
+ };
127
+ console.log(
128
+ `Progress: ${((currentTime / duration) * 100).toFixed(1)}%`
129
+ );
130
+ break;
131
+ case "volumeChange":
132
+ const { volume } = data as { volume: number };
133
+ console.log(`Volume changed to: ${(volume * 100).toFixed(0)}%`);
134
+ break;
135
+ case "fullscreenChange":
136
+ const { isFullscreen } = data as { isFullscreen: boolean };
137
+ console.log(`Fullscreen: ${isFullscreen ? "ON" : "OFF"}`);
138
+ break;
139
+ case "error":
140
+ console.error("Player error:", data);
141
+ break;
142
+ }
143
+ };
144
+
145
+ return (
146
+ <VodPlayer url="https://example.com/vod.m3u8" onEvent={handlePlayerEvent} />
147
+ );
148
+ }
149
+ ```
150
+
151
+ #### Live Player with Events
152
+
153
+ ```tsx
154
+ import { LivePlayer } from "@halibegic/react-video-player";
155
+
156
+ function App() {
157
+ const handlePlayerEvent = (event: string, data: unknown) => {
158
+ switch (event) {
159
+ case "play":
160
+ console.log("Play");
161
+ break;
162
+ case "pause":
163
+ console.log("Pause");
164
+ break;
165
+ }
166
+ };
167
+
168
+ return (
169
+ <LivePlayer
170
+ url="https://example.com/live.m3u8"
171
+ startDate="2025-09-03T00:00:00Z"
172
+ endDate="2025-10-03T23:59:59Z"
173
+ onEvent={handlePlayerEvent}
174
+ />
175
+ );
176
+ }
177
+ ```
178
+
88
179
  ## Development
89
180
 
90
181
  ```bash
@@ -8,7 +8,8 @@ type LivePlayerProps = {
8
8
  eventStartingSoon: string;
9
9
  live: string;
10
10
  };
11
+ onEvent?: (event: string, data: unknown) => void;
11
12
  };
12
- declare function LivePlayer({ url, startDate, endDate, messages }: LivePlayerProps): import("react/jsx-runtime").JSX.Element;
13
+ declare function LivePlayer({ url, startDate, endDate, messages, onEvent, }: LivePlayerProps): import("react/jsx-runtime").JSX.Element;
13
14
  export { LivePlayer };
14
15
  export type { LivePlayerProps };
@@ -0,0 +1,5 @@
1
+ type PlayerEventListenerProps = {
2
+ callback: (event: string, data: unknown) => void;
3
+ };
4
+ declare function PlayerEventListener({ callback }: PlayerEventListenerProps): null;
5
+ export { PlayerEventListener };
@@ -1,10 +1,8 @@
1
1
  type VodPlayerProps = {
2
2
  url: string;
3
- watchHistory?: {
4
- enabled: boolean;
5
- storageKey: string;
6
- };
3
+ startTime?: number;
4
+ onEvent?: (event: string, data: unknown) => void;
7
5
  };
8
- declare function VodPlayer({ url, watchHistory }: VodPlayerProps): import("react/jsx-runtime").JSX.Element;
6
+ declare function VodPlayer(props: VodPlayerProps): import("react/jsx-runtime").JSX.Element;
9
7
  export { VodPlayer };
10
8
  export type { VodPlayerProps };