unified-video-framework 1.4.59 → 1.4.61

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 (43) hide show
  1. package/package.json +1 -1
  2. package/packages/web/dist/WebPlayer.d.ts +9 -0
  3. package/packages/web/dist/WebPlayer.d.ts.map +1 -1
  4. package/packages/web/dist/WebPlayer.js +222 -0
  5. package/packages/web/dist/WebPlayer.js.map +1 -1
  6. package/packages/web/dist/react/EPG.d.ts.map +1 -0
  7. package/packages/web/dist/react/EPG.js +7 -0
  8. package/packages/web/dist/react/EPG.js.map +1 -0
  9. package/packages/web/dist/react/WebPlayerView.d.ts.map +1 -1
  10. package/packages/web/dist/react/WebPlayerView.js +0 -25
  11. package/packages/web/dist/react/WebPlayerView.js.map +1 -1
  12. package/packages/web/dist/react/WebPlayerViewWithEPG.d.ts.map +1 -0
  13. package/packages/web/dist/react/WebPlayerViewWithEPG.js +331 -0
  14. package/packages/web/dist/react/WebPlayerViewWithEPG.js.map +1 -0
  15. package/packages/web/dist/react/components/EPGNavigationControls.d.ts.map +1 -0
  16. package/packages/web/dist/react/components/EPGNavigationControls.js +202 -0
  17. package/packages/web/dist/react/components/EPGNavigationControls.js.map +1 -0
  18. package/packages/web/dist/react/components/EPGOverlay-improved-positioning.d.ts.map +1 -0
  19. package/packages/web/dist/react/components/EPGOverlay-improved-positioning.js +415 -0
  20. package/packages/web/dist/react/components/EPGOverlay-improved-positioning.js.map +1 -0
  21. package/packages/web/dist/react/components/EPGOverlay.d.ts.map +1 -0
  22. package/packages/web/dist/react/components/EPGOverlay.js +384 -0
  23. package/packages/web/dist/react/components/EPGOverlay.js.map +1 -0
  24. package/packages/web/dist/react/components/EPGProgramDetails.d.ts.map +1 -0
  25. package/packages/web/dist/react/components/EPGProgramDetails.js +437 -0
  26. package/packages/web/dist/react/components/EPGProgramDetails.js.map +1 -0
  27. package/packages/web/dist/react/components/EPGProgramGrid.d.ts.map +1 -0
  28. package/packages/web/dist/react/components/EPGProgramGrid.js +265 -0
  29. package/packages/web/dist/react/components/EPGProgramGrid.js.map +1 -0
  30. package/packages/web/dist/react/components/EPGTimelineHeader.d.ts.map +1 -0
  31. package/packages/web/dist/react/components/EPGTimelineHeader.js +153 -0
  32. package/packages/web/dist/react/components/EPGTimelineHeader.js.map +1 -0
  33. package/packages/web/dist/react/types/EPGTypes.d.ts.map +1 -0
  34. package/packages/web/dist/react/types/EPGTypes.js +2 -0
  35. package/packages/web/dist/react/types/EPGTypes.js.map +1 -0
  36. package/packages/web/dist/react/utils/EPGUtils.d.ts.map +1 -0
  37. package/packages/web/dist/react/utils/EPGUtils.js +154 -0
  38. package/packages/web/dist/react/utils/EPGUtils.js.map +1 -0
  39. package/packages/web/dist/test/epg-test.d.ts.map +1 -0
  40. package/packages/web/dist/test/epg-test.js +77 -0
  41. package/packages/web/dist/test/epg-test.js.map +1 -0
  42. package/packages/web/src/WebPlayer.ts +277 -0
  43. package/packages/web/src/react/WebPlayerView.tsx +0 -36
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-video-framework",
3
- "version": "1.4.59",
3
+ "version": "1.4.61",
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",
@@ -43,6 +43,9 @@ export declare class WebPlayer extends BasePlayer {
43
43
  private _deferredPause;
44
44
  private _lastToggleAt;
45
45
  private _TOGGLE_DEBOUNCE_MS;
46
+ private epgData;
47
+ private isEPGVisible;
48
+ private epgOverlay;
46
49
  private debugLog;
47
50
  private debugError;
48
51
  private debugWarn;
@@ -144,6 +147,12 @@ export declare class WebPlayer extends BasePlayer {
144
147
  hideEPGButton(): void;
145
148
  setEPGData(epgData: any): void;
146
149
  isEPGButtonVisible(): boolean;
150
+ toggleEPG(): void;
151
+ showEPG(): void;
152
+ hideEPG(): void;
153
+ isEPGCurrentlyVisible(): boolean;
154
+ private showEPGOverlay;
155
+ private hideEPGOverlay;
147
156
  private cleanup;
148
157
  destroy(): Promise<void>;
149
158
  }
@@ -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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"}
@@ -36,6 +36,9 @@ export class WebPlayer extends BasePlayer {
36
36
  this._deferredPause = false;
37
37
  this._lastToggleAt = 0;
38
38
  this._TOGGLE_DEBOUNCE_MS = 120;
39
+ this.epgData = null;
40
+ this.isEPGVisible = false;
41
+ this.epgOverlay = null;
39
42
  }
40
43
  debugLog(message, ...args) {
41
44
  if (this.config.debug) {
@@ -4066,6 +4069,7 @@ export class WebPlayer extends BasePlayer {
4066
4069
  }
4067
4070
  }
4068
4071
  setEPGData(epgData) {
4072
+ this.epgData = epgData;
4069
4073
  if (epgData && Object.keys(epgData).length > 0) {
4070
4074
  this.showEPGButton();
4071
4075
  this.debugLog('EPG data set, button shown');
@@ -4073,6 +4077,8 @@ export class WebPlayer extends BasePlayer {
4073
4077
  }
4074
4078
  else {
4075
4079
  this.hideEPGButton();
4080
+ this.isEPGVisible = false;
4081
+ this.hideEPGOverlay();
4076
4082
  this.debugLog('No EPG data provided, button hidden');
4077
4083
  }
4078
4084
  }
@@ -4080,6 +4086,222 @@ export class WebPlayer extends BasePlayer {
4080
4086
  const epgBtn = document.getElementById('uvf-epg-btn');
4081
4087
  return epgBtn ? epgBtn.style.display !== 'none' : false;
4082
4088
  }
4089
+ toggleEPG() {
4090
+ if (!this.epgData || Object.keys(this.epgData).length === 0) {
4091
+ this.debugLog('Cannot toggle EPG - no data available');
4092
+ return;
4093
+ }
4094
+ this.isEPGVisible = !this.isEPGVisible;
4095
+ this.debugLog('EPG toggled to:', this.isEPGVisible ? 'visible' : 'hidden');
4096
+ if (this.isEPGVisible) {
4097
+ this.showEPGOverlay();
4098
+ }
4099
+ else {
4100
+ this.hideEPGOverlay();
4101
+ }
4102
+ this.emit('epgToggle', {
4103
+ visible: this.isEPGVisible,
4104
+ data: this.epgData
4105
+ });
4106
+ }
4107
+ showEPG() {
4108
+ if (!this.epgData || Object.keys(this.epgData).length === 0) {
4109
+ this.debugLog('Cannot show EPG - no data available');
4110
+ return;
4111
+ }
4112
+ if (!this.isEPGVisible) {
4113
+ this.isEPGVisible = true;
4114
+ this.showEPGOverlay();
4115
+ this.debugLog('EPG shown');
4116
+ this.emit('epgToggle', {
4117
+ visible: true,
4118
+ data: this.epgData
4119
+ });
4120
+ }
4121
+ }
4122
+ hideEPG() {
4123
+ if (this.isEPGVisible) {
4124
+ this.isEPGVisible = false;
4125
+ this.hideEPGOverlay();
4126
+ this.debugLog('EPG hidden');
4127
+ this.emit('epgToggle', {
4128
+ visible: false,
4129
+ data: this.epgData
4130
+ });
4131
+ }
4132
+ }
4133
+ isEPGCurrentlyVisible() {
4134
+ return this.isEPGVisible;
4135
+ }
4136
+ showEPGOverlay() {
4137
+ if (!this.playerWrapper || !this.epgData)
4138
+ return;
4139
+ this.hideEPGOverlay();
4140
+ const overlay = document.createElement('div');
4141
+ overlay.id = 'uvf-epg-overlay';
4142
+ overlay.className = 'uvf-epg-overlay';
4143
+ overlay.style.cssText = `
4144
+ position: fixed;
4145
+ top: 0;
4146
+ left: 0;
4147
+ right: 0;
4148
+ bottom: 0;
4149
+ background: rgba(0, 0, 0, 0.95);
4150
+ z-index: 10000;
4151
+ display: flex;
4152
+ flex-direction: column;
4153
+ color: white;
4154
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
4155
+ `;
4156
+ const header = document.createElement('div');
4157
+ header.style.cssText = `
4158
+ padding: 20px;
4159
+ background: rgba(255, 255, 255, 0.1);
4160
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
4161
+ display: flex;
4162
+ justify-content: space-between;
4163
+ align-items: center;
4164
+ `;
4165
+ const title = document.createElement('h2');
4166
+ title.textContent = 'Electronic Program Guide';
4167
+ title.style.cssText = 'margin: 0; font-size: 24px; font-weight: 600;';
4168
+ const closeBtn = document.createElement('button');
4169
+ closeBtn.innerHTML = '✕';
4170
+ closeBtn.style.cssText = `
4171
+ background: transparent;
4172
+ border: 2px solid rgba(255, 255, 255, 0.3);
4173
+ color: white;
4174
+ width: 40px;
4175
+ height: 40px;
4176
+ border-radius: 50%;
4177
+ cursor: pointer;
4178
+ font-size: 18px;
4179
+ display: flex;
4180
+ align-items: center;
4181
+ justify-content: center;
4182
+ transition: all 0.3s ease;
4183
+ `;
4184
+ closeBtn.addEventListener('click', () => this.hideEPG());
4185
+ closeBtn.addEventListener('mouseenter', () => {
4186
+ closeBtn.style.background = 'rgba(255, 255, 255, 0.1)';
4187
+ closeBtn.style.borderColor = 'rgba(255, 255, 255, 0.5)';
4188
+ });
4189
+ closeBtn.addEventListener('mouseleave', () => {
4190
+ closeBtn.style.background = 'transparent';
4191
+ closeBtn.style.borderColor = 'rgba(255, 255, 255, 0.3)';
4192
+ });
4193
+ header.appendChild(title);
4194
+ header.appendChild(closeBtn);
4195
+ const content = document.createElement('div');
4196
+ content.style.cssText = `
4197
+ flex: 1;
4198
+ padding: 20px;
4199
+ overflow-y: auto;
4200
+ display: flex;
4201
+ flex-direction: column;
4202
+ gap: 16px;
4203
+ `;
4204
+ if (Array.isArray(this.epgData)) {
4205
+ this.epgData.forEach((channel) => {
4206
+ const channelDiv = document.createElement('div');
4207
+ channelDiv.style.cssText = `
4208
+ background: rgba(255, 255, 255, 0.05);
4209
+ border-radius: 8px;
4210
+ padding: 16px;
4211
+ border-left: 4px solid #ff6b35;
4212
+ `;
4213
+ const channelName = document.createElement('h3');
4214
+ channelName.textContent = channel.name || channel.title || 'Unknown Channel';
4215
+ channelName.style.cssText = 'margin: 0 0 12px 0; color: #ff6b35; font-size: 18px;';
4216
+ channelDiv.appendChild(channelName);
4217
+ if (channel.programs && Array.isArray(channel.programs)) {
4218
+ channel.programs.slice(0, 5).forEach((program) => {
4219
+ const programDiv = document.createElement('div');
4220
+ programDiv.style.cssText = `
4221
+ padding: 8px 0;
4222
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
4223
+ `;
4224
+ const programTitle = document.createElement('div');
4225
+ programTitle.textContent = program.title || 'Unknown Program';
4226
+ programTitle.style.cssText = 'font-weight: 500; margin-bottom: 4px;';
4227
+ const programTime = document.createElement('div');
4228
+ programTime.textContent = `${program.startTime || ''} - ${program.endTime || ''}`;
4229
+ programTime.style.cssText = 'font-size: 14px; color: rgba(255, 255, 255, 0.7);';
4230
+ programDiv.appendChild(programTitle);
4231
+ programDiv.appendChild(programTime);
4232
+ channelDiv.appendChild(programDiv);
4233
+ });
4234
+ }
4235
+ else {
4236
+ const noPrograms = document.createElement('div');
4237
+ noPrograms.textContent = 'No program data available';
4238
+ noPrograms.style.cssText = 'color: rgba(255, 255, 255, 0.5); font-style: italic;';
4239
+ channelDiv.appendChild(noPrograms);
4240
+ }
4241
+ content.appendChild(channelDiv);
4242
+ });
4243
+ }
4244
+ else if (this.epgData.channels && Array.isArray(this.epgData.channels)) {
4245
+ this.epgData.channels.forEach((channel) => {
4246
+ const channelDiv = document.createElement('div');
4247
+ channelDiv.style.cssText = `
4248
+ background: rgba(255, 255, 255, 0.05);
4249
+ border-radius: 8px;
4250
+ padding: 16px;
4251
+ border-left: 4px solid #ff6b35;
4252
+ `;
4253
+ const channelName = document.createElement('h3');
4254
+ channelName.textContent = channel.name || 'Unknown Channel';
4255
+ channelName.style.cssText = 'margin: 0 0 12px 0; color: #ff6b35; font-size: 18px;';
4256
+ channelDiv.appendChild(channelName);
4257
+ content.appendChild(channelDiv);
4258
+ });
4259
+ }
4260
+ else {
4261
+ const placeholder = document.createElement('div');
4262
+ placeholder.style.cssText = `
4263
+ text-align: center;
4264
+ padding: 40px;
4265
+ color: rgba(255, 255, 255, 0.7);
4266
+ font-size: 16px;
4267
+ `;
4268
+ placeholder.innerHTML = `
4269
+ <div style="font-size: 48px; margin-bottom: 16px;">📺</div>
4270
+ <div>EPG data is available but in an unsupported format.</div>
4271
+ <div style="font-size: 14px; margin-top: 8px; color: rgba(255, 255, 255, 0.5);">Please check the data structure.</div>
4272
+ `;
4273
+ content.appendChild(placeholder);
4274
+ }
4275
+ const instructions = document.createElement('div');
4276
+ instructions.style.cssText = `
4277
+ padding: 16px 20px;
4278
+ background: rgba(255, 255, 255, 0.05);
4279
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
4280
+ font-size: 14px;
4281
+ color: rgba(255, 255, 255, 0.7);
4282
+ text-align: center;
4283
+ `;
4284
+ instructions.innerHTML = 'Press <strong>Ctrl+G</strong> or click the ✕ button to close the EPG';
4285
+ overlay.appendChild(header);
4286
+ overlay.appendChild(content);
4287
+ overlay.appendChild(instructions);
4288
+ this.playerWrapper.appendChild(overlay);
4289
+ this.epgOverlay = overlay;
4290
+ const handleKeyDown = (e) => {
4291
+ if (e.key === 'Escape') {
4292
+ e.preventDefault();
4293
+ this.hideEPG();
4294
+ document.removeEventListener('keydown', handleKeyDown);
4295
+ }
4296
+ };
4297
+ document.addEventListener('keydown', handleKeyDown);
4298
+ }
4299
+ hideEPGOverlay() {
4300
+ if (this.epgOverlay && this.epgOverlay.parentNode) {
4301
+ this.epgOverlay.parentNode.removeChild(this.epgOverlay);
4302
+ this.epgOverlay = null;
4303
+ }
4304
+ }
4083
4305
  async cleanup() {
4084
4306
  if (this.hls) {
4085
4307
  this.hls.destroy();