unified-video-framework 1.4.212 → 1.4.214

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.212",
3
+ "version": "1.4.214",
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",
@@ -110,6 +110,7 @@ export declare class WebPlayer extends BasePlayer {
110
110
  play(): Promise<void>;
111
111
  pause(): void;
112
112
  requestPause(): void;
113
+ private safeSetCurrentTime;
113
114
  seek(time: number): void;
114
115
  setVolume(level: number): void;
115
116
  mute(): void;
@@ -164,7 +165,7 @@ export declare class WebPlayer extends BasePlayer {
164
165
  private lockOrientationLandscape;
165
166
  private unlockOrientation;
166
167
  private handleVolumeChange;
167
- private handleProgressChange;
168
+ private seekToPosition;
168
169
  private formatTime;
169
170
  private updateTimeDisplay;
170
171
  private showControls;
@@ -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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"}
@@ -1022,26 +1022,57 @@ export class WebPlayer extends BasePlayer {
1022
1022
  catch (_) { }
1023
1023
  }
1024
1024
  }
1025
+ safeSetCurrentTime(time) {
1026
+ if (!this.video) {
1027
+ this.debugWarn('Cannot set currentTime: video element not available');
1028
+ return false;
1029
+ }
1030
+ if (!isFinite(time) || isNaN(time)) {
1031
+ this.debugWarn('Attempted to set invalid currentTime value:', time);
1032
+ return false;
1033
+ }
1034
+ const safeTime = Math.max(0, time);
1035
+ const duration = this.video.duration;
1036
+ if (isFinite(duration) && duration > 0) {
1037
+ const clampedTime = Math.min(safeTime, duration);
1038
+ try {
1039
+ this.video.currentTime = clampedTime;
1040
+ return true;
1041
+ }
1042
+ catch (error) {
1043
+ this.debugError('Error setting currentTime:', error);
1044
+ return false;
1045
+ }
1046
+ }
1047
+ else {
1048
+ try {
1049
+ this.video.currentTime = safeTime;
1050
+ return true;
1051
+ }
1052
+ catch (error) {
1053
+ this.debugError('Error setting currentTime:', error);
1054
+ return false;
1055
+ }
1056
+ }
1057
+ }
1025
1058
  seek(time) {
1026
1059
  if (!this.video)
1027
1060
  return;
1061
+ if (!isFinite(time) || isNaN(time)) {
1062
+ this.debugWarn('Invalid seek time:', time);
1063
+ return;
1064
+ }
1028
1065
  const freeDuration = Number(this.config.freeDuration || 0);
1029
1066
  if (freeDuration > 0 && !this.paymentSuccessful) {
1030
1067
  const requestedTime = Math.max(0, Math.min(time, this.video.duration || time));
1031
1068
  if (requestedTime >= freeDuration) {
1032
1069
  this.debugWarn('Seek blocked - beyond free preview limit');
1033
1070
  this.enforcePaywallSecurity();
1034
- this.video.currentTime = Math.max(0, freeDuration - 1);
1071
+ this.safeSetCurrentTime(freeDuration - 1);
1035
1072
  return;
1036
1073
  }
1037
1074
  }
1038
- const d = this.video.duration;
1039
- if (typeof d === 'number' && isFinite(d) && d > 0) {
1040
- this.video.currentTime = Math.max(0, Math.min(time, d));
1041
- }
1042
- else {
1043
- this.video.currentTime = Math.max(0, time);
1044
- }
1075
+ this.safeSetCurrentTime(time);
1045
1076
  }
1046
1077
  setVolume(level) {
1047
1078
  if (!this.video)
@@ -3879,6 +3910,139 @@ export class WebPlayer extends BasePlayer {
3879
3910
  100% { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }
3880
3911
  }
3881
3912
 
3913
+ /* Responsive shortcut/volume indicator for mobile and tablet */
3914
+ @media screen and (max-width: 767px) {
3915
+ .uvf-shortcut-indicator {
3916
+ padding: 18px 26px;
3917
+ font-size: 20px;
3918
+ max-width: calc(100vw - 48px);
3919
+ border-radius: 16px;
3920
+ backdrop-filter: blur(12px);
3921
+ background: rgba(0,0,0,0.85);
3922
+ box-shadow: 0 8px 32px rgba(0,0,0,0.4);
3923
+ }
3924
+
3925
+ /* Volume indicator - vertical layout on mobile */
3926
+ .uvf-shortcut-indicator .uvf-ki-volume {
3927
+ flex-direction: column;
3928
+ gap: 14px;
3929
+ align-items: center;
3930
+ }
3931
+
3932
+ .uvf-shortcut-indicator .uvf-ki-vol-icon svg {
3933
+ width: 36px;
3934
+ height: 36px;
3935
+ filter: drop-shadow(0 2px 4px rgba(0,0,0,0.3));
3936
+ }
3937
+
3938
+ .uvf-shortcut-indicator .uvf-ki-vol-bar {
3939
+ width: clamp(220px, 75vw, 300px);
3940
+ height: 12px;
3941
+ border-radius: 6px;
3942
+ background: rgba(255,255,255,0.2);
3943
+ box-shadow: inset 0 1px 3px rgba(0,0,0,0.3);
3944
+ }
3945
+
3946
+ .uvf-shortcut-indicator .uvf-ki-vol-fill {
3947
+ height: 100%;
3948
+ border-radius: 6px;
3949
+ box-shadow: 0 1px 4px rgba(255,87,34,0.4);
3950
+ }
3951
+
3952
+ .uvf-shortcut-indicator .uvf-ki-vol-text {
3953
+ font-size: 28px;
3954
+ font-weight: 700;
3955
+ min-width: auto;
3956
+ text-align: center;
3957
+ width: 100%;
3958
+ letter-spacing: 0.5px;
3959
+ text-shadow: 0 2px 8px rgba(0,0,0,0.5);
3960
+ }
3961
+
3962
+ /* Skip indicators - optimized for mobile */
3963
+ .uvf-shortcut-indicator .uvf-ki-skip {
3964
+ width: 96px;
3965
+ height: 96px;
3966
+ }
3967
+
3968
+ .uvf-shortcut-indicator .uvf-ki-skip svg {
3969
+ width: 96px;
3970
+ height: 96px;
3971
+ filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));
3972
+ }
3973
+
3974
+ .uvf-shortcut-indicator .uvf-ki-skip .uvf-ki-skip-num {
3975
+ font-size: 20px;
3976
+ font-weight: 800;
3977
+ }
3978
+
3979
+ /* Icon indicators */
3980
+ .uvf-shortcut-indicator .uvf-ki svg {
3981
+ width: 60px;
3982
+ height: 60px;
3983
+ filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));
3984
+ }
3985
+
3986
+ .uvf-shortcut-indicator .uvf-ki-text {
3987
+ font-size: 17px;
3988
+ font-weight: 600;
3989
+ }
3990
+ }
3991
+
3992
+ /* Mobile landscape - more compact */
3993
+ @media screen and (max-width: 767px) and (orientation: landscape) {
3994
+ .uvf-shortcut-indicator {
3995
+ padding: 14px 20px;
3996
+ max-width: calc(100vw - 80px);
3997
+ }
3998
+
3999
+ .uvf-shortcut-indicator .uvf-ki-volume {
4000
+ flex-direction: row;
4001
+ gap: 12px;
4002
+ }
4003
+
4004
+ .uvf-shortcut-indicator .uvf-ki-vol-icon svg {
4005
+ width: 28px;
4006
+ height: 28px;
4007
+ }
4008
+
4009
+ .uvf-shortcut-indicator .uvf-ki-vol-bar {
4010
+ width: clamp(140px, 50vw, 200px);
4011
+ height: 10px;
4012
+ }
4013
+
4014
+ .uvf-shortcut-indicator .uvf-ki-vol-text {
4015
+ font-size: 18px;
4016
+ }
4017
+ }
4018
+
4019
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
4020
+ /* Tablet optimization */
4021
+ .uvf-shortcut-indicator {
4022
+ padding: 18px 28px;
4023
+ border-radius: 14px;
4024
+ }
4025
+
4026
+ .uvf-shortcut-indicator .uvf-ki-volume {
4027
+ gap: 14px;
4028
+ }
4029
+
4030
+ .uvf-shortcut-indicator .uvf-ki-vol-bar {
4031
+ width: 180px;
4032
+ height: 10px;
4033
+ }
4034
+
4035
+ .uvf-shortcut-indicator .uvf-ki-vol-icon svg {
4036
+ width: 34px;
4037
+ height: 34px;
4038
+ }
4039
+
4040
+ .uvf-shortcut-indicator .uvf-ki-vol-text {
4041
+ font-size: 18px;
4042
+ font-weight: 600;
4043
+ }
4044
+ }
4045
+
3882
4046
  /* Hide top bar when no cursor */
3883
4047
  .uvf-player-wrapper.no-cursor .uvf-top-bar {
3884
4048
  opacity: 0 !important;
@@ -5349,8 +5513,16 @@ export class WebPlayer extends BasePlayer {
5349
5513
  this.debugLog('Center play button shown - video ended');
5350
5514
  }
5351
5515
  });
5352
- skipBackBtn?.addEventListener('click', () => this.seek(this.video.currentTime - 10));
5353
- skipForwardBtn?.addEventListener('click', () => this.seek(this.video.currentTime + 10));
5516
+ skipBackBtn?.addEventListener('click', () => {
5517
+ if (this.video && !isNaN(this.video.duration)) {
5518
+ this.seek(Math.max(0, this.video.currentTime - 10));
5519
+ }
5520
+ });
5521
+ skipForwardBtn?.addEventListener('click', () => {
5522
+ if (this.video && !isNaN(this.video.duration)) {
5523
+ this.seek(Math.min(this.video.duration, this.video.currentTime + 10));
5524
+ }
5525
+ });
5354
5526
  volumeBtn?.addEventListener('click', (e) => {
5355
5527
  e.stopPropagation();
5356
5528
  this.toggleMuteAction();
@@ -5392,12 +5564,12 @@ export class WebPlayer extends BasePlayer {
5392
5564
  this.handleVolumeChange(e);
5393
5565
  });
5394
5566
  progressBar?.addEventListener('click', (e) => {
5395
- this.handleProgressChange(e);
5567
+ this.seekToPosition(e);
5396
5568
  });
5397
5569
  progressBar?.addEventListener('mousedown', (e) => {
5398
5570
  this.isDragging = true;
5399
5571
  this.showTimeTooltip = true;
5400
- this.handleProgressChange(e);
5572
+ this.seekToPosition(e);
5401
5573
  this.updateTimeTooltip(e);
5402
5574
  });
5403
5575
  progressBar?.addEventListener('mouseenter', () => {
@@ -5418,14 +5590,18 @@ export class WebPlayer extends BasePlayer {
5418
5590
  e.preventDefault();
5419
5591
  this.isDragging = true;
5420
5592
  const touch = e.touches[0];
5421
- this.handleProgressChange(touch);
5593
+ const mouseEvent = new MouseEvent('mousedown', {
5594
+ clientX: touch.clientX,
5595
+ clientY: touch.clientY
5596
+ });
5597
+ this.seekToPosition(mouseEvent);
5422
5598
  }, { passive: false });
5423
5599
  document.addEventListener('mousemove', (e) => {
5424
5600
  if (this.isVolumeSliding) {
5425
5601
  this.handleVolumeChange(e);
5426
5602
  }
5427
5603
  if (this.isDragging && progressBar) {
5428
- this.handleProgressChange(e);
5604
+ this.seekToPosition(e);
5429
5605
  this.updateTimeTooltip(e);
5430
5606
  }
5431
5607
  });
@@ -5433,7 +5609,11 @@ export class WebPlayer extends BasePlayer {
5433
5609
  if (this.isDragging && progressBar) {
5434
5610
  e.preventDefault();
5435
5611
  const touch = e.touches[0];
5436
- this.handleProgressChange(touch);
5612
+ const mouseEvent = new MouseEvent('mousemove', {
5613
+ clientX: touch.clientX,
5614
+ clientY: touch.clientY
5615
+ });
5616
+ this.seekToPosition(mouseEvent);
5437
5617
  }
5438
5618
  }, { passive: false });
5439
5619
  document.addEventListener('mouseup', () => {
@@ -5692,14 +5872,18 @@ export class WebPlayer extends BasePlayer {
5692
5872
  case 'ArrowLeft':
5693
5873
  e.preventDefault();
5694
5874
  e.stopImmediatePropagation();
5695
- this.seek(Math.max(0, this.video.currentTime - 10));
5696
- shortcutText = '-10s';
5875
+ if (this.video && !isNaN(this.video.duration)) {
5876
+ this.seek(Math.max(0, this.video.currentTime - 10));
5877
+ shortcutText = '-10s';
5878
+ }
5697
5879
  break;
5698
5880
  case 'ArrowRight':
5699
5881
  e.preventDefault();
5700
5882
  e.stopImmediatePropagation();
5701
- this.seek(Math.min(this.video.duration, this.video.currentTime + 10));
5702
- shortcutText = '+10s';
5883
+ if (this.video && !isNaN(this.video.duration)) {
5884
+ this.seek(Math.min(this.video.duration, this.video.currentTime + 10));
5885
+ shortcutText = '+10s';
5886
+ }
5703
5887
  break;
5704
5888
  case 'ArrowUp':
5705
5889
  e.preventDefault();
@@ -5765,8 +5949,8 @@ export class WebPlayer extends BasePlayer {
5765
5949
  case '8':
5766
5950
  case '9':
5767
5951
  e.preventDefault();
5768
- const percent = parseInt(e.key) * 10;
5769
- if (this.video) {
5952
+ if (this.video && !isNaN(this.video.duration) && this.video.duration > 0) {
5953
+ const percent = parseInt(e.key) * 10;
5770
5954
  this.video.currentTime = (this.video.duration * percent) / 100;
5771
5955
  shortcutText = `${percent}%`;
5772
5956
  }
@@ -6038,7 +6222,7 @@ export class WebPlayer extends BasePlayer {
6038
6222
  try {
6039
6223
  this.requestPause();
6040
6224
  if (fromSeek || ((this.video.currentTime || 0) > lim)) {
6041
- this.video.currentTime = Math.max(0, lim - 0.1);
6225
+ this.safeSetCurrentTime(lim - 0.1);
6042
6226
  }
6043
6227
  }
6044
6228
  catch (_) { }
@@ -6192,16 +6376,25 @@ export class WebPlayer extends BasePlayer {
6192
6376
  this.video.muted = false;
6193
6377
  }
6194
6378
  }
6195
- handleProgressChange(e) {
6196
- const progressBar = document.getElementById('uvf-progress-bar');
6379
+ seekToPosition(e) {
6380
+ const progressBar = document.querySelector('.uvf-progress-bar');
6197
6381
  const progressFilled = document.getElementById('uvf-progress-filled');
6198
6382
  const progressHandle = document.getElementById('uvf-progress-handle');
6199
6383
  if (!progressBar || !this.video)
6200
6384
  return;
6385
+ const duration = this.video.duration;
6386
+ if (!isFinite(duration) || isNaN(duration) || duration <= 0) {
6387
+ this.debugWarn('Invalid video duration, cannot seek via progress bar');
6388
+ return;
6389
+ }
6201
6390
  const rect = progressBar.getBoundingClientRect();
6202
6391
  const x = Math.max(0, Math.min(e.clientX - rect.left, rect.width));
6203
6392
  const percent = (x / rect.width) * 100;
6204
- const time = (percent / 100) * this.video.duration;
6393
+ const time = (percent / 100) * duration;
6394
+ if (!isFinite(time) || isNaN(time)) {
6395
+ this.debugWarn('Calculated seek time is invalid:', time);
6396
+ return;
6397
+ }
6205
6398
  if (progressFilled) {
6206
6399
  progressFilled.style.width = percent + '%';
6207
6400
  }
@@ -6380,14 +6573,20 @@ export class WebPlayer extends BasePlayer {
6380
6573
  const tapPosition = tapX - wrapperRect.left;
6381
6574
  const wrapperWidth = wrapperRect.width;
6382
6575
  const isLeftSide = tapPosition < wrapperWidth / 2;
6576
+ const currentTime = this.video.currentTime;
6577
+ const duration = this.video.duration;
6578
+ if (!isFinite(currentTime) || isNaN(currentTime) || !isFinite(duration) || isNaN(duration)) {
6579
+ this.debugWarn('Invalid video time values, skipping double-tap action');
6580
+ return;
6581
+ }
6383
6582
  if (isLeftSide) {
6384
- const newTime = Math.max(0, this.video.currentTime - SKIP_SECONDS);
6583
+ const newTime = Math.max(0, currentTime - SKIP_SECONDS);
6385
6584
  this.seek(newTime);
6386
6585
  this.showShortcutIndicator(`-${SKIP_SECONDS}s`);
6387
6586
  this.debugLog('Double tap left - skip backward');
6388
6587
  }
6389
6588
  else {
6390
- const newTime = Math.min(this.video.duration, this.video.currentTime + SKIP_SECONDS);
6589
+ const newTime = Math.min(duration, currentTime + SKIP_SECONDS);
6391
6590
  this.seek(newTime);
6392
6591
  this.showShortcutIndicator(`+${SKIP_SECONDS}s`);
6393
6592
  this.debugLog('Double tap right - skip forward');
@@ -6435,8 +6634,11 @@ export class WebPlayer extends BasePlayer {
6435
6634
  return;
6436
6635
  this.fastBackwardInterval = setInterval(() => {
6437
6636
  if (this.video) {
6438
- const newTime = Math.max(0, this.video.currentTime - 0.1);
6439
- this.video.currentTime = newTime;
6637
+ const currentTime = this.video.currentTime;
6638
+ if (isFinite(currentTime) && !isNaN(currentTime)) {
6639
+ const newTime = Math.max(0, currentTime - 0.1);
6640
+ this.safeSetCurrentTime(newTime);
6641
+ }
6440
6642
  }
6441
6643
  }, 50);
6442
6644
  }
@@ -6842,8 +7044,8 @@ export class WebPlayer extends BasePlayer {
6842
7044
  return;
6843
7045
  }
6844
7046
  const chapter = this.coreChapterManager.seekToChapter(chapterId);
6845
- if (chapter) {
6846
- this.video.currentTime = chapter.startTime;
7047
+ if (chapter && isFinite(chapter.startTime) && !isNaN(chapter.startTime)) {
7048
+ this.safeSetCurrentTime(chapter.startTime);
6847
7049
  this.debugLog('Seeked to chapter:', chapter.title);
6848
7050
  }
6849
7051
  }
@@ -7495,17 +7697,9 @@ export class WebPlayer extends BasePlayer {
7495
7697
  item.classList.remove('expanded');
7496
7698
  });
7497
7699
  }
7498
- if (this.isMobileDevice()) {
7499
- setTimeout(() => {
7500
- this.hideSettingsMenu();
7501
- }, 300);
7502
- }
7503
- else {
7504
- setTimeout(() => {
7505
- this.generateAccordionMenu();
7506
- this.setupSettingsEventListeners();
7507
- }, 100);
7508
- }
7700
+ setTimeout(() => {
7701
+ this.hideSettingsMenu();
7702
+ }, 200);
7509
7703
  }
7510
7704
  updateSettingsActiveStates(className, activeElement) {
7511
7705
  const settingsMenu = document.getElementById('uvf-settings-menu');
@@ -8030,12 +8224,12 @@ export class WebPlayer extends BasePlayer {
8030
8224
  }
8031
8225
  }
8032
8226
  if (this.video && !this.video.paused && !this.paymentSuccessful) {
8033
- this.debugWarn('Unauthorized playbook detected, pausing video');
8227
+ this.debugWarn('Unauthorized playback detected, pausing video');
8034
8228
  try {
8035
8229
  this.video.pause();
8036
8230
  const freeDuration = Number(this.config.freeDuration || 0);
8037
- if (freeDuration > 0) {
8038
- this.video.currentTime = Math.max(0, freeDuration - 1);
8231
+ if (freeDuration > 0 && isFinite(freeDuration)) {
8232
+ this.safeSetCurrentTime(freeDuration - 1);
8039
8233
  }
8040
8234
  }
8041
8235
  catch (_) { }
@@ -8046,7 +8240,7 @@ export class WebPlayer extends BasePlayer {
8046
8240
  this.debugError('Security violation detected - disabling video');
8047
8241
  if (this.video) {
8048
8242
  this.video.pause();
8049
- this.video.currentTime = 0;
8243
+ this.safeSetCurrentTime(0);
8050
8244
  this.video.src = '';
8051
8245
  this.video.style.display = 'none';
8052
8246
  }