unified-video-framework 1.4.444 → 1.4.445

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 (119) hide show
  1. package/package.json +1 -1
  2. package/packages/core/dist/version.d.ts +1 -1
  3. package/packages/core/dist/version.js +1 -1
  4. package/packages/core/src/version.ts +1 -1
  5. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  6. package/packages/web/dist/WebPlayer.js +52 -19
  7. package/packages/web/dist/WebPlayer.js.map +1 -1
  8. package/packages/web/src/WebPlayer.ts +62 -19
  9. package/packages/web/dist/WebPlayer.d.ts +0 -350
  10. package/packages/web/dist/ads/GoogleAdsManager.d.ts +0 -57
  11. package/packages/web/dist/ads/LiveStreamAdsManager.d.ts +0 -29
  12. package/packages/web/dist/ads/LiveStreamAdsManager.d.ts.map +0 -1
  13. package/packages/web/dist/ads/LiveStreamAdsManager.js +0 -168
  14. package/packages/web/dist/ads/LiveStreamAdsManager.js.map +0 -1
  15. package/packages/web/dist/chapters/ChapterManager.d.ts +0 -42
  16. package/packages/web/dist/chapters/CreditsButtonController.d.ts +0 -46
  17. package/packages/web/dist/chapters/SkipButtonController.d.ts +0 -31
  18. package/packages/web/dist/chapters/UserPreferencesManager.d.ts +0 -25
  19. package/packages/web/dist/chapters/index.d.ts +0 -12
  20. package/packages/web/dist/chapters/types/ChapterTypes.d.ts +0 -136
  21. package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts +0 -13
  22. package/packages/web/dist/drm/BunnyCDNDRMProvider.d.ts.map +0 -1
  23. package/packages/web/dist/drm/BunnyCDNDRMProvider.js +0 -65
  24. package/packages/web/dist/drm/BunnyCDNDRMProvider.js.map +0 -1
  25. package/packages/web/dist/drm/DRMManager.d.ts +0 -20
  26. package/packages/web/dist/drm/DRMManager.d.ts.map +0 -1
  27. package/packages/web/dist/drm/DRMManager.js +0 -130
  28. package/packages/web/dist/drm/DRMManager.js.map +0 -1
  29. package/packages/web/dist/drm/FairPlayDRMHandler.d.ts +0 -24
  30. package/packages/web/dist/drm/FairPlayDRMHandler.d.ts.map +0 -1
  31. package/packages/web/dist/drm/FairPlayDRMHandler.js +0 -190
  32. package/packages/web/dist/drm/FairPlayDRMHandler.js.map +0 -1
  33. package/packages/web/dist/drm/WidevineDRMHandler.d.ts +0 -21
  34. package/packages/web/dist/drm/WidevineDRMHandler.d.ts.map +0 -1
  35. package/packages/web/dist/drm/WidevineDRMHandler.js +0 -143
  36. package/packages/web/dist/drm/WidevineDRMHandler.js.map +0 -1
  37. package/packages/web/dist/drm/index.d.ts +0 -15
  38. package/packages/web/dist/drm/index.d.ts.map +0 -1
  39. package/packages/web/dist/drm/index.js +0 -13
  40. package/packages/web/dist/drm/index.js.map +0 -1
  41. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts +0 -19
  42. package/packages/web/dist/drm/providers/BunnyNetProvider.d.ts.map +0 -1
  43. package/packages/web/dist/drm/providers/BunnyNetProvider.js +0 -112
  44. package/packages/web/dist/drm/providers/BunnyNetProvider.js.map +0 -1
  45. package/packages/web/dist/drm/providers/GenericProvider.d.ts +0 -30
  46. package/packages/web/dist/drm/providers/GenericProvider.d.ts.map +0 -1
  47. package/packages/web/dist/drm/providers/GenericProvider.js +0 -104
  48. package/packages/web/dist/drm/providers/GenericProvider.js.map +0 -1
  49. package/packages/web/dist/drm/systems/BaseDRM.d.ts +0 -18
  50. package/packages/web/dist/drm/systems/BaseDRM.d.ts.map +0 -1
  51. package/packages/web/dist/drm/systems/BaseDRM.js +0 -29
  52. package/packages/web/dist/drm/systems/BaseDRM.js.map +0 -1
  53. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts +0 -32
  54. package/packages/web/dist/drm/systems/FairPlayDRM.d.ts.map +0 -1
  55. package/packages/web/dist/drm/systems/FairPlayDRM.js +0 -208
  56. package/packages/web/dist/drm/systems/FairPlayDRM.js.map +0 -1
  57. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts +0 -9
  58. package/packages/web/dist/drm/systems/PlayReadyDRM.d.ts.map +0 -1
  59. package/packages/web/dist/drm/systems/PlayReadyDRM.js +0 -114
  60. package/packages/web/dist/drm/systems/PlayReadyDRM.js.map +0 -1
  61. package/packages/web/dist/drm/systems/WidevineDRM.d.ts +0 -9
  62. package/packages/web/dist/drm/systems/WidevineDRM.d.ts.map +0 -1
  63. package/packages/web/dist/drm/systems/WidevineDRM.js +0 -159
  64. package/packages/web/dist/drm/systems/WidevineDRM.js.map +0 -1
  65. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts +0 -20
  66. package/packages/web/dist/drm/types/BunnyNetTypes.d.ts.map +0 -1
  67. package/packages/web/dist/drm/types/BunnyNetTypes.js +0 -8
  68. package/packages/web/dist/drm/types/BunnyNetTypes.js.map +0 -1
  69. package/packages/web/dist/drm/types/DRMTypes.d.ts +0 -60
  70. package/packages/web/dist/drm/types/DRMTypes.d.ts.map +0 -1
  71. package/packages/web/dist/drm/types/DRMTypes.js +0 -22
  72. package/packages/web/dist/drm/types/DRMTypes.js.map +0 -1
  73. package/packages/web/dist/drm/utils/BrowserDetector.d.ts +0 -20
  74. package/packages/web/dist/drm/utils/BrowserDetector.d.ts.map +0 -1
  75. package/packages/web/dist/drm/utils/BrowserDetector.js +0 -211
  76. package/packages/web/dist/drm/utils/BrowserDetector.js.map +0 -1
  77. package/packages/web/dist/drm/utils/CertificateManager.d.ts +0 -15
  78. package/packages/web/dist/drm/utils/CertificateManager.d.ts.map +0 -1
  79. package/packages/web/dist/drm/utils/CertificateManager.js +0 -46
  80. package/packages/web/dist/drm/utils/CertificateManager.js.map +0 -1
  81. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts +0 -7
  82. package/packages/web/dist/drm/utils/DRMErrorHandler.d.ts.map +0 -1
  83. package/packages/web/dist/drm/utils/DRMErrorHandler.js +0 -49
  84. package/packages/web/dist/drm/utils/DRMErrorHandler.js.map +0 -1
  85. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts +0 -15
  86. package/packages/web/dist/drm/utils/LicenseRequestHandler.d.ts.map +0 -1
  87. package/packages/web/dist/drm/utils/LicenseRequestHandler.js +0 -110
  88. package/packages/web/dist/drm/utils/LicenseRequestHandler.js.map +0 -1
  89. package/packages/web/dist/drm.d.ts +0 -4
  90. package/packages/web/dist/drm.js +0 -5
  91. package/packages/web/dist/index.d.ts +0 -7
  92. package/packages/web/dist/paywall/EmailAuthController.d.ts +0 -60
  93. package/packages/web/dist/paywall/PaywallController.d.ts +0 -74
  94. package/packages/web/dist/react/EPG.d.ts +0 -8
  95. package/packages/web/dist/react/WebPlayerView.d.ts +0 -397
  96. package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts +0 -97
  97. package/packages/web/dist/react/components/ChapterProgress.d.ts +0 -22
  98. package/packages/web/dist/react/components/EPGNavigationControls.d.ts +0 -15
  99. package/packages/web/dist/react/components/EPGOverlay-improved-positioning.d.ts +0 -5
  100. package/packages/web/dist/react/components/EPGOverlay.d.ts +0 -5
  101. package/packages/web/dist/react/components/EPGProgramDetails.d.ts +0 -13
  102. package/packages/web/dist/react/components/EPGProgramGrid.d.ts +0 -19
  103. package/packages/web/dist/react/components/EPGTimelineHeader.d.ts +0 -16
  104. package/packages/web/dist/react/components/SkipButton.d.ts +0 -18
  105. package/packages/web/dist/react/components/commerce/ProductBadge.d.ts +0 -10
  106. package/packages/web/dist/react/components/commerce/ProductPanel.d.ts +0 -13
  107. package/packages/web/dist/react/examples/google-ads-example.d.ts +0 -4
  108. package/packages/web/dist/react/examples/live-stream-ads-example.d.ts +0 -8
  109. package/packages/web/dist/react/examples/live-stream-ads-example.d.ts.map +0 -1
  110. package/packages/web/dist/react/examples/live-stream-ads-example.js +0 -177
  111. package/packages/web/dist/react/examples/live-stream-ads-example.js.map +0 -1
  112. package/packages/web/dist/react/hooks/useChapters.d.ts +0 -29
  113. package/packages/web/dist/react/hooks/useCommerceSync.d.ts +0 -8
  114. package/packages/web/dist/react/types/EPGTypes.d.ts +0 -101
  115. package/packages/web/dist/react/types/FlashNewsTickerTypes.d.ts +0 -146
  116. package/packages/web/dist/react/types/VideoCommerceTypes.d.ts +0 -109
  117. package/packages/web/dist/react/utils/EPGUtils.d.ts +0 -21
  118. package/packages/web/dist/test/epg-test.d.ts +0 -3
  119. package/packages/web/dist/utils/YouTubeExtractor.d.ts +0 -38
@@ -1,177 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { WebPlayerView } from "../WebPlayerView.js";
3
- export const LiveStreamAdsExample = () => {
4
- const [adEvents, setAdEvents] = useState([]);
5
- const [mode, setMode] = useState('periodic');
6
- const logAdEvent = (event) => {
7
- console.log(`[Ad Event] ${event}`);
8
- setAdEvents(prev => [...prev, `${new Date().toLocaleTimeString()}: ${event}`].slice(-10));
9
- };
10
- return (React.createElement("div", { style: { height: '100vh', display: 'flex', flexDirection: 'column' } },
11
- React.createElement("div", { style: { padding: '20px', backgroundColor: '#f5f5f5', borderBottom: '1px solid #ddd' } },
12
- React.createElement("h2", { style: { margin: '0 0 15px 0' } }, "Live Stream Ads - Example"),
13
- React.createElement("div", { style: { display: 'flex', gap: '10px', marginBottom: '10px' } },
14
- React.createElement("button", { onClick: () => setMode('metadata'), style: {
15
- padding: '10px 20px',
16
- backgroundColor: mode === 'metadata' ? '#007bff' : '#6c757d',
17
- color: 'white',
18
- border: 'none',
19
- borderRadius: '4px',
20
- cursor: 'pointer'
21
- } }, "Metadata Mode"),
22
- React.createElement("button", { onClick: () => setMode('periodic'), style: {
23
- padding: '10px 20px',
24
- backgroundColor: mode === 'periodic' ? '#007bff' : '#6c757d',
25
- color: 'white',
26
- border: 'none',
27
- borderRadius: '4px',
28
- cursor: 'pointer'
29
- } }, "Periodic Mode (Every 2 min)"),
30
- React.createElement("button", { onClick: () => setMode('hybrid'), style: {
31
- padding: '10px 20px',
32
- backgroundColor: mode === 'hybrid' ? '#007bff' : '#6c757d',
33
- color: 'white',
34
- border: 'none',
35
- borderRadius: '4px',
36
- cursor: 'pointer'
37
- } }, "Hybrid Mode")),
38
- React.createElement("div", { style: { fontSize: '14px', color: '#666' } },
39
- React.createElement("strong", null, "Current Mode:"),
40
- " ",
41
- mode,
42
- mode === 'metadata' && ' - Detects #EXT-X-DATERANGE tags in HLS stream',
43
- mode === 'periodic' && ' - Shows ads every 2 minutes of playback',
44
- mode === 'hybrid' && ' - Uses both metadata detection AND periodic fallback')),
45
- React.createElement("div", { style: { flex: 1, position: 'relative', backgroundColor: '#000' } },
46
- React.createElement(WebPlayerView, { url: "https://stream.example.com/live.m3u8", type: "hls", autoPlay: false, controls: true, muted: true, googleAds: {
47
- adTagUrl: 'https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=',
48
- liveAdBreakMode: mode,
49
- periodicAdInterval: 120,
50
- syncToLiveEdge: true,
51
- liveEdgeOffset: 3,
52
- metadataConfig: {
53
- detectDateRange: true,
54
- detectID3: true,
55
- adClassNames: ['com.google.ads', 'ads', 'ad-break']
56
- },
57
- onAdStart: () => {
58
- logAdEvent(`🎬 Ad Started (Mode: ${mode})`);
59
- },
60
- onAdEnd: () => {
61
- logAdEvent('✅ Ad Ended - Resuming Live Stream');
62
- },
63
- onAdError: (error) => {
64
- logAdEvent(`❌ Ad Error: ${error?.getMessage?.() || error}`);
65
- },
66
- onAllAdsComplete: () => {
67
- logAdEvent('✅ All Ads in Pod Completed');
68
- },
69
- onLiveAdBreakDetected: (metadata) => {
70
- logAdEvent(`📍 Live Ad Cue Detected: ${JSON.stringify(metadata).slice(0, 50)}...`);
71
- },
72
- onAdBreakScheduled: (scheduledTime) => {
73
- logAdEvent(`⏰ Ad Break Scheduled at ${scheduledTime.toFixed(0)}s playback time`);
74
- },
75
- }, onReady: (player) => {
76
- console.log('Player ready with live stream ads');
77
- logAdEvent('🎥 Player Ready');
78
- }, onError: (error) => {
79
- console.error('Player error:', error);
80
- logAdEvent(`❌ Player Error: ${error instanceof Error ? error.message : String(error)}`);
81
- }, onTimeUpdate: (time) => {
82
- } })),
83
- React.createElement("div", { style: {
84
- padding: '20px',
85
- backgroundColor: '#f9f9f9',
86
- borderTop: '1px solid #ddd',
87
- maxHeight: '200px',
88
- overflowY: 'auto',
89
- } },
90
- React.createElement("h3", { style: { margin: '0 0 10px 0', fontSize: '16px' } }, "Live Ad Events Log:"),
91
- adEvents.length === 0 ? (React.createElement("p", { style: { color: '#999', margin: 0 } }, "No ad events yet. Play the video to see ads.")) : (React.createElement("ul", { style: { margin: 0, padding: '0 0 0 20px' } }, adEvents.map((event, index) => (React.createElement("li", { key: index, style: { fontSize: '14px', marginBottom: '5px' } }, event)))))),
92
- React.createElement("div", { style: {
93
- padding: '20px',
94
- backgroundColor: '#e7f3ff',
95
- borderTop: '1px solid #b3d9ff'
96
- } },
97
- React.createElement("h3", { style: { margin: '0 0 10px 0', fontSize: '16px' } }, "\uD83D\uDCA1 Implementation Notes:"),
98
- React.createElement("ul", { style: { margin: 0, paddingLeft: '20px', fontSize: '14px' } },
99
- React.createElement("li", null,
100
- React.createElement("strong", null, "Metadata Mode:"),
101
- " Requires HLS stream with #EXT-X-DATERANGE tags or ID3 metadata. Your encoder must embed ad cues in the manifest."),
102
- React.createElement("li", null,
103
- React.createElement("strong", null, "Periodic Mode:"),
104
- " Works with any live stream. Ads trigger every X seconds of actual playback. Simple but users see ads at different times (not synchronized)."),
105
- React.createElement("li", null,
106
- React.createElement("strong", null, "Hybrid Mode:"),
107
- " Uses metadata when available, falls back to periodic timer. Best of both worlds!"),
108
- React.createElement("li", null,
109
- React.createElement("strong", null, "Live Edge Sync:"),
110
- " After ads, player jumps to live edge (catches up to \"now\"). Disable if you want DVR-style behavior (continue from where paused).")))));
111
- };
112
- export const MetadataLiveAdsExample = () => {
113
- return (React.createElement(WebPlayerView, { url: "https://stream.example.com/live.m3u8", type: "hls", googleAds: {
114
- adTagUrl: 'https://pubads.g.doubleclick.net/...',
115
- liveAdBreakMode: 'metadata',
116
- metadataConfig: {
117
- detectDateRange: true,
118
- detectID3: true,
119
- adClassNames: ['com.google.ads', 'ads']
120
- },
121
- syncToLiveEdge: true,
122
- liveEdgeOffset: 3,
123
- onLiveAdBreakDetected: (metadata) => {
124
- console.log('Ad cue detected:', metadata);
125
- }
126
- } }));
127
- };
128
- export const PeriodicLiveAdsExample = () => {
129
- return (React.createElement(WebPlayerView, { url: "https://stream.example.com/live.m3u8", type: "hls", googleAds: {
130
- adTagUrl: 'https://pubads.g.doubleclick.net/...',
131
- liveAdBreakMode: 'periodic',
132
- periodicAdInterval: 300,
133
- syncToLiveEdge: true,
134
- onAdBreakScheduled: (scheduledTime) => {
135
- console.log(`Next ad at ${scheduledTime}s playback time`);
136
- }
137
- } }));
138
- };
139
- export const HybridLiveAdsExample = () => {
140
- return (React.createElement(WebPlayerView, { url: "https://stream.example.com/live.m3u8", type: "hls", googleAds: {
141
- adTagUrl: 'https://pubads.g.doubleclick.net/...',
142
- liveAdBreakMode: 'hybrid',
143
- metadataConfig: {
144
- detectDateRange: true,
145
- detectID3: true
146
- },
147
- periodicAdInterval: 300,
148
- syncToLiveEdge: true,
149
- onLiveAdBreakDetected: (metadata) => {
150
- console.log('✅ Metadata ad cue detected');
151
- },
152
- onAdBreakScheduled: (scheduledTime) => {
153
- console.log('⏰ Fallback periodic ad scheduled');
154
- }
155
- } }));
156
- };
157
- export const BackendControlledLiveAdsExample = () => {
158
- const [adConfig, setAdConfig] = useState(null);
159
- React.useEffect(() => {
160
- fetch('/api/live-stream/ad-config')
161
- .then(res => res.json())
162
- .then(config => {
163
- setAdConfig(config);
164
- });
165
- }, []);
166
- if (!adConfig)
167
- return React.createElement("div", null, "Loading...");
168
- return (React.createElement(WebPlayerView, { url: adConfig.streamUrl, type: "hls", googleAds: {
169
- adTagUrl: adConfig.adTagUrl,
170
- liveAdBreakMode: adConfig.mode,
171
- periodicAdInterval: adConfig.periodicInterval,
172
- metadataConfig: adConfig.metadataConfig,
173
- syncToLiveEdge: true
174
- } }));
175
- };
176
- export default LiveStreamAdsExample;
177
- //# sourceMappingURL=live-stream-ads-example.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live-stream-ads-example.js","sourceRoot":"","sources":["../../../src/react/examples/live-stream-ads-example.tsx"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { VideoSegment, VideoChapters, ChapterConfig, SegmentType } from '../../chapters/types/ChapterTypes';
2
- export interface UseChaptersOptions {
3
- videoElement?: HTMLVideoElement | null;
4
- chapters?: VideoChapters;
5
- config?: ChapterConfig;
6
- onSegmentEntered?: (segment: VideoSegment) => void;
7
- onSegmentSkipped?: (fromSegment: VideoSegment, toSegment?: VideoSegment) => void;
8
- onSkipButtonShown?: (segment: VideoSegment) => void;
9
- onSkipButtonHidden?: (segment: VideoSegment) => void;
10
- }
11
- export interface UseChaptersResult {
12
- currentSegment: VideoSegment | null;
13
- chapters: VideoChapters | null;
14
- isSkipButtonVisible: boolean;
15
- loadChapters: (chapters: VideoChapters) => Promise<void>;
16
- skipToSegment: (segmentId: string) => void;
17
- skipCurrentSegment: () => void;
18
- getSegmentsByType: (type: SegmentType) => VideoSegment[];
19
- hasSegmentType: (type: SegmentType) => boolean;
20
- getChapterMarkers: () => Array<{
21
- position: number;
22
- segment: VideoSegment;
23
- color: string;
24
- }>;
25
- formatTime: (seconds: number) => string;
26
- isInSegment: (segmentId: string) => boolean;
27
- }
28
- export declare function useChapters(options?: UseChaptersOptions): UseChaptersResult;
29
- //# sourceMappingURL=useChapters.d.ts.map
@@ -1,8 +0,0 @@
1
- import { VCManifest, VCCue } from "../types/VideoCommerceTypes";
2
- export declare function resolveActiveCues(manifest: VCManifest | undefined, t: number, paused: boolean): VCCue[];
3
- export declare function useCommerceSync(manifest: VCManifest | undefined, time: number, paused: boolean): {
4
- activeCues: VCCue[];
5
- activeOverlays: import("../types/VideoCommerceTypes").VCOverlayInstruction[];
6
- activeProducts: import("../types/VideoCommerceTypes").VCProduct[];
7
- };
8
- //# sourceMappingURL=useCommerceSync.d.ts.map
@@ -1,101 +0,0 @@
1
- /// <reference types="react" />
2
- export interface EPGProgram {
3
- id: number | string;
4
- title: string;
5
- description: string;
6
- since: string;
7
- till: string;
8
- image?: string;
9
- category?: string;
10
- rating?: string;
11
- isFavorite?: boolean;
12
- isRecording?: boolean;
13
- hasReminder?: boolean;
14
- hasCatchup?: boolean;
15
- metadata?: Record<string, any>;
16
- }
17
- export interface EPGProgramRow {
18
- programTitle: string;
19
- channelLogo?: string;
20
- channelId?: string | number;
21
- data: EPGProgram[];
22
- }
23
- export interface EPGData {
24
- timeline: EPGProgramRow[];
25
- }
26
- export interface EPGTimeSlot {
27
- hour: number;
28
- label: string;
29
- timestamp: number;
30
- }
31
- export interface EPGAction {
32
- type: 'favorite' | 'record' | 'reminder' | 'catchup';
33
- program: EPGProgram;
34
- channel: EPGProgramRow;
35
- }
36
- export interface EPGNavigationState {
37
- currentTimeOffset: number;
38
- visibleTimeRange: {
39
- start: number;
40
- end: number;
41
- };
42
- scrollPosition: {
43
- horizontal: number;
44
- vertical: number;
45
- };
46
- }
47
- export interface EPGConfig {
48
- timeSlotDuration: number;
49
- visibleHours: number;
50
- enableInfiniteScroll: boolean;
51
- lazyLoadThreshold: number;
52
- showChannelLogos: boolean;
53
- showProgramImages: boolean;
54
- compactMode: boolean;
55
- onFavorite?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
56
- onRecord?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
57
- onSetReminder?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
58
- onCatchup?: (program: EPGProgram, channel: EPGProgramRow) => void | Promise<void>;
59
- onProgramSelect?: (program: EPGProgram, channel: EPGProgramRow) => void;
60
- onChannelSelect?: (channel: EPGProgramRow) => void;
61
- }
62
- export interface EPGProps {
63
- data: EPGData;
64
- config?: Partial<EPGConfig>;
65
- visible?: boolean;
66
- onToggle?: (visible: boolean) => void;
67
- className?: string;
68
- style?: React.CSSProperties;
69
- }
70
- export interface EPGContextType {
71
- epgData: EPGData | null;
72
- config: EPGConfig;
73
- navigation: EPGNavigationState;
74
- selectedProgram: EPGProgram | null;
75
- currentTime: number;
76
- selectProgram: (program: EPGProgram | null, channel?: EPGProgramRow) => void;
77
- navigateTime: (direction: 'left' | 'right' | 'today') => void;
78
- scrollTo: (time: number) => void;
79
- executeAction: (action: EPGAction) => void | Promise<void>;
80
- isLoading: boolean;
81
- error: string | null;
82
- }
83
- export interface EPGComponentProps {
84
- className?: string;
85
- style?: React.CSSProperties;
86
- }
87
- export interface TimeRange {
88
- start: number;
89
- end: number;
90
- duration: number;
91
- }
92
- export interface ProgramBlock extends TimeRange {
93
- program: EPGProgram;
94
- channel: EPGProgramRow;
95
- width: number;
96
- left: number;
97
- }
98
- export type EPGViewMode = 'grid' | 'list' | 'compact';
99
- export type EPGSortBy = 'time' | 'channel' | 'category' | 'rating';
100
- export type EPGFilterType = 'all' | 'favorites' | 'recordings' | 'reminders' | 'category';
101
- //# sourceMappingURL=EPGTypes.d.ts.map
@@ -1,146 +0,0 @@
1
- export type TickerStyleVariant = 'simple' | 'broadcast';
2
- export type TickerLayoutStyle = 'simple' | 'broadcast' | 'two-line' | 'professional';
3
- export type IntroAnimationType = 'none' | 'slide-in' | 'scale' | 'flash' | 'pulse' | 'shake';
4
- export type ItemTransitionType = 'fade' | 'slide' | 'none';
5
- export type BroadcastTheme = 'breaking-red' | 'breaking-blue' | 'alert-red' | 'news-blue' | 'custom';
6
- export interface TopLineConfig {
7
- mode?: 'static' | 'scroll';
8
- multiLine?: boolean;
9
- maxLines?: number;
10
- forceMultiLine?: boolean;
11
- breakAt?: number | string;
12
- minHeight?: number;
13
- fontSize?: number;
14
- lineHeight?: number;
15
- textColor?: string;
16
- backgroundColor?: string;
17
- padding?: number;
18
- }
19
- export interface BottomLineConfig {
20
- speed?: number;
21
- height?: number;
22
- fontSize?: number;
23
- textColor?: string;
24
- backgroundColor?: string;
25
- }
26
- export interface TwoLineDisplayConfig {
27
- enabled?: boolean;
28
- topLine?: TopLineConfig;
29
- bottomLine?: BottomLineConfig;
30
- showSeparator?: boolean;
31
- separatorColor?: string;
32
- }
33
- export type SeparatorType = 'line' | 'pulse-line' | 'chevron' | 'diamond' | 'dot';
34
- export interface DecorativeShapesConfig {
35
- headerSeparator?: {
36
- type?: SeparatorType;
37
- animated?: boolean;
38
- color?: string;
39
- width?: number;
40
- height?: number;
41
- };
42
- }
43
- export interface ItemCyclingConfig {
44
- enabled?: boolean;
45
- defaultDuration?: number;
46
- transitionType?: ItemTransitionType;
47
- transitionDuration?: number;
48
- showProgress?: boolean;
49
- progressColor?: string;
50
- progressHeight?: number;
51
- pauseOnHover?: boolean;
52
- }
53
- export interface BroadcastStyleConfig {
54
- theme?: BroadcastTheme;
55
- layoutStyle?: TickerLayoutStyle;
56
- headerText?: string;
57
- showGlobe?: boolean;
58
- showLiveBadge?: boolean;
59
- headerColor?: string;
60
- headerTextColor?: string;
61
- bodyColor?: string;
62
- headerHeight?: number;
63
- headerFontSize?: number;
64
- subHeaderText?: string;
65
- animateGlobe?: boolean;
66
- pulseLiveBadge?: boolean;
67
- twoLineDisplay?: TwoLineDisplayConfig;
68
- decorativeShapes?: DecorativeShapesConfig;
69
- defaultIntroAnimation?: IntroAnimationType;
70
- defaultIntroDuration?: number;
71
- }
72
- export interface FlashNewsTickerItem {
73
- id: string;
74
- text: string;
75
- html?: string;
76
- headline?: string;
77
- headlineHtml?: string;
78
- priority?: number;
79
- startTime?: number;
80
- endTime?: number;
81
- duration?: number;
82
- showIntro?: boolean;
83
- introText?: string;
84
- introAnimation?: IntroAnimationType;
85
- introDuration?: number;
86
- metadata?: Record<string, any>;
87
- }
88
- export interface TickerDisplayConfig {
89
- items: FlashNewsTickerItem[];
90
- height?: number;
91
- backgroundColor?: string;
92
- textColor?: string;
93
- fontSize?: number;
94
- fontWeight?: number | string;
95
- speed?: number;
96
- gap?: number;
97
- separator?: string;
98
- offset?: number;
99
- styleVariant?: TickerStyleVariant;
100
- broadcastStyle?: BroadcastStyleConfig;
101
- }
102
- export interface FlashNewsTickerConfig {
103
- enabled?: boolean;
104
- items?: FlashNewsTickerItem[];
105
- position?: 'top' | 'bottom' | 'both';
106
- styleVariant?: TickerStyleVariant;
107
- broadcastStyle?: BroadcastStyleConfig;
108
- itemCycling?: ItemCyclingConfig;
109
- topConfig?: TickerDisplayConfig;
110
- bottomConfig?: TickerDisplayConfig;
111
- height?: number;
112
- backgroundColor?: string;
113
- textColor?: string;
114
- fontSize?: number;
115
- fontWeight?: number | string;
116
- speed?: number;
117
- pauseOnHover?: boolean;
118
- gap?: number;
119
- loop?: boolean;
120
- separator?: string;
121
- variant?: 'standard' | 'breaking' | 'live' | 'broadcast1' | 'custom';
122
- badgeText?: string;
123
- badgeColor?: string;
124
- badgeTextColor?: string;
125
- accentColor?: string;
126
- pulseBadge?: boolean;
127
- iconUrl?: string;
128
- headline?: string;
129
- secondaryItems?: FlashNewsTickerItem[];
130
- topOffset?: number;
131
- bottomOffset?: number;
132
- }
133
- export interface FlashNewsTickerAPI {
134
- show: () => void;
135
- hide: () => void;
136
- isVisible: () => boolean;
137
- updateItems: (items: FlashNewsTickerItem[]) => void;
138
- addItem: (item: FlashNewsTickerItem) => void;
139
- removeItem: (itemId: string) => void;
140
- clearItems: () => void;
141
- updateConfig: (config: Partial<FlashNewsTickerConfig>) => void;
142
- pause: () => void;
143
- resume: () => void;
144
- isPaused: () => boolean;
145
- }
146
- //# sourceMappingURL=FlashNewsTickerTypes.d.ts.map
@@ -1,109 +0,0 @@
1
- export type OverlayType = "badge" | "side-list" | "pause-layer" | "cta";
2
- export type TriggerType = "time" | "userAction" | "cue";
3
- export interface VCManifest {
4
- version: "1.0";
5
- videoId?: string;
6
- products: VCProduct[];
7
- cues: VCCue[];
8
- ui?: {
9
- panel?: {
10
- position?: "right" | "left" | "bottom";
11
- width?: number;
12
- autoOpen?: "onProduct" | "onPause" | "never";
13
- dedupeAcrossCues?: boolean;
14
- showOnlyActive?: boolean;
15
- sort?: "timeline" | "priceAsc" | "priceDesc";
16
- };
17
- };
18
- }
19
- export interface VCProduct {
20
- id: string;
21
- title: string;
22
- brand?: string;
23
- thumbnails: {
24
- square?: string;
25
- portrait?: string;
26
- landscape?: string;
27
- };
28
- pricing: {
29
- currency: string;
30
- amount: number;
31
- compareAt?: number;
32
- priceText?: string;
33
- };
34
- variants?: Array<{
35
- id: string;
36
- label: string;
37
- }>;
38
- deeplink: {
39
- pdpUrl: string;
40
- addToCartUrl?: string;
41
- buyNowUrl?: string;
42
- };
43
- inventory?: {
44
- inStock: boolean;
45
- qty?: number;
46
- backorder?: boolean;
47
- };
48
- rating?: {
49
- value: number;
50
- count: number;
51
- };
52
- }
53
- export interface VCCue {
54
- id: string;
55
- trigger: {
56
- type: TriggerType;
57
- time?: {
58
- start: number;
59
- end?: number;
60
- };
61
- userAction?: "pause" | "resume";
62
- cueName?: string;
63
- };
64
- overlays: VCOverlayInstruction[];
65
- analytics?: {
66
- label?: string;
67
- campaignId?: string;
68
- };
69
- }
70
- export type Placement = {
71
- mode: "dock";
72
- edge: "bottom" | "top" | "left" | "right";
73
- } | {
74
- mode: "anchor";
75
- x: number;
76
- y: number;
77
- };
78
- export interface VCOverlayInstruction {
79
- id: string;
80
- overlayType: OverlayType;
81
- productRefs: Array<{
82
- productId: string;
83
- weight?: number;
84
- }>;
85
- placement?: Placement;
86
- style?: {
87
- theme?: "light" | "dark" | "auto";
88
- badge?: {
89
- showPrice?: boolean;
90
- showThumb?: boolean;
91
- label?: string;
92
- };
93
- list?: {
94
- itemsPerPage?: number;
95
- layout?: "grid" | "rail";
96
- };
97
- };
98
- behavior?: {
99
- autoShow?: boolean;
100
- autoHideOn?: Array<"seek" | "pause" | "play" | "end">;
101
- dismissible?: boolean;
102
- zIndex?: number;
103
- };
104
- }
105
- export interface VCEvent {
106
- type: "vc_impression" | "vc_cue_enter" | "vc_cue_exit" | "vc_overlay_show" | "vc_overlay_hide" | "vc_product_impression" | "vc_product_click";
107
- payload: Record<string, any>;
108
- }
109
- //# sourceMappingURL=VideoCommerceTypes.d.ts.map
@@ -1,21 +0,0 @@
1
- import type { EPGProgram, EPGTimeSlot, ProgramBlock, EPGProgramRow } from '../types/EPGTypes';
2
- export declare const parseTime: (isoString: string) => number;
3
- export declare const formatTime: (timestamp: number, format?: '12h' | '24h') => string;
4
- export declare const formatDateTime: (timestamp: number) => string;
5
- export declare const getProgramDuration: (program: EPGProgram) => number;
6
- export declare const generateTimeSlots: (startTime: number, visibleHours: number, slotDuration?: number) => EPGTimeSlot[];
7
- export declare const calculateProgramBlock: (program: EPGProgram, channel: EPGProgramRow, timelineStart: number, timelineEnd: number, containerWidth: number, channelHeight?: number) => ProgramBlock | null;
8
- export declare const isProgramLive: (program: EPGProgram, currentTime?: number) => boolean;
9
- export declare const getProgramProgress: (program: EPGProgram, currentTime?: number) => number;
10
- export declare const findProgramAtTime: (channel: EPGProgramRow, timestamp: number) => EPGProgram | null;
11
- export declare const getCurrentTimePosition: (currentTime: number, timelineStart: number, timelineEnd: number, containerWidth: number) => number;
12
- export declare const snapToTimeSlot: (timestamp: number, slotDuration?: number) => number;
13
- export declare const calculateOptimalTimeRange: (currentTime?: number, visibleHours?: number) => {
14
- start: number;
15
- end: number;
16
- };
17
- export declare const getProgramsInRange: (channels: EPGProgramRow[], startTime: number, endTime: number, paddingHours?: number) => EPGProgramRow[];
18
- export declare const calculateScrollPosition: (targetTime: number, timelineStart: number, timelineEnd: number, containerWidth: number, visibleWidth: number) => number;
19
- export declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number) => (...args: Parameters<T>) => void;
20
- export declare const throttle: <T extends (...args: any[]) => any>(func: T, limit: number) => (...args: Parameters<T>) => void;
21
- //# sourceMappingURL=EPGUtils.d.ts.map
@@ -1,3 +0,0 @@
1
- declare function runEPGTests(): void;
2
- export { runEPGTests };
3
- //# sourceMappingURL=epg-test.d.ts.map
@@ -1,38 +0,0 @@
1
- export interface YouTubeVideoInfo {
2
- videoId: string;
3
- title: string;
4
- duration: number;
5
- thumbnail: string;
6
- streamUrl: string;
7
- format: 'mp4' | 'webm';
8
- }
9
- export declare class YouTubeExtractor {
10
- private static readonly YOUTUBE_REGEX;
11
- private static readonly YOUTUBE_NOEMBED_API;
12
- private static readonly YOUTUBE_API_ENDPOINT;
13
- static isYouTubeUrl(url: string): boolean;
14
- static extractVideoId(url: string): string | null;
15
- static getVideoMetadata(url: string): Promise<{
16
- title: string;
17
- thumbnail: string;
18
- duration?: number;
19
- }>;
20
- static getEmbedUrl(videoId: string, showControls?: boolean): string;
21
- static getDirectStreamUrl(videoId: string, backendEndpoint?: string): Promise<string | null>;
22
- private static getFallbackStreamUrl;
23
- static prepareYouTubeSource(url: string, backendEndpoint?: string): Promise<{
24
- url: string;
25
- type: string;
26
- title: string;
27
- thumbnail: string;
28
- duration: number | undefined;
29
- videoId: string;
30
- isYouTube: boolean;
31
- metadata: {
32
- source: string;
33
- videoId: string;
34
- };
35
- }>;
36
- }
37
- export default YouTubeExtractor;
38
- //# sourceMappingURL=YouTubeExtractor.d.ts.map