@werxt/livekit-components-react 2.9.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +36 -0
- package/dist/assets/icons/CameraDisabledIcon.d.ts +11 -0
- package/dist/assets/icons/CameraDisabledIcon.d.ts.map +1 -0
- package/dist/assets/icons/CameraIcon.d.ts +11 -0
- package/dist/assets/icons/CameraIcon.d.ts.map +1 -0
- package/dist/assets/icons/ChatCloseIcon.d.ts +11 -0
- package/dist/assets/icons/ChatCloseIcon.d.ts.map +1 -0
- package/dist/assets/icons/ChatIcon.d.ts +11 -0
- package/dist/assets/icons/ChatIcon.d.ts.map +1 -0
- package/dist/assets/icons/Chevron.d.ts +11 -0
- package/dist/assets/icons/Chevron.d.ts.map +1 -0
- package/dist/assets/icons/FocusToggleIcon.d.ts +11 -0
- package/dist/assets/icons/FocusToggleIcon.d.ts.map +1 -0
- package/dist/assets/icons/GearIcon.d.ts +11 -0
- package/dist/assets/icons/GearIcon.d.ts.map +1 -0
- package/dist/assets/icons/LeaveIcon.d.ts +11 -0
- package/dist/assets/icons/LeaveIcon.d.ts.map +1 -0
- package/dist/assets/icons/LockLockedIcon.d.ts +11 -0
- package/dist/assets/icons/LockLockedIcon.d.ts.map +1 -0
- package/dist/assets/icons/MicDisabledIcon.d.ts +11 -0
- package/dist/assets/icons/MicDisabledIcon.d.ts.map +1 -0
- package/dist/assets/icons/MicIcon.d.ts +11 -0
- package/dist/assets/icons/MicIcon.d.ts.map +1 -0
- package/dist/assets/icons/QualityExcellentIcon.d.ts +11 -0
- package/dist/assets/icons/QualityExcellentIcon.d.ts.map +1 -0
- package/dist/assets/icons/QualityGoodIcon.d.ts +11 -0
- package/dist/assets/icons/QualityGoodIcon.d.ts.map +1 -0
- package/dist/assets/icons/QualityPoorIcon.d.ts +11 -0
- package/dist/assets/icons/QualityPoorIcon.d.ts.map +1 -0
- package/dist/assets/icons/QualityUnknownIcon.d.ts +11 -0
- package/dist/assets/icons/QualityUnknownIcon.d.ts.map +1 -0
- package/dist/assets/icons/ScreenShareIcon.d.ts +11 -0
- package/dist/assets/icons/ScreenShareIcon.d.ts.map +1 -0
- package/dist/assets/icons/ScreenShareStopIcon.d.ts +11 -0
- package/dist/assets/icons/ScreenShareStopIcon.d.ts.map +1 -0
- package/dist/assets/icons/SpinnerIcon.d.ts +11 -0
- package/dist/assets/icons/SpinnerIcon.d.ts.map +1 -0
- package/dist/assets/icons/UnfocusToggleIcon.d.ts +11 -0
- package/dist/assets/icons/UnfocusToggleIcon.d.ts.map +1 -0
- package/dist/assets/icons/index.d.ts +20 -0
- package/dist/assets/icons/index.d.ts.map +1 -0
- package/dist/assets/icons/util.d.ts +11 -0
- package/dist/assets/icons/util.d.ts.map +1 -0
- package/dist/assets/images/ParticipantPlaceholder.d.ts +11 -0
- package/dist/assets/images/ParticipantPlaceholder.d.ts.map +1 -0
- package/dist/assets/images/index.d.ts +2 -0
- package/dist/assets/images/index.d.ts.map +1 -0
- package/dist/components/ChatEntry.d.ts +35 -0
- package/dist/components/ChatEntry.d.ts.map +1 -0
- package/dist/components/ConnectionState.d.ts +23 -0
- package/dist/components/ConnectionState.d.ts.map +1 -0
- package/dist/components/ConnectionStateToast.d.ts +13 -0
- package/dist/components/ConnectionStateToast.d.ts.map +1 -0
- package/dist/components/LiveKitRoom.d.ts +92 -0
- package/dist/components/LiveKitRoom.d.ts.map +1 -0
- package/dist/components/ParticipantLoop.d.ts +28 -0
- package/dist/components/ParticipantLoop.d.ts.map +1 -0
- package/dist/components/RoomAudioRenderer.d.ts +29 -0
- package/dist/components/RoomAudioRenderer.d.ts.map +1 -0
- package/dist/components/RoomName.d.ts +20 -0
- package/dist/components/RoomName.d.ts.map +1 -0
- package/dist/components/SessionProvider.d.ts +13 -0
- package/dist/components/SessionProvider.d.ts.map +1 -0
- package/dist/components/Toast.d.ts +14 -0
- package/dist/components/Toast.d.ts.map +1 -0
- package/dist/components/TrackLoop.d.ts +26 -0
- package/dist/components/TrackLoop.d.ts.map +1 -0
- package/dist/components/controls/ChatToggle.d.ts +19 -0
- package/dist/components/controls/ChatToggle.d.ts.map +1 -0
- package/dist/components/controls/ClearPinButton.d.ts +20 -0
- package/dist/components/controls/ClearPinButton.d.ts.map +1 -0
- package/dist/components/controls/DisconnectButton.d.ts +19 -0
- package/dist/components/controls/DisconnectButton.d.ts.map +1 -0
- package/dist/components/controls/FocusToggle.d.ts +21 -0
- package/dist/components/controls/FocusToggle.d.ts.map +1 -0
- package/dist/components/controls/MediaDeviceSelect.d.ts +40 -0
- package/dist/components/controls/MediaDeviceSelect.d.ts.map +1 -0
- package/dist/components/controls/PaginationControl.d.ts +9 -0
- package/dist/components/controls/PaginationControl.d.ts.map +1 -0
- package/dist/components/controls/PaginationIndicator.d.ts +7 -0
- package/dist/components/controls/PaginationIndicator.d.ts.map +1 -0
- package/dist/components/controls/SettingsMenuToggle.d.ts +13 -0
- package/dist/components/controls/SettingsMenuToggle.d.ts.map +1 -0
- package/dist/components/controls/StartAudio.d.ts +24 -0
- package/dist/components/controls/StartAudio.d.ts.map +1 -0
- package/dist/components/controls/StartMediaButton.d.ts +22 -0
- package/dist/components/controls/StartMediaButton.d.ts.map +1 -0
- package/dist/components/controls/TrackToggle.d.ts +32 -0
- package/dist/components/controls/TrackToggle.d.ts.map +1 -0
- package/dist/components/index.d.ts +30 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/layout/CarouselLayout.d.ts +27 -0
- package/dist/components/layout/CarouselLayout.d.ts.map +1 -0
- package/dist/components/layout/FocusLayout.d.ts +25 -0
- package/dist/components/layout/FocusLayout.d.ts.map +1 -0
- package/dist/components/layout/GridLayout.d.ts +26 -0
- package/dist/components/layout/GridLayout.d.ts.map +1 -0
- package/dist/components/layout/LayoutContextProvider.d.ts +12 -0
- package/dist/components/layout/LayoutContextProvider.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +4 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/participant/AudioTrack.d.ts +33 -0
- package/dist/components/participant/AudioTrack.d.ts.map +1 -0
- package/dist/components/participant/AudioVisualizer.d.ts +22 -0
- package/dist/components/participant/AudioVisualizer.d.ts.map +1 -0
- package/dist/components/participant/BarVisualizer.d.ts +77 -0
- package/dist/components/participant/BarVisualizer.d.ts.map +1 -0
- package/dist/components/participant/ConnectionQualityIndicator.d.ts +16 -0
- package/dist/components/participant/ConnectionQualityIndicator.d.ts.map +1 -0
- package/dist/components/participant/ParticipantAudioTile.d.ts +14 -0
- package/dist/components/participant/ParticipantAudioTile.d.ts.map +1 -0
- package/dist/components/participant/ParticipantName.d.ts +17 -0
- package/dist/components/participant/ParticipantName.d.ts.map +1 -0
- package/dist/components/participant/ParticipantTile.d.ts +49 -0
- package/dist/components/participant/ParticipantTile.d.ts.map +1 -0
- package/dist/components/participant/TrackMutedIndicator.d.ts +19 -0
- package/dist/components/participant/TrackMutedIndicator.d.ts.map +1 -0
- package/dist/components/participant/VideoTrack.d.ts +23 -0
- package/dist/components/participant/VideoTrack.d.ts.map +1 -0
- package/dist/components/participant/animationSequences/connectingSequence.d.ts +2 -0
- package/dist/components/participant/animationSequences/connectingSequence.d.ts.map +1 -0
- package/dist/components/participant/animationSequences/listeningSequence.d.ts +2 -0
- package/dist/components/participant/animationSequences/listeningSequence.d.ts.map +1 -0
- package/dist/components/participant/animationSequences/thinkingSequence.d.ts +2 -0
- package/dist/components/participant/animationSequences/thinkingSequence.d.ts.map +1 -0
- package/dist/components/participant/animators/useBarAnimator.d.ts +3 -0
- package/dist/components/participant/animators/useBarAnimator.d.ts.map +1 -0
- package/dist/components-lNrIMTWQ.mjs +1051 -0
- package/dist/components-lNrIMTWQ.mjs.map +1 -0
- package/dist/context/chat-context.d.ts +23 -0
- package/dist/context/chat-context.d.ts.map +1 -0
- package/dist/context/feature-context.d.ts +14 -0
- package/dist/context/feature-context.d.ts.map +1 -0
- package/dist/context/index.d.ts +10 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/layout-context.d.ts +32 -0
- package/dist/context/layout-context.d.ts.map +1 -0
- package/dist/context/participant-context.d.ts +22 -0
- package/dist/context/participant-context.d.ts.map +1 -0
- package/dist/context/pin-context.d.ts +17 -0
- package/dist/context/pin-context.d.ts.map +1 -0
- package/dist/context/room-context.d.ts +22 -0
- package/dist/context/room-context.d.ts.map +1 -0
- package/dist/context/session-context.d.ts +22 -0
- package/dist/context/session-context.d.ts.map +1 -0
- package/dist/context/track-reference-context.d.ts +25 -0
- package/dist/context/track-reference-context.d.ts.map +1 -0
- package/dist/contexts-D4V9wQRc.mjs +4026 -0
- package/dist/contexts-D4V9wQRc.mjs.map +1 -0
- package/dist/hooks/cloud/krisp/useKrispNoiseFilter.d.ts +42 -0
- package/dist/hooks/cloud/krisp/useKrispNoiseFilter.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +54 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/internal/index.d.ts +10 -0
- package/dist/hooks/internal/index.d.ts.map +1 -0
- package/dist/hooks/internal/useMediaQuery.d.ts +7 -0
- package/dist/hooks/internal/useMediaQuery.d.ts.map +1 -0
- package/dist/hooks/internal/useObservableState.d.ts +6 -0
- package/dist/hooks/internal/useObservableState.d.ts.map +1 -0
- package/dist/hooks/internal/useResizeObserver.d.ts +14 -0
- package/dist/hooks/internal/useResizeObserver.d.ts.map +1 -0
- package/dist/hooks/useAgent.d.ts +219 -0
- package/dist/hooks/useAgent.d.ts.map +1 -0
- package/dist/hooks/useAudioPlayback.d.ts +15 -0
- package/dist/hooks/useAudioPlayback.d.ts.map +1 -0
- package/dist/hooks/useChat.d.ts +43 -0
- package/dist/hooks/useChat.d.ts.map +1 -0
- package/dist/hooks/useChatToggle.d.ts +21 -0
- package/dist/hooks/useChatToggle.d.ts.map +1 -0
- package/dist/hooks/useClearPinButton.d.ts +15 -0
- package/dist/hooks/useClearPinButton.d.ts.map +1 -0
- package/dist/hooks/useConnectionQualityIndicator.d.ts +20 -0
- package/dist/hooks/useConnectionQualityIndicator.d.ts.map +1 -0
- package/dist/hooks/useConnectionStatus.d.ts +12 -0
- package/dist/hooks/useConnectionStatus.d.ts.map +1 -0
- package/dist/hooks/useDataChannel.d.ts +38 -0
- package/dist/hooks/useDataChannel.d.ts.map +1 -0
- package/dist/hooks/useDisconnectButton.d.ts +21 -0
- package/dist/hooks/useDisconnectButton.d.ts.map +1 -0
- package/dist/hooks/useEvents.d.ts +9 -0
- package/dist/hooks/useEvents.d.ts.map +1 -0
- package/dist/hooks/useFacingMode.d.ts +10 -0
- package/dist/hooks/useFacingMode.d.ts.map +1 -0
- package/dist/hooks/useFocusToggle.d.ts +26 -0
- package/dist/hooks/useFocusToggle.d.ts.map +1 -0
- package/dist/hooks/useGridLayout.d.ts +27 -0
- package/dist/hooks/useGridLayout.d.ts.map +1 -0
- package/dist/hooks/useIsEncrypted.d.ts +12 -0
- package/dist/hooks/useIsEncrypted.d.ts.map +1 -0
- package/dist/hooks/useIsMuted.d.ts +22 -0
- package/dist/hooks/useIsMuted.d.ts.map +1 -0
- package/dist/hooks/useIsRecording.d.ts +11 -0
- package/dist/hooks/useIsRecording.d.ts.map +1 -0
- package/dist/hooks/useIsSpeaking.d.ts +11 -0
- package/dist/hooks/useIsSpeaking.d.ts.map +1 -0
- package/dist/hooks/useLiveKitRoom.d.ts +19 -0
- package/dist/hooks/useLiveKitRoom.d.ts.map +1 -0
- package/dist/hooks/useLocalParticipant.d.ts +29 -0
- package/dist/hooks/useLocalParticipant.d.ts.map +1 -0
- package/dist/hooks/useLocalParticipantPermissions.d.ts +12 -0
- package/dist/hooks/useLocalParticipantPermissions.d.ts.map +1 -0
- package/dist/hooks/useMediaDeviceSelect.d.ts +41 -0
- package/dist/hooks/useMediaDeviceSelect.d.ts.map +1 -0
- package/dist/hooks/useMediaDevices.d.ts +15 -0
- package/dist/hooks/useMediaDevices.d.ts.map +1 -0
- package/dist/hooks/useMediaTrackBySourceOrName.d.ts +18 -0
- package/dist/hooks/useMediaTrackBySourceOrName.d.ts.map +1 -0
- package/dist/hooks/usePagination.d.ts +24 -0
- package/dist/hooks/usePagination.d.ts.map +1 -0
- package/dist/hooks/useParticipantAttributes.d.ts +30 -0
- package/dist/hooks/useParticipantAttributes.d.ts.map +1 -0
- package/dist/hooks/useParticipantInfo.d.ts +21 -0
- package/dist/hooks/useParticipantInfo.d.ts.map +1 -0
- package/dist/hooks/useParticipantPermissions.d.ts +17 -0
- package/dist/hooks/useParticipantPermissions.d.ts.map +1 -0
- package/dist/hooks/useParticipantTile.d.ts +22 -0
- package/dist/hooks/useParticipantTile.d.ts.map +1 -0
- package/dist/hooks/useParticipantTracks.d.ts +14 -0
- package/dist/hooks/useParticipantTracks.d.ts.map +1 -0
- package/dist/hooks/useParticipants.d.ts +30 -0
- package/dist/hooks/useParticipants.d.ts.map +1 -0
- package/dist/hooks/usePersistentUserChoices.d.ts +35 -0
- package/dist/hooks/usePersistentUserChoices.d.ts.map +1 -0
- package/dist/hooks/usePinnedTracks.d.ts +14 -0
- package/dist/hooks/usePinnedTracks.d.ts.map +1 -0
- package/dist/hooks/useRemoteParticipant.d.ts +35 -0
- package/dist/hooks/useRemoteParticipant.d.ts.map +1 -0
- package/dist/hooks/useRemoteParticipants.d.ts +30 -0
- package/dist/hooks/useRemoteParticipants.d.ts.map +1 -0
- package/dist/hooks/useRoomInfo.d.ts +21 -0
- package/dist/hooks/useRoomInfo.d.ts.map +1 -0
- package/dist/hooks/useSequentialRoomConnectDisconnect.d.ts +27 -0
- package/dist/hooks/useSequentialRoomConnectDisconnect.d.ts.map +1 -0
- package/dist/hooks/useSession.d.ts +130 -0
- package/dist/hooks/useSession.d.ts.map +1 -0
- package/dist/hooks/useSessionMessages.d.ts +29 -0
- package/dist/hooks/useSessionMessages.d.ts.map +1 -0
- package/dist/hooks/useSettingsToggle.d.ts +20 -0
- package/dist/hooks/useSettingsToggle.d.ts.map +1 -0
- package/dist/hooks/useSortedParticipants.d.ts +7 -0
- package/dist/hooks/useSortedParticipants.d.ts.map +1 -0
- package/dist/hooks/useSpeakingParticipants.d.ts +16 -0
- package/dist/hooks/useSpeakingParticipants.d.ts.map +1 -0
- package/dist/hooks/useStartAudio.d.ts +27 -0
- package/dist/hooks/useStartAudio.d.ts.map +1 -0
- package/dist/hooks/useStartVideo.d.ts +26 -0
- package/dist/hooks/useStartVideo.d.ts.map +1 -0
- package/dist/hooks/useSwipe.d.ts +24 -0
- package/dist/hooks/useSwipe.d.ts.map +1 -0
- package/dist/hooks/useTextStream.d.ts +20 -0
- package/dist/hooks/useTextStream.d.ts.map +1 -0
- package/dist/hooks/useToken.d.ts +20 -0
- package/dist/hooks/useToken.d.ts.map +1 -0
- package/dist/hooks/useTrack.d.ts +4 -0
- package/dist/hooks/useTrack.d.ts.map +1 -0
- package/dist/hooks/useTrackByName.d.ts +10 -0
- package/dist/hooks/useTrackByName.d.ts.map +1 -0
- package/dist/hooks/useTrackMutedIndicator.d.ts +18 -0
- package/dist/hooks/useTrackMutedIndicator.d.ts.map +1 -0
- package/dist/hooks/useTrackRefBySourceOrName.d.ts +7 -0
- package/dist/hooks/useTrackRefBySourceOrName.d.ts.map +1 -0
- package/dist/hooks/useTrackSyncTime.d.ts +10 -0
- package/dist/hooks/useTrackSyncTime.d.ts.map +1 -0
- package/dist/hooks/useTrackToggle.d.ts +27 -0
- package/dist/hooks/useTrackToggle.d.ts.map +1 -0
- package/dist/hooks/useTrackTranscription.d.ts +26 -0
- package/dist/hooks/useTrackTranscription.d.ts.map +1 -0
- package/dist/hooks/useTrackVolume.d.ts +49 -0
- package/dist/hooks/useTrackVolume.d.ts.map +1 -0
- package/dist/hooks/useTracks.d.ts +29 -0
- package/dist/hooks/useTracks.d.ts.map +1 -0
- package/dist/hooks/useTranscriptions.d.ts +21 -0
- package/dist/hooks/useTranscriptions.d.ts.map +1 -0
- package/dist/hooks/useVisualStableUpdate.d.ts +27 -0
- package/dist/hooks/useVisualStableUpdate.d.ts.map +1 -0
- package/dist/hooks/useVoiceAssistant.d.ts +43 -0
- package/dist/hooks/useVoiceAssistant.d.ts.map +1 -0
- package/dist/hooks/useWarnAboutMissingStyles.d.ts +5 -0
- package/dist/hooks/useWarnAboutMissingStyles.d.ts.map +1 -0
- package/dist/hooks-hQJmeINB.mjs +1992 -0
- package/dist/hooks-hQJmeINB.mjs.map +1 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hooks.mjs +64 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.docs.d.ts +6 -0
- package/dist/index.docs.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +157 -0
- package/dist/index.mjs.map +1 -0
- package/dist/krisp.d.ts +2 -0
- package/dist/krisp.js +2 -0
- package/dist/krisp.js.map +1 -0
- package/dist/krisp.mjs +45 -0
- package/dist/krisp.mjs.map +1 -0
- package/dist/mergeProps.d.ts +25 -0
- package/dist/mergeProps.d.ts.map +1 -0
- package/dist/prefabs/AudioConference.d.ts +22 -0
- package/dist/prefabs/AudioConference.d.ts.map +1 -0
- package/dist/prefabs/Chat.d.ts +35 -0
- package/dist/prefabs/Chat.d.ts.map +1 -0
- package/dist/prefabs/ControlBar.d.ts +45 -0
- package/dist/prefabs/ControlBar.d.ts.map +1 -0
- package/dist/prefabs/MediaDeviceMenu.d.ts +36 -0
- package/dist/prefabs/MediaDeviceMenu.d.ts.map +1 -0
- package/dist/prefabs/PreJoin.d.ts +59 -0
- package/dist/prefabs/PreJoin.d.ts.map +1 -0
- package/dist/prefabs/VideoConference.d.ts +35 -0
- package/dist/prefabs/VideoConference.d.ts.map +1 -0
- package/dist/prefabs/VoiceAssistantControlBar.d.ts +32 -0
- package/dist/prefabs/VoiceAssistantControlBar.d.ts.map +1 -0
- package/dist/prefabs/index.d.ts +8 -0
- package/dist/prefabs/index.d.ts.map +1 -0
- package/dist/prefabs.d.ts +2 -0
- package/dist/prefabs.js +2 -0
- package/dist/prefabs.js.map +1 -0
- package/dist/prefabs.mjs +579 -0
- package/dist/prefabs.mjs.map +1 -0
- package/dist/room-BP3SCCCd.mjs +191 -0
- package/dist/room-BP3SCCCd.mjs.map +1 -0
- package/dist/shared-88J2fzv7.js +2 -0
- package/dist/shared-88J2fzv7.js.map +1 -0
- package/dist/shared-BDr0qLg4.js +4 -0
- package/dist/shared-BDr0qLg4.js.map +1 -0
- package/dist/shared-CjI_UuOX.js +2 -0
- package/dist/shared-CjI_UuOX.js.map +1 -0
- package/dist/shared-DTHOl3uJ.js +2 -0
- package/dist/shared-DTHOl3uJ.js.map +1 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +104 -0
- package/src/assets/icons/CameraDisabledIcon.tsx +15 -0
- package/src/assets/icons/CameraIcon.tsx +14 -0
- package/src/assets/icons/ChatCloseIcon.tsx +17 -0
- package/src/assets/icons/ChatIcon.tsx +25 -0
- package/src/assets/icons/Chevron.tsx +19 -0
- package/src/assets/icons/FocusToggleIcon.tsx +16 -0
- package/src/assets/icons/GearIcon.tsx +19 -0
- package/src/assets/icons/LeaveIcon.tsx +25 -0
- package/src/assets/icons/LockLockedIcon.tsx +19 -0
- package/src/assets/icons/MicDisabledIcon.tsx +15 -0
- package/src/assets/icons/MicIcon.tsx +19 -0
- package/src/assets/icons/QualityExcellentIcon.tsx +15 -0
- package/src/assets/icons/QualityGoodIcon.tsx +19 -0
- package/src/assets/icons/QualityPoorIcon.tsx +20 -0
- package/src/assets/icons/QualityUnknownIcon.tsx +17 -0
- package/src/assets/icons/ScreenShareIcon.tsx +25 -0
- package/src/assets/icons/ScreenShareStopIcon.tsx +21 -0
- package/src/assets/icons/SpinnerIcon.tsx +93 -0
- package/src/assets/icons/UnfocusToggleIcon.tsx +16 -0
- package/src/assets/icons/index.ts +19 -0
- package/src/assets/icons/util.tsx +47 -0
- package/src/assets/images/ParticipantPlaceholder.tsx +31 -0
- package/src/assets/images/index.ts +1 -0
- package/src/assets/template.js +21 -0
- package/src/components/ChatEntry.tsx +112 -0
- package/src/components/ConnectionState.tsx +36 -0
- package/src/components/ConnectionStateToast.tsx +47 -0
- package/src/components/LiveKitRoom.tsx +122 -0
- package/src/components/ParticipantLoop.tsx +41 -0
- package/src/components/RoomAudioRenderer.tsx +57 -0
- package/src/components/RoomName.tsx +36 -0
- package/src/components/SessionProvider.tsx +22 -0
- package/src/components/Toast.tsx +18 -0
- package/src/components/TrackLoop.tsx +45 -0
- package/src/components/controls/ChatToggle.tsx +32 -0
- package/src/components/controls/ClearPinButton.tsx +32 -0
- package/src/components/controls/DisconnectButton.tsx +32 -0
- package/src/components/controls/FocusToggle.tsx +54 -0
- package/src/components/controls/MediaDeviceSelect.tsx +144 -0
- package/src/components/controls/PaginationControl.tsx +51 -0
- package/src/components/controls/PaginationIndicator.tsx +26 -0
- package/src/components/controls/SettingsMenuToggle.tsx +26 -0
- package/src/components/controls/StartAudio.tsx +40 -0
- package/src/components/controls/StartMediaButton.tsx +41 -0
- package/src/components/controls/TrackToggle.tsx +54 -0
- package/src/components/index.ts +34 -0
- package/src/components/layout/CarouselLayout.tsx +80 -0
- package/src/components/layout/FocusLayout.tsx +37 -0
- package/src/components/layout/GridLayout.tsx +63 -0
- package/src/components/layout/LayoutContextProvider.tsx +36 -0
- package/src/components/layout/index.ts +3 -0
- package/src/components/participant/AudioTrack.tsx +89 -0
- package/src/components/participant/AudioVisualizer.tsx +67 -0
- package/src/components/participant/BarVisualizer.tsx +164 -0
- package/src/components/participant/ConnectionQualityIndicator.tsx +36 -0
- package/src/components/participant/ParticipantAudioTile.tsx +67 -0
- package/src/components/participant/ParticipantName.tsx +50 -0
- package/src/components/participant/ParticipantTile.tsx +192 -0
- package/src/components/participant/TrackMutedIndicator.tsx +53 -0
- package/src/components/participant/VideoTrack.tsx +92 -0
- package/src/components/participant/animationSequences/connectingSequence.ts +9 -0
- package/src/components/participant/animationSequences/listeningSequence.ts +6 -0
- package/src/components/participant/animationSequences/thinkingSequence.ts +12 -0
- package/src/components/participant/animators/useBarAnimator.ts +55 -0
- package/src/context/chat-context.ts +37 -0
- package/src/context/feature-context.ts +28 -0
- package/src/context/index.ts +27 -0
- package/src/context/layout-context.ts +72 -0
- package/src/context/participant-context.ts +44 -0
- package/src/context/pin-context.ts +27 -0
- package/src/context/room-context.ts +42 -0
- package/src/context/session-context.ts +43 -0
- package/src/context/track-reference-context.ts +47 -0
- package/src/hooks/cloud/krisp/useKrispNoiseFilter.ts +110 -0
- package/src/hooks/index.ts +72 -0
- package/src/hooks/internal/index.ts +10 -0
- package/src/hooks/internal/useMediaQuery.ts +46 -0
- package/src/hooks/internal/useObservableState.ts +24 -0
- package/src/hooks/internal/useResizeObserver.ts +124 -0
- package/src/hooks/useAgent.ts +945 -0
- package/src/hooks/useAudioPlayback.ts +34 -0
- package/src/hooks/useChat.ts +57 -0
- package/src/hooks/useChatToggle.ts +38 -0
- package/src/hooks/useClearPinButton.ts +29 -0
- package/src/hooks/useConnectionQualityIndicator.ts +33 -0
- package/src/hooks/useConnectionStatus.ts +22 -0
- package/src/hooks/useDataChannel.ts +73 -0
- package/src/hooks/useDisconnectButton.ts +36 -0
- package/src/hooks/useEvents.ts +39 -0
- package/src/hooks/useFacingMode.ts +22 -0
- package/src/hooks/useFocusToggle.ts +59 -0
- package/src/hooks/useGridLayout.ts +44 -0
- package/src/hooks/useIsEncrypted.ts +29 -0
- package/src/hooks/useIsMuted.ts +51 -0
- package/src/hooks/useIsRecording.ts +23 -0
- package/src/hooks/useIsSpeaking.ts +21 -0
- package/src/hooks/useLiveKitRoom.ts +186 -0
- package/src/hooks/useLocalParticipant.ts +73 -0
- package/src/hooks/useLocalParticipantPermissions.ts +24 -0
- package/src/hooks/useMediaDeviceSelect.ts +81 -0
- package/src/hooks/useMediaDevices.ts +28 -0
- package/src/hooks/useMediaTrackBySourceOrName.ts +97 -0
- package/src/hooks/usePagination.test.ts +77 -0
- package/src/hooks/usePagination.ts +67 -0
- package/src/hooks/useParticipantAttributes.ts +69 -0
- package/src/hooks/useParticipantInfo.ts +35 -0
- package/src/hooks/useParticipantPermissions.ts +29 -0
- package/src/hooks/useParticipantTile.ts +81 -0
- package/src/hooks/useParticipantTracks.ts +54 -0
- package/src/hooks/useParticipants.ts +42 -0
- package/src/hooks/usePersistentUserChoices.ts +64 -0
- package/src/hooks/usePinnedTracks.ts +24 -0
- package/src/hooks/useRemoteParticipant.ts +79 -0
- package/src/hooks/useRemoteParticipants.ts +45 -0
- package/src/hooks/useRoomInfo.ts +32 -0
- package/src/hooks/useSequentialRoomConnectDisconnect.ts +171 -0
- package/src/hooks/useSession.ts +642 -0
- package/src/hooks/useSessionMessages.ts +158 -0
- package/src/hooks/useSettingsToggle.ts +32 -0
- package/src/hooks/useSortedParticipants.ts +20 -0
- package/src/hooks/useSpeakingParticipants.ts +27 -0
- package/src/hooks/useStartAudio.ts +50 -0
- package/src/hooks/useStartVideo.ts +49 -0
- package/src/hooks/useSwipe.ts +68 -0
- package/src/hooks/useTextStream.ts +35 -0
- package/src/hooks/useToken.ts +54 -0
- package/src/hooks/useTrack.ts +11 -0
- package/src/hooks/useTrackByName.ts +15 -0
- package/src/hooks/useTrackMutedIndicator.ts +44 -0
- package/src/hooks/useTrackRefBySourceOrName.ts +30 -0
- package/src/hooks/useTrackSyncTime.ts +18 -0
- package/src/hooks/useTrackToggle.ts +93 -0
- package/src/hooks/useTrackTranscription.ts +75 -0
- package/src/hooks/useTrackVolume.ts +283 -0
- package/src/hooks/useTracks.test.ts +60 -0
- package/src/hooks/useTracks.ts +154 -0
- package/src/hooks/useTranscriptions.ts +48 -0
- package/src/hooks/useVisualStableUpdate.ts +63 -0
- package/src/hooks/useVoiceAssistant.ts +109 -0
- package/src/hooks/useWarnAboutMissingStyles.ts +11 -0
- package/src/index.docs.ts +12 -0
- package/src/index.ts +32 -0
- package/src/mergeProps.ts +87 -0
- package/src/prefabs/AudioConference.tsx +57 -0
- package/src/prefabs/Chat.tsx +153 -0
- package/src/prefabs/ControlBar.tsx +227 -0
- package/src/prefabs/MediaDeviceMenu.tsx +159 -0
- package/src/prefabs/PreJoin.tsx +439 -0
- package/src/prefabs/VideoConference.tsx +184 -0
- package/src/prefabs/VoiceAssistantControlBar.tsx +109 -0
- package/src/prefabs/index.ts +11 -0
- package/src/utils.ts +78 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Room } from 'livekit-client';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
/** @public */
|
|
5
|
+
export const RoomContext = React.createContext<Room | undefined>(undefined);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Ensures that a room is provided via context.
|
|
9
|
+
* If no room is provided, an error is thrown.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export function useRoomContext() {
|
|
13
|
+
const ctx = React.useContext(RoomContext);
|
|
14
|
+
if (!ctx) {
|
|
15
|
+
throw Error('tried to access room context outside of livekit room component');
|
|
16
|
+
}
|
|
17
|
+
return ctx;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns the room context if it exists, otherwise undefined.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export function useMaybeRoomContext() {
|
|
25
|
+
return React.useContext(RoomContext);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Ensures that a room is provided, either via context or explicitly as a parameter.
|
|
30
|
+
* If no room is provided, an error is thrown.
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
export function useEnsureRoom(room?: Room) {
|
|
34
|
+
const context = useMaybeRoomContext();
|
|
35
|
+
const r = room ?? context;
|
|
36
|
+
if (!r) {
|
|
37
|
+
throw new Error(
|
|
38
|
+
'No room provided, make sure you are inside a Room context or pass the room explicitly',
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return r;
|
|
42
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import { UseSessionReturn } from '../hooks/useSession';
|
|
4
|
+
|
|
5
|
+
/** @internal */
|
|
6
|
+
export const SessionContext = React.createContext<UseSessionReturn | undefined>(undefined);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Ensures that a session is provided via context.
|
|
10
|
+
* If no session is provided, an error is thrown.
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
export function useSessionContext() {
|
|
14
|
+
const ctx = React.useContext(SessionContext);
|
|
15
|
+
if (!ctx) {
|
|
16
|
+
throw Error('tried to access session context outside of SessionProvider component');
|
|
17
|
+
}
|
|
18
|
+
return ctx;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Returns the session context if it exists, otherwise undefined.
|
|
23
|
+
* @beta
|
|
24
|
+
*/
|
|
25
|
+
export function useMaybeSessionContext() {
|
|
26
|
+
return React.useContext(SessionContext);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Ensures that a session is provided, either via context or explicitly as a parameter.
|
|
31
|
+
* If no session is provided, an error is thrown.
|
|
32
|
+
* @beta
|
|
33
|
+
*/
|
|
34
|
+
export function useEnsureSession(session?: UseSessionReturn) {
|
|
35
|
+
const context = useMaybeSessionContext();
|
|
36
|
+
const r = session ?? context;
|
|
37
|
+
if (!r) {
|
|
38
|
+
throw new Error(
|
|
39
|
+
'No session provided, make sure you are inside a Session context or pass the session explicitly',
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return r;
|
|
43
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { TrackReferenceOrPlaceholder } from '@livekit/components-core';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This context provides a `TrackReferenceOrPlaceholder` to all child components.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export const TrackRefContext = React.createContext<TrackReferenceOrPlaceholder | undefined>(
|
|
9
|
+
undefined,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Ensures that a track reference is provided via context.
|
|
14
|
+
* If not inside a `TrackRefContext`, an error is thrown.
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export function useTrackRefContext() {
|
|
18
|
+
const trackReference = React.useContext(TrackRefContext);
|
|
19
|
+
if (!trackReference) {
|
|
20
|
+
throw Error('tried to access track context outside of track context provider');
|
|
21
|
+
}
|
|
22
|
+
return trackReference;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Returns a track reference from the `TrackRefContext` if it exists, otherwise `undefined`.
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export function useMaybeTrackRefContext() {
|
|
30
|
+
return React.useContext(TrackRefContext);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Ensures that a track reference is provided, either via context or explicitly as a parameter.
|
|
35
|
+
* If not inside a `TrackRefContext` and no track reference is provided, an error is thrown.
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export function useEnsureTrackRef(trackRef?: TrackReferenceOrPlaceholder) {
|
|
39
|
+
const context = useMaybeTrackRefContext();
|
|
40
|
+
const ref = trackRef ?? context;
|
|
41
|
+
if (!ref) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
'No TrackRef, make sure you are inside a TrackRefContext or pass the TrackRef explicitly',
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return ref;
|
|
47
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { LocalAudioTrack } from 'livekit-client';
|
|
3
|
+
import { log } from '@livekit/components-core';
|
|
4
|
+
import type { KrispNoiseFilterProcessor, NoiseFilterOptions } from '@livekit/krisp-noise-filter';
|
|
5
|
+
import type { TrackReferenceOrPlaceholder } from '@livekit/components-core';
|
|
6
|
+
import { useLocalParticipant } from '../../..';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @beta
|
|
10
|
+
*/
|
|
11
|
+
export interface useKrispNoiseFilterOptions {
|
|
12
|
+
/**
|
|
13
|
+
* The track reference to use for the noise filter (defaults: local microphone track)
|
|
14
|
+
*/
|
|
15
|
+
trackRef?: TrackReferenceOrPlaceholder;
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
filterOptions?: NoiseFilterOptions;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Enable the Krisp enhanced noise cancellation feature for local audio tracks.
|
|
24
|
+
*
|
|
25
|
+
* Defaults to the localParticipant's microphone track publication, but you can override this behavior by passing in a different track reference.
|
|
26
|
+
*
|
|
27
|
+
* @package \@livekit/components-react/krisp
|
|
28
|
+
* @remarks This filter requires that you install the `@livekit/krisp-noise-filter` package and is supported only on {@link https://cloud.livekit.io | LiveKit Cloud}.
|
|
29
|
+
* @beta
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* const krisp = useKrispNoiseFilter();
|
|
33
|
+
* return <input
|
|
34
|
+
* type="checkbox"
|
|
35
|
+
* onChange={(ev) => krisp.setNoiseFilterEnabled(ev.target.checked)}
|
|
36
|
+
* checked={krisp.isNoiseFilterEnabled}
|
|
37
|
+
* disabled={krisp.isNoiseFilterPending}
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
* @returns Use `setIsNoiseFilterEnabled` to enable/disable the noise filter.
|
|
41
|
+
*/
|
|
42
|
+
export function useKrispNoiseFilter(options: useKrispNoiseFilterOptions = {}) {
|
|
43
|
+
const [shouldEnable, setShouldEnable] = React.useState(false);
|
|
44
|
+
const [isNoiseFilterPending, setIsNoiseFilterPending] = React.useState(false);
|
|
45
|
+
const [isNoiseFilterEnabled, setIsNoiseFilterEnabled] = React.useState(false);
|
|
46
|
+
let micPublication = useLocalParticipant().microphoneTrack;
|
|
47
|
+
const [krispProcessor, setKrispProcessor] = React.useState<
|
|
48
|
+
KrispNoiseFilterProcessor | undefined
|
|
49
|
+
>();
|
|
50
|
+
if (options.trackRef) {
|
|
51
|
+
micPublication = options.trackRef.publication;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const setNoiseFilterEnabled = React.useCallback(async (enable: boolean) => {
|
|
55
|
+
if (enable) {
|
|
56
|
+
const { KrispNoiseFilter, isKrispNoiseFilterSupported } = await import(
|
|
57
|
+
'@livekit/krisp-noise-filter'
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
if (!isKrispNoiseFilterSupported()) {
|
|
61
|
+
log.warn('LiveKit-Krisp noise filter is not supported in this browser');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!krispProcessor) {
|
|
65
|
+
setKrispProcessor(KrispNoiseFilter(options.filterOptions));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
setShouldEnable((prev) => {
|
|
69
|
+
if (prev !== enable) {
|
|
70
|
+
setIsNoiseFilterPending(true);
|
|
71
|
+
}
|
|
72
|
+
return enable;
|
|
73
|
+
});
|
|
74
|
+
}, []);
|
|
75
|
+
|
|
76
|
+
React.useEffect(() => {
|
|
77
|
+
if (micPublication && micPublication.track instanceof LocalAudioTrack && krispProcessor) {
|
|
78
|
+
const currentProcessor = micPublication.track.getProcessor();
|
|
79
|
+
if (currentProcessor && currentProcessor.name === 'livekit-noise-filter') {
|
|
80
|
+
setIsNoiseFilterPending(true);
|
|
81
|
+
(currentProcessor as KrispNoiseFilterProcessor).setEnabled(shouldEnable).finally(() => {
|
|
82
|
+
setIsNoiseFilterPending(false);
|
|
83
|
+
setIsNoiseFilterEnabled(shouldEnable);
|
|
84
|
+
});
|
|
85
|
+
} else if (!currentProcessor && shouldEnable) {
|
|
86
|
+
setIsNoiseFilterPending(true);
|
|
87
|
+
micPublication?.track
|
|
88
|
+
?.setProcessor(krispProcessor)
|
|
89
|
+
.then(() => krispProcessor.setEnabled(shouldEnable))
|
|
90
|
+
.then(() => {
|
|
91
|
+
setIsNoiseFilterEnabled(true);
|
|
92
|
+
})
|
|
93
|
+
.catch((e: any) => {
|
|
94
|
+
setIsNoiseFilterEnabled(false);
|
|
95
|
+
log.error('Krisp hook: error enabling filter', e);
|
|
96
|
+
})
|
|
97
|
+
.finally(() => {
|
|
98
|
+
setIsNoiseFilterPending(false);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}, [shouldEnable, micPublication, krispProcessor]);
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
setNoiseFilterEnabled,
|
|
106
|
+
isNoiseFilterEnabled,
|
|
107
|
+
isNoiseFilterPending,
|
|
108
|
+
processor: krispProcessor,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export { useAudioPlayback } from './useAudioPlayback';
|
|
2
|
+
export { useClearPinButton } from './useClearPinButton';
|
|
3
|
+
export {
|
|
4
|
+
type ConnectionQualityIndicatorOptions,
|
|
5
|
+
useConnectionQualityIndicator,
|
|
6
|
+
} from './useConnectionQualityIndicator';
|
|
7
|
+
export { useConnectionState } from './useConnectionStatus';
|
|
8
|
+
export { useDataChannel } from './useDataChannel';
|
|
9
|
+
export { useDisconnectButton } from './useDisconnectButton';
|
|
10
|
+
export { useFacingMode } from './useFacingMode';
|
|
11
|
+
export { type UseFocusToggleProps, useFocusToggle } from './useFocusToggle';
|
|
12
|
+
export { useGridLayout } from './useGridLayout';
|
|
13
|
+
export { type UseIsMutedOptions, useIsMuted } from './useIsMuted';
|
|
14
|
+
export { useIsSpeaking } from './useIsSpeaking';
|
|
15
|
+
export { useLiveKitRoom } from './useLiveKitRoom';
|
|
16
|
+
export { type UseLocalParticipantOptions, useLocalParticipant } from './useLocalParticipant';
|
|
17
|
+
export { useLocalParticipantPermissions } from './useLocalParticipantPermissions';
|
|
18
|
+
export { type UseMediaDeviceSelectProps, useMediaDeviceSelect } from './useMediaDeviceSelect';
|
|
19
|
+
export { useMediaDevices } from './useMediaDevices';
|
|
20
|
+
export { usePagination } from './usePagination';
|
|
21
|
+
export { type UseParticipantInfoOptions, useParticipantInfo } from './useParticipantInfo';
|
|
22
|
+
export {
|
|
23
|
+
type UseParticipantPermissionsOptions,
|
|
24
|
+
useParticipantPermissions,
|
|
25
|
+
} from './useParticipantPermissions';
|
|
26
|
+
export { type UseParticipantTileProps, useParticipantTile } from './useParticipantTile';
|
|
27
|
+
export { type UseParticipantsOptions, useParticipants } from './useParticipants';
|
|
28
|
+
export { usePinnedTracks } from './usePinnedTracks';
|
|
29
|
+
export { type UseRemoteParticipantOptions, useRemoteParticipant } from './useRemoteParticipant';
|
|
30
|
+
export { type UseRemoteParticipantsOptions, useRemoteParticipants } from './useRemoteParticipants';
|
|
31
|
+
export { type UseRoomInfoOptions, useRoomInfo } from './useRoomInfo';
|
|
32
|
+
export { useSortedParticipants } from './useSortedParticipants';
|
|
33
|
+
export {
|
|
34
|
+
useSpeakingParticipants,
|
|
35
|
+
type UseSpeakingParticipantsOptions,
|
|
36
|
+
} from './useSpeakingParticipants';
|
|
37
|
+
export { type UseStartAudioProps, useStartAudio } from './useStartAudio';
|
|
38
|
+
export { type UseStartVideoProps, useStartVideo } from './useStartVideo';
|
|
39
|
+
export { type UseSwipeOptions, useSwipe } from './useSwipe';
|
|
40
|
+
export { type UseChatToggleProps, useChatToggle } from './useChatToggle';
|
|
41
|
+
export { type UseTokenOptions, type UserInfo, useToken } from './useToken';
|
|
42
|
+
export { useTrackMutedIndicator } from './useTrackMutedIndicator';
|
|
43
|
+
export { type UseTrackToggleProps, useTrackToggle } from './useTrackToggle';
|
|
44
|
+
export { type UseTracksHookReturnType, type UseTracksOptions, useTracks } from './useTracks';
|
|
45
|
+
export { type UseVisualStableUpdateOptions, useVisualStableUpdate } from './useVisualStableUpdate';
|
|
46
|
+
// export { UseTrackOptions, useTrack } from './useTrack';
|
|
47
|
+
export { useTrackByName } from './useTrackByName';
|
|
48
|
+
export { useChat } from './useChat';
|
|
49
|
+
export {
|
|
50
|
+
usePersistentUserChoices,
|
|
51
|
+
type UsePersistentUserChoicesOptions,
|
|
52
|
+
} from './usePersistentUserChoices';
|
|
53
|
+
export { type UseIsEncryptedOptions, useIsEncrypted } from './useIsEncrypted';
|
|
54
|
+
export * from './useTrackVolume';
|
|
55
|
+
export * from './useParticipantTracks';
|
|
56
|
+
export * from './useTrackTranscription';
|
|
57
|
+
export * from './useVoiceAssistant';
|
|
58
|
+
export * from './useParticipantAttributes';
|
|
59
|
+
export * from './useIsRecording';
|
|
60
|
+
export * from './useTextStream';
|
|
61
|
+
export * from './useTranscriptions';
|
|
62
|
+
export * from './useSequentialRoomConnectDisconnect';
|
|
63
|
+
export * from './useSession';
|
|
64
|
+
export {
|
|
65
|
+
type AgentState,
|
|
66
|
+
AgentEvent,
|
|
67
|
+
type AgentCallbacks,
|
|
68
|
+
type UseAgentReturn,
|
|
69
|
+
useAgent,
|
|
70
|
+
} from './useAgent';
|
|
71
|
+
export * from './useEvents';
|
|
72
|
+
export * from './useSessionMessages';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A collection of internal hooks that are not part of the public API
|
|
3
|
+
* and therefore can be modified or removed at any time.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export * from './useResizeObserver';
|
|
9
|
+
export * from './useObservableState';
|
|
10
|
+
export * from './useMediaQuery';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Implementation used from https://github.com/juliencrn/usehooks-ts
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export function useMediaQuery(query: string): boolean {
|
|
8
|
+
const getMatches = (query: string): boolean => {
|
|
9
|
+
// Prevents SSR issues
|
|
10
|
+
if (typeof window !== 'undefined') {
|
|
11
|
+
return window.matchMedia(query).matches;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const [matches, setMatches] = React.useState<boolean>(getMatches(query));
|
|
17
|
+
|
|
18
|
+
function handleChange() {
|
|
19
|
+
setMatches(getMatches(query));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
const matchMedia = window.matchMedia(query);
|
|
24
|
+
|
|
25
|
+
// Triggered at the first client-side load and if query changes
|
|
26
|
+
handleChange();
|
|
27
|
+
|
|
28
|
+
// Listen matchMedia
|
|
29
|
+
if (matchMedia.addListener) {
|
|
30
|
+
matchMedia.addListener(handleChange);
|
|
31
|
+
} else {
|
|
32
|
+
matchMedia.addEventListener('change', handleChange);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return () => {
|
|
36
|
+
if (matchMedia.removeListener) {
|
|
37
|
+
matchMedia.removeListener(handleChange);
|
|
38
|
+
} else {
|
|
39
|
+
matchMedia.removeEventListener('change', handleChange);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
|
+
}, [query]);
|
|
44
|
+
|
|
45
|
+
return matches;
|
|
46
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import type { Observable } from 'rxjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function useObservableState<T>(
|
|
9
|
+
observable: Observable<T> | undefined,
|
|
10
|
+
startWith: T,
|
|
11
|
+
resetWhenObservableChanges = true,
|
|
12
|
+
) {
|
|
13
|
+
const [state, setState] = React.useState<T>(startWith);
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
if (resetWhenObservableChanges) {
|
|
16
|
+
setState(startWith);
|
|
17
|
+
}
|
|
18
|
+
// observable state doesn't run in SSR
|
|
19
|
+
if (typeof window === 'undefined' || !observable) return;
|
|
20
|
+
const subscription = observable.subscribe(setState);
|
|
21
|
+
return () => subscription.unsubscribe();
|
|
22
|
+
}, [observable, resetWhenObservableChanges]);
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/* eslint-disable no-return-assign */
|
|
2
|
+
/* eslint-disable no-underscore-dangle */
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
const useLatest = <T>(current: T) => {
|
|
6
|
+
const storedValue = React.useRef(current);
|
|
7
|
+
React.useEffect(() => {
|
|
8
|
+
storedValue.current = current;
|
|
9
|
+
});
|
|
10
|
+
return storedValue;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A React hook that fires a callback whenever ResizeObserver detects a change to its size
|
|
15
|
+
* code extracted from https://github.com/jaredLunde/react-hook/blob/master/packages/resize-observer/src/index.tsx in order to not include the polyfill for resize-observer
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export function useResizeObserver<T extends HTMLElement>(
|
|
20
|
+
target: React.RefObject<T>,
|
|
21
|
+
callback: UseResizeObserverCallback,
|
|
22
|
+
) {
|
|
23
|
+
const resizeObserver = getResizeObserver();
|
|
24
|
+
const storedCallback = useLatest(callback);
|
|
25
|
+
|
|
26
|
+
React.useLayoutEffect(() => {
|
|
27
|
+
let didUnsubscribe = false;
|
|
28
|
+
|
|
29
|
+
const targetEl = target.current;
|
|
30
|
+
if (!targetEl) return;
|
|
31
|
+
|
|
32
|
+
function cb(entry: ResizeObserverEntry, observer: ResizeObserver) {
|
|
33
|
+
if (didUnsubscribe) return;
|
|
34
|
+
storedCallback.current(entry, observer);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
resizeObserver?.subscribe(targetEl as HTMLElement, cb);
|
|
38
|
+
|
|
39
|
+
return () => {
|
|
40
|
+
didUnsubscribe = true;
|
|
41
|
+
resizeObserver?.unsubscribe(targetEl as HTMLElement, cb);
|
|
42
|
+
};
|
|
43
|
+
}, [target.current, resizeObserver, storedCallback]);
|
|
44
|
+
|
|
45
|
+
return resizeObserver?.observer;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function createResizeObserver() {
|
|
49
|
+
let ticking = false;
|
|
50
|
+
let allEntries: ResizeObserverEntry[] = [];
|
|
51
|
+
|
|
52
|
+
const callbacks: Map<unknown, Array<UseResizeObserverCallback>> = new Map();
|
|
53
|
+
|
|
54
|
+
if (typeof window === 'undefined') {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const observer = new ResizeObserver((entries: ResizeObserverEntry[], obs: ResizeObserver) => {
|
|
59
|
+
allEntries = allEntries.concat(entries);
|
|
60
|
+
if (!ticking) {
|
|
61
|
+
window.requestAnimationFrame(() => {
|
|
62
|
+
const triggered = new Set<Element>();
|
|
63
|
+
for (let i = 0; i < allEntries.length; i++) {
|
|
64
|
+
if (triggered.has(allEntries[i].target)) continue;
|
|
65
|
+
triggered.add(allEntries[i].target);
|
|
66
|
+
const cbs = callbacks.get(allEntries[i].target);
|
|
67
|
+
cbs?.forEach((cb) => cb(allEntries[i], obs));
|
|
68
|
+
}
|
|
69
|
+
allEntries = [];
|
|
70
|
+
ticking = false;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
ticking = true;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
observer,
|
|
78
|
+
subscribe(target: HTMLElement, callback: UseResizeObserverCallback) {
|
|
79
|
+
observer.observe(target);
|
|
80
|
+
const cbs = callbacks.get(target) ?? [];
|
|
81
|
+
cbs.push(callback);
|
|
82
|
+
callbacks.set(target, cbs);
|
|
83
|
+
},
|
|
84
|
+
unsubscribe(target: HTMLElement, callback: UseResizeObserverCallback) {
|
|
85
|
+
const cbs = callbacks.get(target) ?? [];
|
|
86
|
+
if (cbs.length === 1) {
|
|
87
|
+
observer.unobserve(target);
|
|
88
|
+
callbacks.delete(target);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const cbIndex = cbs.indexOf(callback);
|
|
92
|
+
if (cbIndex !== -1) cbs.splice(cbIndex, 1);
|
|
93
|
+
callbacks.set(target, cbs);
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
let _resizeObserver: ReturnType<typeof createResizeObserver>;
|
|
99
|
+
|
|
100
|
+
const getResizeObserver = () =>
|
|
101
|
+
!_resizeObserver ? (_resizeObserver = createResizeObserver()) : _resizeObserver;
|
|
102
|
+
|
|
103
|
+
export type UseResizeObserverCallback = (
|
|
104
|
+
entry: ResizeObserverEntry,
|
|
105
|
+
observer: ResizeObserver,
|
|
106
|
+
) => unknown;
|
|
107
|
+
|
|
108
|
+
export const useSize = (target: React.RefObject<HTMLDivElement>) => {
|
|
109
|
+
const [size, setSize] = React.useState({ width: 0, height: 0 });
|
|
110
|
+
React.useLayoutEffect(() => {
|
|
111
|
+
if (target.current) {
|
|
112
|
+
const { width, height } = target.current.getBoundingClientRect();
|
|
113
|
+
setSize({ width, height });
|
|
114
|
+
}
|
|
115
|
+
}, [target.current]);
|
|
116
|
+
|
|
117
|
+
const resizeCallback = React.useCallback(
|
|
118
|
+
(entry: ResizeObserverEntry) => setSize(entry.contentRect),
|
|
119
|
+
[],
|
|
120
|
+
);
|
|
121
|
+
// Where the magic happens
|
|
122
|
+
useResizeObserver(target, resizeCallback);
|
|
123
|
+
return size;
|
|
124
|
+
};
|