import { css } from "@emotion/react"; import { ReactNode, useEffect, useRef, useState } from "react"; import type { FC } from "react"; import { domMax, LazyMotion, m } from "framer-motion"; import { QRButton } from "./Qr"; import { Fab, FullscreenIcon, Phone, Share, Tablet, ToggleButton as muiToggleButton, ToggleButtonGroup as muiToggleButtonGroup, Tv, } from "./mui"; import type { ToggleButton as MuiToggleButton, ToggleButtonGroup as MuiToggleButtonGroup, } from "./mui"; const ToggleButtonGroup = muiToggleButtonGroup as typeof MuiToggleButtonGroup; const ToggleButton = muiToggleButton as typeof MuiToggleButton; const breakPoints = [680, 768, 1920]; const breakPointHeights = [1137, 1024, 1080]; const sizes = [10, 25, 50, 75, 100, 150]; const bg = `rgba(${Math.random() * 128 + 64}, ${Math.random() * 128 + 64}, ${ Math.random() * 128 + 64 }, ${!navigator.userAgent.includes("Firefox") ? 0.3 : 0.7})`; interface DraggableWindowProps { // onRestore: (() => void); hashCode: number; position?: string; room: string; children: ReactNode; } export const DraggableWindow: FC = ( { children, // onRestore, room, hashCode, }, ) => { const [scaleRange, changeScaleRange] = useState(100); const startPositions = { bottom: 0, right: 0 }; const [{ bottom, right }, setPositions] = useState(startPositions); const [width, setWidth] = useState(window.innerWidth * devicePixelRatio); const [height, setHeight] = useState(window.innerHeight * devicePixelRatio); const ref = useRef(null); const scale = scaleRange / 100; useEffect(() => { const reveal = async () => { setPositions({ bottom: window.innerHeight * 0.2, right: window.innerWidth * 0.2, }); if (window.innerWidth / devicePixelRatio < 600) { changeScaleRange(50); setWidth(breakPoints[0]); setHeight(breakPointHeights[0]); } if (window.innerWidth / devicePixelRatio < 1200) { changeScaleRange(75); setWidth(breakPoints[0]); setHeight(breakPointHeights[0]); } else if (window.innerWidth / devicePixelRatio < 1800) { setWidth(breakPoints[1]); setHeight(breakPointHeights[1]); changeScaleRange(50); } else if (window.innerWidth / devicePixelRatio < 2500) { setWidth(breakPoints[1]); setHeight(breakPointHeights[1]); changeScaleRange(75); } else if (window.innerWidth / devicePixelRatio > 2500) { setWidth(breakPoints[1]); setHeight(breakPointHeights[1]); changeScaleRange(100); } setPositions({ bottom: 20, right: 20, }); }; reveal(); // setTimeout(reveal, 200); }, []); return (
{ newScale && changeScaleRange(newScale); }} > {sizes.map((size) => ( {size}% ))} {/* {width}*{height} */} {children} { if (newSize) { setHeight(breakPointHeights[breakPoints.indexOf(newSize)]); setWidth(newSize); } }} > {breakPoints.map((size) => ( {size === 680 ? ( ) : (size === 768 ? ( ) : ( ))} ))}
{ document.getElementById("root")?.requestFullscreen(); }} > open(`/live/${room}/public`)} >
); }; export default DraggableWindow;