mirror of
https://github.com/zoriya/v10.git
synced 2026-08-14 09:59:44 +00:00
77 lines
3.0 KiB
JavaScript
77 lines
3.0 KiB
JavaScript
"use client";
|
|
import { useTranslator } from "../../i18n/context.js";
|
|
import { MenuItemSettingContextProvider } from "./context.js";
|
|
import { useAudioTrackOptions } from "../audio-track/use-audio-track-options.js";
|
|
import { useCaptionsOptions } from "../captions-radio-group/use-captions-options.js";
|
|
import { usePlaybackRateOptions } from "../playback-rate/use-playback-rate-options.js";
|
|
import { useQualityOptions } from "../quality/use-quality-options.js";
|
|
import { translateText } from "@videojs/core/i18n";
|
|
import { jsx } from "react/jsx-runtime";
|
|
import { CAPTIONS_OFF_VALUE } from "@videojs/core";
|
|
import { autoText, offText } from "@videojs/core/i18n/text/menu";
|
|
//#region src/ui/menu/menu-item-setting-provider.tsx
|
|
function PlaybackRateMenuItemSettingProvider({ children }) {
|
|
const playbackRate = usePlaybackRateOptions();
|
|
if (!playbackRate) return children;
|
|
const { state, options, value } = playbackRate;
|
|
return /* @__PURE__ */ jsx(MenuItemSettingContextProvider, {
|
|
value: {
|
|
type: "playback-rate",
|
|
label: options.find((option) => option.value === value)?.label ?? "",
|
|
availability: state.availability
|
|
},
|
|
children
|
|
});
|
|
}
|
|
function CaptionsMenuItemSettingProvider({ children }) {
|
|
const captions = useCaptionsOptions();
|
|
const t = useTranslator();
|
|
if (!captions) return children;
|
|
const { state, options, value } = captions;
|
|
return /* @__PURE__ */ jsx(MenuItemSettingContextProvider, {
|
|
value: {
|
|
type: "captions",
|
|
label: value === CAPTIONS_OFF_VALUE ? translateText(offText, t) : options.find((option) => option.value === value)?.label ?? translateText(offText, t),
|
|
availability: state.availability
|
|
},
|
|
children
|
|
});
|
|
}
|
|
function QualityMenuItemSettingProvider({ children }) {
|
|
const quality = useQualityOptions();
|
|
const t = useTranslator();
|
|
if (!quality) return children;
|
|
const { state, options, value } = quality;
|
|
return /* @__PURE__ */ jsx(MenuItemSettingContextProvider, {
|
|
value: {
|
|
type: "quality",
|
|
label: options.find((option) => option.value === value)?.label ?? translateText(autoText, t),
|
|
availability: state.availability
|
|
},
|
|
children
|
|
});
|
|
}
|
|
function AudioTrackMenuItemSettingProvider({ children }) {
|
|
const audioTrack = useAudioTrackOptions();
|
|
if (!audioTrack) return children;
|
|
const { state, options, value } = audioTrack;
|
|
return /* @__PURE__ */ jsx(MenuItemSettingContextProvider, {
|
|
value: {
|
|
type: "audio-track",
|
|
label: options.find((option) => option.value === value)?.label ?? "",
|
|
availability: state.availability
|
|
},
|
|
children
|
|
});
|
|
}
|
|
function MenuItemSettingProvider({ type, children }) {
|
|
if (type === "playback-rate") return /* @__PURE__ */ jsx(PlaybackRateMenuItemSettingProvider, { children });
|
|
if (type === "quality") return /* @__PURE__ */ jsx(QualityMenuItemSettingProvider, { children });
|
|
if (type === "audio-track") return /* @__PURE__ */ jsx(AudioTrackMenuItemSettingProvider, { children });
|
|
if (type === "captions") return /* @__PURE__ */ jsx(CaptionsMenuItemSettingProvider, { children });
|
|
return children;
|
|
}
|
|
//#endregion
|
|
export { MenuItemSettingProvider };
|
|
|
|
//# sourceMappingURL=menu-item-setting-provider.js.map
|