Files
cc8b809999 updated the example of with-videojs to utilize the App Router (#70226)
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]>
2024-09-18 21:22:25 +00:00

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;