mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
This PR updates the with-videojs example to use the App Router. Here are the changes that have been made: - Renamed the pages folder to the app folder. - Updated the routing for / files to align with the App Router. - Added the layout.tsx file as part of the App Router. - Updated the package.json file. The following actions were performed as part of this PR: - Ran `pnpm prettier-check `with no issues found. - Executed the `pnpm check-examples` script. CC: @samcx --------- Co-authored-by: samcx <[email protected]>
69 lines
1.3 KiB
TypeScript
69 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import { useCallback, useEffect, useState } from "react";
|
|
import videojs from "video.js";
|
|
import "videojs-youtube";
|
|
|
|
interface PlayerProps {
|
|
/**
|
|
*
|
|
*/
|
|
techOrder: string[];
|
|
/**
|
|
* Is autoplay enabled for this video?
|
|
*/
|
|
autoplay: boolean;
|
|
/**
|
|
* Should this video have controls?
|
|
*/
|
|
controls: boolean;
|
|
/**
|
|
* A list of video sources.
|
|
*/
|
|
sources: {
|
|
/**
|
|
* The source url.
|
|
*/
|
|
src: string;
|
|
/**
|
|
* The type of source
|
|
*/
|
|
type: string;
|
|
}[];
|
|
}
|
|
|
|
/**
|
|
* A simple video player component for displaying videos from external websites.
|
|
* @returns A Video.js video player element.
|
|
*/
|
|
const Player = (props: PlayerProps) => {
|
|
const [videoEl, setVideoEl] = useState<HTMLVideoElement | null>(null);
|
|
const onVideo = useCallback((el: HTMLVideoElement) => {
|
|
setVideoEl(el);
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (videoEl == null) {
|
|
return;
|
|
}
|
|
|
|
// our video.js player
|
|
const player = videojs(videoEl, props);
|
|
|
|
return () => {
|
|
player.dispose();
|
|
};
|
|
}, [props, videoEl]);
|
|
|
|
return (
|
|
<>
|
|
<h1>The implementation below is using react functions</h1>
|
|
<div data-vjs-player>
|
|
<video ref={onVideo} className="video-js" playsInline />
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default Player;
|