@hanifhan1f/vidstack-react 1.12.34 → 1.12.36
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.
- package/package.json +1 -1
- package/player/layouts/default.d.ts +9 -1
- package/dev/chunks/vidstack-3rdEWplD.js +0 -189
- package/dev/chunks/vidstack-B-FM4-oZ.js +0 -668
- package/dev/chunks/vidstack-B92UncBI.js +0 -61
- package/dev/chunks/vidstack-BDiAEW1N.js +0 -11691
- package/dev/chunks/vidstack-BNwnoM-l.js +0 -84
- package/dev/chunks/vidstack-BOPSNTgH.js +0 -668
- package/dev/chunks/vidstack-BPymmnxm.js +0 -551
- package/dev/chunks/vidstack-BSZY6sbC.js +0 -180
- package/dev/chunks/vidstack-BSpAxhO6.js +0 -643
- package/dev/chunks/vidstack-BVVxkUlq.js +0 -288
- package/dev/chunks/vidstack-BXgKy_7V.js +0 -11693
- package/dev/chunks/vidstack-BalWqr4j.js +0 -1422
- package/dev/chunks/vidstack-Bfi_jCvb.js +0 -476
- package/dev/chunks/vidstack-BoLZuw80.js +0 -34
- package/dev/chunks/vidstack-BrqDQG-r.js +0 -643
- package/dev/chunks/vidstack-C3QPOZNd.js +0 -476
- package/dev/chunks/vidstack-C7BwfK5c.js +0 -1537
- package/dev/chunks/vidstack-CEUjDh4x.js +0 -34
- package/dev/chunks/vidstack-CFOPpDTy.js +0 -476
- package/dev/chunks/vidstack-CFZ0rYJz.js +0 -34
- package/dev/chunks/vidstack-CKsUl4ll.js +0 -1384
- package/dev/chunks/vidstack-CM82l-7o.js +0 -551
- package/dev/chunks/vidstack-CQSHFVu7.js +0 -401
- package/dev/chunks/vidstack-CXrXBlpD.js +0 -11692
- package/dev/chunks/vidstack-CevuS08D.js +0 -1504
- package/dev/chunks/vidstack-CkRXb9Ia.js +0 -1537
- package/dev/chunks/vidstack-CniPzPQc.js +0 -1537
- package/dev/chunks/vidstack-CqNX679o.js +0 -669
- package/dev/chunks/vidstack-Csfg08VS.js +0 -551
- package/dev/chunks/vidstack-CvWDiSTs.js +0 -84
- package/dev/chunks/vidstack-CzU-uC5f.js +0 -189
- package/dev/chunks/vidstack-D2Bi2Td9.js +0 -1537
- package/dev/chunks/vidstack-D3ZXOE4d.js +0 -643
- package/dev/chunks/vidstack-D6_9yy0x.js +0 -643
- package/dev/chunks/vidstack-DJQOTrl6.js +0 -180
- package/dev/chunks/vidstack-DNbKNc4R.js +0 -288
- package/dev/chunks/vidstack-DOtIyh4c.js +0 -288
- package/dev/chunks/vidstack-DTow20pt.js +0 -189
- package/dev/chunks/vidstack-DY2iivhG.js +0 -84
- package/dev/chunks/vidstack-DjqYvkVp.js +0 -84
- package/dev/chunks/vidstack-Dov8gjdq.js +0 -401
- package/dev/chunks/vidstack-DqaqkU4T.js +0 -9
- package/dev/chunks/vidstack-DwdhbP5c.js +0 -189
- package/dev/chunks/vidstack-DweQYzVw.js +0 -180
- package/dev/chunks/vidstack-FuCbl228.js +0 -226
- package/dev/chunks/vidstack-H9OdEKUQ.js +0 -375
- package/dev/chunks/vidstack-KntYDWMe.js +0 -668
- package/dev/chunks/vidstack-L5mw2iPb.js +0 -375
- package/dev/chunks/vidstack-NCBSBZE-.js +0 -61
- package/dev/chunks/vidstack-PREbBNMG.js +0 -125
- package/dev/chunks/vidstack-S_S6XDnL.js +0 -375
- package/dev/chunks/vidstack-UWMPvwsa.js +0 -1537
- package/dev/chunks/vidstack-f6WXkmfP.js +0 -375
- package/dev/chunks/vidstack-gqKBE4xH.js +0 -376
- package/dev/chunks/vidstack-iRuTLfhk.js +0 -61
- package/dev/chunks/vidstack-lYFZKRUc.js +0 -401
- package/dev/chunks/vidstack-oOGofWSl.js +0 -668
- package/dev/chunks/vidstack-vh0BKYWJ.js +0 -84
- package/prod/chunks/vidstack-0Foyib2F.js +0 -34
- package/prod/chunks/vidstack-58ZavMvv.js +0 -159
- package/prod/chunks/vidstack-B0SSIHIv.js +0 -1537
- package/prod/chunks/vidstack-B9nEslvl.js +0 -11197
- package/prod/chunks/vidstack-BCBskRpc.js +0 -664
- package/prod/chunks/vidstack-BOObgZd8.js +0 -504
- package/prod/chunks/vidstack-BS445j5D.js +0 -84
- package/prod/chunks/vidstack-BZVrgeRF.js +0 -9
- package/prod/chunks/vidstack-B_9VGrZQ.js +0 -504
- package/prod/chunks/vidstack-B_wD853-.js +0 -386
- package/prod/chunks/vidstack-BbPEqH3g.js +0 -11196
- package/prod/chunks/vidstack-Bh7M8kL6.js +0 -663
- package/prod/chunks/vidstack-BlPINAXN.js +0 -189
- package/prod/chunks/vidstack-Bm2UemPE.js +0 -470
- package/prod/chunks/vidstack-Bp_hAwzI.js +0 -61
- package/prod/chunks/vidstack-C4tNkfXj.js +0 -470
- package/prod/chunks/vidstack-C4tuISYG.js +0 -1504
- package/prod/chunks/vidstack-C5Rzkyfp.js +0 -375
- package/prod/chunks/vidstack-CKapDFwB.js +0 -376
- package/prod/chunks/vidstack-CNJwYQRW.js +0 -84
- package/prod/chunks/vidstack-CQll06Hv.js +0 -34
- package/prod/chunks/vidstack-CVzVtf1j.js +0 -61
- package/prod/chunks/vidstack-CYK75vJF.js +0 -1382
- package/prod/chunks/vidstack-CZNlvfmV.js +0 -288
- package/prod/chunks/vidstack-CbejzCJs.js +0 -1537
- package/prod/chunks/vidstack-CiQEyk_l.js +0 -189
- package/prod/chunks/vidstack-CiTWSpv_.js +0 -34
- package/prod/chunks/vidstack-CikQpsuo.js +0 -1537
- package/prod/chunks/vidstack-CtxjO6HG.js +0 -84
- package/prod/chunks/vidstack-CzjHdPIT.js +0 -375
- package/prod/chunks/vidstack-D0XCUWbp.js +0 -159
- package/prod/chunks/vidstack-D3cSYtez.js +0 -663
- package/prod/chunks/vidstack-D91K36KQ.js +0 -206
- package/prod/chunks/vidstack-DJThTSEm.js +0 -125
- package/prod/chunks/vidstack-DTyDOhwS.js +0 -504
- package/prod/chunks/vidstack-DVMwXUgY.js +0 -189
- package/prod/chunks/vidstack-DXSNXDnS.js +0 -1384
- package/prod/chunks/vidstack-D_Sd7838.js +0 -663
- package/prod/chunks/vidstack-D_ijTIbV.js +0 -11198
- package/prod/chunks/vidstack-DdiGCJVp.js +0 -504
- package/prod/chunks/vidstack-DgGDsAKh.js +0 -375
- package/prod/chunks/vidstack-DgsBXr1J.js +0 -84
- package/prod/chunks/vidstack-DhC5F6c8.js +0 -470
- package/prod/chunks/vidstack-DhSvljmQ.js +0 -375
- package/prod/chunks/vidstack-Djmla_FM.js +0 -545
- package/prod/chunks/vidstack-DpQw1Y33.js +0 -663
- package/prod/chunks/vidstack-DrEorv9m.js +0 -189
- package/prod/chunks/vidstack-Ma9rwtR0.js +0 -386
- package/prod/chunks/vidstack-VTpvHAdU.js +0 -1537
- package/prod/chunks/vidstack-dbLRgf2L.js +0 -159
- package/prod/chunks/vidstack-ehqxnvc9.js +0 -1537
- package/prod/chunks/vidstack-jIPoNqhj.js +0 -545
- package/prod/chunks/vidstack-lc8NHly9.js +0 -288
- package/prod/chunks/vidstack-rHvQ8f6c.js +0 -288
- package/prod/chunks/vidstack-rKV98aQH.js +0 -545
- package/prod/chunks/vidstack-uA7h-Bsq.js +0 -386
- package/prod/chunks/vidstack-xo_SmgiV.js +0 -84
- package/prod/chunks/vidstack-xvxeRtaN.js +0 -61
- package/server/chunks/vidstack--ufi23Q6.js +0 -1537
- package/server/chunks/vidstack-B3AXUfgF.js +0 -189
- package/server/chunks/vidstack-B4rJ1ZKK.js +0 -376
- package/server/chunks/vidstack-BJCx78pm.js +0 -386
- package/server/chunks/vidstack-BTdEfKqV.js +0 -84
- package/server/chunks/vidstack-BV_VpWlJ.js +0 -1537
- package/server/chunks/vidstack-BtitkRvR.js +0 -11198
- package/server/chunks/vidstack-BtqWstSj.js +0 -375
- package/server/chunks/vidstack-BweZhuNd.js +0 -1537
- package/server/chunks/vidstack-ByG5MvLs.js +0 -545
- package/server/chunks/vidstack-C-HdFsZi.js +0 -84
- package/server/chunks/vidstack-C0xOpWYR.js +0 -470
- package/server/chunks/vidstack-C481iXqe.js +0 -386
- package/server/chunks/vidstack-C4iWXMC-.js +0 -545
- package/server/chunks/vidstack-C5zFBMwg.js +0 -386
- package/server/chunks/vidstack-CEh38XpD.js +0 -288
- package/server/chunks/vidstack-CSiPajWY.js +0 -470
- package/server/chunks/vidstack-CbNRZgUA.js +0 -11197
- package/server/chunks/vidstack-CgXa6YO3.js +0 -61
- package/server/chunks/vidstack-CkMAeO-e.js +0 -34
- package/server/chunks/vidstack-Cm0qnRvu.js +0 -11196
- package/server/chunks/vidstack-CoGzBr_V.js +0 -663
- package/server/chunks/vidstack-Ct1NFlBa.js +0 -1537
- package/server/chunks/vidstack-CyFwkPiu.js +0 -470
- package/server/chunks/vidstack-D4t_SZbb.js +0 -1416
- package/server/chunks/vidstack-D7D9kiW6.js +0 -34
- package/server/chunks/vidstack-DH6N0AoF.js +0 -375
- package/server/chunks/vidstack-DJJmNib6.js +0 -504
- package/server/chunks/vidstack-DKr7br9D.js +0 -34
- package/server/chunks/vidstack-DM-5dPT-.js +0 -663
- package/server/chunks/vidstack-DOIUveQF.js +0 -504
- package/server/chunks/vidstack-DTn72IA8.js +0 -1504
- package/server/chunks/vidstack-DWfS9vAY.js +0 -84
- package/server/chunks/vidstack-DWt5LAKE.js +0 -375
- package/server/chunks/vidstack-DY51lx0R.js +0 -189
- package/server/chunks/vidstack-DbNoKLjz.js +0 -664
- package/server/chunks/vidstack-Dbs_rXUT.js +0 -663
- package/server/chunks/vidstack-DeS67_gx.js +0 -9
- package/server/chunks/vidstack-DiHlnSws.js +0 -1384
- package/server/chunks/vidstack-DnoqxmOs.js +0 -125
- package/server/chunks/vidstack-DsZKgA8y.js +0 -663
- package/server/chunks/vidstack-DtQSvsQr.js +0 -189
- package/server/chunks/vidstack-E7eUOyFt.js +0 -288
- package/server/chunks/vidstack-JkJEYEQM.js +0 -159
- package/server/chunks/vidstack-KhtuR229.js +0 -504
- package/server/chunks/vidstack-NXcLNXxO.js +0 -84
- package/server/chunks/vidstack-OKdxH1xx.js +0 -189
- package/server/chunks/vidstack-SkX-mSrw.js +0 -206
- package/server/chunks/vidstack-VGPw_CQP.js +0 -375
- package/server/chunks/vidstack-X1Hex9PH.js +0 -84
- package/server/chunks/vidstack-i9a2TQLO.js +0 -1537
- package/server/chunks/vidstack-iVN8uBAv.js +0 -288
- package/server/chunks/vidstack-jlaBqZq5.js +0 -61
- package/server/chunks/vidstack-m8aA99tE.js +0 -159
- package/server/chunks/vidstack-rUHVQoo3.js +0 -61
- package/server/chunks/vidstack-rWs25cS9.js +0 -159
- package/server/chunks/vidstack-uyCXITen.js +0 -504
- package/server/chunks/vidstack-yf18YVAb.js +0 -545
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanifhan1f/vidstack-react",
|
|
3
3
|
"description": "UI component library for building high-quality, accessible video and audio experiences on the web.",
|
|
4
|
-
"version": "1.12.
|
|
4
|
+
"version": "1.12.36",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"types": "index.d.ts",
|
|
@@ -1994,6 +1994,7 @@ interface VideoSrcMeta {
|
|
|
1994
1994
|
bitrate?: number;
|
|
1995
1995
|
framerate?: number;
|
|
1996
1996
|
codec?: string;
|
|
1997
|
+
label?: string;
|
|
1997
1998
|
}
|
|
1998
1999
|
interface HLSSrc {
|
|
1999
2000
|
src: string;
|
|
@@ -2013,7 +2014,7 @@ interface VimeoSrc {
|
|
|
2013
2014
|
src: string;
|
|
2014
2015
|
type: 'video/vimeo';
|
|
2015
2016
|
}
|
|
2016
|
-
declare function isVideoQualitySrc(src: Src): src is SetRequired<VideoSrc, '
|
|
2017
|
+
declare function isVideoQualitySrc(src: Src): src is SetRequired<VideoSrc, 'height' | 'label'>;
|
|
2017
2018
|
|
|
2018
2019
|
/**
|
|
2019
2020
|
* A simple facade for dispatching media requests to the nearest media player element.
|
|
@@ -2456,6 +2457,7 @@ interface VideoQuality extends SelectListItem {
|
|
|
2456
2457
|
readonly height: number;
|
|
2457
2458
|
readonly bitrate: number | null;
|
|
2458
2459
|
readonly codec: string | null;
|
|
2460
|
+
readonly label?: string;
|
|
2459
2461
|
}
|
|
2460
2462
|
|
|
2461
2463
|
declare class MediaPlayerDelegate {
|
|
@@ -10790,6 +10792,12 @@ interface DefaultLayoutEpisode {
|
|
|
10790
10792
|
runtime?: number;
|
|
10791
10793
|
episodeNumber?: number;
|
|
10792
10794
|
seasonNumber?: number;
|
|
10795
|
+
/** Highlights this row as the episode currently playing (e.g. in fullscreen episode list). */
|
|
10796
|
+
isActive?: boolean;
|
|
10797
|
+
/** Watch progress 0–100 for a progress bar on the thumbnail. */
|
|
10798
|
+
progressPercent?: number;
|
|
10799
|
+
/** Approximate whole minutes remaining (used when not the active playing row). */
|
|
10800
|
+
timeLeft?: number;
|
|
10793
10801
|
}
|
|
10794
10802
|
|
|
10795
10803
|
declare const DefaultLayoutContext: React.Context<DefaultLayoutContext>;
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { RadioGroupController, useMediaContext, menuContext, MediaRemoteControl, MediaPlayerInstance, sortVideoQualities } from './vidstack-C5tZAkKo.js';
|
|
5
|
-
import { useMediaContext as useMediaContext$1 } from './vidstack-oOGofWSl.js';
|
|
6
|
-
import { prop, method, Component, hasProvidedContext, useContext, effect, useSignal, isString } from './vidstack-D_bWd66h.js';
|
|
7
|
-
|
|
8
|
-
const DEFAULT_PLAYBACK_RATES = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];
|
|
9
|
-
class SpeedRadioGroup extends Component {
|
|
10
|
-
static props = {
|
|
11
|
-
normalLabel: "Normal",
|
|
12
|
-
rates: DEFAULT_PLAYBACK_RATES
|
|
13
|
-
};
|
|
14
|
-
#media;
|
|
15
|
-
#menu;
|
|
16
|
-
#controller;
|
|
17
|
-
get value() {
|
|
18
|
-
return this.#controller.value;
|
|
19
|
-
}
|
|
20
|
-
get disabled() {
|
|
21
|
-
const { rates } = this.$props, { canSetPlaybackRate } = this.#media.$state;
|
|
22
|
-
return !canSetPlaybackRate() || rates().length === 0;
|
|
23
|
-
}
|
|
24
|
-
constructor() {
|
|
25
|
-
super();
|
|
26
|
-
this.#controller = new RadioGroupController();
|
|
27
|
-
this.#controller.onValueChange = this.#onValueChange.bind(this);
|
|
28
|
-
}
|
|
29
|
-
onSetup() {
|
|
30
|
-
this.#media = useMediaContext();
|
|
31
|
-
if (hasProvidedContext(menuContext)) {
|
|
32
|
-
this.#menu = useContext(menuContext);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
onConnect(el) {
|
|
36
|
-
effect(this.#watchValue.bind(this));
|
|
37
|
-
effect(this.#watchHintText.bind(this));
|
|
38
|
-
effect(this.#watchControllerDisabled.bind(this));
|
|
39
|
-
}
|
|
40
|
-
getOptions() {
|
|
41
|
-
const { rates, normalLabel } = this.$props;
|
|
42
|
-
return rates().map((rate) => ({
|
|
43
|
-
label: rate === 1 ? normalLabel : rate + "\xD7",
|
|
44
|
-
value: rate.toString()
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
#watchValue() {
|
|
48
|
-
this.#controller.value = this.#getValue();
|
|
49
|
-
}
|
|
50
|
-
#watchHintText() {
|
|
51
|
-
const { normalLabel } = this.$props, { playbackRate } = this.#media.$state, rate = playbackRate();
|
|
52
|
-
this.#menu?.hint.set(rate === 1 ? normalLabel() : rate + "\xD7");
|
|
53
|
-
}
|
|
54
|
-
#watchControllerDisabled() {
|
|
55
|
-
this.#menu?.disable(this.disabled);
|
|
56
|
-
}
|
|
57
|
-
#getValue() {
|
|
58
|
-
const { playbackRate } = this.#media.$state;
|
|
59
|
-
return playbackRate().toString();
|
|
60
|
-
}
|
|
61
|
-
#onValueChange(value, trigger) {
|
|
62
|
-
if (this.disabled) return;
|
|
63
|
-
const rate = +value;
|
|
64
|
-
this.#media.remote.changePlaybackRate(rate, trigger);
|
|
65
|
-
this.dispatch("change", { detail: rate, trigger });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const speedradiogroup__proto = SpeedRadioGroup.prototype;
|
|
69
|
-
prop(speedradiogroup__proto, "value");
|
|
70
|
-
prop(speedradiogroup__proto, "disabled");
|
|
71
|
-
method(speedradiogroup__proto, "getOptions");
|
|
72
|
-
|
|
73
|
-
function useMediaRemote(target) {
|
|
74
|
-
const media = useMediaContext$1(), remote = React.useRef(null);
|
|
75
|
-
if (!remote.current) {
|
|
76
|
-
remote.current = new MediaRemoteControl();
|
|
77
|
-
}
|
|
78
|
-
React.useEffect(() => {
|
|
79
|
-
const ref = target && "current" in target ? target.current : target, isPlayerRef = ref instanceof MediaPlayerInstance, player = isPlayerRef ? ref : media?.player;
|
|
80
|
-
remote.current.setPlayer(player ?? null);
|
|
81
|
-
remote.current.setTarget(ref ?? null);
|
|
82
|
-
}, [media, target && "current" in target ? target.current : target]);
|
|
83
|
-
return remote.current;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function useVideoQualityOptions({
|
|
87
|
-
auto = true,
|
|
88
|
-
sort = "descending"
|
|
89
|
-
} = {}) {
|
|
90
|
-
const media = useMediaContext$1(), { qualities, quality, autoQuality, canSetQuality } = media.$state, $qualities = useSignal(qualities);
|
|
91
|
-
useSignal(quality);
|
|
92
|
-
useSignal(autoQuality);
|
|
93
|
-
useSignal(canSetQuality);
|
|
94
|
-
return React.useMemo(() => {
|
|
95
|
-
const sortedQualities = sortVideoQualities($qualities, sort === "descending"), options = sortedQualities.map((q) => {
|
|
96
|
-
return {
|
|
97
|
-
quality: q,
|
|
98
|
-
label: q.height + "p",
|
|
99
|
-
value: getQualityValue(q),
|
|
100
|
-
bitrateText: q.bitrate && q.bitrate > 0 ? `${(q.bitrate / 1e6).toFixed(2)} Mbps` : null,
|
|
101
|
-
get selected() {
|
|
102
|
-
return q === quality();
|
|
103
|
-
},
|
|
104
|
-
get autoSelected() {
|
|
105
|
-
return autoQuality();
|
|
106
|
-
},
|
|
107
|
-
select(trigger) {
|
|
108
|
-
const index = qualities().indexOf(q);
|
|
109
|
-
if (index >= 0) media.remote.changeQuality(index, trigger);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
});
|
|
113
|
-
if (auto) {
|
|
114
|
-
options.unshift({
|
|
115
|
-
quality: null,
|
|
116
|
-
label: isString(auto) ? auto : "Auto",
|
|
117
|
-
value: "auto",
|
|
118
|
-
bitrateText: null,
|
|
119
|
-
get selected() {
|
|
120
|
-
return autoQuality();
|
|
121
|
-
},
|
|
122
|
-
get autoSelected() {
|
|
123
|
-
return autoQuality();
|
|
124
|
-
},
|
|
125
|
-
select(trigger) {
|
|
126
|
-
media.remote.requestAutoQuality(trigger);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
Object.defineProperty(options, "disabled", {
|
|
131
|
-
get() {
|
|
132
|
-
return !canSetQuality() || $qualities.length <= 1;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
Object.defineProperty(options, "selectedQuality", {
|
|
136
|
-
get() {
|
|
137
|
-
return quality();
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
Object.defineProperty(options, "selectedValue", {
|
|
141
|
-
get() {
|
|
142
|
-
const $quality = quality();
|
|
143
|
-
return !autoQuality() && $quality ? getQualityValue($quality) : "auto";
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
return options;
|
|
147
|
-
}, [$qualities, sort]);
|
|
148
|
-
}
|
|
149
|
-
function getQualityValue(quality) {
|
|
150
|
-
return quality.height + "_" + quality.bitrate;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function usePlaybackRateOptions({
|
|
154
|
-
rates = DEFAULT_PLAYBACK_RATES,
|
|
155
|
-
normalLabel = "Normal"
|
|
156
|
-
} = {}) {
|
|
157
|
-
const media = useMediaContext$1(), { playbackRate, canSetPlaybackRate } = media.$state;
|
|
158
|
-
useSignal(playbackRate);
|
|
159
|
-
useSignal(canSetPlaybackRate);
|
|
160
|
-
return React.useMemo(() => {
|
|
161
|
-
const options = rates.map((opt) => {
|
|
162
|
-
const label = typeof opt === "number" ? opt === 1 && normalLabel ? normalLabel : opt + "x" : opt.label, rate = typeof opt === "number" ? opt : opt.rate;
|
|
163
|
-
return {
|
|
164
|
-
label,
|
|
165
|
-
value: rate.toString(),
|
|
166
|
-
rate,
|
|
167
|
-
get selected() {
|
|
168
|
-
return playbackRate() === rate;
|
|
169
|
-
},
|
|
170
|
-
select(trigger) {
|
|
171
|
-
media.remote.changePlaybackRate(rate, trigger);
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
Object.defineProperty(options, "disabled", {
|
|
176
|
-
get() {
|
|
177
|
-
return !canSetPlaybackRate() || !options.length;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
Object.defineProperty(options, "selectedValue", {
|
|
181
|
-
get() {
|
|
182
|
-
return playbackRate().toString();
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
return options;
|
|
186
|
-
}, [rates]);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export { DEFAULT_PLAYBACK_RATES, useMediaRemote, usePlaybackRateOptions, useVideoQualityOptions };
|