unified-video-framework 1.4.151 → 1.4.153

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.
Files changed (93) hide show
  1. package/package.json +1 -1
  2. package/packages/core/dist/chapter-manager.d.ts +39 -0
  3. package/packages/core/dist/chapter-manager.d.ts.map +1 -0
  4. package/packages/core/dist/chapter-manager.js +173 -0
  5. package/packages/core/dist/chapter-manager.js.map +1 -0
  6. package/packages/core/dist/index.d.ts +2 -0
  7. package/packages/core/dist/index.d.ts.map +1 -1
  8. package/packages/core/dist/index.js +1 -0
  9. package/packages/core/dist/index.js.map +1 -1
  10. package/packages/core/dist/interfaces/IVideoPlayer.d.ts +10 -0
  11. package/packages/core/dist/interfaces/IVideoPlayer.d.ts.map +1 -1
  12. package/packages/core/dist/interfaces.d.ts +33 -1
  13. package/packages/core/dist/interfaces.d.ts.map +1 -1
  14. package/packages/core/package.json +2 -2
  15. package/packages/core/src/chapter-manager.ts +290 -0
  16. package/packages/core/src/index.ts +4 -0
  17. package/packages/core/src/interfaces/IVideoPlayer.ts +11 -0
  18. package/packages/core/src/interfaces.ts +47 -1
  19. package/packages/web/dist/WebPlayer.d.ts +24 -1
  20. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  21. package/packages/web/dist/WebPlayer.js +472 -1
  22. package/packages/web/dist/WebPlayer.js.map +1 -1
  23. package/packages/web/dist/chapters/ChapterManager.d.ts +38 -0
  24. package/packages/web/dist/chapters/ChapterManager.d.ts.map +1 -0
  25. package/packages/web/dist/chapters/ChapterManager.js +291 -0
  26. package/packages/web/dist/chapters/ChapterManager.js.map +1 -0
  27. package/packages/web/dist/chapters/SkipButtonController.d.ts +31 -0
  28. package/packages/web/dist/chapters/SkipButtonController.d.ts.map +1 -0
  29. package/packages/web/dist/chapters/SkipButtonController.js +213 -0
  30. package/packages/web/dist/chapters/SkipButtonController.js.map +1 -0
  31. package/packages/web/dist/chapters/UserPreferencesManager.d.ts +25 -0
  32. package/packages/web/dist/chapters/UserPreferencesManager.d.ts.map +1 -0
  33. package/packages/web/dist/chapters/UserPreferencesManager.js +232 -0
  34. package/packages/web/dist/chapters/UserPreferencesManager.js.map +1 -0
  35. package/packages/web/dist/chapters/index.d.ts +12 -0
  36. package/packages/web/dist/chapters/index.d.ts.map +1 -0
  37. package/packages/web/dist/chapters/index.js +8 -0
  38. package/packages/web/dist/chapters/index.js.map +1 -0
  39. package/packages/web/dist/chapters/types/ChapterTypes.d.ts +98 -0
  40. package/packages/web/dist/chapters/types/ChapterTypes.d.ts.map +1 -0
  41. package/packages/web/dist/chapters/types/ChapterTypes.js +31 -0
  42. package/packages/web/dist/chapters/types/ChapterTypes.js.map +1 -0
  43. package/packages/web/dist/index.d.ts +1 -1
  44. package/packages/web/dist/index.d.ts.map +1 -1
  45. package/packages/web/dist/index.js +1 -1
  46. package/packages/web/dist/index.js.map +1 -1
  47. package/packages/web/dist/paywall/EmailAuthController.d.ts +1 -1
  48. package/packages/web/dist/paywall/EmailAuthController.d.ts.map +1 -1
  49. package/packages/web/dist/paywall/PaywallController.d.ts +1 -1
  50. package/packages/web/dist/paywall/PaywallController.d.ts.map +1 -1
  51. package/packages/web/dist/react/WebPlayerView.d.ts +2 -2
  52. package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -1
  53. package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts +2 -2
  54. package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts.map +1 -1
  55. package/packages/web/dist/react/components/ChapterProgress.d.ts +22 -0
  56. package/packages/web/dist/react/components/ChapterProgress.d.ts.map +1 -0
  57. package/packages/web/dist/react/components/ChapterProgress.js +101 -0
  58. package/packages/web/dist/react/components/ChapterProgress.js.map +1 -0
  59. package/packages/web/dist/react/components/SkipButton.d.ts +18 -0
  60. package/packages/web/dist/react/components/SkipButton.d.ts.map +1 -0
  61. package/packages/web/dist/react/components/SkipButton.js +156 -0
  62. package/packages/web/dist/react/components/SkipButton.js.map +1 -0
  63. package/packages/web/dist/react/hooks/useChapters.d.ts +29 -0
  64. package/packages/web/dist/react/hooks/useChapters.d.ts.map +1 -0
  65. package/packages/web/dist/react/hooks/useChapters.js +158 -0
  66. package/packages/web/dist/react/hooks/useChapters.js.map +1 -0
  67. package/packages/web/package.json +3 -3
  68. package/packages/web/src/SecureVideoPlayer.ts +1 -1
  69. package/packages/web/src/WebPlayer.ts +587 -3
  70. package/packages/web/src/__tests__/WebPlayer.test.ts +1 -1
  71. package/packages/web/src/__tests__/epg-integration.test.ts +1 -1
  72. package/packages/web/src/chapters/ChapterManager.ts +464 -0
  73. package/packages/web/src/chapters/SkipButtonController.ts +353 -0
  74. package/packages/web/src/chapters/UserPreferencesManager.ts +324 -0
  75. package/packages/web/src/chapters/index.ts +34 -0
  76. package/packages/web/src/chapters/types/ChapterTypes.ts +236 -0
  77. package/packages/web/src/index.ts +1 -1
  78. package/packages/web/src/paywall/EmailAuthController.ts +1 -1
  79. package/packages/web/src/paywall/PaywallController.ts +1 -1
  80. package/packages/web/src/react/EPG.ts +1 -1
  81. package/packages/web/src/react/WebPlayerView.tsx +2 -2
  82. package/packages/web/src/react/WebPlayerViewWithEPG.tsx +3 -3
  83. package/packages/web/src/react/components/ChapterProgress.tsx +207 -0
  84. package/packages/web/src/react/components/EPGNavigationControls.tsx +1 -1
  85. package/packages/web/src/react/components/EPGOverlay-improved-positioning.tsx +1 -1
  86. package/packages/web/src/react/components/EPGOverlay.tsx +1 -1
  87. package/packages/web/src/react/components/EPGProgramGrid.tsx +1 -1
  88. package/packages/web/src/react/components/EPGTimelineHeader.tsx +1 -1
  89. package/packages/web/src/react/components/SkipButton.tsx +278 -0
  90. package/packages/web/src/react/hooks/useChapters.ts +308 -0
  91. package/packages/web/src/react/types/EPGTypes.ts +1 -1
  92. package/packages/web/src/react/utils/EPGUtils.ts +1 -1
  93. package/packages/web/src/test/epg-test.ts +1 -1
@@ -0,0 +1,290 @@
1
+ import { Chapter, ChapterSegment, ChapterConfig, EventHandler } from './interfaces';
2
+
3
+ export interface ChapterManagerEvents {
4
+ chapterchange: Chapter | null;
5
+ segmententered: ChapterSegment;
6
+ segmentexited: ChapterSegment;
7
+ segmentskipped: ChapterSegment;
8
+ }
9
+
10
+ export class ChapterManager {
11
+ private config: ChapterConfig;
12
+ private chapters: Chapter[] = [];
13
+ private segments: ChapterSegment[] = [];
14
+ private currentChapter: Chapter | null = null;
15
+ private activeSegments: Set<string> = new Set();
16
+ private lastProcessedTime: number = -1;
17
+ private eventHandlers: Map<keyof ChapterManagerEvents, EventHandler[]> = new Map();
18
+
19
+ constructor(config: ChapterConfig = {}) {
20
+ this.config = { ...config };
21
+ this.chapters = config.chapters || [];
22
+ this.segments = config.segments || [];
23
+
24
+ // Initialize event handler arrays
25
+ this.eventHandlers.set('chapterchange', []);
26
+ this.eventHandlers.set('segmententered', []);
27
+ this.eventHandlers.set('segmentexited', []);
28
+ this.eventHandlers.set('segmentskipped', []);
29
+ }
30
+
31
+ /**
32
+ * Update the configuration
33
+ */
34
+ updateConfig(config: ChapterConfig): void {
35
+ this.config = { ...this.config, ...config };
36
+ this.chapters = config.chapters || this.chapters;
37
+ this.segments = config.segments || this.segments;
38
+ }
39
+
40
+ /**
41
+ * Load chapter data from a URL
42
+ */
43
+ async loadChapterData(url: string): Promise<void> {
44
+ try {
45
+ const response = await fetch(url);
46
+ if (!response.ok) {
47
+ throw new Error(`Failed to fetch chapter data: ${response.status}`);
48
+ }
49
+
50
+ const data = await response.json();
51
+ if (data.chapters) {
52
+ this.chapters = data.chapters;
53
+ }
54
+ if (data.segments) {
55
+ this.segments = data.segments;
56
+ }
57
+ } catch (error) {
58
+ console.error('Error loading chapter data:', error);
59
+ throw error;
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Initialize the chapter manager
65
+ */
66
+ async initialize(): Promise<void> {
67
+ if (this.config.dataUrl) {
68
+ await this.loadChapterData(this.config.dataUrl);
69
+ }
70
+
71
+ // Sort chapters and segments by start time
72
+ this.chapters.sort((a, b) => a.startTime - b.startTime);
73
+ this.segments.sort((a, b) => a.startTime - b.startTime);
74
+ }
75
+
76
+ /**
77
+ * Process current time and handle chapter/segment changes
78
+ */
79
+ processTimeUpdate(currentTime: number): void {
80
+ if (Math.abs(currentTime - this.lastProcessedTime) < 0.1) {
81
+ return; // Skip if time hasn't changed significantly
82
+ }
83
+
84
+ this.lastProcessedTime = currentTime;
85
+ this.processChapterChange(currentTime);
86
+ this.processSegments(currentTime);
87
+ }
88
+
89
+ /**
90
+ * Process chapter changes
91
+ */
92
+ private processChapterChange(currentTime: number): void {
93
+ const newChapter = this.getCurrentChapter(currentTime);
94
+
95
+ if (newChapter !== this.currentChapter) {
96
+ this.currentChapter = newChapter;
97
+ this.emit('chapterchange', newChapter);
98
+
99
+ if (this.config.onChapterChange) {
100
+ this.config.onChapterChange(newChapter);
101
+ }
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Process segment enter/exit events
107
+ */
108
+ private processSegments(currentTime: number): void {
109
+ const currentSegments = this.segments.filter(
110
+ segment => currentTime >= segment.startTime && currentTime <= segment.endTime
111
+ );
112
+
113
+ // Check for newly entered segments
114
+ for (const segment of currentSegments) {
115
+ if (!this.activeSegments.has(segment.id)) {
116
+ this.activeSegments.add(segment.id);
117
+ this.emit('segmententered', segment);
118
+
119
+ if (this.config.onSegmentEntered) {
120
+ this.config.onSegmentEntered(segment);
121
+ }
122
+
123
+ // Auto-skip if enabled and segment has skip action
124
+ if (this.config.autoSkip && segment.action === 'skip') {
125
+ this.skipSegment(segment);
126
+ }
127
+ }
128
+ }
129
+
130
+ // Check for exited segments
131
+ const currentSegmentIds = new Set(currentSegments.map(s => s.id));
132
+ for (const activeSegmentId of this.activeSegments) {
133
+ if (!currentSegmentIds.has(activeSegmentId)) {
134
+ const segment = this.segments.find(s => s.id === activeSegmentId);
135
+ if (segment) {
136
+ this.activeSegments.delete(activeSegmentId);
137
+ this.emit('segmentexited', segment);
138
+
139
+ if (this.config.onSegmentExited) {
140
+ this.config.onSegmentExited(segment);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Get the current chapter based on time
149
+ */
150
+ getCurrentChapter(currentTime: number): Chapter | null {
151
+ return this.chapters.find(
152
+ chapter => currentTime >= chapter.startTime && currentTime <= chapter.endTime
153
+ ) || null;
154
+ }
155
+
156
+ /**
157
+ * Get all chapters
158
+ */
159
+ getChapters(): Chapter[] {
160
+ return [...this.chapters];
161
+ }
162
+
163
+ /**
164
+ * Get all segments
165
+ */
166
+ getSegments(): ChapterSegment[] {
167
+ return [...this.segments];
168
+ }
169
+
170
+ /**
171
+ * Get segments at a specific time
172
+ */
173
+ getSegmentsAtTime(currentTime: number): ChapterSegment[] {
174
+ return this.segments.filter(
175
+ segment => currentTime >= segment.startTime && currentTime <= segment.endTime
176
+ );
177
+ }
178
+
179
+ /**
180
+ * Skip a segment
181
+ */
182
+ skipSegment(segment: ChapterSegment): void {
183
+ this.emit('segmentskipped', segment);
184
+
185
+ if (this.config.onSegmentSkipped) {
186
+ this.config.onSegmentSkipped(segment);
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Seek to a specific chapter
192
+ */
193
+ seekToChapter(chapterId: string): Chapter | null {
194
+ const chapter = this.chapters.find(c => c.id === chapterId);
195
+ if (chapter) {
196
+ // The actual seeking will be handled by the player
197
+ // This method returns the chapter to seek to
198
+ return chapter;
199
+ }
200
+ return null;
201
+ }
202
+
203
+ /**
204
+ * Get next chapter
205
+ */
206
+ getNextChapter(currentTime: number): Chapter | null {
207
+ return this.chapters.find(chapter => chapter.startTime > currentTime) || null;
208
+ }
209
+
210
+ /**
211
+ * Get previous chapter
212
+ */
213
+ getPreviousChapter(currentTime: number): Chapter | null {
214
+ const previousChapters = this.chapters
215
+ .filter(chapter => chapter.startTime < currentTime)
216
+ .sort((a, b) => b.startTime - a.startTime);
217
+
218
+ return previousChapters[0] || null;
219
+ }
220
+
221
+ /**
222
+ * Add event listener
223
+ */
224
+ on<K extends keyof ChapterManagerEvents>(event: K, handler: EventHandler): void {
225
+ const handlers = this.eventHandlers.get(event) || [];
226
+ handlers.push(handler);
227
+ this.eventHandlers.set(event, handlers);
228
+ }
229
+
230
+ /**
231
+ * Remove event listener
232
+ */
233
+ off<K extends keyof ChapterManagerEvents>(event: K, handler?: EventHandler): void {
234
+ const handlers = this.eventHandlers.get(event) || [];
235
+ if (handler) {
236
+ const index = handlers.indexOf(handler);
237
+ if (index > -1) {
238
+ handlers.splice(index, 1);
239
+ }
240
+ } else {
241
+ handlers.length = 0;
242
+ }
243
+ this.eventHandlers.set(event, handlers);
244
+ }
245
+
246
+ /**
247
+ * Emit an event
248
+ */
249
+ private emit<K extends keyof ChapterManagerEvents>(event: K, data: ChapterManagerEvents[K]): void {
250
+ const handlers = this.eventHandlers.get(event) || [];
251
+ handlers.forEach(handler => {
252
+ try {
253
+ handler(data);
254
+ } catch (error) {
255
+ console.error(`Error in chapter manager event handler for ${event}:`, error);
256
+ }
257
+ });
258
+ }
259
+
260
+ /**
261
+ * Reset the chapter manager state
262
+ */
263
+ reset(): void {
264
+ this.currentChapter = null;
265
+ this.activeSegments.clear();
266
+ this.lastProcessedTime = -1;
267
+ }
268
+
269
+ /**
270
+ * Destroy the chapter manager and clean up
271
+ */
272
+ destroy(): void {
273
+ this.reset();
274
+ this.eventHandlers.clear();
275
+ }
276
+
277
+ /**
278
+ * Get the current chapter
279
+ */
280
+ getCurrentChapterInfo(): Chapter | null {
281
+ return this.currentChapter;
282
+ }
283
+
284
+ /**
285
+ * Check if chapter functionality is enabled
286
+ */
287
+ isEnabled(): boolean {
288
+ return this.config.enabled !== false;
289
+ }
290
+ }
@@ -16,5 +16,9 @@ export type { Platform } from './VideoPlayerFactory';
16
16
  // Export utilities
17
17
  export { EventEmitter } from './utils/EventEmitter';
18
18
 
19
+ // Export chapter manager
20
+ export { ChapterManager } from './chapter-manager';
21
+ export type { ChapterManagerEvents } from './chapter-manager';
22
+
19
23
  // Export version
20
24
  export const VERSION = '1.0.0';
@@ -80,6 +80,17 @@ export interface PlayerEvents {
80
80
  epgDataSet?: (data?: any) => void;
81
81
  // Framework branding events
82
82
  frameworkBrandingClick?: (data: { timestamp: number; url: string; userAgent: string }) => void;
83
+ // Chapter events
84
+ chapterchange?: (chapter: any) => void;
85
+ segmententered?: (segment: any) => void;
86
+ segmentexited?: (segment: any) => void;
87
+ segmentskipped?: (segment: any) => void;
88
+ chapterSegmentEntered?: (data: any) => void;
89
+ chapterSegmentSkipped?: (data: any) => void;
90
+ chapterSkipButtonShown?: (data: any) => void;
91
+ chapterSkipButtonHidden?: (data: any) => void;
92
+ chaptersLoaded?: (data: any) => void;
93
+ chaptersLoadError?: (data: any) => void;
83
94
  }
84
95
 
85
96
  export interface PlayerError {
@@ -157,6 +157,41 @@ export interface OfflineConfig {
157
157
  downloadQuality?: 'auto' | 'high' | 'medium' | 'low';
158
158
  }
159
159
 
160
+ // Chapter-related interfaces
161
+ export interface Chapter {
162
+ id: string;
163
+ title: string;
164
+ startTime: number; // in seconds
165
+ endTime: number; // in seconds
166
+ thumbnail?: string;
167
+ description?: string;
168
+ metadata?: Record<string, any>;
169
+ }
170
+
171
+ export interface ChapterSegment {
172
+ id: string;
173
+ startTime: number; // in seconds
174
+ endTime: number; // in seconds
175
+ category?: string;
176
+ action?: 'skip' | 'mute' | 'warn';
177
+ title?: string;
178
+ description?: string;
179
+ }
180
+
181
+ export interface ChapterConfig {
182
+ enabled?: boolean;
183
+ chapters?: Chapter[];
184
+ segments?: ChapterSegment[]; // For sponsor segments, intros, etc.
185
+ dataUrl?: string; // URL to fetch chapter data from
186
+ autoSkip?: boolean; // Auto-skip segments with action: 'skip'
187
+ showSkipButton?: boolean; // Show skip button for segments
188
+ skipButtonText?: string;
189
+ onChapterChange?: (chapter: Chapter | null) => void;
190
+ onSegmentEntered?: (segment: ChapterSegment) => void;
191
+ onSegmentExited?: (segment: ChapterSegment) => void;
192
+ onSegmentSkipped?: (segment: ChapterSegment) => void;
193
+ }
194
+
160
195
  export interface WatermarkConfig {
161
196
  enabled?: boolean; // Enable/disable watermark (default: true)
162
197
  text?: string; // Custom watermark text (default: "PREMIUM")
@@ -251,7 +286,17 @@ export type PlayerEvent =
251
286
  | 'castStateChanged'
252
287
  | 'adstart'
253
288
  | 'adend'
254
- | 'aderror';
289
+ | 'aderror'
290
+ | 'chapterchange'
291
+ | 'segmententered'
292
+ | 'segmentexited'
293
+ | 'segmentskipped'
294
+ | 'chapterSegmentEntered'
295
+ | 'chapterSegmentSkipped'
296
+ | 'chapterSkipButtonShown'
297
+ | 'chapterSkipButtonHidden'
298
+ | 'chaptersLoaded'
299
+ | 'chaptersLoadError';
255
300
 
256
301
  export type EventHandler = (data?: any) => void;
257
302
 
@@ -446,4 +491,5 @@ export interface PlayerConfig extends VideoPlayerConfig {
446
491
  freeDuration?: number;
447
492
  paywall?: PaywallConfig;
448
493
  volume?: number;
494
+ chapters?: ChapterConfig;
449
495
  }
@@ -1,4 +1,6 @@
1
- import { BasePlayer } from '@unified-video/core';
1
+ import { BasePlayer } from 'unified-video-core';
2
+ import { Chapter, ChapterSegment } from 'unified-video-core';
3
+ import { ChapterConfig, VideoChapters, VideoSegment } from './chapters/types/ChapterTypes';
2
4
  declare global {
3
5
  interface Window {
4
6
  Hls: any;
@@ -52,6 +54,9 @@ export declare class WebPlayer extends BasePlayer {
52
54
  private hasTriedButtonFallback;
53
55
  private lastUserInteraction;
54
56
  private showTimeTooltip;
57
+ private chapterManager;
58
+ private coreChapterManager;
59
+ private chapterConfig;
55
60
  private debugLog;
56
61
  private debugError;
57
62
  private debugWarn;
@@ -139,6 +144,24 @@ export declare class WebPlayer extends BasePlayer {
139
144
  intensity?: number;
140
145
  }): void;
141
146
  private applyScrollbarPreferencesFromDataset;
147
+ private setupChapterManager;
148
+ private convertToChapters;
149
+ private convertToChapterSegments;
150
+ private mapSegmentAction;
151
+ loadChapters(chapters: VideoChapters): Promise<void>;
152
+ loadChaptersFromUrl(url: string): Promise<void>;
153
+ getCurrentSegment(): VideoSegment | null;
154
+ skipToSegment(segmentId: string): void;
155
+ getSegments(): VideoSegment[];
156
+ updateChapterConfig(newConfig: Partial<ChapterConfig>): void;
157
+ hasChapters(): boolean;
158
+ getChapters(): VideoChapters | null;
159
+ getCoreChapters(): Chapter[];
160
+ getCoreSegments(): ChapterSegment[];
161
+ getCurrentChapterInfo(): Chapter | null;
162
+ seekToChapter(chapterId: string): void;
163
+ getNextChapter(): Chapter | null;
164
+ getPreviousChapter(): Chapter | null;
142
165
  setTheme(theme: any): void;
143
166
  private _parseRgb;
144
167
  private _rgbToString;
@@ -1 +1 @@
1
- {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebPlayer.d.ts","sourceRoot":"","sources":["../src/WebPlayer.ts"],"names":[],"mappings":"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"}