@videojs/html 10.0.0-beta.2 → 10.0.0-beta.4

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 (175) hide show
  1. package/cdn/audio-minimal.css +1 -1
  2. package/cdn/audio-minimal.dev.js +197 -126
  3. package/cdn/audio-minimal.dev.js.map +1 -1
  4. package/cdn/audio-minimal.js +5 -5
  5. package/cdn/audio-minimal.js.map +1 -1
  6. package/cdn/audio.css +1 -1
  7. package/cdn/audio.dev.js +191 -120
  8. package/cdn/audio.dev.js.map +1 -1
  9. package/cdn/audio.js +5 -5
  10. package/cdn/audio.js.map +1 -1
  11. package/cdn/background.dev.js +40 -25
  12. package/cdn/background.dev.js.map +1 -1
  13. package/cdn/background.js +4 -4
  14. package/cdn/background.js.map +1 -1
  15. package/cdn/media/hls-video.dev.js +0 -1
  16. package/cdn/media/hls-video.dev.js.map +1 -1
  17. package/cdn/media/hls-video.js +1 -1
  18. package/cdn/media/hls-video.js.map +1 -1
  19. package/cdn/media/simple-hls-video.dev.js +178 -158
  20. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  21. package/cdn/media/simple-hls-video.js +1 -1
  22. package/cdn/media/simple-hls-video.js.map +1 -1
  23. package/cdn/video-minimal.css +1 -1
  24. package/cdn/video-minimal.dev.js +220 -161
  25. package/cdn/video-minimal.dev.js.map +1 -1
  26. package/cdn/video-minimal.js +5 -5
  27. package/cdn/video-minimal.js.map +1 -1
  28. package/cdn/video.css +1 -1
  29. package/cdn/video.dev.js +217 -158
  30. package/cdn/video.dev.js.map +1 -1
  31. package/cdn/video.js +4 -4
  32. package/cdn/video.js.map +1 -1
  33. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  34. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  35. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  36. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  37. package/dist/default/_virtual/inline-css_src/define/base.js +6 -0
  38. package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -0
  39. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  40. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  41. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  42. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  43. package/dist/default/define/audio/minimal-skin.css +8 -2
  44. package/dist/default/define/audio/minimal-skin.js +2 -1
  45. package/dist/default/define/audio/minimal-skin.js.map +1 -1
  46. package/dist/default/define/audio/minimal-skin.tailwind.js +5 -2
  47. package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
  48. package/dist/default/define/audio/skin.css +7 -5
  49. package/dist/default/define/audio/skin.js +2 -1
  50. package/dist/default/define/audio/skin.js.map +1 -1
  51. package/dist/default/define/audio/skin.tailwind.js +5 -2
  52. package/dist/default/define/audio/skin.tailwind.js.map +1 -1
  53. package/dist/default/define/base.css +25 -0
  54. package/dist/default/define/shared.css +3 -0
  55. package/dist/default/define/skin-mixin.js +10 -18
  56. package/dist/default/define/skin-mixin.js.map +1 -1
  57. package/dist/default/define/video/minimal-skin.css +35 -73
  58. package/dist/default/define/video/minimal-skin.js +2 -1
  59. package/dist/default/define/video/minimal-skin.js.map +1 -1
  60. package/dist/default/define/video/minimal-skin.tailwind.js +4 -4
  61. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  62. package/dist/default/define/video/skin.css +32 -71
  63. package/dist/default/define/video/skin.js +2 -1
  64. package/dist/default/define/video/skin.js.map +1 -1
  65. package/dist/default/define/video/skin.tailwind.js +5 -4
  66. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  67. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
  68. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  69. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  70. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  71. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  72. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  73. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
  74. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  75. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
  76. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  77. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  78. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  79. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
  80. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  81. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
  82. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  83. package/dist/default/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
  84. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  85. package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
  86. package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
  87. package/dist/default/store/container-mixin.js +22 -10
  88. package/dist/default/store/container-mixin.js.map +1 -1
  89. package/dist/default/ui/tooltip/tooltip-group-element.js +4 -1
  90. package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
  91. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  92. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  93. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  94. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  95. package/dist/dev/_virtual/inline-css_src/define/base.js +6 -0
  96. package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -0
  97. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  98. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  99. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  100. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  101. package/dist/dev/define/audio/minimal-skin.css +8 -2
  102. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  103. package/dist/dev/define/audio/minimal-skin.js +67 -64
  104. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  105. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
  106. package/dist/dev/define/audio/minimal-skin.tailwind.js +71 -66
  107. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
  108. package/dist/dev/define/audio/skin.css +7 -5
  109. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  110. package/dist/dev/define/audio/skin.js +59 -56
  111. package/dist/dev/define/audio/skin.js.map +1 -1
  112. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
  113. package/dist/dev/define/audio/skin.tailwind.js +64 -59
  114. package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
  115. package/dist/dev/define/base.css +25 -0
  116. package/dist/dev/define/shared.css +3 -0
  117. package/dist/dev/define/skin-mixin.d.ts +2 -2
  118. package/dist/dev/define/skin-mixin.d.ts.map +1 -1
  119. package/dist/dev/define/skin-mixin.js +10 -32
  120. package/dist/dev/define/skin-mixin.js.map +1 -1
  121. package/dist/dev/define/video/minimal-skin.css +35 -73
  122. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  123. package/dist/dev/define/video/minimal-skin.js +92 -101
  124. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  125. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  126. package/dist/dev/define/video/minimal-skin.tailwind.js +98 -108
  127. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  128. package/dist/dev/define/video/skin.css +32 -71
  129. package/dist/dev/define/video/skin.d.ts.map +1 -1
  130. package/dist/dev/define/video/skin.js +82 -91
  131. package/dist/dev/define/video/skin.js.map +1 -1
  132. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  133. package/dist/dev/define/video/skin.tailwind.js +93 -102
  134. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  135. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
  136. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  137. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  138. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  139. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  140. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  141. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
  142. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  143. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
  144. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  145. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  146. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  147. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
  148. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  149. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
  150. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  151. package/dist/dev/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
  152. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  153. package/dist/{default/skins/dist/default/minimal/tailwind/components → dev/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
  154. package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
  155. package/dist/dev/store/container-mixin.js +22 -10
  156. package/dist/dev/store/container-mixin.js.map +1 -1
  157. package/dist/dev/ui/tooltip/tooltip-group-element.js +4 -1
  158. package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
  159. package/package.json +7 -7
  160. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  161. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
  162. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  163. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +0 -15
  164. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
  165. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  166. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  167. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
  168. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  169. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  170. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +0 -15
  171. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
  172. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  173. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  174. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
  175. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
@@ -473,14 +473,11 @@ const controlsFeature = definePlayerFeature({
473
473
  pointerDownTime = Date.now();
474
474
  }
475
475
  function onPointerUp(event) {
476
- if (event.pointerType === "touch" && Date.now() - pointerDownTime < TAP_THRESHOLD) if (get().controlsVisible) {
477
- clearIdle();
478
- set({
479
- userActive: false,
480
- controlsVisible: computeVisible(false)
481
- });
476
+ if (event.pointerType === "touch" && Date.now() - pointerDownTime < TAP_THRESHOLD) {
477
+ const isMediaOrContainer = [media, container].includes(event.target);
478
+ if (get().controlsVisible && isMediaOrContainer) setInactive();
479
+ else setActive();
482
480
  } else setActive();
483
- else setActive();
484
481
  }
485
482
  function onPlaybackChange() {
486
483
  const { userActive } = get();
@@ -492,7 +489,7 @@ const controlsFeature = definePlayerFeature({
492
489
  listen(container, "pointerup", onPointerUp, { signal });
493
490
  listen(container, "keyup", setActive, { signal });
494
491
  listen(container, "focusin", setActive, { signal });
495
- listen(container, "pointerleave", setInactive, { signal });
492
+ listen(container, "mouseleave", setInactive, { signal });
496
493
  listen(media, "play", onPlaybackChange, { signal });
497
494
  listen(media, "pause", onPlaybackChange, { signal });
498
495
  listen(media, "ended", onPlaybackChange, { signal });
@@ -584,6 +581,10 @@ async function exitFullscreen() {
584
581
 
585
582
  //#endregion
586
583
  //#region ../core/dist/dev/dom/presentation/pip.js
584
+ function resolveMediaTarget(media) {
585
+ const target = media.target;
586
+ return target instanceof HTMLMediaElement ? target : media;
587
+ }
587
588
  /**
588
589
  * Check if Picture-in-Picture is supported on this platform.
589
590
  *
@@ -601,8 +602,9 @@ function isPictureInPictureEnabled() {
601
602
  * Check if Picture-in-Picture is currently active for a media element.
602
603
  */
603
604
  function isPictureInPictureElement(media) {
604
- if (document.pictureInPictureElement === media) return true;
605
- return media.webkitPresentationMode === "picture-in-picture";
605
+ const target = resolveMediaTarget(media);
606
+ if (document.pictureInPictureElement === target) return true;
607
+ return target.webkitPresentationMode === "picture-in-picture";
606
608
  }
607
609
  /**
608
610
  * Request Picture-in-Picture mode.
@@ -611,7 +613,7 @@ function isPictureInPictureElement(media) {
611
613
  * WebKit presentation mode.
612
614
  */
613
615
  async function requestPictureInPicture(media) {
614
- const video = media;
616
+ const video = resolveMediaTarget(media);
615
617
  if (isFunction(video.requestPictureInPicture)) {
616
618
  await video.requestPictureInPicture();
617
619
  return;
@@ -629,13 +631,14 @@ async function requestPictureInPicture(media) {
629
631
  * WebKit presentation mode.
630
632
  */
631
633
  async function exitPictureInPicture(media) {
632
- if (document.pictureInPictureElement && isFunction(document.exitPictureInPicture)) {
634
+ if (isFunction(document.exitPictureInPicture)) try {
633
635
  await document.exitPictureInPicture();
634
636
  return;
635
- }
637
+ } catch {}
636
638
  if (media) {
637
- const video = media;
638
- if (video.webkitPresentationMode === "picture-in-picture" && isFunction(video.webkitSetPresentationMode)) {
639
+ const video = resolveMediaTarget(media);
640
+ const mode = video.webkitPresentationMode;
641
+ if (isFunction(video.webkitSetPresentationMode) && (!mode || mode === "picture-in-picture")) {
639
642
  video.webkitSetPresentationMode("inline");
640
643
  return;
641
644
  }
@@ -1295,13 +1298,13 @@ function createContainerMixin(context) {
1295
1298
  connectedCallback() {
1296
1299
  super.connectedCallback();
1297
1300
  this.#observer = new MutationObserver((records) => {
1298
- if (records.some(hasMediaNode)) this.#attachMedia();
1301
+ if (records.some(hasMediaElement)) this.#attachMedia();
1299
1302
  });
1300
1303
  this.#observer.observe(this, {
1301
1304
  childList: true,
1302
1305
  subtree: true,
1303
1306
  attributes: true,
1304
- attributeFilter: ["data-media-element"]
1307
+ attributeFilter: ["name"]
1305
1308
  });
1306
1309
  this.addEventListener("slotchange", this.#onSlotChange);
1307
1310
  this.#attachMedia();
@@ -1319,18 +1322,24 @@ function createContainerMixin(context) {
1319
1322
  #getSlottedMedia() {
1320
1323
  const slot = this.querySelector("slot[name=\"media\"]");
1321
1324
  if (!slot) return null;
1322
- for (const el of slot.assignedElements({ flatten: true })) if (el instanceof HTMLMediaElement) return el;
1325
+ for (const el of slot.assignedElements({ flatten: true })) if (isMediaElement(el)) return el;
1326
+ return null;
1327
+ }
1328
+ #findMediaElement() {
1329
+ const media = Array.from(this.children).find(isMediaElement);
1330
+ if (media) return media;
1323
1331
  return null;
1324
1332
  }
1325
1333
  #attachMedia() {
1326
1334
  const store = this.#contextStore ?? this.store;
1327
1335
  if (!store) return;
1328
- const media = this.querySelector("video, audio, [data-media-element]") ?? this.#getSlottedMedia();
1336
+ const media = this.querySelector("video, audio") ?? this.#findMediaElement() ?? this.#getSlottedMedia();
1329
1337
  if (!media) {
1330
1338
  this.#detach();
1331
1339
  this.#detach = noop;
1332
1340
  return;
1333
1341
  }
1342
+ if (isCustomMediaElement(media)) globalThis.customElements?.upgrade?.(media);
1334
1343
  const target = {
1335
1344
  media,
1336
1345
  container: this
@@ -1345,13 +1354,19 @@ function createContainerMixin(context) {
1345
1354
  return PlayerContainerElement;
1346
1355
  };
1347
1356
  }
1348
- function isMediaNode(node) {
1349
- return node instanceof HTMLMediaElement || node instanceof Element && node.hasAttribute("data-media-element");
1357
+ function isMediaElement(node) {
1358
+ return node instanceof HTMLMediaElement || isCustomMediaElement(node);
1359
+ }
1360
+ function isCustomMediaElement(node) {
1361
+ return node instanceof HTMLElement && (node.localName.endsWith("-audio") || node.localName.endsWith("-video"));
1362
+ }
1363
+ function isMediaSlotElement(node) {
1364
+ return node instanceof HTMLSlotElement && node.name === "media";
1350
1365
  }
1351
- function hasMediaNode(record) {
1352
- if (record.type === "attributes" && record.target instanceof Element) return record.target.hasAttribute("data-media-element");
1353
- for (const node of record.addedNodes) if (isMediaNode(node)) return true;
1354
- for (const node of record.removedNodes) if (isMediaNode(node)) return true;
1366
+ function hasMediaElement(record) {
1367
+ if (isMediaSlotElement(record.target)) return true;
1368
+ for (const node of record.addedNodes) if (isMediaElement(node) || isMediaSlotElement(node)) return true;
1369
+ for (const node of record.removedNodes) if (isMediaElement(node) || isMediaSlotElement(node)) return true;
1355
1370
  return false;
1356
1371
  }
1357
1372