{"version":3,"sources":["twilio/utils/index.ts","twilio/state/settings/settingsReducer.ts","constants.ts","hooks/useIsMounted.ts","twilio/hooks/deviceHooks/deviceHooks.tsx","twilio/state/index.tsx","twilio/state/useActiveSinkId/useActiveSinkId.ts","twilio/components/VideoProvider/useSelectedParticipant/useSelectedParticipant.tsx","twilio/hooks/useVideoContext/useVideoContext.ts","twilio/hooks/useIsTrackEnabled/useIsTrackEnabled.tsx","services/HttpService.ts","services/LoggerService.ts","services/BrowsersSupportedService.ts","twilio/components/VideoProvider/AttachVisibilityHandler/AttachVisibilityHandler.tsx","twilio/hooks/useLocalVideoToggle/useLocalVideoToggle.tsx","twilio/components/VideoProvider/useRoom/useRoom.tsx","twilio/components/VideoProvider/index.tsx","twilio/components/VideoProvider/useLocalTracks/useLocalTracks.ts","twilio/components/VideoProvider/useHandleRoomDisconnectionErrors/useHandleRoomDisconnectionErrors.ts","twilio/components/VideoProvider/useHandleTrackPublicationFailed/useHandleTrackPublicationFailed.ts","twilio/components/VideoProvider/useHandleOnDisconnect/useHandleOnDisconnect.ts","twilio/components/VideoProvider/useScreenShareToggle/useScreenShareToggle.tsx","twilio/theme.ts","components/HashiAsyncButton.tsx","assets/strings.ts","components/HashiContentContainers.tsx","components/HashiTextInput.tsx","ViewModels/AppViewModelArea/useAppViewModel.ts","Provider/RoomProvider.ts","components/HashiSpinner.tsx","components/HashiCleanButton.tsx","components/HashiBorderButton.tsx","views/WelcomeView.tsx","twilio/icons/AvatarIcon.tsx","twilio/hooks/useMediaStreamTrack/useMediaStreamTrack.ts","twilio/components/VideoTrack/VideoTrack.tsx","twilio/components/PreJoinScreens/DeviceSelectionScreen/LocalVideoPreview/LocalVideoPreview.tsx","twilio/components/AudioLevelIndicator/AudioLevelIndicator.tsx","twilio/components/LocalAudioLevelIndicator/LocalAudioLevelIndicator.tsx","components/HashiIconButton.tsx","twilio/components/DeviceSelectionDialog/AudioInputList/AudioInputList.tsx","twilio/components/DeviceSelectionDialog/AudioOutputList/AudioOutputList.tsx","twilio/components/DeviceSelectionDialog/VideoInputList/VideoInputList.tsx","components/RoomSettingsModal.tsx","views/TeethCheckView/components/SettingsMenuButton.tsx","hooks/useToggleTracksEnabled.ts","components/HashiIconToggleButton.tsx","components/HashiControlFab.tsx","components/ToggleVideoButton.tsx","components/ToggleAudioButton.tsx","views/TeethCheckView/components/TeethCheckToolBar.tsx","hooks/usePauseTracks.ts","views/TeethCheckView/TeethCheckView.tsx","assets/animations.ts","views/QuickWelcomeView.tsx","views/SessionEndedViews/Components/SessionEndedIcon.tsx","views/SessionEndedViews/SessionEndedView.tsx","hooks/useHashiRouting.ts","views/SessionEndedViews/LostConnectionView.tsx","NavigationControllers/useSessionEndedNavigation.tsx","views/SessionEndedViews/LeaveSessionView.tsx","NavigationControllers/SessionEndedNavigationController.tsx","views/RoomLoadingView.tsx","views/RoomView/components/EndCallButton.tsx","views/RoomView/components/FlipCameraButton/FlipCameraButton.tsx","twilio/hooks/useRoomState/useRoomState.tsx","views/RoomView/components/SettingsGear.tsx","views/RoomView/components/Controls.tsx","twilio/icons/ErrorIcon.tsx","twilio/icons/WarningIcon.tsx","twilio/components/Snackbar/Snackbar.tsx","twilio/components/ReconnectingNotification/ReconnectingNotification.tsx","twilio/components/ParticipantInfo/PinIcon/PinIcon.tsx","twilio/icons/ScreenShareIcon.tsx","twilio/hooks/useIsTrackSwitchedOff/useIsTrackSwitchedOff.tsx","twilio/hooks/usePublications/usePublications.tsx","twilio/hooks/useTrack/useTrack.tsx","twilio/hooks/useParticipantIsReconnecting/useParticipantIsReconnecting.ts","twilio/components/ParticipantInfo/ParticipantInfo.tsx","twilio/components/AudioTrack/AudioTrack.tsx","twilio/components/Publication/Publication.tsx","twilio/components/ParticipantTracks/ParticipantTracks.tsx","twilio/components/Participant/Participant.tsx","twilio/hooks/useDominantSpeaker/useDominantSpeaker.tsx","twilio/hooks/useParticipants/useParticipants.tsx","twilio/components/ParticipantList/ParticipantList.tsx","twilio/hooks/useVideoTrackDimensions/useVideoTrackDimensions.tsx","twilio/hooks/useScreenShareParticipant/useScreenShareParticipant.tsx","twilio/components/MainParticipantInfo/MainParticipantInfo.tsx","twilio/hooks/useMainParticipant/useMainParticipant.tsx","twilio/components/MainParticipant/MainParticipant.tsx","twilio/components/Room/Room.tsx","views/RoomView/RoomView.tsx","Playlist/models/AdEventType.ts","Playlist/providers/RouteProvider.ts","Playlist/providers/AdInterestsProvider.ts","Playlist/providers/AdEventProvider.ts","Playlist/components/CenterContentContainer.tsx","Playlist/components/PlaylistLoader.tsx","Playlist/components/VideoPlayer.tsx","Playlist/models/Ad.ts","Playlist/models/VideoAd.ts","Playlist/models/AdType.ts","Playlist/models/Playlist.ts","Playlist/ViewModels/PlaylistViewModelArea/useMakePlaylistViewModelValue.ts","Playlist/factories/PlaylistFactory.ts","Playlist/providers/PlaylistProvider.ts","Playlist/ViewModels/PlaylistViewModelArea/index.tsx","Playlist/ViewModels/PlaylistViewModelArea/usePlaylistViewModel.ts","Playlist/components/ImagePlayer.tsx","NavigationControllers/RoomNavigationController.tsx","Playlist/models/ImageAd.ts","Playlist/components/PlaylistControls.tsx","Playlist/components/PlaylistError.tsx","components/HashiOpacityVisabilityView.tsx","Playlist/components/PlaylistPlayer.tsx","Playlist/PlaylistModule.tsx","views/WaitingRoomView.tsx","assets/marimba_drop.wav","views/JoiningRoomView.tsx","NavigationControllers/RootNavigationController.tsx","NavigationControllers/useRootNavigation.tsx","ViewModels/AppViewModelArea/index.tsx","ViewModels/AppViewModelArea/useMakeAppViewModelValue.ts","hooks/useQuery.ts","components/HashiBrowserNotSupportedBanner.tsx","twilio/state/settings/renderDimensions.ts","twilio/utils/useConnectionOptions/useConnectionOptions.ts","App.tsx","reportWebVitals.ts","index.tsx"],"names":["isMobile","navigator","userAgent","test","removeUndefineds","obj","isPlainObject","target","key","val","initialSettings","trackSwitchOffMode","undefined","dominantSpeakerPriority","bandwidthProfileMode","maxTracks","maxAudioBitrate","renderDimensionLow","renderDimensionStandard","renderDimensionHigh","setting","settingsReducer","state","action","name","value","DEFAULT_VIDEO_CONSTRAINTS","width","height","frameRate","SELECTED_AUDIO_INPUT_KEY","SELECTED_AUDIO_OUTPUT_KEY","SELECTED_VIDEO_INPUT_KEY","useIsMounted","isMountedRef","useRef","useEffect","current","useDevices","useState","devices","setDevices","isMounted","getDevices","mediaDevices","enumerateDevices","then","addEventListener","removeEventListener","useAudioInputDevices","filter","device","kind","useVideoInputDevices","useAudioOutputDevices","StateContext","createContext","AppStateProvider","props","error","setError","audioOutputDevices","activeSinkId","_setActiveSinkId","setActiveSinkId","useCallback","sinkId","window","localStorage","setItem","selectedSinkId","getItem","some","deviceId","useActiveSinkId","useReducer","contextValue","settings","dispatchSetting","Provider","children","useAppState","context","useContext","Error","selectedParticipantContext","useSelectedParticipant","SelectedParticipantProvider","room","selectedParticipant","_setSelectedParticipant","onDisconnect","handleParticipantDisconnected","participant","prevParticipant","on","off","useVideoContext","VideoContext","useIsTrackEnabled","track","isEnabled","setIsEnabled","setEnabled","setDisabled","httpRequestMethods","httpService","url","accessToken","headers","request","this","getRequestObject","GET","fetchAsync","data","metadata","POST","PATCH","PUT","DELETE","uri","fetch","toString","response","ok","HttpError","text","JSON","parse","httpRequestMethod","authToken","body","method","Accept","stringify","statusType","status","json","logger","console","log","message","browsersSupportedService","browser","unsupportedBrowsers","Chrome","Firefox","IE","Edge","Opera","Safari","detectLoadBrowser","isIE","isEdge","isAndroid","isBlackBerry","isWindowsMobile","isIOS","hasOwnProperty","version","match","exec","replace","appName","appVersion","splice","AttachVisibilityHandler","localParticipant","localTracks","getLocalVideoTrack","removeLocalVideoTrack","onError","videoTrack","find","includes","isPublishing","setIspublishing","previousDeviceIdRef","a","mediaStreamTrack","getSettings","localTrackPublication","unpublishTrack","emit","exact","publishTrack","priority","logError","useLocalVideoToggle","isVideoEnabled","toggleVideoEnabled","shouldRepublishVideoOnForeground","handleVisibilityChange","document","visibilityState","TwilioVideo","Video","VideoProvider","options","onErrorCallback","audioTrack","setAudioTrack","setVideoTrack","isAcquiringLocalTracks","setIsAcquiringLocalTracks","localAudioDevices","localVideoDevices","hasAudio","length","hasVideo","getLocalAudioTrack","createLocalAudioTrack","newTrack","newOptions","Date","now","createLocalVideoTrack","stop","removeLocalAudioTrack","getAudioAndVideoTracks","Promise","resolve","selectedAudioDeviceId","selectedVideoDeviceId","hasSelectedAudioDevice","hasSelectedVideoDevice","localTrackConstraints","video","audio","createLocalTracks","tracks","finally","useLocalTracks","EventEmitter","setRoom","isConnecting","setIsConnecting","optionsRef","connect","token","preferredVideoCodecs","codec","simulcast","x","newRoom","disconnect","setMaxListeners","once","setTimeout","twilioRoom","videoTracks","forEach","publication","setPriority","useRoom","onDisconnected","useHandleRoomDisconnectionErrors","useHandleTrackPublicationFailed","useHandleOnDisconnect","isSharing","setIsSharing","stopScreenShareRef","shareScreen","getDisplayMedia","stream","getTracks","trackPublication","onended","catch","toggleScreenShare","useScreenShareToggle","isSharingScreen","isLocalAudioPausedRef","isLocalVideoPausedRef","defaultTheme","createMuiTheme","overrides","MuiCssBaseline","MuiButton","root","borderRadius","textTransform","color","fontSize","transition","transitions","create","duration","short","padding","contained","boxShadow","outlinedPrimary","border","startIcon","marginRight","MuiTypography","body1","MuiInputBase","MuiSelect","MuiDialogActions","MuiTextField","MuiInputLabel","marginBottom","fontWeight","MuiOutlinedInput","notchedOutline","borderColor","typography","fontFamily","palette","primary","main","brand","footerHeight","mobileFooterHeight","sidebarWidth","sidebarMobileHeight","sidebarMobilePadding","participantBorderWidth","mobileTopBarHeight","buttonHeight","buttonWidth","spinnerSize","ProductStrings","Strings","stringsJson","HashiFlexRowContainer","styled","div","HashiFlexAbsoluteCenterContainer","HashiTextInput","input","setValue","InputContainer","InputLabel","onClick","focus","label","TransparentInput","ref","onChange","event","useAppViewModel","AppViewModelContext","localStorageKey","roomProvider","roomCode","postAsync","appViewModel","RoomCodeRequired","getRoomTokenFromParticipantCode","roomDetails","setRoomCode","UnableToFindRoom","setCompanyName","CompanyName","setCustomerFirstName","CustomerFirstName","setCustomerLastName","CustomerLastName","setJwt","Jwt","setIsRecordingEnabled","IsRecordingEnabled","defaultProps","size","colors","PrimaryTitleText","HashiSpinner","styles","className","style","icon","faSpinner","HashiCleanButton","showButton","visible","ButtonWrapper","disabled","onPress","Button","HashiBorderButton","ContainerStyle","display","BorderButtonContainer","BorderButton","HashiFilledBorderButton","background","PrimaryTextButtonBackground","HashiAsyncButton","isLoading","setIsLoading","loadDataAsync","Container","element","clientHeight","clientWidth","LoadingContainer","WelcomeView","goToQuickWelcome","useRootNavigation","goToNext","alert","formattedCode","replaceAll","loadRoomDetailsAsync","logMessage","UnknownErrorOccured","FoundSessionButErrorOccured","LoginContainer","WelcomeText","ProductTitleText","ProductTitle","SessionInputLabel","paddingTop","JoinButtonLabel","AvatarIcon","xmlns","viewBox","fill","fillRule","cx","cy","r","strokeLinejoin","d","useMediaStreamTrack","setMediaStreamTrack","handleStarted","VideoTrack","isLocal","el","muted","attach","detach","isFrontFacing","facingMode","transform","objectFit","useStyles","makeStyles","theme","container","position","minHeight","overflow","avatarContainer","alignItems","justifyContent","top","right","bottom","left","zIndex","breakpoints","down","LocalVideoPreview","identity","classes","audioContext","clipId","AudioContext","webkitAudioContext","initializeAnalyser","audioSource","createMediaStreamSource","analyser","createAnalyser","smoothingTimeConstant","fftSize","AudioLevelIndicator","SVGRectRef","setAnalyser","isTrackEnabled","newMediaStream","MediaStream","clone","stopAllMediaStreamTracks","reinitializeAnalyser","SVGClipElement","sampleArray","Uint8Array","frequencyBinCount","timer","interval","getByteFrequencyData","values","i","volume","Math","min","max","log10","setAttribute","String","clipPathId","data-test-audio-indicator","id","y","clipPath","rx","ry","strokeWidth","data-test-audio-mute-icon","React","memo","LocalAudioLevelIndicator","HashiIconButton","iconSize","iconColor","iconStyles","iconPadding","pulseAnimationStyle","animation","animationIterationCount","pulseIterations","isPulseEnabled","Object","assign","AudioInputList","audioInputDevices","localAudioTrack","localAudioInputDeviceId","Typography","variant","gutterBottom","Grid","justify","FormControl","fullWidth","Select","e","newDeviceId","restart","map","MenuItem","AudioOutputList","activeOutputLabel","preview","maxHeight","margin","VideoInputList","videoInputDevices","localVideoTrack","localVideoInputDeviceId","flex","minWidth","headline","RoomSettingsModal","Dialog","open","onClose","DialogTitle","AudioVideoSettings","Divider","DialogContent","DropdownContainer","Audio","DialogActions","Done","SettingsMenu","useMediaQuery","deviceSettingsOpen","setDeviceSettingsOpen","faCog","useToggleTracksEnabled","isAudioEnabled","previousVideoDeviceIdRef","lastRunAudioTimeRef","lastRunVideoTimeRef","disableAllTracksAsync","disableAudioAsync","disableVideoAsync","enableAllTracksAsync","enableAudioAsync","enableVideoAsync","disable","ex","enable","HashiIconToggleButton","selected","isSelected","setIsSelected","selectedIcon","selectedIconColor","toggleOnTap","unSelectOnPress","selectedOnPress","HashiControlFabStyle","Wrapper","HashiControlFab","Fab","isDisabled","ToggleVideoButton","hasVideoDevices","lastClickTimeRef","toggleVideo","VideoIconButton","iconProps","faVideo","faVideoSlash","isFab","ToggleAudioButton","AudioIconButton","faMicrophone","faMicrophoneSlash","data-cy-audio-toggle","TeethCheckToolBar","ToggleCameraButton","faRepeatAlt","isButtonsDisabled","selectedDeviceId","deviceIndex","findIndex","newIndex","newDevice","ToolBarContainer","ToolBarIconContainer","IconContainer","PrimaryVideoOverlay","usePauseTracks","tracksEnabledService","playTracksAsync","pauseTracksAsync","TeethCheckView","jwt","audioPlayerRef","isRecordingEnabled","goToRoom","goToWelcome","disableButtons","DeviceErrorOccured","onContinue","play","TeethCheckViewContainer","ContentConatainer","VideoContainer","TopBarContainer","AudioLevelContainer","BelowVideoContainer","ByUsingThisServiceText","ByUsingThisService","ButtonContainerStyle","Start","FrontFacingCameraText","UseFrontCamera","HowDoYouLookTitle","HowDoYouLookText","HowDoYouLook","SecondaryText","animations","bounceInFromLeft","keyframes","slideInFromLeft","slideOutToLeft","bounceInFromRight","fadeIn","slideInBottom","slideOutBottom","QuickWelcomeView","appModel","goToDeviceSetup","WelcomeContainer","CenterEverything","WelcomeSideBySideWrap","WelcomeTextContainer","HelloText","Hello","NameText","customerFirstName","customerLastName","CompanyText","companyName","PrimaryBackground","SessionEndedIcon","iconStyle","SessionEndedView","clear","SessionEndedContainer","faCommentAltSmile","SessionEndedText","strings","YourSessionHasEnded","ThankYouText","ThanksForJoining","ReLiveConsultText","ReliveYourConsultation","SignInButtonContainer","SignIn","DividerBorderColor","useHashiRouting","routes","history","useHistory","location","useLocation","getRoute","component","path","route","pathname","LostConnectionView","faCommentAltDots","LostConnectionText","LostConnection","SessionEnded","useSessionEndedNavigation","showComponent","SessionEndedRoutes","goToSessionEndedView","goToLostConnectionView","goToLeaveSessionView","LeaveSessionView","rootNavigation","sessionEndedNavigation","faCommentAltExclamation","AreYouSureText","LeaveSessionText","ButtonContainer","ButtonContainerStyles","NoDontLeaveText","YesLeaveButtonText","marginTop","SessionEndedBaseRoute","SessionEndedNavigationController","RoomLoadingView","navigation","timeoutRef","clearTimeout","LoadingText","Loading","LookingForRoomText","TryingToFindRoomText","EndCallButton","goToSessionEnded","confirmDisconnectClick","data-cy-disconnect","faTimes","FlipCameraButton","supportsFacingMode","setSupportsFacingMode","videoDeviceList","toggleFacingMode","newFacingMode","faRepeat","useRoomState","setState","setRoomState","Menu","settingsOpen","setSettingsOpen","Controls","isReconnecting","ControlsContainer","isVisible","ControlBackground","ControlLayout","ShowHideSettings","controlsToBottomHeight","showSettingsSize","VideoControlsOverlay","ErrorIcon","stroke","WarningIcon","contentContainer","iconContainer","borderLeft","warning","Snackbar","handleClose","anchorOrigin","vertical","horizontal","_","reason","clsx","IconButton","aria-label","ReconnectingNotification","roomState","PinIcon","Tooltip","title","placement","SvgIcon","float","boxSizing","ScreenShareIcon","useIsTrackSwitchedOff","isSwitchedOff","setIsSwitchedOff","handleSwitchedOff","handleSwitchedOn","usePublications","publications","setPublications","Array","from","publicationAdded","prevPublications","publicationRemoved","p","useTrack","setTrack","removeTrack","useParticipantIsReconnecting","setIsReconnecting","handleReconnecting","handleReconnected","createStyles","innerContainer","infoContainer","flexDirection","reconnectingContainer","screenShareIconContainer","borderBottomRightRadius","borderTopLeftRadius","infoRowBottom","networkQualityContainer","typeography","hideParticipant","cursorPointer","cursor","ParticipantInfo","isLocalParticipant","audioPublication","videoPublication","trackName","Boolean","isScreenShareEnabled","isVideoSwitchedOff","isParticipantReconnecting","data-cy-participant","AudioTrack","audioEl","appendChild","remove","setSinkId","Publication","videoOnly","videoPriority","ParticipantTracks","filteredPublications","enableScreenShare","trackSid","Participant","useDominantSpeaker","dominantSpeaker","setDominantSpeaker","handleDominantSpeakerChanged","newDominantSpeaker","prevDominantSpeaker","useParticipants","participants","setParticipants","prevParticipants","participantConnected","participantDisconnected","ParticipantList","setSelectedParticipant","ParticipantsContainer","sid","LocalParticipant","dimensions","setDimensions","handleDimensionsChanged","useVideoTrackDimensions","isPortrait","LocalParticipantContainer","useScreenShareParticipant","screenShareParticipant","setScreenShareParticipant","updateScreenShareParticipant","concat","marginLeft","MainParticipantInfo","MainParticipantContainer","data-cy-main-participant","useMainParticipant","MainParticipant","mainParticipant","Room","RoomContainer","showControlsTimeout","RoomView","showControls","setShowControls","ShowControls","MainContainer","AdEventType","apiHost","routeProvider","getPlaylistRoute","adEventsRoute","adId","createAdInterestRoute","ad","deletePatientAdInterestRoute","adInterestId","adInterestsProvider","deleteAsync","interest","AdInterestId","Id","adEventProvider","postPlayForTwoSecondsAsync","postAdEventAsync","TwoSecondView","postCompletedAsync","FullView","postFailedAsync","FailedToPlay","type","getAdEventDto","adEventType","AdId","EventType","EventDate","dtoOut","CenterContentContainer","PlaylistLoader","LoaderContainer","VideoPlayer","isTwoSecondPlayLogged","usePlaylistViewModel","setIsPaused","isPaused","onAdEnd","on2SecondPlay","activeAd","videoPlayerRef","PlaylistVideo","src","publicUrl","onPlay","onPause","onEnded","VideoAd","onProgress","autoPlay","controls","playsInline","Ad","ThumbnailPublicUrl","uniqueId","hasBeenViewed","isFavorite","Component","minimumDuration","AdType","createElement","Playlist","ads","adInterestsEnabled","lastActiveAd","playlistFactory","dto","playlist","AdInterestsEnabled","Promos","fromAdDto","PublicUri","Type","Image","ImageLandscape","ImagePortrait","ImageAd","Name","Duration","ThumbnailPublicUri","UniqueId","playlistProvider","getAsync","playlistDto","factory","fromPlaylistDto","playlistAds","lastAdIndex","PlaylistContext","PlaylistViewModelArea","playlistViewModelValue","onDisablePlaylist","playlistAdsRef","activeAdIndex","setActiveAdIndex","setActiveAd","isAudioMuted","setIsAudioMuted","setIsFavorite","setAdInterestsEnabled","isFullScreen","setIsFullScreen","hasAds","setNewActiveAd","index","startPlaylistAsync","getMorePlaylistAds","advancePlayhead","toggleAdFavoriteAsync","SaveAdFavoriteAsync","DeleteAdFavoriteAsync","saveAdInterestAsync","interestId","deleteAdInterestAsync","openFullScreen","closeFullScreen","getNewPlaylist","refreshPlaylist","toggleFullScreen","useMakePlaylistViewModelValue","modelValue","twoSecondTimerRef","completedTimerRef","disconnectedTimeout","joiningTimeout","eventDebounceTimeout","ImagePlayer","adDuration","wireUpDoneEvent","PlaylistImage","alt","onLoad","img","iconSizePixels","PlaylistControls","PausePlayButton","togglePaused","pause","faPlay","faPause","MuteButton","toggleMute","MuteContainer","faVolumeSlash","faVolumeUp","FavoriteButton","isFavoriteDisabled","setIsFavoriteDisabled","toggleFavoriteAsync","HeartContainer","FavoriteHeartContainer","solidHeart","faHeart","fullScreenStyles","faExpand","maxWidth","backgroundColor","PlaylistError","FillHorizontal","Text","HashiOpacityVisibilityView","PlaylistPlayer","PlayerContainer","FullScreenStyles","PlaylistContainer","PlaylistViewer","FullScreenViewerStyles","PlaylistModule","WaitingRoomView","hasPlaylist","setHasPlaylist","WaitingRoomContainer","ContentContainer","TextContainer","LineBreak","ReadyText","GettingReadyText","GettingThingsReady","WaitText","PleaseWaitText","PleaseWait","HowText","HowToFavoriteText","HowToHeart","JoiningRoomView","progressValue","setProgressValue","progressIntervalRef","audioFile","waitTime","JoiningText","BorderLinearProgress","progressStyle","withStyles","colorPrimary","grey","bar","LinearProgress","RoomNavigationController","previousIsInWaitingRoomState","RoomNavigation","isInWaitingRoom","setIsInWaitingRoom","isJoiningRoom","setIsJoiningRoom","publishedTracks","dataTrack","isSubscribed","dataTrackEventAsync","subscribedEventAsync","goToWaitingRoom","setInWaitingRoom","RootNavigationController","AppViewModelArea","appViewModelValue","useMakeAppViewModelValue","URLSearchParams","search","get","useQuery","GetLocalStorageRoom","loadRoom","HashiBrowserNotSupportedBanner","BannerContainer","faExclamationTriangle","BannerText","BrowserUnsupported","RenderDimensions","resolution","getResolution","item","useConnectionOptions","roomType","connectionOptions","bandwidthProfile","mode","renderDimensions","low","standard","high","Number","networkQuality","local","remote","maxSubscriptionBitrate","VideoProviderArea","browserNotSupported","setBrowserNotSupported","isSupported","Background","App","basename","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.89471dd4.chunk.js","sourcesContent":["import isPlainObject from 'is-plain-object';\r\n\r\nexport const isMobile = (() => {\r\n if (typeof navigator === 'undefined' || typeof navigator.userAgent !== 'string') {\r\n return false;\r\n }\r\n return /Mobile/.test(navigator.userAgent);\r\n})();\r\n\r\n// Recursively removes any object keys with a value of undefined\r\nexport function removeUndefineds(obj: T): T {\r\n if (!isPlainObject(obj)) return obj;\r\n\r\n const target: { [name: string]: any } = {};\r\n\r\n for (const key in obj) {\r\n const val = obj[key];\r\n if (typeof val !== 'undefined') {\r\n target[key] = removeUndefineds(val);\r\n }\r\n }\r\n\r\n return target as T;\r\n}\r\n","import { isMobile } from '../../utils';\r\nimport { RenderDimensionValue } from './renderDimensions';\r\nimport { Track, VideoBandwidthProfileOptions } from 'twilio-video';\r\n\r\nexport interface Settings {\r\n trackSwitchOffMode: VideoBandwidthProfileOptions['trackSwitchOffMode'];\r\n dominantSpeakerPriority?: Track.Priority;\r\n bandwidthProfileMode: VideoBandwidthProfileOptions['mode'];\r\n maxTracks: string;\r\n maxAudioBitrate: string;\r\n renderDimensionLow?: RenderDimensionValue;\r\n renderDimensionStandard?: RenderDimensionValue;\r\n renderDimensionHigh?: RenderDimensionValue;\r\n}\r\n\r\ntype SettingsKeys = keyof Settings;\r\n\r\nexport interface SettingsAction {\r\n name: SettingsKeys;\r\n value: string;\r\n}\r\n\r\nexport const initialSettings: Settings = {\r\n trackSwitchOffMode: undefined,\r\n dominantSpeakerPriority: 'standard',\r\n bandwidthProfileMode: 'collaboration',\r\n maxTracks: isMobile ? '5' : '10',\r\n maxAudioBitrate: '16000',\r\n renderDimensionLow: 'low',\r\n renderDimensionStandard: '960p',\r\n renderDimensionHigh: 'wide1080p',\r\n};\r\n\r\n// This inputLabels object is used by ConnectionOptions.tsx. It is used to populate the id, name, and label props\r\n// of the various input elements. Using a typed object like this (instead of strings) eliminates the possibility\r\n// of there being a typo.\r\nexport const inputLabels = (() => {\r\n const target: any = {};\r\n for (const setting in initialSettings) {\r\n target[setting] = setting as SettingsKeys;\r\n }\r\n return target as { [key in SettingsKeys]: string };\r\n})();\r\n\r\nexport function settingsReducer(state: Settings, action: SettingsAction) {\r\n return {\r\n ...state,\r\n [action.name]: action.value === 'default' ? undefined : action.value,\r\n };\r\n}\r\n","export const DEFAULT_VIDEO_CONSTRAINTS: MediaStreamConstraints['video'] = {\r\n width: 1280,\r\n height: 720,\r\n frameRate: 24,\r\n};\r\n\r\n// These are used to store the selected media devices in localStorage\r\nexport const SELECTED_AUDIO_INPUT_KEY = 'TwilioVideoApp-selectedAudioInput';\r\nexport const SELECTED_AUDIO_OUTPUT_KEY = 'TwilioVideoApp-selectedAudioOutput';\r\nexport const SELECTED_VIDEO_INPUT_KEY = 'TwilioVideoApp-selectedVideoInput';\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useIsMounted = () => {\r\n const isMountedRef = useRef(false);\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n\r\n return () => {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n\r\n return isMountedRef;\r\n};\r\n","import { useState, useEffect } from 'react';\r\nimport { useIsMounted } from '../../../hooks/useIsMounted';\r\n\r\nexport function useDevices() {\r\n const [devices, setDevices] = useState([]);\r\n const isMounted = useIsMounted();\r\n\r\n useEffect(() => {\r\n const getDevices = () =>\r\n navigator.mediaDevices?.enumerateDevices().then((devices) => {\r\n if (isMounted.current) {\r\n setDevices(devices);\r\n }\r\n });\r\n navigator.mediaDevices?.addEventListener('devicechange', getDevices);\r\n getDevices();\r\n\r\n return () => {\r\n navigator.mediaDevices?.removeEventListener(\r\n 'devicechange',\r\n getDevices\r\n );\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return devices;\r\n}\r\n\r\nexport function useAudioInputDevices() {\r\n const devices = useDevices();\r\n return devices.filter((device) => device.kind === 'audioinput');\r\n}\r\n\r\nexport function useVideoInputDevices() {\r\n const devices = useDevices();\r\n return devices.filter((device) => device.kind === 'videoinput');\r\n}\r\n\r\nexport function useAudioOutputDevices() {\r\n const devices = useDevices();\r\n return devices.filter((device) => device.kind === 'audiooutput');\r\n}\r\n\r\nexport function useHasAudioInputDevices() {\r\n const audioDevices = useAudioInputDevices();\r\n return audioDevices.length > 0;\r\n}\r\n\r\nexport function useHasVideoInputDevices() {\r\n const videoDevices = useVideoInputDevices();\r\n return videoDevices.length > 0;\r\n}\r\n","import React, { createContext, useContext, useReducer, useState } from 'react';\r\nimport { RoomType } from '../types';\r\nimport { TwilioError } from 'twilio-video';\r\nimport {\r\n settingsReducer,\r\n initialSettings,\r\n Settings,\r\n SettingsAction,\r\n} from './settings/settingsReducer';\r\nimport useActiveSinkId from './useActiveSinkId/useActiveSinkId';\r\n\r\nexport interface StateContextType {\r\n error: TwilioError | null;\r\n setError(error: TwilioError | null): void;\r\n user?: null | {\r\n displayName: undefined;\r\n photoURL: undefined;\r\n passcode?: string;\r\n };\r\n signIn?(passcode?: string): Promise;\r\n signOut?(): Promise;\r\n isAuthReady?: boolean;\r\n activeSinkId: string;\r\n setActiveSinkId(sinkId: string): void;\r\n settings: Settings;\r\n dispatchSetting: React.Dispatch;\r\n roomType?: RoomType;\r\n}\r\n\r\nexport const StateContext = createContext(null!);\r\n\r\nexport default function AppStateProvider(props: React.PropsWithChildren<{}>) {\r\n const [error, setError] = useState(null);\r\n const [activeSinkId, setActiveSinkId] = useActiveSinkId();\r\n const [settings, dispatchSetting] = useReducer(\r\n settingsReducer,\r\n initialSettings\r\n );\r\n\r\n let contextValue = {\r\n error,\r\n setError,\r\n activeSinkId,\r\n setActiveSinkId,\r\n settings,\r\n dispatchSetting,\r\n } as StateContextType;\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n const context = useContext(StateContext);\r\n if (!context) {\r\n throw new Error('useAppState must be used within the AppStateProvider');\r\n }\r\n return context;\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { SELECTED_AUDIO_OUTPUT_KEY } from '../../../constants';\r\nimport { useAudioOutputDevices } from '../../hooks/deviceHooks/deviceHooks';\r\n\r\nexport default function useActiveSinkId() {\r\n const audioOutputDevices = useAudioOutputDevices();\r\n const [activeSinkId, _setActiveSinkId] = useState('default');\r\n\r\n const setActiveSinkId = useCallback(\r\n (sinkId: string) => {\r\n window.localStorage.setItem(SELECTED_AUDIO_OUTPUT_KEY, sinkId);\r\n _setActiveSinkId(sinkId);\r\n },\r\n [_setActiveSinkId]\r\n );\r\n\r\n useEffect(() => {\r\n const selectedSinkId = window.localStorage.getItem(SELECTED_AUDIO_OUTPUT_KEY);\r\n const hasSelectedAudioOutputDevice = audioOutputDevices.some(\r\n device => selectedSinkId && device.deviceId === selectedSinkId\r\n );\r\n if (hasSelectedAudioOutputDevice) {\r\n _setActiveSinkId(selectedSinkId!);\r\n }\r\n }, [audioOutputDevices]);\r\n\r\n return [activeSinkId, setActiveSinkId] as const;\r\n}\r\n","import React, { createContext, useContext, useState, useEffect } from 'react';\r\nimport { Participant, Room } from 'twilio-video';\r\n\r\ntype selectedParticipantContextType = [Participant | null, (participant: Participant) => void];\r\n\r\nexport const selectedParticipantContext = createContext(null!);\r\n\r\nexport default function useSelectedParticipant() {\r\n const [selectedParticipant, setSelectedParticipant] = useContext(selectedParticipantContext);\r\n return [selectedParticipant, setSelectedParticipant] as const;\r\n}\r\n\r\ntype SelectedParticipantProviderProps = {\r\n room: Room;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport function SelectedParticipantProvider({ room, children }: SelectedParticipantProviderProps) {\r\n const [selectedParticipant, _setSelectedParticipant] = useState(null);\r\n const setSelectedParticipant = (participant: Participant) =>\r\n _setSelectedParticipant(prevParticipant => (prevParticipant === participant ? null : participant));\r\n\r\n useEffect(() => {\r\n const onDisconnect = () => _setSelectedParticipant(null);\r\n const handleParticipantDisconnected = (participant: Participant) =>\r\n _setSelectedParticipant(prevParticipant => (prevParticipant === participant ? null : prevParticipant));\r\n\r\n room.on('disconnected', onDisconnect);\r\n room.on('participantDisconnected', handleParticipantDisconnected);\r\n return () => {\r\n room.off('disconnected', onDisconnect);\r\n room.off('participantDisconnected', handleParticipantDisconnected);\r\n };\r\n }, [room]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import { useContext } from 'react';\r\nimport { VideoContext } from '../../components/VideoProvider';\r\n\r\nexport default function useVideoContext() {\r\n const context = useContext(VideoContext);\r\n if (!context) {\r\n throw new Error('useVideoContext must be used within a VideoProvider');\r\n }\r\n return context;\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport { LocalAudioTrack, LocalVideoTrack, RemoteAudioTrack, RemoteVideoTrack } from 'twilio-video';\r\n\r\ntype TrackType = LocalAudioTrack | LocalVideoTrack | RemoteAudioTrack | RemoteVideoTrack | undefined;\r\n\r\nexport default function useIsTrackEnabled(track: TrackType) {\r\n const [isEnabled, setIsEnabled] = useState(track ? track.isEnabled : false);\r\n\r\n useEffect(() => {\r\n setIsEnabled(track ? track.isEnabled : false);\r\n\r\n if (track) {\r\n const setEnabled = () => setIsEnabled(true);\r\n const setDisabled = () => setIsEnabled(false);\r\n track.on('enabled', setEnabled);\r\n track.on('disabled', setDisabled);\r\n return () => {\r\n track.off('enabled', setEnabled);\r\n track.off('disabled', setDisabled);\r\n };\r\n }\r\n }, [track]);\r\n\r\n return isEnabled;\r\n}\r\n","enum httpRequestMethods {\r\n GET = 'GET',\r\n POST = 'POST',\r\n PATCH = 'PATCH',\r\n DELETE = 'DELETE',\r\n PUT = 'PUT',\r\n}\r\n\r\nclass HttpService {\r\n public async getAsync(\r\n url: URL | string,\r\n accessToken?: string,\r\n headers?: IHttpHeaders\r\n ): Promise {\r\n let request = this.getRequestObject(\r\n httpRequestMethods.GET,\r\n accessToken,\r\n headers\r\n );\r\n return await this.fetchAsync(url, request);\r\n }\r\n\r\n public async postAsync(\r\n url: URL | string,\r\n data?: object,\r\n accessToken?: string,\r\n metadata?: object,\r\n headers?: IHttpHeaders\r\n ): Promise {\r\n let request = this.getRequestObject(\r\n httpRequestMethods.POST,\r\n accessToken,\r\n headers,\r\n data,\r\n metadata\r\n );\r\n return await this.fetchAsync(url, request);\r\n }\r\n\r\n public async patchAsync(\r\n url: URL | string,\r\n data: object,\r\n accessToken: string,\r\n headers?: IHttpHeaders\r\n ): Promise {\r\n let request = this.getRequestObject(\r\n httpRequestMethods.PATCH,\r\n accessToken,\r\n headers,\r\n data\r\n );\r\n return await this.fetchAsync(url, request);\r\n }\r\n\r\n public async putAsync(\r\n url: URL | string,\r\n data: object,\r\n accessToken: string,\r\n headers?: IHttpHeaders\r\n ): Promise {\r\n let request = this.getRequestObject(\r\n httpRequestMethods.PUT,\r\n accessToken,\r\n headers,\r\n data\r\n );\r\n return await this.fetchAsync(url, request);\r\n }\r\n\r\n public async deleteAsync(\r\n url: URL | string,\r\n accessToken: string,\r\n headers?: IHttpHeaders\r\n ): Promise {\r\n let request = this.getRequestObject(\r\n httpRequestMethods.DELETE,\r\n accessToken,\r\n headers\r\n );\r\n return await this.fetchAsync(url, request);\r\n }\r\n\r\n private async fetchAsync(\r\n uri: URL | string,\r\n request: RequestInit\r\n ): Promise {\r\n let response = await fetch(uri.toString(), request);\r\n\r\n if (!response.ok) {\r\n throw new HttpError(response);\r\n }\r\n\r\n return response.text().then((text) => {\r\n return text ? JSON.parse(text) : {};\r\n });\r\n }\r\n\r\n private getRequestObject(\r\n httpRequestMethod: httpRequestMethods,\r\n authToken?: string,\r\n headers?: IHttpHeaders,\r\n data?: any,\r\n metadata?: any\r\n ): RequestInit {\r\n let request = {} as RequestInit;\r\n request.method = httpRequestMethod;\r\n\r\n headers = headers ?? ({} as IHttpHeaders);\r\n\r\n if (!headers['Content-Type']) {\r\n headers['Content-Type'] = 'application/json';\r\n }\r\n\r\n if (!headers.Accept) {\r\n headers['Accept'] = 'application/json';\r\n }\r\n\r\n if (authToken) {\r\n headers['Authorization'] = `Bearer ${authToken}`;\r\n }\r\n\r\n request.headers = headers as any;\r\n\r\n let body;\r\n\r\n if (data) {\r\n if (metadata) {\r\n headers['X-Metadata'] = JSON.stringify(metadata);\r\n }\r\n if (data['size']) {\r\n headers['Content-Length'] = data['size'];\r\n body = data as Blob;\r\n } else {\r\n body = JSON.stringify(data);\r\n }\r\n request.body = body;\r\n }\r\n\r\n return request;\r\n }\r\n}\r\n\r\nexport const httpService = new HttpService();\r\n\r\nexport type HttpErrorStatus = 'ClientError' | 'ServerError';\r\nexport type HttpStatus =\r\n | 'Informational'\r\n | 'Success'\r\n | 'Redirection'\r\n | HttpErrorStatus;\r\nexport interface HttpErrorBodyDTOin {\r\n Message?: string;\r\n Data?: any;\r\n}\r\nexport class HttpError extends Error {\r\n public statusType?: HttpErrorStatus;\r\n constructor(public response: Response) {\r\n super('Response contained error');\r\n\r\n const status = response.status;\r\n if (!status) return;\r\n if (status >= 400 && status < 500) {\r\n this.statusType = 'ClientError';\r\n } else if (status >= 500 && status < 600) {\r\n this.statusType = 'ServerError';\r\n }\r\n }\r\n\r\n public async bodyAsync(): Promise {\r\n return this.response.json();\r\n }\r\n}\r\n\r\ninterface IHttpHeaders {\r\n 'Content-Type':\r\n | 'application/json'\r\n | 'application/octet-stream'\r\n | 'image/jpeg'\r\n | 'video/mp4';\r\n Accept:\r\n | 'application/json'\r\n | 'application/octet-stream'\r\n | 'image/jpeg'\r\n | 'video/mp4';\r\n Authorization: string;\r\n 'Content-Length': string;\r\n 'X-Metadata': string;\r\n}\r\n","class LoggerService {\r\n\r\n public logError(error: Error) {\r\n console.log(error)\r\n }\r\n\r\n public logMessage(message: string) {\r\n console.log(message);\r\n }\r\n}\r\n\r\nexport const logger = new LoggerService();","class BrowsersSupportedService {\r\n public browser: BrowserVersion = {} as BrowserVersion;\r\n public unsupportedBrowsers = {\r\n Chrome: 55,\r\n Firefox: 43,\r\n IE: 11,\r\n Edge: 79,\r\n Opera: 43,\r\n Safari: 10,\r\n };\r\n constructor() {\r\n this.detectLoadBrowser();\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Internet Explorer.\r\n */\r\n public get isIE(): boolean {\r\n return this.browser.name === 'IE';\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Edge.\r\n */\r\n public get isEdge(): boolean {\r\n return this.browser.name === 'Edge';\r\n }\r\n\r\n /**\r\n * Checks if the current browser is from Microsoft (Edge\r\n * or Internet Explorer).\r\n */\r\n public get isMicrosoft(): boolean {\r\n return this.isIE || this.isEdge;\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Firefox.\r\n */\r\n public get isFirefox(): boolean {\r\n return this.browser.name === 'Firefox';\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Chrome.\r\n */\r\n public get isChrome(): boolean {\r\n return this.browser.name === 'Chrome';\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Safari.\r\n */\r\n public get isSafari(): boolean {\r\n return this.browser.name === 'Safari';\r\n }\r\n\r\n /**\r\n * Checks if the current browser is from an Android device.\r\n */\r\n public get isAndroid(): boolean {\r\n return /Android/i.test(navigator.userAgent);\r\n }\r\n\r\n /**\r\n * Checks if the current browser is from a BlackBerry device.\r\n */\r\n public get isBlackBerry(): boolean {\r\n return /BlackBerry/i.test(navigator.userAgent);\r\n }\r\n\r\n /**\r\n * Checks if the current browser is from a Windows Mobile device.\r\n */\r\n public get isWindowsMobile(): boolean {\r\n return /IEMobile/i.test(navigator.userAgent);\r\n }\r\n\r\n /**\r\n * Checks if the current browser is Mobile Safari.\r\n */\r\n public get isIOS(): boolean {\r\n return /iPhone|iPad|iPod/i.test(navigator.userAgent);\r\n }\r\n\r\n /**\r\n * Checks if the current browser is a mobile browser.\r\n */\r\n public get isMobile(): boolean {\r\n return (\r\n this.isAndroid ||\r\n this.isBlackBerry ||\r\n this.isWindowsMobile ||\r\n this.isIOS\r\n );\r\n }\r\n\r\n /**\r\n * Checks if the current browser is supported by\r\n */\r\n public isSupported(): boolean {\r\n if (this.unsupportedBrowsers.hasOwnProperty(this.browser.name)) {\r\n if (\r\n +this.browser.version >\r\n (this.unsupportedBrowsers as any)[this.browser.name]\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private detectLoadBrowser(): void {\r\n this.browser = (function () {\r\n var userAgent = navigator.userAgent;\r\n var version;\r\n var name =\r\n userAgent.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n\r\n if (/trident/i.test(name[1])) {\r\n version = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\r\n return {\r\n name: 'IE',\r\n version: version[1] || '',\r\n } as BrowserVersion;\r\n }\r\n\r\n if (name[1] === 'Chrome') {\r\n version = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (version != null) {\r\n return {\r\n name: version[1].replace('OPR', 'Opera'),\r\n version: version[2],\r\n } as BrowserVersion;\r\n }\r\n }\r\n\r\n name = name[2]\r\n ? [name[1], name[2]]\r\n : [navigator.appName, navigator.appVersion, '-?'];\r\n\r\n if ((version = userAgent.match(/version\\/(\\d+)/i)) != null) {\r\n name.splice(1, 1, version[1]);\r\n }\r\n\r\n return { name: name[0], version: name[1] } as BrowserVersion;\r\n })();\r\n }\r\n}\r\n\r\nexport const browsersSupportedService = new BrowsersSupportedService();\r\n\r\ninterface BrowserVersion {\r\n name: string;\r\n version: string;\r\n}\r\n","import { isMobile } from '../../../utils';\r\nimport { useEffect, useRef } from 'react';\r\nimport useLocalVideoToggle from '../../../hooks/useLocalVideoToggle/useLocalVideoToggle';\r\nimport useVideoContext from '../../../hooks/useVideoContext/useVideoContext';\r\n\r\n/* \r\n This component adds a visibilitychange handler to the document when\r\n the user is using a mobile device. When the handler detects that\r\n the browser has been backgrounded, it unpublishes the users local\r\n video track. The browser cannot send video to the room when it has\r\n been backgrounded, so unpublishing the track stops video capture\r\n on the device, and triggers a UI update for all other participants\r\n to show that this user's video track has been turned off.\r\n*/\r\n\r\nexport default function AttachVisibilityHandler() {\r\n const { room } = useVideoContext();\r\n const [isVideoEnabled, toggleVideoEnabled] = useLocalVideoToggle();\r\n const shouldRepublishVideoOnForeground = useRef(false);\r\n\r\n useEffect(() => {\r\n if (isMobile) {\r\n const handleVisibilityChange = () => {\r\n // We don't need to unpublish the local video track if it has already been unpublished\r\n if (document.visibilityState === 'hidden' && isVideoEnabled) {\r\n shouldRepublishVideoOnForeground.current = true;\r\n toggleVideoEnabled();\r\n\r\n // Don't publish the local video track if it wasn't published before the app was backgrounded\r\n } else if (shouldRepublishVideoOnForeground.current) {\r\n shouldRepublishVideoOnForeground.current = false;\r\n toggleVideoEnabled();\r\n }\r\n };\r\n\r\n document.addEventListener('visibilitychange', handleVisibilityChange);\r\n return () => {\r\n document.removeEventListener('visibilitychange', handleVisibilityChange);\r\n };\r\n }\r\n }, [isVideoEnabled, room, toggleVideoEnabled]);\r\n\r\n return null;\r\n}\r\n","import { LocalVideoTrack } from 'twilio-video';\r\nimport { useCallback, useRef, useState } from 'react';\r\nimport useVideoContext from '../useVideoContext/useVideoContext';\r\nimport useIsTrackEnabled from '../useIsTrackEnabled/useIsTrackEnabled';\r\nimport { logger } from '../../../services';\r\n\r\nexport default function useLocalVideoToggle() {\r\n const {\r\n room: { localParticipant },\r\n localTracks,\r\n getLocalVideoTrack,\r\n removeLocalVideoTrack,\r\n onError,\r\n } = useVideoContext();\r\n const videoTrack = localTracks.find((track) =>\r\n track.name.includes('camera')\r\n ) as LocalVideoTrack;\r\n const [isPublishing, setIspublishing] = useState(false);\r\n const previousDeviceIdRef = useRef();\r\n const isEnabled = useIsTrackEnabled(videoTrack);\r\n\r\n const toggleVideoEnabledAsync = useCallback(async () => {\r\n try {\r\n if (!isPublishing) {\r\n if (videoTrack) {\r\n previousDeviceIdRef.current = videoTrack.mediaStreamTrack.getSettings().deviceId;\r\n const localTrackPublication = localParticipant?.unpublishTrack(\r\n videoTrack\r\n );\r\n // TODO: remove when SDK implements this event. See: https://issues.corp.twilio.com/browse/JSDK-2592\r\n localParticipant?.emit(\r\n 'trackUnpublished',\r\n localTrackPublication\r\n );\r\n removeLocalVideoTrack();\r\n } else {\r\n setIspublishing(true);\r\n const track = await getLocalVideoTrack({\r\n deviceId: { exact: previousDeviceIdRef.current },\r\n });\r\n await localParticipant?.publishTrack(track, {\r\n priority: 'low',\r\n });\r\n }\r\n }\r\n } catch (ex) {\r\n logger.logError(ex);\r\n onError(ex);\r\n } finally {\r\n setIspublishing(false);\r\n }\r\n }, [\r\n videoTrack,\r\n localParticipant,\r\n getLocalVideoTrack,\r\n isPublishing,\r\n onError,\r\n removeLocalVideoTrack,\r\n ]);\r\n\r\n return [isEnabled, toggleVideoEnabledAsync] as const;\r\n}\r\n","import { Callback } from '../../../types';\r\nimport EventEmitter from 'events';\r\nimport { isMobile } from '../../../utils';\r\nimport Video, { ConnectOptions, LocalTrack, Room } from 'twilio-video';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\n// @ts-ignore\r\nwindow.TwilioVideo = Video;\r\n\r\nexport default function useRoom(localTracks: LocalTrack[], onError: Callback, options?: ConnectOptions) {\r\n const [room, setRoom] = useState(new EventEmitter() as Room);\r\n const [isConnecting, setIsConnecting] = useState(false);\r\n const optionsRef = useRef(options);\r\n\r\n useEffect(() => {\r\n // This allows the connect function to always access the most recent version of the options object. This allows us to\r\n // reliably use the connect function at any time.\r\n optionsRef.current = options;\r\n }, [options]);\r\n\r\n const connect = useCallback(\r\n async (token) => {\r\n setIsConnecting(true);\r\n try {\r\n let newRoom = await Video.connect(token, {\r\n ...optionsRef.current,\r\n //Using VP8 only for a bug with iOS 15.1 audio issues seem to exist with simulcast being set to true.\r\n preferredVideoCodecs: [{ codec: 'VP8', simulcast: false }],\r\n tracks: localTracks.filter((x) => x.kind === 'audio'),\r\n });\r\n setRoom(newRoom);\r\n const disconnect = () => newRoom.disconnect();\r\n\r\n // This app can add up to 13 'participantDisconnected' listeners to the room object, which can trigger\r\n // a warning from the EventEmitter object. Here we increase the max listeners to suppress the warning.\r\n newRoom.setMaxListeners(15);\r\n\r\n newRoom.once('disconnected', () => {\r\n // Reset the room only after all other `disconnected` listeners have been called.\r\n setTimeout(() => setRoom(new EventEmitter() as Room));\r\n window.removeEventListener('beforeunload', disconnect);\r\n\r\n if (isMobile) {\r\n window.removeEventListener('pagehide', disconnect);\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n window.twilioRoom = newRoom;\r\n\r\n newRoom.localParticipant.videoTracks.forEach((publication) =>\r\n // All video tracks are published with 'low' priority because the video track\r\n // that is displayed in the 'MainParticipant' component will have it's priority\r\n // set to 'high' via track.setPriority()\r\n publication.setPriority('low')\r\n );\r\n\r\n setIsConnecting(false);\r\n\r\n // Add a listener to disconnect from the room when a user closes their browser\r\n window.addEventListener('beforeunload', disconnect);\r\n\r\n if (isMobile) {\r\n // Add a listener to disconnect from the room when a mobile user closes their browser\r\n window.addEventListener('pagehide', disconnect);\r\n }\r\n } catch (ex) {\r\n //Turn off is connecting and throw\r\n setIsConnecting(false);\r\n onError(ex);\r\n throw ex;\r\n }\r\n },\r\n [localTracks, onError]\r\n );\r\n\r\n return { room, isConnecting, connect };\r\n}\r\n","import React, { createContext, ReactNode, useRef, useState } from 'react';\r\nimport {\r\n CreateLocalTrackOptions,\r\n ConnectOptions,\r\n LocalAudioTrack,\r\n LocalVideoTrack,\r\n Room,\r\n TwilioError,\r\n} from 'twilio-video';\r\nimport { Callback, ErrorCallback } from '../../types';\r\nimport { SelectedParticipantProvider } from './useSelectedParticipant/useSelectedParticipant';\r\n\r\nimport AttachVisibilityHandler from './AttachVisibilityHandler/AttachVisibilityHandler';\r\nimport useHandleRoomDisconnectionErrors from './useHandleRoomDisconnectionErrors/useHandleRoomDisconnectionErrors';\r\nimport useHandleOnDisconnect from './useHandleOnDisconnect/useHandleOnDisconnect';\r\nimport useHandleTrackPublicationFailed from './useHandleTrackPublicationFailed/useHandleTrackPublicationFailed';\r\nimport useLocalTracks from './useLocalTracks/useLocalTracks';\r\nimport useRoom from './useRoom/useRoom';\r\nimport useScreenShareToggle from './useScreenShareToggle/useScreenShareToggle';\r\nimport { logger } from '../../../services';\r\n\r\n/*\r\n * The hooks used by the VideoProvider component are different than the hooks found in the 'hooks/' directory. The hooks\r\n * in the 'hooks/' directory can be used anywhere in a video application, and they can be used any number of times.\r\n * the hooks in the 'VideoProvider/' directory are intended to be used by the VideoProvider component only. Using these hooks\r\n * elsewhere in the application may cause problems as these hooks should not be used more than once in an application.\r\n */\r\n\r\nexport interface IVideoContext {\r\n room: Room;\r\n localTracks: (LocalAudioTrack | LocalVideoTrack)[];\r\n isConnecting: boolean;\r\n connect: (token: string) => Promise;\r\n onError: ErrorCallback;\r\n onDisconnect: Callback;\r\n getLocalVideoTrack: (\r\n newOptions?: CreateLocalTrackOptions\r\n ) => Promise;\r\n getLocalAudioTrack: (deviceId?: string) => Promise;\r\n isAcquiringLocalTracks: boolean;\r\n removeLocalVideoTrack: () => void;\r\n removeLocalAudioTrack: () => void;\r\n isSharingScreen: boolean;\r\n toggleScreenShare: () => void;\r\n getAudioAndVideoTracks: () => Promise;\r\n isLocalAudioPausedRef: React.MutableRefObject;\r\n isLocalVideoPausedRef: React.MutableRefObject;\r\n}\r\n\r\nexport const VideoContext = createContext(null!);\r\n\r\ninterface VideoProviderProps {\r\n options?: ConnectOptions;\r\n onError: ErrorCallback;\r\n onDisconnect?: Callback;\r\n children: ReactNode;\r\n}\r\n\r\nexport function VideoProvider({\r\n options,\r\n children,\r\n onError = () => {},\r\n onDisconnect = () => {},\r\n}: VideoProviderProps) {\r\n const onErrorCallback = (error: TwilioError) => {\r\n logger.logError(`ERROR: ${error.message}: ${error}` as any);\r\n onError(error);\r\n };\r\n\r\n const {\r\n localTracks,\r\n getLocalVideoTrack,\r\n getLocalAudioTrack,\r\n isAcquiringLocalTracks,\r\n removeLocalVideoTrack,\r\n removeLocalAudioTrack,\r\n getAudioAndVideoTracks,\r\n } = useLocalTracks();\r\n const { room, isConnecting, connect } = useRoom(\r\n localTracks,\r\n onErrorCallback,\r\n options\r\n );\r\n\r\n // Register onError and onDisconnect callback functions.\r\n useHandleRoomDisconnectionErrors(room, onError);\r\n useHandleTrackPublicationFailed(room, onError);\r\n useHandleOnDisconnect(room, onDisconnect);\r\n const [isSharingScreen, toggleScreenShare] = useScreenShareToggle(\r\n room,\r\n onError\r\n );\r\n const isLocalAudioPausedRef = useRef(false);\r\n const isLocalVideoPausedRef = useRef(false);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n {/* \r\n The AttachVisibilityHandler component is using the useLocalVideoToggle hook\r\n which must be used within the VideoContext Provider.\r\n */}\r\n \r\n \r\n );\r\n}\r\n","import {\r\n DEFAULT_VIDEO_CONSTRAINTS,\r\n SELECTED_AUDIO_INPUT_KEY,\r\n SELECTED_VIDEO_INPUT_KEY,\r\n} from '../../../../constants';\r\nimport { useCallback, useState } from 'react';\r\nimport Video, {\r\n LocalVideoTrack,\r\n LocalAudioTrack,\r\n CreateLocalTrackOptions,\r\n} from 'twilio-video';\r\nimport {\r\n useAudioInputDevices,\r\n useVideoInputDevices,\r\n} from '../../../hooks/deviceHooks/deviceHooks';\r\n\r\nexport default function useLocalTracks() {\r\n const [audioTrack, setAudioTrack] = useState();\r\n const [videoTrack, setVideoTrack] = useState();\r\n const [isAcquiringLocalTracks, setIsAcquiringLocalTracks] = useState(false);\r\n\r\n const localAudioDevices = useAudioInputDevices();\r\n const localVideoDevices = useVideoInputDevices();\r\n\r\n const hasAudio = localAudioDevices.length > 0;\r\n const hasVideo = localVideoDevices.length > 0;\r\n\r\n const getLocalAudioTrack = useCallback((deviceId?: string) => {\r\n const options: CreateLocalTrackOptions = {};\r\n\r\n if (deviceId) {\r\n options.deviceId = { exact: deviceId };\r\n }\r\n\r\n return Video.createLocalAudioTrack(options).then((newTrack) => {\r\n setAudioTrack(newTrack);\r\n return newTrack;\r\n });\r\n }, []);\r\n\r\n const getLocalVideoTrack = useCallback(\r\n (newOptions?: CreateLocalTrackOptions) => {\r\n const options: CreateLocalTrackOptions = {\r\n ...(DEFAULT_VIDEO_CONSTRAINTS as {}),\r\n name: `camera-${Date.now()}`,\r\n ...newOptions,\r\n };\r\n\r\n return Video.createLocalVideoTrack(options).then((newTrack) => {\r\n setVideoTrack(newTrack);\r\n return newTrack;\r\n });\r\n },\r\n []\r\n );\r\n\r\n const removeLocalVideoTrack = useCallback(() => {\r\n if (videoTrack) {\r\n videoTrack.stop();\r\n setVideoTrack(undefined);\r\n }\r\n }, [videoTrack]);\r\n\r\n const removeLocalAudioTrack = useCallback(() => {\r\n if (audioTrack) {\r\n audioTrack.stop();\r\n setAudioTrack(undefined);\r\n }\r\n }, [audioTrack]);\r\n\r\n const getAudioAndVideoTracks = useCallback(() => {\r\n if (!hasAudio && !hasVideo) return Promise.resolve();\r\n if (isAcquiringLocalTracks || audioTrack || videoTrack)\r\n return Promise.resolve();\r\n\r\n setIsAcquiringLocalTracks(true);\r\n\r\n const selectedAudioDeviceId = window.localStorage.getItem(\r\n SELECTED_AUDIO_INPUT_KEY\r\n );\r\n const selectedVideoDeviceId = window.localStorage.getItem(\r\n SELECTED_VIDEO_INPUT_KEY\r\n );\r\n\r\n const hasSelectedAudioDevice = localAudioDevices.some(\r\n (device) =>\r\n selectedAudioDeviceId &&\r\n device.deviceId === selectedAudioDeviceId\r\n );\r\n const hasSelectedVideoDevice = localVideoDevices.some(\r\n (device) =>\r\n selectedVideoDeviceId &&\r\n device.deviceId === selectedVideoDeviceId\r\n );\r\n\r\n const localTrackConstraints = {\r\n video: hasVideo && {\r\n ...(DEFAULT_VIDEO_CONSTRAINTS as {}),\r\n name: `camera-${Date.now()}`,\r\n ...(hasSelectedVideoDevice && {\r\n deviceId: { exact: selectedVideoDeviceId! },\r\n }),\r\n },\r\n audio: hasSelectedAudioDevice\r\n ? { deviceId: { exact: selectedAudioDeviceId! } }\r\n : hasAudio,\r\n };\r\n\r\n return Video.createLocalTracks(localTrackConstraints)\r\n .then((tracks) => {\r\n const videoTrack = tracks.find(\r\n (track) => track.kind === 'video'\r\n );\r\n const audioTrack = tracks.find(\r\n (track) => track.kind === 'audio'\r\n );\r\n if (videoTrack) {\r\n setVideoTrack(videoTrack as LocalVideoTrack);\r\n }\r\n if (audioTrack) {\r\n setAudioTrack(audioTrack as LocalAudioTrack);\r\n }\r\n })\r\n .finally(() => setIsAcquiringLocalTracks(false));\r\n }, [\r\n hasAudio,\r\n hasVideo,\r\n audioTrack,\r\n videoTrack,\r\n localAudioDevices,\r\n localVideoDevices,\r\n isAcquiringLocalTracks,\r\n ]);\r\n\r\n const localTracks = [audioTrack, videoTrack].filter(\r\n (track) => track !== undefined\r\n ) as (LocalAudioTrack | LocalVideoTrack)[];\r\n\r\n return {\r\n localTracks,\r\n getLocalVideoTrack,\r\n getLocalAudioTrack,\r\n isAcquiringLocalTracks,\r\n removeLocalVideoTrack,\r\n removeLocalAudioTrack,\r\n getAudioAndVideoTracks,\r\n };\r\n}\r\n","import { Room, TwilioError } from 'twilio-video';\r\nimport { useEffect } from 'react';\r\n\r\nimport { Callback } from '../../../types';\r\n\r\nexport default function useHandleRoomDisconnectionErrors(room: Room, onError: Callback) {\r\n useEffect(() => {\r\n const onDisconnected = (room: Room, error: TwilioError) => {\r\n if (error) {\r\n onError(error);\r\n }\r\n };\r\n\r\n room.on('disconnected', onDisconnected);\r\n return () => {\r\n room.off('disconnected', onDisconnected);\r\n };\r\n }, [room, onError]);\r\n}\r\n","import { Room } from 'twilio-video';\r\nimport { useEffect } from 'react';\r\n\r\nimport { Callback } from '../../../types';\r\n\r\nexport default function useHandleTrackPublicationFailed(room: Room, onError: Callback) {\r\n const { localParticipant } = room;\r\n useEffect(() => {\r\n if (localParticipant) {\r\n localParticipant.on('trackPublicationFailed', onError);\r\n return () => {\r\n localParticipant.off('trackPublicationFailed', onError);\r\n };\r\n }\r\n }, [localParticipant, onError]);\r\n}\r\n","import { useEffect } from 'react';\r\nimport { Room } from 'twilio-video';\r\nimport { Callback } from '../../../types';\r\n\r\nexport default function useHandleOnDisconnect(room: Room, onDisconnect: Callback) {\r\n useEffect(() => {\r\n room.on('disconnected', onDisconnect);\r\n return () => {\r\n room.off('disconnected', onDisconnect);\r\n };\r\n }, [room, onDisconnect]);\r\n}\r\n","import { useState, useCallback, useRef } from 'react';\r\nimport { LogLevels, Track, Room } from 'twilio-video';\r\nimport { ErrorCallback } from '../../../types';\r\n\r\ninterface MediaStreamTrackPublishOptions {\r\n name?: string;\r\n priority: Track.Priority;\r\n logLevel: LogLevels;\r\n}\r\n\r\nexport default function useScreenShareToggle(room: Room, onError: ErrorCallback) {\r\n const [isSharing, setIsSharing] = useState(false);\r\n const stopScreenShareRef = useRef<() => void>(null!);\r\n\r\n const shareScreen = useCallback(() => {\r\n navigator.mediaDevices\r\n .getDisplayMedia({\r\n audio: false,\r\n video: {\r\n frameRate: 10,\r\n height: 1080,\r\n width: 1920,\r\n },\r\n })\r\n .then(stream => {\r\n const track = stream.getTracks()[0];\r\n\r\n // All video tracks are published with 'low' priority. This works because the video\r\n // track that is displayed in the 'MainParticipant' component will have it's priority\r\n // set to 'high' via track.setPriority()\r\n room.localParticipant\r\n .publishTrack(track, {\r\n name: 'screen', // Tracks can be named to easily find them later\r\n priority: 'low', // Priority is set to high by the subscriber when the video track is rendered\r\n } as MediaStreamTrackPublishOptions)\r\n .then(trackPublication => {\r\n stopScreenShareRef.current = () => {\r\n room.localParticipant.unpublishTrack(track);\r\n // TODO: remove this if the SDK is updated to emit this event\r\n room.localParticipant.emit('trackUnpublished', trackPublication);\r\n track.stop();\r\n setIsSharing(false);\r\n };\r\n\r\n track.onended = stopScreenShareRef.current;\r\n setIsSharing(true);\r\n })\r\n .catch(onError);\r\n })\r\n .catch(error => {\r\n // Don't display an error if the user closes the screen share dialog\r\n if (error.name !== 'AbortError' && error.name !== 'NotAllowedError') {\r\n onError(error);\r\n }\r\n });\r\n }, [room, onError]);\r\n\r\n const toggleScreenShare = useCallback(() => {\r\n !isSharing ? shareScreen() : stopScreenShareRef.current();\r\n }, [isSharing, shareScreen, stopScreenShareRef]);\r\n\r\n return [isSharing, toggleScreenShare] as const;\r\n}\r\n","import { createMuiTheme } from '@material-ui/core';\r\n\r\ndeclare module '@material-ui/core/styles/createMuiTheme' {\r\n interface Theme {\r\n sidebarWidth: number;\r\n sidebarMobileHeight: number;\r\n brand: string;\r\n footerHeight: number;\r\n mobileTopBarHeight: number;\r\n mobileFooterHeight: number;\r\n sidebarMobilePadding: number;\r\n participantBorderWidth: number;\r\n }\r\n\r\n // allow configuration using `createMuiTheme`\r\n interface ThemeOptions {\r\n sidebarWidth?: number;\r\n sidebarMobileHeight?: number;\r\n brand: string;\r\n footerHeight: number;\r\n mobileTopBarHeight: number;\r\n mobileFooterHeight: number;\r\n sidebarMobilePadding: number;\r\n participantBorderWidth: number;\r\n }\r\n}\r\n\r\nconst defaultTheme = createMuiTheme();\r\n\r\nexport default createMuiTheme({\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n 'html, body, #root': {\r\n height: '100%',\r\n },\r\n },\r\n },\r\n MuiButton: {\r\n root: {\r\n borderRadius: '4px',\r\n textTransform: 'none',\r\n color: 'rgb(40, 42, 43)',\r\n fontSize: '0.9rem',\r\n transition: defaultTheme.transitions.create(['background-color', 'box-shadow', 'border', 'color'], {\r\n duration: defaultTheme.transitions.duration.short,\r\n }),\r\n },\r\n text: {\r\n padding: '6px 14px',\r\n },\r\n contained: {\r\n boxShadow: 'none',\r\n '&:hover': {\r\n boxShadow: 'none',\r\n },\r\n },\r\n outlinedPrimary: {\r\n border: '2px solid #027AC5',\r\n '&:hover': {\r\n border: '2px solid rgb(1, 85, 137)',\r\n },\r\n },\r\n startIcon: {\r\n marginRight: '6px',\r\n },\r\n },\r\n MuiTypography: {\r\n body1: {\r\n color: 'rgb(40, 42, 43)',\r\n fontSize: '0.9rem',\r\n },\r\n },\r\n MuiInputBase: {\r\n root: {\r\n fontSize: '0.9rem',\r\n },\r\n },\r\n MuiSelect: {\r\n root: {\r\n padding: '0.85em',\r\n },\r\n },\r\n MuiDialogActions: {\r\n root: {\r\n padding: '16px',\r\n },\r\n },\r\n MuiTextField: {\r\n root: {\r\n color: 'rgb(40, 42, 43)',\r\n },\r\n },\r\n MuiInputLabel: {\r\n root: {\r\n color: 'rgb(40, 42, 43)',\r\n fontSize: '1.1rem',\r\n marginBottom: '0.2em',\r\n fontWeight: 500,\r\n },\r\n },\r\n MuiOutlinedInput: {\r\n notchedOutline: {\r\n borderColor: 'rgb(136, 140, 142)',\r\n },\r\n },\r\n },\r\n typography: {\r\n fontFamily: 'Inter, sans-serif',\r\n },\r\n palette: {\r\n primary: {\r\n main: '#027AC5',\r\n },\r\n },\r\n brand: '#E22525',\r\n footerHeight: 72,\r\n mobileFooterHeight: 56,\r\n sidebarWidth: 355,\r\n sidebarMobileHeight: 90,\r\n sidebarMobilePadding: 8,\r\n participantBorderWidth: 2,\r\n mobileTopBarHeight: 52,\r\n});\r\n","import React, { CSSProperties, useState } from 'react';\r\nimport { HashiSpinner } from './HashiSpinner';\r\nimport styled from 'styled-components';\r\nimport IHasChildren from './propInterfaces/IHasChildren';\r\nimport { HashiFilledBorderButton } from './HashiBorderButton';\r\nimport { useIsMounted } from '../hooks/useIsMounted';\r\n\r\nvar buttonHeight: number | undefined;\r\nvar buttonWidth: number | undefined;\r\nvar spinnerSize: number | undefined;\r\nvar fontSize = 16;\r\n\r\nexport const HashiAsyncButton = (props: IHashiAsyncTextButton) => {\r\n fontSize = props.fontSize ?? fontSize;\r\n const [isLoading, setIsLoading] = useState();\r\n const isMounted = useIsMounted();\r\n\r\n const loadDataAsync = async () => {\r\n setIsLoading(true);\r\n await props.onPress();\r\n if (isMounted.current) {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const setLoadingSize = (element: HTMLDivElement | null) => {\r\n spinnerSize = fontSize + 3;\r\n //We need to wait so everything is layed out before we get the sizes\r\n setTimeout(() => {\r\n buttonHeight = element?.clientHeight;\r\n buttonWidth = element?.clientWidth;\r\n }, 100);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n props.children\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst Container = styled.div``;\r\n\r\nconst LoadingContainer = styled.div`\r\n text-align: center;\r\n`;\r\n\r\ninterface IHashiAsyncTextButton extends IHasChildren {\r\n onPress: () => Promise;\r\n fontSize?: number;\r\n ContainerStyle?: CSSProperties;\r\n}\r\n","import stringsJson from './strings.json';\r\nimport touchStrings from './touchMDStrings.json';\r\n\r\n//TODO: Get Product Switching setup\r\nexport const ProductStrings = touchStrings;\r\nexport const Strings = stringsJson;\r\n","import styled from 'styled-components';\r\n\r\nexport const HashiFlexRowContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n width: 100%;\r\n`;\r\n\r\nexport const HashiFlexColumnContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const HashiFlexAbsoluteCenterContainer = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n margin: auto;\r\n height: 100%;\r\n width: 100%;\r\n overflow: hidden;\r\n`;\r\n","import React, { useRef, useState } from 'react';\r\nimport styled from 'styled-components';\r\n\r\nexport const HashiTextInput = (props: IHashiTextInputProps) => {\r\n const input = useRef(null);\r\n const [value, setValue] = useState(props.value ?? '');\r\n\r\n const setFocusToInput = () => {\r\n input.current?.focus();\r\n };\r\n\r\n const onChangeEvent = (event: React.ChangeEvent) => {\r\n setValue(event.target.value);\r\n if (props.onChange) {\r\n props.onChange(event.target.value);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.label}\r\n \r\n \r\n );\r\n};\r\n\r\nconst TransparentInput = styled.input`\r\n flex: 1;\r\n --webkit-appearance: none;\r\n border: none;\r\n background-image: none;\r\n background-color: transparent;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n box-shadow: none;\r\n font-size: 16px;\r\n line-height: 19px;\r\n color: #ffffff;\r\n margin-left: 10px;\r\n\r\n @media (max-width: 380px) {\r\n font-size: 14px;\r\n line-height: 16px;\r\n }\r\n`;\r\n\r\nconst InputLabel = styled.div`\r\n font-size: 16px;\r\n line-height: 19px;\r\n color: rgba(255, 255, 255, 0.64);\r\n\r\n @media (max-width: 380px) {\r\n font-size: 14px;\r\n line-height: 16px;\r\n }\r\n`;\r\n\r\nconst InputContainer = styled.div`\r\n height: 44px;\r\n background: rgba(255, 255, 255, 0.1);\r\n border: 1px solid rgba(255, 255, 255, 0.2);\r\n box-sizing: border-box;\r\n border-radius: 6px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n padding: 0px 12px;\r\n margin-bottom: 10px;\r\n\r\n input:nth-of-type(1) {\r\n min-width: 0;\r\n }\r\n\r\n :focus-within {\r\n border: 1px solid #ffffff;\r\n }\r\n\r\n @media (max-width: 380px) {\r\n height: 40px;\r\n }\r\n`;\r\n\r\ninterface IHashiTextInputProps {\r\n label: string;\r\n value?: string;\r\n onChange?: (value: string) => any;\r\n}\r\n","import { useContext } from 'react';\r\nimport { AppViewModelContext } from '.';\r\n\r\nexport const useAppViewModel = () => {\r\n const context = useContext(AppViewModelContext);\r\n if (!context) {\r\n throw new Error(\r\n 'useAppViewModel must be used within a AppViewModelArea'\r\n );\r\n }\r\n return context;\r\n};\r\n","import { Strings } from '../assets/strings';\r\nimport { httpService } from '../services/HttpService';\r\nimport { IAppViewModelContext } from '../ViewModels/AppViewModelArea';\r\n\r\nconst localStorageKey = 'room';\r\nconst getRoomRoute = 'api/Rooms/RoomParticipantAccess';\r\nclass RoomProvider implements IRoomProvider {\r\n public async getRoomTokenFromParticipantCode(\r\n roomCode: string\r\n ): Promise {\r\n return await httpService.postAsync(\r\n getRoomRoute,\r\n undefined,\r\n roomCode\r\n );\r\n }\r\n\r\n public async loadRoomDetailsAsync(\r\n roomCode: string | undefined,\r\n appViewModel: IAppViewModelContext\r\n ) {\r\n if (!roomCode || roomCode.length < 9) {\r\n throw new Error(Strings.RoomCodeRequired);\r\n }\r\n\r\n let roomDetails = await this.getRoomTokenFromParticipantCode(roomCode);\r\n\r\n if (!roomDetails) {\r\n appViewModel.setRoomCode(undefined);\r\n throw new Error(Strings.UnableToFindRoom);\r\n }\r\n localStorage.setItem(localStorageKey, roomCode);\r\n\r\n appViewModel.setCompanyName(roomDetails.CompanyName);\r\n appViewModel.setCustomerFirstName(roomDetails.CustomerFirstName);\r\n appViewModel.setCustomerLastName(roomDetails.CustomerLastName);\r\n appViewModel.setJwt(roomDetails.Jwt);\r\n appViewModel.setIsRecordingEnabled(roomDetails.IsRecordingEnabled);\r\n }\r\n\r\n public GetLocalStorageRoom() {\r\n return localStorage.getItem(localStorageKey);\r\n }\r\n}\r\n\r\ninterface IRoomProvider {\r\n getRoomTokenFromParticipantCode(\r\n roomCode: string\r\n ): Promise;\r\n loadRoomDetailsAsync(\r\n roomCode: string,\r\n appViewModel: IAppViewModelContext\r\n ): Promise;\r\n}\r\ninterface IRoomDetailsDtoIn {\r\n Jwt: string;\r\n CompanyName: string;\r\n CustomerFirstName: string;\r\n CustomerLastName: string;\r\n IsRecordingEnabled: boolean;\r\n}\r\n\r\nexport const roomProvider = new RoomProvider();\r\n","import { faSpinner } from '@fortawesome/pro-regular-svg-icons';\r\nimport React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\r\nimport colors from '../assets/colors.json';\r\n\r\nconst defaultProps: IHashiSpinnerProps = {\r\n size: 40,\r\n color: colors.PrimaryTitleText,\r\n};\r\nexport const HashiSpinner = (props: IHashiSpinnerProps) => {\r\n props = { ...defaultProps, ...props };\r\n\r\n const styles: CSSProperties = {\r\n fontSize: props.size,\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface IHashiSpinnerProps {\r\n size?: number;\r\n color?: string;\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const HashiCleanButton = (props: IHashiButtonProps) => {\r\n const showButton = props.visible ?? true;\r\n\r\n const onPress = () => {\r\n if (props.disabled) {\r\n return;\r\n }\r\n if (props.onPress) {\r\n props.onPress();\r\n }\r\n };\r\n return (\r\n \r\n {showButton && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst ButtonWrapper = styled.div`\r\n cursor: pointer;\r\n`;\r\nconst Button = styled.div`\r\n :hover {\r\n filter: brightness(90%);\r\n }\r\n\r\n :active {\r\n filter: brightness(70%);\r\n }\r\n`;\r\n\r\nexport interface IHashiButtonProps {\r\n style?: React.CSSProperties;\r\n visible?: boolean;\r\n children: JSX.Element;\r\n onPress?: () => any;\r\n disabled?: boolean;\r\n}\r\n","import styled from 'styled-components';\r\nimport { HashiCleanButton } from './HashiCleanButton';\r\nimport IHasChildren from './propInterfaces/IHasChildren';\r\nimport colors from '../assets/colors.json';\r\nimport IHasStyle from './propInterfaces/IHasStyle';\r\nimport { CSSProperties } from 'react';\r\n\r\nconst defaultProps = {\r\n fontSize: 16,\r\n};\r\nexport const HashiBorderButton = (props: IHashiBorderButtonProps) => {\r\n props = { ...defaultProps, ...props };\r\n props.ContainerStyle = { ...props.ContainerStyle, display: 'inline-block' };\r\n\r\n return (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const HashiFilledBorderButton = (props: IHashiBorderButtonProps) => {\r\n const style = {\r\n ...props.style,\r\n background: colors.PrimaryTextButtonBackground,\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nconst BorderButtonContainer = styled.div``;\r\n\r\nconst BorderButton = styled.div`\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n display: inline-block;\r\n color: ${colors.PrimaryTitleText};\r\n border-radius: 6px;\r\n padding: 11px 19px;\r\n font-weight: 500;\r\n font-size: ${(props: IProps) => props.fontSize}px;\r\n line-height: 19px;\r\n border: 1px solid ${colors.PrimaryTextButtonBackground};\r\n box-sizing: border-box;\r\n`;\r\n\r\ninterface IProps {\r\n fontSize: number;\r\n}\r\n\r\ninterface IHashiBorderButtonProps extends IHasChildren, IHasStyle {\r\n onPress?: () => void;\r\n fontSize?: number;\r\n ContainerStyle?: CSSProperties;\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { Strings, ProductStrings } from '../assets/strings';\r\nimport colors from '../assets/colors.json';\r\nimport { HashiFlexAbsoluteCenterContainer } from '../components/HashiContentContainers';\r\nimport { HashiTextInput } from '../components/HashiTextInput';\r\nimport { useRootNavigation } from '../NavigationControllers/useRootNavigation';\r\nimport { useAppViewModel } from '../ViewModels/AppViewModelArea/useAppViewModel';\r\nimport { roomProvider } from '../Provider/RoomProvider';\r\nimport { HttpError, logger } from '../services';\r\nimport { HashiAsyncButton } from '../components/HashiAsyncButton';\r\n\r\nexport const WelcomeView = () => {\r\n const appViewModel = useAppViewModel();\r\n const { goToQuickWelcome } = useRootNavigation();\r\n\r\n const goToNext = async () => {\r\n if (!appViewModel.roomCode) {\r\n alert(Strings.RoomCodeRequired);\r\n return;\r\n }\r\n\r\n let formattedCode = appViewModel.roomCode.replaceAll(' ', '');\r\n\r\n try {\r\n await roomProvider.loadRoomDetailsAsync(\r\n formattedCode,\r\n appViewModel\r\n );\r\n goToQuickWelcome();\r\n } catch (ex) {\r\n logger.logError(ex);\r\n logger.logMessage('Failed to get room details');\r\n if (!(ex instanceof Error)) {\r\n alert(Strings.UnknownErrorOccured);\r\n return;\r\n }\r\n\r\n if (ex.message === Strings.RoomCodeRequired) {\r\n alert(Strings.RoomCodeRequired);\r\n } else if (\r\n ex.message === Strings.UnableToFindRoom ||\r\n (ex instanceof HttpError && ex.statusType === 'ClientError')\r\n ) {\r\n alert(Strings.UnableToFindRoom);\r\n } else if (\r\n ex.message === Strings.FoundSessionButErrorOccured &&\r\n !(ex instanceof HttpError)\r\n ) {\r\n alert(Strings.FoundSessionButErrorOccured);\r\n } else {\r\n alert(Strings.UnknownErrorOccured);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {Strings.WelcomeText}\r\n \r\n {ProductStrings.ProductTitle}\r\n \r\n \r\n \r\n {Strings.JoinButtonLabel}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst LoginContainer = styled.div`\r\n padding: 20px;\r\n`;\r\n\r\nconst WelcomeText = styled.div`\r\n font-size: 48px;\r\n line-height: 58px;\r\n font-weight: 300;\r\n margin-bottom: 8px;\r\n color: ${colors.PrimaryTitleText};\r\n\r\n @media (max-width: 380px) {\r\n font-size: 32px;\r\n line-height: 38px;\r\n }\r\n`;\r\n\r\nconst ProductTitleText = styled.div`\r\n font-weight: 200;\r\n font-size: 18px;\r\n line-height: 22px;\r\n margin-bottom: 36px;\r\n color: ${colors.PrimaryTitleText};\r\n opacity: 0.64;\r\n\r\n @media (max-width: 380px) {\r\n font-size: 16px;\r\n line-height: 20px;\r\n }\r\n`;\r\n","import React from 'react';\r\n\r\nexport default function AvatarIcon() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { useState, useEffect } from 'react';\r\nimport { AudioTrack, VideoTrack } from 'twilio-video';\r\n\r\n/*\r\n * This hook allows components to reliably use the 'mediaStreamTrack' property of\r\n * an AudioTrack or a VideoTrack. Whenever 'localTrack.restart(...)' is called, it\r\n * will replace the mediaStreamTrack property of the localTrack, but the localTrack\r\n * object will stay the same. Therefore this hook is needed in order for components\r\n * to rerender in response to the mediaStreamTrack changing.\r\n */\r\nexport default function useMediaStreamTrack(track?: AudioTrack | VideoTrack) {\r\n const [mediaStreamTrack, setMediaStreamTrack] = useState(track?.mediaStreamTrack);\r\n\r\n useEffect(() => {\r\n setMediaStreamTrack(track?.mediaStreamTrack);\r\n\r\n if (track) {\r\n const handleStarted = () => setMediaStreamTrack(track.mediaStreamTrack);\r\n track.on('started', handleStarted);\r\n return () => {\r\n track.off('started', handleStarted);\r\n };\r\n }\r\n }, [track]);\r\n\r\n return mediaStreamTrack;\r\n}\r\n","import React, { useRef, useEffect, CSSProperties } from 'react';\r\nimport { IVideoTrack } from '../../types';\r\nimport { styled } from '@material-ui/core/styles';\r\nimport { Track } from 'twilio-video';\r\nimport useMediaStreamTrack from '../../hooks/useMediaStreamTrack/useMediaStreamTrack';\r\n\r\nconst Video = styled('video')({\r\n width: '100%',\r\n height: '100%',\r\n});\r\n\r\ninterface VideoTrackProps {\r\n track: IVideoTrack;\r\n isLocal?: boolean;\r\n priority?: Track.Priority | null;\r\n}\r\n\r\nexport default function VideoTrack({\r\n track,\r\n isLocal,\r\n priority,\r\n}: VideoTrackProps) {\r\n const ref = useRef(null!);\r\n const mediaStreamTrack = useMediaStreamTrack(track);\r\n\r\n useEffect(() => {\r\n const el = ref.current;\r\n el.muted = true;\r\n if (track.setPriority && priority) {\r\n track.setPriority(priority);\r\n }\r\n track.attach(el);\r\n return () => {\r\n track.detach(el);\r\n if (track.setPriority && priority) {\r\n // Passing `null` to setPriority will set the track's priority to that which it was published with.\r\n\r\n //TODO: Did I break this?\r\n track.setPriority(priority);\r\n }\r\n };\r\n }, [track, priority]);\r\n\r\n // The local video track is mirrored if it is not facing the environment.\r\n const isFrontFacing =\r\n mediaStreamTrack?.getSettings().facingMode !== 'environment';\r\n const style: CSSProperties = {\r\n transform: isLocal && isFrontFacing ? 'rotateY(180deg)' : '',\r\n objectFit: 'contain',\r\n borderRadius: isLocal ? '16px' : '',\r\n };\r\n\r\n return