"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) => (
{
event.currentTarget.style.backgroundColor =
"orange";
await changeVideoLink(item.id);
store_to_local(
data.title,
data.image,
item.number,
data.id
);
}}
>
{item.number}
))}
);
}
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 && (
{groups &&
groups.map((item, index) => (
handleSelectChange(item)}
className={lexend.className}
>
{item[0].number} -{" "}
{item[item.length - 1].number}
))}
)}
{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;