vidply 1.0.33 → 1.0.35

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 (64) hide show
  1. package/dist/dev/{vidply.HLSRenderer-LIFBU6UD.js → vidply.HLSRenderer-YGWCAICA.js} +3 -3
  2. package/dist/dev/{vidply.HTML5Renderer-YWMVYWFS.js → vidply.HTML5Renderer-PMNFHAKW.js} +3 -3
  3. package/dist/dev/{vidply.SoundCloudRenderer-CD7VJKNS.js → vidply.SoundCloudRenderer-HCMKXHSX.js} +2 -4
  4. package/dist/dev/vidply.SoundCloudRenderer-HCMKXHSX.js.map +7 -0
  5. package/dist/dev/{vidply.TranscriptManager-R7NJRU7E.js → vidply.TranscriptManager-EIIN5YOF.js} +3 -3
  6. package/dist/dev/{vidply.VimeoRenderer-VPH4RNES.js → vidply.VimeoRenderer-SLEBCZTT.js} +2 -3
  7. package/dist/dev/vidply.VimeoRenderer-SLEBCZTT.js.map +7 -0
  8. package/dist/dev/{vidply.YouTubeRenderer-6MGKEFTZ.js → vidply.YouTubeRenderer-E6F4UGVF.js} +2 -3
  9. package/dist/dev/vidply.YouTubeRenderer-E6F4UGVF.js.map +7 -0
  10. package/dist/dev/{vidply.chunk-PMRKJBGH.js → vidply.chunk-AXXU22HR.js} +92 -15
  11. package/dist/dev/{vidply.chunk-PMRKJBGH.js.map → vidply.chunk-AXXU22HR.js.map} +2 -2
  12. package/dist/dev/{vidply.chunk-UVO24MXU.js → vidply.chunk-IIN4G4UQ.js} +2 -2
  13. package/dist/dev/{vidply.de-CEGBLV67.js → vidply.de-YBEYEXBL.js} +2 -2
  14. package/dist/dev/{vidply.es-2QCQKZ4U.js → vidply.es-QA4YSA5S.js} +2 -2
  15. package/dist/dev/vidply.esm.js +56 -68
  16. package/dist/dev/vidply.esm.js.map +2 -2
  17. package/dist/dev/{vidply.fr-FJAZRL4L.js → vidply.fr-LAM3XJZI.js} +2 -2
  18. package/dist/dev/{vidply.ja-2XQOW53T.js → vidply.ja-FTBFZD66.js} +2 -2
  19. package/dist/legacy/vidply.js +142 -74
  20. package/dist/legacy/vidply.js.map +3 -3
  21. package/dist/legacy/vidply.min.js +2 -2
  22. package/dist/legacy/vidply.min.meta.json +20 -20
  23. package/dist/prod/{vidply.HLSRenderer-ESR6NAMI.min.js → vidply.HLSRenderer-D2KTBEEI.min.js} +2 -2
  24. package/dist/prod/{vidply.HTML5Renderer-6ROXQSQY.min.js → vidply.HTML5Renderer-ZSV6PDOH.min.js} +2 -2
  25. package/dist/prod/vidply.SoundCloudRenderer-D2FNOEG6.min.js +6 -0
  26. package/dist/prod/{vidply.TranscriptManager-B65LKXGG.min.js → vidply.TranscriptManager-VXCTCJ7X.min.js} +2 -2
  27. package/dist/prod/vidply.VimeoRenderer-QELFZVDU.min.js +6 -0
  28. package/dist/prod/vidply.YouTubeRenderer-ZL6YUHTF.min.js +6 -0
  29. package/dist/prod/{vidply.chunk-7HVHEUHH.min.js → vidply.chunk-SQVOYVKH.min.js} +1 -1
  30. package/dist/prod/{vidply.chunk-IQKD4GUB.min.js → vidply.chunk-Z6BHMOGK.min.js} +2 -2
  31. package/dist/prod/{vidply.de-IHKC573T.min.js → vidply.de-WCUZUF3T.min.js} +1 -1
  32. package/dist/prod/{vidply.es-3IJCQLJ7.min.js → vidply.es-54CIIDMO.min.js} +1 -1
  33. package/dist/prod/vidply.esm.min.js +4 -4
  34. package/dist/prod/{vidply.fr-NC4VEAPH.min.js → vidply.fr-7FYGFFK2.min.js} +1 -1
  35. package/dist/prod/{vidply.ja-4ZC6ZQLV.min.js → vidply.ja-E4UTAURP.min.js} +1 -1
  36. package/dist/vidply.css +219 -109
  37. package/dist/vidply.esm.min.meta.json +50 -50
  38. package/dist/vidply.min.css +2 -2
  39. package/package.json +3 -3
  40. package/src/controls/ControlBar.js +3 -0
  41. package/src/controls/KeyboardManager.js +19 -0
  42. package/src/core/Player.js +1 -64
  43. package/src/core/SignLanguageManager.js +18 -4
  44. package/src/features/PlaylistManager.js +31 -19
  45. package/src/index.js +3 -1
  46. package/src/renderers/SoundCloudRenderer.js +0 -2
  47. package/src/renderers/VimeoRenderer.js +0 -1
  48. package/src/renderers/YouTubeRenderer.js +0 -1
  49. package/src/styles/vidply.css +218 -108
  50. package/src/utils/DraggableResizable.js +123 -12
  51. package/dist/dev/vidply.SoundCloudRenderer-CD7VJKNS.js.map +0 -7
  52. package/dist/dev/vidply.VimeoRenderer-VPH4RNES.js.map +0 -7
  53. package/dist/dev/vidply.YouTubeRenderer-6MGKEFTZ.js.map +0 -7
  54. package/dist/prod/vidply.SoundCloudRenderer-MOR2CUFH.min.js +0 -6
  55. package/dist/prod/vidply.VimeoRenderer-3HBMM2WR.min.js +0 -6
  56. package/dist/prod/vidply.YouTubeRenderer-MFC2GMAC.min.js +0 -6
  57. /package/dist/dev/{vidply.HLSRenderer-LIFBU6UD.js.map → vidply.HLSRenderer-YGWCAICA.js.map} +0 -0
  58. /package/dist/dev/{vidply.HTML5Renderer-YWMVYWFS.js.map → vidply.HTML5Renderer-PMNFHAKW.js.map} +0 -0
  59. /package/dist/dev/{vidply.TranscriptManager-R7NJRU7E.js.map → vidply.TranscriptManager-EIIN5YOF.js.map} +0 -0
  60. /package/dist/dev/{vidply.chunk-UVO24MXU.js.map → vidply.chunk-IIN4G4UQ.js.map} +0 -0
  61. /package/dist/dev/{vidply.de-CEGBLV67.js.map → vidply.de-YBEYEXBL.js.map} +0 -0
  62. /package/dist/dev/{vidply.es-2QCQKZ4U.js.map → vidply.es-QA4YSA5S.js.map} +0 -0
  63. /package/dist/dev/{vidply.fr-FJAZRL4L.js.map → vidply.fr-LAM3XJZI.js.map} +0 -0
  64. /package/dist/dev/{vidply.ja-2XQOW53T.js.map → vidply.ja-FTBFZD66.js.map} +0 -0
@@ -972,25 +972,9 @@ export class PlaylistManager {
972
972
  return;
973
973
  }
974
974
 
975
- // Create track artwork element (shows album art/poster for audio playlists)
976
- // Only create for audio players
977
- if (this.player.element.tagName === 'AUDIO') {
978
- this.trackArtworkElement = DOMUtils.createElement('div', {
979
- className: 'vidply-track-artwork',
980
- attributes: {
981
- 'aria-hidden': 'true'
982
- }
983
- });
984
- this.trackArtworkElement.style.display = 'none';
985
-
986
- // Insert before video wrapper
987
- const videoWrapper = this.container.querySelector('.vidply-video-wrapper');
988
- if (videoWrapper) {
989
- this.container.insertBefore(this.trackArtworkElement, videoWrapper);
990
- } else {
991
- this.container.appendChild(this.trackArtworkElement);
992
- }
993
- }
975
+ // Track artwork element (shows album art/poster for audio tracks).
976
+ // Important: in mixed playlists the player may start as <video> and later recreate to <audio>,
977
+ // so we create this lazily in `updateTrackArtwork()` when we actually have an audio element.
994
978
 
995
979
  // Create track info element (shows current track)
996
980
  this.trackInfoElement = DOMUtils.createElement('div', {
@@ -1089,6 +1073,34 @@ export class PlaylistManager {
1089
1073
  * Update track artwork display (for audio playlists)
1090
1074
  */
1091
1075
  updateTrackArtwork(track) {
1076
+ // Only show artwork for audio players.
1077
+ // In mixed playlists we may recreate from <video> -> <audio> later, so ensure the element exists lazily.
1078
+ if (this.player?.element?.tagName !== 'AUDIO') {
1079
+ if (this.trackArtworkElement) {
1080
+ this.trackArtworkElement.style.display = 'none';
1081
+ }
1082
+ return;
1083
+ }
1084
+
1085
+ // Lazily create artwork element once we have an audio element/container.
1086
+ if (!this.trackArtworkElement && this.container) {
1087
+ this.trackArtworkElement = DOMUtils.createElement('div', {
1088
+ className: 'vidply-track-artwork',
1089
+ attributes: {
1090
+ 'aria-hidden': 'true'
1091
+ }
1092
+ });
1093
+ this.trackArtworkElement.style.display = 'none';
1094
+
1095
+ // Insert before video wrapper (if present) for consistent layout.
1096
+ const videoWrapper = this.container.querySelector('.vidply-video-wrapper');
1097
+ if (videoWrapper) {
1098
+ this.container.insertBefore(this.trackArtworkElement, videoWrapper);
1099
+ } else {
1100
+ this.container.appendChild(this.trackArtworkElement);
1101
+ }
1102
+ }
1103
+
1092
1104
  if (!this.trackArtworkElement) return;
1093
1105
 
1094
1106
  // If track has a poster/artwork, show it
package/src/index.js CHANGED
@@ -57,7 +57,9 @@ function parseDataAttributes(dataset) {
57
57
  'keyboard': 'keyboard',
58
58
  'responsive': 'responsive',
59
59
  'pipButton': 'pipButton',
60
- 'fullscreenButton': 'fullscreenButton'
60
+ 'fullscreenButton': 'fullscreenButton',
61
+
62
+ // Layout
61
63
  };
62
64
 
63
65
  // Parse each data attribute
@@ -125,10 +125,8 @@ export class SoundCloudRenderer {
125
125
  // Use different aspect ratio for playlists vs single tracks
126
126
  // Playlists need more height to show the track list
127
127
  if (this.isPlaylist()) {
128
- this.iframe.style.aspectRatio = '16 / 9'; // More height for playlist
129
128
  this.iframe.classList.add('vidply-soundcloud-iframe', 'vidply-soundcloud-playlist');
130
129
  } else {
131
- this.iframe.style.aspectRatio = '16 / 3'; // Banner-like for single track
132
130
  this.iframe.classList.add('vidply-soundcloud-iframe');
133
131
  }
134
132
  this.iframe.style.maxHeight = '100%';
@@ -70,7 +70,6 @@ export class VimeoRenderer {
70
70
  this.iframe = document.createElement('div');
71
71
  this.iframe.id = `vimeo-player-${Math.random().toString(36).substr(2, 9)}`;
72
72
  this.iframe.style.width = '100%';
73
- this.iframe.style.aspectRatio = '16 / 9';
74
73
  this.iframe.style.maxHeight = '100%';
75
74
 
76
75
  this.player.element.parentNode.insertBefore(this.iframe, this.player.element);
@@ -86,7 +86,6 @@ export class YouTubeRenderer {
86
86
  this.iframe = document.createElement('div');
87
87
  this.iframe.id = `youtube-player-${Math.random().toString(36).substr(2, 9)}`;
88
88
  this.iframe.style.width = '100%';
89
- this.iframe.style.aspectRatio = '16 / 9';
90
89
  this.iframe.style.maxHeight = '100%';
91
90
 
92
91
  this.player.element.parentNode.insertBefore(this.iframe, this.player.element);