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

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 (145) hide show
  1. package/cdn/audio-minimal.css +1 -1
  2. package/cdn/audio-minimal.dev.js +16 -8
  3. package/cdn/audio-minimal.dev.js.map +1 -1
  4. package/cdn/audio-minimal.js +2 -2
  5. package/cdn/audio-minimal.js.map +1 -1
  6. package/cdn/audio.css +1 -1
  7. package/cdn/audio.dev.js +16 -8
  8. package/cdn/audio.dev.js.map +1 -1
  9. package/cdn/audio.js +2 -2
  10. package/cdn/audio.js.map +1 -1
  11. package/cdn/media/hls-video.dev.js +11 -9
  12. package/cdn/media/hls-video.dev.js.map +1 -1
  13. package/cdn/media/hls-video.js +11 -9
  14. package/cdn/media/hls-video.js.map +1 -1
  15. package/cdn/media/simple-hls-video.dev.js +11 -9
  16. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  17. package/cdn/media/simple-hls-video.js +11 -9
  18. package/cdn/media/simple-hls-video.js.map +1 -1
  19. package/cdn/video-minimal.css +1 -1
  20. package/cdn/video-minimal.dev.js +24 -8
  21. package/cdn/video-minimal.dev.js.map +1 -1
  22. package/cdn/video-minimal.js +3 -3
  23. package/cdn/video-minimal.js.map +1 -1
  24. package/cdn/video.css +1 -1
  25. package/cdn/video.dev.js +22 -8
  26. package/cdn/video.dev.js.map +1 -1
  27. package/cdn/video.js +3 -3
  28. package/cdn/video.js.map +1 -1
  29. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  30. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  31. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  32. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  33. package/dist/default/_virtual/inline-css_src/define/base.js +1 -1
  34. package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -1
  35. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  36. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  37. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  38. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  39. package/dist/default/define/audio/minimal-skin.css +60 -9
  40. package/dist/default/define/audio/skin.css +60 -11
  41. package/dist/default/define/base.css +10 -12
  42. package/dist/default/define/shared.css +4 -0
  43. package/dist/default/define/video/minimal-skin.css +207 -47
  44. package/dist/default/define/video/minimal-skin.js +1 -1
  45. package/dist/default/define/video/minimal-skin.js.map +1 -1
  46. package/dist/default/define/video/minimal-skin.tailwind.js +2 -2
  47. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  48. package/dist/default/define/video/skin.css +195 -37
  49. package/dist/default/define/video/skin.js +1 -1
  50. package/dist/default/define/video/skin.js.map +1 -1
  51. package/dist/default/define/video/skin.tailwind.js +2 -2
  52. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  53. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  54. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  55. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  56. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  57. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +3 -3
  58. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  59. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  60. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  61. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  62. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  63. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  64. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  65. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  66. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  67. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +17 -12
  68. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  69. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  70. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  71. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  72. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  73. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  74. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  75. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  76. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  77. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  78. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  79. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  80. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  81. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  82. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  83. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +19 -13
  84. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  85. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  86. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  87. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  88. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  89. package/dist/dev/_virtual/inline-css_src/define/base.js +1 -1
  90. package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -1
  91. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  92. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  93. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  94. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  95. package/dist/dev/define/audio/minimal-skin.css +60 -9
  96. package/dist/dev/define/audio/skin.css +60 -11
  97. package/dist/dev/define/base.css +10 -12
  98. package/dist/dev/define/shared.css +4 -0
  99. package/dist/dev/define/video/minimal-skin.css +207 -47
  100. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  101. package/dist/dev/define/video/minimal-skin.js +8 -0
  102. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  103. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  104. package/dist/dev/define/video/minimal-skin.tailwind.js +9 -1
  105. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  106. package/dist/dev/define/video/skin.css +195 -37
  107. package/dist/dev/define/video/skin.d.ts.map +1 -1
  108. package/dist/dev/define/video/skin.js +6 -0
  109. package/dist/dev/define/video/skin.js.map +1 -1
  110. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  111. package/dist/dev/define/video/skin.tailwind.js +7 -1
  112. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  113. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  114. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  115. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  116. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  117. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +3 -3
  118. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  119. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  120. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  121. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  122. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  123. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  124. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  125. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  126. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  127. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +17 -12
  128. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  129. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  130. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  131. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  132. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  133. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  134. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  135. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  136. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  137. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  138. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  139. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  140. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  141. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  142. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  143. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +19 -13
  144. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  145. package/package.json +8 -8
@@ -100,7 +100,6 @@
100
100
  .media-minimal-skin *::before,
101
101
  .media-minimal-skin *::after {
102
102
  box-sizing: border-box;
103
- margin: 0;
104
103
  }
105
104
  .media-minimal-skin img,
106
105
  .media-minimal-skin video,
@@ -151,9 +150,11 @@
151
150
  display: block;
152
151
  width: 100%;
153
152
  height: 100%;
153
+ object-fit: var(--media-object-fit, contain);
154
+ object-position: var(--media-object-position, center);
154
155
  }
155
156
  .media-minimal-skin ::slotted(video) {
156
- border-radius: var(--media-border-radius, 0.75rem);
157
+ border-radius: var(--media-video-border-radius);
157
158
  }
158
159
  .media-minimal-skin video {
159
160
  border-radius: inherit;
@@ -168,10 +169,11 @@
168
169
  inset: 0;
169
170
  width: 100%;
170
171
  height: 100%;
171
- border-radius: inherit;
172
- object-fit: cover;
172
+ object-fit: var(--media-object-fit, contain);
173
+ object-position: var(--media-object-position, center);
173
174
  transition: opacity 0.25s;
174
175
  pointer-events: none;
176
+ border-radius: inherit;
175
177
 
176
178
  &:not([data-visible]) {
177
179
  opacity: 0;
@@ -182,14 +184,10 @@
182
184
  Fullscreen
183
185
  ========================================================================== */
184
186
 
185
- .media-minimal-skin:fullscreen video,
186
187
  .media-minimal-skin:fullscreen ::slotted(video),
187
- .media-minimal-skin > img {
188
+ .media-minimal-skin:fullscreen video {
188
189
  object-fit: contain;
189
190
  }
190
- .media-minimal-skin:fullscreen ::slotted(video) {
191
- border-radius: 0;
192
- }
193
191
 
194
192
  /* ==========================================================================
195
193
  Overlay / Scrim
@@ -202,22 +200,28 @@
202
200
  background-image: linear-gradient(to top, oklch(0 0 0 / 0.7), oklch(0 0 0 / 0.5) 7.5rem, oklch(0 0 0 / 0));
203
201
  backdrop-filter: blur(0) saturate(1.5);
204
202
  opacity: 0;
205
- transition-property: opacity, backdrop-filter;
206
- transition-duration: 500ms;
207
- transition-delay: 500ms;
208
- transition-timing-function: ease-out;
209
203
  pointer-events: none;
210
204
 
211
- @media (prefers-reduced-motion: reduce) {
212
- transition-duration: 100ms;
205
+ @media (pointer: fine) {
206
+ transition-property: opacity, backdrop-filter;
207
+ transition-duration: 500ms;
208
+ transition-delay: 500ms;
209
+ transition-timing-function: ease-out;
210
+
211
+ @media (prefers-reduced-motion: reduce) {
212
+ transition-duration: 100ms;
213
+ }
213
214
  }
214
215
  }
215
216
 
216
217
  .media-minimal-skin .media-controls[data-visible] ~ .media-overlay,
217
218
  .media-minimal-skin .media-error[data-open] ~ .media-overlay {
218
219
  opacity: 1;
219
- transition-duration: 150ms;
220
- transition-delay: 0ms;
220
+
221
+ @media (pointer: fine) {
222
+ transition-duration: 150ms;
223
+ transition-delay: 0ms;
224
+ }
221
225
  }
222
226
 
223
227
  .media-minimal-skin .media-error[data-open] ~ .media-overlay {
@@ -411,6 +415,7 @@
411
415
  transition-timing-function: ease-out;
412
416
  cursor: pointer;
413
417
  user-select: none;
418
+ touch-action: manipulation;
414
419
 
415
420
  &:focus-visible {
416
421
  outline-color: currentColor;
@@ -507,6 +512,54 @@
507
512
  scale: -1 1;
508
513
  }
509
514
 
515
+ /* ==========================================================================
516
+ Media preview
517
+ ========================================================================== */
518
+ .media-minimal-skin .media-preview {
519
+ & .media-preview__thumbnail-wrapper {
520
+ position: relative;
521
+ border-radius: 0.5rem;
522
+ background-color: oklch(0 0 0 / 0.9);
523
+ }
524
+ & .media-preview__thumbnail {
525
+ display: block;
526
+ border-radius: inherit;
527
+ }
528
+
529
+ & .media-preview__timestamp {
530
+ display: block;
531
+ font-variant-numeric: tabular-nums;
532
+ text-align: center;
533
+ margin-top: 0.5rem;
534
+ }
535
+
536
+ & .media-overlay {
537
+ opacity: 1;
538
+ }
539
+
540
+ & .media-preview__spinner {
541
+ position: absolute;
542
+ top: 50%;
543
+ left: 50%;
544
+ transform: translate(-50%, -50%);
545
+ opacity: 0;
546
+ }
547
+
548
+ & .media-preview__thumbnail,
549
+ & .media-preview__spinner {
550
+ transition: opacity 150ms ease-out;
551
+ }
552
+
553
+ &:has(.media-preview__thumbnail[data-loading]) {
554
+ & .media-preview__thumbnail {
555
+ opacity: 0;
556
+ }
557
+ & .media-preview__spinner {
558
+ opacity: 1;
559
+ }
560
+ }
561
+ }
562
+
510
563
  /* ==========================================================================
511
564
  Slider
512
565
  ========================================================================== */
@@ -519,6 +572,7 @@
519
572
  flex: 1;
520
573
  border-radius: calc(infinity * 1px);
521
574
  outline: none;
575
+ cursor: pointer;
522
576
 
523
577
  &[data-orientation="horizontal"] {
524
578
  min-width: 5rem;
@@ -648,11 +702,6 @@
648
702
  }
649
703
  }
650
704
 
651
- /* Time display within slider */
652
- .media-minimal-skin .media-slider__time-display {
653
- font-variant-numeric: tabular-nums;
654
- }
655
-
656
705
  /* ==========================================================================
657
706
  Popups & Animations
658
707
  ========================================================================== */
@@ -664,12 +713,12 @@
664
713
  color: inherit;
665
714
  overflow: visible;
666
715
  transition-property: transform, scale, opacity, filter;
667
- transition-duration: 200ms;
716
+ transition-duration: 150ms;
668
717
 
669
718
  &[data-starting-style],
670
719
  &[data-ending-style] {
671
720
  opacity: 0;
672
- transform: scale(0);
721
+ transform: scale(0.5);
673
722
  filter: blur(8px);
674
723
  }
675
724
 
@@ -689,6 +738,48 @@
689
738
  &[data-side="right"] {
690
739
  transform-origin: left;
691
740
  }
741
+
742
+ /* Safe area between trigger and popup */
743
+ &::before {
744
+ content: "";
745
+ position: absolute;
746
+ pointer-events: inherit;
747
+ }
748
+
749
+ &[data-side="top"]::before,
750
+ &[data-side="bottom"]::before {
751
+ width: 100%;
752
+ inset-inline: 0;
753
+ }
754
+ &[data-side="top"]::before {
755
+ top: 100%;
756
+ }
757
+ &[data-side="bottom"]::before {
758
+ bottom: 100%;
759
+ }
760
+
761
+ &[data-side="left"]::before,
762
+ &[data-side="right"]::before {
763
+ height: 100%;
764
+ inset-block: 0;
765
+ }
766
+ &[data-side="left"]::before {
767
+ left: 100%;
768
+ }
769
+ &[data-side="right"]::before {
770
+ right: 100%;
771
+ }
772
+ }
773
+
774
+ .media-minimal-skin .media-popover {
775
+ &[data-side="top"]::before,
776
+ &[data-side="bottom"]::before {
777
+ height: var(--media-popover-side-offset);
778
+ }
779
+ &[data-side="left"]::before,
780
+ &[data-side="right"]::before {
781
+ width: var(--media-popover-side-offset);
782
+ }
692
783
  }
693
784
 
694
785
  .media-minimal-skin .media-tooltip {
@@ -701,7 +792,16 @@
701
792
  0 2px 4px -2px oklch(0 0 0 / 0.1);
702
793
  font-size: 0.75rem;
703
794
  white-space: nowrap;
704
- --media-tooltip-side-offset: 0.5rem;
795
+ --media-tooltip-side-offset: 0.75rem;
796
+
797
+ &[data-side="top"]::before,
798
+ &[data-side="bottom"]::before {
799
+ height: var(--media-tooltip-side-offset);
800
+ }
801
+ &[data-side="left"]::before,
802
+ &[data-side="right"]::before {
803
+ width: var(--media-tooltip-side-offset);
804
+ }
705
805
 
706
806
  @media (prefers-reduced-transparency: reduce) {
707
807
  background-color: oklch(0 0 0 / 0.7);
@@ -717,6 +817,7 @@
717
817
  ========================================================================== */
718
818
 
719
819
  .media-minimal-skin {
820
+ --media-caption-track-duration: 150ms;
720
821
  --media-caption-track-delay: 600ms;
721
822
  --media-caption-track-y: -0.5rem;
722
823
 
@@ -724,23 +825,21 @@
724
825
  --media-caption-track-delay: 25ms;
725
826
  --media-caption-track-y: -3rem;
726
827
  }
828
+
829
+ @media (prefers-reduced-motion: reduce) {
830
+ --media-caption-track-duration: 50ms;
831
+ }
727
832
  }
728
833
 
729
834
  .media-minimal-skin video::-webkit-media-text-track-container {
730
835
  /* NOTE: The delay must account for the controls delay/duration */
731
- transition: transform 150ms ease-out;
836
+ transition: transform var(--media-caption-track-duration) ease-out;
732
837
  transition-delay: var(--media-caption-track-delay);
733
838
  transform: translateY(var(--media-caption-track-y)) scale(0.98);
734
839
  z-index: 1;
735
840
  font-family: inherit;
736
841
  }
737
842
 
738
- @media (prefers-reduced-motion: reduce) {
739
- .media-minimal-skin video::-webkit-media-text-track-container {
740
- transition-duration: 50ms;
741
- }
742
- }
743
-
744
843
 
745
844
  /* ==========================================================================
746
845
  Root
@@ -749,6 +848,7 @@
749
848
  .media-minimal-skin--video {
750
849
  background: oklch(0 0 0);
751
850
  --media-border-color: oklch(0 0 0 / 0.15);
851
+ --media-video-border-radius: var(--media-border-radius, 0.75rem);
752
852
 
753
853
  @media (prefers-color-scheme: dark) {
754
854
  --media-border-color: oklch(1 0 0 / 0.15);
@@ -767,7 +867,7 @@
767
867
 
768
868
  /* Fullscreen */
769
869
  &:fullscreen {
770
- border-radius: 0;
870
+ --media-border-radius: 0;
771
871
  }
772
872
  }
773
873
 
@@ -782,13 +882,16 @@
782
882
  z-index: 10;
783
883
  gap: 0.5rem;
784
884
  padding: 2rem 0.375rem 0.375rem 0.375rem;
785
- will-change: transform, filter, opacity;
786
- transition-property: transform, filter, opacity;
787
- transition-duration: 75ms;
788
- transition-delay: 0ms;
789
- transition-timing-function: ease-out;
790
885
  color: oklch(1 0 0);
791
886
 
887
+ @media (pointer: fine) {
888
+ will-change: transform, filter, opacity;
889
+ transition-property: transform, filter, opacity;
890
+ transition-duration: 75ms;
891
+ transition-delay: 0ms;
892
+ transition-timing-function: ease-out;
893
+ }
894
+
792
895
  @container media-root (width > 40rem) {
793
896
  gap: 0.875rem;
794
897
  padding: 2.5rem 0.75rem 0.75rem 0.75rem;
@@ -796,21 +899,29 @@
796
899
 
797
900
  &:not([data-visible]) {
798
901
  opacity: 0;
799
- transform: translateY(100%);
800
- filter: blur(8px);
801
- transition-duration: 500ms;
802
- transition-delay: 500ms;
803
902
  pointer-events: none;
804
903
 
805
- @media (prefers-reduced-motion: reduce) {
806
- scale: 1;
807
- transform: translateY(0);
808
- filter: blur(0);
809
- transition-duration: 100ms;
904
+ @media (pointer: fine) {
905
+ transform: translateY(100%);
906
+ filter: blur(8px);
907
+ transition-duration: 500ms;
908
+ transition-delay: 500ms;
909
+
910
+ @media (prefers-reduced-motion: reduce) {
911
+ scale: 1;
912
+ transform: translateY(0);
913
+ filter: blur(0);
914
+ transition-duration: 100ms;
915
+ }
810
916
  }
811
917
  }
812
918
  }
813
919
 
920
+ /* Hide cursor when controls are hidden in fullscreen */
921
+ .media-minimal-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
922
+ cursor: none;
923
+ }
924
+
814
925
  /* ==========================================================================
815
926
  Sliders
816
927
  ========================================================================== */
@@ -829,7 +940,56 @@
829
940
  padding: 0.25rem;
830
941
  }
831
942
 
943
+ /* ==========================================================================
944
+ Slider preview
945
+ ========================================================================== */
946
+
947
+ .media-minimal-skin .media-slider__preview {
948
+ position: absolute;
949
+ left: var(--media-slider-pointer);
950
+ bottom: calc(100% + 0.5rem);
951
+ translate: -50%;
952
+ opacity: 0;
953
+ scale: 0.8;
954
+ filter: blur(8px);
955
+ transition-property: scale, opacity, filter;
956
+ transition-duration: 150ms;
957
+ transform-origin: bottom;
958
+
959
+ & .media-preview__thumbnail-wrapper {
960
+ position: relative;
961
+
962
+ &::after {
963
+ content: "";
964
+ position: absolute;
965
+ inset: 0;
966
+ border-radius: inherit;
967
+ box-shadow:
968
+ 0 0 0 1px oklch(0 0 0 / 0.05),
969
+ 0 1px 3px 0 oklch(0 0 0 / 0.2),
970
+ 0 1px 2px -1px oklch(0 0 0 / 0.2);
971
+ }
972
+ }
973
+
974
+ & .media-preview__thumbnail {
975
+ max-width: 11rem;
976
+ }
977
+
978
+ &:has(.media-preview__thumbnail[data-loading]) {
979
+ max-height: 6rem;
980
+ }
981
+ }
982
+ .media-minimal-skin .media-slider[data-pointing] .media-slider__preview:has([role="img"]:not([data-hidden])) {
983
+ opacity: 1;
984
+ scale: 1;
985
+ filter: blur(0);
986
+ }
987
+
832
988
  media-tooltip-group {
833
989
  display: contents;
834
990
  }
835
991
 
992
+ :host {
993
+ display: grid;
994
+ }
995
+
@@ -21,7 +21,7 @@ import { ReactiveElement } from "@videojs/element";
21
21
  //#region src/define/video/minimal-skin.ts
22
22
  const SEEK_TIME = 10;
23
23
  function getTemplateHTML() {
24
- return `<media-container class="media-minimal-skin media-minimal-skin--video"><slot name="media"></slot><media-buffering-indicator class="media-buffering-indicator"> ${renderIcon("spinner", { class: "media-icon" })} </media-buffering-indicator><media-controls class="media-controls"><media-tooltip-group><div class="media-button-group"><media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play"> ${renderIcon("restart", { class: "media-icon media-icon--restart" })} ${renderIcon("play", { class: "media-icon media-icon--play" })} ${renderIcon("pause", { class: "media-icon media-icon--pause" })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--replay">Replay</span><span class="media-tooltip-label media-tooltip-label--play">Play</span><span class="media-tooltip-label media-tooltip-label--pause">Pause</span></media-tooltip><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon media-icon--flipped" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="media-tooltip"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="media-tooltip"> Seek forward ${SEEK_TIME} seconds </media-tooltip></div><div class="media-time-controls"><media-time-group class="media-time"><media-time type="current" class="media-time__value media-time__value--current"></media-time><media-time-separator class="media-time__separator"></media-time-separator><media-time type="duration" class="media-time__value media-time__value--duration"></media-time></media-time-group><media-time-slider class="media-slider"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill><media-slider-buffer class="media-slider__buffer"></media-slider-buffer></media-slider-track><media-slider-thumb class="media-slider__thumb"></media-slider-thumb></media-time-slider></div><div class="media-button-group"><media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="media-button media-button--icon media-button--mute"> ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })} ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })} ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-popover media-popover--volume"><media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill></media-slider-track><media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb></media-volume-slider></media-popover><media-captions-button commandfor="captions-tooltip" class="media-button media-button--icon media-button--captions"> ${renderIcon("captions-off", { class: "media-icon media-icon--captions-off" })} ${renderIcon("captions-on", { class: "media-icon media-icon--captions-on" })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="media-tooltip"> Toggle captions </media-tooltip><media-pip-button commandfor="pip-tooltip" class="media-button media-button--icon"> ${renderIcon("pip", { class: "media-icon" })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-pip">Enter picture-in-picture</span><span class="media-tooltip-label media-tooltip-label--exit-pip">Exit picture-in-picture</span></media-tooltip><media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--icon media-button--fullscreen"> ${renderIcon("fullscreen-enter", { class: "media-icon media-icon--fullscreen-enter" })} ${renderIcon("fullscreen-exit", { class: "media-icon media-icon--fullscreen-exit" })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-fullscreen">Enter fullscreen</span><span class="media-tooltip-label media-tooltip-label--exit-fullscreen">Exit fullscreen</span></media-tooltip></div></media-tooltip-group></media-controls><div class="media-overlay"></div></media-container>`;
24
+ return `<media-container class="media-minimal-skin media-minimal-skin--video"><slot name="media"></slot><media-buffering-indicator class="media-buffering-indicator"> ${renderIcon("spinner", { class: "media-icon" })} </media-buffering-indicator><media-controls class="media-controls"><media-tooltip-group><div class="media-button-group"><media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play"> ${renderIcon("restart", { class: "media-icon media-icon--restart" })} ${renderIcon("play", { class: "media-icon media-icon--play" })} ${renderIcon("pause", { class: "media-icon media-icon--pause" })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--replay">Replay</span><span class="media-tooltip-label media-tooltip-label--play">Play</span><span class="media-tooltip-label media-tooltip-label--pause">Pause</span></media-tooltip><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon media-icon--flipped" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="media-tooltip"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek"><span class="media-icon__container"> ${renderIcon("seek", { class: "media-icon" })} <span class="media-icon__label">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="media-tooltip"> Seek forward ${SEEK_TIME} seconds </media-tooltip></div><div class="media-time-controls"><media-time-group class="media-time"><media-time type="current" class="media-time__value media-time__value--current"></media-time><media-time-separator class="media-time__separator"></media-time-separator><media-time type="duration" class="media-time__value media-time__value--duration"></media-time></media-time-group><media-time-slider class="media-slider"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill><media-slider-buffer class="media-slider__buffer"></media-slider-buffer></media-slider-track><media-slider-thumb class="media-slider__thumb"></media-slider-thumb><div class="media-preview media-slider__preview"><div class="media-preview__thumbnail-wrapper"><media-slider-thumbnail class="media-preview__thumbnail"></media-slider-thumbnail></div><media-slider-value type="pointer" class="media-preview__timestamp"></media-slider-value> ${renderIcon("spinner", { class: "media-preview__spinner media-icon" })} </div></media-time-slider></div><div class="media-button-group"><media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="media-button media-button--icon media-button--mute"> ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })} ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })} ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-popover media-popover--volume"><media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge"><media-slider-track class="media-slider__track"><media-slider-fill class="media-slider__fill"></media-slider-fill></media-slider-track><media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb></media-volume-slider></media-popover><media-captions-button commandfor="captions-tooltip" class="media-button media-button--icon media-button--captions"> ${renderIcon("captions-off", { class: "media-icon media-icon--captions-off" })} ${renderIcon("captions-on", { class: "media-icon media-icon--captions-on" })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="media-tooltip"> Toggle captions </media-tooltip><media-pip-button commandfor="pip-tooltip" class="media-button media-button--icon"> ${renderIcon("pip", { class: "media-icon" })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-pip">Enter picture-in-picture</span><span class="media-tooltip-label media-tooltip-label--exit-pip">Exit picture-in-picture</span></media-tooltip><media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--icon media-button--fullscreen"> ${renderIcon("fullscreen-enter", { class: "media-icon media-icon--fullscreen-enter" })} ${renderIcon("fullscreen-exit", { class: "media-icon media-icon--fullscreen-exit" })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="media-tooltip"><span class="media-tooltip-label media-tooltip-label--enter-fullscreen">Enter fullscreen</span><span class="media-tooltip-label media-tooltip-label--exit-fullscreen">Exit fullscreen</span></media-tooltip></div></media-tooltip-group></media-controls><div class="media-overlay"></div></media-container>`;
25
25
  }
26
26
  var MinimalVideoSkinElement = class extends SkinMixin(ReactiveElement) {
27
27
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":[],"sources":["../../../../src/define/video/minimal-skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './minimal-skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-minimal-skin media-minimal-skin--video\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </media-buffering-indicator>\n\n <media-controls class=\"media-controls\">\n <media-tooltip-group>\n <div class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"media-time-controls\">\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value media-time__value--current\"></media-time>\n <media-time-separator class=\"media-time__separator\"></media-time-separator>\n <media-time type=\"duration\" class=\"media-time__value media-time__value--duration\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n </media-time-slider>\n </div>\n\n <div class=\"media-button-group\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--icon media-button--captions\">\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle captions\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--icon\">\n ${renderIcon('pip', { class: 'media-icon' })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-pip\">Enter picture-in-picture</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-pip\">Exit picture-in-picture</span>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--icon media-button--fullscreen\">\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-fullscreen\">Enter fullscreen</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-fullscreen\">Exit fullscreen</span>\n </media-tooltip>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinElement.tagName, MinimalVideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinElement.tagName]: MinimalVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB,iKAAA,WAAA,WAAA,EAAA,OAAA,cAAA,CAAA,CAAA,oOAAA,WAAA,WAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,GAAA,WAAA,QAAA,EAAA,OAAA,+BAAA,CAAA,CAAA,GAAA,WAAA,SAAA,EAAA,OAAA,gCAAA,CAAA,CAAA,mYAAA,CAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,mCAAA,UAAA,8HAAA,UAAA,yFAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,cAAA,CAAA,CAAA,mCAAA,UAAA,4HAAA,UAAA,ynCAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,koBAAA,WAAA,gBAAA,EAAA,OAAA,uCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,sNAAA,WAAA,OAAA,EAAA,OAAA,cAAA,CAAA,CAAA,gaAAA,WAAA,oBAAA,EAAA,OAAA,2CAAA,CAAA,CAAA,GAAA,WAAA,mBAAA,EAAA,OAAA,0CAAA,CAAA,CAAA;;;;iBAIK;;;gBACb,aAAqB,qBAAG;;;yBACV;;;AAGxB,eAAe,OAAO,wBAAM,SAAA,wBAAA"}
1
+ {"version":3,"file":"minimal-skin.js","names":[],"sources":["../../../../src/define/video/minimal-skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './minimal-skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-minimal-skin media-minimal-skin--video\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"media-buffering-indicator\">\n ${renderIcon('spinner', { class: 'media-icon' })}\n </media-buffering-indicator>\n\n <media-controls class=\"media-controls\">\n <media-tooltip-group>\n <div class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"media-time-controls\">\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value media-time__value--current\"></media-time>\n <media-time-separator class=\"media-time__separator\"></media-time-separator>\n <media-time type=\"duration\" class=\"media-time__value media-time__value--duration\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n\n <div class=\"media-preview media-slider__preview\">\n <div class=\"media-preview__thumbnail-wrapper\">\n <media-slider-thumbnail class=\"media-preview__thumbnail\"></media-slider-thumbnail>\n </div>\n <media-slider-value type=\"pointer\" class=\"media-preview__timestamp\"></media-slider-value>\n ${renderIcon('spinner', { class: 'media-preview__spinner media-icon' })}\n </div>\n </media-time-slider>\n </div>\n\n <div class=\"media-button-group\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\"></media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <media-captions-button commandfor=\"captions-tooltip\" class=\"media-button media-button--icon media-button--captions\">\n ${renderIcon('captions-off', { class: 'media-icon media-icon--captions-off' })}\n ${renderIcon('captions-on', { class: 'media-icon media-icon--captions-on' })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle captions\n </media-tooltip>\n\n <media-pip-button commandfor=\"pip-tooltip\" class=\"media-button media-button--icon\">\n ${renderIcon('pip', { class: 'media-icon' })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-pip\">Enter picture-in-picture</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-pip\">Exit picture-in-picture</span>\n </media-tooltip>\n\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"media-button media-button--icon media-button--fullscreen\">\n ${renderIcon('fullscreen-enter', { class: 'media-icon media-icon--fullscreen-enter' })}\n ${renderIcon('fullscreen-exit', { class: 'media-icon media-icon--fullscreen-exit' })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--enter-fullscreen\">Enter fullscreen</span>\n <span class=\"media-tooltip-label media-tooltip-label--exit-fullscreen\">Exit fullscreen</span>\n </media-tooltip>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"media-overlay\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinElement.tagName, MinimalVideoSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinElement.tagName]: MinimalVideoSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB,iKAAA,WAAA,WAAA,EAAA,OAAA,cAAA,CAAA,CAAA,oOAAA,WAAA,WAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,GAAA,WAAA,QAAA,EAAA,OAAA,+BAAA,CAAA,CAAA,GAAA,WAAA,SAAA,EAAA,OAAA,gCAAA,CAAA,CAAA,mYAAA,CAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,kCAAA,CAAA,CAAA,mCAAA,UAAA,8HAAA,UAAA,yFAAA,UAAA,oGAAA,WAAA,QAAA,EAAA,OAAA,cAAA,CAAA,CAAA,mCAAA,UAAA,4HAAA,UAAA,88BAAA,WAAA,WAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,qcAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,cAAA,EAAA,OAAA,qCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,koBAAA,WAAA,gBAAA,EAAA,OAAA,uCAAA,CAAA,CAAA,GAAA,WAAA,eAAA,EAAA,OAAA,sCAAA,CAAA,CAAA,sNAAA,WAAA,OAAA,EAAA,OAAA,cAAA,CAAA,CAAA,gaAAA,WAAA,oBAAA,EAAA,OAAA,2CAAA,CAAA,CAAA,GAAA,WAAA,mBAAA,EAAA,OAAA,0CAAA,CAAA,CAAA;;;;iBAIK;;;gBACb,aAAqB,qBAAG;;;yBACV;;;AAGxB,eAAe,OAAO,wBAAM,SAAA,wBAAA"}
@@ -9,7 +9,7 @@ import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/minim
9
9
  import { seek } from "../../skins/dist/default/minimal/tailwind/components/seek.js";
10
10
  import { time } from "../../skins/dist/default/minimal/tailwind/components/time.js";
11
11
  import { overlay } from "../../skins/dist/default/minimal/tailwind/components/overlay.js";
12
- import { controls, popup, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
12
+ import { controls, popup, preview, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
13
13
  import "../media/container.js";
14
14
  import "../ui/buffering-indicator.js";
15
15
  import "../ui/captions-button.js";
@@ -33,7 +33,7 @@ import { cn } from "@videojs/utils/style";
33
33
  //#region src/define/video/minimal-skin.tailwind.ts
34
34
  const SEEK_TIME = 10;
35
35
  function getTemplateHTML() {
36
- return `<media-container class="${root(true)}"><slot name="media"></slot><media-buffering-indicator class="${bufferingIndicator}"> ${renderIcon("spinner")} </media-buffering-indicator><media-controls data-controls="" class="${controls}"><media-tooltip-group class="contents"><div class="${buttonGroup}"><span class="${tooltipState.play.wrapper}"><media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}"> ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })} ${renderIcon("play", { class: cn(icon, iconState.play.play) })} ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.play.replay}">Replay</span><span class="${tooltipState.play.play}">Play</span><span class="${tooltipState.play.pause}">Pause</span></media-tooltip></span><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: cn(icon, iconFlipped) })} <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: icon })} <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek forward ${SEEK_TIME} seconds </media-tooltip></div><div class="${time.controls}"><media-time-group class="${time.group}"><media-time type="current" class="${time.current}"></media-time><media-time-separator class="${time.separator}"></media-time-separator><media-time type="duration" class="${time.duration}"></media-time></media-time-group><media-time-slider class="${slider.root}"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill><media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb></media-time-slider></div><div class="${buttonGroup}"><media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}"> ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })} ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })} ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.volume)}"><media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill></media-slider-track><media-slider-thumb class="${slider.thumb.base}"></media-slider-thumb></media-volume-slider></media-popover><span class="${tooltipState.captions.wrapper}"><media-captions-button commandfor="captions-tooltip" class="${cn(button.base, button.icon, iconState.captions.button)}"> ${renderIcon("captions-off", { class: cn(icon, iconState.captions.off) })} ${renderIcon("captions-on", { class: cn(icon, iconState.captions.on) })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.captions.enable}">Enable captions</span><span class="${tooltipState.captions.disable}">Disable captions</span></media-tooltip></span><span class="${tooltipState.pip.wrapper}"><media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon)}"> ${renderIcon("pip", { class: icon })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.pip.enter}">Enter picture-in-picture</span><span class="${tooltipState.pip.exit}">Exit picture-in-picture</span></media-tooltip></span><span class="${tooltipState.fullscreen.wrapper}"><media-fullscreen-button commandfor="fullscreen-tooltip" class="${cn(button.base, button.icon, iconState.fullscreen.button)}"> ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })} ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.fullscreen.enter}">Enter fullscreen</span><span class="${tooltipState.fullscreen.exit}">Exit fullscreen</span></media-tooltip></span></div></media-tooltip-group></media-controls><div class="${overlay}"></div></media-container>`;
36
+ return `<media-container class="${root(true)}"><slot name="media"></slot><media-buffering-indicator class="${bufferingIndicator}"> ${renderIcon("spinner")} </media-buffering-indicator><media-controls data-controls="" class="${controls}"><media-tooltip-group class="contents"><div class="${buttonGroup}"><span class="${tooltipState.play.wrapper}"><media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}"> ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })} ${renderIcon("play", { class: cn(icon, iconState.play.play) })} ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })} </media-play-button><media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.play.replay}">Replay</span><span class="${tooltipState.play.play}">Play</span><span class="${tooltipState.play.pause}">Pause</span></media-tooltip></span><media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: cn(icon, iconFlipped) })} <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek backward ${SEEK_TIME} seconds </media-tooltip><media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}"><span class="${iconContainer}"> ${renderIcon("seek", { class: icon })} <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span></span></media-seek-button><media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}"> Seek forward ${SEEK_TIME} seconds </media-tooltip></div><div class="${time.controls}"><media-time-group class="${time.group}"><media-time type="current" class="${time.current}"></media-time><media-time-separator class="${time.separator}"></media-time-separator><media-time type="duration" class="${time.duration}"></media-time></media-time-group><media-time-slider class="${slider.root}"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill><media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer></media-slider-track><media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb><div class="${preview.root}"><div class="${preview.thumbnailWrapper}"><media-slider-thumbnail class="${preview.thumbnail}"></media-slider-thumbnail></div><media-slider-value type="pointer" class="${preview.timestamp}"></media-slider-value> ${renderIcon("spinner", { class: cn(icon, preview.spinner) })} </div></media-time-slider></div><div class="${buttonGroup}"><media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}"></media-playback-rate-button><media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}"> Toggle playback rate </media-tooltip><media-mute-button commandfor="video-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}"> ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })} ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })} ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })} </media-mute-button><media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="${cn(popup.volume)}"><media-volume-slider class="${slider.root}" orientation="vertical" thumb-alignment="edge"><media-slider-track class="${slider.track}"><media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill></media-slider-track><media-slider-thumb class="${slider.thumb.base}"></media-slider-thumb></media-volume-slider></media-popover><span class="${tooltipState.captions.wrapper}"><media-captions-button commandfor="captions-tooltip" class="${cn(button.base, button.icon, iconState.captions.button)}"> ${renderIcon("captions-off", { class: cn(icon, iconState.captions.off) })} ${renderIcon("captions-on", { class: cn(icon, iconState.captions.on) })} </media-captions-button><media-tooltip id="captions-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.captions.enable}">Enable captions</span><span class="${tooltipState.captions.disable}">Disable captions</span></media-tooltip></span><span class="${tooltipState.pip.wrapper}"><media-pip-button commandfor="pip-tooltip" class="${cn(button.base, button.icon)}"> ${renderIcon("pip", { class: icon })} </media-pip-button><media-tooltip id="pip-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.pip.enter}">Enter picture-in-picture</span><span class="${tooltipState.pip.exit}">Exit picture-in-picture</span></media-tooltip></span><span class="${tooltipState.fullscreen.wrapper}"><media-fullscreen-button commandfor="fullscreen-tooltip" class="${cn(button.base, button.icon, iconState.fullscreen.button)}"> ${renderIcon("fullscreen-enter", { class: cn(icon, iconState.fullscreen.enter) })} ${renderIcon("fullscreen-exit", { class: cn(icon, iconState.fullscreen.exit) })} </media-fullscreen-button><media-tooltip id="fullscreen-tooltip" side="top" class="${cn(popup.tooltip)}"><span class="${tooltipState.fullscreen.enter}">Enter fullscreen</span><span class="${tooltipState.fullscreen.exit}">Exit fullscreen</span></media-tooltip></span></div></media-tooltip-group></media-controls><div class="${overlay}"></div></media-container>`;
37
37
  }
38
38
  var MinimalVideoSkinTailwindElement = class extends SkinMixin(ReactiveElement) {
39
39
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/video/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/captions-button';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\nimport { playbackRate } from '@videojs/skins/default/tailwind/video.tailwind';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root(true)}\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"${bufferingIndicator}\">\n ${renderIcon('spinner')}\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\n <div class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n </media-time-slider>\n </div>\n\n <div class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <span class=\"${tooltipState.captions.wrapper}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.icon, iconState.captions.button)}\">\n ${renderIcon('captions-off', { class: cn(icon, iconState.captions.off) })}\n ${renderIcon('captions-on', { class: cn(icon, iconState.captions.on) })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.captions.enable}\">Enable captions</span>\n <span class=\"${tooltipState.captions.disable}\">Disable captions</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.pip.wrapper}\">\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.icon)}\">\n ${renderIcon('pip', { class: icon })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.pip.enter}\">Enter picture-in-picture</span>\n <span class=\"${tooltipState.pip.exit}\">Exit picture-in-picture</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.fullscreen.wrapper}\">\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.icon, iconState.fullscreen.button)}\">\n ${renderIcon('fullscreen-enter', { class: cn(icon, iconState.fullscreen.enter) })}\n ${renderIcon('fullscreen-exit', { class: cn(icon, iconState.fullscreen.exit) })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.fullscreen.enter}\">Enter fullscreen</span>\n <span class=\"${tooltipState.fullscreen.exit}\">Exit fullscreen</span>\n </media-tooltip>\n </span>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinTailwindElement.tagName, MinimalVideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinTailwindElement.tagName]: MinimalVideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/video/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport {\n bufferingIndicator,\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n popup,\n preview,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/buffering-indicator';\nimport '../ui/captions-button';\nimport '../ui/controls';\nimport '../ui/fullscreen-button';\nimport '../ui/mute-button';\nimport '../ui/pip-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\nimport { playbackRate } from '@videojs/skins/default/tailwind/video.tailwind';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root(true)}\">\n <slot name=\"media\"></slot>\n\n <media-buffering-indicator class=\"${bufferingIndicator}\">\n ${renderIcon('spinner')}\n </media-buffering-indicator>\n\n <media-controls data-controls=\"\" class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\n <div class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n\n <div class=\"${preview.root}\">\n <div class=\"${preview.thumbnailWrapper}\">\n <media-slider-thumbnail class=\"${preview.thumbnail}\"></media-slider-thumbnail>\n </div>\n <media-slider-value type=\"pointer\" class=\"${preview.timestamp}\"></media-slider-value>\n ${renderIcon('spinner', { class: cn(icon, preview.spinner) })}\n </div>\n </media-time-slider>\n </div>\n\n <div class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"video-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"video-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"top\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"vertical\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n\n <span class=\"${tooltipState.captions.wrapper}\">\n <media-captions-button commandfor=\"captions-tooltip\" class=\"${cn(button.base, button.icon, iconState.captions.button)}\">\n ${renderIcon('captions-off', { class: cn(icon, iconState.captions.off) })}\n ${renderIcon('captions-on', { class: cn(icon, iconState.captions.on) })}\n </media-captions-button>\n <media-tooltip id=\"captions-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.captions.enable}\">Enable captions</span>\n <span class=\"${tooltipState.captions.disable}\">Disable captions</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.pip.wrapper}\">\n <media-pip-button commandfor=\"pip-tooltip\" class=\"${cn(button.base, button.icon)}\">\n ${renderIcon('pip', { class: icon })}\n </media-pip-button>\n <media-tooltip id=\"pip-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.pip.enter}\">Enter picture-in-picture</span>\n <span class=\"${tooltipState.pip.exit}\">Exit picture-in-picture</span>\n </media-tooltip>\n </span>\n\n <span class=\"${tooltipState.fullscreen.wrapper}\">\n <media-fullscreen-button commandfor=\"fullscreen-tooltip\" class=\"${cn(button.base, button.icon, iconState.fullscreen.button)}\">\n ${renderIcon('fullscreen-enter', { class: cn(icon, iconState.fullscreen.enter) })}\n ${renderIcon('fullscreen-exit', { class: cn(icon, iconState.fullscreen.exit) })}\n </media-fullscreen-button>\n <media-tooltip id=\"fullscreen-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.fullscreen.enter}\">Enter fullscreen</span>\n <span class=\"${tooltipState.fullscreen.exit}\">Exit fullscreen</span>\n </media-tooltip>\n </span>\n </div>\n </media-tooltip-group>\n </media-controls>\n\n <div class=\"${overlay}\"></div>\n </media-container>\n `;\n}\n\nexport class MinimalVideoSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'video-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalVideoSkinTailwindElement.tagName, MinimalVideoSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalVideoSkinTailwindElement.tagName]: MinimalVideoSkinTailwindElement;\n }\n}\n"],"mappings":"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"}