@locpd/vidstack 1.12.14

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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -0
  3. package/analyze.json.d.ts +8 -0
  4. package/bundle.d.ts +1 -0
  5. package/cdn/chunks/vidstack-2f5gzOW6.js +1 -0
  6. package/cdn/chunks/vidstack-BYgY9wmd.js +1 -0
  7. package/cdn/chunks/vidstack-BfBBPhXV.js +1 -0
  8. package/cdn/chunks/vidstack-Bjo5esRp.js +1 -0
  9. package/cdn/chunks/vidstack-BuL67v3q.js +1 -0
  10. package/cdn/chunks/vidstack-C0msPRTd.js +3 -0
  11. package/cdn/chunks/vidstack-CJNLoJPa.js +1 -0
  12. package/cdn/chunks/vidstack-CQSpZ7X8.js +16 -0
  13. package/cdn/chunks/vidstack-C_AxqLKV.js +1 -0
  14. package/cdn/chunks/vidstack-CioT3Yw2.js +1 -0
  15. package/cdn/chunks/vidstack-CrqkytHl.js +1 -0
  16. package/cdn/chunks/vidstack-D0M8R0ZU.js +1 -0
  17. package/cdn/chunks/vidstack-D40FSa5B.js +3 -0
  18. package/cdn/chunks/vidstack-DD2JwFVU.js +1 -0
  19. package/cdn/chunks/vidstack-DRH_1tFW.js +1 -0
  20. package/cdn/chunks/vidstack-DfDZuHNP.js +1 -0
  21. package/cdn/chunks/vidstack-DiNS2Vx5.js +1 -0
  22. package/cdn/chunks/vidstack-xjJ-ui_l.js +1 -0
  23. package/cdn/providers/vidstack-audio-2Dt_Ivbp.js +1 -0
  24. package/cdn/providers/vidstack-dash-CUtD4e6q.js +1 -0
  25. package/cdn/providers/vidstack-google-cast-BdORATUX.js +1 -0
  26. package/cdn/providers/vidstack-hls-R25Kb6DP.js +1 -0
  27. package/cdn/providers/vidstack-html-DaAUJYsD.js +1 -0
  28. package/cdn/providers/vidstack-video-Csvox7SO.js +1 -0
  29. package/cdn/providers/vidstack-vimeo-D4Z96kg2.js +1 -0
  30. package/cdn/providers/vidstack-youtube-DiND6h3s.js +1 -0
  31. package/cdn/vidstack.js +1 -0
  32. package/cdn/with-layouts/chunks/vidstack-2f5gzOW6.js +1 -0
  33. package/cdn/with-layouts/chunks/vidstack-45yH5los.js +1 -0
  34. package/cdn/with-layouts/chunks/vidstack-BBVMdOnf.js +1 -0
  35. package/cdn/with-layouts/chunks/vidstack-BB_ulI_T.js +1 -0
  36. package/cdn/with-layouts/chunks/vidstack-BcAewM33.js +1 -0
  37. package/cdn/with-layouts/chunks/vidstack-BfBBPhXV.js +1 -0
  38. package/cdn/with-layouts/chunks/vidstack-Bxv1Qnxe.js +1 -0
  39. package/cdn/with-layouts/chunks/vidstack-C2ZbG62f.js +3 -0
  40. package/cdn/with-layouts/chunks/vidstack-CCYIOKgL.js +1 -0
  41. package/cdn/with-layouts/chunks/vidstack-CL6PeIO1.js +1 -0
  42. package/cdn/with-layouts/chunks/vidstack-C_AxqLKV.js +1 -0
  43. package/cdn/with-layouts/chunks/vidstack-CifDkwDH.js +795 -0
  44. package/cdn/with-layouts/chunks/vidstack-Cry7aD59.js +3 -0
  45. package/cdn/with-layouts/chunks/vidstack-D065okCn.js +1 -0
  46. package/cdn/with-layouts/chunks/vidstack-DGuMoXmI.js +1 -0
  47. package/cdn/with-layouts/chunks/vidstack-DRH_1tFW.js +1 -0
  48. package/cdn/with-layouts/chunks/vidstack-DVBs1XoQ.js +1 -0
  49. package/cdn/with-layouts/chunks/vidstack-Dge3KT8k.js +1 -0
  50. package/cdn/with-layouts/chunks/vidstack-DiNS2Vx5.js +1 -0
  51. package/cdn/with-layouts/chunks/vidstack-HvYfJoen.js +1 -0
  52. package/cdn/with-layouts/providers/vidstack-audio-DE5vKIzW.js +1 -0
  53. package/cdn/with-layouts/providers/vidstack-dash-CA2agUuZ.js +1 -0
  54. package/cdn/with-layouts/providers/vidstack-google-cast-CGs-t8HM.js +1 -0
  55. package/cdn/with-layouts/providers/vidstack-hls-BHMbMFFR.js +1 -0
  56. package/cdn/with-layouts/providers/vidstack-html-Dm9gmNk6.js +1 -0
  57. package/cdn/with-layouts/providers/vidstack-video-C5it_Lbl.js +1 -0
  58. package/cdn/with-layouts/providers/vidstack-vimeo-BabLn9sy.js +1 -0
  59. package/cdn/with-layouts/providers/vidstack-youtube-D8UlccUL.js +1 -0
  60. package/cdn/with-layouts/vidstack.js +1 -0
  61. package/dev/chunks/vidstack-B7Zi3v_O.js +104 -0
  62. package/dev/chunks/vidstack-BFg1ZqiG.js +91 -0
  63. package/dev/chunks/vidstack-BGB2pa9s.js +58 -0
  64. package/dev/chunks/vidstack-BaIbHZE3.js +1519 -0
  65. package/dev/chunks/vidstack-Bb2rASIc.js +5188 -0
  66. package/dev/chunks/vidstack-Bcmx8pmK.js +224 -0
  67. package/dev/chunks/vidstack-Bl4b0Nen.js +29 -0
  68. package/dev/chunks/vidstack-Bo5OTJ06.js +58 -0
  69. package/dev/chunks/vidstack-BoAGnlRt.js +58 -0
  70. package/dev/chunks/vidstack-Bpr4fI4n.js +7 -0
  71. package/dev/chunks/vidstack-Bt8MP2DK.js +204 -0
  72. package/dev/chunks/vidstack-Bu2kfzUd.js +1637 -0
  73. package/dev/chunks/vidstack-C-ffXlSV.js +2995 -0
  74. package/dev/chunks/vidstack-C-ztJq-f.js +109 -0
  75. package/dev/chunks/vidstack-CFNlaVTR.js +55 -0
  76. package/dev/chunks/vidstack-C_l97D5j.js +254 -0
  77. package/dev/chunks/vidstack-CjhKISI0.js +114 -0
  78. package/dev/chunks/vidstack-CofXIJAy.js +57 -0
  79. package/dev/chunks/vidstack-CwTj4H1w.js +18 -0
  80. package/dev/chunks/vidstack-DDwbYVHV.js +66 -0
  81. package/dev/chunks/vidstack-DFImIcIL.js +11 -0
  82. package/dev/chunks/vidstack-DGDvUbvO.js +33 -0
  83. package/dev/chunks/vidstack-DO0kqA99.js +107 -0
  84. package/dev/chunks/vidstack-DXxIKXmd.js +50 -0
  85. package/dev/chunks/vidstack-DajrMUR0.js +297 -0
  86. package/dev/chunks/vidstack-DbBJlz7I.js +10 -0
  87. package/dev/chunks/vidstack-Dihypf8P.js +11 -0
  88. package/dev/chunks/vidstack-DlAhl87f.js +1193 -0
  89. package/dev/chunks/vidstack-Dm1xEU9Q.js +34 -0
  90. package/dev/chunks/vidstack-Dv_LIPFu.js +14 -0
  91. package/dev/chunks/vidstack-igYn0Apa.js +254 -0
  92. package/dev/chunks/vidstack-krOAtKMi.js +32 -0
  93. package/dev/chunks/vidstack-qh1N5_f_.js +26 -0
  94. package/dev/chunks/vidstack-rB-wqXw1.js +107 -0
  95. package/dev/chunks/vidstack-zG6PIeGg.js +66 -0
  96. package/dev/define/plyr-layout.js +51 -0
  97. package/dev/define/templates/plyr-layout.js +571 -0
  98. package/dev/define/templates/vidstack-audio-layout.js +167 -0
  99. package/dev/define/templates/vidstack-video-layout.js +390 -0
  100. package/dev/define/vidstack-icons.js +1 -0
  101. package/dev/define/vidstack-player-default-layout.js +21 -0
  102. package/dev/define/vidstack-player-layouts.js +25 -0
  103. package/dev/define/vidstack-player-ui.js +70 -0
  104. package/dev/define/vidstack-player.js +19 -0
  105. package/dev/global/plyr.js +501 -0
  106. package/dev/global/vidstack-player.js +129 -0
  107. package/dev/providers/vidstack-audio.js +35 -0
  108. package/dev/providers/vidstack-dash.js +516 -0
  109. package/dev/providers/vidstack-google-cast.js +474 -0
  110. package/dev/providers/vidstack-hls.js +408 -0
  111. package/dev/providers/vidstack-html.js +567 -0
  112. package/dev/providers/vidstack-video.js +207 -0
  113. package/dev/providers/vidstack-vimeo.js +554 -0
  114. package/dev/providers/vidstack-youtube.js +286 -0
  115. package/dev/vidstack-elements.js +36 -0
  116. package/dev/vidstack.js +91 -0
  117. package/dom.d.ts +91 -0
  118. package/elements.d.ts +1433 -0
  119. package/empty.vtt +1 -0
  120. package/global/player.d.ts +52 -0
  121. package/global/plyr.d.ts +343 -0
  122. package/google-cast.d.ts +1422 -0
  123. package/icons.d.ts +1 -0
  124. package/index.d.ts +402 -0
  125. package/package.json +199 -0
  126. package/player/index.d.ts +3 -0
  127. package/player/layouts/default.d.ts +3 -0
  128. package/player/layouts/index.d.ts +3 -0
  129. package/player/layouts/plyr.d.ts +3 -0
  130. package/player/styles/base.css +153 -0
  131. package/player/styles/default/buffering.css +55 -0
  132. package/player/styles/default/buttons.css +175 -0
  133. package/player/styles/default/captions.css +181 -0
  134. package/player/styles/default/chapter-title.css +26 -0
  135. package/player/styles/default/controls.css +56 -0
  136. package/player/styles/default/gestures.css +19 -0
  137. package/player/styles/default/icons.css +6 -0
  138. package/player/styles/default/keyboard.css +148 -0
  139. package/player/styles/default/layouts/audio.css +417 -0
  140. package/player/styles/default/layouts/video.css +590 -0
  141. package/player/styles/default/menus.css +959 -0
  142. package/player/styles/default/poster.css +52 -0
  143. package/player/styles/default/sliders.css +391 -0
  144. package/player/styles/default/theme.css +2461 -0
  145. package/player/styles/default/thumbnail.css +40 -0
  146. package/player/styles/default/time.css +45 -0
  147. package/player/styles/default/tooltips.css +141 -0
  148. package/player/styles/plyr/theme.css +1237 -0
  149. package/player/ui.d.ts +3 -0
  150. package/plugins.d.ts +19 -0
  151. package/plugins.js +13 -0
  152. package/prod/chunks/vidstack-B01xzxC4.js +7 -0
  153. package/prod/chunks/vidstack-BCeb7ryV.js +201 -0
  154. package/prod/chunks/vidstack-BGSTndAW.js +1590 -0
  155. package/prod/chunks/vidstack-BPitBBjh.js +1519 -0
  156. package/prod/chunks/vidstack-BQlOPwOu.js +45 -0
  157. package/prod/chunks/vidstack-BSDzlwxO.js +4778 -0
  158. package/prod/chunks/vidstack-BT0m6zEi.js +109 -0
  159. package/prod/chunks/vidstack-BTigPj2h.js +55 -0
  160. package/prod/chunks/vidstack-BiyXcJ_M.js +107 -0
  161. package/prod/chunks/vidstack-BoVf5n1M.js +2985 -0
  162. package/prod/chunks/vidstack-Bq6c3Bam.js +58 -0
  163. package/prod/chunks/vidstack-ByLCIBtB.js +297 -0
  164. package/prod/chunks/vidstack-C2US-gSO.js +248 -0
  165. package/prod/chunks/vidstack-C9vIqaYT.js +10 -0
  166. package/prod/chunks/vidstack-CF6fixCQ.js +1193 -0
  167. package/prod/chunks/vidstack-CTojmhKq.js +66 -0
  168. package/prod/chunks/vidstack-ChQTHmIQ.js +77 -0
  169. package/prod/chunks/vidstack-Cm6_unwd.js +246 -0
  170. package/prod/chunks/vidstack-CwTj4H1w.js +18 -0
  171. package/prod/chunks/vidstack-D3ltXc3a.js +33 -0
  172. package/prod/chunks/vidstack-D5EzK014.js +14 -0
  173. package/prod/chunks/vidstack-DDXt6fpN.js +58 -0
  174. package/prod/chunks/vidstack-DJDnh4xT.js +11 -0
  175. package/prod/chunks/vidstack-DXxIKXmd.js +50 -0
  176. package/prod/chunks/vidstack-D_-9AA6_.js +29 -0
  177. package/prod/chunks/vidstack-DbkZGjSn.js +107 -0
  178. package/prod/chunks/vidstack-Dihypf8P.js +11 -0
  179. package/prod/chunks/vidstack-Dm1xEU9Q.js +34 -0
  180. package/prod/chunks/vidstack-Dq5Yu0Vr.js +205 -0
  181. package/prod/chunks/vidstack-DqAw8m9J.js +26 -0
  182. package/prod/chunks/vidstack-DsPOyKtl.js +57 -0
  183. package/prod/chunks/vidstack-krOAtKMi.js +32 -0
  184. package/prod/chunks/vidstack-nLyr4NEP.js +58 -0
  185. package/prod/chunks/vidstack-xMS8dnYq.js +114 -0
  186. package/prod/chunks/vidstack-yEGTpgeA.js +104 -0
  187. package/prod/define/plyr-layout.js +51 -0
  188. package/prod/define/templates/plyr-layout.js +571 -0
  189. package/prod/define/templates/vidstack-audio-layout.js +167 -0
  190. package/prod/define/templates/vidstack-video-layout.js +390 -0
  191. package/prod/define/vidstack-icons.js +1 -0
  192. package/prod/define/vidstack-player-default-layout.js +21 -0
  193. package/prod/define/vidstack-player-layouts.js +25 -0
  194. package/prod/define/vidstack-player-ui.js +70 -0
  195. package/prod/define/vidstack-player.js +19 -0
  196. package/prod/global/plyr.js +493 -0
  197. package/prod/global/vidstack-player.js +129 -0
  198. package/prod/providers/vidstack-audio.js +35 -0
  199. package/prod/providers/vidstack-dash.js +501 -0
  200. package/prod/providers/vidstack-google-cast.js +468 -0
  201. package/prod/providers/vidstack-hls.js +393 -0
  202. package/prod/providers/vidstack-html.js +555 -0
  203. package/prod/providers/vidstack-video.js +204 -0
  204. package/prod/providers/vidstack-vimeo.js +548 -0
  205. package/prod/providers/vidstack-youtube.js +286 -0
  206. package/prod/vidstack-elements.js +36 -0
  207. package/prod/vidstack.js +158 -0
  208. package/server/chunks/vidstack-6juFdkKy.js +29 -0
  209. package/server/chunks/vidstack-B7iHmv7_.js +307 -0
  210. package/server/chunks/vidstack-BmxyML9v.js +1619 -0
  211. package/server/chunks/vidstack-BskfxwD3.js +566 -0
  212. package/server/chunks/vidstack-BvLV0SMz.js +4642 -0
  213. package/server/chunks/vidstack-BvWwluXZ.js +205 -0
  214. package/server/chunks/vidstack-C-413dj2.js +8 -0
  215. package/server/chunks/vidstack-C26K8z_-.js +55 -0
  216. package/server/chunks/vidstack-CJJiksDz.js +107 -0
  217. package/server/chunks/vidstack-CUNv52x1.js +141 -0
  218. package/server/chunks/vidstack-CqyBCODe.js +295 -0
  219. package/server/chunks/vidstack-CwTj4H1w.js +18 -0
  220. package/server/chunks/vidstack-DHAyGSOl.js +1502 -0
  221. package/server/chunks/vidstack-DLU3cjcp.js +381 -0
  222. package/server/chunks/vidstack-DXxIKXmd.js +50 -0
  223. package/server/chunks/vidstack-DbtDXDS2.js +104 -0
  224. package/server/chunks/vidstack-Dm1xEU9Q.js +34 -0
  225. package/server/chunks/vidstack-DzTHw_bw.js +207 -0
  226. package/server/chunks/vidstack-Wn3NH5Sg.js +1566 -0
  227. package/server/chunks/vidstack-krOAtKMi.js +32 -0
  228. package/server/chunks/vidstack-wNViAkr4.js +3045 -0
  229. package/server/define/plyr-layout.js +16 -0
  230. package/server/define/vidstack-icons.js +1 -0
  231. package/server/define/vidstack-player-default-layout.js +13 -0
  232. package/server/define/vidstack-player-layouts.js +16 -0
  233. package/server/define/vidstack-player-ui.js +11 -0
  234. package/server/define/vidstack-player.js +6 -0
  235. package/server/global/plyr.js +322 -0
  236. package/server/global/vidstack-player.js +58 -0
  237. package/server/vidstack-elements.js +46 -0
  238. package/server/vidstack.js +148 -0
  239. package/tailwind.cjs +101 -0
  240. package/tailwind.d.cts +15 -0
  241. package/types/vidstack-BOvzfZjK.d.ts +1269 -0
  242. package/types/vidstack-Cttpg6GU.d.ts +7474 -0
@@ -0,0 +1,153 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Player
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ [data-media-player] {
8
+ width: 100%;
9
+ display: inline-flex;
10
+ align-items: center;
11
+ position: relative;
12
+ contain: style;
13
+ box-sizing: border-box;
14
+ user-select: none;
15
+ }
16
+
17
+ [data-media-player] * {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ :where([data-media-player][data-view-type='video']) {
22
+ aspect-ratio: 16 / 9;
23
+ }
24
+
25
+ [data-media-player]:focus,
26
+ [data-media-player]:focus-visible {
27
+ outline: none;
28
+ }
29
+
30
+ [data-media-player][data-view-type='video'][data-started]:not([data-controls]) {
31
+ pointer-events: auto;
32
+ cursor: none;
33
+ }
34
+
35
+ [data-media-player] slot {
36
+ display: contents;
37
+ }
38
+
39
+ /*
40
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41
+ * Provider
42
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
+ */
44
+
45
+ [data-media-provider] {
46
+ display: flex;
47
+ position: relative;
48
+ box-sizing: border-box;
49
+ align-items: center;
50
+ border-radius: inherit;
51
+ width: 100%;
52
+ aspect-ratio: inherit;
53
+ overflow: hidden;
54
+ }
55
+
56
+ [data-media-player]:not([data-view-type='audio']) [data-media-provider],
57
+ [data-media-player][data-fullscreen] [data-media-provider] {
58
+ height: 100%;
59
+ }
60
+
61
+ [data-media-player][data-view-type='audio'] [data-media-provider] {
62
+ display: contents;
63
+ background-color: unset;
64
+ }
65
+
66
+ [data-media-provider] audio {
67
+ width: 100%;
68
+ }
69
+
70
+ :where(video:not([width]):not([height]), iframe:not([width]):not([height])) {
71
+ width: 100%;
72
+ aspect-ratio: 16 / 9;
73
+ }
74
+
75
+ :where([data-media-provider] video),
76
+ :where([data-media-provider] iframe) {
77
+ aspect-ratio: inherit;
78
+ display: inline-block;
79
+ height: auto;
80
+ object-fit: contain;
81
+ touch-action: manipulation;
82
+ border-radius: inherit;
83
+ width: 100%;
84
+ }
85
+
86
+ [data-media-provider] iframe {
87
+ height: 100%;
88
+ }
89
+
90
+ [data-media-player][data-view-type='audio'] video,
91
+ [data-media-player][data-view-type='audio'] iframe {
92
+ display: none;
93
+ }
94
+
95
+ [data-media-player][data-fullscreen] video {
96
+ height: 100%;
97
+ }
98
+
99
+ [data-media-provider] iframe:not([src]) {
100
+ display: none;
101
+ }
102
+
103
+ iframe.vds-youtube[data-no-controls] {
104
+ height: 1000%;
105
+ }
106
+
107
+ .vds-blocker {
108
+ position: absolute;
109
+ inset: 0;
110
+ width: 100%;
111
+ height: auto;
112
+ aspect-ratio: inherit;
113
+ pointer-events: auto;
114
+ border-radius: inherit;
115
+ z-index: 1;
116
+ }
117
+
118
+ [data-ended] .vds-blocker {
119
+ background-color: black;
120
+ }
121
+
122
+ .vds-icon:focus {
123
+ outline: none;
124
+ }
125
+
126
+ /*
127
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
128
+ * Google Cast
129
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130
+ */
131
+
132
+ .vds-google-cast {
133
+ width: 100%;
134
+ height: 100%;
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ flex-direction: column;
139
+ color: #dedede;
140
+ font-family: sans-serif;
141
+ font-weight: 500;
142
+ }
143
+
144
+ .vds-google-cast svg {
145
+ --size: max(18%, 40px);
146
+ width: var(--size);
147
+ height: var(--size);
148
+ margin-bottom: 8px;
149
+ }
150
+
151
+ .vds-google-cast-info {
152
+ font-size: calc(var(--media-height) / 100 * 6);
153
+ }
@@ -0,0 +1,55 @@
1
+ :where(.vds-buffering-indicator) {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ pointer-events: none;
11
+ z-index: 1;
12
+ }
13
+
14
+ :where(.vds-buffering-indicator) :where(.vds-buffering-icon, .vds-buffering-spinner) {
15
+ opacity: 0;
16
+ pointer-events: none;
17
+ transition: var(--media-buffering-transition, opacity 200ms ease);
18
+ }
19
+
20
+ :where(.vds-buffering-indicator)
21
+ :where(.vds-buffering-icon, svg.vds-buffering-spinner, .vds-buffering-spinner svg) {
22
+ width: var(--media-buffering-size, 96px);
23
+ height: var(--media-buffering-size, 96px);
24
+ }
25
+
26
+ :where(.vds-buffering-indicator) :where(.vds-buffering-track, circle[data-part='track']) {
27
+ color: var(--media-buffering-track-color, #f5f5f5);
28
+ opacity: var(--media-buffering-track-opacity, 0.25);
29
+ stroke-width: var(--media-buffering-track-width, 8);
30
+ }
31
+
32
+ :where(.vds-buffering-indicator) :where(.vds-buffering-track-fill, circle[data-part='track-fill']) {
33
+ color: var(--media-buffering-track-fill-color, var(--media-brand));
34
+ opacity: var(--media-buffering-track-fill-opacity, 0.75);
35
+ stroke-width: var(--media-buffering-track-fill-width, 9);
36
+ stroke-dasharray: 100;
37
+ stroke-dashoffset: var(--media-buffering-track-fill-offset, 50);
38
+ }
39
+
40
+ :where([data-buffering]) :where(.vds-buffering-icon, .vds-buffering-spinner) {
41
+ opacity: 1;
42
+ animation: var(--media-buffering-animation, vds-buffering-spin 1s linear infinite);
43
+ }
44
+
45
+ @keyframes vds-buffering-spin {
46
+ to {
47
+ transform: rotate(360deg);
48
+ }
49
+ }
50
+
51
+ @media (prefers-reduced-motion) {
52
+ :where([data-buffering]) :where(.vds-buffering-icon, .vds-buffering-spinner) {
53
+ animation-duration: 8s;
54
+ }
55
+ }
@@ -0,0 +1,175 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Buttons
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ :where(.vds-button) {
8
+ -webkit-tap-highlight-color: transparent;
9
+ position: relative;
10
+ display: inline-flex;
11
+ justify-content: center;
12
+ align-items: center;
13
+ user-select: none;
14
+ appearance: none;
15
+ background: none;
16
+ outline: none;
17
+ border: none;
18
+ border-radius: var(--media-button-border-radius, 8px);
19
+ width: var(--media-button-size, 40px);
20
+ height: var(--media-button-size, 40px);
21
+ transition: transform 0.2s ease-out;
22
+ contain: layout style;
23
+ cursor: pointer;
24
+ -webkit-user-select: none;
25
+ -webkit-tap-highlight-color: transparent;
26
+ touch-action: manipulation;
27
+ flex-shrink: 0;
28
+ }
29
+
30
+ .vds-button {
31
+ border: var(--media-button-border);
32
+ color: var(--media-button-color, var(--media-controls-color, #f5f5f5));
33
+ padding: var(--media-button-padding, 0px);
34
+ }
35
+
36
+ :where([data-fullscreen] .vds-button) {
37
+ width: var(--media-fullscreen-button-size, 42px);
38
+ height: var(--media-fullscreen-button-size, 42px);
39
+ }
40
+
41
+ @media screen and (max-width: 599px) {
42
+ :where([data-fullscreen] .vds-button) {
43
+ width: var(--media-sm-fullscreen-button-size, 42px);
44
+ height: var(--media-sm-fullscreen-button-size, 42px);
45
+ }
46
+ }
47
+
48
+ :where(.vds-button .vds-icon) {
49
+ width: var(--media-button-icon-size, 80%);
50
+ height: var(--media-button-icon-size, 80%);
51
+ border-radius: var(--media-button-border-radius, 8px);
52
+ }
53
+
54
+ :where(.vds-menu-button .vds-icon) {
55
+ display: flex !important;
56
+ }
57
+
58
+ :where(.vds-button[aria-hidden='true']) {
59
+ display: none !important;
60
+ }
61
+
62
+ @media (hover: hover) and (pointer: fine) {
63
+ .vds-button:hover {
64
+ background-color: var(--media-button-hover-bg, rgb(255 255 255 / 0.2));
65
+ }
66
+
67
+ .vds-button:hover {
68
+ transform: var(--media-button-hover-transform, scale(1.05));
69
+ transition: var(--media-button-hover-transition, transform 0.2s ease-in);
70
+ }
71
+
72
+ .vds-button[aria-expanded='true'] {
73
+ transform: unset;
74
+ }
75
+ }
76
+
77
+ @media (pointer: coarse) {
78
+ .vds-button:hover {
79
+ border-radius: var(--media-button-touch-hover-border-radius, 100%);
80
+ background-color: var(--media-button-touch-hover-bg, rgb(255 255 255 / 0.2));
81
+ }
82
+ }
83
+
84
+ :where(.vds-button:focus) {
85
+ outline: none;
86
+ }
87
+
88
+ :where(.vds-button[data-focus], .vds-button:focus-visible) {
89
+ box-shadow: var(--media-focus-ring);
90
+ }
91
+
92
+ /*
93
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94
+ * Live Button
95
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96
+ */
97
+
98
+ :where(.vds-live-button) {
99
+ min-width: auto;
100
+ min-height: auto;
101
+ width: var(--media-live-button-width, 40px);
102
+ height: var(--media-live-button-height, 40px);
103
+ padding: 0;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ cursor: pointer;
108
+ user-select: none;
109
+ appearance: none;
110
+ background: none;
111
+ outline: none;
112
+ border: none;
113
+ }
114
+
115
+ :where(.vds-live-button-text) {
116
+ font-family: var(--media-font-family, sans-serif);
117
+ font-size: var(--media-live-button-font-size, 12px);
118
+ font-weight: var(--media-live-button-font-weight, 600);
119
+ letter-spacing: var(--media-live-button-letter-spacing, 1.5px);
120
+ transition: color 0.3s ease;
121
+ }
122
+
123
+ .vds-live-button-text {
124
+ background-color: var(--media-live-button-bg, #8a8a8a);
125
+ border-radius: var(--media-live-button-border-radius, 2px);
126
+ color: var(--media-live-button-color, #161616);
127
+ padding: var(--media-live-button-padding, 1px 4px);
128
+ }
129
+
130
+ :where(.vds-live-button[data-focus] .vds-live-button-text) {
131
+ box-shadow: var(--media-focus-ring);
132
+ }
133
+
134
+ :where(.vds-live-button[data-edge]) {
135
+ cursor: unset;
136
+ }
137
+
138
+ .vds-live-button[data-edge] .vds-live-button-text {
139
+ background-color: var(--media-live-button-edge-bg, #dc2626);
140
+ color: var(--media-live-button-edge-color, #f5f5f5);
141
+ }
142
+
143
+ @media (pointer: fine) {
144
+ :where(.vds-live-button:hover) {
145
+ background-color: unset;
146
+ }
147
+ }
148
+
149
+ /*
150
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151
+ * States
152
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153
+ */
154
+
155
+ /* Play Button */
156
+ .vds-button:not([data-paused]) .vds-play-icon,
157
+ .vds-button[data-ended] .vds-play-icon,
158
+ .vds-button[data-paused] .vds-pause-icon,
159
+ .vds-button[data-ended] .vds-pause-icon,
160
+ .vds-button:not([data-ended]) .vds-replay-icon,
161
+ /* PIP Button */
162
+ .vds-button[data-active] .vds-pip-enter-icon,
163
+ .vds-button:not([data-active]) .vds-pip-exit-icon,
164
+ /* Fullscreen Button */
165
+ .vds-button[data-active] .vds-fs-enter-icon,
166
+ .vds-button:not([data-active]) .vds-fs-exit-icon,
167
+ /* Caption Button */
168
+ .vds-button:not([data-active]) .vds-cc-on-icon,
169
+ .vds-button[data-active] .vds-cc-off-icon,
170
+ /* Mute Button */
171
+ .vds-button:not([data-muted]) .vds-mute-icon,
172
+ .vds-button:not([data-state='low']) .vds-volume-low-icon,
173
+ .vds-button:not([data-state='high']) .vds-volume-high-icon {
174
+ display: none;
175
+ }
@@ -0,0 +1,181 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Captions
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ :where(.vds-captions) {
8
+ /* Recommended settings in the WebVTT spec (https://www.w3.org/TR/webvtt1). */
9
+ --overlay-padding: var(--media-captions-padding, 1%);
10
+ --cue-color: var(--media-user-text-color, var(--media-cue-color, white));
11
+ --cue-bg-color: var(--media-user-text-bg, var(--media-cue-bg, rgba(0, 0, 0, 0.7)));
12
+ --cue-default-font-size: var(--media-cue-font-size, calc(var(--overlay-height) / 100 * 4.5));
13
+ --cue-font-size: calc(var(--cue-default-font-size) * var(--media-user-font-size, 1));
14
+ --cue-line-height: var(--media-cue-line-height, calc(var(--cue-font-size) * 1.2));
15
+ --cue-padding-x: var(--media-cue-padding-x, calc(var(--cue-font-size) * 0.6));
16
+ --cue-padding-y: var(--media-cue-padding-x, calc(var(--cue-font-size) * 0.4));
17
+ --cue-padding: var(--cue-padding-y) var(--cue-padding-x);
18
+ position: absolute;
19
+ inset: 0;
20
+ z-index: 1;
21
+ contain: layout style;
22
+ margin: var(--overlay-padding);
23
+ font-size: var(--cue-font-size);
24
+ font-family: var(--media-user-font-family, sans-serif);
25
+ box-sizing: border-box;
26
+ pointer-events: none;
27
+ user-select: none;
28
+ word-spacing: normal;
29
+ word-break: break-word;
30
+ }
31
+
32
+ :where([data-fullscreen][data-orientation='portrait'] .vds-captions) {
33
+ --cue-default-font-size: var(--media-cue-font-size, calc(var(--overlay-width) / 100 * 4.5));
34
+ }
35
+
36
+ :where([data-view-type='audio'] .vds-captions) {
37
+ position: relative;
38
+ margin: 0;
39
+ }
40
+
41
+ :where(.vds-captions[aria-hidden='true']) {
42
+ opacity: 0;
43
+ visibility: hidden;
44
+ }
45
+
46
+ .vds-captions[data-example] {
47
+ opacity: 1 !important;
48
+ visibility: visible !important;
49
+ }
50
+
51
+ :where([data-view-type='video'] .vds-captions [data-part='cue-display'][data-example]) {
52
+ --cue-text-align: center;
53
+ --cue-width: 100%;
54
+ --cue-top: 90%;
55
+ --cue-left: 0%;
56
+ }
57
+
58
+ :where([data-view-type='audio'] .vds-captions [data-part='cue-display']) {
59
+ --cue-width: 100%;
60
+ position: relative !important;
61
+ }
62
+
63
+ /*
64
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65
+ * VTT Cues
66
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
+ */
68
+
69
+ :where(.vds-captions [data-part='cue-display']) {
70
+ position: absolute;
71
+ direction: ltr;
72
+ overflow: visible;
73
+ contain: content;
74
+ top: var(--cue-top);
75
+ left: var(--cue-left);
76
+ right: var(--cue-right);
77
+ bottom: var(--cue-bottom);
78
+ width: var(--cue-width, auto);
79
+ height: var(--cue-height, auto);
80
+ box-sizing: border-box;
81
+ transform: var(--cue-transform);
82
+ text-align: var(--cue-text-align);
83
+ writing-mode: var(--cue-writing-mode, unset);
84
+ white-space: pre-line;
85
+ unicode-bidi: plaintext;
86
+ min-width: min-content;
87
+ min-height: min-content;
88
+ background-color: var(--media-user-display-bg, var(--media-cue-display-bg));
89
+ border-radius: var(--media-cue-display-border-radius);
90
+ }
91
+
92
+ .vds-captions [data-part='cue-display'] {
93
+ padding: var(--media-cue-display-padding);
94
+ }
95
+
96
+ :where(.vds-captions[data-dir='rtl'] [data-part='cue-display']) {
97
+ direction: rtl;
98
+ }
99
+
100
+ :where(.vds-captions [data-part='cue']) {
101
+ display: inline-block;
102
+ contain: content;
103
+ font-variant: var(--media-user-font-variant);
104
+ border: var(--media-cue-border, unset);
105
+ border-radius: var(--media-cue-border-radius, 2px);
106
+ backdrop-filter: var(--media-cue-backdrop, blur(8px));
107
+ line-height: var(--cue-line-height);
108
+ box-sizing: border-box;
109
+ box-shadow: var(--media-cue-box-shadow, var(--cue-box-shadow));
110
+ white-space: var(--cue-white-space, pre-wrap);
111
+ outline: var(--cue-outline);
112
+ text-shadow: var(--media-user-text-shadow, var(--cue-text-shadow));
113
+ }
114
+
115
+ .vds-captions [data-part='cue'] {
116
+ background-color: var(--cue-bg-color);
117
+ color: var(--cue-color);
118
+ padding: var(--cue-padding);
119
+ }
120
+
121
+ :where(.vds-captions [data-part='cue-display'][data-vertical] [data-part='cue']) {
122
+ --cue-padding: var(--cue-padding-x) var(--cue-padding-y);
123
+ }
124
+
125
+ /*
126
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127
+ * VTT Regions
128
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129
+ */
130
+
131
+ :where(.vds-captions [data-part='region']) {
132
+ --anchor-x-percent: calc(var(--region-anchor-x) / 100);
133
+ --anchor-x: calc(var(--region-width) * var(--anchor-x-percent));
134
+ --anchor-y-percent: calc(var(--region-anchor-y) / 100);
135
+ --anchor-y: calc(var(--region-height) * var(--anchor-y-percent));
136
+ --vp-anchor-x: calc(var(--region-viewport-anchor-x) * 1%);
137
+ --vp-anchor-y-percent: calc(var(--region-viewport-anchor-y) / 100);
138
+ --vp-anchor-y: calc(var(--overlay-height) * var(--vp-anchor-y-percent));
139
+ position: absolute;
140
+ display: inline-flex;
141
+ flex-flow: column;
142
+ justify-content: flex-start;
143
+ width: var(--region-width);
144
+ height: var(--region-height);
145
+ min-height: 0px;
146
+ max-height: var(--region-height);
147
+ writing-mode: horizontal-tb;
148
+ top: var(--region-top, calc(var(--vp-anchor-y) - var(--anchor-y)));
149
+ left: var(--region-left, calc(var(--vp-anchor-x) - var(--anchor-x)));
150
+ right: var(--region-right);
151
+ bottom: var(--region-bottom);
152
+ overflow: hidden;
153
+ overflow-wrap: break-word;
154
+ box-sizing: border-box;
155
+ }
156
+
157
+ :where(.vds-captions [data-part='region'][data-active]) {
158
+ }
159
+
160
+ :where(.vds-captions [data-part='region'][data-scroll='up']) {
161
+ justify-content: end;
162
+ }
163
+
164
+ :where(.vds-captions [data-part='region'][data-active][data-scroll='up']) {
165
+ transition: top 0.433s;
166
+ }
167
+
168
+ :where(.vds-captions [data-part='region'] > [data-part='cue-display']) {
169
+ position: relative;
170
+ width: auto;
171
+ left: var(--cue-offset);
172
+ height: var(--cue-height, auto);
173
+ text-align: var(--cue-text-align);
174
+ unicode-bidi: plaintext;
175
+ margin-top: 2px;
176
+ }
177
+
178
+ :where(.vds-captions [data-part='region'] [data-part='cue']) {
179
+ position: relative;
180
+ border-radius: 0px;
181
+ }
@@ -0,0 +1,26 @@
1
+ :where(.vds-chapter-title) {
2
+ --color: var(--media-chapter-title-color, rgba(255 255 255 / 0.64));
3
+ display: inline-block;
4
+ font-family: var(--media-font-family, sans-serif);
5
+ font-size: var(--media-chapter-title-font-size, 16px);
6
+ font-weight: var(--media-chapter-title-font-weight, 400);
7
+ color: var(--color);
8
+ flex: 1 1 0%;
9
+ padding-inline: 6px;
10
+ overflow: hidden;
11
+ text-align: start;
12
+ white-space: nowrap;
13
+ text-overflow: ellipsis;
14
+ }
15
+
16
+ .vds-chapter-title::before {
17
+ content: var(--media-chapter-title-separator, '\2022');
18
+ display: inline-block;
19
+ margin-right: var(--media-chapter-title-separator-gap, 6px);
20
+ color: var(--media-chapter-title-separator-color, var(--color));
21
+ }
22
+
23
+ .vds-chapter-title:empty::before {
24
+ content: '';
25
+ margin: 0;
26
+ }
@@ -0,0 +1,56 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Controls
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ :where(.vds-controls),
8
+ :where(.vds-controls-group) {
9
+ position: relative;
10
+ display: inline-block;
11
+ width: 100%;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ /*
16
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
+ * Audio Controls
18
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
+ */
20
+
21
+ :where([data-view-type='audio'] .vds-controls) {
22
+ display: inline-block;
23
+ max-width: 100%;
24
+ }
25
+
26
+ /*
27
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28
+ * Video Controls
29
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30
+ */
31
+
32
+ :where([data-view-type='video'] .vds-controls) {
33
+ display: flex;
34
+ position: absolute;
35
+ flex-direction: column;
36
+ inset: 0;
37
+ width: 100%;
38
+ height: 100%;
39
+ z-index: 10;
40
+ opacity: 0;
41
+ visibility: hidden;
42
+ pointer-events: none;
43
+ padding: var(--media-controls-padding, 0px);
44
+ transition: var(--media-controls-out-transition, opacity 0.2s ease-out);
45
+ }
46
+
47
+ :where([data-view-type='video'] .vds-controls[data-visible]) {
48
+ opacity: 1;
49
+ visibility: visible;
50
+ transition: var(--media-controls-in-transition, opacity 0.2s ease-in);
51
+ }
52
+
53
+ :where(.vds-controls-spacer) {
54
+ flex: 1 1 0%;
55
+ pointer-events: none;
56
+ }
@@ -0,0 +1,19 @@
1
+ /*
2
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
+ * Gesture
4
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
+ */
6
+
7
+ :where(.vds-gestures) {
8
+ display: contents;
9
+ }
10
+
11
+ :where(.vds-gesture) {
12
+ position: absolute;
13
+ display: block;
14
+ contain: content;
15
+ z-index: 0;
16
+ opacity: 0;
17
+ visibility: hidden;
18
+ pointer-events: none !important;
19
+ }
@@ -0,0 +1,6 @@
1
+ :where(.vds-icon svg) {
2
+ display: block;
3
+ width: 100%;
4
+ height: 100%;
5
+ vertical-align: middle;
6
+ }