"use client"; 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 { Select, SelectItem, Button, Skeleton } from "@nextui-org/react"; import { useState, useEffect } from "react"; import { lexend } from "../../../../config/fonts"; import { video_url } from "../data-fetch/request"; import store_to_local from "./saveToLocalStorage"; const EpisodesContainer = ({ data: data }) => { const [videoLink, setVideoLink] = useState(""); const [buttonGroups, setButtonGroups] = useState(<>); const [videoLoading, setVideoLoading] = useState(<>); useEffect(() => { setButtonGroups(createButtonGroups(0, 50)); }, []); const groups = createGroups(data.episodes, 50); function createButtonGroups(start, end) { setButtonGroups(<>); return (
{data.episodes && data.episodes.slice(start, end).map((item, index) => ( ))}
); } function handleSelectChange(item) { // console.log(item[item.length - 1].number); const start_index = item[0].number; const end_index = item[item.length - 1].number; setButtonGroups(createButtonGroups(start_index - 1, end_index)); } async function changeVideoLink(id) { setVideoLink(""); setVideoLoading(
); const videoURL = await video_url(id); setVideoLoading(<>); const video_link = videoURL.sources[videoURL.sources.length - 2].url; await navigator.clipboard.writeText(video_link); setVideoLink(video_link); } return (
{videoLoading} {videoLink && (
)} {data.episodes && (
)} {buttonGroups}
); }; 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 EpisodesContainer;