"use client"; import { useState, useEffect } from "react"; import { MediaPlayer, MediaProvider } from "@vidstack/react"; import "@vidstack/react/player/styles/default/theme.css"; import "@vidstack/react/player/styles/default/layouts/video.css"; import { defaultLayoutIcons, DefaultVideoLayout, } from "@vidstack/react/player/layouts/default"; import styles from "../styles/buttons.module.css"; import { video_url } from "../data-fetch/request"; const EpisodesButtons = ({ data: data }) => { const [videoLink, setVideoLink] = useState(null); const [buttonGroups, setButtonGroups] = useState(null); const [videoLoading, setVideoLoading] = useState(null); useEffect(() => { setButtonGroups(createButtonGroups(0, 50)); }, []); const groups = createGroups(data.episodes, 50); async function getVideoURL(epID) { setVideoLoading(true); const data = await video_url(epID); setVideoLink(data.sources[data.sources.length - 2].url); setVideoLoading(false); } function createButtonGroups(start, end) { return (
{data.episodes && data.episodes.slice(start, end).map((item, index) => ( ))}
); } function handleSelectChange(event) { const selectedIndex = event.target.selectedIndex; const selectedGroup = groups[selectedIndex]; if (selectedGroup) { setButtonGroups( createButtonGroups( selectedGroup[0].number - 1, selectedGroup[selectedGroup.length - 1].number ) ); } } return (
{data.episodes && ( )} {buttonGroups} {videoLoading && (

Loading...

)} {videoLink && ( )}
); }; function createGroups(array, size) { const groups = []; for (let i = 0; i < array.length; i += size) { groups.push(array.slice(i, i + size)); } return groups; } export default EpisodesButtons;