@hanifhan1f/vidstack-react 1.12.33 → 1.12.35
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/dev/chunks/{vidstack-3rdEWplD.js → vidstack-B-DU-_xu.js} +55 -3
- package/dev/chunks/{vidstack-CniPzPQc.js → vidstack-C3VHrHPf.js} +155 -15
- package/dev/chunks/{vidstack-BOPSNTgH.js → vidstack-CjLj3q5w.js} +5 -57
- package/dev/chunks/{vidstack-BNwnoM-l.js → vidstack-DpWioszb.js} +1 -1
- package/dev/chunks/{vidstack-S_S6XDnL.js → vidstack-t48GJbb5.js} +1 -1
- package/dev/player/vidstack-default-components.js +4 -4
- package/dev/player/vidstack-default-layout.js +4 -4
- package/dev/player/vidstack-plyr-layout.js +3 -3
- package/dev/vidstack.js +5 -5
- package/package.json +1 -1
- package/player/layouts/default.d.ts +9 -1
- package/prod/chunks/{vidstack-BlPINAXN.js → vidstack-BI5-IK9v.js} +55 -3
- package/prod/chunks/{vidstack-CbejzCJs.js → vidstack-BgAMJr1Y.js} +155 -15
- package/prod/chunks/{vidstack-Bh7M8kL6.js → vidstack-DKWmxvB4.js} +5 -57
- package/prod/chunks/{vidstack-DhSvljmQ.js → vidstack-NR84X5HE.js} +1 -1
- package/prod/chunks/{vidstack-BS445j5D.js → vidstack-jSJ0Meez.js} +1 -1
- package/prod/player/vidstack-default-components.js +4 -4
- package/prod/player/vidstack-default-layout.js +4 -4
- package/prod/player/vidstack-plyr-layout.js +3 -3
- package/prod/vidstack.js +5 -5
- package/{dev/chunks/vidstack-DTow20pt.js → server/chunks/vidstack-CSX6ausI.js} +55 -3
- package/server/chunks/{vidstack-CoGzBr_V.js → vidstack-CePUWLrW.js} +5 -57
- package/{dev/chunks/vidstack-CvWDiSTs.js → server/chunks/vidstack-D7sOBYbw.js} +1 -1
- package/server/chunks/{vidstack-VGPw_CQP.js → vidstack-DqUb8JgU.js} +1 -1
- package/server/chunks/{vidstack-i9a2TQLO.js → vidstack-Dvh6BtYs.js} +155 -15
- package/server/player/vidstack-default-components.js +4 -4
- package/server/player/vidstack-default-layout.js +4 -4
- package/server/player/vidstack-plyr-layout.js +3 -3
- package/server/vidstack.js +5 -5
- 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-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-CqNX679o.js +0 -669
- package/dev/chunks/vidstack-Csfg08VS.js +0 -551
- 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-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-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-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-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-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-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-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-X1Hex9PH.js +0 -84
- 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
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useSignal, composeRefs, isBoolean, uppercaseFirstChar, isUndefined, isString, signal, camelToKebabCase, onDispose, scoped, keysOf, effect, isArray, isKeyboardClick, listenEvent, toggleClass, useContext } from './vidstack-CZgUA94N.js';
|
|
5
|
-
import { createComputed, createSignal, MediaAnnouncer, Root, Trigger, Content, GoogleCastButton, Captions, useChapterOptions, Root$1 as Root$5, Root$2 as Root$6, Root$3 as Root$7, useScoped, Root$4 as Root$a, Group, useChapterTitle, createEffect, useActiveTextTrack, ChapterTitle as ChapterTitle$1, Title, Root$5 as Root$b, Track as Track$1, TrackFill as TrackFill$1 } from './vidstack-
|
|
6
|
-
import { useColorSchemePreference, useActive, useResizeObserver, useLayoutName, useTransitionActive } from './vidstack-
|
|
7
|
-
import { useMediaContext, MuteButton, SeekButton, LiveButton, PlayButton, CaptionButton, appendParamsToURL, PIPButton, FullscreenButton, AirPlayButton, Items, Root$3 as Root$1, Item, Root as Root$2, Img, Root$2 as Root$3, Button, Portal, Track, TrackFill, Thumb, Steps, useMediaPlayer, Root$5 as Root$4, useAudioOptions,
|
|
5
|
+
import { createComputed, createSignal, MediaAnnouncer, Root, Trigger, Content, GoogleCastButton, Captions, useChapterOptions, Root$1 as Root$5, Root$2 as Root$6, Root$3 as Root$7, useScoped, Root$4 as Root$a, Group, useChapterTitle, createEffect, useActiveTextTrack, ChapterTitle as ChapterTitle$1, Title, Root$5 as Root$b, Track as Track$1, TrackFill as TrackFill$1 } from './vidstack-NR84X5HE.js';
|
|
6
|
+
import { useColorSchemePreference, useActive, useResizeObserver, useLayoutName, useTransitionActive } from './vidstack-jSJ0Meez.js';
|
|
7
|
+
import { useMediaContext, MuteButton, SeekButton, LiveButton, PlayButton, CaptionButton, appendParamsToURL, PIPButton, FullscreenButton, AirPlayButton, Items, Root$3 as Root$1, Item, Root as Root$2, Img, Root$2 as Root$3, Button, Portal, Track, TrackFill, Thumb, Steps, useMediaPlayer, Root$5 as Root$4, useAudioOptions, Root$4 as Root$8, Preview, Value, Root$1 as Root$9, Chapters, Progress, Thumbnail, ChapterTitle, Time, Gesture } from './vidstack-DKWmxvB4.js';
|
|
8
8
|
import { useMediaState, isTrackCaptionKind, getDownloadFile, isRemotionSrc, IS_SERVER, useMediaContext as useMediaContext$1, sortVideoQualities, Primitive, mediaContext } from './vidstack-C48MQkXV.js';
|
|
9
9
|
import { flushSync } from 'react-dom';
|
|
10
10
|
import { RemotionThumbnail, RemotionSliderThumbnail } from './vidstack-vqp2QaHR.js';
|
|
@@ -862,35 +862,175 @@ function DefaultAudioTracksMenu() {
|
|
|
862
862
|
}
|
|
863
863
|
DefaultAudioTracksMenu.displayName = "DefaultAudioTracksMenu";
|
|
864
864
|
|
|
865
|
+
const LANG_FLAGS = {
|
|
866
|
+
en: "gb",
|
|
867
|
+
eng: "gb",
|
|
868
|
+
english: "gb",
|
|
869
|
+
id: "id",
|
|
870
|
+
ind: "id",
|
|
871
|
+
indonesian: "id",
|
|
872
|
+
ja: "jp",
|
|
873
|
+
jpn: "jp",
|
|
874
|
+
japanese: "jp",
|
|
875
|
+
ko: "kr",
|
|
876
|
+
kor: "kr",
|
|
877
|
+
korean: "kr",
|
|
878
|
+
zh: "cn",
|
|
879
|
+
zho: "cn",
|
|
880
|
+
chi: "cn",
|
|
881
|
+
chinese: "cn",
|
|
882
|
+
es: "es",
|
|
883
|
+
spa: "es",
|
|
884
|
+
spanish: "es",
|
|
885
|
+
fr: "fr",
|
|
886
|
+
fra: "fr",
|
|
887
|
+
french: "fr",
|
|
888
|
+
de: "de",
|
|
889
|
+
deu: "de",
|
|
890
|
+
ger: "de",
|
|
891
|
+
german: "de",
|
|
892
|
+
pt: "br",
|
|
893
|
+
por: "br",
|
|
894
|
+
portuguese: "br",
|
|
895
|
+
ru: "ru",
|
|
896
|
+
rus: "ru",
|
|
897
|
+
russian: "ru",
|
|
898
|
+
ar: "sa",
|
|
899
|
+
ara: "sa",
|
|
900
|
+
arabic: "sa",
|
|
901
|
+
hi: "in",
|
|
902
|
+
hin: "in",
|
|
903
|
+
hindi: "in",
|
|
904
|
+
th: "th",
|
|
905
|
+
tha: "th",
|
|
906
|
+
thai: "th",
|
|
907
|
+
vi: "vn",
|
|
908
|
+
vie: "vn",
|
|
909
|
+
vietnamese: "vn",
|
|
910
|
+
it: "it",
|
|
911
|
+
ita: "it",
|
|
912
|
+
italian: "it",
|
|
913
|
+
tr: "tr",
|
|
914
|
+
tur: "tr",
|
|
915
|
+
turkish: "tr",
|
|
916
|
+
pl: "pl",
|
|
917
|
+
pol: "pl",
|
|
918
|
+
polish: "pl",
|
|
919
|
+
nl: "nl",
|
|
920
|
+
nld: "nl",
|
|
921
|
+
dutch: "nl",
|
|
922
|
+
ms: "my",
|
|
923
|
+
msa: "my",
|
|
924
|
+
malay: "my"
|
|
925
|
+
};
|
|
926
|
+
function getFlagCode(label) {
|
|
927
|
+
const lower = label.toLowerCase().replace(/\s\d+$/, "").trim();
|
|
928
|
+
if (LANG_FLAGS[lower]) return LANG_FLAGS[lower];
|
|
929
|
+
for (const [key, code] of Object.entries(LANG_FLAGS)) {
|
|
930
|
+
if (lower.startsWith(key) || lower.includes(key)) return code;
|
|
931
|
+
}
|
|
932
|
+
return null;
|
|
933
|
+
}
|
|
865
934
|
function DefaultCaptionMenu({ slots }) {
|
|
866
|
-
const { icons: Icons } = useDefaultLayoutContext(), label = useDefaultLayoutWord("Captions"), offText = useDefaultLayoutWord("Off"),
|
|
867
|
-
if (
|
|
935
|
+
const { icons: Icons } = useDefaultLayoutContext(), label = useDefaultLayoutWord("Captions"), offText = useDefaultLayoutWord("Off"), media = useMediaContext(), hasCaptions = useMediaState("hasCaptions"), textTracks = useMediaState("textTracks"), activeTrack = useMediaState("textTrack");
|
|
936
|
+
if (!hasCaptions) return null;
|
|
937
|
+
const tracks = textTracks.filter(isTrackCaptionKind);
|
|
938
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
939
|
+
for (const track of tracks) {
|
|
940
|
+
const normalizedLabel = track.label.replace(/\s\d+$/, "").trim();
|
|
941
|
+
if (!grouped.has(normalizedLabel)) {
|
|
942
|
+
grouped.set(normalizedLabel, []);
|
|
943
|
+
}
|
|
944
|
+
grouped.get(normalizedLabel).push(track);
|
|
945
|
+
}
|
|
946
|
+
const priorities = ["indonesian", "english", "japanese", "korean", "chinese"];
|
|
947
|
+
const getPriority = (lbl) => {
|
|
948
|
+
const lower = lbl.toLowerCase();
|
|
949
|
+
const pIndex = priorities.findIndex((p) => lower.includes(p));
|
|
950
|
+
return pIndex !== -1 ? pIndex : 999;
|
|
951
|
+
};
|
|
952
|
+
const sortedGroups = Array.from(grouped.entries()).sort((a, b) => {
|
|
953
|
+
const pa = getPriority(a[0]);
|
|
954
|
+
const pb = getPriority(b[0]);
|
|
955
|
+
if (pa !== pb) return pa - pb;
|
|
956
|
+
return a[0].localeCompare(b[0]);
|
|
957
|
+
});
|
|
958
|
+
const isOff = tracks.every((t) => t.mode !== "showing");
|
|
959
|
+
const onOffSelect = (e) => {
|
|
960
|
+
const selected = media.textTracks.selected;
|
|
961
|
+
if (selected) {
|
|
962
|
+
const idx = media.textTracks.indexOf(selected);
|
|
963
|
+
media.remote.changeTextTrackMode(idx, "disabled", e);
|
|
964
|
+
}
|
|
965
|
+
};
|
|
868
966
|
return /* @__PURE__ */ React.createElement(Root$3, { className: "vds-captions-menu vds-menu" }, /* @__PURE__ */ React.createElement(
|
|
869
967
|
DefaultMenuButton,
|
|
870
968
|
{
|
|
871
969
|
label,
|
|
872
|
-
hint,
|
|
873
|
-
disabled:
|
|
970
|
+
hint: activeTrack?.label ?? offText,
|
|
971
|
+
disabled: false,
|
|
874
972
|
Icon: Icons.Menu.Captions
|
|
875
973
|
}
|
|
876
974
|
), /* @__PURE__ */ React.createElement(Items, { className: "vds-menu-items" }, slot(slots, "captionsMenuItemsStart", null), /* @__PURE__ */ React.createElement(
|
|
877
975
|
Root$1,
|
|
878
976
|
{
|
|
879
977
|
className: "vds-captions-radio-group vds-radio-group",
|
|
880
|
-
value:
|
|
978
|
+
value: isOff ? "off" : "none"
|
|
881
979
|
},
|
|
882
|
-
|
|
980
|
+
/* @__PURE__ */ React.createElement(
|
|
883
981
|
Item,
|
|
884
982
|
{
|
|
885
983
|
className: "vds-caption-radio vds-radio",
|
|
886
|
-
value,
|
|
887
|
-
onSelect:
|
|
888
|
-
key: value
|
|
984
|
+
value: "off",
|
|
985
|
+
onSelect: onOffSelect
|
|
889
986
|
},
|
|
890
987
|
/* @__PURE__ */ React.createElement(Icons.Menu.RadioCheck, { className: "vds-icon" }),
|
|
891
|
-
/* @__PURE__ */ React.createElement("span", { className: "vds-radio-label" },
|
|
892
|
-
)
|
|
893
|
-
),
|
|
988
|
+
/* @__PURE__ */ React.createElement("span", { className: "vds-radio-label" }, offText)
|
|
989
|
+
)
|
|
990
|
+
), sortedGroups.map(([groupLabel, groupTracks]) => {
|
|
991
|
+
const flagCode = getFlagCode(groupLabel);
|
|
992
|
+
const activeIndex = groupTracks.findIndex((t) => t === activeTrack);
|
|
993
|
+
return /* @__PURE__ */ React.createElement(Root$3, { key: groupLabel, className: "vds-captions-group-menu vds-menu" }, /* @__PURE__ */ React.createElement(Button, { className: "vds-menu-item" }, /* @__PURE__ */ React.createElement(Icons.Menu.ArrowLeft, { className: "vds-menu-close-icon vds-icon" }), /* @__PURE__ */ React.createElement("span", { className: "vds-menu-item-label", style: { display: "flex", alignItems: "center", gap: "8px" } }, flagCode ? /* @__PURE__ */ React.createElement(
|
|
994
|
+
"span",
|
|
995
|
+
{
|
|
996
|
+
className: `fi fi-${flagCode}`,
|
|
997
|
+
style: {
|
|
998
|
+
fontSize: "1.25em",
|
|
999
|
+
borderRadius: "2px",
|
|
1000
|
+
width: "1.33em",
|
|
1001
|
+
height: "1em",
|
|
1002
|
+
display: "inline-block",
|
|
1003
|
+
backgroundImage: `url('https://cdnjs.cloudflare.com/ajax/libs/flag-icons/7.1.0/flags/4x3/${flagCode}.svg')`,
|
|
1004
|
+
backgroundSize: "cover",
|
|
1005
|
+
backgroundPosition: "center"
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
) : null, /* @__PURE__ */ React.createElement("span", null, groupLabel)), /* @__PURE__ */ React.createElement("span", { className: "vds-menu-item-hint" }, activeIndex !== -1 ? `${activeIndex + 1}/${groupTracks.length}` : ""), /* @__PURE__ */ React.createElement(Icons.Menu.ArrowRight, { className: "vds-menu-open-icon vds-icon" })), /* @__PURE__ */ React.createElement(Items, { className: "vds-menu-items" }, /* @__PURE__ */ React.createElement(
|
|
1009
|
+
Root$1,
|
|
1010
|
+
{
|
|
1011
|
+
className: "vds-captions-radio-group vds-radio-group",
|
|
1012
|
+
value: String(activeIndex)
|
|
1013
|
+
},
|
|
1014
|
+
groupTracks.map((track, idx) => {
|
|
1015
|
+
const displayLabel = groupTracks.length > 1 ? `${groupLabel} ${idx + 1}` : groupLabel;
|
|
1016
|
+
const onSelect = (e) => {
|
|
1017
|
+
const globalIdx = media.textTracks.indexOf(track);
|
|
1018
|
+
media.remote.changeTextTrackMode(globalIdx, "showing", e);
|
|
1019
|
+
};
|
|
1020
|
+
return /* @__PURE__ */ React.createElement(
|
|
1021
|
+
Item,
|
|
1022
|
+
{
|
|
1023
|
+
key: idx,
|
|
1024
|
+
className: "vds-caption-radio vds-radio",
|
|
1025
|
+
value: String(idx),
|
|
1026
|
+
onSelect
|
|
1027
|
+
},
|
|
1028
|
+
/* @__PURE__ */ React.createElement(Icons.Menu.RadioCheck, { className: "vds-icon" }),
|
|
1029
|
+
/* @__PURE__ */ React.createElement("span", { className: "vds-radio-label" }, displayLabel)
|
|
1030
|
+
);
|
|
1031
|
+
})
|
|
1032
|
+
)));
|
|
1033
|
+
}), slot(slots, "captionsMenuItemsEnd", null)));
|
|
894
1034
|
}
|
|
895
1035
|
DefaultCaptionMenu.displayName = "DefaultCaptionMenu";
|
|
896
1036
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useReactContext, createReactComponent, composeRefs, useSignal, noop, useStateContext, signal, effect, isString } from './vidstack-CZgUA94N.js';
|
|
5
|
-
import { mediaContext, AirPlayButtonInstance, Primitive, PlayButtonInstance, CaptionButtonInstance, FullscreenButtonInstance, MuteButtonInstance, PIPButtonInstance, SeekButtonInstance, LiveButtonInstance, SliderValueInstance, SliderInstance, SliderPreviewInstance, useSliderState, VolumeSliderInstance, IS_SERVER, ThumbnailInstance, TimeSliderInstance, SliderChaptersInstance, SliderThumbnailInstance, SliderVideoInstance, mediaState, RadioGroupInstance, RadioInstance, MenuInstance, MenuButtonInstance, useMediaState, MenuItemsInstance, MenuItemInstance, GestureInstance, TimeInstance
|
|
5
|
+
import { mediaContext, AirPlayButtonInstance, Primitive, PlayButtonInstance, CaptionButtonInstance, FullscreenButtonInstance, MuteButtonInstance, PIPButtonInstance, SeekButtonInstance, LiveButtonInstance, SliderValueInstance, SliderInstance, SliderPreviewInstance, useSliderState, VolumeSliderInstance, IS_SERVER, ThumbnailInstance, TimeSliderInstance, SliderChaptersInstance, SliderThumbnailInstance, SliderVideoInstance, mediaState, RadioGroupInstance, RadioInstance, MenuInstance, MenuButtonInstance, useMediaState, MenuItemsInstance, MenuItemInstance, GestureInstance, TimeInstance } from './vidstack-C48MQkXV.js';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
|
|
8
8
|
function useMediaContext() {
|
|
@@ -576,7 +576,7 @@ function useAudioOptions() {
|
|
|
576
576
|
const options = $audioTracks.map((track) => ({
|
|
577
577
|
track,
|
|
578
578
|
label: track.label,
|
|
579
|
-
value: getTrackValue
|
|
579
|
+
value: getTrackValue(track),
|
|
580
580
|
get selected() {
|
|
581
581
|
return audioTrack() === track;
|
|
582
582
|
},
|
|
@@ -598,66 +598,14 @@ function useAudioOptions() {
|
|
|
598
598
|
Object.defineProperty(options, "selectedValue", {
|
|
599
599
|
get() {
|
|
600
600
|
const track = audioTrack();
|
|
601
|
-
return track ? getTrackValue
|
|
601
|
+
return track ? getTrackValue(track) : void 0;
|
|
602
602
|
}
|
|
603
603
|
});
|
|
604
604
|
return options;
|
|
605
605
|
}, [$audioTracks]);
|
|
606
606
|
}
|
|
607
|
-
function getTrackValue$1(track) {
|
|
608
|
-
return track.label.toLowerCase();
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
function useCaptionOptions({ off = true } = {}) {
|
|
612
|
-
const media = useMediaContext(), { textTracks, textTrack } = media.$state, $textTracks = useSignal(textTracks);
|
|
613
|
-
useSignal(textTrack);
|
|
614
|
-
return React.useMemo(() => {
|
|
615
|
-
const captionTracks = $textTracks.filter(isTrackCaptionKind), options = captionTracks.map((track) => ({
|
|
616
|
-
track,
|
|
617
|
-
label: track.label,
|
|
618
|
-
value: getTrackValue(track),
|
|
619
|
-
get selected() {
|
|
620
|
-
return textTrack() === track;
|
|
621
|
-
},
|
|
622
|
-
select(trigger) {
|
|
623
|
-
const index = textTracks().indexOf(track);
|
|
624
|
-
if (index >= 0) media.remote.changeTextTrackMode(index, "showing", trigger);
|
|
625
|
-
}
|
|
626
|
-
}));
|
|
627
|
-
if (off) {
|
|
628
|
-
options.unshift({
|
|
629
|
-
track: null,
|
|
630
|
-
label: isString(off) ? off : "Off",
|
|
631
|
-
value: "off",
|
|
632
|
-
get selected() {
|
|
633
|
-
return !textTrack();
|
|
634
|
-
},
|
|
635
|
-
select(trigger) {
|
|
636
|
-
media.remote.toggleCaptions(trigger);
|
|
637
|
-
}
|
|
638
|
-
});
|
|
639
|
-
}
|
|
640
|
-
Object.defineProperty(options, "disabled", {
|
|
641
|
-
get() {
|
|
642
|
-
return !captionTracks.length;
|
|
643
|
-
}
|
|
644
|
-
});
|
|
645
|
-
Object.defineProperty(options, "selectedTrack", {
|
|
646
|
-
get() {
|
|
647
|
-
return textTrack();
|
|
648
|
-
}
|
|
649
|
-
});
|
|
650
|
-
Object.defineProperty(options, "selectedValue", {
|
|
651
|
-
get() {
|
|
652
|
-
const track = textTrack();
|
|
653
|
-
return track ? getTrackValue(track) : "off";
|
|
654
|
-
}
|
|
655
|
-
});
|
|
656
|
-
return options;
|
|
657
|
-
}, [$textTracks]);
|
|
658
|
-
}
|
|
659
607
|
function getTrackValue(track) {
|
|
660
|
-
return track.
|
|
608
|
+
return track.label.toLowerCase();
|
|
661
609
|
}
|
|
662
610
|
|
|
663
|
-
export { AirPlayButton, Button, CaptionButton, ChapterTitle, Chapters, FullscreenButton, Gesture, Img, Item$1 as Item, Items, LiveButton, MuteButton, PIPButton, PlayButton, Portal, Preview, Progress, Root$3 as Root, Root$2 as Root$1, Root as Root$2, Root$1 as Root$3, Root$4, Root$5, SeekButton, Steps, Thumb, Thumbnail, Time, Track, TrackFill, Value, appendParamsToURL, menu, radioGroup, slider, sliderCallbacks, thumbnail, timeSlider, useAudioOptions,
|
|
611
|
+
export { AirPlayButton, Button, CaptionButton, ChapterTitle, Chapters, FullscreenButton, Gesture, Img, Item$1 as Item, Items, LiveButton, MuteButton, PIPButton, PlayButton, Portal, Preview, Progress, Root$3 as Root, Root$2 as Root$1, Root as Root$2, Root$1 as Root$3, Root$4, Root$5, SeekButton, Steps, Thumb, Thumbnail, Time, Track, TrackFill, Value, appendParamsToURL, menu, radioGroup, slider, sliderCallbacks, thumbnail, timeSlider, useAudioOptions, useMediaContext, useMediaPlayer, volumeSlider };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { createReactComponent, composeRefs, listenEvent, useReactScope, scoped, computed, signal, effect, EventsController, useSignal } from './vidstack-CZgUA94N.js';
|
|
5
5
|
import { MediaAnnouncerInstance, Primitive, ControlsInstance, ControlsGroupInstance, TooltipInstance, TooltipTriggerInstance, TooltipContentInstance, GoogleCastButtonInstance, QualitySliderInstance, AudioGainSliderInstance, SpeedSliderInstance, useMediaState, watchActiveTextTrack, CaptionsInstance, formatSpokenTime, formatTime } from './vidstack-C48MQkXV.js';
|
|
6
|
-
import { sliderCallbacks, Preview, Steps, Thumb, Track as Track$1, TrackFill as TrackFill$1, Value, useMediaContext } from './vidstack-
|
|
6
|
+
import { sliderCallbacks, Preview, Steps, Thumb, Track as Track$1, TrackFill as TrackFill$1, Value, useMediaContext } from './vidstack-DKWmxvB4.js';
|
|
7
7
|
|
|
8
8
|
const MediaAnnouncerBridge = createReactComponent(MediaAnnouncerInstance, {
|
|
9
9
|
events: ["onChange"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { listenEvent, EventsController, animationFrameThrottle, effect } from './vidstack-CZgUA94N.js';
|
|
5
|
-
import { useMediaPlayer } from './vidstack-
|
|
5
|
+
import { useMediaPlayer } from './vidstack-DKWmxvB4.js';
|
|
6
6
|
|
|
7
7
|
function useClassName(el, className) {
|
|
8
8
|
React.useEffect(() => {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
|
-
export { DefaultAudioLayout, DefaultBufferingIndicator, DefaultKeyboardDisplay, DefaultMenuButton, DefaultMenuCheckbox, DefaultMenuItem, DefaultMenuRadioGroup, DefaultMenuSection, DefaultMenuSliderItem, DefaultSliderParts, DefaultSliderSteps, DefaultTooltip, DefaultVideoGestures, DefaultVideoLargeLayout, DefaultVideoLayout, DefaultVideoSmallLayout, createRadioOptions } from '../chunks/vidstack-
|
|
3
|
+
export { DefaultAudioLayout, DefaultBufferingIndicator, DefaultKeyboardDisplay, DefaultMenuButton, DefaultMenuCheckbox, DefaultMenuItem, DefaultMenuRadioGroup, DefaultMenuSection, DefaultMenuSliderItem, DefaultSliderParts, DefaultSliderSteps, DefaultTooltip, DefaultVideoGestures, DefaultVideoLargeLayout, DefaultVideoLayout, DefaultVideoSmallLayout, createRadioOptions } from '../chunks/vidstack-BgAMJr1Y.js';
|
|
4
4
|
export { defaultLayoutIcons } from './vidstack-default-icons.js';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../chunks/vidstack-CZgUA94N.js';
|
|
7
|
-
import '../chunks/vidstack-
|
|
7
|
+
import '../chunks/vidstack-NR84X5HE.js';
|
|
8
8
|
import '../chunks/vidstack-C48MQkXV.js';
|
|
9
9
|
import '@floating-ui/dom';
|
|
10
|
-
import '../chunks/vidstack-
|
|
10
|
+
import '../chunks/vidstack-DKWmxvB4.js';
|
|
11
11
|
import 'react-dom';
|
|
12
|
-
import '../chunks/vidstack-
|
|
12
|
+
import '../chunks/vidstack-jSJ0Meez.js';
|
|
13
13
|
import '../chunks/vidstack-vqp2QaHR.js';
|
|
14
14
|
import '../chunks/vidstack-CBF7iUqu.js';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
|
-
export { DefaultAudioLayout, DefaultBufferingIndicator, DefaultKeyboardDisplay, DefaultLayoutContext, DefaultMenuButton, DefaultMenuCheckbox, DefaultMenuItem, DefaultMenuRadioGroup, DefaultMenuSection, DefaultMenuSliderItem, DefaultSliderParts, DefaultSliderSteps, DefaultTooltip, DefaultVideoGestures, DefaultVideoLargeLayout, DefaultVideoLayout, DefaultVideoSmallLayout, createRadioOptions, i18n, useDefaultLayoutContext, useDefaultLayoutWord } from '../chunks/vidstack-
|
|
3
|
+
export { DefaultAudioLayout, DefaultBufferingIndicator, DefaultKeyboardDisplay, DefaultLayoutContext, DefaultMenuButton, DefaultMenuCheckbox, DefaultMenuItem, DefaultMenuRadioGroup, DefaultMenuSection, DefaultMenuSliderItem, DefaultSliderParts, DefaultSliderSteps, DefaultTooltip, DefaultVideoGestures, DefaultVideoLargeLayout, DefaultVideoLayout, DefaultVideoSmallLayout, createRadioOptions, i18n, useDefaultLayoutContext, useDefaultLayoutWord } from '../chunks/vidstack-BgAMJr1Y.js';
|
|
4
4
|
export { defaultLayoutIcons } from './vidstack-default-icons.js';
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../chunks/vidstack-CZgUA94N.js';
|
|
7
|
-
import '../chunks/vidstack-
|
|
7
|
+
import '../chunks/vidstack-NR84X5HE.js';
|
|
8
8
|
import '../chunks/vidstack-C48MQkXV.js';
|
|
9
9
|
import '@floating-ui/dom';
|
|
10
|
-
import '../chunks/vidstack-
|
|
10
|
+
import '../chunks/vidstack-DKWmxvB4.js';
|
|
11
11
|
import 'react-dom';
|
|
12
|
-
import '../chunks/vidstack-
|
|
12
|
+
import '../chunks/vidstack-jSJ0Meez.js';
|
|
13
13
|
import '../chunks/vidstack-vqp2QaHR.js';
|
|
14
14
|
import '../chunks/vidstack-CBF7iUqu.js';
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { useMediaState, Primitive, IS_SERVER, isRemotionSrc, getDownloadFile } from '../chunks/vidstack-C48MQkXV.js';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { effect, createDisposalBin, uppercaseFirstChar, isUndefined, signal, composeRefs, useSignal, isNumber, listenEvent, isString, isKeyboardEvent, isKeyboardClick } from '../chunks/vidstack-CZgUA94N.js';
|
|
6
|
-
import { useMediaContext, PlayButton, Root, Img, Gesture, AirPlayButton, CaptionButton, FullscreenButton, PIPButton, SeekButton, Root$1, Value, Preview, Thumbnail, LiveButton, Time, appendParamsToURL, Root$2, Button, Items, useAudioOptions, Root$3, Item,
|
|
7
|
-
import { useMediaRemote, useVideoQualityOptions, usePlaybackRateOptions } from '../chunks/vidstack-
|
|
8
|
-
import { useLayoutName, useClassName } from '../chunks/vidstack-
|
|
6
|
+
import { useMediaContext, PlayButton, Root, Img, Gesture, AirPlayButton, CaptionButton, FullscreenButton, PIPButton, SeekButton, Root$1, Value, Preview, Thumbnail, LiveButton, Time, appendParamsToURL, Root$2, Button, Items, useAudioOptions, Root$3, Item, MuteButton, Root$4 } from '../chunks/vidstack-DKWmxvB4.js';
|
|
7
|
+
import { useMediaRemote, useCaptionOptions, useVideoQualityOptions, usePlaybackRateOptions } from '../chunks/vidstack-BI5-IK9v.js';
|
|
8
|
+
import { useLayoutName, useClassName } from '../chunks/vidstack-jSJ0Meez.js';
|
|
9
9
|
import { RemotionThumbnail, RemotionPoster, RemotionSliderThumbnail } from '../chunks/vidstack-vqp2QaHR.js';
|
|
10
10
|
export { plyrLayoutIcons } from './vidstack-plyr-icons.js';
|
|
11
11
|
import '@floating-ui/dom';
|
package/prod/vidstack.js
CHANGED
|
@@ -5,12 +5,12 @@ export { ARIAKeyShortcuts, AUDIO_EXTENSIONS, AUDIO_TYPES, AirPlayButtonInstance,
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { DOMEvent, isString, EventsController, prop, method, Component, hasProvidedContext, useContext, effect, createReactComponent, useStateContext, useSignal, composeRefs, useSignalRecord, useReactScope, signal } from './chunks/vidstack-CZgUA94N.js';
|
|
7
7
|
export { appendTriggerEvent, findTriggerEvent, hasTriggerEvent, isKeyboardClick, isKeyboardEvent, isPointerEvent, walkTriggerEventChain } from './chunks/vidstack-CZgUA94N.js';
|
|
8
|
-
import { createSignal, useScoped } from './chunks/vidstack-
|
|
9
|
-
export { audioGainSlider as AudioGainSlider, Captions, ChapterTitle, controls as Controls, GoogleCastButton, MediaAnnouncer, qualitySlider as QualitySlider, speedSlider as SpeedSlider, spinner as Spinner, Title, tooltip as Tooltip, useActiveTextCues, useActiveTextTrack, useChapterOptions, useChapterTitle, useTextCues } from './chunks/vidstack-
|
|
10
|
-
import { useMediaContext as useMediaContext$1 } from './chunks/vidstack-
|
|
11
|
-
export { AirPlayButton, CaptionButton, FullscreenButton, Gesture, LiveButton, menu as Menu, MuteButton, PIPButton, PlayButton, radioGroup as RadioGroup, SeekButton, slider as Slider, thumbnail as Thumbnail, Time, timeSlider as TimeSlider, volumeSlider as VolumeSlider, useAudioOptions,
|
|
8
|
+
import { createSignal, useScoped } from './chunks/vidstack-NR84X5HE.js';
|
|
9
|
+
export { audioGainSlider as AudioGainSlider, Captions, ChapterTitle, controls as Controls, GoogleCastButton, MediaAnnouncer, qualitySlider as QualitySlider, speedSlider as SpeedSlider, spinner as Spinner, Title, tooltip as Tooltip, useActiveTextCues, useActiveTextTrack, useChapterOptions, useChapterTitle, useTextCues } from './chunks/vidstack-NR84X5HE.js';
|
|
10
|
+
import { useMediaContext as useMediaContext$1 } from './chunks/vidstack-DKWmxvB4.js';
|
|
11
|
+
export { AirPlayButton, CaptionButton, FullscreenButton, Gesture, LiveButton, menu as Menu, MuteButton, PIPButton, PlayButton, radioGroup as RadioGroup, SeekButton, slider as Slider, thumbnail as Thumbnail, Time, timeSlider as TimeSlider, volumeSlider as VolumeSlider, useAudioOptions, useMediaPlayer } from './chunks/vidstack-DKWmxvB4.js';
|
|
12
12
|
import { Icon } from './chunks/vidstack-CBF7iUqu.js';
|
|
13
|
-
export { DEFAULT_PLAYBACK_RATES, useMediaRemote, usePlaybackRateOptions, useVideoQualityOptions } from './chunks/vidstack-
|
|
13
|
+
export { DEFAULT_PLAYBACK_RATES, useCaptionOptions, useMediaRemote, usePlaybackRateOptions, useVideoQualityOptions } from './chunks/vidstack-BI5-IK9v.js';
|
|
14
14
|
import '@floating-ui/dom';
|
|
15
15
|
import 'react-dom';
|
|
16
16
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { RadioGroupController, useMediaContext, menuContext, MediaRemoteControl, MediaPlayerInstance, sortVideoQualities } from './vidstack-
|
|
5
|
-
import { useMediaContext as useMediaContext$1 } from './vidstack-
|
|
4
|
+
import { RadioGroupController, useMediaContext, menuContext, MediaRemoteControl, MediaPlayerInstance, isTrackCaptionKind, sortVideoQualities } from './vidstack-Cb_tNfNU.js';
|
|
5
|
+
import { useMediaContext as useMediaContext$1 } from './vidstack-CePUWLrW.js';
|
|
6
6
|
import { prop, method, Component, hasProvidedContext, useContext, effect, useSignal, isString } from './vidstack-D_bWd66h.js';
|
|
7
7
|
|
|
8
8
|
const DEFAULT_PLAYBACK_RATES = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];
|
|
@@ -83,6 +83,58 @@ function useMediaRemote(target) {
|
|
|
83
83
|
return remote.current;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
function useCaptionOptions({ off = true } = {}) {
|
|
87
|
+
const media = useMediaContext$1(), { textTracks, textTrack } = media.$state, $textTracks = useSignal(textTracks);
|
|
88
|
+
useSignal(textTrack);
|
|
89
|
+
return React.useMemo(() => {
|
|
90
|
+
const captionTracks = $textTracks.filter(isTrackCaptionKind), options = captionTracks.map((track) => ({
|
|
91
|
+
track,
|
|
92
|
+
label: track.label,
|
|
93
|
+
value: getTrackValue(track),
|
|
94
|
+
get selected() {
|
|
95
|
+
return textTrack() === track;
|
|
96
|
+
},
|
|
97
|
+
select(trigger) {
|
|
98
|
+
const index = textTracks().indexOf(track);
|
|
99
|
+
if (index >= 0) media.remote.changeTextTrackMode(index, "showing", trigger);
|
|
100
|
+
}
|
|
101
|
+
}));
|
|
102
|
+
if (off) {
|
|
103
|
+
options.unshift({
|
|
104
|
+
track: null,
|
|
105
|
+
label: isString(off) ? off : "Off",
|
|
106
|
+
value: "off",
|
|
107
|
+
get selected() {
|
|
108
|
+
return !textTrack();
|
|
109
|
+
},
|
|
110
|
+
select(trigger) {
|
|
111
|
+
media.remote.toggleCaptions(trigger);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
Object.defineProperty(options, "disabled", {
|
|
116
|
+
get() {
|
|
117
|
+
return !captionTracks.length;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(options, "selectedTrack", {
|
|
121
|
+
get() {
|
|
122
|
+
return textTrack();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
Object.defineProperty(options, "selectedValue", {
|
|
126
|
+
get() {
|
|
127
|
+
const track = textTrack();
|
|
128
|
+
return track ? getTrackValue(track) : "off";
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return options;
|
|
132
|
+
}, [$textTracks]);
|
|
133
|
+
}
|
|
134
|
+
function getTrackValue(track) {
|
|
135
|
+
return track.id + ":" + track.kind + "-" + track.label.toLowerCase();
|
|
136
|
+
}
|
|
137
|
+
|
|
86
138
|
function useVideoQualityOptions({
|
|
87
139
|
auto = true,
|
|
88
140
|
sort = "descending"
|
|
@@ -186,4 +238,4 @@ function usePlaybackRateOptions({
|
|
|
186
238
|
}, [rates]);
|
|
187
239
|
}
|
|
188
240
|
|
|
189
|
-
export { DEFAULT_PLAYBACK_RATES, useMediaRemote, usePlaybackRateOptions, useVideoQualityOptions };
|
|
241
|
+
export { DEFAULT_PLAYBACK_RATES, useCaptionOptions, useMediaRemote, usePlaybackRateOptions, useVideoQualityOptions };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useReactContext, createReactComponent, composeRefs, useSignal, noop, useStateContext, signal, effect, isString } from './vidstack-D_bWd66h.js';
|
|
5
|
-
import { mediaContext, AirPlayButtonInstance, Primitive, PlayButtonInstance, CaptionButtonInstance, FullscreenButtonInstance, MuteButtonInstance, PIPButtonInstance, SeekButtonInstance, LiveButtonInstance, SliderValueInstance, SliderInstance, SliderPreviewInstance, useSliderState, VolumeSliderInstance, IS_SERVER, ThumbnailInstance, TimeSliderInstance, SliderChaptersInstance, SliderThumbnailInstance, SliderVideoInstance, mediaState, RadioGroupInstance, RadioInstance, MenuInstance, MenuButtonInstance, useMediaState, MenuItemsInstance, MenuItemInstance, GestureInstance, TimeInstance
|
|
5
|
+
import { mediaContext, AirPlayButtonInstance, Primitive, PlayButtonInstance, CaptionButtonInstance, FullscreenButtonInstance, MuteButtonInstance, PIPButtonInstance, SeekButtonInstance, LiveButtonInstance, SliderValueInstance, SliderInstance, SliderPreviewInstance, useSliderState, VolumeSliderInstance, IS_SERVER, ThumbnailInstance, TimeSliderInstance, SliderChaptersInstance, SliderThumbnailInstance, SliderVideoInstance, mediaState, RadioGroupInstance, RadioInstance, MenuInstance, MenuButtonInstance, useMediaState, MenuItemsInstance, MenuItemInstance, GestureInstance, TimeInstance } from './vidstack-Cb_tNfNU.js';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
|
|
8
8
|
function useMediaContext() {
|
|
@@ -576,7 +576,7 @@ function useAudioOptions() {
|
|
|
576
576
|
const options = $audioTracks.map((track) => ({
|
|
577
577
|
track,
|
|
578
578
|
label: track.label,
|
|
579
|
-
value: getTrackValue
|
|
579
|
+
value: getTrackValue(track),
|
|
580
580
|
get selected() {
|
|
581
581
|
return audioTrack() === track;
|
|
582
582
|
},
|
|
@@ -598,66 +598,14 @@ function useAudioOptions() {
|
|
|
598
598
|
Object.defineProperty(options, "selectedValue", {
|
|
599
599
|
get() {
|
|
600
600
|
const track = audioTrack();
|
|
601
|
-
return track ? getTrackValue
|
|
601
|
+
return track ? getTrackValue(track) : void 0;
|
|
602
602
|
}
|
|
603
603
|
});
|
|
604
604
|
return options;
|
|
605
605
|
}, [$audioTracks]);
|
|
606
606
|
}
|
|
607
|
-
function getTrackValue$1(track) {
|
|
608
|
-
return track.label.toLowerCase();
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
function useCaptionOptions({ off = true } = {}) {
|
|
612
|
-
const media = useMediaContext(), { textTracks, textTrack } = media.$state, $textTracks = useSignal(textTracks);
|
|
613
|
-
useSignal(textTrack);
|
|
614
|
-
return React.useMemo(() => {
|
|
615
|
-
const captionTracks = $textTracks.filter(isTrackCaptionKind), options = captionTracks.map((track) => ({
|
|
616
|
-
track,
|
|
617
|
-
label: track.label,
|
|
618
|
-
value: getTrackValue(track),
|
|
619
|
-
get selected() {
|
|
620
|
-
return textTrack() === track;
|
|
621
|
-
},
|
|
622
|
-
select(trigger) {
|
|
623
|
-
const index = textTracks().indexOf(track);
|
|
624
|
-
if (index >= 0) media.remote.changeTextTrackMode(index, "showing", trigger);
|
|
625
|
-
}
|
|
626
|
-
}));
|
|
627
|
-
if (off) {
|
|
628
|
-
options.unshift({
|
|
629
|
-
track: null,
|
|
630
|
-
label: isString(off) ? off : "Off",
|
|
631
|
-
value: "off",
|
|
632
|
-
get selected() {
|
|
633
|
-
return !textTrack();
|
|
634
|
-
},
|
|
635
|
-
select(trigger) {
|
|
636
|
-
media.remote.toggleCaptions(trigger);
|
|
637
|
-
}
|
|
638
|
-
});
|
|
639
|
-
}
|
|
640
|
-
Object.defineProperty(options, "disabled", {
|
|
641
|
-
get() {
|
|
642
|
-
return !captionTracks.length;
|
|
643
|
-
}
|
|
644
|
-
});
|
|
645
|
-
Object.defineProperty(options, "selectedTrack", {
|
|
646
|
-
get() {
|
|
647
|
-
return textTrack();
|
|
648
|
-
}
|
|
649
|
-
});
|
|
650
|
-
Object.defineProperty(options, "selectedValue", {
|
|
651
|
-
get() {
|
|
652
|
-
const track = textTrack();
|
|
653
|
-
return track ? getTrackValue(track) : "off";
|
|
654
|
-
}
|
|
655
|
-
});
|
|
656
|
-
return options;
|
|
657
|
-
}, [$textTracks]);
|
|
658
|
-
}
|
|
659
607
|
function getTrackValue(track) {
|
|
660
|
-
return track.
|
|
608
|
+
return track.label.toLowerCase();
|
|
661
609
|
}
|
|
662
610
|
|
|
663
|
-
export { AirPlayButton, Button, CaptionButton, ChapterTitle, Chapters, FullscreenButton, Gesture, Img, Item$1 as Item, Items, LiveButton, MuteButton, PIPButton, PlayButton, Portal, Preview, Progress, Root$3 as Root, Root$2 as Root$1, Root as Root$2, Root$1 as Root$3, Root$4, Root$5, SeekButton, Steps, Thumb, Thumbnail, Time, Track, TrackFill, Value, appendParamsToURL, menu, radioGroup, slider, sliderCallbacks, thumbnail, timeSlider, useAudioOptions,
|
|
611
|
+
export { AirPlayButton, Button, CaptionButton, ChapterTitle, Chapters, FullscreenButton, Gesture, Img, Item$1 as Item, Items, LiveButton, MuteButton, PIPButton, PlayButton, Portal, Preview, Progress, Root$3 as Root, Root$2 as Root$1, Root as Root$2, Root$1 as Root$3, Root$4, Root$5, SeekButton, Steps, Thumb, Thumbnail, Time, Track, TrackFill, Value, appendParamsToURL, menu, radioGroup, slider, sliderCallbacks, thumbnail, timeSlider, useAudioOptions, useMediaContext, useMediaPlayer, volumeSlider };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { listenEvent, EventsController, animationFrameThrottle, effect } from './vidstack-D_bWd66h.js';
|
|
5
|
-
import { useMediaPlayer } from './vidstack-
|
|
5
|
+
import { useMediaPlayer } from './vidstack-CePUWLrW.js';
|
|
6
6
|
|
|
7
7
|
function useClassName(el, className) {
|
|
8
8
|
React.useEffect(() => {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { createReactComponent, composeRefs, listenEvent, useReactScope, scoped, computed, signal, effect, EventsController, useSignal } from './vidstack-D_bWd66h.js';
|
|
5
5
|
import { MediaAnnouncerInstance, Primitive, ControlsInstance, ControlsGroupInstance, TooltipInstance, TooltipTriggerInstance, TooltipContentInstance, GoogleCastButtonInstance, QualitySliderInstance, AudioGainSliderInstance, SpeedSliderInstance, useMediaState, watchActiveTextTrack, CaptionsInstance, formatSpokenTime, formatTime } from './vidstack-Cb_tNfNU.js';
|
|
6
|
-
import { sliderCallbacks, Preview, Steps, Thumb, Track as Track$1, TrackFill as TrackFill$1, Value, useMediaContext } from './vidstack-
|
|
6
|
+
import { sliderCallbacks, Preview, Steps, Thumb, Track as Track$1, TrackFill as TrackFill$1, Value, useMediaContext } from './vidstack-CePUWLrW.js';
|
|
7
7
|
|
|
8
8
|
const MediaAnnouncerBridge = createReactComponent(MediaAnnouncerInstance, {
|
|
9
9
|
events: ["onChange"]
|