Files
StevenandGitHub 4466ba436b chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

67 lines
1.3 KiB
TypeScript

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;