PromucFlow_constructor/app/client/src/components/designSystems/appsmith/VideoComponent.tsx

73 lines
1.5 KiB
TypeScript
Raw Normal View History

2020-06-22 13:46:19 +00:00
import ReactPlayer from "react-player";
import React, { Ref } from "react";
import styled from "styled-components";
import { ENTER_VIDEO_URL } from "constants/messages";
export interface VideoComponentProps {
url?: string;
autoplay?: boolean;
controls?: boolean;
onStart?: () => void;
onPlay?: () => void;
onPause?: () => void;
onEnded?: () => void;
onReady?: () => void;
onProgress?: () => void;
onSeek?: () => void;
onError?: () => void;
player?: Ref<ReactPlayer>;
}
2020-06-22 13:46:19 +00:00
const ErrorContainer = styled.div`
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
2020-06-22 13:46:19 +00:00
`;
const Error = styled.span``;
2020-06-22 13:46:19 +00:00
export default function VideoComponent(props: VideoComponentProps) {
const {
url,
autoplay,
controls,
onStart,
onPlay,
onPause,
onEnded,
onReady,
onProgress,
onSeek,
onError,
player,
} = props;
2020-06-22 13:46:19 +00:00
return (
<>
{url ? (
<ReactPlayer
url={url}
ref={player}
playing={autoplay}
controls={controls || true}
onStart={onStart}
onPlay={onPlay}
onPause={onPause}
onEnded={onEnded}
onReady={onReady}
onProgress={onProgress}
onSeek={onSeek}
onError={onError}
width="100%"
height="100%"
pip={false}
/>
) : (
<ErrorContainer>
<Error>{ENTER_VIDEO_URL}</Error>
</ErrorContainer>
)}
</>
2020-06-22 13:46:19 +00:00
);
}