@videojs/react 10.0.0-beta.30 → 10.0.0-beta.31

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 (130) hide show
  1. package/dist/default/i18n/context.js.map +1 -1
  2. package/dist/default/i18n/create-i18n.js +3 -1
  3. package/dist/default/i18n/create-i18n.js.map +1 -1
  4. package/dist/default/i18n/get-provider-root-props.js +4 -2
  5. package/dist/default/i18n/get-provider-root-props.js.map +1 -1
  6. package/dist/default/player/container.js +16 -7
  7. package/dist/default/player/container.js.map +1 -1
  8. package/dist/default/presets/audio/minimal-skin.css +39 -7
  9. package/dist/default/presets/audio/skin.css +31 -7
  10. package/dist/default/presets/live-audio/minimal-skin.css +39 -7
  11. package/dist/default/presets/live-audio/skin.css +31 -7
  12. package/dist/default/presets/live-video/minimal-skin.css +39 -7
  13. package/dist/default/presets/live-video/minimal-skin.js +4 -1
  14. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  15. package/dist/default/presets/live-video/minimal-skin.tailwind.js +4 -1
  16. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  17. package/dist/default/presets/live-video/skin.css +31 -7
  18. package/dist/default/presets/live-video/skin.js +4 -1
  19. package/dist/default/presets/live-video/skin.js.map +1 -1
  20. package/dist/default/presets/live-video/skin.tailwind.js +4 -1
  21. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  22. package/dist/default/presets/video/minimal-skin.css +39 -7
  23. package/dist/default/presets/video/minimal-skin.js +27 -11
  24. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  25. package/dist/default/presets/video/minimal-skin.tailwind.js +28 -12
  26. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  27. package/dist/default/presets/video/skin.css +31 -7
  28. package/dist/default/presets/video/skin.js +27 -11
  29. package/dist/default/presets/video/skin.js.map +1 -1
  30. package/dist/default/presets/video/skin.tailwind.js +28 -12
  31. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  32. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  33. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  34. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  35. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  36. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -7
  37. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  38. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  39. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  40. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  41. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  42. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  43. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  44. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  45. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  46. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  47. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  48. package/dist/default/ui/hooks/use-slider.js +1 -2
  49. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  50. package/dist/dev/i18n/context.d.ts +3 -1
  51. package/dist/dev/i18n/context.d.ts.map +1 -1
  52. package/dist/dev/i18n/context.js.map +1 -1
  53. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  54. package/dist/dev/i18n/create-i18n.js +3 -1
  55. package/dist/dev/i18n/create-i18n.js.map +1 -1
  56. package/dist/dev/i18n/get-provider-root-props.js +4 -2
  57. package/dist/dev/i18n/get-provider-root-props.js.map +1 -1
  58. package/dist/dev/player/container.d.ts.map +1 -1
  59. package/dist/dev/player/container.js +16 -7
  60. package/dist/dev/player/container.js.map +1 -1
  61. package/dist/dev/presets/audio/minimal-skin.css +39 -7
  62. package/dist/dev/presets/audio/skin.css +31 -7
  63. package/dist/dev/presets/live-audio/minimal-skin.css +39 -7
  64. package/dist/dev/presets/live-audio/skin.css +31 -7
  65. package/dist/dev/presets/live-video/minimal-skin.css +39 -7
  66. package/dist/dev/presets/live-video/minimal-skin.js +4 -1
  67. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  68. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +4 -1
  69. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  70. package/dist/dev/presets/live-video/skin.css +31 -7
  71. package/dist/dev/presets/live-video/skin.js +4 -1
  72. package/dist/dev/presets/live-video/skin.js.map +1 -1
  73. package/dist/dev/presets/live-video/skin.tailwind.js +4 -1
  74. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  75. package/dist/dev/presets/video/minimal-skin.css +39 -7
  76. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  77. package/dist/dev/presets/video/minimal-skin.js +27 -11
  78. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  79. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  80. package/dist/dev/presets/video/minimal-skin.tailwind.js +28 -12
  81. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  82. package/dist/dev/presets/video/skin.css +31 -7
  83. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  84. package/dist/dev/presets/video/skin.js +27 -11
  85. package/dist/dev/presets/video/skin.js.map +1 -1
  86. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  87. package/dist/dev/presets/video/skin.tailwind.js +28 -12
  88. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  89. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  90. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  91. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  92. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  93. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -7
  94. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  95. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  96. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  97. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  98. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  99. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  100. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  101. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  102. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  103. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  104. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  105. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  106. package/dist/dev/ui/hooks/use-slider.js +1 -2
  107. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  108. package/docs/README.md +1 -1
  109. package/docs/concepts/media-sources.md +26 -2
  110. package/docs/concepts/skins.md +48 -16
  111. package/docs/how-to/customize-skins.md +7933 -50
  112. package/docs/how-to/i18n-switch-locale.md +27 -0
  113. package/docs/how-to/installation.md +4 -4
  114. package/docs/how-to/migrate-from-plyr.md +1 -1
  115. package/docs/llms.txt +7 -0
  116. package/docs/reference/cloudflare-video.md +223 -0
  117. package/docs/reference/dash-video.md +55 -0
  118. package/docs/reference/feature-metadata.md +3 -1
  119. package/docs/reference/hls-audio.md +27 -1
  120. package/docs/reference/hls-video.md +39 -1
  121. package/docs/reference/hlsjs-video.md +627 -0
  122. package/docs/reference/native-hls-video.md +41 -0
  123. package/docs/reference/shaka-video.md +359 -0
  124. package/docs/reference/spotify-audio.md +188 -0
  125. package/docs/reference/tiktok-video.md +280 -0
  126. package/docs/reference/title.md +1 -1
  127. package/docs/reference/twitch-video.md +211 -0
  128. package/docs/reference/vimeo-video.md +736 -0
  129. package/docs/reference/youtube-video.md +339 -0
  130. package/package.json +8 -8
@@ -0,0 +1,339 @@
1
+ # YouTubeVideo
2
+
3
+ Video component that plays YouTube videos and playlists through the YouTube IFrame player
4
+
5
+ Video component that plays YouTube videos and playlists through the [YouTube IFrame player](https://developers.google.com/youtube/iframe_api_reference). YouTube’s own chrome stays hidden by default, so it drops into a [player skin](../concepts/skins.md) like any other media component; set `controls` to use YouTube’s UI instead.
6
+
7
+ ## Load a source
8
+
9
+ `src` takes a YouTube URL or a raw 11-character video id. Watch, share (`youtu.be`), embed, Shorts, live, and privacy-enhanced (`youtube-nocookie.com`) URLs all work. Playlist URLs load through their `list` parameter, and a `t` parameter sets the start position.
10
+
11
+ tsx
12
+
13
+ ```
14
+ <YouTubeVideo src="https://www.youtube.com/watch?v=aqz-KE-bpKQ" />
15
+ ```
16
+
17
+ ## Behavior
18
+
19
+ A few things work differently from a native `<video>` element, because the IFrame API doesn’t expose them:
20
+
21
+ * `loop` restarts playback when the video ends; the IFrame API has no single-video loop.
22
+ * Fullscreen targets the iframe, so YouTube’s own chrome shows in fullscreen.
23
+ * Picture-in-picture is unavailable, and the player reports it as unsupported.
24
+ * Caption tracks appear in `textTracks` once playback starts; YouTube reports no caption metadata before then.
25
+
26
+ ## Examples
27
+
28
+ ### Basic Usage
29
+
30
+ App.tsx
31
+
32
+ App.css
33
+
34
+ ```
35
+ import { YouTubeVideo } from '@videojs/react/media/youtube-video';
36
+
37
+ export default function BasicUsage() {
38
+ return (
39
+ <div className="youtube-video">
40
+ <YouTubeVideo src="https://www.youtube.com/watch?v=aqz-KE-bpKQ" controls />
41
+ </div>
42
+ );
43
+ }
44
+ ```
45
+ ```
46
+ .youtube-video {
47
+ width: 100%;
48
+ aspect-ratio: 16 / 9;
49
+ }
50
+ ```
51
+
52
+ ## API Reference
53
+
54
+ ### Props
55
+
56
+ Accepts these Video.js-specific props:
57
+
58
+ Prop
59
+
60
+ Type
61
+
62
+ Default
63
+
64
+ Details
65
+
66
+ `autoplay`
67
+
68
+ `boolean`
69
+
70
+ `false`
71
+
72
+ `controls`
73
+
74
+ `boolean`
75
+
76
+ `false`
77
+
78
+ `defaultMuted`
79
+
80
+ `boolean`
81
+
82
+ `false`
83
+
84
+ `loop`
85
+
86
+ `boolean`
87
+
88
+ `false`
89
+
90
+ `muted`
91
+
92
+ `boolean`
93
+
94
+ `false`
95
+
96
+ `playsInline`
97
+
98
+ `boolean`
99
+
100
+ `true`
101
+
102
+ `poster`
103
+
104
+ `string`
105
+
106
+ `''`
107
+
108
+ `preload`
109
+
110
+ `MediaPreloadType`
111
+
112
+ `'metadata'`
113
+
114
+ `source`
115
+
116
+ `YouTubeSource | null`
117
+
118
+ `null`
119
+
120
+
121
+
122
+ Description
123
+
124
+ YouTube URL or id in `src`, plus player parameters under `engine.youtube`. Replacing it re-derives `src`.
125
+
126
+ `src`
127
+
128
+ `string`
129
+
130
+ `''`
131
+
132
+ ### Engine options
133
+
134
+ #### `source.engine.youtube`
135
+
136
+ Pass [YouTube player parameters](https://developers.google.com/youtube/player_parameters) under `source.engine.youtube`, spelled exactly as YouTube spells them. They’re serialized onto the embed URL untouched, and the embed reads them once, when its URL is built. [Media Sources](../concepts/media-sources.md) covers how engine options fit into a structured source.
137
+
138
+ `autoplay`, `controls`, and `playsinline` come from the props of the same name, so they have no `engine.youtube` spelling. Parameters YouTube has deprecated are absent as well: `modestbranding`, `showinfo`, `autohide`, `theme`, and `listType: 'search'`. Anything YouTube adds next passes through the same way.
139
+
140
+ tsx
141
+
142
+ ```
143
+ <YouTubeVideo
144
+ source={{
145
+ src: 'https://www.youtube.com/watch?v=aqz-KE-bpKQ',
146
+ engine: { youtube: { hl: 'de', cc_load_policy: 1 } },
147
+ }}
148
+ />
149
+ ```
150
+
151
+ Option
152
+
153
+ Type
154
+
155
+ Details
156
+
157
+ `cc_lang_pref`
158
+
159
+ `string`
160
+
161
+
162
+
163
+ Description
164
+
165
+ ISO 639-1 language to display captions in. Pair with `cc_load_policy`.
166
+
167
+ `cc_load_policy`
168
+
169
+ `1`
170
+
171
+
172
+
173
+ Description
174
+
175
+ Show closed captions by default, even if the viewer has turned them off.
176
+
177
+ `color`
178
+
179
+ `"red" | "white"`
180
+
181
+
182
+
183
+ Description
184
+
185
+ Progress-bar highlight color. Defaults to `'red'`.
186
+
187
+ `disablekb`
188
+
189
+ `0 | 1`
190
+
191
+
192
+
193
+ Description
194
+
195
+ Stop responding to keyboard controls. Defaults to `0`.
196
+
197
+ `enablejsapi`
198
+
199
+ `0 | 1`
200
+
201
+
202
+
203
+ Description
204
+
205
+ Allow the player to be driven through the IFrame Player API. Defaults to `0`.
206
+
207
+ `end`
208
+
209
+ `number`
210
+
211
+
212
+
213
+ Description
214
+
215
+ Stop playback this many seconds from the start of the video.
216
+
217
+ `fs`
218
+
219
+ `0 | 1`
220
+
221
+
222
+
223
+ Description
224
+
225
+ Display the fullscreen button. Defaults to `1`.
226
+
227
+ `hl`
228
+
229
+ `string`
230
+
231
+
232
+
233
+ Description
234
+
235
+ Player interface language: an ISO 639-1 code or full locale (`fr`, `fr-ca`).
236
+
237
+ `iv_load_policy`
238
+
239
+ `1 | 3`
240
+
241
+
242
+
243
+ Description
244
+
245
+ Show video annotations (`1`) or hide them (`3`). Defaults to `1`.
246
+
247
+ `list`
248
+
249
+ `string`
250
+
251
+
252
+
253
+ Description
254
+
255
+ Playlist id (prefixed with `PL`) or channel name, depending on `listType`.
256
+
257
+ `listType`
258
+
259
+ `"playlist" | "user_uploads"`
260
+
261
+
262
+
263
+ Description
264
+
265
+ What `list` refers to.
266
+
267
+ `loop`
268
+
269
+ `0 | 1`
270
+
271
+
272
+
273
+ Description
274
+
275
+ Repeat playback. Looping a single video also needs `playlist` set to the same id.
276
+
277
+ `origin`
278
+
279
+ `string`
280
+
281
+
282
+
283
+ Description
284
+
285
+ Embedding domain. Set it whenever `enablejsapi` is `1`.
286
+
287
+ `playlist`
288
+
289
+ `string`
290
+
291
+
292
+
293
+ Description
294
+
295
+ Comma-separated video ids to play after the one named by the URL path.
296
+
297
+ `referrerPolicy`
298
+
299
+ `ReferrerPolicy`
300
+
301
+
302
+
303
+ Description
304
+
305
+ `referrerpolicy` for the embed iframe. Not a YouTube player parameter.
306
+
307
+ `rel`
308
+
309
+ `0 | 1`
310
+
311
+
312
+
313
+ Description
314
+
315
+ Draw related videos from the same channel (`0`) or anywhere (`1`). Defaults to `1`.
316
+
317
+ `start`
318
+
319
+ `number`
320
+
321
+
322
+
323
+ Description
324
+
325
+ Begin playback this many seconds from the start of the video.
326
+
327
+ `widget_referrer`
328
+
329
+ `string`
330
+
331
+
332
+
333
+ Description
334
+
335
+ Embedding URL reported to YouTube Analytics for widget-hosted players.
336
+
337
+ ### Ref
338
+
339
+ Forwards its ref to the rendered `<iframe>`. The ref is an [HTMLIFrameElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement). Control playback with the component props and player APIs rather than the iframe ref.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@videojs/react",
3
3
  "type": "module",
4
- "version": "10.0.0-beta.30",
4
+ "version": "10.0.0-beta.31",
5
5
  "description": "React library for building media players",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -132,11 +132,11 @@
132
132
  "react-dom": "^18.0.0 || ^19.0.0"
133
133
  },
134
134
  "dependencies": {
135
- "@videojs/core": "10.0.0-beta.30",
136
- "@videojs/spf": "10.0.0-beta.30",
137
- "@videojs/media": "10.0.0-beta.30",
138
- "@videojs/store": "10.0.0-beta.30",
139
- "@videojs/utils": "10.0.0-beta.30"
135
+ "@videojs/media": "10.0.0-beta.31",
136
+ "@videojs/spf": "10.0.0-beta.31",
137
+ "@videojs/store": "10.0.0-beta.31",
138
+ "@videojs/utils": "10.0.0-beta.31",
139
+ "@videojs/core": "10.0.0-beta.31"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@testing-library/react": "^16.3.0",
@@ -148,8 +148,8 @@
148
148
  "typescript": "6.0.2",
149
149
  "vitest": "^4.1.10",
150
150
  "vjsc": "0.0.0",
151
- "@videojs/icons": "10.0.0-beta.30",
152
- "@videojs/skins": "10.0.0-beta.30"
151
+ "@videojs/skins": "10.0.0-beta.31",
152
+ "@videojs/icons": "10.0.0-beta.31"
153
153
  },
154
154
  "publishConfig": {
155
155
  "access": "public"