import * as React from "react";
import * as ReactDOM from "react-dom";
import {
StyledViewer,
StyledViewerContainer,
StyledNextToolbar,
StyledButtonScroll,
} from "./styled-viewer";
import ControlBtn from "./sub-components/control-btn";
import Text from "@docspace/components/text";
import IconButton from "@docspace/components/icon-button";
import MediaNextIcon from "../../../public/images/media.view.react.svg";
import MediaPrevIcon from "../../../public/images/media.viewer.prev.react.svg";
import ViewerPlayer from "./sub-components/viewer-player";
export const Viewer = (props) => {
const {
visible,
onMaskClick,
title,
onNextClick,
onPrevClick,
playlistPos,
playlist,
isImage,
} = props;
const defaultContainer = React.useRef(
typeof document !== "undefined" ? document.createElement("div") : null
);
const [container, setContainer] = React.useState(props.container);
const [init, setInit] = React.useState(false);
const detailsContainerRef = React.useRef(null);
const viewerToolboxRef = React.useRef(null);
const videoElement = React.useRef(null);
const [overlay, setOverlay] = React.useState(true);
React.useEffect(() => {
document.body.appendChild(defaultContainer.current);
}, []);
React.useEffect(() => {
if (props.visible && !init) {
setInit(true);
}
}, [props.visible, init]);
React.useEffect(() => {
if (props.container) {
setContainer(props.container);
} else {
setContainer(defaultContainer.current);
}
}, [props.container]);
if (!init) {
return null;
}
const viewerPortal = ReactDOM.createPortal(
,
container
);
const videoPortal = ReactDOM.createPortal(
,
container
);
return (
{overlay && }
{playlist.length > 1 && (
<>
{playlistPos < playlist.length - 1 && (
<>
>
)}
>
)}
{isImage ? (
<>
{viewerPortal}
>
) : (
<>{videoPortal}>
)}
);
};