{"version":3,"sources":["message.ts","name.ts","useRoomID.ts","LoginForm.tsx","RoomManage.tsx","url.ts","useRoom.ts","Video.tsx","Room.tsx","Router.tsx","useConfig.ts","index.tsx","logo.svg"],"names":["ShareMode","RoomMode","roomConfig","dictionaries","gen","length","separator","getRoomFromURL","search","slice","split","find","param","startsWith","LoginForm","login","config","hide","React","useState","user","setUser","pass","setPass","loading","setLoading","submit","event","a","preventDefault","then","catch","FormControl","fullWidth","onSubmit","style","display","alignItems","Typography","flex","Button","variant","size","onClick","undefined","TextField","value","onChange","e","target","label","margin","type","LoadingButton","children","props","classes","useStyles","disabled","CircularProgress","className","buttonProgress","color","makeStyles","green","position","top","left","marginTop","marginLeft","CreateRoom","room","window","location","id","setId","authMode","loggedIn","Turn","Stun","defaultMode","mode","setMode","ownerLeave","setOwnerLeave","FormControlLabel","control","Checkbox","checked","_","InputLabel","Select","x","endAdornment","IconButton","href","MenuItem","payload","closeOnOwnerLeave","RoomManage","showLogin","setShowLogin","canCreateRoom","loginVisible","Grid","container","justify","paddingTop","maxWidth","width","spacing","item","xs","align","gutterBottom","src","logo","alt","Paper","elevation","padding","logout","bottom","version","Link","port","hostname","protocol","pathname","slashes","concat","path","endsWith","substring","lastIndexOf","url","urlWithSlash","relayConfig","indexOf","iceTransportPolicy","hostSession","sid","ice","send","done","stream","peer","RTCPeerConnection","iceServers","onicecandidate","candidate","onconnectionstatechange","console","log","connectionState","close","getTracks","forEach","track","addTrack","createOffer","offerToReceiveVideo","hostOffer","setLocalDescription","clientSession","onTrack","MediaStream","ontrack","useRoom","state","setState","useEffect","addEventListener","removeEventListener","useCallback","oldId","history","pushState","roomId","useRoomID","roomID","setRoomID","enqueueSnackbar","useSnackbar","conn","useRef","host","client","create","Promise","resolve","ws","current","WebSocket","replace","message","readyState","OPEN","JSON","stringify","first","onmessage","data","parse","clientStreams","filter","peer_id","addIceCandidate","setRemoteDescription","createAnswer","answer","onclose","reason","persist","onerror","err","onopen","username","localStorage","getItem","getPermanentName","share","navigator","mediaDevices","getDisplayMedia","video","cursor","audio","getVideoTracks","stopShare","hostStream","Object","values","stop","setName","name","Video","element","setElement","srcObject","play","muted","ref","HostStream","Symbol","Room","open","setOpen","nameInput","setNameInput","permanent","setPermanent","showControl","setShowControl","hoverControl","setHoverControl","showMore","setShowMore","selectedStream","setSelectedStream","videoElement","setVideoElement","useShowOnMouseMovement","some","submitName","setItem","copyLink","clipboard","writeText","setHoverState","useMemo","onMouseLeave","onMouseEnter","controlVisible","useHotkeys","requestFullscreen","currentStreamIndex","findIndex","nextIndex","previousIndex","videoContainer","title","Tooltip","component","transform","arrow","fontSize","tooltip","noMaxWidth","users","map","result","you","push","owner","streaming","join","flags","Badge","badgeContent","currentTarget","Menu","anchorEl","keepMounted","Boolean","onClose","bottomContainer","smallVideoContainer","key","smallVideo","smallVideoLabel","Dialog","DialogTitle","DialogContent","autoFocus","DialogActions","doShow","timeoutHandle","update","clearTimeout","setTimeout","theme","background","palette","paper","zIndex","right","maxHeight","height","minWidth","minHeight","overflow","Router","other","setConfig","refetch","fetch","json","password","body","FormData","set","method","status","text","useConfig","createMuiTheme","overrides","MuiSelect","icon","MuiLink","root","MuiIconButton","MuiListItemIcon","MuiToolbar","MuiTooltip","default","primary","main","secondary","Snackbar","notistackRef","createRef","onClickDismiss","closeSnackbar","maxSnack","action","ReactDOM","render","StrictMode","CssBaseline","document","getElementById","module","exports"],"mappings":"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","file":"static/js/main.a3aaee0b.chunk.js","sourcesContent":["export enum ShareMode {\n Everyone = 'Everyone',\n Selected = 'Selected',\n}\n\ntype Typed = {type: Type; payload: Base};\n\nexport interface UIConfig {\n authMode: 'turn' | 'none' | 'all';\n user: string;\n loggedIn: boolean;\n version: string;\n}\n\nexport interface RoomConfiguration {\n id?: string;\n closeOnOwnerLeave?: boolean;\n mode: RoomMode;\n username?: string;\n}\n\nexport enum RoomMode {\n Turn = 'turn',\n Stun = 'stun',\n Local = 'local',\n}\n\nexport interface JoinConfiguration {\n id: string;\n password?: string;\n username?: string;\n}\n\nexport interface StringMessage {\n message: string;\n}\n\nexport interface P2PSession {\n id: string;\n peer: string;\n iceServers: ICEServer[];\n}\n\nexport interface ICEServer {\n urls: string[];\n credential: string;\n username: string;\n}\n\nexport interface RoomInfo {\n id: string;\n share: ShareMode;\n mode: RoomMode;\n users: RoomUser[];\n}\n\nexport interface RoomUser {\n id: string;\n name: string;\n streaming: boolean;\n you: boolean;\n owner: boolean;\n}\n\nexport interface P2PMessage {\n sid: string;\n value: T;\n}\n\nexport type Room = Typed;\nexport type Error = Typed;\nexport type HostSession = Typed;\nexport type Name = Typed<{username: string}, 'name'>;\nexport type ClientSession = Typed;\nexport type HostICECandidate = Typed, 'hostice'>;\nexport type ClientICECandidate = Typed, 'clientice'>;\nexport type HostOffer = Typed, 'hostoffer'>;\nexport type ClientAnswer = Typed, 'clientanswer'>;\nexport type StartSharing = Typed<{}, 'share'>;\nexport type StopShare = Typed<{}, 'stopshare'>;\nexport type RoomCreate = Typed;\nexport type JoinRoom = Typed;\nexport type EndShare = Typed;\n\nexport type IncomingMessage =\n | Room\n | Error\n | HostSession\n | ClientSession\n | HostICECandidate\n | ClientICECandidate\n | HostOffer\n | EndShare\n | ClientAnswer;\n\nexport type OutgoingMessage =\n | RoomCreate\n | Name\n | JoinRoom\n | HostICECandidate\n | ClientICECandidate\n | HostOffer\n | StopShare\n | ClientAnswer\n | StartSharing;\n","import * as gen from 'unique-names-generator';\n\nconst roomConfig: gen.Config = {\n dictionaries: [gen.adjectives, gen.colors, gen.animals],\n length: 3,\n separator: '-',\n};\nexport const randomRoomName = () => gen.uniqueNamesGenerator(roomConfig);\n\nexport const getPermanentName = () => localStorage.getItem('screego_name') ?? undefined;\nexport const setPermanentName = (name: string) => localStorage.setItem('screego_name', name);\n","import React from 'react';\n\nexport const getRoomFromURL = (search: string): string | undefined =>\n search\n .slice(1)\n .split('&')\n .find((param) => param.startsWith('room='))\n ?.split('=')[1];\n\nexport const useRoomID = (): [string | undefined, (v?: string) => void] => {\n const [state, setState] = React.useState(() =>\n getRoomFromURL(window.location.search)\n );\n React.useEffect(() => {\n const onChange = (): void => setState(getRoomFromURL(window.location.search));\n window.addEventListener('popstate', onChange);\n return () => window.removeEventListener('popstate', onChange);\n }, [setState]);\n return [\n state,\n React.useCallback(\n (id) =>\n setState((oldId?: string) => {\n if (oldId !== id) {\n window.history.pushState({roomId: id}, '', id ? `?room=${id}` : '?');\n }\n return id;\n }),\n [setState]\n ),\n ];\n};\n","import {UseConfig} from './useConfig';\nimport React from 'react';\nimport {\n Button,\n ButtonProps,\n CircularProgress,\n FormControl,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {green} from '@material-ui/core/colors';\n\nexport const LoginForm = ({config: {login}, hide}: {config: UseConfig; hide?: () => void}) => {\n const [user, setUser] = React.useState('');\n const [pass, setPass] = React.useState('');\n const [loading, setLoading] = React.useState(false);\n const submit = async (event: {preventDefault: () => void}) => {\n event.preventDefault();\n setLoading(true);\n login(user, pass)\n .then(() => {\n setLoading(false);\n })\n .catch(() => setLoading(false));\n };\n return (\n
\n \n
\n
\n Login to Screego\n {hide ? (\n \n ) : undefined}\n
\n setUser(e.target.value)}\n label=\"Username\"\n margin=\"dense\"\n />\n setPass(e.target.value)}\n label=\"Password\"\n margin=\"dense\"\n />\n \n Login\n \n \n
\n
\n );\n};\n\nexport const LoadingButton = ({loading, children, ...props}: ButtonProps & {loading: boolean}) => {\n const classes = useStyles();\n return (\n \n );\n};\n\nconst useStyles = makeStyles(() => ({\n buttonProgress: {\n color: green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n","import React from 'react';\nimport {\n Button,\n Checkbox,\n FormControl,\n FormControlLabel,\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n Paper,\n Select,\n TextField,\n Typography,\n Link,\n} from '@material-ui/core';\nimport {FCreateRoom, UseRoom} from './useRoom';\nimport {RoomMode, UIConfig} from './message';\nimport {randomRoomName} from './name';\nimport {getRoomFromURL} from './useRoomID';\nimport HelpIcon from '@material-ui/icons/Help';\nimport logo from './logo.svg';\nimport {UseConfig} from './useConfig';\nimport {LoginForm} from './LoginForm';\n\nconst defaultMode = (authMode: UIConfig['authMode'], loggedIn: boolean): RoomMode => {\n if (loggedIn) {\n return RoomMode.Turn;\n }\n switch (authMode) {\n case 'all':\n return RoomMode.Turn;\n case 'turn':\n return RoomMode.Stun;\n case 'none':\n default:\n return RoomMode.Turn;\n }\n};\n\nconst CreateRoom = ({room, config}: Pick & {config: UIConfig}) => {\n const [id, setId] = React.useState(\n () => getRoomFromURL(window.location.search) ?? randomRoomName()\n );\n const [mode, setMode] = React.useState(defaultMode(config.authMode, config.loggedIn));\n const [ownerLeave, setOwnerLeave] = React.useState(true);\n const submit = () =>\n room({\n type: 'create',\n payload: {\n mode,\n closeOnOwnerLeave: ownerLeave,\n id: id || undefined,\n },\n });\n return (\n
\n \n setId(e.target.value)}\n label=\"id\"\n margin=\"dense\"\n />\n setOwnerLeave(checked)}\n />\n }\n label=\"Close Room after you leave\"\n />\n \n NAT Traversal via\n setMode(x.target.value as RoomMode)}\n endAdornment={\n \n \n \n }>\n \n STUN\n \n \n TURN\n \n \n \n \n \n
\n );\n};\n\nexport const RoomManage = ({room, config}: {room: FCreateRoom; config: UseConfig}) => {\n const [showLogin, setShowLogin] = React.useState(false);\n\n const canCreateRoom = config.authMode !== 'all';\n const loginVisible = !config.loggedIn && (showLogin || !canCreateRoom);\n\n return (\n \n \n \n \"logo\"\n \n \n {loginVisible ? (\n setShowLogin(false) : undefined}\n />\n ) : (\n <>\n \n Hello {config.user}!{' '}\n {config.loggedIn ? (\n \n ) : (\n setShowLogin(true)}>\n Login\n \n )}\n \n\n \n \n )}\n \n \n
\n Screego {config.version} |{' '}\n GitHub\n
\n \n );\n};\n","const {port, hostname, protocol, pathname} = window.location;\nconst slashes = protocol.concat('//');\nconst path = pathname.endsWith('/') ? pathname : pathname.substring(0, pathname.lastIndexOf('/'));\nconst url = slashes.concat(port ? hostname.concat(':', port) : hostname) + path;\nexport const urlWithSlash =\n process.env.NODE_ENV === 'development'\n ? 'http://localhost:5050/'\n : url.endsWith('/')\n ? url\n : url.concat('/');\n","import React from 'react';\nimport {\n ICEServer,\n IncomingMessage,\n JoinRoom,\n OutgoingMessage,\n RoomCreate,\n RoomInfo,\n} from './message';\nimport {getPermanentName} from './name';\nimport {urlWithSlash} from './url';\nimport {useSnackbar} from 'notistack';\nimport {useRoomID} from './useRoomID';\n\nexport type RoomState = false | ConnectedRoom;\nexport type ConnectedRoom = {\n ws: WebSocket;\n hostStream?: MediaStream;\n clientStreams: ClientStream[];\n} & RoomInfo;\n\ninterface ClientStream {\n id: string;\n peer_id: string;\n stream: MediaStream;\n}\n\nexport interface UseRoom {\n state: RoomState;\n room: FCreateRoom;\n share: () => void;\n setName: (name: string) => void;\n stopShare: () => void;\n}\n\nconst relayConfig: Partial =\n window.location.search.indexOf('forceTurn=true') !== -1 ? {iceTransportPolicy: 'relay'} : {};\n\nconst hostSession = async ({\n sid,\n ice,\n send,\n done,\n stream,\n}: {\n sid: string;\n ice: ICEServer[];\n send: (e: OutgoingMessage) => void;\n done: () => void;\n stream: MediaStream;\n}): Promise => {\n const peer = new RTCPeerConnection({...relayConfig, iceServers: ice});\n peer.onicecandidate = (event) => {\n if (!event.candidate) {\n return;\n }\n send({type: 'hostice', payload: {sid: sid, value: event.candidate}});\n };\n\n peer.onconnectionstatechange = (event) => {\n console.log('host change', event);\n if (\n peer.connectionState === 'closed' ||\n peer.connectionState === 'disconnected' ||\n peer.connectionState === 'failed'\n ) {\n peer.close();\n done();\n }\n };\n\n stream.getTracks().forEach((track) => peer.addTrack(track, stream));\n\n const hostOffer = await peer.createOffer({offerToReceiveVideo: true});\n await peer.setLocalDescription(hostOffer);\n send({type: 'hostoffer', payload: {value: hostOffer, sid: sid}});\n\n return peer;\n};\n\nconst clientSession = async ({\n sid,\n ice,\n send,\n done,\n onTrack,\n}: {\n sid: string;\n ice: ICEServer[];\n send: (e: OutgoingMessage) => void;\n onTrack: (s: MediaStream) => void;\n done: () => void;\n}): Promise => {\n console.log('ice', ice);\n const peer = new RTCPeerConnection({...relayConfig, iceServers: ice});\n peer.onicecandidate = (event) => {\n if (!event.candidate) {\n return;\n }\n send({type: 'clientice', payload: {sid: sid, value: event.candidate}});\n };\n peer.onconnectionstatechange = (event) => {\n console.log('client change', event);\n if (\n peer.connectionState === 'closed' ||\n peer.connectionState === 'disconnected' ||\n peer.connectionState === 'failed'\n ) {\n peer.close();\n done();\n }\n };\n const stream = new MediaStream();\n peer.ontrack = (event) => {\n stream.addTrack(event.track);\n };\n onTrack(stream);\n\n return peer;\n};\n\nexport type FCreateRoom = (room: RoomCreate | JoinRoom) => Promise;\n\nexport const useRoom = (): UseRoom => {\n const [roomID, setRoomID] = useRoomID();\n const {enqueueSnackbar} = useSnackbar();\n const conn = React.useRef();\n const host = React.useRef>({});\n const client = React.useRef>({});\n const stream = React.useRef();\n\n const [state, setState] = React.useState(false);\n\n const room: FCreateRoom = React.useCallback(\n (create) => {\n return new Promise((resolve) => {\n const ws = (conn.current = new WebSocket(\n urlWithSlash.replace('http', 'ws') + 'stream'\n ));\n const send = (message: OutgoingMessage) => {\n if (ws.readyState === ws.OPEN) ws.send(JSON.stringify(message));\n };\n let first = true;\n ws.onmessage = (data) => {\n const event: IncomingMessage = JSON.parse(data.data);\n if (first) {\n first = false;\n if (event.type === 'room') {\n resolve();\n enqueueSnackbar(create.type === 'join' ? 'Joined' : 'Room Created', {\n variant: 'success',\n });\n setState({ws, ...event.payload, clientStreams: []});\n setRoomID(event.payload.id);\n } else {\n resolve();\n enqueueSnackbar('Unknown Event: ' + event.type, {variant: 'error'});\n ws.close(1000, 'received unknown event');\n }\n return;\n }\n\n switch (event.type) {\n case 'room':\n setState((current) =>\n current ? {...current, ...event.payload} : current\n );\n return;\n case 'hostsession':\n if (!stream.current) {\n return;\n }\n hostSession({\n sid: event.payload.id,\n stream: stream.current!,\n ice: event.payload.iceServers,\n send,\n done: () => delete host.current[event.payload.id],\n }).then((peer) => {\n host.current[event.payload.id] = peer;\n });\n return;\n case 'clientsession':\n const {id: sid, peer} = event.payload;\n clientSession({\n sid,\n send,\n ice: event.payload.iceServers,\n done: () => {\n delete client.current[sid];\n setState((current) =>\n current\n ? {\n ...current,\n clientStreams: current.clientStreams.filter(\n ({id}) => id !== sid\n ),\n }\n : current\n );\n },\n onTrack: (stream) =>\n setState((current) =>\n current\n ? {\n ...current,\n clientStreams: [\n ...current.clientStreams,\n {\n id: sid,\n stream,\n peer_id: peer,\n },\n ],\n }\n : current\n ),\n }).then((peer) => (client.current[event.payload.id] = peer));\n return;\n case 'clientice':\n host.current[event.payload.sid]?.addIceCandidate(event.payload.value);\n return;\n case 'clientanswer':\n host.current[event.payload.sid]?.setRemoteDescription(\n event.payload.value\n );\n return;\n case 'hostoffer':\n (async () => {\n await client.current[event.payload.sid]?.setRemoteDescription(\n event.payload.value\n );\n const answer = await client.current[\n event.payload.sid\n ]?.createAnswer();\n await client.current[event.payload.sid]?.setLocalDescription(\n answer\n );\n send({\n type: 'clientanswer',\n payload: {sid: event.payload.sid, value: answer},\n });\n })();\n return;\n case 'hostice':\n client.current[event.payload.sid]?.addIceCandidate(event.payload.value);\n return;\n case 'endshare':\n client.current[event.payload]?.close();\n host.current[event.payload]?.close();\n setState((current) =>\n current\n ? {\n ...current,\n clientStreams: current.clientStreams.filter(\n ({id}) => id !== event.payload\n ),\n }\n : current\n );\n }\n };\n ws.onclose = (event) => {\n if (first) {\n resolve();\n first = false;\n }\n enqueueSnackbar(event.reason, {variant: 'error', persist: true});\n setState(false);\n };\n ws.onerror = (err) => {\n if (first) {\n resolve();\n first = false;\n }\n enqueueSnackbar(err, {variant: 'error', persist: true});\n setState(false);\n };\n ws.onopen = () => {\n create.payload.username = getPermanentName();\n send(create);\n };\n });\n },\n [setState, enqueueSnackbar, setRoomID]\n );\n\n const share = async () => {\n if (!navigator.mediaDevices) {\n enqueueSnackbar(\n 'Could not start presentation. (mediaDevices undefined) Are you using https?',\n {\n variant: 'error',\n persist: true,\n }\n );\n return;\n }\n stream.current = await navigator.mediaDevices\n // @ts-ignore\n .getDisplayMedia({\n video: {\n cursor: 'always',\n },\n audio: true,\n });\n stream.current?.getVideoTracks()[0].addEventListener('ended', () => stopShare());\n setState((current) => (current ? {...current, hostStream: stream.current} : current));\n\n conn.current?.send(JSON.stringify({type: 'share', payload: {}}));\n };\n\n const stopShare = async () => {\n Object.values(host.current).forEach((peer) => {\n peer.close();\n });\n host.current = {};\n stream.current?.getTracks().forEach((track) => track.stop());\n stream.current = undefined;\n conn.current?.send(JSON.stringify({type: 'stopshare', payload: {}}));\n setState((current) => (current ? {...current, hostStream: undefined} : current));\n };\n\n const setName = (name: string): void => {\n conn.current?.send(JSON.stringify({type: 'name', payload: {username: name}}));\n };\n\n React.useEffect(() => {\n if (roomID) {\n room({type: 'join', payload: {id: roomID}});\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {state, room, share, stopShare, setName};\n};\n","import React from 'react';\n\nexport const Video = ({src, className}: {src: MediaStream; className?: string}) => {\n const [element, setElement] = React.useState(null);\n\n React.useEffect(() => {\n if (element) {\n element.srcObject = src;\n element.play();\n }\n }, [element, src]);\n\n return