@videojs/react 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 (96) hide show
  1. package/dist/default/presets/audio/minimal-skin.css +56 -9
  2. package/dist/default/presets/audio/skin.css +56 -11
  3. package/dist/default/presets/video/minimal-skin.css +203 -47
  4. package/dist/default/presets/video/minimal-skin.js +23 -4
  5. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  6. package/dist/default/presets/video/minimal-skin.tailwind.js +27 -8
  7. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  8. package/dist/default/presets/video/skin.css +191 -37
  9. package/dist/default/presets/video/skin.js +20 -4
  10. package/dist/default/presets/video/skin.js.map +1 -1
  11. package/dist/default/presets/video/skin.tailwind.js +24 -8
  12. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  13. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  14. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  15. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  16. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  17. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +3 -3
  18. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  19. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  20. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  21. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  22. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  23. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  24. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  25. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  26. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  27. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +17 -12
  28. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  29. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  30. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  31. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  32. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  33. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  34. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  35. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  36. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  37. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  38. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  39. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  40. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  41. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  42. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  43. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +19 -13
  44. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  45. package/dist/default/ui/thumbnail/index.js +3 -0
  46. package/dist/dev/presets/audio/minimal-skin.css +56 -9
  47. package/dist/dev/presets/audio/skin.css +56 -11
  48. package/dist/dev/presets/video/minimal-skin.css +203 -47
  49. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  50. package/dist/dev/presets/video/minimal-skin.js +23 -4
  51. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  52. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  53. package/dist/dev/presets/video/minimal-skin.tailwind.js +27 -8
  54. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  55. package/dist/dev/presets/video/skin.css +191 -37
  56. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  57. package/dist/dev/presets/video/skin.js +20 -4
  58. package/dist/dev/presets/video/skin.js.map +1 -1
  59. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  60. package/dist/dev/presets/video/skin.tailwind.js +24 -8
  61. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  62. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  63. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  64. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  65. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  66. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +3 -3
  67. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  68. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  69. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  70. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  71. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  72. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  73. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  74. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  75. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  76. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +17 -12
  77. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  78. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  79. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  80. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  81. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  82. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  83. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  84. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  85. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  86. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  87. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  88. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  89. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  90. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  91. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  92. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +19 -13
  93. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  94. package/dist/dev/ui/thumbnail/index.d.ts +2 -0
  95. package/dist/dev/ui/thumbnail/index.js +3 -0
  96. package/package.json +7 -7
@@ -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,3 +940,48 @@
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
+
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAqCY,qBAAA,GAAwB,aAAA;AAAA,iBAsCpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
1
+ {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"mappings":";;;;KAsCY,qBAAA,GAAwB,aAAA;AAAA,iBAsCpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
@@ -14,7 +14,9 @@ import { SeekButton } from "../../ui/seek-button/seek-button.js";
14
14
  import { SliderBuffer } from "../../ui/slider/slider-buffer.js";
15
15
  import { SliderFill } from "../../ui/slider/slider-fill.js";
16
16
  import { SliderThumb } from "../../ui/slider/slider-thumb.js";
17
+ import { SliderThumbnail } from "../../ui/slider/slider-thumbnail.js";
17
18
  import { SliderTrack } from "../../ui/slider/slider-track.js";
19
+ import { SliderValue } from "../../ui/slider/slider-value.js";
18
20
  import { Group } from "../../ui/time/time-group.js";
19
21
  import { Separator } from "../../ui/time/time-separator.js";
20
22
  import { Value } from "../../ui/time/time-value.js";
@@ -176,10 +178,27 @@ function MinimalVideoSkin(props) {
176
178
  ]
177
179
  }), /* @__PURE__ */ jsxs(TimeSliderRoot, {
178
180
  className: "media-slider",
179
- children: [/* @__PURE__ */ jsxs(SliderTrack, {
180
- className: "media-slider__track",
181
- children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
182
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" })]
181
+ children: [
182
+ /* @__PURE__ */ jsxs(SliderTrack, {
183
+ className: "media-slider__track",
184
+ children: [/* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" }), /* @__PURE__ */ jsx(SliderBuffer, { className: "media-slider__buffer" })]
185
+ }),
186
+ /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb" }),
187
+ /* @__PURE__ */ jsxs("div", {
188
+ className: "media-preview media-slider__preview",
189
+ children: [
190
+ /* @__PURE__ */ jsx("div", {
191
+ className: "media-preview__thumbnail-wrapper",
192
+ children: /* @__PURE__ */ jsx(SliderThumbnail, { className: "media-preview__thumbnail" })
193
+ }),
194
+ /* @__PURE__ */ jsx(SliderValue, {
195
+ type: "pointer",
196
+ className: "media-preview__timestamp"
197
+ }),
198
+ /* @__PURE__ */ jsx(SpinnerIcon, { className: "media-preview__spinner media-icon" })
199
+ ]
200
+ })
201
+ ]
183
202
  })]
184
203
  }),
185
204
  /* @__PURE__ */ jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":["Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button',\n};\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction CaptionsLabel(): ReactNode {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? <>Disable captions</> : <>Enable captions</>;\n}\n\nfunction PiPLabel(): ReactNode {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? <>Exit picture-in-picture</> : <>Enter picture-in-picture</>;\n}\n\nfunction FullscreenLabel(): ReactNode {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? <>Exit fullscreen</> : <>Enter fullscreen</>;\n}\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--video', className)} {...rest}>\n {children}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--captions\">\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--fullscreen\">\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-skin.js","names":["Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/video/minimal-skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\nimport { ErrorDialog } from './error-dialog';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalVideoSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nconst errorClasses = {\n root: 'media-error',\n dialog: 'media-error__dialog',\n content: 'media-error__content',\n title: 'media-error__title',\n description: 'media-error__description',\n actions: 'media-error__actions',\n close: 'media-button',\n};\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction CaptionsLabel(): ReactNode {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? <>Disable captions</> : <>Enable captions</>;\n}\n\nfunction PiPLabel(): ReactNode {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? <>Exit picture-in-picture</> : <>Enter picture-in-picture</>;\n}\n\nfunction FullscreenLabel(): ReactNode {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? <>Exit fullscreen</> : <>Enter fullscreen</>;\n}\n\nexport function MinimalVideoSkin(props: MinimalVideoSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--video', className)} {...rest}>\n {children}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n )}\n />\n\n <ErrorDialog classes={errorClasses} />\n\n <Controls.Root className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n\n <div className=\"media-preview media-slider__preview\">\n <div className=\"media-preview__thumbnail-wrapper\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n </div>\n <TimeSlider.Value type=\"pointer\" className=\"media-preview__timestamp\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--captions\">\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon\">\n <PipIcon className=\"media-icon\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--fullscreen\">\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"mappings":";;;;iBA6IgB,wBAAA,CAAyB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
1
+ {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/minimal-skin.tailwind.tsx"],"mappings":";;;;iBA+IgB,wBAAA,CAAyB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
@@ -14,7 +14,9 @@ import { SeekButton } from "../../ui/seek-button/seek-button.js";
14
14
  import { SliderBuffer } from "../../ui/slider/slider-buffer.js";
15
15
  import { SliderFill as SliderFill$1 } from "../../ui/slider/slider-fill.js";
16
16
  import { SliderThumb as SliderThumb$1 } from "../../ui/slider/slider-thumb.js";
17
+ import { SliderThumbnail } from "../../ui/slider/slider-thumbnail.js";
17
18
  import { SliderTrack as SliderTrack$1 } from "../../ui/slider/slider-track.js";
19
+ import { SliderValue } from "../../ui/slider/slider-value.js";
18
20
  import { Group } from "../../ui/time/time-group.js";
19
21
  import { Separator } from "../../ui/time/time-separator.js";
20
22
  import { Value } from "../../ui/time/time-value.js";
@@ -48,7 +50,7 @@ import { seek } from "../../skins/dist/default/minimal/tailwind/components/seek.
48
50
  import { time } from "../../skins/dist/default/minimal/tailwind/components/time.js";
49
51
  import { ErrorDialog } from "./error-dialog.js";
50
52
  import { overlay } from "../../skins/dist/default/minimal/tailwind/components/overlay.js";
51
- import { controls, popup, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
53
+ import { controls, popup, preview, root, slider } from "../../skins/dist/default/minimal/tailwind/video.tailwind.js";
52
54
  import { forwardRef } from "react";
53
55
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
54
56
  import { cn } from "@videojs/utils/style";
@@ -218,13 +220,30 @@ function MinimalVideoSkinTailwind(props) {
218
220
  ]
219
221
  }), /* @__PURE__ */ jsxs(TimeSliderRoot, {
220
222
  render: (props) => /* @__PURE__ */ jsx(SliderRoot, { ...props }),
221
- children: [/* @__PURE__ */ jsxs(SliderTrack$1, {
222
- render: (props) => /* @__PURE__ */ jsx(SliderTrack, { ...props }),
223
- children: [/* @__PURE__ */ jsx(SliderFill$1, { render: (props) => /* @__PURE__ */ jsx(SliderFill, { ...props }) }), /* @__PURE__ */ jsx(SliderBuffer, { render: (props) => /* @__PURE__ */ jsx(SliderFill, {
224
- type: "buffer",
225
- ...props
226
- }) })]
227
- }), /* @__PURE__ */ jsx(SliderThumb$1, { render: (props) => /* @__PURE__ */ jsx(SliderThumb, { ...props }) })]
223
+ children: [
224
+ /* @__PURE__ */ jsxs(SliderTrack$1, {
225
+ render: (props) => /* @__PURE__ */ jsx(SliderTrack, { ...props }),
226
+ children: [/* @__PURE__ */ jsx(SliderFill$1, { render: (props) => /* @__PURE__ */ jsx(SliderFill, { ...props }) }), /* @__PURE__ */ jsx(SliderBuffer, { render: (props) => /* @__PURE__ */ jsx(SliderFill, {
227
+ type: "buffer",
228
+ ...props
229
+ }) })]
230
+ }),
231
+ /* @__PURE__ */ jsx(SliderThumb$1, { render: (props) => /* @__PURE__ */ jsx(SliderThumb, { ...props }) }),
232
+ /* @__PURE__ */ jsxs("div", {
233
+ className: preview.root,
234
+ children: [
235
+ /* @__PURE__ */ jsx("div", {
236
+ className: preview.thumbnailWrapper,
237
+ children: /* @__PURE__ */ jsx(SliderThumbnail, { className: preview.thumbnail })
238
+ }),
239
+ /* @__PURE__ */ jsx(SliderValue, {
240
+ type: "pointer",
241
+ className: preview.timestamp
242
+ }),
243
+ /* @__PURE__ */ jsx(SpinnerIcon, { className: cn(icon, preview.spinner) })
244
+ ]
245
+ })
246
+ ]
228
247
  })]
229
248
  }),
230
249
  /* @__PURE__ */ jsxs("div", {