unified-video-framework 1.4.73 → 1.4.75

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.4.73",
3
+ "version": "1.4.75",
4
4
  "description": "Cross-platform video player framework supporting iOS, Android, Web, Smart TVs (Samsung/LG), Roku, and more",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -1,98 +0,0 @@
1
- import React from 'react';
2
- import type { CSSProperties } from 'react';
3
- import type { SubtitleTrack, VideoMetadata } from '@unified-video/core';
4
- import { WebPlayer } from '../WebPlayer';
5
- import type { EPGData, EPGConfig, EPGProgram, EPGProgramRow } from './types/EPGTypes';
6
- export type WebPlayerViewDebugProps = {
7
- autoPlay?: boolean;
8
- muted?: boolean;
9
- enableAdaptiveBitrate?: boolean;
10
- debug?: boolean;
11
- freeDuration?: number;
12
- paywall?: import('@unified-video/core').PaywallConfig;
13
- paywallConfigUrl?: string;
14
- emailAuth?: {
15
- enabled?: boolean;
16
- skipIfAuthenticated?: boolean;
17
- apiEndpoints?: {
18
- requestOtp?: string;
19
- verifyOtp?: string;
20
- refreshToken?: string;
21
- logout?: string;
22
- };
23
- sessionStorage?: {
24
- tokenKey?: string;
25
- refreshTokenKey?: string;
26
- userIdKey?: string;
27
- };
28
- ui?: {
29
- title?: string;
30
- description?: string;
31
- emailPlaceholder?: string;
32
- otpPlaceholder?: string;
33
- submitButtonText?: string;
34
- resendButtonText?: string;
35
- resendCooldown?: number;
36
- };
37
- validation?: {
38
- otpLength?: number;
39
- otpTimeout?: number;
40
- rateLimiting?: {
41
- maxAttempts?: number;
42
- windowMinutes?: number;
43
- };
44
- };
45
- };
46
- url: string;
47
- type?: 'mp4' | 'hls' | 'dash' | 'webm' | 'auto';
48
- subtitles?: SubtitleTrack[];
49
- metadata?: VideoMetadata;
50
- cast?: boolean;
51
- className?: string;
52
- style?: CSSProperties;
53
- playerTheme?: string | {
54
- accent?: string;
55
- accent2?: string;
56
- iconColor?: string;
57
- textPrimary?: string;
58
- textSecondary?: string;
59
- };
60
- responsive?: {
61
- enabled?: boolean;
62
- aspectRatio?: number;
63
- maxWidth?: string;
64
- maxHeight?: string;
65
- breakpoints?: {
66
- mobile?: number;
67
- tablet?: number;
68
- };
69
- mobilePortrait?: {
70
- maxHeight?: string;
71
- aspectRatio?: number;
72
- };
73
- mobileLandscape?: {
74
- maxHeight?: string;
75
- aspectRatio?: number;
76
- };
77
- tablet?: {
78
- maxWidth?: string;
79
- maxHeight?: string;
80
- };
81
- };
82
- onReady?: (player: WebPlayer) => void;
83
- onError?: (error: unknown) => void;
84
- epg?: EPGData;
85
- epgConfig?: Partial<EPGConfig>;
86
- showEPG?: boolean;
87
- onToggleEPG?: (visible: boolean) => void;
88
- onEPGFavorite?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
89
- onEPGRecord?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
90
- onEPGSetReminder?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
91
- onEPGCatchup?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
92
- onEPGProgramSelect?: (program: EPGProgram, channel: EPGProgramRow) => void;
93
- onEPGChannelSelect?: (channel: EPGProgramRow) => void;
94
- enableEPGDebugger?: boolean;
95
- };
96
- export declare const WebPlayerViewDebug: React.FC<WebPlayerViewDebugProps>;
97
- export default WebPlayerViewDebug;
98
- //# sourceMappingURL=WebPlayerView-debug.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebPlayerView-debug.d.ts","sourceRoot":"","sources":["../../src/react/WebPlayerView-debug.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAe,aAAa,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAsBtF,MAAM,MAAM,uBAAuB,GAAG;IAEpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,qBAAqB,EAAE,aAAa,CAAC;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,YAAY,CAAC,EAAE;YACb,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,CAAC,EAAE;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,EAAE,CAAC,EAAE;YACH,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;QACF,UAAU,CAAC,EAAE;YACX,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,YAAY,CAAC,EAAE;gBACb,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,aAAa,CAAC,EAAE,MAAM,CAAC;aACxB,CAAC;SACH,CAAC;KACH,CAAC;IAGF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IAGzB,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAG/H,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE;YACZ,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,CAAC,EAAE;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;QACF,eAAe,CAAC,EAAE;YAChB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;QACF,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IAGF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAGnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAGzC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3E,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAGtD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAijBhE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,482 +0,0 @@
1
- import React, { useEffect, useRef, useState, useCallback } from 'react';
2
- import { WebPlayer } from "../WebPlayer.js";
3
- import EPGDebugger from "./debug/EPGDebugger.js";
4
- import { validateEPGData, logEPGDebugInfo } from "./debug/sampleEPGData.js";
5
- let EPGOverlay = null;
6
- const loadEPGComponents = async () => {
7
- if (!EPGOverlay) {
8
- try {
9
- console.log('🔄 Loading EPG components...');
10
- const epgModule = await import('./components/EPGOverlay');
11
- EPGOverlay = epgModule.default;
12
- console.log('✅ EPG components loaded successfully', EPGOverlay);
13
- }
14
- catch (error) {
15
- console.error('❌ Failed to load EPG components:', error);
16
- }
17
- }
18
- return EPGOverlay;
19
- };
20
- export const WebPlayerViewDebug = (props) => {
21
- const containerRef = useRef(null);
22
- const playerRef = useRef(null);
23
- const [dimensions, setDimensions] = useState({
24
- width: typeof window !== 'undefined' ? window.innerWidth : 1920,
25
- height: typeof window !== 'undefined' ? window.innerHeight : 1080,
26
- });
27
- const [epgVisible, setEPGVisible] = useState(props.showEPG || false);
28
- const [playerReady, setPlayerReady] = useState(false);
29
- const [epgComponentLoaded, setEPGComponentLoaded] = useState(false);
30
- const [epgLoadError, setEPGLoadError] = useState(null);
31
- useEffect(() => {
32
- if (props.enableEPGDebugger) {
33
- console.group('🔍 EPG Debug Information');
34
- console.log('Props.epg:', props.epg);
35
- console.log('PlayerReady:', playerReady);
36
- console.log('EPG Component Loaded:', epgComponentLoaded);
37
- console.log('EPG Visible:', epgVisible);
38
- console.log('Show EPG Prop:', props.showEPG);
39
- if (props.epg) {
40
- const validation = validateEPGData(props.epg);
41
- console.log('EPG Data Validation:', validation);
42
- logEPGDebugInfo(props.epg, 'Props EPG Data');
43
- }
44
- console.groupEnd();
45
- }
46
- }, [props.epg, playerReady, epgComponentLoaded, epgVisible, props.showEPG, props.enableEPGDebugger]);
47
- useEffect(() => {
48
- if (typeof window === 'undefined')
49
- return;
50
- const responsiveEnabled = props.responsive?.enabled !== false;
51
- if (!responsiveEnabled)
52
- return;
53
- const handleResize = () => {
54
- setDimensions({
55
- width: window.innerWidth,
56
- height: window.innerHeight,
57
- });
58
- };
59
- window.addEventListener('resize', handleResize);
60
- handleResize();
61
- return () => window.removeEventListener('resize', handleResize);
62
- }, [props.responsive?.enabled]);
63
- const handleToggleEPG = useCallback((visible) => {
64
- console.log('🔄 Toggling EPG visibility:', visible);
65
- setEPGVisible(visible);
66
- if (props.onToggleEPG) {
67
- props.onToggleEPG(visible);
68
- }
69
- }, [props.onToggleEPG]);
70
- useEffect(() => {
71
- if (props.epg && !epgComponentLoaded && !epgLoadError) {
72
- console.log('🔄 Attempting to load EPG components...');
73
- setEPGLoadError(null);
74
- loadEPGComponents().then((component) => {
75
- if (component) {
76
- console.log('✅ EPG components loaded successfully');
77
- setEPGComponentLoaded(true);
78
- }
79
- else {
80
- console.error('❌ EPG components failed to load');
81
- setEPGLoadError('Failed to load EPG components');
82
- }
83
- }).catch((error) => {
84
- console.error('❌ Error loading EPG components:', error);
85
- setEPGLoadError(error.message || 'Unknown error loading EPG components');
86
- });
87
- }
88
- }, [props.epg, epgComponentLoaded, epgLoadError]);
89
- useEffect(() => {
90
- if (props.showEPG !== undefined) {
91
- setEPGVisible(props.showEPG);
92
- }
93
- }, [props.showEPG]);
94
- useEffect(() => {
95
- if (!props.epg)
96
- return;
97
- const handleKeyPress = (e) => {
98
- if (e.key === 'g' && e.ctrlKey) {
99
- e.preventDefault();
100
- handleToggleEPG(!epgVisible);
101
- }
102
- };
103
- document.addEventListener('keydown', handleKeyPress);
104
- return () => document.removeEventListener('keydown', handleKeyPress);
105
- }, [props.epg, epgVisible, handleToggleEPG]);
106
- const getResponsiveDimensions = () => {
107
- const responsiveEnabled = props.responsive?.enabled !== false;
108
- if (!responsiveEnabled)
109
- return props.style || {};
110
- const { width, height } = dimensions;
111
- const responsive = props.responsive || {};
112
- const defaults = {
113
- aspectRatio: responsive.aspectRatio || 16 / 9,
114
- maxWidth: responsive.maxWidth || '100vw',
115
- maxHeight: responsive.maxHeight || '100vh',
116
- breakpoints: {
117
- mobile: responsive.breakpoints?.mobile || 768,
118
- tablet: responsive.breakpoints?.tablet || 1024,
119
- },
120
- mobilePortrait: {
121
- maxHeight: responsive.mobilePortrait?.maxHeight || '100vh',
122
- aspectRatio: responsive.mobilePortrait?.aspectRatio,
123
- },
124
- mobileLandscape: {
125
- maxHeight: responsive.mobileLandscape?.maxHeight || '100vh',
126
- aspectRatio: responsive.mobileLandscape?.aspectRatio,
127
- },
128
- tablet: {
129
- maxWidth: responsive.tablet?.maxWidth || '100vw',
130
- maxHeight: responsive.tablet?.maxHeight || '100vh',
131
- },
132
- };
133
- const isMobile = width < defaults.breakpoints.mobile;
134
- const isTablet = width >= defaults.breakpoints.mobile && width < defaults.breakpoints.tablet;
135
- const isPortrait = height > width;
136
- const isLandscape = width > height;
137
- const playerHeight = props.epg && epgVisible ? '35vh' : '100vh';
138
- const playerMaxHeight = props.epg && epgVisible ? '35vh' : '100vh';
139
- const playerZIndex = props.epg && epgVisible ? 50 : 1000;
140
- let calculatedStyle = {
141
- width: '100vw',
142
- height: playerHeight,
143
- maxWidth: '100vw',
144
- maxHeight: playerMaxHeight,
145
- boxSizing: 'border-box',
146
- position: 'fixed',
147
- top: 0,
148
- left: 0,
149
- zIndex: playerZIndex,
150
- backgroundColor: '#000000',
151
- display: 'flex',
152
- alignItems: 'center',
153
- justifyContent: 'center',
154
- margin: 0,
155
- padding: 0,
156
- transition: 'height 0.3s ease, max-height 0.3s ease',
157
- ...props.style,
158
- };
159
- if (isMobile && isPortrait) {
160
- calculatedStyle = {
161
- ...calculatedStyle,
162
- width: '100vw',
163
- height: playerHeight,
164
- maxWidth: '100vw',
165
- maxHeight: playerMaxHeight,
166
- position: 'fixed',
167
- top: 0,
168
- left: 0,
169
- };
170
- }
171
- else if (isMobile && isLandscape) {
172
- calculatedStyle = {
173
- ...calculatedStyle,
174
- width: '100vw',
175
- height: playerHeight,
176
- maxWidth: '100vw',
177
- maxHeight: playerMaxHeight,
178
- position: 'fixed',
179
- top: 0,
180
- left: 0,
181
- };
182
- }
183
- else if (isTablet) {
184
- calculatedStyle = {
185
- ...calculatedStyle,
186
- width: '100vw',
187
- height: playerHeight,
188
- maxWidth: '100vw',
189
- maxHeight: playerMaxHeight,
190
- position: 'fixed',
191
- top: 0,
192
- left: 0,
193
- };
194
- }
195
- else {
196
- calculatedStyle = {
197
- ...calculatedStyle,
198
- width: '100vw',
199
- height: playerHeight,
200
- maxWidth: '100vw',
201
- maxHeight: playerMaxHeight,
202
- position: 'fixed',
203
- top: 0,
204
- left: 0,
205
- };
206
- }
207
- return calculatedStyle;
208
- };
209
- useEffect(() => {
210
- try {
211
- const params = new URLSearchParams(window.location.search);
212
- const popup = (params.get('popup') || '').toLowerCase() === '1';
213
- const status = (params.get('rental') || '').toLowerCase();
214
- const orderId = params.get('order_id') || '';
215
- const sessionId = params.get('session_id') || '';
216
- if (popup && (status === 'success' || status === 'cancel')) {
217
- try {
218
- window.opener?.postMessage({ type: 'uvfCheckout', status, orderId, sessionId }, '*');
219
- }
220
- catch (_) { }
221
- try {
222
- window.close();
223
- }
224
- catch (_) { }
225
- }
226
- }
227
- catch (_) { }
228
- }, []);
229
- useEffect(() => {
230
- let cancelled = false;
231
- async function boot() {
232
- if (!containerRef.current)
233
- return;
234
- const player = new WebPlayer();
235
- playerRef.current = player;
236
- if (props.cast) {
237
- try {
238
- const existing = document.querySelector('script[data-cast-sdk="1"]');
239
- if (!existing) {
240
- const s = document.createElement('script');
241
- s.src = 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1';
242
- s.async = true;
243
- s.setAttribute('data-cast-sdk', '1');
244
- document.head.appendChild(s);
245
- }
246
- }
247
- catch (_) {
248
- }
249
- }
250
- let paywallCfg = props.paywall;
251
- if (!paywallCfg && props.paywallConfigUrl) {
252
- try {
253
- const resp = await fetch(props.paywallConfigUrl);
254
- if (resp.ok)
255
- paywallCfg = await resp.json();
256
- }
257
- catch (_) { }
258
- }
259
- if (props.emailAuth?.enabled) {
260
- if (!paywallCfg) {
261
- paywallCfg = {
262
- enabled: true,
263
- apiBase: 'http://localhost:3000',
264
- userId: 'user-' + Math.random().toString(36).substr(2, 9),
265
- videoId: 'video-' + Math.random().toString(36).substr(2, 9),
266
- gateways: ['stripe'],
267
- };
268
- }
269
- paywallCfg = {
270
- ...paywallCfg,
271
- emailAuth: {
272
- enabled: props.emailAuth.enabled,
273
- skipIfAuthenticated: props.emailAuth.skipIfAuthenticated ?? true,
274
- sessionStorage: {
275
- tokenKey: props.emailAuth.sessionStorage?.tokenKey || 'uvf_session_token',
276
- refreshTokenKey: props.emailAuth.sessionStorage?.refreshTokenKey || 'uvf_refresh_token',
277
- userIdKey: props.emailAuth.sessionStorage?.userIdKey || 'uvf_user_id',
278
- },
279
- api: {
280
- requestOtp: props.emailAuth.apiEndpoints?.requestOtp || '/auth/request-otp',
281
- verifyOtp: props.emailAuth.apiEndpoints?.verifyOtp || '/auth/verify-otp',
282
- refreshToken: props.emailAuth.apiEndpoints?.refreshToken || '/auth/refresh-token',
283
- logout: props.emailAuth.apiEndpoints?.logout || '/auth/logout',
284
- },
285
- ui: {
286
- title: props.emailAuth.ui?.title || 'Sign in to continue',
287
- description: props.emailAuth.ui?.description || 'Enter your email to receive a verification code',
288
- emailPlaceholder: props.emailAuth.ui?.emailPlaceholder || 'Enter your email',
289
- otpPlaceholder: props.emailAuth.ui?.otpPlaceholder || 'Enter 6-digit code',
290
- submitButtonText: props.emailAuth.ui?.submitButtonText || 'Send Code',
291
- resendButtonText: props.emailAuth.ui?.resendButtonText || 'Resend Code',
292
- resendCooldown: props.emailAuth.ui?.resendCooldown || 30,
293
- },
294
- validation: {
295
- otpLength: props.emailAuth.validation?.otpLength || 6,
296
- otpTimeout: props.emailAuth.validation?.otpTimeout || 300,
297
- rateLimiting: {
298
- maxAttempts: props.emailAuth.validation?.rateLimiting?.maxAttempts || 5,
299
- windowMinutes: props.emailAuth.validation?.rateLimiting?.windowMinutes || 60,
300
- },
301
- },
302
- },
303
- };
304
- }
305
- const config = {
306
- autoPlay: props.autoPlay ?? false,
307
- muted: props.muted ?? false,
308
- enableAdaptiveBitrate: props.enableAdaptiveBitrate ?? true,
309
- debug: props.debug ?? false,
310
- freeDuration: props.freeDuration,
311
- paywall: paywallCfg
312
- };
313
- try {
314
- await player.initialize(containerRef.current, config);
315
- try {
316
- if (props.playerTheme && player.setTheme) {
317
- player.setTheme(props.playerTheme);
318
- }
319
- }
320
- catch (_) { }
321
- const source = {
322
- url: props.url,
323
- type: props.type ?? 'auto',
324
- subtitles: props.subtitles,
325
- metadata: props.metadata,
326
- };
327
- await player.load(source);
328
- if (!cancelled) {
329
- console.log('✅ Player ready');
330
- setPlayerReady(true);
331
- if (props.epg && typeof player.setEPGData === 'function') {
332
- console.log('🔄 Setting EPG data on player...');
333
- player.setEPGData(props.epg);
334
- console.log('✅ EPG data set on player');
335
- }
336
- if (typeof player.on === 'function') {
337
- player.on('epgToggle', () => {
338
- console.log('🔄 EPG toggle event from player');
339
- handleToggleEPG(!epgVisible);
340
- });
341
- }
342
- props.onReady?.(player);
343
- }
344
- }
345
- catch (err) {
346
- console.error('❌ Player initialization failed:', err);
347
- if (!cancelled)
348
- props.onError?.(err);
349
- }
350
- }
351
- void boot();
352
- return () => {
353
- cancelled = true;
354
- if (playerRef.current) {
355
- playerRef.current.destroy().catch(() => { });
356
- playerRef.current = null;
357
- }
358
- };
359
- }, [
360
- props.autoPlay,
361
- props.muted,
362
- props.enableAdaptiveBitrate,
363
- props.debug,
364
- props.url,
365
- props.type,
366
- JSON.stringify(props.subtitles),
367
- JSON.stringify(props.metadata),
368
- props.cast,
369
- props.freeDuration,
370
- JSON.stringify(props.responsive),
371
- JSON.stringify(props.paywall),
372
- JSON.stringify(props.emailAuth),
373
- props.paywallConfigUrl,
374
- ]);
375
- useEffect(() => {
376
- const p = playerRef.current;
377
- if (p && typeof p.setFreeDuration === 'function' && typeof props.freeDuration !== 'undefined') {
378
- try {
379
- p.setFreeDuration(props.freeDuration);
380
- }
381
- catch (_) { }
382
- }
383
- }, [props.freeDuration]);
384
- useEffect(() => {
385
- const p = playerRef.current;
386
- if (p && typeof p.setPaywallConfig === 'function' && props.paywall) {
387
- const paywall = props.paywall;
388
- if (paywall.enabled && (paywall.apiBase || paywall.userId || paywall.videoId)) {
389
- try {
390
- console.log('[WebPlayerViewDebug] Updating paywall config:', paywall);
391
- p.setPaywallConfig(paywall);
392
- }
393
- catch (err) {
394
- console.warn('[WebPlayerViewDebug] Failed to update paywall config:', err);
395
- }
396
- }
397
- }
398
- }, [JSON.stringify(props.paywall)]);
399
- useEffect(() => {
400
- const p = playerRef.current;
401
- try {
402
- if (p && typeof p.setTheme === 'function') {
403
- p.setTheme(props.playerTheme);
404
- }
405
- }
406
- catch (_) { }
407
- }, [JSON.stringify(props.playerTheme)]);
408
- const responsiveStyle = getResponsiveDimensions();
409
- const epgConfigWithHandlers = {
410
- ...props.epgConfig,
411
- onFavorite: props.onEPGFavorite,
412
- onRecord: props.onEPGRecord,
413
- onSetReminder: props.onEPGSetReminder,
414
- onCatchup: props.onEPGCatchup,
415
- onProgramSelect: props.onEPGProgramSelect,
416
- onChannelSelect: props.onEPGChannelSelect,
417
- };
418
- return (React.createElement("div", { className: `uvf-player-container ${props.epg ? 'with-epg' : ''} ${props.className || ''}`, style: {
419
- position: 'fixed',
420
- top: 0,
421
- left: 0,
422
- right: 0,
423
- bottom: 0,
424
- backgroundColor: '#000',
425
- zIndex: 40,
426
- } },
427
- props.enableEPGDebugger && (React.createElement(EPGDebugger, { epgData: props.epg, playerReady: playerReady, epgComponentLoaded: epgComponentLoaded, epgVisible: epgVisible, showEPG: props.showEPG })),
428
- React.createElement("div", { ref: containerRef, className: `uvf-responsive-container ${props.className || ''}`, style: responsiveStyle }),
429
- epgLoadError && (React.createElement("div", { style: {
430
- position: 'fixed',
431
- top: '20px',
432
- left: '50%',
433
- transform: 'translateX(-50%)',
434
- backgroundColor: '#e74c3c',
435
- color: '#fff',
436
- padding: '12px 20px',
437
- borderRadius: '8px',
438
- fontSize: '14px',
439
- fontWeight: '600',
440
- zIndex: 300,
441
- maxWidth: '400px',
442
- textAlign: 'center',
443
- boxShadow: '0 4px 12px rgba(231, 76, 60, 0.3)',
444
- } },
445
- "EPG Load Error: ",
446
- epgLoadError,
447
- React.createElement("button", { onClick: () => setEPGLoadError(null), style: {
448
- marginLeft: '12px',
449
- backgroundColor: 'transparent',
450
- border: 'none',
451
- color: '#fff',
452
- cursor: 'pointer',
453
- fontSize: '16px',
454
- padding: '0',
455
- } }, "\u00D7"))),
456
- props.epg && EPGOverlay && epgComponentLoaded && (React.createElement(EPGOverlay, { data: props.epg, config: epgConfigWithHandlers, visible: epgVisible, onToggle: handleToggleEPG })),
457
- props.epg && playerReady && !epgVisible && (React.createElement("div", { style: {
458
- position: 'fixed',
459
- bottom: '20px',
460
- left: '50%',
461
- transform: 'translateX(-50%)',
462
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
463
- color: '#fff',
464
- padding: '12px 20px',
465
- borderRadius: '8px',
466
- fontSize: '14px',
467
- zIndex: 100,
468
- animation: 'fadeInOut 4s ease-in-out',
469
- pointerEvents: 'none',
470
- } },
471
- "Press ",
472
- React.createElement("strong", null, "Ctrl+G"),
473
- " or click the \uD83D\uDCFA button to show the Electronic Program Guide")),
474
- React.createElement("style", null, `
475
- @keyframes fadeInOut {
476
- 0%, 100% { opacity: 0; }
477
- 10%, 90% { opacity: 1; }
478
- }
479
- `)));
480
- };
481
- export default WebPlayerViewDebug;
482
- //# sourceMappingURL=WebPlayerView-debug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebPlayerView-debug.js","sourceRoot":"","sources":["../../src/react/WebPlayerView-debug.tsx"],"names":[],"mappings":"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"}