{"version":3,"sources":["site/selectors/siteSelectors.ts","utils/functions/reduxUtils.ts","site/utils/playerUrlCreators.ts","utils/functions/axiosUtils.ts","site/actions/cardsActions.ts","site/actions/siteActions.ts","site/components/site/Notifier.tsx","utils/functions/NormalizedEntities.ts","player/selectors/playerSelectors.ts","utils/functions/Vector2.ts","utils/functions/Position.ts","utils/functions/Size.ts","player/actions/helpers/multistreamProcessHelper.ts","player/actions/playerActions.ts","player/actions/streamActions.ts","player/actions/streamsContainerActions.ts","player/actions/multistreamActions.ts","player/reducers/multistreamReducer.ts","player/reducers/streamsContainerReducer.ts","player/reducers/streamReducer.ts","player/actions/helpers/streamSnapHelper.ts","player/actions/componentActions.ts","player/reducers/componentReducer.ts","player/reducers/playerReducer.ts","site/reducers/cardsReducer.ts","site/reducers/siteReducer.ts","site/components/site/ErrorReportingBoundary.tsx","utils/components/ButtonProgress.tsx","site/components/site/LoginButton.tsx","site/components/site/SearchBar.tsx","site/components/site/Menu.tsx","site/components/site/Footer.tsx","site/components/cards/CardsDeck.tsx","site/components/cards/GameCard.tsx","site/components/cards/MultistreamCardMedia.tsx","site/components/cards/MultistreamCardRoot.tsx","site/components/cards/MultistreamCard.tsx","site/pages/Home.tsx","site/pages/About.tsx","utils/functions/FormState.ts","site/pages/Contact.tsx","site/pages/CookiesPolicy.tsx","site/pages/PrivacyPolicy.tsx","site/pages/Browse.tsx","site/pages/Games.tsx","site/pages/Create.tsx","site/components/site/BrowseTabs.tsx","site/pages/User.tsx","site/components/cards/UserMultistreamSettings.tsx","site/components/cards/UserMultistreamCard.tsx","site/pages/UserMultistreams.tsx","utils/components/DocumentScrollbars.tsx","site/pages/SearchResults.tsx","site/pages/SiteApp.tsx","player/components/stream/StreamFrame.tsx","player/components/stream/StreamMask.tsx","player/actions/streamSynchronizationActions.ts","player/components/stream/streamPlayers/ReactPlayerStream.tsx","player/components/stream/streamPlayers/YoutubeStream.tsx","player/utils/StopIFrameFlash.tsx","player/components/stream/streamPlayers/TwitchChat.tsx","player/components/stream/streamPlayers/TwitchStream.tsx","player/components/stream/streamPlayers/TwitterStream.tsx","player/components/stream/streamPlayers/VideoFileStream.tsx","player/components/stream/streamPlayers/AudioFileStream.tsx","player/components/stream/streamPlayers/WebsiteStream.tsx","player/components/stream/StreamPlayerSelector.tsx","player/components/stream/StreamSettingsBase.tsx","player/components/stream/StreamSettings.tsx","player/components/stream/Stream.tsx","player/components/stream/MultiComponentTabs.tsx","player/components/stream/MultiComponent.tsx","player/components/StreamsContainer.tsx","player/components/multistreamSettings/GeneralInformationSettings.tsx","player/components/multistreamSettings/SelectStreamsSettings.tsx","utils/components/UnsavedChangesAlert.tsx","player/components/multistreamSettings/MultistreamFlagsSettings.tsx","player/components/multistreamSettings/MultistreamLayoutMockup.tsx","player/components/multistreamSettings/MultistreamLayoutMockupCard.tsx","player/components/multistreamSettings/LayoutSettings.tsx","player/components/multistreamSettings/SynchronizationSettings.tsx","player/components/multistreamSettings/MultistreamSettings.tsx","player/components/multistreamSettings/StreamDetailsModal.tsx","player/components/SnapPane.tsx","player/components/MultistreamPlayer.tsx","player/pages/Player.tsx","player/pages/Game.tsx","site/pages/PlayerApp.tsx","site/pages/App.tsx","serviceWorker.js","index.js"],"names":["getSite","state","hasOwnProperty","isSiteState","site","getCardsData","id","cards","getNotifications","notifications","getSiteFlags","siteFlags","createReducer","actionHandlers","action","produce","draft","actionType","type","payload","createMultistreamUrl","key","title","createUrl","route","titleUri","replace","triedToRequestTokenAlready","getRequestAuthConfig","authContext","a","isAuthenticated","undefined","getAccessTokenSilently","token","headers","Authorization","types","fetchCards","url","forwardCursor","dispatch","getState","cardsData","cancelToken","cancel","axios","CancelToken","source","requestConfig","get","params","response","data","loadedAll","cursor","length","isCancel","console","error","clearCards","refreshCards","notify","message","Date","getTime","Math","random","sendFeedbackInProgess","value","isSendFeedbackInProgess","mapDispatchToProps","removeNotification","connector","connect","props","enqueueSnackbar","useSnackbar","React","useEffect","forEach","notification","variant","NormalizedEntities","entityIds","entitiesObject","_entityIds","_entitiesObject","this","entityId","index","callbackFn","predicate","filter","map","foundEntityId","find","element","keySelector","newEntityIds","slice","sort","entityIdA","entityIdB","comparedValueA","comparedValueB","getPlayer","isPlayerState","player","getNormalizedMultistream","normalizedMultistream","getMultistream","result","getMultistreamFlags","flags","getStreamIds","streams","getLayout","layout","getComponentIds","components","getStreamsObject","entities","getComponentsObject","getStream","streamId","streamsObject","getComponent","componentId","componentsObject","getAllStreams","streamIds","getVisibleStreams","allStreams","x","isHidden","getAllComponents","componentIds","getVisibleStreamsComponentPairs","allComponents","groupedStreams","ids","reduce","groups","stream","order","push","Object","entries","some","streamOrder","componentForStreams","component","Number","Error","getVisibleComponents","visibleStreams","y","getMultiVideoStreamsQueue","multiVideoStreams","queues","getPlayerFlags","playerFlags","getStreamWithDifferentSourceType","differentSourceType","streamType","sourceKey","sourceType","getLayoutTemplates","normalizedLayoutTemplates","layoutTemplates","getSyncStreams","synchronizationSupport","synchronization","generateCalculateRequestedSynchronizationTimeMsFunction","multistreamState","isSynchronizationRequested","latestSynchronizationBaseMs","currentTime","synchronizationBaseSnapshotTimeMs","Vector2","unit","document","documentElement","clientWidth","body","window","innerWidth","clientHeight","innerHeight","binaryOperation","left","right","fractionDigits","toFixed","sqrt","lengthSquared","multiply","divide","getViewWidth","getViewHeight","operator","Position","top","_vector","vector","newVector","clone","convertUnitToPercent","fromVector","convertUnitToPixel","Size","width","height","normalizeMultistream","denormalizedMultistream","multistreamSchema","getMultistreamSchema","multistream","normalize","processMultistream","processStream","processComponent","denormalizeMultistream","denormalize","deprocessMultistream","deprocessStream","deprocessComponent","normalizeLayoutTemplates","denormalizedLayoutTemplates","layoutTemplatesSchema","getLayoutTemplatesSchema","layoutTemplateId","schema","Entity","acc","curr","keys","flag","position","size","openStreamDetailModal","open","streamDetailsModalData","isModalOpen","requestLayoutTemplates","changeMultistreamLayout","detectedMultistreamChanges","saveRequestInProgess","setStreamDefaultMaskRectangle","defaultMaskRectangle","setStreamMinimumFrameSize","minimumFrameSize","hideStream","hide","updateComponentLayers","requestNextMultiVideoStreamsIfNeeded","multiVideoStreamsQueue","isRequesting","isExhausted","assignMultiVideoStreamsIfNeeded","multiVideoStream","assignNextMultiVideoStream","fetchMultistream","apiUrl","setMultistream","isOwner","errorDuringMultistreamFetch","updateSynchronizationBaseTime","multistreamReducer","description","isPrivate","isMultistreamOwner","updateMultistreamIds","multistreamFlags","payloadComponents","updateMultistreamEntitiesId","payloadStreams","allEntities","payloadEntities","i","entity","at","oldEntityId","newEntityId","obj","streamsContainerReducer","addStream","removeStream","duplicateStream","editStream","detachStreamFromMultiComponent","componentsAndAreas","area","b","layer","newStream","newStreamComponent","getFreeComponent","addNewComponent","getNewStreamId","editedStreamId","editedStream","thumbnailUrl","replaceStream","replacedStreamId","replacedStream","lowestStreamId","min","freeComponents","getFreeComponents","lowestComponentOrder","lowestComponentId","highestComponentOrder","max","newComponentId","newComponentOrder","newComponent","constructNewComponent","newComponentSize","positionMargin","positionStep","calculateNewComponentPositionPercentage","componentSize","componentOrder","margin","step","horizontalStreamsLimit","floor","verticalStreamsLimit","newComponentPositionLeftPercentage","newComponentPositionTopPercentage","layoutComponents","uniqueStreamOrders","Array","from","Set","numberOfMissingComponents","alreadyUsedIds","currentComponentOrders","unassignedStreamOrder","componentEntities","streamReducer","addNewMultiVideoStreams","shift","otherMultiComponentStreams","enabledSynchronization","synchronizationShelve","playerEvent","playerEvents","queue","calculateComponentEdges","coordinate","start","end","bottom","calculateEdgeCandidates","otherVisibleComponents","edgeCandidates","candidates","rectangle","componentEdges","verticalXEdges","horizontalYEdges","windowWidth","windowHeight","windowEdges","calculateClosestEdge","referenceEdge","edges","snapTolerance","currentClosestEdge","edge","edgeDifference","abs","difference","calculateSnapPaneForComponent","pointerPosition","triggeringComponents","componentPositionPixel","componentSizePixel","resultComponent","calculateSnapPaneForPageEdge","screenSizePixel","leftPageEdge","rightPageEdge","topPageEdge","bottomPageEdge","updateComponentPosition","newPosition","detectedLayoutEdit","updateComponentSize","newSize","savePreSnapComponentSize","setComponentFrameActive","isFrameActive","mergeComponents","targetMultiComponentId","previousSize","preSnapSize","editedLayout","componentReducer","disableAllComponentFrames","visibleComponents","targetComponent","largestComponent","largestArea","targetComponentOrder","snapPane","sourceComponent","allSourceStreams","initialState","playerReducer","reduceReducers","cardsReducer","concat","siteReducer","reportFrontendError","_dispatch","post","name","stack","ErrorReportingBoundary","_info","context","children","Component","contextType","Auth0Context","withStyles","theme","createStyles","buttonProgress","marginTop","marginLeft","classes","visible","color","CircularProgress","className","loginText","maxWidth","loginButton","padding","spacing","useAuth0","Fragment","Hidden","mdDown","Typography","noWrap","Link","RouterLink","to","underline","user","nickname","lgUp","IconButton","aria-label","Button","onClick","loginWithPopup","disabled","isLoading","search","display","borderRadius","shape","backgroundColor","fade","palette","common","white","breakpoints","up","searchIcon","pointerEvents","alignItems","justifyContent","inputRoot","inputInput","paddingLeft","paddingRight","transition","transitions","create","clearButtonRoot","useState","setValue","previousRoute","setPreviousRoute","history","useHistory","requestSearch","input","trimmedInput","trim","location","pathname","urlSearchQuery","encodeURIComponent","clearSearch","Box","mr","InputBase","placeholder","root","inputProps","onChange","event","target","onKeyUp","onBlur","Fade","in","fontSize","DesktopMenuContent","websiteName","menuOptions","menuOption","label","NavLink","exact","link","menuItem","menuButton","activeClassName","activeMenuButton","MobileMenuContent","openDrawer","setOpenDrawer","handleDrawerClose","menuIcon","xsDown","Drawer","onClose","drawerList","role","onKeyDown","List","ListItem","button","ListItemText","primary","flexGrow","appBar","marginRight","scrollTrigger","useScrollTrigger","Slide","appear","direction","AppBar","Toolbar","smDown","mdUp","footerMenuOptions","Footer","version","currentYear","getFullYear","Container","m","ownProps","render","maxItems","cardComponents","card","lastCardComponent","visibilitySensorCardComponent","isVisible","partialVisibility","splice","my","flexWrap","py","startIcon","minWidth","thumbnail","cardWidth","content","paddingTop","paddingBottom","createGameUrl","Card","raised","CardActionArea","CardMedia","image","CardContent","align","streamThumbnail","thumbnails","getStreamThumbnails","tooltip","getTooltip","footer","keyId","creationDate","friendlyCreationDate","moment","utc","fromNow","test","withWidth","jumbotron","logoFont","fontFamily","down","logoButton","sectionTitle","currentSectionMargin","isWidthUp","isWidthDown","Paper","elevation","pt","pb","mt","pl","pr","About","FormState","formDefinition","_formDefinition","_formStateReact","_setFormStateReact","_onFormChange","fieldId","controlledValue","errorMessage","previousControlledValue","formStateReact","setFormStateReact","updateControlledValues","_this","field","fieldValue","checked","helperText","newValue","updateField","triggerOnFormChangeEvent","fieldIds","validationResult","values","processFormValues","validate","formValues","getValues","newFieldValue","finalValidation","validateField","newFormStateReact","fieldDefinition","currentField","hasCurrentError","required","maxLength","minLength","regexFormat","changedFormStateField","updateNeeded","newControlledValue","fieldChanges","sendFeedback","email","textAlign","rightIcon","formState","href","TextField","fullWidth","multiline","rows","autoFocus","validateAndProcessOnClick","CookiesPolicy","PrivacyPolicy","Browse","Games","createMultistream","redirectCallback","multistreamKey","multistreamUrl","clearAllCards","setRequesting","autoComplete","FormControlLabel","control","Checkbox","BrowseTabs","currentTab","useLocation","Tabs","indicatorColor","textColor","Tab","icon","User","logout","flexDirection","changeMultistreamPrivacy","removeMultistream","delete","optionTitle","menuAnchorElement","setMenuAnchorElement","isConfirmationDialogOpen","setConfirmationDialogOpen","isMenuOpen","Boolean","settingsOptions","hidden","handleMenuClose","onConfirmationDialogClose","currentTarget","anchorEl","keepMounted","settingOption","MenuItem","settingsOption","handleMenuItemClick","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","lastVisitDate","visits","local","format","friendlyLastVisitDate","style","overflow","textOverflow","UserMultistreams","DocumentScrollbars","forceYScroll","forceXScroll","hideScrollbars","showScrollbars","resetScrollbars","overflowY","overflowX","siteTheme","createMuiTheme","background","default","SiteApp","ThemeProvider","CssBaseline","path","Home","Contact","Create","SearchResults","resizeHandleStyles","defaultMinSize","showFullStreamMasks","fullStreamMasks","restoreDefaultStreamMasks","tryToSnapComponent","snapMode","otherComponents","snapResult","mode","referenceComponentEdges","leftClosestEdge","rightClosestEdge","topClosestEdge","bottomClosestEdge","closestVerticalXEdge","closestHorizontalYEdge","newX","newY","newWidth","newHeight","calculateComponentSnapToComponents","setComponentShowSettings","showSettings","tryToShowSnapPane","unmuteOnlyThisStream","shouldBeUnmuted","isUnmuted","setStreamIsUnmuted","embededStreams","unmuteStreamsOnHover","frame","border","activeFrame","dragStartTimeMs","setDragStartTimeMs","browserSize","setBrowserSize","settingsTimeout","setSettingsTimeout","isMoving","setIsMoving","preDragPositionAndSize","setPreDragPositionAndSize","framePosition","frameSize","constantFrameSize","updateBrowserSize","addEventListener","removeEventListener","currentSize","showComponentSettings","clearTimeout","timer","setTimeout","hideComponentSettings","getPointerPosition","touches","touch","clientX","clientY","isInteractive","enableResizing","topRight","bottomRight","bottomLeft","topLeft","minSize","activeFrameClass","layerStyle","zIndex","onMouseEnter","onMouseLeave","onMouseMove","disableDragging","minHeight","onDragStart","_data","now","horizontalFraction","verticalFraction","preSnapSizePixel","onDrag","onDragStop","dragDurationMs","dragDistance","distance","onResizeStart","onResize","_e","_dir","ref","_delta","parseFloat","onResizeStop","mask","opacity","debugMask","maskState","maskRectangle","debugMaskClass","isDebug","setStreamSynchronizationSupport","toggleStreamSynchronization","currentTimeMs","regenerateSynchronizationShelveValueForStreams","synchronizeThisStream","latestPlayerTimeMs","playerTimeSnapshotTimeMs","setStreamIsSynchronizationRequested","synchronizeAllStreams","supportedStreams","calculateCurrentPlayerTime","calculateCurrentPlayerTimeForStream","newSynchronizationBaseStream","currentBestStream","currentStreamId","currentStream","newSynchronizationShelve","setStreamPlayerTime","addPlayerEvent","setStreamIsPlaying","isPlaying","isPaused","playerEventsEndWith","streamPlayerEvents","lastPlayerEvents","triggerStreamPlayerEvent","playerCurrentTimeMs","round","syncStreams","synchronizationBaseMs","all","calculateRequestedSynchronizationTimeMs","volume","onReady","reactPlayerRef","useRef","synchronizeToSeconds","current","seekTo","onPlayerEvent","getCurrentTime","light","controls","playing","muted","onStart","onPlay","onPause","onBuffer","videoUrl","StopIFrameFlash","setVisibility","visibilityStyle","visibility","cloneElement","onLoadPropertyName","TwitchChat","channel","twitchUrl","twitterEmbedRef","embedContainer","refs","twitterEmbedOptions","screenName","noFooter","options","split","list","ownerScreenName","slug","momentId","limit","setStreamConstantFrameSize","iframe","src","allowFullScreen","StreamPlayerSelector","hiddenStreamMenus","buttonPanel","streamSettingsOptions","isMouseOverButton","setMouseOverButton","onMouseDown","stopPropagation","timeout","Tooltip","Fab","streamOption","streamSettingsOption","openEditStreamDetailModal","isProcessing","isReported","editStreamId","swapComponentWithLargest","setComponentFullscreen","addNewChatStream","parentStream","newStreamChat","chatStream","isMultiComponent","componentArea","isLargest","isFullscreen","_","streamUrl","toggleStreamInMultiComponent","tabsPanel","main","styledTabsRoot","styledTabRoot","textTransform","fontWeight","typography","fontWeightRegular","pxToRem","tabLabel","selectedStreamId","scrollButtons","wrapped","visibleStreamComponentPairs","streamsContainer","debugTextBox","red","pink","yellow","streamComponents","streamComponentPair","firstStreamId","editMultistreamGeneralInfo","onFormChange","isReadOnly","InputProps","readOnly","mapStreamTypeToIcon","mdiTwitch","allStreamsOrdered","orderBy","listItemIcon","listItemText","dense","ListItemIcon","secondary","ListItemSecondaryAction","Switch","UnsavedChangesAlert","hasUnsavedChanges","alertMessage","onbeforeunload","when","showDocumentScrollbars","showingDocumentScrollbars","embedStreams","hideStreamMenus","setUnmuteStreamsOnHover","unmuteStreamOnHover","settingsConfig","componentMockup","color1","dark","color2","color3","calculateSizeProperty","sizeProperty","positionProperty","rectangles","positionPercent","sizePercent","colorNumber","colorClass","setPreviousLayout","previousLayout","currentComponents","currentLayout","selectLayoutTemplate","setStreamSynchronization","DelayNumberInput","inputRef","other","getInputRef","onValueChange","decimalScale","allowedDecimalSeparators","isAllowed","floatValue","noTextTransform","delayButtonSpacer","setSelectedStreamId","isDelayFieldFocused","setIsDelayFieldFocused","getStreamDelay","noSelectedStream","setSelectedStreamDelay","newValueMs","increaseSelectedStreamDelay","deltaMs","currentSynchronizationValue","selected","toggleStreamSynchronizationSetting","ml","delay","getSelectedStreamDelay","inputComponent","onFocus","multistreamSettingsPanels","saveMultistream","normalizedMultistreamRequest","denormalizedMultistreamRequest","denormalizedMultistreamResponse","normalizedMultistreamResponse","recheckIfCurrentUserIsMultistreamOwner","LoginButton","buttonsPanel","disabledButton","drawerPaper","drawerContainer","drawerHeader","drawerHeaderName","heading","flexBasis","flexShrink","secondaryHeading","text","drawerFooter","saveProgress","isMouseMoving","isDrawerOpen","toggleDrawer","expandedPanel","setExpandedPanel","isSettingsHidden","setSettingsHidden","isMouseOver","setMouseOver","anchor","paper","settingsPanel","Accordion","expanded","panel","isExpanded","AccordionSummary","expandIcon","AccordionDetails","p","whiteSpace","processNewStream","userTitle","newTitle","clearProcessingNewStream","addNewStream","reportProcessedStream","streamContainer","streamMedia","isOpen","isStreamLoaded","isStreamReported","isEditing","isInputChanged","isCorrectStreamLoaded","onProcessClick","userInput","onCancelClick","clearForm","onPaste","inputField","pastedValue","clipboardData","getData","preventDefault","mb","mx","borderStyle","borderWidth","pixelPosition","percentSize","pointerPixel","initialStyle","targetStyle","transitionStyles","entering","entered","Transition","MultistreamNotFoundDialog","textDecoration","setMouseMoving","Backdrop","match","gameId","playerTheme","PlayerApp","Player","Game","composeEnhancers","composeWithDevTools","store","createStore","combineReducers","playerReducers","siteReducers","applyMiddleware","thunk","ReactGA","initialize","process","pageview","App","domain","clientId","audience","cacheLocation","useRefreshTokens","maxSnack","autoHideDuration","anchorOrigin","vertical","horizontal","hostname","ReactDOM","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.2417d2f7.chunk.js","sourcesContent":["import { AppState } from '../types/appState';\nimport { SiteState } from '../types/siteState';\nimport { Notification } from '../types/notification';\nimport { SiteFlags } from '../types/siteFlags';\nimport { CardsData } from '../types/cardsData';\n\ntype State = AppState | SiteState;\n\nconst isSiteState = (state: State): state is SiteState => {\n return !state.hasOwnProperty('site');\n}\n\nexport const getSite = (state: State): SiteState => {\n return isSiteState(state) ? state : state.site;\n};\n\nexport const getCardsData = (state: State, id: string): CardsData => {\n const site = getSite(state);\n return site && site.cards && site.cards[id];\n};\n\nexport const getNotifications = (state: State): Array => {\n const site = getSite(state);\n return site && site.notifications;\n};\n\nexport const getSiteFlags = (state: State): SiteFlags => {\n const site = getSite(state);\n return site && site.siteFlags;\n};","import produce from 'immer';\n\ninterface ActionType {\n type: string;\n payload?: any;\n}\n\ntype ActionHandlersType = { [actionType: string]: (draft: T, payload?: any) => void };\n\n\n/**\n * Example usage:\n * const testReducer = createReducer({\n * ['actionType']: (draft, payload) => {\n * draft.property = payload.data;\n * }\n * }, initState);\n */\nexport const createReducer = (actionHandlers: ActionHandlersType = {}) => {\n return (state: T, action: ActionType) => produce(state, draft => {\n for(var actionType in actionHandlers) {\n if(action.type === actionType && actionHandlers.hasOwnProperty(actionType)) {\n return actionHandlers[actionType](draft as T, action.payload);\n }\n }\n });\n};\n\n\n/**\n * Example usage\n * dispatch(action(types.TYPE, {data}));\n * const myAction = (param1, param2) => action(types.TYPE, { param1, param2 });\n */\nexport const action = (actionType: string, payload: T = null) => ({\n type: actionType,\n payload: payload\n});","export const createMultistreamUrl = (key: string, title: string): string => {\n return createUrl('p', key, title);\n}\n\nexport const createGameUrl = (id: string, name: string): string => {\n return createUrl('game', id, name);\n}\n\nconst createUrl = (route: string, key: string, title: string): string => {\n const titleUri = title.replace(/[^\\w'-.À-ÿ]+/g, '_');\n const url = `/${route}/${key}/${titleUri}`;\n return url;\n}","import { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { AxiosRequestConfig } from 'axios';\n\nvar triedToRequestTokenAlready = false;\n\nexport const getRequestAuthConfig = async (authContext: Auth0ContextInterface): Promise => {\n if(triedToRequestTokenAlready && (!authContext || !authContext.isAuthenticated)) {\n return undefined;\n }\n\n try {\n const token = await authContext.getAccessTokenSilently();\n \n return {\n headers: {\n Authorization: `Bearer ${token}`\n }\n };\n }\n catch {\n return undefined;\n }\n finally {\n triedToRequestTokenAlready = true;\n }\n \n};","import axios from 'axios';\nimport { action } from '../../utils/functions/reduxUtils';\nimport { AppDispatch } from '../types/actionTypes';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { getRequestAuthConfig } from '../../utils/functions/axiosUtils';\nimport { AppState } from '../types/appState';\nimport { getCardsData } from '../selectors/siteSelectors';\nimport { CardsData } from '../types/cardsData';\n\nexport const types = {\n UPDATE_CARDS: 'cards/UPDATE_CARDS',\n CLEAR_CARDS: 'cards/CLEAR_CARDS',\n CLEAR_ALL_CARDS: 'cards/CLEAR_ALL_CARDS'\n};\n\n\nexport const fetchCards = (authContext: Auth0ContextInterface, id: string, url: string, forwardCursor: string = null) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const cardsData = getCardsData(getState(), id);\n if(cardsData != null && cardsData.state === 'loading' && cardsData.cancelToken != null) {\n cardsData.cancelToken.cancel();\n }\n\n const cancelToken = axios.CancelToken.source();\n dispatch(action(types.UPDATE_CARDS, { id, url, state: 'loading', cancelToken: cancelToken }));\n\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.get(url, { \n params: { forwardCursor: forwardCursor },\n cancelToken: cancelToken.token,\n ...requestConfig \n });\n const data = response.data;\n const cards = data.data;\n const loadedAll = !data.cursor || !cards || cards.length < 1;\n\n if (loadedAll) {\n dispatch(action(types.UPDATE_CARDS, {\n id,\n url,\n cards: cards ? cards : [],\n forwardCursor: null,\n state: 'loadedAll'\n }));\n }\n else {\n dispatch(action(types.UPDATE_CARDS, {\n id,\n url,\n cards,\n forwardCursor: data.cursor,\n state: 'loaded'\n }));\n }\n }\n catch (error) {\n if(!axios.isCancel(error)) {\n dispatch(action(types.UPDATE_CARDS, { id, url, state: 'error' }));\n console.error(error);\n }\n }\n };\n};\n\nexport const clearCards = (id: string) => action(types.CLEAR_CARDS, id);\nexport const clearAllCards = () => action(types.CLEAR_ALL_CARDS);\n\nexport const refreshCards = (authContext: Auth0ContextInterface, id: string) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n dispatch(clearCards(id));\n\n const cardsData = getCardsData(getState(), id);\n if(cardsData) {\n dispatch(fetchCards(authContext, id, cardsData.url));\n }\n };\n};","import { action } from '../../utils/functions/reduxUtils';\nimport axios from 'axios';\nimport { createMultistreamUrl } from '../utils/playerUrlCreators';\nimport { VariantType } from 'notistack';\nimport { Notification } from '../types/notification';\nimport { AppDispatch } from '../types/actionTypes';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { getRequestAuthConfig } from '../../utils/functions/axiosUtils';\nimport { SiteFlags } from '../types/siteFlags';\nimport { refreshCards } from './cardsActions';\nimport { AppState } from '../types/appState';\n\nexport const types = {\n NOTIFY: 'site/NOTIFY',\n REMOVE_NOTIFICATION: 'site/REMOVE_NOTIFICATION',\n UPDATE_SITE_FLAGS: 'site/UPDATE_SITE_FLAGS'\n};\n\n\nexport const createMultistream = (authContext: Auth0ContextInterface, title: string, description: string, isPrivate: boolean, redirectCallback: (url: string) => void) => {\n return async (dispatch: AppDispatch) => {\n try {\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.post('/api/multistreams/create', { title, description, isPrivate }, requestConfig);\n var multistreamKey = response.data;\n var multistreamUrl = createMultistreamUrl(multistreamKey, title);\n redirectCallback(multistreamUrl);\n }\n catch (error) {\n dispatch(notify('Request failed: cannot create multistream', 'error'));\n console.error(error);\n }\n };\n};\n\nexport const sendFeedback = (authContext: Auth0ContextInterface, email: string, message: string) => {\n return async (dispatch: AppDispatch) => {\n try {\n dispatch(sendFeedbackInProgess());\n const requestConfig = await getRequestAuthConfig(authContext);\n await axios.post('/api/site/contact', { message, email }, requestConfig);\n dispatch(notify('Feedback sent', 'success'));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot send feedback', 'error'));\n console.error(error);\n }\n\n dispatch(sendFeedbackInProgess(false));\n };\n};\n\nexport const reportFrontendError = (authContext: Auth0ContextInterface, error: Error) => {\n return async (_dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const requestConfig = await getRequestAuthConfig(authContext);\n await axios.post('/api/site/frontendError', { message: `${error.name}: ${error.message}`, stack: error.stack, state: getState() }, requestConfig);\n }\n catch (error) {\n console.error(error);\n }\n };\n};\n\nexport const notify = (message: string, type: VariantType) => {\n const key: string = '' + (new Date().getTime() + Math.random());\n return action(types.NOTIFY, { message, type, key });\n}\n\nexport const removeNotification = (key: string) => action(types.REMOVE_NOTIFICATION, key);\n\nexport const sendFeedbackInProgess = (value: boolean = true) => action(types.UPDATE_SITE_FLAGS, { isSendFeedbackInProgess: value });\n\nexport const changeMultistreamPrivacy = (authContext: Auth0ContextInterface, multistreamKey: string, isPrivate: boolean) => {\n return async (dispatch: AppDispatch) => {\n try {\n const requestConfig = await getRequestAuthConfig(authContext);\n await axios.post(`/api/multistreams/changePrivacy/${multistreamKey}?isPrivate=${isPrivate}`, {}, requestConfig);\n dispatch(refreshCards(authContext, 'userMultistreams'));\n\n dispatch(notify('Changed multistream to ' + (isPrivate ? 'private' : 'public'), 'success'));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot change multistream privacy', 'error'));\n console.error(error);\n }\n };\n}\n\nexport const removeMultistream = (authContext: Auth0ContextInterface, multistreamKey: string) => {\n return async (dispatch: AppDispatch) => {\n try {\n const requestConfig = await getRequestAuthConfig(authContext);\n await axios.delete(`/api/multistreams/remove/${multistreamKey}`, requestConfig);\n dispatch(refreshCards(authContext, 'userMultistreams'));\n\n dispatch(notify('Removed multistream', 'success'));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot remove multistream', 'error'));\n console.error(error);\n }\n };\n}","import React, { FunctionComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport { getNotifications } from '../../selectors/siteSelectors';\nimport { removeNotification } from '../../actions/siteActions';\nimport { AppState } from '../../types/appState';\nimport { Notification } from '../../types/notification';\n\n\nconst mapStateToProps = (state: AppState) => ({\n notifications: getNotifications(state)\n });\n\nconst mapDispatchToProps = {\n removeNotification\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype NotifierProps = ConnectedProps & {};\n\nconst Notifier: FunctionComponent = (props) => {\n const { notifications } = props;\n const { removeNotification } = props;\n const { enqueueSnackbar } = useSnackbar();\n\n React.useEffect(() => {\n notifications && notifications.forEach((notification: Notification) => {\n enqueueSnackbar(notification.message, {\n variant: notification.type\n });\n\n removeNotification(notification.key);\n });\n });\n\n return null;\n}\n\nexport default connector(Notifier);","export type EntitiesObjectType = { [id: number]: T };\n\nexport default class NormalizedEntities {\n private readonly _entityIds: number[];\n private readonly _entitiesObject: EntitiesObjectType;\n\n constructor(entityIds: number[], entitiesObject: EntitiesObjectType) {\n this._entityIds = entityIds != null ? entityIds : [];\n this._entitiesObject = entitiesObject != null ? entitiesObject : {};\n }\n\n get ids(): number[] {\n return this._entityIds;\n }\n\n get obj(): EntitiesObjectType {\n return this._entitiesObject;\n }\n\n get length(): number {\n return this._entityIds.length;\n }\n\n get(entityId: number): T {\n return this._entitiesObject[entityId];\n }\n\n at(index: number): T {\n return this._entitiesObject[this._entityIds[index]];\n }\n\n forEach(callbackFn: (currentValue: T, index?: number, entityIds?: number[]) => void) {\n this._entityIds.forEach((entityId, index, entityIds) => callbackFn(this.get(entityId), index, entityIds));\n }\n\n filter(predicate: (element: T, index?: number, entityIds?: number[]) => boolean): NormalizedEntities {\n const filteredIds = this._entityIds.filter((entityId, index, entityIds) => predicate(this.get(entityId), index, entityIds));\n const newEntities = new NormalizedEntities(filteredIds, this._entitiesObject);\n return newEntities;\n }\n\n map(callbackFn: (currentValue: T, index?: number, entityIds?: number[]) => any): any[] {\n const mappedStreams = this._entityIds.map((entityId, index, entityIds) => callbackFn(this.get(entityId), index, entityIds));\n return mappedStreams;\n }\n\n find(predicate: (element: T, index?: number, entityIds?: number[]) => boolean): T {\n const foundEntityId = this._entityIds.find((entityId, index, entityIds) => predicate(this.get(entityId), index, entityIds));\n\n if (foundEntityId == null)\n return null;\n\n return this.get(foundEntityId);\n }\n\n all(predicate: (element: T, index?: number, entityIds?: number[]) => boolean): boolean {\n return this.find((element, index, entityIds) => !predicate(element, index, entityIds)) == null;\n }\n\n any(predicate: (element: T, index?: number, entityIds?: number[]) => boolean): boolean {\n return this.find(predicate) != null;\n }\n\n orderBy(keySelector: (element: T) => U): NormalizedEntities {\n const newEntityIds = this._entityIds.slice();\n newEntityIds.sort((entityIdA, entityIdB) => {\n const comparedValueA = keySelector(this.get(entityIdA));\n const comparedValueB = keySelector(this.get(entityIdB));\n\n return comparedValueA < comparedValueB ? -1\n : comparedValueA > comparedValueB ? 1\n : 0;\n });\n\n const orderedEntites = new NormalizedEntities(newEntityIds, this._entitiesObject);\n return orderedEntites;\n }\n\n orderByDescending(keySelector: (element: T) => U): NormalizedEntities {\n const newEntityIds = this._entityIds.slice();\n newEntityIds.sort((entityIdA, entityIdB) => {\n const comparedValueA = keySelector(this.get(entityIdA));\n const comparedValueB = keySelector(this.get(entityIdB));\n\n return comparedValueA < comparedValueB ? 1\n : comparedValueA > comparedValueB ? -1\n : 0;\n });\n\n const orderedEntites = new NormalizedEntities(newEntityIds, this._entitiesObject);\n return orderedEntites;\n }\n}","import NormalizedEntities, { EntitiesObjectType } from '../../utils/functions/NormalizedEntities';\nimport { NormalizedMultistream, Multistream, Layout, Stream, Component, MultistreamFlags } from '../types/multistream';\nimport { AppState } from '../../site/types/appState';\nimport { PlayerState } from '../types/playerState';\nimport { MultiVideoStreamsQueue } from '../types/multiVideoStreams';\nimport { PlayerFlags } from '../types/playerFlags';\nimport { LayoutTemplate } from '../types/layoutTemplate';\n\ntype State = AppState | PlayerState;\n\nconst isPlayerState = (state: State): state is PlayerState => {\n return !state.hasOwnProperty('player');\n}\n\nexport const getPlayer = (state: State): PlayerState => {\n return isPlayerState(state) ? state : state.player;\n};\n\nexport const getNormalizedMultistream = (state: State): NormalizedMultistream => {\n return getPlayer(state)?.normalizedMultistream;\n};\n\nexport const getMultistream = (state: State): Multistream => {\n return getNormalizedMultistream(state)?.result;\n};\n\nexport const getMultistreamFlags = (state: State): MultistreamFlags => {\n return getMultistream(state)?.flags || {};\n};\n\nexport const getStreamIds = (state: State): number[] => {\n return getMultistream(state)?.streams;\n}\n\nexport const getLayout = (state: State): Layout => {\n return getMultistream(state)?.layout;\n}\n\nexport const getComponentIds = (state: State): number[] => {\n return getLayout(state)?.components;\n}\n\nexport const getStreamsObject = (state: State): EntitiesObjectType => {\n const normalizedMultistream = getNormalizedMultistream(state);\n const streamsObject = normalizedMultistream?.entities.streams;\n return streamsObject || {};\n}\n\nexport const getComponentsObject = (state: State): EntitiesObjectType => {\n const normalizedMultistream = getNormalizedMultistream(state);\n const componentsObject = normalizedMultistream?.entities.components;\n return componentsObject || {};\n}\n\nexport const getStream = (state: State, streamId: number): Stream => {\n const streamsObject = getStreamsObject(state);\n return streamsObject && streamsObject[streamId];\n};\n\nexport const getComponent = (state: State, componentId: number): Component => {\n const componentsObject = getComponentsObject(state);\n return componentsObject && componentsObject[componentId];\n};\n\nexport const getAllStreams = (state: State): NormalizedEntities => {\n const streamIds = getStreamIds(state);\n const streamsObject = getStreamsObject(state);\n\n const streams = streamIds && streamsObject && new NormalizedEntities(streamIds, streamsObject);\n return streams\n};\n\nexport const getVisibleStreams = (state: State): NormalizedEntities => {\n const allStreams = getAllStreams(state);\n const visibleStreams = allStreams && allStreams.filter(x => !x.isHidden);\n return visibleStreams;\n};\n\nexport const getAllComponents = (state: State): NormalizedEntities => {\n const componentIds = getComponentIds(state);\n const componentsObject = getComponentsObject(state);\n\n const components = componentIds && componentsObject && new NormalizedEntities(componentIds, componentsObject);\n return components\n};\n\ntype StreamsComponentPair = {\n streamIds: Array;\n componentId: number;\n};\n\nexport const getVisibleStreamsComponentPairs = (state: State): Array => {\n const allStreams = getAllStreams(state);\n const allComponents = getAllComponents(state);\n\n if (!allStreams || !allComponents) {\n return null;\n }\n\n const groupedStreams = allStreams.ids.reduce<{ [streamOrder: number]: Array }>((groups, streamId) => {\n const stream = allStreams.get(streamId);\n groups[stream.order] = groups[stream.order] || [];\n groups[stream.order].push(stream);\n return groups;\n }, {});\n\n const result: Array = Object.entries(groupedStreams)\n .filter(([_, streams]) => {\n return streams.some(x => !x.isHidden)\n })\n .map(([streamOrder, streams]) => {\n const componentForStreams = allComponents?.find(component => component.order === Number(streamOrder))\n\n if (componentForStreams == null)\n throw new Error('Not found component for stream');\n\n return {\n streamIds: streams.map(x => x.id),\n componentId: componentForStreams.id\n } as StreamsComponentPair;\n });\n\n return result;\n};\n\nexport const getVisibleComponents = (state: State): NormalizedEntities => {\n const allComponents = getAllComponents(state);\n const visibleStreams = getVisibleStreams(state);\n const visibleComponents = visibleStreams && allComponents?.filter(x => visibleStreams.find(y => y.order === x.order && !y.isHidden) != null);\n return visibleComponents;\n};\n\nexport const getFreeComponents = (state: State): NormalizedEntities => {\n const allStreams = getAllStreams(state);\n const allComponents = getAllComponents(state);\n\n const freeComponents = allStreams && allComponents?.filter(component => allStreams.find(stream => stream.order === component.order) == null);\n return freeComponents;\n};\n\nexport const getMultiVideoStreamsQueue = (state: State, type: string, key: string): MultiVideoStreamsQueue => {\n return getPlayer(state)?.multiVideoStreams?.queues?.[type]?.[key];\n};\n\nexport const getPlayerFlags = (state: State): PlayerFlags => {\n return getPlayer(state)?.playerFlags;\n};\n\nexport const getStreamWithDifferentSourceType = (state: State, streamId: number, differentSourceType: string): Stream => {\n const stream = getStream(state, streamId);\n const allStreams = getAllStreams(state);\n\n const differentStream = stream && allStreams?.find(x => \n x.id !== stream.id \n && x.streamType === stream.streamType \n && x.sourceKey === stream.sourceKey \n && x.sourceType === differentSourceType);\n return differentStream;\n};\n\nexport const getLayoutTemplates = (state: State): NormalizedEntities => {\n const normalizedLayoutTemplates = getPlayer(state)?.normalizedLayoutTemplates;\n return normalizedLayoutTemplates && new NormalizedEntities(normalizedLayoutTemplates.result, normalizedLayoutTemplates.entities.layoutTemplates);\n};\n\nexport const getSyncStreams = (state: State): NormalizedEntities => {\n const visibleStreams = getVisibleStreams(state);\n const syncStreams = visibleStreams && visibleStreams.filter(stream => stream.state.synchronizationSupport && stream.synchronization != null);\n\n return syncStreams;\n};\n\nexport const generateCalculateRequestedSynchronizationTimeMsFunction = (state: State, streamId: number): ((currentTime: number) => number) => {\n const multistreamState = getMultistream(state)?.state;\n const stream = getStream(state, streamId);\n\n return multistreamState && stream \n && stream.state.synchronizationSupport && stream.synchronization != null && stream.state.isSynchronizationRequested \n && multistreamState.latestSynchronizationBaseMs != null\n ? (currentTime: number) => {\n return multistreamState.synchronizationBaseSnapshotTimeMs != null\n ? multistreamState.latestSynchronizationBaseMs + stream.synchronization + (currentTime - multistreamState.synchronizationBaseSnapshotTimeMs)\n : multistreamState.latestSynchronizationBaseMs + stream.synchronization;\n }\n : null; \n};","export type VectorUnit = 'px'|'%';\n\nexport default class Vector2 {\n public x: number;\n public y: number;\n public unit: VectorUnit;\n\n public static getViewWidth(): number {\n return document.documentElement.clientWidth || document.body.clientWidth || window.innerWidth;\n }\n\n public static getViewHeight(): number {\n return document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight;\n }\n\n public constructor(x: number, y: number, unit: VectorUnit) {\n this.x = x;\n this.y = y;\n this.unit = unit;\n }\n\n public clone(): Vector2 {\n return new Vector2(this.x, this.y, this.unit);\n }\n\n public add(value: number | Vector2) {\n this.binaryOperation(value, (left, right) => left + right);\n }\n\n public subtract(value: number | Vector2) {\n this.binaryOperation(value, (left, right) => left - right);\n }\n\n public multiply(value: number | Vector2) {\n this.binaryOperation(value, (left, right) => left * right);\n }\n\n public divide(value: number | Vector2) {\n this.binaryOperation(value, (left, right) => left / right);\n }\n\n public toFixed(fractionDigits: number) {\n this.x = +this.x.toFixed(fractionDigits);\n this.y = +this.y.toFixed(fractionDigits);\n }\n\n public lengthSquared(): number {\n return this.x * this.x + this.y * this.y;\n }\n\n public length(): number {\n return Math.sqrt(this.lengthSquared());\n }\n\n public convertUnitToPercent() {\n if(this.unit === '%') return;\n\n this.multiply(100);\n this.divide(new Vector2(Vector2.getViewWidth(), Vector2.getViewHeight(), 'px'));\n this.toFixed(4);\n this.unit = '%';\n }\n\n public convertUnitToPixel() {\n if(this.unit === 'px') return;\n\n this.multiply(new Vector2(Vector2.getViewWidth(), Vector2.getViewHeight(), 'px'));\n this.divide(100);\n this.toFixed(0);\n this.unit = 'px';\n }\n\n private binaryOperation(value: number | Vector2, operator: (left: number, right: number) => number) {\n if (typeof (value) === \"number\") {\n this.x = operator(this.x, value as number);\n this.y = operator(this.y, value as number);\n } else {\n this.x = operator(this.x, (value as Vector2).x);\n this.y = operator(this.y, (value as Vector2).y);\n }\n }\n}","import Vector2, { VectorUnit } from './Vector2';\n\nexport default class Position {\n private readonly _vector: Vector2;\n\n static fromVector(vector: Vector2): Position {\n return new Position(vector.x, vector.y, vector.unit);\n }\n\n constructor(left: number, top: number, unit: VectorUnit) {\n this._vector = new Vector2(left, top, unit);\n }\n\n public clone(): Position {\n return new Position(this.left, this.top, this.unit);\n }\n\n public get left(): number {\n return this._vector.x;\n }\n\n public get top(): number {\n return this._vector.y;\n }\n\n public get x(): number {\n return this.left;\n }\n\n public get y(): number {\n return this.top;\n }\n\n public convertUnitToPercent(): Position {\n if(this.unit === '%') return this;\n\n var newVector = this._vector.clone();\n newVector.convertUnitToPercent();\n return Position.fromVector(newVector);\n }\n\n public convertUnitToPixel(): Position {\n if(this.unit === 'px') return this;\n\n var newVector = this._vector.clone();\n newVector.convertUnitToPixel();\n return Position.fromVector(newVector);\n }\n\n private get unit(): VectorUnit {\n return this._vector.unit;\n }\n}","import Vector2, { VectorUnit } from './Vector2';\n\nexport default class Size {\n private readonly _vector: Vector2;\n\n static fromVector(vector: Vector2): Size {\n return new Size(vector.x, vector.y, vector.unit);\n }\n\n constructor(width: number, height: number, unit: VectorUnit) {\n this._vector = new Vector2(width, height, unit);\n }\n\n public clone(): Size {\n return new Size(this.width, this.height, this.unit);\n }\n\n public get width(): number {\n return this._vector.x;\n }\n\n public get height(): number {\n return this._vector.y;\n }\n\n public convertUnitToPercent(): Size {\n if(this.unit === '%') return this;\n\n var newVector = this._vector.clone();\n newVector.convertUnitToPercent();\n return Size.fromVector(newVector);\n }\n\n public convertUnitToPixel(): Size {\n if(this.unit === 'px') return this;\n\n var newVector = this._vector.clone();\n newVector.convertUnitToPixel();\n return Size.fromVector(newVector);\n }\n\n private get unit(): VectorUnit {\n return this._vector.unit;\n }\n}","import { normalize, denormalize, schema } from 'normalizr';\nimport Position from '../../../utils/functions/Position';\nimport Size from '../../../utils/functions/Size';\nimport { NormalizedMultistream } from '../../types/multistream';\nimport { NormalizedLayoutTemplates } from '../../types/layoutTemplate';\n\nexport const normalizeMultistream = (denormalizedMultistream: any): NormalizedMultistream => {\n const multistreamSchema = getMultistreamSchema();\n var multistream = normalize(denormalizedMultistream, multistreamSchema);\n\n processMultistream(multistream);\n multistream.result.streams.forEach((streamId: number) => processStream(multistream.entities.streams[streamId]));\n multistream.result.layout.components.forEach((componentId: number) => processComponent(multistream.entities.components[componentId]));\n\n return multistream as NormalizedMultistream;\n};\n\nexport const denormalizeMultistream = (normalizedMultistream: NormalizedMultistream): any => {\n const multistreamSchema = getMultistreamSchema();\n var multistream = denormalize(normalizedMultistream.result, multistreamSchema, normalizedMultistream.entities);\n\n deprocessMultistream(multistream);\n multistream.streams.forEach((stream: any) => deprocessStream(stream));\n multistream.layout.components.forEach((component: any) => deprocessComponent(component));\n\n return multistream;\n};\n\nexport const normalizeLayoutTemplates = (denormalizedLayoutTemplates: any): NormalizedLayoutTemplates => {\n const layoutTemplatesSchema = getLayoutTemplatesSchema();\n var layoutTemplates = normalize(denormalizedLayoutTemplates, layoutTemplatesSchema);\n\n layoutTemplates.result.forEach((layoutTemplateId: number) => {\n layoutTemplates.entities.layoutTemplates[layoutTemplateId].layout.components.forEach((component: any) => processComponent(component));\n });\n\n return layoutTemplates as NormalizedLayoutTemplates;\n};\n\nconst getMultistreamSchema = () => {\n const streamSchema = new schema.Entity('streams');\n const componentSchema = new schema.Entity('components');\n const multistreamSchema = { \n streams: [streamSchema],\n layout: {\n components: [componentSchema]\n }\n };\n\n return multistreamSchema;\n};\n\nconst getLayoutTemplatesSchema = () => {\n const layoutTemplateSchema = new schema.Entity('layoutTemplates');\n const layoutTemplatesSchema = [\n layoutTemplateSchema\n ];\n\n return layoutTemplatesSchema;\n};\n\nconst processMultistream = (multistream: any) => {\n multistream.result.state = {};\n multistream.result.layout.state = {};\n multistream.result.flags = (multistream.result.flags || []).reduce((acc: any, curr: any) => {\n acc[curr] = true; \n return acc;\n }, {});\n};\n\nconst deprocessMultistream = (multistream: any) => {\n multistream.flags = Object.keys(multistream.flags).filter(flag => multistream.flags[flag] === true);\n delete multistream.layout.state;\n delete multistream.state;\n};\n\nexport const processStream = (stream: any) => {\n stream.state = {};\n};\n\nconst deprocessStream = (stream: any) => {\n delete stream.state;\n};\n\nexport const processComponent = (component: any) => {\n component.position = new Position(component.left, component.top, '%');\n component.size = new Size(component.width, component.height, '%');\n component.state = {};\n\n delete component.left;\n delete component.top;\n delete component.width;\n delete component.height;\n};\n\nconst deprocessComponent = (component: any) => {\n var position = (component.position as Position);\n var size = (component.size as Size);\n\n component.left = position.left;\n component.top = position.top;\n component.width = size.width;\n component.height = size.height;\n\n delete component.position;\n delete component.size;\n delete component.state;\n};","import { action } from '../../utils/functions/reduxUtils';\nimport axios from 'axios';\nimport { AppDispatch } from '../../site/types/actionTypes';\nimport { notify } from '../../site/actions/siteActions';\nimport { Stream } from '../types/multistream';\nimport { StreamDetailsModalData } from '../types/streamDetailsModalData';\nimport { getPlayer, getMultistream, getStream } from '../selectors/playerSelectors';\nimport { AppState } from '../../site/types/appState';\nimport { changeMultistreamLayout } from './streamsContainerActions';\nimport { NormalizedLayoutTemplates } from '../types/layoutTemplate';\nimport { normalizeLayoutTemplates, processStream } from './helpers/multistreamProcessHelper';\nimport { PlayerFlags } from '../types/playerFlags';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { getRequestAuthConfig } from '../../utils/functions/axiosUtils';\n\nexport const types = {\n UPDATE_STREAM_DETAILS_MODAL_DATA: 'player/UPDATE_STREAM_DETAILS_MODAL_DATA',\n UPDATE_LAYOUT_TEMPLATE_LIST: 'player/UPDATE_LAYOUT_TEMPLATE_LIST',\n UPDATE_PLAYER_FLAGS: 'player/UPDATE_PLAYER_FLAGS',\n CLEAR_PLAYER_STATE: 'player/CLEAR_PLAYER_STATE'\n};\n\nexport const processNewStream = (authContext: Auth0ContextInterface, input: string, userTitle: string) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n var streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, input, isProcessing: true, isReported: false }));\n\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.post('/api/streams/analyze', { input }, requestConfig);\n const stream = (response.data as Stream);\n\n if(stream) {\n processStream(stream);\n streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n const newTitle = userTitle ? userTitle : stream?.title;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, input, isProcessing: false, stream, title: newTitle }));\n }\n else {\n streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, input, isProcessing: false }));\n dispatch(notify('Not found any valid stream', 'error'));\n }\n }\n catch (error) {\n streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, input, isProcessing: false }));\n dispatch(notify('Request failed: cannot process new stream', 'error'));\n console.error(error);\n }\n };\n};\n\nexport const clearProcessingNewStream = () => action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, null);\n\nexport const reportProcessedStream = (authContext: Auth0ContextInterface) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, isReported: true }));\n \n const requestConfig = await getRequestAuthConfig(authContext);\n await axios.post('/api/streams/report', { input: streamDetailsModalData.input, stream: streamDetailsModalData.stream }, requestConfig);\n dispatch(notify('Feedback sent', 'success'));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot report processed stream', 'error'));\n console.error(error);\n }\n };\n};\n\nexport const openStreamDetailModal = (open: boolean) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { ...streamDetailsModalData, isModalOpen: open }));\n };\n};\n\nexport const openEditStreamDetailModal = (streamId: number) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const stream = getStream(getState(), streamId);\n dispatch(action(types.UPDATE_STREAM_DETAILS_MODAL_DATA, { \n input: stream.url,\n isProcessing: false,\n title: stream.title,\n stream: stream,\n isReported: false,\n isModalOpen: true,\n editStreamId: streamId\n }));\n };\n};\n\nexport const requestLayoutTemplates = (authContext: Auth0ContextInterface) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.get('/api/player/layoutTemplates', requestConfig);\n const denormalizedLayoutTemplates = response.data;\n\n if(!denormalizedLayoutTemplates || denormalizedLayoutTemplates.length <= 0) {\n return;\n }\n\n const normalizedLayoutTemplates = normalizeLayoutTemplates(denormalizedLayoutTemplates);\n\n dispatch(action(types.UPDATE_LAYOUT_TEMPLATE_LIST, normalizedLayoutTemplates));\n\n var multistream = getMultistream(getState());\n if(multistream && (multistream.layout?.components == null || multistream.layout.components.length === 0)) {\n dispatch(changeMultistreamLayout(normalizedLayoutTemplates.entities.layoutTemplates[normalizedLayoutTemplates.result[0]].layout));\n }\n }\n catch (error) {\n dispatch(notify('Request failed: cannot request layout templates', 'error'));\n console.error(error);\n }\n };\n};\n\nexport const showFullStreamMasks = () => action(types.UPDATE_PLAYER_FLAGS, { fullStreamMasks: true });\nexport const restoreDefaultStreamMasks = () => action(types.UPDATE_PLAYER_FLAGS, { fullStreamMasks: false });\nexport const detectedMultistreamChanges = (value: boolean = true) => action(types.UPDATE_PLAYER_FLAGS, { detectedMultistreamChanges: value });\nexport const saveRequestInProgess = (value: boolean = true) => action(types.UPDATE_PLAYER_FLAGS, { saveRequestInProgess: value });\nexport const detectedErrorDuringMultistreamFetch = () => action(types.UPDATE_PLAYER_FLAGS, { errorDuringMultistreamFetch: true });\nexport const clearPlayerState = () => action(types.CLEAR_PLAYER_STATE);\n","import { AppDispatch } from '../../site/types/actionTypes';\nimport { action } from '../../utils/functions/reduxUtils';\nimport axios from 'axios';\nimport { AppState } from '../../site/types/appState';\nimport { notify } from '../../site/actions/siteActions';\nimport { Stream } from '../types/multistream';\nimport { MultiVideoStreamsPayload } from '../types/multiVideoStreams';\nimport { getMultiVideoStreamsQueue, getStream, getAllStreams } from '../selectors/playerSelectors';\nimport { MaskRectangle, StreamState, FrameSize } from '../types/streamState';\nimport { detectedMultistreamChanges } from './playerActions';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { getRequestAuthConfig } from '../../utils/functions/axiosUtils';\nimport { updateComponentLayers } from './streamsContainerActions';\nimport { StreamPayload } from '../types/payloadTypes';\n\nexport const types = {\n UPDATE_STREAM_STATE: 'stream/UPDATE_STREAM_STATE',\n HIDE_STREAM: 'stream/HIDE_STREAM',\n ADD_NEW_MULTIVIDEO_STREAMS: 'stream/ADD_NEW_MULTIVIDEO_STREAMS',\n ASSIGN_NEXT_MULTIVIDEO_STREAM: 'stream/ASSIGN_NEXT_MULTIVIDEO_STREAM',\n TOGGLE_STREAM_IN_MULTICOMPONENT: 'stream/TOGGLE_STREAM_IN_MULTICOMPONENT',\n SET_STREAM_SYNCHRONIZATION: 'stream/SET_STREAM_SYNCHRONIZATION',\n TOGGLE_STREAM_SYNCHRONIZATION: 'stream/TOGGLE_STREAM_SYNCHRONIZATION',\n ADD_PLAYER_EVENT: 'stream/ADD_PLAYER_EVENT'\n};\n\nexport const setStreamDefaultMaskRectangle = (streamId: number, defaultMaskRectangle: MaskRectangle) => \n action>(types.UPDATE_STREAM_STATE, { streamId, data: { defaultMaskRectangle } });\n\nexport const setStreamMinimumFrameSize = (streamId: number, minimumFrameSize: FrameSize) => \n action>(types.UPDATE_STREAM_STATE, { streamId, data: { minimumFrameSize } });\n\nexport const setStreamConstantFrameSize = (streamId: number, constantFrameSize: FrameSize) => \n action>(types.UPDATE_STREAM_STATE, { streamId, data: { constantFrameSize } });\n\nexport const setStreamVolume = (streamId: number, volume: number) => \n action>(types.UPDATE_STREAM_STATE, { streamId, data: { volume } });\n\nexport const setStreamIsUnmuted = (streamId: number, isUnmuted: boolean) => \n action>(types.UPDATE_STREAM_STATE, { streamId, data: { isUnmuted } });\n\n\nexport const hideStream = (streamId: number, hide: boolean = true) => {\n return (dispatch: AppDispatch) => {\n dispatch(action>(types.HIDE_STREAM, { streamId, data: hide }));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n };\n};\n\nexport const toggleStreamInMultiComponent = (streamId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.TOGGLE_STREAM_IN_MULTICOMPONENT, streamId));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const requestNextMultiVideoStreamsIfNeeded = (authContext: Auth0ContextInterface, type: string, key: string) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const multiVideoStreamsQueue = getMultiVideoStreamsQueue(getState(), type, key);\n if(multiVideoStreamsQueue?.isRequesting || multiVideoStreamsQueue?.isExhausted ||\n (multiVideoStreamsQueue?.streams != null && multiVideoStreamsQueue.streams.length > 10)) {\n return;\n } \n\n const forwardCursor = multiVideoStreamsQueue?.cursor;\n dispatch(action(types.ADD_NEW_MULTIVIDEO_STREAMS, { type, key, streams: [], cursor: forwardCursor, isRequesting: true }));\n\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.get('/api/streams/next', { params: { type, key, forwardCursor }, ...requestConfig });\n var streams = (response.data.data as Array);\n var cursor = response.data.cursor;\n dispatch(action(types.ADD_NEW_MULTIVIDEO_STREAMS, { type, key, streams, cursor, isRequesting: false }));\n dispatch(assignMultiVideoStreamsIfNeeded(authContext));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot request streams', 'error'));\n console.error(error);\n }\n };\n};\n\nexport const assignMultiVideoStreamsIfNeeded = (authContext: Auth0ContextInterface) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n getAllStreams(getState())?.forEach(x => {\n if(x.streamType === 'MultiVideo' && x.state.multiVideoStream == null) {\n dispatch(assignNextMultiVideoStream(authContext, x.id));\n }\n });\n };\n};\n\nexport const assignNextMultiVideoStream = (authContext: Auth0ContextInterface, streamId: number) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const stream = getStream(getState(), streamId);\n\n if(stream?.streamType === 'MultiVideo') {\n dispatch(action(types.ASSIGN_NEXT_MULTIVIDEO_STREAM, streamId));\n dispatch(requestNextMultiVideoStreamsIfNeeded(authContext, stream.sourceType, stream.sourceKey));\n }\n };\n};\n\nexport const unmuteOnlyThisStream = (streamId: number) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const allStreams = getAllStreams(getState());\n\n if (allStreams) {\n allStreams.forEach(stream => {\n const shouldBeUnmuted = stream.id === streamId;\n \n if (stream.state.isUnmuted !== shouldBeUnmuted) {\n dispatch(setStreamIsUnmuted(stream.id, shouldBeUnmuted));\n }\n });\n }\n };\n};","import { action } from '../../utils/functions/reduxUtils';\nimport { AppDispatch } from '../../site/types/actionTypes';\nimport { notify } from '../../site/actions/siteActions';\nimport { Stream } from '../types/multistream';\nimport { getPlayer, getStream } from '../selectors/playerSelectors';\nimport { AppState } from '../../site/types/appState';\nimport { requestNextMultiVideoStreamsIfNeeded, assignNextMultiVideoStream } from './streamActions';\nimport { detectedMultistreamChanges } from './playerActions';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { StreamPayload } from '../types/payloadTypes';\nimport { DenormalizedLayout } from '../types/layoutTemplate';\n\nexport const types = {\n UPDATE_COMPONENT_LAYERS: 'streamsContainer/UPDATE_COMPONENT_LAYERS',\n ADD_STREAM: 'streamsContainer/ADD_STREAM',\n REMOVE_STREAM: 'streamsContainer/REMOVE_STREAM',\n DUPLICATE_STREAM: 'streamsContainer/DUPLICATE_STREAM',\n EDIT_STREAM: 'streamsContainer/EDIT_STREAM',\n DETACH_STREAM_FROM_MULTICOMPONENT: 'streamsContainer/DETACH_STREAM_FROM_MULTICOMPONENT',\n CHANGE_MULTISTREAM_LAYOUT: 'streamsContainer/CHANGE_MULTISTREAM_LAYOUT'\n};\n\nexport const updateComponentLayers = () => action(types.UPDATE_COMPONENT_LAYERS);\n\nexport const addNewStream = (authContext: Auth0ContextInterface, userTitle: string) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n const newStream = { ...streamDetailsModalData.stream, title: userTitle};\n dispatch(action(types.ADD_STREAM, newStream));\n\n if(newStream.streamType === 'MultiVideo') {\n dispatch(assignNextMultiVideoStream(authContext, newStream.id));\n dispatch(requestNextMultiVideoStreamsIfNeeded(authContext, newStream.sourceType, newStream.sourceKey));\n }\n\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n dispatch(notify('Added new stream', 'success'));\n }\n};\n\nexport const editStream = (authContext: Auth0ContextInterface, userTitle: string) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const streamDetailsModalData = getPlayer(getState()).streamDetailsModalData;\n const newStream = { ...streamDetailsModalData.stream, title: userTitle };\n dispatch(action>(types.EDIT_STREAM, { streamId: streamDetailsModalData.editStreamId, data: newStream }));\n\n if(newStream.streamType === 'MultiVideo') {\n dispatch(assignNextMultiVideoStream(authContext, newStream.id));\n dispatch(requestNextMultiVideoStreamsIfNeeded(authContext, newStream.sourceType, newStream.sourceKey));\n }\n\n dispatch(detectedMultistreamChanges());\n dispatch(notify('Edited stream', 'success'));\n };\n};\n\nexport const removeStream = (streamId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.REMOVE_STREAM, streamId));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n };\n};\n\nexport const duplicateStream = (streamId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.DUPLICATE_STREAM, streamId));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n };\n};\n\nexport const addNewChatStream = (streamId: number) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const parentStream = getStream(getState(), streamId);\n const newStreamChat: Stream = { \n ...parentStream,\n title: parentStream.title + ' chat',\n sourceType: 'chat',\n state: {}\n };\n\n dispatch(action(types.ADD_STREAM, newStreamChat));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n };\n};\n\nexport const detachStreamFromMultiComponent = (streamId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.DETACH_STREAM_FROM_MULTICOMPONENT, streamId));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const changeMultistreamLayout = (layout: DenormalizedLayout) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.CHANGE_MULTISTREAM_LAYOUT, layout));\n dispatch(updateComponentLayers());\n };\n}","import axios from 'axios';\nimport { action } from '../../utils/functions/reduxUtils';\nimport { updateComponentLayers } from './streamsContainerActions';\nimport { getNormalizedMultistream, getAllStreams, getMultistream } from '../selectors/playerSelectors';\nimport { NormalizedMultistream, MultistreamFlags } from '../types/multistream';\nimport { normalizeMultistream, denormalizeMultistream } from './helpers/multistreamProcessHelper';\nimport { notify } from '../../site/actions/siteActions';\nimport { AppState } from '../../site/types/appState';\nimport { requestLayoutTemplates, clearPlayerState, detectedErrorDuringMultistreamFetch, openStreamDetailModal } from './playerActions';\nimport { AppDispatch } from '../../site/types/actionTypes';\nimport { requestNextMultiVideoStreamsIfNeeded } from './streamActions';\nimport { detectedMultistreamChanges, saveRequestInProgess } from './playerActions';\nimport { Auth0ContextInterface } from '@auth0/auth0-react';\nimport { getRequestAuthConfig } from '../../utils/functions/axiosUtils';\nimport { MultistreamState } from '../types/multistreamState';\n\nexport const types = {\n SET_NORMALIZED_MULTISTREAM: 'multistream/SET_NORMALIZED_MULTISTREAM',\n EDIT_MULTISTREAM_GENERAL_INFO: 'multistream/EDIT_MULTISTREAM_GENERAL_INFO',\n SET_MULTISTREAM_IS_OWNER: 'multistream/SET_MULTISTREAM_IS_OWNER',\n UPDATE_MULTISTREAM_IDS: 'multistream/UPDATE_MULTISTREAM_IDS',\n UPDATE_MULTISTREAM_FLAGS: 'multistream/UPDATE_MULTISTREAM_FLAGS',\n UPDATE_MULTISTREAM_STATE: 'multistream/UPDATE_MULTISTREAM_STATE'\n};\n\nexport const fetchMultistream = (authContext: Auth0ContextInterface, apiUrl: string) => {\n return async (dispatch: AppDispatch) => {\n try {\n dispatch(clearPlayerState());\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.get(apiUrl, requestConfig);\n var denormalizedMultistream = response.data;\n var normalizedMultistream = normalizeMultistream(denormalizedMultistream);\n dispatch(setMultistream(authContext, normalizedMultistream));\n dispatch(requestLayoutTemplates(authContext));\n\n if (normalizedMultistream?.result?.isOwner && normalizedMultistream.result.streams?.length === 0) {\n dispatch(openStreamDetailModal(true));\n }\n }\n catch (error) {\n dispatch(notify('Request failed: cannot fetch multistream', 'error'));\n dispatch(detectedErrorDuringMultistreamFetch());\n console.error(error);\n }\n };\n};\n\nexport const setMultistream = (authContext: Auth0ContextInterface, normalizedMultistream: NormalizedMultistream) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n dispatch(action(types.SET_NORMALIZED_MULTISTREAM, normalizedMultistream));\n dispatch(updateComponentLayers());\n\n getAllStreams(getState())?.forEach(x => {\n if (x.streamType === 'MultiVideo') {\n dispatch(requestNextMultiVideoStreamsIfNeeded(authContext, x.sourceType, x.sourceKey));\n }\n });\n };\n};\n\nexport const saveMultistream = (authContext: Auth0ContextInterface) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n dispatch(saveRequestInProgess(true));\n const normalizedMultistreamRequest = getNormalizedMultistream(getState());\n const denormalizedMultistreamRequest = denormalizeMultistream(normalizedMultistreamRequest);\n\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.post('/api/multistreams/edit', denormalizedMultistreamRequest, requestConfig);\n const denormalizedMultistreamResponse = response.data;\n const normalizedMultistreamResponse = normalizeMultistream(denormalizedMultistreamResponse);\n dispatch(saveRequestInProgess(false));\n dispatch(detectedMultistreamChanges(false));\n dispatch(action(types.UPDATE_MULTISTREAM_IDS, normalizedMultistreamResponse));\n dispatch(notify('Saved multistream', 'success'));\n }\n catch (error) {\n dispatch(saveRequestInProgess(false));\n dispatch(notify('Request failed: cannot save multistream', 'error'));\n console.error(error);\n }\n }\n};\n\nexport const editMultistreamGeneralInfo = (title: string, description: string, isPrivate: boolean) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.EDIT_MULTISTREAM_GENERAL_INFO, { title, description, isPrivate }));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const recheckIfCurrentUserIsMultistreamOwner = (authContext: Auth0ContextInterface) => {\n return async (dispatch: AppDispatch, getState: () => AppState) => {\n try {\n const multistream = getMultistream(getState());\n if (!multistream || multistream.isOwner) {\n return;\n }\n\n const requestConfig = await getRequestAuthConfig(authContext);\n const response = await axios.get('/api/multistreams/isOwner/' + multistream.key, requestConfig);\n const isMultistreamOwner = response.data === true;\n dispatch(action(types.SET_MULTISTREAM_IS_OWNER, isMultistreamOwner));\n }\n catch (error) {\n dispatch(notify('Request failed: cannot recheck multistream owner', 'error'));\n console.error(error);\n }\n }\n};\n\nexport const updateSynchronizationBaseTime = (latestSynchronizationBaseMs: number, synchronizationBaseSnapshotTimeMs: number) =>\n action(types.UPDATE_MULTISTREAM_STATE, { latestSynchronizationBaseMs, synchronizationBaseSnapshotTimeMs });\n\nexport const showDocumentScrollbars = (value: boolean = true) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.UPDATE_MULTISTREAM_FLAGS, { showingDocumentScrollbars: value }));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const embedStreams = (value: boolean = true) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.UPDATE_MULTISTREAM_FLAGS, { embededStreams: value }));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const hideStreamMenus = (value: boolean = true) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.UPDATE_MULTISTREAM_FLAGS, { hiddenStreamMenus: value }));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const setUnmuteStreamsOnHover = (value: boolean = true) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.UPDATE_MULTISTREAM_FLAGS, { unmuteStreamsOnHover: value }));\n dispatch(detectedMultistreamChanges());\n };\n}\n","import { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/multistreamActions';\nimport { getMultistream, getAllStreams, getAllComponents } from '../selectors/playerSelectors';\nimport { PlayerState } from '../types/playerState';\nimport { NormalizedMultistream, Stream, Component, MultistreamFlags } from '../types/multistream';\nimport NormalizedEntities from '../../utils/functions/NormalizedEntities';\nimport { MultistreamState } from '../types/multistreamState';\n\n\nexport const multistreamReducer = createReducer({\n [types.SET_NORMALIZED_MULTISTREAM]: (draft, normalizedMultistream: NormalizedMultistream) => {\n draft.normalizedMultistream = normalizedMultistream\n },\n [types.EDIT_MULTISTREAM_GENERAL_INFO]: (draft, payload) => {\n const multistream = getMultistream(draft);\n\n if (multistream != null) {\n multistream.title = payload.title;\n multistream.description = payload.description;\n multistream.isPrivate = payload.isPrivate;\n }\n },\n [types.SET_MULTISTREAM_IS_OWNER]: (draft, isMultistreamOwner: boolean) => {\n const multistream = getMultistream(draft);\n\n if (multistream != null) {\n multistream.isOwner = isMultistreamOwner;\n }\n },\n [types.UPDATE_MULTISTREAM_IDS]: (draft, payload: NormalizedMultistream) => updateMultistreamIds(draft, payload),\n [types.UPDATE_MULTISTREAM_STATE]: (draft, payload: MultistreamState) => {\n const multistream = getMultistream(draft);\n\n if (multistream != null) {\n multistream.state = { ...multistream.state, ...payload };\n }\n },\n [types.UPDATE_MULTISTREAM_FLAGS]: (draft, multistreamFlags: MultistreamFlags) => {\n const multistream = getMultistream(draft);\n\n if (multistream != null) {\n multistream.flags = { ...multistream.flags, ...multistreamFlags };\n }\n }\n});\n\nconst updateMultistreamIds = (draft: PlayerState, payload: NormalizedMultistream) => {\n const allComponents = getAllComponents(draft);\n var payloadComponents = payload?.result?.layout?.components && payload?.entities?.components &&\n new NormalizedEntities(payload.result.layout.components, payload.entities.components);\n updateMultistreamEntitiesId(allComponents, payloadComponents);\n\n const allStreams = getAllStreams(draft);\n var payloadStreams = payload?.result?.streams && payload?.entities?.streams &&\n new NormalizedEntities(payload.result.streams, payload.entities.streams);\n updateMultistreamEntitiesId(allStreams, payloadStreams);\n};\n\nconst updateMultistreamEntitiesId = (allEntities: NormalizedEntities, payloadEntities: NormalizedEntities) => {\n payloadEntities = payloadEntities?.filter(x => allEntities?.find(y => y.id === x.id) == null);\n\n if (payloadEntities != null && payloadEntities.length > 0) {\n for (let i = 0; i < allEntities.length; ++i) {\n const entity = allEntities.at(i);\n\n if (entity.id > 0) continue;\n\n const oldEntityId = entity.id;\n const newEntityId = payloadEntities.find(x => x.order === entity.order).id\n\n allEntities.ids[i] = newEntityId;\n entity.id = newEntityId;\n allEntities.obj[newEntityId] = entity;\n delete allEntities.obj[oldEntityId];\n }\n }\n};","import { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/streamsContainerActions';\nimport {\n getMultistream, getStreamIds, getAllComponents, getFreeComponents,\n getNormalizedMultistream, getComponentIds, getStream, getAllStreams\n} from '../selectors/playerSelectors';\nimport { PlayerState } from '../types/playerState';\nimport { Stream, Component } from '../types/multistream';\nimport Position from '../../utils/functions/Position';\nimport Size from '../../utils/functions/Size';\nimport { StreamPayload } from '../types/payloadTypes';\nimport { DenormalizedLayout } from '../types/layoutTemplate';\n\n\nexport const streamsContainerReducer = createReducer({\n [types.UPDATE_COMPONENT_LAYERS]: draft => updateComponentLayers(draft),\n [types.ADD_STREAM]: (draft, stream: Stream) => addStream(draft, stream),\n [types.REMOVE_STREAM]: (draft, streamId: number) => removeStream(draft, streamId),\n [types.DUPLICATE_STREAM]: (draft, streamId: number) => duplicateStream(draft, streamId),\n [types.EDIT_STREAM]: (draft, payload: StreamPayload) => editStream(draft, payload.streamId, payload.data),\n [types.DETACH_STREAM_FROM_MULTICOMPONENT]: (draft, streamId: number) => detachStreamFromMultiComponent(draft, streamId),\n [types.CHANGE_MULTISTREAM_LAYOUT]: (draft, payload: DenormalizedLayout) => changeMultistreamLayout(draft, payload)\n});\n\nconst updateComponentLayers = (draft: PlayerState) => {\n var components = getAllComponents(draft);\n\n if (components == null) return;\n\n var componentsAndAreas = components.map(component => ({\n componentId: component.id,\n area: component.size.width * component.size.height\n }));\n\n componentsAndAreas.sort((a, b) => (b.area - a.area));\n componentsAndAreas.forEach((value, index) => {\n if (components.get(value.componentId).state.layer !== index + 1) {\n components.get(value.componentId).state.layer = index + 1;\n }\n });\n};\n\nconst duplicateStream = (draft: PlayerState, streamId: number) => {\n const stream = getStream(draft, streamId);\n\n if (stream != null) {\n addStream(draft, stream);\n }\n};\n\nconst addStream = (draft: PlayerState, newStream: Stream) => {\n const normalizedMultistream = getNormalizedMultistream(draft);\n const newStreamComponent = getFreeComponent(draft) || addNewComponent(draft);\n\n newStream = { ...newStream };\n newStream.id = getNewStreamId(draft);\n newStream.order = newStreamComponent.order;\n\n if (normalizedMultistream.entities.streams == null) normalizedMultistream.entities.streams = {};\n\n normalizedMultistream.entities.streams[newStream.id] = newStream;\n getStreamIds(draft).push(newStream.id);\n};\n\nconst editStream = (draft: PlayerState, editedStreamId: number, newStream: Stream) => {\n const editedStream = getStream(draft, editedStreamId);\n\n if (editedStream != null && newStream != null) {\n if (newStream.streamType === editedStream.streamType\n && newStream.sourceType === editedStream.sourceType\n && newStream.sourceKey === editedStream.sourceKey) {\n editedStream.title = newStream.title;\n editedStream.thumbnailUrl = newStream.thumbnailUrl;\n editedStream.url = newStream.url;\n }\n else {\n replaceStream(draft, editedStreamId, newStream);\n }\n }\n};\n\nconst replaceStream = (draft: PlayerState, replacedStreamId: number, newStream: Stream) => {\n const normalizedMultistream = getNormalizedMultistream(draft);\n const replacedStream = getStream(draft, replacedStreamId);\n\n if (replacedStream != null) {\n newStream = { ...newStream };\n newStream.id = getNewStreamId(draft);\n newStream.order = replacedStream.order;\n\n normalizedMultistream.entities.streams[newStream.id] = newStream;\n removeStream(draft, replacedStreamId);\n getStreamIds(draft).push(newStream.id);\n }\n}\n\nconst removeStream = (draft: PlayerState, streamId: number) => {\n getMultistream(draft).streams = getStreamIds(draft).filter(x => x !== streamId);\n};\n\nconst getNewStreamId = (draft: PlayerState): number => {\n const streamIds = getStreamIds(draft);\n const lowestStreamId = streamIds && Math.min(...streamIds);\n return !streamIds || streamIds.length === 0 || lowestStreamId > 0 ? -1 : lowestStreamId - 1;\n};\n\nconst getFreeComponent = (draft: PlayerState): Component => {\n const freeComponents = getFreeComponents(draft);\n const lowestComponentOrder = freeComponents && Math.min(...freeComponents.map(x => x.order));\n return lowestComponentOrder && freeComponents?.find(x => x.order === lowestComponentOrder);\n};\n\nconst addNewComponent = (draft: PlayerState): Component => {\n const allComponents = getAllComponents(draft);\n const lowestComponentId = allComponents && Math.min(...allComponents.ids);\n const highestComponentOrder = allComponents && Math.max(...allComponents.map(x => x.order));\n const newComponentId = !allComponents || allComponents.length === 0 || lowestComponentId > 0 ? -1 : lowestComponentId - 1;\n const newComponentOrder = !allComponents || allComponents.length === 0 ? 1 : highestComponentOrder + 1;\n const newComponent = constructNewComponent(newComponentId, newComponentOrder);\n\n const normalizedMultistream = getNormalizedMultistream(draft);\n if (normalizedMultistream.entities.components == null) normalizedMultistream.entities.components = {};\n normalizedMultistream.entities.components[newComponent.id] = newComponent;\n getComponentIds(draft).push(newComponent.id);\n\n return newComponent;\n};\n\nconst constructNewComponent = (newComponentId: number, newComponentOrder: number): Component => {\n const newComponentSize = new Size(21, 24, '%');\n const positionMargin = new Position(16.5, 12, '%');\n const positionStep = new Position(23, 26, '%');\n const newComponentPosition = calculateNewComponentPositionPercentage(newComponentSize, newComponentOrder, positionMargin, positionStep);\n\n return {\n id: newComponentId,\n order: newComponentOrder,\n position: newComponentPosition,\n size: newComponentSize,\n state: {}\n };\n}\n\nconst calculateNewComponentPositionPercentage = (componentSize: Size, componentOrder: number, margin: Position, step: Position): Position => {\n const horizontalStreamsLimit = Math.floor((100 - (2 * margin.x) - componentSize.width) / step.x);\n const verticalStreamsLimit = Math.floor((100 - (2 * margin.y) - componentSize.height) / step.y);\n const newComponentPositionLeftPercentage = margin.x + step.x * ((componentOrder - 1) % (horizontalStreamsLimit + 1));\n const newComponentPositionTopPercentage = margin.y + step.y * (Math.floor((componentOrder - 1) / (verticalStreamsLimit + 1)) % (verticalStreamsLimit + 1));\n\n return new Position(newComponentPositionLeftPercentage, newComponentPositionTopPercentage, '%');\n};\n\nconst detachStreamFromMultiComponent = (draft: PlayerState, streamId: number) => {\n const stream = getStream(draft, streamId);\n const nextActiveStreamInMultiComponent = getAllStreams(draft).find(x => x.id !== stream.id && x.order === stream.order);\n\n nextActiveStreamInMultiComponent.isHidden = false;\n\n const newStreamComponent = getFreeComponent(draft) || addNewComponent(draft);\n stream.order = newStreamComponent.order;\n};\n\nconst changeMultistreamLayout = (draft: PlayerState, layout: DenormalizedLayout) => {\n //copy components array\n const layoutComponents = layout?.components == null ? [] : layout.components.map(x => ({ ...x }));\n\n //add missing new components\n const allStreams = getAllStreams(draft);\n const uniqueStreamOrders = Array.from(new Set(allStreams.map(x => x.order)));\n const numberOfMissingComponents = uniqueStreamOrders.length - layoutComponents.length;\n for (let i = 0; i < numberOfMissingComponents; ++i) {\n const newComponent = constructNewComponent(0, i + 1);\n newComponent.order = 0;\n layoutComponents.push(newComponent);\n }\n\n //assign component ids\n const alreadyUsedIds = getComponentIds(draft).filter(x => x > 0);\n for (let i = 0; i < layoutComponents.length; ++i) {\n const id = i < alreadyUsedIds.length ? alreadyUsedIds[i] : alreadyUsedIds.length - i - 1;\n layoutComponents[i].id = id;\n }\n\n\n //change component orders for streams\n for (let i = 0; i < layoutComponents.length; ++i) {\n if (layoutComponents[i].order <= 0 || !uniqueStreamOrders.some(x => x === layoutComponents[i].order)) {\n const currentComponentOrders = layoutComponents.map(x => x.order);\n const unassignedStreamOrder = uniqueStreamOrders.find(x => !currentComponentOrders.some(y => y === x));\n\n if (unassignedStreamOrder != null) {\n layoutComponents[i].order = unassignedStreamOrder;\n }\n }\n }\n\n //assign components to multistream\n const componentIds = layoutComponents.map(x => x.id);\n const componentEntities: { [id: number]: Component } = {};\n\n for (let i = 0; i < layoutComponents.length; i++) {\n componentEntities[layoutComponents[i].id] = layoutComponents[i];\n }\n\n const normalizedMultistream = getNormalizedMultistream(draft);\n normalizedMultistream.result.layout.components = componentIds;\n normalizedMultistream.entities.components = componentEntities;\n};","import { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/streamActions';\nimport { getStream, getPlayer, getMultiVideoStreamsQueue, getAllStreams } from '../selectors/playerSelectors';\nimport { PlayerState } from '../types/playerState';\nimport { MultiVideoStreamsPayload } from '../types/multiVideoStreams';\nimport { PlayerEvent, StreamState } from '../types/streamState';\nimport { StreamPayload } from '../types/payloadTypes';\n\nexport const streamReducer = createReducer({\n [types.UPDATE_STREAM_STATE]: (draft, payload: StreamPayload) => {\n const stream = getStream(draft, payload.streamId);\n\n if (stream != null) {\n stream.state = { ...stream.state, ...payload.data };\n }\n },\n [types.HIDE_STREAM]: (draft, payload: StreamPayload) => {\n const stream = getStream(draft, payload.streamId);\n\n if (stream != null) {\n stream.isHidden = payload.data;\n }\n },\n [types.ADD_NEW_MULTIVIDEO_STREAMS]: (draft, payload: MultiVideoStreamsPayload) => addNewMultiVideoStreams(draft, payload),\n [types.ASSIGN_NEXT_MULTIVIDEO_STREAM]: (draft, streamId: number) => {\n const stream = getStream(draft, streamId);\n\n if (stream != null) {\n const multiVideoStreamsQueue = getMultiVideoStreamsQueue(draft, stream.sourceType, stream.sourceKey);\n\n if (multiVideoStreamsQueue?.streams?.length > 0) {\n stream.state.multiVideoStream = multiVideoStreamsQueue.streams.shift();\n }\n else stream.state.multiVideoStream = null;\n }\n },\n [types.TOGGLE_STREAM_IN_MULTICOMPONENT]: (draft, streamId: number) => {\n const stream = getStream(draft, streamId);\n\n if (stream != null) {\n const otherMultiComponentStreams = getAllStreams(draft).filter(x => x.id !== stream.id && x.order === stream.order);\n\n stream.isHidden = false;\n otherMultiComponentStreams.forEach(x => x.isHidden = true);\n }\n },\n [types.SET_STREAM_SYNCHRONIZATION]: (draft, payload: StreamPayload) => {\n const stream = getStream(draft, payload.streamId);\n\n if (stream != null) {\n stream.synchronization = payload.data;\n }\n },\n [types.TOGGLE_STREAM_SYNCHRONIZATION]: (draft, payload: StreamPayload) => {\n const stream = getStream(draft, payload.streamId);\n\n if (stream != null) {\n const enabledSynchronization = payload.data;\n\n if (enabledSynchronization && stream.synchronization == null) {\n if (stream.state.synchronizationShelve != null) {\n stream.synchronization = stream.state.synchronizationShelve;\n }\n else {\n stream.synchronization = 0;\n }\n }\n else if (!enabledSynchronization && stream.synchronization != null) {\n stream.state.synchronizationShelve = stream.synchronization;\n stream.synchronization = null;\n }\n }\n },\n [types.ADD_PLAYER_EVENT]: (draft, payload: StreamPayload) => {\n const playerEventsSize = 5;\n const stream = getStream(draft, payload.streamId);\n const playerEvent = payload.data;\n\n if (stream != null) {\n if (stream.state.playerEvents == null) {\n stream.state.playerEvents = [playerEvent];\n }\n else if (stream.state.playerEvents.length < playerEventsSize) {\n stream.state.playerEvents.push(playerEvent);\n }\n else {\n stream.state.playerEvents.shift();\n stream.state.playerEvents.push(playerEvent);\n }\n }\n }\n});\n\nconst addNewMultiVideoStreams = (draft: PlayerState, payload: MultiVideoStreamsPayload) => {\n const player = getPlayer(draft);\n\n if (player.multiVideoStreams == null) player.multiVideoStreams = { queues: {} };\n if (player.multiVideoStreams.queues[payload.type] == null) player.multiVideoStreams.queues[payload.type] = {};\n if (player.multiVideoStreams.queues[payload.type][payload.key] == null) {\n player.multiVideoStreams.queues[payload.type][payload.key] = {\n streams: [],\n cursor: null,\n isRequesting: false,\n isExhausted: false\n };\n }\n\n const queue = player.multiVideoStreams.queues[payload.type][payload.key];\n\n if (payload.isRequesting) {\n queue.isRequesting = true;\n }\n else {\n queue.streams.push(...payload.streams);\n queue.cursor = payload.cursor;\n queue.isRequesting = false;\n queue.isExhausted = payload.streams.length === 0;\n }\n};\n","import { abs } from 'mathjs';\nimport Position from '../../../utils/functions/Position';\nimport Size from '../../../utils/functions/Size';\nimport NormalizedEntities from '../../../utils/functions/NormalizedEntities';\nimport { Component } from '../../types/multistream';\nimport { SnapPane } from '../../types/snapPane';\nimport Vector2 from '../../../utils/functions/Vector2';\n\nconst snapTolerance = 15;\nconst snapPaneMarginPixel = 20;\n\n\ninterface Edge {\n coordinate: number;\n start: number;\n end: number;\n}\n\ninterface ComponentEdges {\n left: Edge,\n right: Edge,\n top: Edge;\n bottom: Edge;\n}\n\ninterface EdgeCandidates {\n verticalXEdges: Array;\n horizontalYEdges: Array;\n}\n\ninterface ClosestEdge {\n edge: Edge;\n difference: number;\n}\n\nexport interface ComponentSnapResult {\n newPosition: Position;\n newSize: Size;\n}\n\nexport type SnapMode = 'drag' | 'resize';\n\nexport const calculateComponentSnapToComponents = (position: Position, size: Size, otherVisibleComponents: NormalizedEntities, mode: SnapMode): ComponentSnapResult => {\n position = position.convertUnitToPixel();\n size = size.convertUnitToPixel();\n\n const edgeCandidates: EdgeCandidates = calculateEdgeCandidates(otherVisibleComponents);\n const referenceComponentEdges = calculateComponentEdges(position, size);\n\n const leftClosestEdge: ClosestEdge = calculateClosestEdge(referenceComponentEdges.left, edgeCandidates.verticalXEdges, snapTolerance);\n const rightClosestEdge: ClosestEdge = calculateClosestEdge(referenceComponentEdges.right, edgeCandidates.verticalXEdges, snapTolerance);\n const topClosestEdge: ClosestEdge = calculateClosestEdge(referenceComponentEdges.top, edgeCandidates.horizontalYEdges, snapTolerance);\n const bottomClosestEdge: ClosestEdge = calculateClosestEdge(referenceComponentEdges.bottom, edgeCandidates.horizontalYEdges, snapTolerance);\n\n\n let closestVerticalXEdge: 'none' | 'left' | 'right' = 'none';\n let closestHorizontalYEdge: 'none' | 'top' | 'bottom' = 'none';\n\n if (leftClosestEdge != null && leftClosestEdge.difference > 0\n && (rightClosestEdge == null || rightClosestEdge.difference <= 0 || leftClosestEdge.difference <= rightClosestEdge.difference)) {\n closestVerticalXEdge = 'left';\n }\n else if (rightClosestEdge != null) {\n closestVerticalXEdge = 'right';\n }\n\n if (topClosestEdge != null && topClosestEdge.difference > 0\n && (bottomClosestEdge == null || bottomClosestEdge.difference <= 0 || topClosestEdge.difference <= bottomClosestEdge.difference)) {\n closestHorizontalYEdge = 'top';\n }\n else if (bottomClosestEdge != null) {\n closestHorizontalYEdge = 'bottom';\n }\n\n\n if (closestVerticalXEdge === 'none' && closestHorizontalYEdge === 'none') {\n return {\n newPosition: null,\n newSize: null\n };\n }\n\n if (mode === 'drag') {\n const newX = closestVerticalXEdge === 'left' ? leftClosestEdge.edge.coordinate\n : closestVerticalXEdge === 'right' ? rightClosestEdge.edge.coordinate - size.width\n : position.x;\n const newY = closestHorizontalYEdge === 'top' ? topClosestEdge.edge.coordinate\n : closestHorizontalYEdge === 'bottom' ? bottomClosestEdge.edge.coordinate - size.height\n : position.y;\n\n return {\n newPosition: new Position(newX, newY, 'px'),\n newSize: null\n };\n }\n\n if (mode === 'resize') {\n if (closestVerticalXEdge === 'left' || closestHorizontalYEdge === 'top') {\n const newX = closestVerticalXEdge === 'left' ? leftClosestEdge.edge.coordinate\n : position.x\n const newY = closestHorizontalYEdge === 'top' ? topClosestEdge.edge.coordinate\n : position.y;\n const newWidth = closestVerticalXEdge === 'left' ? referenceComponentEdges.right.coordinate - leftClosestEdge.edge.coordinate\n : closestVerticalXEdge === 'right' ? rightClosestEdge.edge.coordinate - referenceComponentEdges.left.coordinate\n : size.width;\n const newHeight = closestHorizontalYEdge === 'top' ? referenceComponentEdges.bottom.coordinate - topClosestEdge.edge.coordinate\n : closestHorizontalYEdge === 'bottom' ? bottomClosestEdge.edge.coordinate - referenceComponentEdges.top.coordinate\n : size.height;\n\n return {\n newPosition: new Position(newX, newY, 'px'),\n newSize: new Size(newWidth, newHeight, 'px')\n };\n }\n else {\n const newWidth = closestVerticalXEdge === 'right' ? rightClosestEdge.edge.coordinate - position.x\n : size.width;\n const newHeight = closestHorizontalYEdge === 'bottom' ? bottomClosestEdge.edge.coordinate - position.y\n : size.height;\n\n return {\n newPosition: null,\n newSize: new Size(newWidth, newHeight, 'px')\n };\n }\n }\n};\n\nconst calculateComponentEdges = (position: Position, size: Size): ComponentEdges => {\n return {\n left: { coordinate: position.x, start: position.y, end: position.y + size.height },\n right: { coordinate: position.x + size.width, start: position.y, end: position.y + size.height },\n top: { coordinate: position.y, start: position.x, end: position.x + size.width },\n bottom: { coordinate: position.y + size.height, start: position.x, end: position.x + size.width }\n };\n}\n\nconst calculateEdgeCandidates = (otherVisibleComponents: NormalizedEntities): EdgeCandidates => {\n const edgeCandidates: EdgeCandidates = otherVisibleComponents\n .map(x => ({ position: x.position.convertUnitToPixel(), size: x.size.convertUnitToPixel() }))\n .reduce((candidates: EdgeCandidates, rectangle: { position: Position, size: Size }) => {\n const componentEdges: ComponentEdges = calculateComponentEdges(rectangle.position, rectangle.size);\n candidates.verticalXEdges.push(componentEdges.left);\n candidates.verticalXEdges.push(componentEdges.right);\n candidates.horizontalYEdges.push(componentEdges.top);\n candidates.horizontalYEdges.push(componentEdges.bottom);\n return candidates;\n }, { verticalXEdges: [], horizontalYEdges: [] });\n\n const windowWidth = Vector2.getViewWidth();\n const windowHeight = Vector2.getViewHeight();\n const windowEdges = calculateComponentEdges(new Position(0, 0, 'px'), new Size(windowWidth, windowHeight, 'px'));\n\n edgeCandidates.verticalXEdges.push(windowEdges.left);\n edgeCandidates.verticalXEdges.push(windowEdges.right);\n edgeCandidates.horizontalYEdges.push(windowEdges.top);\n edgeCandidates.horizontalYEdges.push(windowEdges.bottom);\n\n return edgeCandidates\n};\n\nconst calculateClosestEdge = (referenceEdge: Edge, edges: Array, snapTolerance: number): ClosestEdge => {\n let currentClosestEdge: ClosestEdge = null;\n\n for (const edge of edges) {\n if (referenceEdge.end >= edge.start - snapTolerance && referenceEdge.start <= edge.end + snapTolerance) {\n const edgeDifference = abs(referenceEdge.coordinate - edge.coordinate);\n\n if (edgeDifference <= snapTolerance && (currentClosestEdge == null || edgeDifference < currentClosestEdge.difference)) {\n currentClosestEdge = {\n edge: edge,\n difference: edgeDifference\n }\n }\n }\n }\n\n return currentClosestEdge;\n};\n\nexport const calculateSnapPaneForComponent = (pointerPosition: Position, otherVisibleComponents: NormalizedEntities): Component => {\n if(otherVisibleComponents == null) {\n return null;\n }\n\n pointerPosition = pointerPosition.convertUnitToPixel();\n\n const triggeringComponents = otherVisibleComponents.filter(component => {\n const componentPositionPixel = component.position.convertUnitToPixel();\n const componentSizePixel = component.size.convertUnitToPixel();\n\n return pointerPosition.left >= componentPositionPixel.left + snapPaneMarginPixel\n && pointerPosition.left <= componentPositionPixel.left + componentSizePixel.width - snapPaneMarginPixel\n && pointerPosition.top >= componentPositionPixel.top\n && pointerPosition.top <= componentPositionPixel.top + snapPaneMarginPixel;\n });\n\n if(triggeringComponents.length <= 0) {\n return null;\n }\n\n let resultComponent = triggeringComponents.at(0);\n\n if(triggeringComponents.length > 1) {\n triggeringComponents.forEach((component, index) => {\n if(index > 0 && component.state?.layer != null && (resultComponent.state?.layer == null || component.state.layer > resultComponent.state.layer)) {\n resultComponent = component;\n }\n });\n }\n\n return resultComponent;\n};\n\nexport const calculateSnapPaneForPageEdge = (pointerPosition: Position): SnapPane => {\n pointerPosition = pointerPosition.convertUnitToPixel();\n const screenSizePixel = new Size(100, 100, '%').convertUnitToPixel();\n\n const leftPageEdge = pointerPosition.left <= snapPaneMarginPixel;\n const rightPageEdge = pointerPosition.left >= screenSizePixel.width - snapPaneMarginPixel;\n const topPageEdge = pointerPosition.top <= snapPaneMarginPixel;\n const bottomPageEdge = pointerPosition.top >= screenSizePixel.height - snapPaneMarginPixel;\n\n if(leftPageEdge && topPageEdge) return { position: new Position(0, 0, '%'), size: new Size(50, 50, '%'), pointerPosition };\n if(leftPageEdge && bottomPageEdge) return { position: new Position(0, 50, '%'), size: new Size(50, 50, '%'), pointerPosition };\n if(rightPageEdge && topPageEdge) return { position: new Position(50, 0, '%'), size: new Size(50, 50, '%'), pointerPosition };\n if(rightPageEdge && bottomPageEdge) return { position: new Position(50, 50, '%'), size: new Size(50, 50, '%'), pointerPosition };\n if(leftPageEdge) return { position: new Position(0, 0, '%'), size: new Size(50, 100, '%'), pointerPosition };\n if(rightPageEdge) return { position: new Position(50, 0, '%'), size: new Size(50, 100, '%'), pointerPosition };\n if(topPageEdge) return { position: new Position(0, 0, '%'), size: new Size(100, 100, '%'), pointerPosition };\n\n return null;\n}","import { AppDispatch } from '../../site/types/actionTypes';\nimport { action } from '../../utils/functions/reduxUtils';\nimport { updateComponentLayers } from './streamsContainerActions';\nimport { getVisibleComponents } from '../selectors/playerSelectors';\nimport { calculateComponentSnapToComponents, SnapMode, calculateSnapPaneForComponent, calculateSnapPaneForPageEdge } from './helpers/streamSnapHelper';\nimport Position from '../../utils/functions/Position';\nimport Size from '../../utils/functions/Size';\nimport { AppState } from '../../site/types/appState';\nimport { detectedMultistreamChanges } from './playerActions';\nimport { ComponentPayload } from '../types/payloadTypes';\nimport { ComponentState } from '../types/componentState';\nimport { SnapPane } from '../types/snapPane';\nimport { LayoutState } from '../types/layoutState';\nimport { DenormalizedLayout } from '../types/layoutTemplate';\n\nexport const types = {\n UPDATE_COMPONENT_POSITION: 'component/UPDATE_COMPONENT_POSITION',\n UPDATE_COMPONENT_SIZE: 'component/UPDATE_COMPONENT_SIZE',\n SET_COMPONENT_FRAME_ACTIVE: 'component/SET_COMPONENT_FRAME_ACTIVE',\n SWAP_COMPONENT_WITH_LARGEST: 'component/SWAP_COMPONENT_WITH_LARGEST',\n UPDATE_COMPONENT_STATE: 'component/UPDATE_COMPONENT_STATE',\n UPDATE_SNAP_PANE: 'component/UPDATE_SNAP_PANE',\n MERGE_COMPONENTS: 'component/MERGE_COMPONENTS',\n UPDATE_LAYOUT_STATE: 'layout/UPDATE_LAYOUT_STATE'\n};\n\nexport const updateComponentPosition = (componentId: number, newPosition: Position) => {\n return (dispatch: AppDispatch) => {\n newPosition = newPosition.convertUnitToPercent();\n dispatch(action>(types.UPDATE_COMPONENT_POSITION, { componentId, data: newPosition }));\n dispatch(detectedMultistreamChanges());\n dispatch(detectedLayoutEdit());\n };\n};\n\nexport const updateComponentSize = (componentId: number, newSize: Size) => {\n return (dispatch: AppDispatch) => {\n newSize = newSize.convertUnitToPercent();\n dispatch(action>(types.UPDATE_COMPONENT_SIZE, { componentId, data: newSize }));\n dispatch(savePreSnapComponentSize(componentId, null));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n dispatch(detectedLayoutEdit());\n };\n};\n\nexport const tryToSnapComponent = (componentId: number, snapMode: SnapMode, pointerPosition?: Position) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n const components = getVisibleComponents(getState());\n const component = components.get(componentId);\n const otherComponents = components.filter(x => x.id !== componentId);\n\n if (pointerPosition != null && snapMode === 'drag') {\n const targetComponent = calculateSnapPaneForComponent(pointerPosition, otherComponents);\n if (targetComponent != null) {\n dispatch(mergeComponents(componentId, targetComponent.id));\n return;\n }\n\n const snapPane = calculateSnapPaneForPageEdge(pointerPosition);\n if (snapPane != null) {\n const preSnapSize = component.size;\n dispatch(updateComponentPosition(componentId, snapPane.position));\n dispatch(updateComponentSize(componentId, snapPane.size));\n dispatch(savePreSnapComponentSize(componentId, preSnapSize));\n return;\n }\n }\n\n const snapResult = calculateComponentSnapToComponents(component.position, component.size, otherComponents, snapMode);\n if (snapResult.newPosition != null) {\n dispatch(updateComponentPosition(componentId, snapResult.newPosition));\n }\n if (snapResult.newSize != null) {\n dispatch(updateComponentSize(componentId, snapResult.newSize));\n }\n };\n};\n\nexport const setComponentFrameActive = (componentId: number, isFrameActive: boolean) =>\n action>(types.SET_COMPONENT_FRAME_ACTIVE, { componentId, data: isFrameActive });\n\nexport const setComponentShowSettings = (componentId: number, showSettings: boolean) =>\n action>(types.UPDATE_COMPONENT_STATE, { componentId, data: { showSettings } });\n\nexport const swapComponentWithLargest = (componentId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.SWAP_COMPONENT_WITH_LARGEST, componentId));\n dispatch(updateComponentLayers());\n dispatch(detectedMultistreamChanges());\n };\n};\n\nexport const setComponentFullscreen = (componentId: number) => {\n return (dispatch: AppDispatch) => {\n const newPosition = new Position(0, 0, 'px');\n const newSize = new Size(100, 100, '%').convertUnitToPixel();\n\n dispatch(updateComponentPosition(componentId, newPosition));\n dispatch(updateComponentSize(componentId, newSize));\n };\n};\n\nexport const tryToShowSnapPane = (componentId?: number, pointerPosition?: Position) => {\n return (dispatch: AppDispatch, getState: () => AppState) => {\n if (componentId == null || pointerPosition == null) {\n dispatch(action(types.UPDATE_SNAP_PANE, null));\n return;\n }\n\n const components = getVisibleComponents(getState());\n const otherComponents = components.filter(x => x.id !== componentId);\n const targetComponent = calculateSnapPaneForComponent(pointerPosition, otherComponents);\n\n if (targetComponent != null) {\n dispatch(action(types.UPDATE_SNAP_PANE, { position: targetComponent.position, size: targetComponent.size, pointerPosition }));\n return;\n }\n\n const snapPane = calculateSnapPaneForPageEdge(pointerPosition);\n dispatch(action(types.UPDATE_SNAP_PANE, snapPane));\n };\n};\n\nexport const mergeComponents = (componentId: number, targetMultiComponentId: number) => {\n return (dispatch: AppDispatch) => {\n dispatch(action>(types.MERGE_COMPONENTS, { componentId, data: targetMultiComponentId }));\n dispatch(detectedMultistreamChanges());\n };\n}\n\nexport const savePreSnapComponentSize = (componentId: number, previousSize: Size) => \n action>(types.UPDATE_COMPONENT_STATE, { componentId, data: { preSnapSize: previousSize } });\n\nexport const detectedLayoutEdit = () => action(types.UPDATE_LAYOUT_STATE, { editedLayout: true });\nexport const setPreviousLayout = (layout: DenormalizedLayout) => {\n return (dispatch: AppDispatch) => {\n dispatch(action(types.UPDATE_LAYOUT_STATE, { previousLayout: layout }));\n dispatch(action(types.UPDATE_LAYOUT_STATE, { editedLayout: false }));\n };\n}\n","import { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/componentActions';\nimport { getComponent, getAllComponents, getVisibleComponents, getPlayer, getAllStreams, getLayout } from '../selectors/playerSelectors';\nimport { PlayerState } from '../types/playerState';\nimport { ComponentPayload } from '../types/payloadTypes';\nimport { ComponentState } from '../types/componentState';\nimport Position from '../../utils/functions/Position';\nimport Size from '../../utils/functions/Size';\nimport { SnapPane } from '../types/snapPane';\nimport { LayoutState } from '../types/layoutState';\nimport { Component } from '../types/multistream';\n\nexport const componentReducer = createReducer({\n [types.UPDATE_COMPONENT_POSITION]: (draft, payload: ComponentPayload) => {\n const component = getComponent(draft, payload.componentId);\n\n if(component != null) {\n component.position = payload.data;\n }\n },\n [types.UPDATE_COMPONENT_SIZE]: (draft, payload: ComponentPayload) => {\n const component = getComponent(draft, payload.componentId);\n\n if(component != null) {\n component.size = payload.data;\n }\n },\n [types.SET_COMPONENT_FRAME_ACTIVE]: (draft, payload: ComponentPayload) => {\n disableAllComponentFrames(draft);\n\n if(payload.data) {\n const component = getComponent(draft, payload.componentId);\n\n if(component != null && component.state != null) {\n component.state.isFrameActive = true;\n }\n }\n },\n [types.SWAP_COMPONENT_WITH_LARGEST]: (draft, componentId: number) => {\n const visibleComponents = getVisibleComponents(draft);\n const targetComponent = getComponent(draft, componentId);\n \n if(targetComponent != null) {\n let largestComponent: Component = null;\n let largestArea: number = 0;\n\n visibleComponents.forEach(x => {\n const area = x.size.width * x.size.height;\n\n if(area > largestArea) {\n largestComponent = x;\n largestArea = area;\n }\n });\n\n if(largestComponent != null && largestComponent.id !== targetComponent.id)\n {\n const targetComponentOrder = targetComponent.order;\n targetComponent.order = largestComponent.order;\n largestComponent.order = targetComponentOrder;\n }\n }\n },\n [types.UPDATE_COMPONENT_STATE]: (draft, payload: ComponentPayload) => {\n const component = getComponent(draft, payload.componentId);\n\n if(component != null) {\n component.state = { ...component.state, ...payload.data };\n }\n },\n [types.UPDATE_SNAP_PANE]: (draft, payload: SnapPane) => {\n const player = getPlayer(draft);\n player.snapPane = payload;\n },\n [types.MERGE_COMPONENTS]: (draft, payload: ComponentPayload) => {\n const sourceComponent = getComponent(draft, payload.componentId);\n const targetComponent = getComponent(draft, payload.data);\n\n if(sourceComponent != null && targetComponent != null) {\n const allStreams = getAllStreams(draft);\n const allSourceStreams = allStreams.filter(x => x.order === sourceComponent.order);\n const allTargetStreams = allStreams.filter(x => x.order === targetComponent.order);\n \n allTargetStreams.forEach(x => x.isHidden = true);\n allSourceStreams.forEach(x => x.order = targetComponent.order);\n }\n },\n [types.UPDATE_LAYOUT_STATE]: (draft, payload: LayoutState) => {\n const layout = getLayout(draft);\n\n if(layout != null) {\n layout.state = { ...layout.state, ...payload };\n }\n },\n});\n\nconst disableAllComponentFrames = (draft: PlayerState) => {\n var components = getAllComponents(draft);\n components?.forEach((component) => {\n component.state.isFrameActive = false;\n });\n};\n","import reduceReducers from 'reduce-reducers';\nimport { multistreamReducer } from './multistreamReducer';\nimport { streamsContainerReducer } from './streamsContainerReducer';\nimport { streamReducer } from './streamReducer';\nimport { componentReducer } from './componentReducer';\nimport { createReducer } from '../../utils/functions/reduxUtils';\nimport { PlayerState } from '../types/playerState';\nimport { StreamDetailsModalData } from '../types/streamDetailsModalData';\nimport { types } from '../actions/playerActions';\nimport { NormalizedLayoutTemplates } from '../types/layoutTemplate';\nimport { PlayerFlags } from '../types/playerFlags';\n\nconst initialState: PlayerState = {\n normalizedMultistream: null,\n streamDetailsModalData: null,\n normalizedLayoutTemplates: null,\n multiVideoStreams: null,\n playerFlags: {}\n};\n\nconst playerReducer = createReducer({\n [types.UPDATE_STREAM_DETAILS_MODAL_DATA]: (draft, payload: StreamDetailsModalData) => {\n draft.streamDetailsModalData = payload;\n },\n [types.UPDATE_LAYOUT_TEMPLATE_LIST]: (draft, payload: NormalizedLayoutTemplates) => {\n draft.normalizedLayoutTemplates = payload;\n },\n [types.UPDATE_PLAYER_FLAGS]: (draft, playerFlags: PlayerFlags) => {\n draft.playerFlags = { ...draft.playerFlags, ...playerFlags };\n },\n [types.CLEAR_PLAYER_STATE]: () => {\n return initialState;\n }\n});\n\nexport default reduceReducers(initialState, playerReducer, multistreamReducer, streamsContainerReducer, streamReducer, componentReducer);","import { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/cardsActions'; \nimport { CardsData } from '../types/cardsData';\nimport { SiteState } from '../types/siteState';\n\nexport const cardsReducer = createReducer({\n [types.UPDATE_CARDS]: (draft, payload: CardsData) => {\n if(!draft.cards[payload.id]) {\n draft.cards[payload.id] = payload;\n }\n else {\n if(draft.cards[payload.id].cards && payload.cards) {\n payload.cards = draft.cards[payload.id].cards.concat(payload.cards);\n }\n\n draft.cards[payload.id] = {\n ...draft.cards[payload.id],\n ...payload\n }\n }\n },\n [types.CLEAR_CARDS]: (draft, id: string) => {\n if(draft.cards[id]) {\n draft.cards[id].cards = null;\n }\n },\n [types.CLEAR_ALL_CARDS]: (draft) => {\n draft.cards = {};\n }\n});","import reduceReducers from 'reduce-reducers';\nimport { createReducer } from '../../utils/functions/reduxUtils';\nimport { types } from '../actions/siteActions'; \nimport { cardsReducer } from './cardsReducer';\nimport { Notification } from '../types/notification';\nimport { SiteState } from '../types/siteState';\nimport { SiteFlags } from '../types/siteFlags';\n\nconst initialState: SiteState = {\n cards: {},\n notifications: [],\n siteFlags: {}\n};\n\nconst siteReducer = createReducer({\n [types.NOTIFY]: (draft, notification: Notification) => {\n draft.notifications.push(notification);\n },\n [types.REMOVE_NOTIFICATION]: (draft, key: string) => {\n draft.notifications = draft.notifications.filter(x => x.key !== key);\n },\n [types.UPDATE_SITE_FLAGS]: (draft, siteFlags: SiteFlags) => {\n draft.siteFlags = { ...draft.siteFlags, ...siteFlags };\n },\n});\n\n\nexport default reduceReducers(initialState, siteReducer, cardsReducer);","import React, { ErrorInfo, PropsWithChildren } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { reportFrontendError } from '../../actions/siteActions';\nimport { Auth0Context, Auth0ContextInterface } from '@auth0/auth0-react';\n\nconst mapDispatchToProps = {\n reportFrontendError\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype ErrorReportingBoundaryProps = ConnectedProps & PropsWithChildren<{}>;\n\nclass ErrorReportingBoundary extends React.Component {\n static contextType = Auth0Context;\n\n componentDidCatch(error: Error, _info: ErrorInfo) {\n const authContext: Auth0ContextInterface = this.context;\n this.props.reportFrontendError(authContext, error);\n }\n\n render() {\n return this.props.children;\n }\n}\n\nexport default connector(ErrorReportingBoundary);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst styles = (theme: Theme) => createStyles({\n buttonProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n }\n});\n\ntype ButtonProgressProps = WithStyles & {\n visible?: boolean;\n color?: 'primary'|'secondary';\n};\n\nconst ButtonProgress: FunctionComponent = (props) => {\n const { classes } = props;\n \n const visible = props.visible !== false;\n const color = props.color || 'primary';\n\n if(!visible) {\n return null;\n }\n\n return (\n \n );\n}\n\nexport default withStyles(styles)(ButtonProgress);","import React, { FunctionComponent } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport Hidden from '@material-ui/core/Hidden';\nimport Link from '@material-ui/core/Link';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport ButtonProgress from '../../../utils/components/ButtonProgress';\nimport AccountCircleIcon from '@material-ui/icons/AccountCircle';\n\nconst styles = (theme: Theme) => createStyles({\n loginText: {\n maxWidth: '290px'\n },\n loginButton: {\n padding: theme.spacing(1, 1)\n }\n});\n\ntype LoginButtonProps = WithStyles & {};\n\nconst LoginButton: FunctionComponent = (props) => {\n const { classes } = props;\n const authContext = useAuth0();\n\n if (authContext.isAuthenticated) {\n return (\n \n \n \n \n Logged as {authContext.user.nickname}\n \n \n \n \n \n \n \n \n \n );\n }\n else {\n return (\n \n );\n }\n};\n\nexport default withStyles(styles)(LoginButton);","import React, { FunctionComponent } from 'react';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/styles';\nimport { connect, ConnectedProps } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { fade, Theme } from '@material-ui/core';\nimport Box from '@material-ui/core/Box';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport InputBase from '@material-ui/core/InputBase';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { fetchCards, clearCards } from '../../actions/cardsActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport { Fade } from '@material-ui/core';\n\nconst styles = (theme: Theme) => createStyles({\n search: {\n position: 'relative',\n display: 'inline-flex',\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n '&:hover': {\n backgroundColor: fade(theme.palette.common.white, 0.25),\n },\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n marginLeft: theme.spacing(1),\n width: 'auto'\n }\n },\n searchIcon: {\n padding: theme.spacing(0, 2),\n height: '100%',\n position: 'absolute',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n inputRoot: {\n color: 'inherit',\n width: '100%'\n },\n inputInput: {\n padding: theme.spacing(1, 0),\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\n paddingRight: theme.spacing(4),\n transition: theme.transitions.create('width'),\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: '12ch',\n '&:focus': {\n width: '20ch'\n }\n },\n [theme.breakpoints.up('md')]: {\n width: '8ch',\n '&:focus': {\n width: '14ch'\n }\n },\n [theme.breakpoints.up('lg')]: {\n width: '20ch',\n '&:focus': {\n width: '30ch'\n }\n }\n },\n clearButtonRoot: {\n margin: 'auto'\n }\n});\n\nconst mapDispatchToProps = {\n fetchCards,\n clearCards\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype SearchBarProps = ConnectedProps & WithStyles & {};\n\nconst SearchBar: FunctionComponent = (props) => {\n const { classes } = props;\n const { fetchCards, clearCards } = props;\n const [value, setValue] = React.useState('');\n const [previousRoute, setPreviousRoute] = React.useState('/');\n const history = useHistory();\n const authContext = useAuth0();\n\n const requestSearch = (input: string) => {\n const trimmedInput = input.trim();\n\n if (trimmedInput !== '') {\n if (history.location.pathname !== '/search') {\n setPreviousRoute(history.location.pathname);\n history.push('/search');\n }\n const urlSearchQuery = encodeURIComponent(trimmedInput);\n clearCards('searchedGames');\n clearCards('searchedMultistreams');\n fetchCards(authContext, 'searchedGames', '/api/games/search?query=' + urlSearchQuery);\n fetchCards(authContext, 'searchedMultistreams', '/api/multistreams/search?query=' + urlSearchQuery);\n }\n };\n\n const clearSearch = () => {\n setValue('');\n\n if (history.location.pathname === '/search') {\n history.push(previousRoute);\n }\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n const input = event.target.value;\n\n if (input !== '') {\n setValue(input);\n requestSearch(input);\n }\n else {\n clearSearch();\n }\n };\n\n const handleKeyUp = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n requestSearch(value);\n } else if (event.key === 'Escape') {\n clearSearch();\n }\n };\n\n const handleBlur = () => {\n setValue((value) => value.trim());\n };\n\n return (\n \n \n \n \n \n\n {value !== '' &&\n \n \n \n \n \n \n \n \n\n \n }\n\n \n );\n};\n\nexport default connector(withStyles(styles)(SearchBar));","import React, { FunctionComponent } from 'react';\nimport { Link as RouterLink, NavLink } from 'react-router-dom';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport useScrollTrigger from '@material-ui/core/useScrollTrigger';\nimport Slide from '@material-ui/core/Slide';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport Hidden from '@material-ui/core/Hidden';\nimport Link from '@material-ui/core/Link';\nimport Drawer from '@material-ui/core/Drawer';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport LoginButton from './LoginButton';\nimport SearchBar from './SearchBar';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1\n },\n appBar: {\n backgroundColor: '#292b2c'\n },\n title: {\n flexGrow: 1\n },\n menuOptions: {\n marginTop: 4,\n marginLeft: theme.spacing(4),\n flexGrow: 1\n },\n menuIcon: {\n marginRight: theme.spacing(2)\n },\n menuItem: {\n padding: theme.spacing(2, 1.3)\n },\n menuButton: {\n color: 'rgba(255,255,255,.5)',\n '&:hover': {\n color: 'rgba(255,255,255,.8)'\n }\n },\n activeMenuButton: {\n color: 'rgba(255,255,255)!important'\n },\n drawerList: {\n width: 250\n }\n});\n\ntype MenuOptionType = {\n label: string;\n link: string;\n isPrivate?: boolean;\n};\n\ntype MenuProps = WithStyles & {\n websiteName: string;\n menuOptions: Array;\n};\n\nconst Menu: FunctionComponent = (props) => {\n const { classes } = props;\n const scrollTrigger = useScrollTrigger();\n\n return (\n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n );\n};\n\nconst DesktopMenuContent: FunctionComponent = (props) => {\n const { classes } = props;\n const { websiteName, menuOptions } = props;\n const { isAuthenticated } = useAuth0();\n\n return (\n \n \n \n \n {websiteName}\n \n \n \n\n
\n \n {menuOptions.filter(x => isAuthenticated || !x.isPrivate).map(menuOption => (\n \n {menuOption.label}\n \n ))}\n \n
\n\n
\n );\n};\n\nconst MobileMenuContent: FunctionComponent = (props) => {\n const { classes } = props;\n const { websiteName, menuOptions } = props;\n const [openDrawer, setOpenDrawer] = React.useState(false);\n const { isAuthenticated } = useAuth0();\n\n function handleDrawerOpen() {\n setOpenDrawer(true);\n }\n\n function handleDrawerClose() {\n setOpenDrawer(false);\n }\n\n return (\n \n \n \n \n \n \n \n {websiteName}\n \n \n \n\n \n
\n \n {menuOptions.filter(x => isAuthenticated || !x.isPrivate).map(menuOption => (\n \n \n \n \n \n ))}\n \n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(Menu);","import React, { FunctionComponent } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Container from '@material-ui/core/Container';\nimport Link from '@material-ui/core/Link';\nimport { Typography } from '@material-ui/core';\nimport Box from '@material-ui/core/Box';\n\nconst footerMenuOptions = [\n { label: 'contact', link: '/contact' },\n { label: 'cookies', link: '/cookies' },\n { label: 'privacy', link: '/privacy' }\n];\n\ntype FooterProps = {\n version: string;\n};\n\nconst Footer: FunctionComponent = (props) => {\n const { version } = props;\n const currentYear = new Date().getFullYear();\n\n return (\n \n
\n
\n
\n \n \n kampar\n © 2016-{currentYear} | v{version}\n {footerMenuOptions.map(menuOption => (\n  | {menuOption.label}\n ))}\n \n \n
\n
\n )\n}\n\nexport default Footer;","import React, { FunctionComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport Container from '@material-ui/core/Container';\nimport Box from '@material-ui/core/Box';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Button from '@material-ui/core/Button';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport { getCardsData } from '../../selectors/siteSelectors';\nimport { fetchCards } from '../../actions/cardsActions';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport { AppState } from '../../types/appState';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { Card } from '../../types/cardsData';\nimport { Typography } from '@material-ui/core';\n\ntype OwnProps = {\n id: string;\n url?: string;\n render: (card: Card) => JSX.Element;\n maxItems?: number;\n};\n\nconst mapStateToProps = (state: AppState, ownProps: OwnProps) => ({\n cardsData: getCardsData(state, ownProps.id)\n});\n\nconst mapDispatchToProps = {\n fetchCards\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype CardsDeckProps = ConnectedProps & OwnProps\n\nconst CardsDeck: FunctionComponent = (props) => {\n const { id, url, render, maxItems } = props;\n const { cardsData } = props;\n const { fetchCards } = props;\n const authContext = useAuth0();\n \n React.useEffect(() => {\n if(!cardsData && url) {\n fetchCards(authContext, id, url);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetchCards, id, url]);\n\n if(!cardsData){\n return null;\n }\n\n const bottomVisibilitySensorTrigger = (isVisible: boolean) => {\n if(isVisible) {\n fetchCards(authContext, id, url, cardsData.forwardCursor);\n }\n };\n\n var cardComponents = cardsData.cards && cardsData.cards.length > 0 && cardsData.cards.map(card => render(card));\n\n if(cardComponents && cardComponents.length > 0 && cardsData.state === 'loaded' && !maxItems) {\n var lastCardComponent = cardComponents[cardComponents.length - 1];\n const visibilitySensorCardComponent = \n {lastCardComponent}\n ;\n cardComponents[cardComponents.length - 1] = visibilitySensorCardComponent;\n }\n \n if(maxItems && cardComponents && cardComponents.length > maxItems) {\n cardComponents.splice(maxItems - cardComponents.length);\n }\n\n return (\n \n \n {cardComponents}\n \n\n {cardsData.state === 'loading' &&\n \n \n \n \n \n }\n\n {!cardComponents && cardsData.state === 'loadedAll' &&\n \n \n Sorry, no results were found.\n \n \n }\n\n {cardsData.state === 'error' &&\n \n \n \n \n \n }\n \n );\n}\n\n\nexport default connector(CardsDeck);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport { createGameUrl } from '../../utils/playerUrlCreators';\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport { Link as RouterLink } from 'react-router-dom';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport Box from '@material-ui/core/Box';\n\nconst cardWidth = 192;\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n minWidth: cardWidth,\n maxWidth: cardWidth\n },\n thumbnail: {\n height: cardWidth * 4 / 3\n },\n content: {\n paddingTop: 8,\n paddingBottom: 8\n }\n});\n\ntype GameCardProps = WithStyles & {\n id: string;\n name: string;\n thumbnailUrl: string;\n};\n\nconst GameCard: FunctionComponent = (props) => {\n const { classes } = props;\n const { id, name, thumbnailUrl } = props;\n \n const url = createGameUrl(id, name);\n\n return (\n \n \n \n \n \n \n \n {name}\n \n \n \n \n \n \n );\n}\n\nexport default withStyles(styles)(GameCard);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport CardMedia from '@material-ui/core/CardMedia';\n\nconst cardWidth = 315;\n\nconst styles = () => createStyles({\n thumbnail: {\n height: cardWidth * 9 / 16\n }\n});\n\nexport type CardStream = {\n title?: string;\n url?: string;\n thumbnailUrl?: string;\n};\n\ntype StreamThumbnail = {\n url: string;\n title: string;\n};\n\ntype MultistreamCardMediaProps = WithStyles & {\n streams: Array;\n};\n\nconst MultistreamCardMedia: FunctionComponent = (props) => {\n const { classes } = props;\n const { streams } = props;\n\n const streamThumbnail = getStreamThumbnails(streams)[0].url;\n\n return (\n \n );\n}\n\nfunction getStreamThumbnails(streams: Array): Array {\n var thumbnails: Array;\n\n if (streams) {\n thumbnails = streams.filter((stream) => {\n return stream && stream.thumbnailUrl;\n }).map((stream) => {\n return {\n url: stream.thumbnailUrl,\n title: stream.title\n };\n });\n }\n\n if (!thumbnails || thumbnails.length === 0) {\n return [{ url: '/images/defaultMultistream.png', title: '' }];\n }\n\n return thumbnails;\n}\n\nexport default withStyles(styles)(MultistreamCardMedia);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport Card from '@material-ui/core/Card';\n\nconst cardWidth = 315;\n\nconst styles = () => createStyles({\n card: {\n minWidth: cardWidth,\n maxWidth: cardWidth\n }\n});\n\nexport type CardStream = {\n title?: string;\n url?: string;\n thumbnailUrl?: string;\n};\n\ntype MultistreamCardRootProps = WithStyles & {\n title: string;\n description?: string;\n streams: Array;\n};\n\nconst MultistreamCardRoot: FunctionComponent = (props) => {\n const { classes, children } = props;\n const { streams, title, description } = props;\n\n const tooltip = getTooltip(title, description, streams);\n\n return (\n \n {children}\n \n );\n}\n\nfunction getTooltip(title: string, description: string, streams: Array): string {\n var tooltip = title + '\\n';\n\n if (description) {\n tooltip += description + '\\n';\n }\n\n if (streams) {\n streams.forEach(stream => {\n if (stream) {\n if (stream.title) {\n tooltip += stream.title + ': ';\n }\n\n if (stream.url) {\n tooltip += stream.url;\n }\n\n tooltip += '\\n';\n }\n });\n }\n\n return tooltip;\n}\n\nexport default withStyles(styles)(MultistreamCardRoot);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport { createMultistreamUrl } from '../../utils/playerUrlCreators';\nimport moment from 'moment';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport Box from '@material-ui/core/Box';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport MultistreamCardMedia, { CardStream } from './MultistreamCardMedia';\nimport MultistreamCardRoot from './MultistreamCardRoot';\n\nconst styles = (theme: Theme) => createStyles({\n footer: {\n marginTop: 8\n }\n});\n\ntype MultistreamCardProps = WithStyles & {\n keyId: string;\n title: string;\n description?: string;\n creationDate: string;\n streams: Array;\n};\n\nconst MultistreamCard: FunctionComponent = (props) => {\n const { classes } = props;\n const { keyId, title, description, creationDate, streams } = props;\n\n const url = createMultistreamUrl(keyId, title);\n const friendlyCreationDate = moment.utc(creationDate).fromNow();\n\n return (\n \n \n \n \n \n \n \n {title && /\\S/.test(title) ? title :  }\n \n \n {description && /\\S/.test(description) ? description :  }\n \n \n Created {friendlyCreationDate}\n \n \n \n \n \n \n );\n}\n\nexport default withStyles(styles)(MultistreamCard);","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport withWidth, { isWidthUp, isWidthDown, WithWidth } from '@material-ui/core/withWidth'\nimport { Theme } from '@material-ui/core';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport Container from '@material-ui/core/Container';\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport Button from '@material-ui/core/Button';\nimport CardsDeck from '../components/cards/CardsDeck'\nimport GameCard from '../components/cards/GameCard'\nimport MultistreamCard from '../components/cards/MultistreamCard';\n\nconst styles = (theme: Theme) => createStyles({\n jumbotron: {\n backgroundColor: '#dce3e6'\n },\n logoFont: {\n fontFamily: 'KarmaFuture',\n [theme.breakpoints.up('md')]: {\n fontSize: '6vw'\n },\n [theme.breakpoints.up('xl')]: {\n fontSize: theme.spacing(15)\n },\n [theme.breakpoints.down('sm')]: {\n fontSize: theme.spacing(7)\n },\n [theme.breakpoints.down('xs')]: {\n fontSize: theme.spacing(6)\n }\n },\n logoButton: {\n margin: theme.spacing(1)\n },\n sectionTitle: {\n fontSize: '1.7rem'\n }\n});\n\ntype HomeProps = WithStyles & WithWidth & {};\n\nconst Home: FunctionComponent = (props) => {\n const { classes } = props;\n const { width } = props;\n\n const currentSectionMargin = isWidthUp('md', width) ? 16 : isWidthDown('xs', width) ? 4 : 8;\n\n return (\n \n \n \n \n Multistream.co\n \n \n \n \n \n \n \n \n\n \n \n Popular games\n \n \n\n } maxItems={isWidthUp('md', width) ? 7 : 6} />\n\n \n \n \n\n\n \n \n Recommended multistreams\n \n \n\n } maxItems={10} />\n \n \n \n \n\n \n );\n}\n\nexport default withWidth()(withStyles(styles)(Home));","import React, { FunctionComponent } from 'react';\nimport { Container, Typography } from '@material-ui/core';\n\nconst About: FunctionComponent = () => {\n return (\n \n \n Multistream.co is the best site for watching multiple streams at the same time. \n You can watch YouTube videos, Twitch streams with chats, Twitter feeds and many more. \n You can create your own streams layout: do you want to have fullscreen video with smaller streams inside? \n No problem, you can do that with Multistream.co!\n \n
\n \n Selected features of Multistream.co:\n \n
    \n
  • Embed YouTube videos, Twitch streams and chats, Twitter feeds, most websites and raw video and audio urls
  • \n
  • Customize your own streams layout: you can drag and resize all added streams
  • \n
  • When dragging you can snap streams to each other, to screen edges or you can merge them to one and use tabs to navigate
  • \n
  • Dynamically change streams layout
  • \n
  • Share created Multistreams with your friends and viewers
  • \n
  • Use Multistream for collaborations with other streamers - your viewers can watch all streams at once
  • \n
  • Using Multistream doesn't have negative impact on your views - they are still counted as on original site
  • \n
  • Synchronize multiple streams or videos
  • \n
  • Watch multiple game streams - focus only on interesting fragments
  • \n
  • Option to unmute streams on mouse hover
  • \n
  • Responsive design for all screen sizes
  • \n
\n
\n );\n};\n\nexport default About;","import React from 'react';\n\ntype FormDefinition = { [fieldId: string]: FieldDefinition};\ntype ReactFormDefinition = { [fieldId: string]: ReactFieldDefinition};\n\ninterface FieldDefinition {\n value?: any;\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n regexFormat?: RegExp;\n}\n\ninterface ReactFieldDefinition {\n value: any;\n errorMessage: string;\n previousControlledValue: any;\n}\n\ninterface FieldInfo {\n value: any;\n checked: boolean;\n error: boolean;\n helperText: string;\n onChange: (event: any, checked?: boolean) => void;\n}\n\nexport default class FormState {\n static create(formDefinition: FormDefinition) {\n return new FormState(formDefinition);\n }\n\n private readonly _formDefinition: FormDefinition;\n private _formStateReact: any;\n private readonly _setFormStateReact: any;\n private _onFormChange?: () => void;\n\n private constructor(formDefinition: FormDefinition) {\n var initialState: ReactFormDefinition = {};\n\n for(var fieldId in formDefinition) {\n if(formDefinition.hasOwnProperty(fieldId) && formDefinition[fieldId].value != null) {\n const controlledValue = formDefinition[fieldId].value;\n initialState[fieldId] = { value: controlledValue, errorMessage: '', previousControlledValue: controlledValue };\n }\n }\n \n const [formStateReact, setFormStateReact] = React.useState(initialState);\n\n this._formDefinition = formDefinition;\n this._formStateReact = formStateReact;\n this._setFormStateReact = setFormStateReact;\n\n this.updateControlledValues();\n }\n\n field(fieldId: string): FieldInfo {\n const _this = this;\n const field = this._formStateReact[fieldId];\n const fieldValue = (field?.value) || '';\n const errorMessage = (field?.errorMessage) || '';\n\n return {\n value: fieldValue,\n checked: fieldValue === true,\n error: errorMessage !== '',\n helperText: errorMessage,\n onChange: (event: any, checked?: boolean) => {\n let newValue = checked != null ? checked : event.target.value;\n _this.updateField(fieldId, newValue);\n _this.triggerOnFormChangeEvent();\n }\n };\n }\n\n /**\n * Validate form fields\n * @param fieldIds fields for validation, validates all fields if omitted\n */\n validate(...fieldIds: string[]): boolean {\n var validationResult = true;\n\n if(fieldIds == null || fieldIds.length === 0) {\n fieldIds = Object.keys(this._formDefinition);\n }\n\n for(const fieldId of fieldIds) {\n if(this._formDefinition.hasOwnProperty(fieldId)) {\n if(this._formStateReact.hasOwnProperty(fieldId)) {\n this.updateField(fieldId, this._formStateReact[fieldId].value, true);\n }\n else {\n this.updateField(fieldId, null, true);\n }\n\n if(this.field(fieldId).error) {\n validationResult = false;\n }\n }\n }\n\n return validationResult;\n }\n\n getValues(): any {\n var values: { [key: string]: any} = {};\n\n for(var fieldId in this._formStateReact) {\n if(this._formStateReact.hasOwnProperty(fieldId)) {\n values[fieldId] = this._formStateReact[fieldId].value;\n }\n }\n\n return values;\n }\n\n validateAndProcessOnClick(processFormValues: (formValues: any) => void): (() => void) {\n return () => {\n if(this.validate()) {\n var formValues = this.getValues();\n processFormValues(formValues);\n }\n }\n }\n\n clearForm() {\n this._setFormStateReact({});\n this.triggerOnFormChangeEvent();\n }\n\n set onFormChange(action: () => void) {\n this._onFormChange = action;\n }\n\n private updateField(fieldId: string, newFieldValue: any, finalValidation: boolean = false) {\n const errorMessage = this.validateField(fieldId, newFieldValue, finalValidation);\n const newFormStateReact = { ...this._formStateReact, [fieldId]: { \n ...this._formStateReact[fieldId],\n value: newFieldValue,\n errorMessage: errorMessage\n }};\n\n this._setFormStateReact(newFormStateReact);\n this._formStateReact = newFormStateReact;\n }\n\n private validateField(fieldId: string, newFieldValue: any, finalValidation: boolean = false): string {\n const fieldDefinition = this._formDefinition[fieldId];\n const currentField = this._formStateReact[fieldId];\n const hasCurrentError = currentField?.errorMessage != null && currentField?.errorMessage !== '';\n\n if(fieldDefinition == null) {\n return '';\n }\n else if(fieldDefinition.required === true && (newFieldValue === '' || newFieldValue == null)) {\n return 'This field is required';\n }\n else if(fieldDefinition.maxLength != null && newFieldValue?.length != null && newFieldValue.length > fieldDefinition.maxLength) {\n return `This field can be max ${fieldDefinition.maxLength} characters long (exceeded by ${newFieldValue.length - fieldDefinition.maxLength})`;\n }\n else if((finalValidation || hasCurrentError) && fieldDefinition.minLength != null && newFieldValue?.length != null && newFieldValue.length < fieldDefinition.minLength) {\n return `This field must be at least ${fieldDefinition.minLength} characters long`;\n }\n else if((finalValidation || hasCurrentError) && fieldDefinition.regexFormat != null && \n newFieldValue !== '' && newFieldValue != null && !fieldDefinition.regexFormat.test(newFieldValue)) {\n return 'This field has wrong format';\n }\n\n return '';\n }\n\n private triggerOnFormChangeEvent() {\n this._onFormChange?.();\n }\n\n private updateControlledValues() {\n var changedFormStateField: ReactFormDefinition = {};\n var updateNeeded = false;\n\n for(var fieldId in this._formDefinition) {\n if(this._formDefinition.hasOwnProperty(fieldId)) {\n var newControlledValue = this._formDefinition[fieldId].value;\n var previousControlledValue = this._formStateReact.hasOwnProperty(fieldId) ? this._formStateReact[fieldId].previousControlledValue : null;\n\n if(newControlledValue === undefined) newControlledValue = null;\n if(previousControlledValue === undefined) previousControlledValue = null;\n\n if(newControlledValue !== previousControlledValue) {\n var fieldChanges = {\n value: newControlledValue,\n previousControlledValue: newControlledValue\n }\n\n changedFormStateField[fieldId] = {\n ...this._formStateReact[fieldId],\n ...fieldChanges\n }\n updateNeeded = true;\n }\n }\n }\n\n if(updateNeeded) {\n var newFormStateReact = {...this._formStateReact, ...changedFormStateField};\n this._setFormStateReact(newFormStateReact);\n this._formStateReact = newFormStateReact;\n this.triggerOnFormChangeEvent();\n }\n }\n}","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport { connect, ConnectedProps } from 'react-redux';\nimport FormState from '../../utils/functions/FormState';\nimport { sendFeedback } from '../actions/siteActions';\nimport { Container, Typography } from '@material-ui/core';\nimport Box from '@material-ui/core/Box';\nimport Link from '@material-ui/core/Link';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport SendIcon from '@material-ui/icons/Send';\nimport { AppState } from '../types/appState';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport ButtonProgress from '../../utils/components/ButtonProgress';\nimport { getSiteFlags } from '../selectors/siteSelectors';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n textAlign: 'center'\n },\n rightIcon: {\n marginLeft: theme.spacing(1)\n }\n});\n\nconst mapStateToProps = (state: AppState) => ({\n isSendFeedbackInProgess: getSiteFlags(state)?.isSendFeedbackInProgess === true\n });\n\nconst mapDispatchToProps = {\n sendFeedback\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype ContactProps = WithStyles & ConnectedProps & {};\n\nconst Contact: FunctionComponent = (props) => {\n const { classes } = props;\n const { isSendFeedbackInProgess } = props;\n const { sendFeedback } = props;\n const authContext = useAuth0();\n\n var formState = FormState.create({\n email: { value: authContext.user?.email, maxLength: 255, regexFormat: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i },\n message: { required: true, maxLength: 10000 }\n });\n\n const sendFeedbackOnClick = (formValues: any) => {\n sendFeedback(authContext, formValues.email, formValues.message);\n }\n\n // eslint-disable-next-line no-useless-concat\n const constructEmailAddress = () => ('contact' + '@' + 'multistream.co');\n\n return (\n \n \n If you have any comments, suggestions or questions\n \n \n send an e-mail at {constructEmailAddress()} or use the form below\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default connector(withStyles(styles)(Contact));","import React, { FunctionComponent } from 'react';\nimport { Container, Typography } from '@material-ui/core';\n\nconst CookiesPolicy: FunctionComponent = () => {\n return (\n \n Cookies\n
\n To make this site work properly, we sometimes place small data files called cookies on your device. Most big websites do this too.\n
\n What are cookies?\n
\n A cookie is a small text file that a website saves on your computer or mobile device when you visit the site. It enables the website to remember your actions and preferences (such as login, language, font size and other display preferences) over a period of time, so you don’t have to keep re-entering them whenever you come back to the site or browse from one page to another.\n
\n How do we use cookies?\n
\n A number of our pages use cookies to:\n
    \n
  • to identify the user
  • \n
  • gather statistics
  • \n
  • remember some actions performed by the users
  • \n
  • user settings
  • \n
\n \n Also, some embedded websites and videos in multistreams use a cookies to anonymously gather statistics on how you got there and what websites you visited.\n Enabling these cookies is not strictly necessary for the website to work but it will provide you with a better browsing experience. You can delete or block these cookies, but if you do that some features of this site may not work as intended.\n The cookie-related information is not used to identify you personally and the pattern data is fully under our control. These cookies are not used for any purpose other than those described here.\n \n
\n How to control cookies\n
\n You can control and/or delete cookies as you wish – for details, see aboutcookies.org. You can delete all cookies that are already on your computer and you can set most browsers to prevent them from being placed. If you do this, however, you may have to manually adjust some preferences every time you visit a site and some services and functionalities may not work.\n
\n );\n};\n\nexport default CookiesPolicy;","import React, { FunctionComponent } from 'react';\nimport { Container, Typography } from '@material-ui/core';\n\nconst PrivacyPolicy: FunctionComponent = () => {\n return (\n \n Privacy Policy\n
\n Multistream.co operates the https://multistream.co website, which provides the SERVICE.\n This page is used to inform website visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service.\n If you choose to use our Service, then you agree to the collection and use of information in relation with this policy. The Personal Information that we collect are used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.\n The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at https://multistream.co , unless otherwise defined in this Privacy Policy.\n
\n Information Collection and Use\n
\n For a better experience while using our Service, we may require you to provide us with certain personally identifiable information, including but not limited to your name, phone number, and postal address. The information that we collect will be used to contact or identify you.\n
\n Log Data\n
\n We want to inform you that whenever you visit our Service, we collect information that your browser sends to us that is called Log Data. This Log Data may include information such as your computer’s Internet Protocol (“IP”) address, browser version, pages of our Service that you visit, the time and date of your visit, the time spent on those pages, and other statistics.\n
\n Cookies\n
\n Cookies are files with small amount of data that is commonly used an anonymous unique identifier. These are sent to your browser from the website that you visit and are stored on your computer’s hard drive.\n Our website uses these “cookies” to collection information and to improve our Service. You have the option to either accept or refuse these cookies, and know when a cookie is being sent to your computer. If you choose to refuse our cookies, you may not be able to use some portions of our Service.\n
\n Service Providers\n
\n We may employ third-party companies and individuals due to the following reasons:\n
    \n
  • To facilitate our Service;
  • \n
  • To provide the Service on our behalf;
  • \n
  • To perform Service-related services; or
  • \n
  • To assist us in analyzing how our Service is used.
  • \n
\n We want to inform our Service users that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.\n
\n Security\n
\n We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.\n
\n Links to Other Sites\n
\n Our Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.\n
\n Children’s Privacy\n
\n Our Services do not address anyone under the age of 13. We do not knowingly collect personal identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.\n
\n Changes to This Privacy Policy\n
\n We may update our Privacy Policy from time to time. Thus, we advise you to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page.\n
\n Contact Us\n
\n If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us.\n
\n );\n};\n\nexport default PrivacyPolicy;","import React, { FunctionComponent } from 'react';\nimport CardsDeck from '../components/cards/CardsDeck'\nimport MultistreamCard from '../components/cards/MultistreamCard'\n\nconst Browse: FunctionComponent = () => {\n return (\n
\n } />\n
\n );\n}\n\nexport default Browse;","import React, { FunctionComponent } from 'react';\nimport CardsDeck from '../components/cards/CardsDeck'\nimport GameCard from '../components/cards/GameCard'\n\nconst Games: FunctionComponent = () => {\n return (\n
\n } />\n
\n );\n};\n\nexport default Games;","import React, { FunctionComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport FormState from '../../utils/functions/FormState';\nimport { createMultistream } from '../actions/siteActions';\nimport { clearAllCards } from '../actions/cardsActions';\nimport { useHistory } from 'react-router-dom';\nimport { Container, Typography } from '@material-ui/core';\nimport Box from '@material-ui/core/Box';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ButtonProgress from '../../utils/components/ButtonProgress';\nimport { useAuth0 } from '@auth0/auth0-react';\n\n const mapDispatchToProps = {\n createMultistream,\n clearAllCards\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype CreateProps = ConnectedProps & {};\n\nconst Create: FunctionComponent = (props) => {\n const { createMultistream, clearAllCards } = props;\n const [isRequesting, setRequesting] = React.useState(false);\n const authContext = useAuth0();\n\n var formState = FormState.create({\n title: { required: true, maxLength: 255 },\n description: { maxLength: 255 },\n isPrivate: { value: false }\n });\n\n const history = useHistory();\n \n const createMultistreamClick = (formValues: any) => {\n setRequesting(true);\n createMultistream(authContext, formValues.title, formValues.description, formValues.isPrivate, (url) => history.push(url));\n clearAllCards();\n };\n\n return (\n \n \n Create new multistream\n \n \n
\n \n \n \n } label=\"Private multistream\" />\n \n \n \n \n \n
\n
\n );\n}\n\nexport default connector(Create);","import React, { FunctionComponent } from 'react';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport Container from '@material-ui/core/Container';\nimport Box from '@material-ui/core/Box';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Paper from '@material-ui/core/Paper';\nimport ViewModuleIcon from '@material-ui/icons/ViewModule';\nimport VideogameAssetIcon from '@material-ui/icons/VideogameAsset';\n\nconst BrowseTabs: FunctionComponent = (props) => {\n const location = useLocation();\n const currentTab = location.pathname;\n\n return (\n \n \n \n \n } label='Latest' component={RouterLink} to='/browse' />\n } label='Games' component={RouterLink} to='/games' />\n \n \n \n \n );\n}\n\nexport default BrowseTabs;\n","import React, { FunctionComponent } from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\nimport Box from '@material-ui/core/Box';\n\n\nconst User: FunctionComponent = () => {\n const { isAuthenticated, user, logout } = useAuth0();\n\n if(!isAuthenticated) {\n return (\n \n \n You need to login to access this page.\n \n \n );\n }\n\n return (\n \n \n User info\n \n\n \n \n \n Name: {user.name}\n \n \n \n \n Nickname: {user.nickname}\n \n \n \n \n Email: {user.email}\n \n \n\n \n \n \n \n \n );\n}\n\nexport default User;","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport { connect, ConnectedProps } from 'react-redux';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { Typography } from '@material-ui/core';\nimport Box from '@material-ui/core/Box';\nimport IconButton from '@material-ui/core/IconButton';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { useHistory } from 'react-router-dom';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport LockIcon from '@material-ui/icons/Lock';\nimport LockOpenIcon from '@material-ui/icons/LockOpen';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport { changeMultistreamPrivacy, removeMultistream } from '../../actions/siteActions';\n\nconst styles = (theme: Theme) => createStyles({\n optionTitle: {\n marginLeft: theme.spacing(1)\n }\n});\n\nconst mapDispatchToProps = {\n changeMultistreamPrivacy,\n removeMultistream\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype SettingsOption = {\n title: string;\n icon: JSX.Element;\n action?: () => void;\n hidden?: () => boolean;\n};\n\ntype UserMultistreamSettingsProps = WithStyles & ConnectedProps & {\n multistreamKey: string;\n title: string;\n url: string;\n isPrivate: boolean;\n};\n\nconst UserMultistreamSettings: FunctionComponent = (props) => {\n const { classes } = props;\n const { multistreamKey, title, url, isPrivate } = props;\n const { changeMultistreamPrivacy, removeMultistream } = props;\n\n const authContext = useAuth0();\n const history = useHistory();\n const [menuAnchorElement, setMenuAnchorElement] = React.useState(null);\n const [isConfirmationDialogOpen, setConfirmationDialogOpen] = React.useState(false);\n const isMenuOpen = Boolean(menuAnchorElement);\n \n const settingsOptions: Array = [\n { title: 'Open multistream', icon: , action: () => history.push(url) },\n { title: 'Change to: Public', icon: , hidden: () => !isPrivate, action: () => changeMultistreamPrivacy(authContext, multistreamKey, false) },\n { title: 'Change to: Private', icon: , hidden: () => isPrivate, action: () => changeMultistreamPrivacy(authContext, multistreamKey, true) },\n { title: 'Remove multistream', icon: , action: () => setConfirmationDialogOpen(true) }\n ];\n\n const handleMenuOpenClick = (event: React.SyntheticEvent) => {\n setMenuAnchorElement(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setMenuAnchorElement(null);\n };\n\n const handleMenuItemClick = (settingsOption: SettingsOption) => {\n handleMenuClose();\n settingsOption.action?.();\n };\n\n const onConfirmationDialogClose = () => {\n setConfirmationDialogOpen(false);\n };\n\n const onRemoveConfirmation = () => {\n removeMultistream(authContext, multistreamKey);\n };\n\n return (\n \n \n \n \n\n \n {settingsOptions.map((settingOption, index) => (settingOption.hidden == null || !settingOption.hidden()) &&\n handleMenuItemClick(settingOption)}>\n {settingOption.icon}\n {settingOption.title}\n \n )}\n \n\n \n Are you sure?\n \n \n This will permanently remove multistream: {title}\n \n \n \n \n \n \n \n \n );\n};\n\nexport default connector(withStyles(styles)(UserMultistreamSettings));","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport { Theme } from '@material-ui/core';\nimport { createMultistreamUrl } from '../../utils/playerUrlCreators';\nimport moment from 'moment';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\nimport Box from '@material-ui/core/Box';\nimport LockIcon from '@material-ui/icons/Lock';\nimport LockOpenIcon from '@material-ui/icons/LockOpen';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport MultistreamCardMedia, { CardStream } from './MultistreamCardMedia';\nimport MultistreamCardRoot from './MultistreamCardRoot';\nimport UserMultistreamSettings from './UserMultistreamSettings';\n\n\nconst styles = (theme: Theme) => createStyles({\n footer: {\n marginTop: 8\n }\n});\n\ntype UserMultistreamCardProps = WithStyles & {\n keyId: string;\n title: string;\n description?: string;\n creationDate: string;\n isPrivate: boolean;\n lastVisitDate?: string;\n visits: number;\n streams: Array;\n};\n\nconst UserMultistreamCard: FunctionComponent = (props) => {\n const { classes } = props;\n const { keyId, title, description, creationDate, isPrivate, lastVisitDate, visits, streams } = props;\n\n const url = createMultistreamUrl(keyId, title);\n const friendlyCreationDate = moment.utc(creationDate).local().format('YYYY-MM-DD HH:mm');\n const friendlyLastVisitDate = lastVisitDate ? moment.utc(lastVisitDate).local().format('YYYY-MM-DD HH:mm') : '-';\n\n return (\n \n \n\n \n \n \n {title && /\\S/.test(title) ? title :  }\n \n \n \n \n \n \n \n \n {description && /\\S/.test(description) ? description :  }\n \n \n\n \n \n \n \n \n Created:  {friendlyCreationDate}\n \n \n Last visit: {friendlyLastVisitDate}\n \n \n \n Visits: {visits}\n \n \n {isPrivate ? : }\n \n \n \n \n \n \n \n );\n}\n\nexport default withStyles(styles)(UserMultistreamCard);","import React, { FunctionComponent } from 'react';\nimport Box from '@material-ui/core/Box';\nimport CardsDeck from '../components/cards/CardsDeck';\nimport UserMultistreamCard from '../components/cards/UserMultistreamCard';\n\n\nconst UserMultistreams: FunctionComponent = (props) => {\n return (\n \n } />\n \n );\n}\n\nexport default UserMultistreams;","import React, { FunctionComponent } from 'react';\n\ntype DocumentScrollbarsProps = {\n hide?: boolean;\n forceYScroll?: boolean;\n forceXScroll?: boolean;\n};\n\nconst DocumentScrollbars: FunctionComponent = (props) => {\n const { hide, forceYScroll, forceXScroll } = props;\n\n React.useEffect(() => {\n if(hide) {\n hideScrollbars();\n }\n else {\n showScrollbars();\n }\n });\n\n React.useEffect(() => {\n return () => resetScrollbars();\n }, []);\n\n const showScrollbars = () => {\n document.documentElement.style.overflow = 'auto';\n\n if(forceYScroll) {\n document.documentElement.style.overflowY = 'scroll';\n }\n \n if(forceXScroll) {\n document.documentElement.style.overflowX = 'scroll';\n }\n };\n\n const hideScrollbars = () => {\n document.documentElement.style.overflow = 'hidden';\n };\n\n const resetScrollbars = () => {\n document.documentElement.style.overflow = 'initial';\n document.documentElement.style.overflowY = 'initial';\n document.documentElement.style.overflowX = 'initial';\n };\n\n return null;\n}\n\nexport default DocumentScrollbars;","import React, { FunctionComponent } from 'react';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/styles';\nimport withWidth, { isWidthUp, isWidthDown, WithWidth } from '@material-ui/core/withWidth'\nimport CardsDeck from '../components/cards/CardsDeck'\nimport MultistreamCard from '../components/cards/MultistreamCard'\nimport GameCard from '../components/cards/GameCard'\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport DocumentScrollbars from '../../utils/components/DocumentScrollbars';\n\nconst styles = () => createStyles({\n sectionTitle: {\n fontSize: '1.7rem'\n }\n});\n\ntype SearchResultsProps = WithStyles & WithWidth & {};\n\nconst SearchResults: FunctionComponent = (props) => {\n const { classes } = props;\n const { width } = props;\n\n const currentSectionMargin = isWidthUp('md', width) ? 16 : isWidthDown('xs', width) ? 4 : 8;\n\n return (\n \n \n Search results\n \n\n \n \n Games\n \n \n\n } maxItems={isWidthUp('md', width) ? 7 : 6} />\n\n \n \n Multistreams\n \n \n\n } />\n\n \n \n );\n};\n\nexport default withWidth()(withStyles(styles)(SearchResults));","import React, { FunctionComponent } from 'react';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { createMuiTheme } from \"@material-ui/core/styles\";\nimport { ThemeProvider } from '@material-ui/styles';\nimport { Route } from 'react-router-dom';\nimport Box from '@material-ui/core/Box';\nimport Menu from '../components/site/Menu';\nimport Footer from '../components/site/Footer';\nimport Home from './Home';\nimport About from './About';\nimport Contact from './Contact';\nimport CookiesPolicy from './CookiesPolicy';\nimport PrivacyPolicy from './PrivacyPolicy';\nimport Browse from './Browse';\nimport Games from './Games';\nimport Create from './Create';\nimport BrowseTabs from '../components/site/BrowseTabs'\nimport User from './User';\nimport UserMultistreams from './UserMultistreams';\nimport SearchResults from './SearchResults';\n\nconst menuOptions = [\n { label: 'Home', link: '/' },\n { label: 'About', link: '/about' },\n { label: 'Browse', link: '/browse' },\n { label: 'Games', link: '/games' },\n { label: 'Create', link: '/create' },\n { label: 'Contact', link: '/contact' },\n { label: 'Your multistreams', link: '/multistreams', isPrivate: true }\n];\n\nconst siteTheme = createMuiTheme({\n palette: {\n background: {\n default: '#ecf0f5'\n }\n }\n});\n\ntype SiteAppProps = {\n version: string;\n};\n\nconst SiteApp: FunctionComponent = (props) => {\n const { version } = props;\n\n return (\n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n