@wix/legends-platform-sdk 1.0.0
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/README.md +186 -0
- package/components/package.json +5 -0
- package/dist/cjs/components/Audio/Audio.js +31 -0
- package/dist/cjs/components/Audio/Audio.js.map +1 -0
- package/dist/cjs/components/Audio/index.js +10 -0
- package/dist/cjs/components/Audio/index.js.map +1 -0
- package/dist/cjs/components/ChromaKey/ChromaKey.js +127 -0
- package/dist/cjs/components/ChromaKey/ChromaKey.js.map +1 -0
- package/dist/cjs/components/ChromaKey/chroma-key.js +99 -0
- package/dist/cjs/components/ChromaKey/chroma-key.js.map +1 -0
- package/dist/cjs/components/ChromaKey/index.js +10 -0
- package/dist/cjs/components/ChromaKey/index.js.map +1 -0
- package/dist/cjs/components/ChromaKey/shaders/chroma-key.shader.js +44 -0
- package/dist/cjs/components/ChromaKey/shaders/chroma-key.shader.js.map +1 -0
- package/dist/cjs/components/ChromaKey/shaders/index.js +10 -0
- package/dist/cjs/components/ChromaKey/shaders/index.js.map +1 -0
- package/dist/cjs/components/ChromaKey/shaders/vertex-align.shader.js +12 -0
- package/dist/cjs/components/ChromaKey/shaders/vertex-align.shader.js.map +1 -0
- package/dist/cjs/components/ChromaKey/types.js +4 -0
- package/dist/cjs/components/ChromaKey/types.js.map +1 -0
- package/dist/cjs/components/LegendsPlatform/LegendsPlatform.js +91 -0
- package/dist/cjs/components/LegendsPlatform/LegendsPlatform.js.map +1 -0
- package/dist/cjs/components/LegendsPlatform/index.js +10 -0
- package/dist/cjs/components/LegendsPlatform/index.js.map +1 -0
- package/dist/cjs/components/LegendsPlatformQLess/LegendsPlatform.js +69 -0
- package/dist/cjs/components/LegendsPlatformQLess/LegendsPlatform.js.map +1 -0
- package/dist/cjs/components/LegendsPlatformQLess/index.js +10 -0
- package/dist/cjs/components/LegendsPlatformQLess/index.js.map +1 -0
- package/dist/cjs/components/Video/Video.js +88 -0
- package/dist/cjs/components/Video/Video.js.map +1 -0
- package/dist/cjs/components/Video/index.js +16 -0
- package/dist/cjs/components/Video/index.js.map +1 -0
- package/dist/cjs/components/Video/types.js +4 -0
- package/dist/cjs/components/Video/types.js.map +1 -0
- package/dist/cjs/components/Video/useAttachVideo.js +33 -0
- package/dist/cjs/components/Video/useAttachVideo.js.map +1 -0
- package/dist/cjs/components/VideoPostProcessor/VideoPostProcessor.js +61 -0
- package/dist/cjs/components/VideoPostProcessor/VideoPostProcessor.js.map +1 -0
- package/dist/cjs/components/VideoPostProcessor/effects.js +30 -0
- package/dist/cjs/components/VideoPostProcessor/effects.js.map +1 -0
- package/dist/cjs/components/VideoPostProcessor/index.js +10 -0
- package/dist/cjs/components/VideoPostProcessor/index.js.map +1 -0
- package/dist/cjs/components/VideoPreview/VideoPreview.js +68 -0
- package/dist/cjs/components/VideoPreview/VideoPreview.js.map +1 -0
- package/dist/cjs/components/VideoPreview/index.js +16 -0
- package/dist/cjs/components/VideoPreview/index.js.map +1 -0
- package/dist/cjs/components/VideoPreview/types.js +4 -0
- package/dist/cjs/components/VideoPreview/types.js.map +1 -0
- package/dist/cjs/components/VideoPreview/useVideoPreviewStream.js +85 -0
- package/dist/cjs/components/VideoPreview/useVideoPreviewStream.js.map +1 -0
- package/dist/cjs/components.js +34 -0
- package/dist/cjs/components.js.map +1 -0
- package/dist/cjs/conversation/index.js +18 -0
- package/dist/cjs/conversation/index.js.map +1 -0
- package/dist/cjs/conversation/state.js +24 -0
- package/dist/cjs/conversation/state.js.map +1 -0
- package/dist/cjs/conversation/types.js +4 -0
- package/dist/cjs/conversation/types.js.map +1 -0
- package/dist/cjs/conversation/utils.js +25 -0
- package/dist/cjs/conversation/utils.js.map +1 -0
- package/dist/cjs/external-types.d.js +2 -0
- package/dist/cjs/external-types.d.js.map +1 -0
- package/dist/cjs/hooks/index.js +58 -0
- package/dist/cjs/hooks/index.js.map +1 -0
- package/dist/cjs/hooks/useActivityState/index.js +10 -0
- package/dist/cjs/hooks/useActivityState/index.js.map +1 -0
- package/dist/cjs/hooks/useActivityState/useActivityState.js +15 -0
- package/dist/cjs/hooks/useActivityState/useActivityState.js.map +1 -0
- package/dist/cjs/hooks/useAudio/index.js +10 -0
- package/dist/cjs/hooks/useAudio/index.js.map +1 -0
- package/dist/cjs/hooks/useAudio/useAudio.js +28 -0
- package/dist/cjs/hooks/useAudio/useAudio.js.map +1 -0
- package/dist/cjs/hooks/useAudioLevel/helpers.js +28 -0
- package/dist/cjs/hooks/useAudioLevel/helpers.js.map +1 -0
- package/dist/cjs/hooks/useAudioLevel/index.js +10 -0
- package/dist/cjs/hooks/useAudioLevel/index.js.map +1 -0
- package/dist/cjs/hooks/useAudioLevel/types.js +4 -0
- package/dist/cjs/hooks/useAudioLevel/types.js.map +1 -0
- package/dist/cjs/hooks/useAudioLevel/useAudioLevel.js +49 -0
- package/dist/cjs/hooks/useAudioLevel/useAudioLevel.js.map +1 -0
- package/dist/cjs/hooks/useCamera/index.js +10 -0
- package/dist/cjs/hooks/useCamera/index.js.map +1 -0
- package/dist/cjs/hooks/useCamera/useCamera.js +32 -0
- package/dist/cjs/hooks/useCamera/useCamera.js.map +1 -0
- package/dist/cjs/hooks/useConnectionState/index.js +10 -0
- package/dist/cjs/hooks/useConnectionState/index.js.map +1 -0
- package/dist/cjs/hooks/useConnectionState/useConnectionState.js +15 -0
- package/dist/cjs/hooks/useConnectionState/useConnectionState.js.map +1 -0
- package/dist/cjs/hooks/useConversation/index.js +16 -0
- package/dist/cjs/hooks/useConversation/index.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/constants.js +15 -0
- package/dist/cjs/hooks/useConversation/livekit/constants.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/types.js +4 -0
- package/dist/cjs/hooks/useConversation/livekit/types.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/useConversation.js +371 -0
- package/dist/cjs/hooks/useConversation/livekit/useConversation.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/dataChannel.js +25 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/dataChannel.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/index.js +40 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/index.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/messaging.js +11 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/messaging.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/participants.js +34 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/participants.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/serialization.js +13 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/serialization.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/toolAdapter.js +18 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/toolAdapter.js.map +1 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/transcriptions.js +15 -0
- package/dist/cjs/hooks/useConversation/livekit/utils/transcriptions.js.map +1 -0
- package/dist/cjs/hooks/useConversation/types.js +4 -0
- package/dist/cjs/hooks/useConversation/types.js.map +1 -0
- package/dist/cjs/hooks/useConversation/useConversation.js +99 -0
- package/dist/cjs/hooks/useConversation/useConversation.js.map +1 -0
- package/dist/cjs/hooks/useConversationEvents/index.js +22 -0
- package/dist/cjs/hooks/useConversationEvents/index.js.map +1 -0
- package/dist/cjs/hooks/useConversationEvents/types.js +4 -0
- package/dist/cjs/hooks/useConversationEvents/types.js.map +1 -0
- package/dist/cjs/hooks/useConversationEvents/useConversationEvent.js +11 -0
- package/dist/cjs/hooks/useConversationEvents/useConversationEvent.js.map +1 -0
- package/dist/cjs/hooks/useConversationEvents/useConversationEvents.js +20 -0
- package/dist/cjs/hooks/useConversationEvents/useConversationEvents.js.map +1 -0
- package/dist/cjs/hooks/useConversationEvents/useEmitConversationEvent.js +13 -0
- package/dist/cjs/hooks/useConversationEvents/useEmitConversationEvent.js.map +1 -0
- package/dist/cjs/hooks/useConversationStatus/index.js +10 -0
- package/dist/cjs/hooks/useConversationStatus/index.js.map +1 -0
- package/dist/cjs/hooks/useConversationStatus/useConversationStatus.js +10 -0
- package/dist/cjs/hooks/useConversationStatus/useConversationStatus.js.map +1 -0
- package/dist/cjs/hooks/useConversationTimer/index.js +10 -0
- package/dist/cjs/hooks/useConversationTimer/index.js.map +1 -0
- package/dist/cjs/hooks/useConversationTimer/useConversationTimer.js +45 -0
- package/dist/cjs/hooks/useConversationTimer/useConversationTimer.js.map +1 -0
- package/dist/cjs/hooks/useCreateConversation/helpers.js +8 -0
- package/dist/cjs/hooks/useCreateConversation/helpers.js.map +1 -0
- package/dist/cjs/hooks/useCreateConversation/index.js +10 -0
- package/dist/cjs/hooks/useCreateConversation/index.js.map +1 -0
- package/dist/cjs/hooks/useCreateConversation/useCreateConversation.js +104 -0
- package/dist/cjs/hooks/useCreateConversation/useCreateConversation.js.map +1 -0
- package/dist/cjs/hooks/useDeviceSwitcher/index.js +10 -0
- package/dist/cjs/hooks/useDeviceSwitcher/index.js.map +1 -0
- package/dist/cjs/hooks/useDeviceSwitcher/useDeviceSwitcher.js +31 -0
- package/dist/cjs/hooks/useDeviceSwitcher/useDeviceSwitcher.js.map +1 -0
- package/dist/cjs/hooks/useDevices/index.js +10 -0
- package/dist/cjs/hooks/useDevices/index.js.map +1 -0
- package/dist/cjs/hooks/useDevices/useDevices.js +49 -0
- package/dist/cjs/hooks/useDevices/useDevices.js.map +1 -0
- package/dist/cjs/hooks/useMediaPermissions/index.js +10 -0
- package/dist/cjs/hooks/useMediaPermissions/index.js.map +1 -0
- package/dist/cjs/hooks/useMediaPermissions/types.js +4 -0
- package/dist/cjs/hooks/useMediaPermissions/types.js.map +1 -0
- package/dist/cjs/hooks/useMediaPermissions/useMediaPermissions.js +46 -0
- package/dist/cjs/hooks/useMediaPermissions/useMediaPermissions.js.map +1 -0
- package/dist/cjs/hooks/useMediaRecorder/index.js +10 -0
- package/dist/cjs/hooks/useMediaRecorder/index.js.map +1 -0
- package/dist/cjs/hooks/useMediaRecorder/useMediaRecorder.js +229 -0
- package/dist/cjs/hooks/useMediaRecorder/useMediaRecorder.js.map +1 -0
- package/dist/cjs/hooks/useMediaRecorder/useReactRecorder.js +298 -0
- package/dist/cjs/hooks/useMediaRecorder/useReactRecorder.js.map +1 -0
- package/dist/cjs/hooks/useMicrophone/index.js +10 -0
- package/dist/cjs/hooks/useMicrophone/index.js.map +1 -0
- package/dist/cjs/hooks/useMicrophone/useMicrophone.js +38 -0
- package/dist/cjs/hooks/useMicrophone/useMicrophone.js.map +1 -0
- package/dist/cjs/hooks/useParticipantTrack/index.js +10 -0
- package/dist/cjs/hooks/useParticipantTrack/index.js.map +1 -0
- package/dist/cjs/hooks/useParticipantTrack/useParticipantTrack.js +32 -0
- package/dist/cjs/hooks/useParticipantTrack/useParticipantTrack.js.map +1 -0
- package/dist/cjs/hooks/usePictureInPicture/index.js +13 -0
- package/dist/cjs/hooks/usePictureInPicture/index.js.map +1 -0
- package/dist/cjs/hooks/usePictureInPicture/state.js +14 -0
- package/dist/cjs/hooks/usePictureInPicture/state.js.map +1 -0
- package/dist/cjs/hooks/usePictureInPicture/types.js +4 -0
- package/dist/cjs/hooks/usePictureInPicture/types.js.map +1 -0
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.js +45 -0
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.js.map +1 -0
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPictureAuto.js +116 -0
- package/dist/cjs/hooks/usePictureInPicture/usePictureInPictureAuto.js.map +1 -0
- package/dist/cjs/hooks/useScreenShare/index.js +10 -0
- package/dist/cjs/hooks/useScreenShare/index.js.map +1 -0
- package/dist/cjs/hooks/useScreenShare/useScreenShare.js +45 -0
- package/dist/cjs/hooks/useScreenShare/useScreenShare.js.map +1 -0
- package/dist/cjs/hooks/useSpeaker/index.js +10 -0
- package/dist/cjs/hooks/useSpeaker/index.js.map +1 -0
- package/dist/cjs/hooks/useSpeaker/useSpeaker.js +31 -0
- package/dist/cjs/hooks/useSpeaker/useSpeaker.js.map +1 -0
- package/dist/cjs/hooks/useTextChat/index.js +10 -0
- package/dist/cjs/hooks/useTextChat/index.js.map +1 -0
- package/dist/cjs/hooks/useTextChat/usePendingMessages.js +23 -0
- package/dist/cjs/hooks/useTextChat/usePendingMessages.js.map +1 -0
- package/dist/cjs/hooks/useTextChat/useTextChat.js +62 -0
- package/dist/cjs/hooks/useTextChat/useTextChat.js.map +1 -0
- package/dist/cjs/hooks/useTextChat/useToolAwareSend.js +33 -0
- package/dist/cjs/hooks/useTextChat/useToolAwareSend.js.map +1 -0
- package/dist/cjs/hooks/useTools/index.js +9 -0
- package/dist/cjs/hooks/useTools/index.js.map +1 -0
- package/dist/cjs/hooks/useTools/model/errors.js +12 -0
- package/dist/cjs/hooks/useTools/model/errors.js.map +1 -0
- package/dist/cjs/hooks/useTools/model/types.js +4 -0
- package/dist/cjs/hooks/useTools/model/types.js.map +1 -0
- package/dist/cjs/hooks/useTools/public/useTools.js +11 -0
- package/dist/cjs/hooks/useTools/public/useTools.js.map +1 -0
- package/dist/cjs/hooks/useTools/runtime/createToolRuntimeSession.js +74 -0
- package/dist/cjs/hooks/useTools/runtime/createToolRuntimeSession.js.map +1 -0
- package/dist/cjs/hooks/useTools/runtime/executeToolCall.js +33 -0
- package/dist/cjs/hooks/useTools/runtime/executeToolCall.js.map +1 -0
- package/dist/cjs/hooks/useTools/runtime/executeToolCallBatch.js +41 -0
- package/dist/cjs/hooks/useTools/runtime/executeToolCallBatch.js.map +1 -0
- package/dist/cjs/hooks/useTools/runtime/types.js +4 -0
- package/dist/cjs/hooks/useTools/runtime/types.js.map +1 -0
- package/dist/cjs/hooks/useTools/runtime/useToolCallingRuntime.js +59 -0
- package/dist/cjs/hooks/useTools/runtime/useToolCallingRuntime.js.map +1 -0
- package/dist/cjs/hooks/useTools/store/state.js +30 -0
- package/dist/cjs/hooks/useTools/store/state.js.map +1 -0
- package/dist/cjs/hooks/useTools/utils/normalizeFunctionCall.js +22 -0
- package/dist/cjs/hooks/useTools/utils/normalizeFunctionCall.js.map +1 -0
- package/dist/cjs/hooks/useTools/utils/serialize.js +28 -0
- package/dist/cjs/hooks/useTools/utils/serialize.js.map +1 -0
- package/dist/cjs/hooks/useTranscriptions/index.js +16 -0
- package/dist/cjs/hooks/useTranscriptions/index.js.map +1 -0
- package/dist/cjs/hooks/useTranscriptions/types.js +4 -0
- package/dist/cjs/hooks/useTranscriptions/types.js.map +1 -0
- package/dist/cjs/hooks/useTranscriptions/useTranscription.js +16 -0
- package/dist/cjs/hooks/useTranscriptions/useTranscription.js.map +1 -0
- package/dist/cjs/hooks/useTranscriptions/useTranscriptions.js +18 -0
- package/dist/cjs/hooks/useTranscriptions/useTranscriptions.js.map +1 -0
- package/dist/cjs/hooks/useUserActivity/index.js +10 -0
- package/dist/cjs/hooks/useUserActivity/index.js.map +1 -0
- package/dist/cjs/hooks/useUserActivity/useUserActivity.js +23 -0
- package/dist/cjs/hooks/useUserActivity/useUserActivity.js.map +1 -0
- package/dist/cjs/livekit/components.js +10 -0
- package/dist/cjs/livekit/components.js.map +1 -0
- package/dist/cjs/livekit/sdk.js +10 -0
- package/dist/cjs/livekit/sdk.js.map +1 -0
- package/dist/cjs/sdk-consumer/context.js +15 -0
- package/dist/cjs/sdk-consumer/context.js.map +1 -0
- package/dist/cjs/sdk-consumer/index.js +10 -0
- package/dist/cjs/sdk-consumer/index.js.map +1 -0
- package/dist/cjs/sdk.js +148 -0
- package/dist/cjs/sdk.js.map +1 -0
- package/dist/cjs/services/FetchPersonaChatService.js +139 -0
- package/dist/cjs/services/FetchPersonaChatService.js.map +1 -0
- package/dist/cjs/test-types.d.js +2 -0
- package/dist/cjs/test-types.d.js.map +1 -0
- package/dist/cjs/types/http.js +14 -0
- package/dist/cjs/types/http.js.map +1 -0
- package/dist/cjs/types/index.js +7 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/service.js +4 -0
- package/dist/cjs/types/service.js.map +1 -0
- package/dist/cjs/utils/captureImage/captureImage.js +29 -0
- package/dist/cjs/utils/captureImage/captureImage.js.map +1 -0
- package/dist/cjs/utils/captureImage/helpers.js +74 -0
- package/dist/cjs/utils/captureImage/helpers.js.map +1 -0
- package/dist/cjs/utils/captureImage/index.js +16 -0
- package/dist/cjs/utils/captureImage/index.js.map +1 -0
- package/dist/cjs/utils/captureImage/types.js +4 -0
- package/dist/cjs/utils/captureImage/types.js.map +1 -0
- package/dist/cjs/utils/compatibility/compatibility.js +17 -0
- package/dist/cjs/utils/compatibility/compatibility.js.map +1 -0
- package/dist/cjs/utils/compatibility/index.js +10 -0
- package/dist/cjs/utils/compatibility/index.js.map +1 -0
- package/dist/cjs/utils.js +10 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/components/Audio/Audio.js +18 -0
- package/dist/esm/components/Audio/Audio.js.map +1 -0
- package/dist/esm/components/Audio/index.js +2 -0
- package/dist/esm/components/Audio/index.js.map +1 -0
- package/dist/esm/components/ChromaKey/ChromaKey.js +115 -0
- package/dist/esm/components/ChromaKey/ChromaKey.js.map +1 -0
- package/dist/esm/components/ChromaKey/chroma-key.js +91 -0
- package/dist/esm/components/ChromaKey/chroma-key.js.map +1 -0
- package/dist/esm/components/ChromaKey/index.js +2 -0
- package/dist/esm/components/ChromaKey/index.js.map +1 -0
- package/dist/esm/components/ChromaKey/shaders/chroma-key.shader.js +40 -0
- package/dist/esm/components/ChromaKey/shaders/chroma-key.shader.js.map +1 -0
- package/dist/esm/components/ChromaKey/shaders/index.js +3 -0
- package/dist/esm/components/ChromaKey/shaders/index.js.map +1 -0
- package/dist/esm/components/ChromaKey/shaders/vertex-align.shader.js +8 -0
- package/dist/esm/components/ChromaKey/shaders/vertex-align.shader.js.map +1 -0
- package/dist/esm/components/ChromaKey/types.js +2 -0
- package/dist/esm/components/ChromaKey/types.js.map +1 -0
- package/dist/esm/components/LegendsPlatform/LegendsPlatform.js +53 -0
- package/dist/esm/components/LegendsPlatform/LegendsPlatform.js.map +1 -0
- package/dist/esm/components/LegendsPlatform/index.js +2 -0
- package/dist/esm/components/LegendsPlatform/index.js.map +1 -0
- package/dist/esm/components/LegendsPlatformQLess/LegendsPlatform.js +30 -0
- package/dist/esm/components/LegendsPlatformQLess/LegendsPlatform.js.map +1 -0
- package/dist/esm/components/LegendsPlatformQLess/index.js +2 -0
- package/dist/esm/components/LegendsPlatformQLess/index.js.map +1 -0
- package/dist/esm/components/Video/Video.js +73 -0
- package/dist/esm/components/Video/Video.js.map +1 -0
- package/dist/esm/components/Video/index.js +3 -0
- package/dist/esm/components/Video/index.js.map +1 -0
- package/dist/esm/components/Video/types.js +2 -0
- package/dist/esm/components/Video/types.js.map +1 -0
- package/dist/esm/components/Video/useAttachVideo.js +27 -0
- package/dist/esm/components/Video/useAttachVideo.js.map +1 -0
- package/dist/esm/components/VideoPostProcessor/VideoPostProcessor.js +47 -0
- package/dist/esm/components/VideoPostProcessor/VideoPostProcessor.js.map +1 -0
- package/dist/esm/components/VideoPostProcessor/effects.js +25 -0
- package/dist/esm/components/VideoPostProcessor/effects.js.map +1 -0
- package/dist/esm/components/VideoPostProcessor/index.js +2 -0
- package/dist/esm/components/VideoPostProcessor/index.js.map +1 -0
- package/dist/esm/components/VideoPreview/VideoPreview.js +48 -0
- package/dist/esm/components/VideoPreview/VideoPreview.js.map +1 -0
- package/dist/esm/components/VideoPreview/index.js +3 -0
- package/dist/esm/components/VideoPreview/index.js.map +1 -0
- package/dist/esm/components/VideoPreview/types.js +2 -0
- package/dist/esm/components/VideoPreview/types.js.map +1 -0
- package/dist/esm/components/VideoPreview/useVideoPreviewStream.js +85 -0
- package/dist/esm/components/VideoPreview/useVideoPreviewStream.js.map +1 -0
- package/dist/esm/components.js +6 -0
- package/dist/esm/components.js.map +1 -0
- package/dist/esm/conversation/index.js +4 -0
- package/dist/esm/conversation/index.js.map +1 -0
- package/dist/esm/conversation/state.js +20 -0
- package/dist/esm/conversation/state.js.map +1 -0
- package/dist/esm/conversation/types.js +2 -0
- package/dist/esm/conversation/types.js.map +1 -0
- package/dist/esm/conversation/utils.js +21 -0
- package/dist/esm/conversation/utils.js.map +1 -0
- package/dist/esm/external-types.d.js +2 -0
- package/dist/esm/external-types.d.js.map +1 -0
- package/dist/esm/hooks/index.js +10 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/useActivityState/index.js +2 -0
- package/dist/esm/hooks/useActivityState/index.js.map +1 -0
- package/dist/esm/hooks/useActivityState/useActivityState.js +11 -0
- package/dist/esm/hooks/useActivityState/useActivityState.js.map +1 -0
- package/dist/esm/hooks/useAudio/index.js +2 -0
- package/dist/esm/hooks/useAudio/index.js.map +1 -0
- package/dist/esm/hooks/useAudio/useAudio.js +26 -0
- package/dist/esm/hooks/useAudio/useAudio.js.map +1 -0
- package/dist/esm/hooks/useAudioLevel/helpers.js +23 -0
- package/dist/esm/hooks/useAudioLevel/helpers.js.map +1 -0
- package/dist/esm/hooks/useAudioLevel/index.js +2 -0
- package/dist/esm/hooks/useAudioLevel/index.js.map +1 -0
- package/dist/esm/hooks/useAudioLevel/types.js +2 -0
- package/dist/esm/hooks/useAudioLevel/types.js.map +1 -0
- package/dist/esm/hooks/useAudioLevel/useAudioLevel.js +43 -0
- package/dist/esm/hooks/useAudioLevel/useAudioLevel.js.map +1 -0
- package/dist/esm/hooks/useCamera/index.js +2 -0
- package/dist/esm/hooks/useCamera/index.js.map +1 -0
- package/dist/esm/hooks/useCamera/useCamera.js +29 -0
- package/dist/esm/hooks/useCamera/useCamera.js.map +1 -0
- package/dist/esm/hooks/useConnectionState/index.js +2 -0
- package/dist/esm/hooks/useConnectionState/index.js.map +1 -0
- package/dist/esm/hooks/useConnectionState/useConnectionState.js +11 -0
- package/dist/esm/hooks/useConnectionState/useConnectionState.js.map +1 -0
- package/dist/esm/hooks/useConversation/index.js +3 -0
- package/dist/esm/hooks/useConversation/index.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/constants.js +11 -0
- package/dist/esm/hooks/useConversation/livekit/constants.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/types.js +2 -0
- package/dist/esm/hooks/useConversation/livekit/types.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/useConversation.js +377 -0
- package/dist/esm/hooks/useConversation/livekit/useConversation.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/dataChannel.js +18 -0
- package/dist/esm/hooks/useConversation/livekit/utils/dataChannel.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/index.js +7 -0
- package/dist/esm/hooks/useConversation/livekit/utils/index.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/messaging.js +7 -0
- package/dist/esm/hooks/useConversation/livekit/utils/messaging.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/participants.js +28 -0
- package/dist/esm/hooks/useConversation/livekit/utils/participants.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/serialization.js +9 -0
- package/dist/esm/hooks/useConversation/livekit/utils/serialization.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/toolAdapter.js +14 -0
- package/dist/esm/hooks/useConversation/livekit/utils/toolAdapter.js.map +1 -0
- package/dist/esm/hooks/useConversation/livekit/utils/transcriptions.js +11 -0
- package/dist/esm/hooks/useConversation/livekit/utils/transcriptions.js.map +1 -0
- package/dist/esm/hooks/useConversation/types.js +2 -0
- package/dist/esm/hooks/useConversation/types.js.map +1 -0
- package/dist/esm/hooks/useConversation/useConversation.js +93 -0
- package/dist/esm/hooks/useConversation/useConversation.js.map +1 -0
- package/dist/esm/hooks/useConversationEvents/index.js +4 -0
- package/dist/esm/hooks/useConversationEvents/index.js.map +1 -0
- package/dist/esm/hooks/useConversationEvents/types.js +2 -0
- package/dist/esm/hooks/useConversationEvents/types.js.map +1 -0
- package/dist/esm/hooks/useConversationEvents/useConversationEvent.js +7 -0
- package/dist/esm/hooks/useConversationEvents/useConversationEvent.js.map +1 -0
- package/dist/esm/hooks/useConversationEvents/useConversationEvents.js +20 -0
- package/dist/esm/hooks/useConversationEvents/useConversationEvents.js.map +1 -0
- package/dist/esm/hooks/useConversationEvents/useEmitConversationEvent.js +9 -0
- package/dist/esm/hooks/useConversationEvents/useEmitConversationEvent.js.map +1 -0
- package/dist/esm/hooks/useConversationStatus/index.js +2 -0
- package/dist/esm/hooks/useConversationStatus/index.js.map +1 -0
- package/dist/esm/hooks/useConversationStatus/useConversationStatus.js +6 -0
- package/dist/esm/hooks/useConversationStatus/useConversationStatus.js.map +1 -0
- package/dist/esm/hooks/useConversationTimer/index.js +2 -0
- package/dist/esm/hooks/useConversationTimer/index.js.map +1 -0
- package/dist/esm/hooks/useConversationTimer/useConversationTimer.js +44 -0
- package/dist/esm/hooks/useConversationTimer/useConversationTimer.js.map +1 -0
- package/dist/esm/hooks/useCreateConversation/helpers.js +4 -0
- package/dist/esm/hooks/useCreateConversation/helpers.js.map +1 -0
- package/dist/esm/hooks/useCreateConversation/index.js +2 -0
- package/dist/esm/hooks/useCreateConversation/index.js.map +1 -0
- package/dist/esm/hooks/useCreateConversation/useCreateConversation.js +98 -0
- package/dist/esm/hooks/useCreateConversation/useCreateConversation.js.map +1 -0
- package/dist/esm/hooks/useDeviceSwitcher/index.js +2 -0
- package/dist/esm/hooks/useDeviceSwitcher/index.js.map +1 -0
- package/dist/esm/hooks/useDeviceSwitcher/useDeviceSwitcher.js +26 -0
- package/dist/esm/hooks/useDeviceSwitcher/useDeviceSwitcher.js.map +1 -0
- package/dist/esm/hooks/useDevices/index.js +2 -0
- package/dist/esm/hooks/useDevices/index.js.map +1 -0
- package/dist/esm/hooks/useDevices/useDevices.js +45 -0
- package/dist/esm/hooks/useDevices/useDevices.js.map +1 -0
- package/dist/esm/hooks/useMediaPermissions/index.js +3 -0
- package/dist/esm/hooks/useMediaPermissions/index.js.map +1 -0
- package/dist/esm/hooks/useMediaPermissions/types.js +2 -0
- package/dist/esm/hooks/useMediaPermissions/types.js.map +1 -0
- package/dist/esm/hooks/useMediaPermissions/useMediaPermissions.js +42 -0
- package/dist/esm/hooks/useMediaPermissions/useMediaPermissions.js.map +1 -0
- package/dist/esm/hooks/useMediaRecorder/index.js +2 -0
- package/dist/esm/hooks/useMediaRecorder/index.js.map +1 -0
- package/dist/esm/hooks/useMediaRecorder/useMediaRecorder.js +227 -0
- package/dist/esm/hooks/useMediaRecorder/useMediaRecorder.js.map +1 -0
- package/dist/esm/hooks/useMediaRecorder/useReactRecorder.js +315 -0
- package/dist/esm/hooks/useMediaRecorder/useReactRecorder.js.map +1 -0
- package/dist/esm/hooks/useMicrophone/index.js +2 -0
- package/dist/esm/hooks/useMicrophone/index.js.map +1 -0
- package/dist/esm/hooks/useMicrophone/useMicrophone.js +35 -0
- package/dist/esm/hooks/useMicrophone/useMicrophone.js.map +1 -0
- package/dist/esm/hooks/useParticipantTrack/index.js +2 -0
- package/dist/esm/hooks/useParticipantTrack/index.js.map +1 -0
- package/dist/esm/hooks/useParticipantTrack/useParticipantTrack.js +26 -0
- package/dist/esm/hooks/useParticipantTrack/useParticipantTrack.js.map +1 -0
- package/dist/esm/hooks/usePictureInPicture/index.js +5 -0
- package/dist/esm/hooks/usePictureInPicture/index.js.map +1 -0
- package/dist/esm/hooks/usePictureInPicture/state.js +10 -0
- package/dist/esm/hooks/usePictureInPicture/state.js.map +1 -0
- package/dist/esm/hooks/usePictureInPicture/types.js +2 -0
- package/dist/esm/hooks/usePictureInPicture/types.js.map +1 -0
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.js +41 -0
- package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.js.map +1 -0
- package/dist/esm/hooks/usePictureInPicture/usePictureInPictureAuto.js +111 -0
- package/dist/esm/hooks/usePictureInPicture/usePictureInPictureAuto.js.map +1 -0
- package/dist/esm/hooks/useScreenShare/index.js +2 -0
- package/dist/esm/hooks/useScreenShare/index.js.map +1 -0
- package/dist/esm/hooks/useScreenShare/useScreenShare.js +42 -0
- package/dist/esm/hooks/useScreenShare/useScreenShare.js.map +1 -0
- package/dist/esm/hooks/useSpeaker/index.js +2 -0
- package/dist/esm/hooks/useSpeaker/index.js.map +1 -0
- package/dist/esm/hooks/useSpeaker/useSpeaker.js +28 -0
- package/dist/esm/hooks/useSpeaker/useSpeaker.js.map +1 -0
- package/dist/esm/hooks/useTextChat/index.js +2 -0
- package/dist/esm/hooks/useTextChat/index.js.map +1 -0
- package/dist/esm/hooks/useTextChat/usePendingMessages.js +19 -0
- package/dist/esm/hooks/useTextChat/usePendingMessages.js.map +1 -0
- package/dist/esm/hooks/useTextChat/useTextChat.js +59 -0
- package/dist/esm/hooks/useTextChat/useTextChat.js.map +1 -0
- package/dist/esm/hooks/useTextChat/useToolAwareSend.js +28 -0
- package/dist/esm/hooks/useTextChat/useToolAwareSend.js.map +1 -0
- package/dist/esm/hooks/useTools/index.js +3 -0
- package/dist/esm/hooks/useTools/index.js.map +1 -0
- package/dist/esm/hooks/useTools/model/errors.js +7 -0
- package/dist/esm/hooks/useTools/model/errors.js.map +1 -0
- package/dist/esm/hooks/useTools/model/types.js +2 -0
- package/dist/esm/hooks/useTools/model/types.js.map +1 -0
- package/dist/esm/hooks/useTools/public/useTools.js +7 -0
- package/dist/esm/hooks/useTools/public/useTools.js.map +1 -0
- package/dist/esm/hooks/useTools/runtime/createToolRuntimeSession.js +66 -0
- package/dist/esm/hooks/useTools/runtime/createToolRuntimeSession.js.map +1 -0
- package/dist/esm/hooks/useTools/runtime/executeToolCall.js +29 -0
- package/dist/esm/hooks/useTools/runtime/executeToolCall.js.map +1 -0
- package/dist/esm/hooks/useTools/runtime/executeToolCallBatch.js +36 -0
- package/dist/esm/hooks/useTools/runtime/executeToolCallBatch.js.map +1 -0
- package/dist/esm/hooks/useTools/runtime/types.js +2 -0
- package/dist/esm/hooks/useTools/runtime/types.js.map +1 -0
- package/dist/esm/hooks/useTools/runtime/useToolCallingRuntime.js +58 -0
- package/dist/esm/hooks/useTools/runtime/useToolCallingRuntime.js.map +1 -0
- package/dist/esm/hooks/useTools/store/state.js +26 -0
- package/dist/esm/hooks/useTools/store/state.js.map +1 -0
- package/dist/esm/hooks/useTools/utils/normalizeFunctionCall.js +18 -0
- package/dist/esm/hooks/useTools/utils/normalizeFunctionCall.js.map +1 -0
- package/dist/esm/hooks/useTools/utils/serialize.js +23 -0
- package/dist/esm/hooks/useTools/utils/serialize.js.map +1 -0
- package/dist/esm/hooks/useTranscriptions/index.js +3 -0
- package/dist/esm/hooks/useTranscriptions/index.js.map +1 -0
- package/dist/esm/hooks/useTranscriptions/types.js +2 -0
- package/dist/esm/hooks/useTranscriptions/types.js.map +1 -0
- package/dist/esm/hooks/useTranscriptions/useTranscription.js +15 -0
- package/dist/esm/hooks/useTranscriptions/useTranscription.js.map +1 -0
- package/dist/esm/hooks/useTranscriptions/useTranscriptions.js +15 -0
- package/dist/esm/hooks/useTranscriptions/useTranscriptions.js.map +1 -0
- package/dist/esm/hooks/useUserActivity/index.js +2 -0
- package/dist/esm/hooks/useUserActivity/index.js.map +1 -0
- package/dist/esm/hooks/useUserActivity/useUserActivity.js +22 -0
- package/dist/esm/hooks/useUserActivity/useUserActivity.js.map +1 -0
- package/dist/esm/livekit/components.js +2 -0
- package/dist/esm/livekit/components.js.map +1 -0
- package/dist/esm/livekit/sdk.js +2 -0
- package/dist/esm/livekit/sdk.js.map +1 -0
- package/dist/esm/sdk-consumer/context.js +10 -0
- package/dist/esm/sdk-consumer/context.js.map +1 -0
- package/dist/esm/sdk-consumer/index.js +2 -0
- package/dist/esm/sdk-consumer/index.js.map +1 -0
- package/dist/esm/sdk.js +25 -0
- package/dist/esm/sdk.js.map +1 -0
- package/dist/esm/services/FetchPersonaChatService.js +124 -0
- package/dist/esm/services/FetchPersonaChatService.js.map +1 -0
- package/dist/esm/test-types.d.js +2 -0
- package/dist/esm/test-types.d.js.map +1 -0
- package/dist/esm/types/http.js +9 -0
- package/dist/esm/types/http.js.map +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/service.js +2 -0
- package/dist/esm/types/service.js.map +1 -0
- package/dist/esm/utils/captureImage/captureImage.js +29 -0
- package/dist/esm/utils/captureImage/captureImage.js.map +1 -0
- package/dist/esm/utils/captureImage/helpers.js +69 -0
- package/dist/esm/utils/captureImage/helpers.js.map +1 -0
- package/dist/esm/utils/captureImage/index.js +3 -0
- package/dist/esm/utils/captureImage/index.js.map +1 -0
- package/dist/esm/utils/captureImage/types.js +2 -0
- package/dist/esm/utils/captureImage/types.js.map +1 -0
- package/dist/esm/utils/compatibility/compatibility.js +12 -0
- package/dist/esm/utils/compatibility/compatibility.js.map +1 -0
- package/dist/esm/utils/compatibility/index.js +2 -0
- package/dist/esm/utils/compatibility/index.js.map +1 -0
- package/dist/esm/utils.js +2 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/types/components/Audio/Audio.d.ts +3 -0
- package/dist/types/components/Audio/Audio.d.ts.map +1 -0
- package/dist/types/components/Audio/index.d.ts +2 -0
- package/dist/types/components/Audio/index.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/ChromaKey.d.ts +20 -0
- package/dist/types/components/ChromaKey/ChromaKey.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/chroma-key.d.ts +9 -0
- package/dist/types/components/ChromaKey/chroma-key.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/index.d.ts +2 -0
- package/dist/types/components/ChromaKey/index.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/shaders/chroma-key.shader.d.ts +3 -0
- package/dist/types/components/ChromaKey/shaders/chroma-key.shader.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/shaders/index.d.ts +3 -0
- package/dist/types/components/ChromaKey/shaders/index.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/shaders/vertex-align.shader.d.ts +3 -0
- package/dist/types/components/ChromaKey/shaders/vertex-align.shader.d.ts.map +1 -0
- package/dist/types/components/ChromaKey/types.d.ts +3 -0
- package/dist/types/components/ChromaKey/types.d.ts.map +1 -0
- package/dist/types/components/LegendsPlatform/LegendsPlatform.d.ts +18 -0
- package/dist/types/components/LegendsPlatform/LegendsPlatform.d.ts.map +1 -0
- package/dist/types/components/LegendsPlatform/index.d.ts +2 -0
- package/dist/types/components/LegendsPlatform/index.d.ts.map +1 -0
- package/dist/types/components/LegendsPlatformQLess/LegendsPlatform.d.ts +15 -0
- package/dist/types/components/LegendsPlatformQLess/LegendsPlatform.d.ts.map +1 -0
- package/dist/types/components/LegendsPlatformQLess/index.d.ts +2 -0
- package/dist/types/components/LegendsPlatformQLess/index.d.ts.map +1 -0
- package/dist/types/components/Video/Video.d.ts +14 -0
- package/dist/types/components/Video/Video.d.ts.map +1 -0
- package/dist/types/components/Video/index.d.ts +3 -0
- package/dist/types/components/Video/index.d.ts.map +1 -0
- package/dist/types/components/Video/types.d.ts +22 -0
- package/dist/types/components/Video/types.d.ts.map +1 -0
- package/dist/types/components/Video/useAttachVideo.d.ts +10 -0
- package/dist/types/components/Video/useAttachVideo.d.ts.map +1 -0
- package/dist/types/components/VideoPostProcessor/VideoPostProcessor.d.ts +11 -0
- package/dist/types/components/VideoPostProcessor/VideoPostProcessor.d.ts.map +1 -0
- package/dist/types/components/VideoPostProcessor/effects.d.ts +3 -0
- package/dist/types/components/VideoPostProcessor/effects.d.ts.map +1 -0
- package/dist/types/components/VideoPostProcessor/index.d.ts +2 -0
- package/dist/types/components/VideoPostProcessor/index.d.ts.map +1 -0
- package/dist/types/components/VideoPreview/VideoPreview.d.ts +4 -0
- package/dist/types/components/VideoPreview/VideoPreview.d.ts.map +1 -0
- package/dist/types/components/VideoPreview/index.d.ts +3 -0
- package/dist/types/components/VideoPreview/index.d.ts.map +1 -0
- package/dist/types/components/VideoPreview/types.d.ts +11 -0
- package/dist/types/components/VideoPreview/types.d.ts.map +1 -0
- package/dist/types/components/VideoPreview/useVideoPreviewStream.d.ts +13 -0
- package/dist/types/components/VideoPreview/useVideoPreviewStream.d.ts.map +1 -0
- package/dist/types/components.d.ts +6 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/conversation/index.d.ts +3 -0
- package/dist/types/conversation/index.d.ts.map +1 -0
- package/dist/types/conversation/state.d.ts +47 -0
- package/dist/types/conversation/state.d.ts.map +1 -0
- package/dist/types/conversation/types.d.ts +27 -0
- package/dist/types/conversation/types.d.ts.map +1 -0
- package/dist/types/conversation/utils.d.ts +6 -0
- package/dist/types/conversation/utils.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +10 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/useActivityState/index.d.ts +2 -0
- package/dist/types/hooks/useActivityState/index.d.ts.map +1 -0
- package/dist/types/hooks/useActivityState/useActivityState.d.ts +2 -0
- package/dist/types/hooks/useActivityState/useActivityState.d.ts.map +1 -0
- package/dist/types/hooks/useAudio/index.d.ts +2 -0
- package/dist/types/hooks/useAudio/index.d.ts.map +1 -0
- package/dist/types/hooks/useAudio/useAudio.d.ts +7 -0
- package/dist/types/hooks/useAudio/useAudio.d.ts.map +1 -0
- package/dist/types/hooks/useAudioLevel/helpers.d.ts +11 -0
- package/dist/types/hooks/useAudioLevel/helpers.d.ts.map +1 -0
- package/dist/types/hooks/useAudioLevel/index.d.ts +2 -0
- package/dist/types/hooks/useAudioLevel/index.d.ts.map +1 -0
- package/dist/types/hooks/useAudioLevel/types.d.ts +8 -0
- package/dist/types/hooks/useAudioLevel/types.d.ts.map +1 -0
- package/dist/types/hooks/useAudioLevel/useAudioLevel.d.ts +3 -0
- package/dist/types/hooks/useAudioLevel/useAudioLevel.d.ts.map +1 -0
- package/dist/types/hooks/useCamera/index.d.ts +2 -0
- package/dist/types/hooks/useCamera/index.d.ts.map +1 -0
- package/dist/types/hooks/useCamera/useCamera.d.ts +8 -0
- package/dist/types/hooks/useCamera/useCamera.d.ts.map +1 -0
- package/dist/types/hooks/useConnectionState/index.d.ts +2 -0
- package/dist/types/hooks/useConnectionState/index.d.ts.map +1 -0
- package/dist/types/hooks/useConnectionState/useConnectionState.d.ts +2 -0
- package/dist/types/hooks/useConnectionState/useConnectionState.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/index.d.ts +3 -0
- package/dist/types/hooks/useConversation/index.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/constants.d.ts +4 -0
- package/dist/types/hooks/useConversation/livekit/constants.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/types.d.ts +32 -0
- package/dist/types/hooks/useConversation/livekit/types.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/useConversation.d.ts +3 -0
- package/dist/types/hooks/useConversation/livekit/useConversation.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/dataChannel.d.ts +6 -0
- package/dist/types/hooks/useConversation/livekit/utils/dataChannel.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/index.d.ts +7 -0
- package/dist/types/hooks/useConversation/livekit/utils/index.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/messaging.d.ts +3 -0
- package/dist/types/hooks/useConversation/livekit/utils/messaging.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/participants.d.ts +6 -0
- package/dist/types/hooks/useConversation/livekit/utils/participants.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/serialization.d.ts +2 -0
- package/dist/types/hooks/useConversation/livekit/utils/serialization.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/toolAdapter.d.ts +4 -0
- package/dist/types/hooks/useConversation/livekit/utils/toolAdapter.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/livekit/utils/transcriptions.d.ts +3 -0
- package/dist/types/hooks/useConversation/livekit/utils/transcriptions.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/types.d.ts +23 -0
- package/dist/types/hooks/useConversation/types.d.ts.map +1 -0
- package/dist/types/hooks/useConversation/useConversation.d.ts +3 -0
- package/dist/types/hooks/useConversation/useConversation.d.ts.map +1 -0
- package/dist/types/hooks/useConversationEvents/index.d.ts +4 -0
- package/dist/types/hooks/useConversationEvents/index.d.ts.map +1 -0
- package/dist/types/hooks/useConversationEvents/types.d.ts +72 -0
- package/dist/types/hooks/useConversationEvents/types.d.ts.map +1 -0
- package/dist/types/hooks/useConversationEvents/useConversationEvent.d.ts +3 -0
- package/dist/types/hooks/useConversationEvents/useConversationEvent.d.ts.map +1 -0
- package/dist/types/hooks/useConversationEvents/useConversationEvents.d.ts +5 -0
- package/dist/types/hooks/useConversationEvents/useConversationEvents.d.ts.map +1 -0
- package/dist/types/hooks/useConversationEvents/useEmitConversationEvent.d.ts +3 -0
- package/dist/types/hooks/useConversationEvents/useEmitConversationEvent.d.ts.map +1 -0
- package/dist/types/hooks/useConversationStatus/index.d.ts +2 -0
- package/dist/types/hooks/useConversationStatus/index.d.ts.map +1 -0
- package/dist/types/hooks/useConversationStatus/useConversationStatus.d.ts +2 -0
- package/dist/types/hooks/useConversationStatus/useConversationStatus.d.ts.map +1 -0
- package/dist/types/hooks/useConversationTimer/index.d.ts +2 -0
- package/dist/types/hooks/useConversationTimer/index.d.ts.map +1 -0
- package/dist/types/hooks/useConversationTimer/useConversationTimer.d.ts +17 -0
- package/dist/types/hooks/useConversationTimer/useConversationTimer.d.ts.map +1 -0
- package/dist/types/hooks/useCreateConversation/helpers.d.ts +8 -0
- package/dist/types/hooks/useCreateConversation/helpers.d.ts.map +1 -0
- package/dist/types/hooks/useCreateConversation/index.d.ts +2 -0
- package/dist/types/hooks/useCreateConversation/index.d.ts.map +1 -0
- package/dist/types/hooks/useCreateConversation/useCreateConversation.d.ts +11 -0
- package/dist/types/hooks/useCreateConversation/useCreateConversation.d.ts.map +1 -0
- package/dist/types/hooks/useDeviceSwitcher/index.d.ts +2 -0
- package/dist/types/hooks/useDeviceSwitcher/index.d.ts.map +1 -0
- package/dist/types/hooks/useDeviceSwitcher/useDeviceSwitcher.d.ts +9 -0
- package/dist/types/hooks/useDeviceSwitcher/useDeviceSwitcher.d.ts.map +1 -0
- package/dist/types/hooks/useDevices/index.d.ts +2 -0
- package/dist/types/hooks/useDevices/index.d.ts.map +1 -0
- package/dist/types/hooks/useDevices/useDevices.d.ts +6 -0
- package/dist/types/hooks/useDevices/useDevices.d.ts.map +1 -0
- package/dist/types/hooks/useMediaPermissions/index.d.ts +3 -0
- package/dist/types/hooks/useMediaPermissions/index.d.ts.map +1 -0
- package/dist/types/hooks/useMediaPermissions/types.d.ts +3 -0
- package/dist/types/hooks/useMediaPermissions/types.d.ts.map +1 -0
- package/dist/types/hooks/useMediaPermissions/useMediaPermissions.d.ts +7 -0
- package/dist/types/hooks/useMediaPermissions/useMediaPermissions.d.ts.map +1 -0
- package/dist/types/hooks/useMediaRecorder/index.d.ts +2 -0
- package/dist/types/hooks/useMediaRecorder/index.d.ts.map +1 -0
- package/dist/types/hooks/useMediaRecorder/useMediaRecorder.d.ts +39 -0
- package/dist/types/hooks/useMediaRecorder/useMediaRecorder.d.ts.map +1 -0
- package/dist/types/hooks/useMediaRecorder/useReactRecorder.d.ts +70 -0
- package/dist/types/hooks/useMediaRecorder/useReactRecorder.d.ts.map +1 -0
- package/dist/types/hooks/useMicrophone/index.d.ts +2 -0
- package/dist/types/hooks/useMicrophone/index.d.ts.map +1 -0
- package/dist/types/hooks/useMicrophone/useMicrophone.d.ts +8 -0
- package/dist/types/hooks/useMicrophone/useMicrophone.d.ts.map +1 -0
- package/dist/types/hooks/useParticipantTrack/index.d.ts +2 -0
- package/dist/types/hooks/useParticipantTrack/index.d.ts.map +1 -0
- package/dist/types/hooks/useParticipantTrack/useParticipantTrack.d.ts +11 -0
- package/dist/types/hooks/useParticipantTrack/useParticipantTrack.d.ts.map +1 -0
- package/dist/types/hooks/usePictureInPicture/index.d.ts +6 -0
- package/dist/types/hooks/usePictureInPicture/index.d.ts.map +1 -0
- package/dist/types/hooks/usePictureInPicture/state.d.ts +8 -0
- package/dist/types/hooks/usePictureInPicture/state.d.ts.map +1 -0
- package/dist/types/hooks/usePictureInPicture/types.d.ts +25 -0
- package/dist/types/hooks/usePictureInPicture/types.d.ts.map +1 -0
- package/dist/types/hooks/usePictureInPicture/usePictureInPicture.d.ts +3 -0
- package/dist/types/hooks/usePictureInPicture/usePictureInPicture.d.ts.map +1 -0
- package/dist/types/hooks/usePictureInPicture/usePictureInPictureAuto.d.ts +3 -0
- package/dist/types/hooks/usePictureInPicture/usePictureInPictureAuto.d.ts.map +1 -0
- package/dist/types/hooks/useScreenShare/index.d.ts +2 -0
- package/dist/types/hooks/useScreenShare/index.d.ts.map +1 -0
- package/dist/types/hooks/useScreenShare/useScreenShare.d.ts +13 -0
- package/dist/types/hooks/useScreenShare/useScreenShare.d.ts.map +1 -0
- package/dist/types/hooks/useSpeaker/index.d.ts +2 -0
- package/dist/types/hooks/useSpeaker/index.d.ts.map +1 -0
- package/dist/types/hooks/useSpeaker/useSpeaker.d.ts +6 -0
- package/dist/types/hooks/useSpeaker/useSpeaker.d.ts.map +1 -0
- package/dist/types/hooks/useTextChat/index.d.ts +2 -0
- package/dist/types/hooks/useTextChat/index.d.ts.map +1 -0
- package/dist/types/hooks/useTextChat/usePendingMessages.d.ts +11 -0
- package/dist/types/hooks/useTextChat/usePendingMessages.d.ts.map +1 -0
- package/dist/types/hooks/useTextChat/useTextChat.d.ts +21 -0
- package/dist/types/hooks/useTextChat/useTextChat.d.ts.map +1 -0
- package/dist/types/hooks/useTextChat/useToolAwareSend.d.ts +8 -0
- package/dist/types/hooks/useTextChat/useToolAwareSend.d.ts.map +1 -0
- package/dist/types/hooks/useTools/index.d.ts +4 -0
- package/dist/types/hooks/useTools/index.d.ts.map +1 -0
- package/dist/types/hooks/useTools/model/errors.d.ts +4 -0
- package/dist/types/hooks/useTools/model/errors.d.ts.map +1 -0
- package/dist/types/hooks/useTools/model/types.d.ts +27 -0
- package/dist/types/hooks/useTools/model/types.d.ts.map +1 -0
- package/dist/types/hooks/useTools/public/useTools.d.ts +2 -0
- package/dist/types/hooks/useTools/public/useTools.d.ts.map +1 -0
- package/dist/types/hooks/useTools/runtime/createToolRuntimeSession.d.ts +9 -0
- package/dist/types/hooks/useTools/runtime/createToolRuntimeSession.d.ts.map +1 -0
- package/dist/types/hooks/useTools/runtime/executeToolCall.d.ts +3 -0
- package/dist/types/hooks/useTools/runtime/executeToolCall.d.ts.map +1 -0
- package/dist/types/hooks/useTools/runtime/executeToolCallBatch.d.ts +11 -0
- package/dist/types/hooks/useTools/runtime/executeToolCallBatch.d.ts.map +1 -0
- package/dist/types/hooks/useTools/runtime/types.d.ts +35 -0
- package/dist/types/hooks/useTools/runtime/types.d.ts.map +1 -0
- package/dist/types/hooks/useTools/runtime/useToolCallingRuntime.d.ts +9 -0
- package/dist/types/hooks/useTools/runtime/useToolCallingRuntime.d.ts.map +1 -0
- package/dist/types/hooks/useTools/store/state.d.ts +17 -0
- package/dist/types/hooks/useTools/store/state.d.ts.map +1 -0
- package/dist/types/hooks/useTools/utils/normalizeFunctionCall.d.ts +4 -0
- package/dist/types/hooks/useTools/utils/normalizeFunctionCall.d.ts.map +1 -0
- package/dist/types/hooks/useTools/utils/serialize.d.ts +3 -0
- package/dist/types/hooks/useTools/utils/serialize.d.ts.map +1 -0
- package/dist/types/hooks/useTranscriptions/index.d.ts +3 -0
- package/dist/types/hooks/useTranscriptions/index.d.ts.map +1 -0
- package/dist/types/hooks/useTranscriptions/types.d.ts +5 -0
- package/dist/types/hooks/useTranscriptions/types.d.ts.map +1 -0
- package/dist/types/hooks/useTranscriptions/useTranscription.d.ts +3 -0
- package/dist/types/hooks/useTranscriptions/useTranscription.d.ts.map +1 -0
- package/dist/types/hooks/useTranscriptions/useTranscriptions.d.ts +3 -0
- package/dist/types/hooks/useTranscriptions/useTranscriptions.d.ts.map +1 -0
- package/dist/types/hooks/useUserActivity/index.d.ts +2 -0
- package/dist/types/hooks/useUserActivity/index.d.ts.map +1 -0
- package/dist/types/hooks/useUserActivity/useUserActivity.d.ts +8 -0
- package/dist/types/hooks/useUserActivity/useUserActivity.d.ts.map +1 -0
- package/dist/types/livekit/components.d.ts +2 -0
- package/dist/types/livekit/components.d.ts.map +1 -0
- package/dist/types/livekit/sdk.d.ts +2 -0
- package/dist/types/livekit/sdk.d.ts.map +1 -0
- package/dist/types/sdk-consumer/context.d.ts +12 -0
- package/dist/types/sdk-consumer/context.d.ts.map +1 -0
- package/dist/types/sdk-consumer/index.d.ts +2 -0
- package/dist/types/sdk-consumer/index.d.ts.map +1 -0
- package/dist/types/sdk.d.ts +25 -0
- package/dist/types/sdk.d.ts.map +1 -0
- package/dist/types/services/FetchPersonaChatService.d.ts +15 -0
- package/dist/types/services/FetchPersonaChatService.d.ts.map +1 -0
- package/dist/types/types/http.d.ts +15 -0
- package/dist/types/types/http.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +4 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/service.d.ts +62 -0
- package/dist/types/types/service.d.ts.map +1 -0
- package/dist/types/utils/captureImage/captureImage.d.ts +3 -0
- package/dist/types/utils/captureImage/captureImage.d.ts.map +1 -0
- package/dist/types/utils/captureImage/helpers.d.ts +4 -0
- package/dist/types/utils/captureImage/helpers.d.ts.map +1 -0
- package/dist/types/utils/captureImage/index.d.ts +3 -0
- package/dist/types/utils/captureImage/index.d.ts.map +1 -0
- package/dist/types/utils/captureImage/types.d.ts +9 -0
- package/dist/types/utils/captureImage/types.d.ts.map +1 -0
- package/dist/types/utils/compatibility/compatibility.d.ts +3 -0
- package/dist/types/utils/compatibility/compatibility.d.ts.map +1 -0
- package/dist/types/utils/compatibility/index.d.ts +2 -0
- package/dist/types/utils/compatibility/index.d.ts.map +1 -0
- package/dist/types/utils.d.ts +2 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/livekit/components/package.json +5 -0
- package/livekit/sdk/package.json +5 -0
- package/livekit-client.patch +19 -0
- package/package.json +108 -0
- package/sdk/package.json +5 -0
- package/tpa/package.json +5 -0
- package/utils/package.json +5 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.RecorderErrors = exports.ReactMediaRecorder = void 0;
|
|
5
|
+
exports.useReactMediaRecorder = useReactMediaRecorder;
|
|
6
|
+
var _extendableMediaRecorder = require("extendable-media-recorder");
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _extendableMediaRecorderWavEncoder = require("extendable-media-recorder-wav-encoder");
|
|
9
|
+
/* eslint-disable no-undef */
|
|
10
|
+
/**
|
|
11
|
+
* Experimental (optional).
|
|
12
|
+
* An enumerated value specifying whether the browser should allow the user to select the current tab for capture.
|
|
13
|
+
* This helps to avoid the "infinite hall of mirrors" effect experienced when a video conferencing app inadvertently shares its own display.
|
|
14
|
+
* Possible values are include, which hints that the browser should include the current tab in the choices offered for capture,
|
|
15
|
+
* and exclude, which hints that it should be excluded.
|
|
16
|
+
* A default value is not mandated by the spec.
|
|
17
|
+
* See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#selfbrowsersurface
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Experimental (optional).
|
|
21
|
+
* A boolean; a value of true instructs the browser to offer the current tab as the most prominent capture source, i.e. as a separate "This Tab" option in the "Choose what to share" options presented to the user.
|
|
22
|
+
* This is useful as many app types generally just want to share the current tab.
|
|
23
|
+
* See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab
|
|
24
|
+
*/
|
|
25
|
+
let RecorderErrors = exports.RecorderErrors = /*#__PURE__*/function (RecorderErrors) {
|
|
26
|
+
RecorderErrors["AbortError"] = "media_aborted";
|
|
27
|
+
RecorderErrors["NotAllowedError"] = "permission_denied";
|
|
28
|
+
RecorderErrors["NotFoundError"] = "no_specified_media_found";
|
|
29
|
+
RecorderErrors["NotReadableError"] = "media_in_use";
|
|
30
|
+
RecorderErrors["OverconstrainedError"] = "invalid_media_constraints";
|
|
31
|
+
RecorderErrors["TypeError"] = "no_constraints";
|
|
32
|
+
RecorderErrors["NONE"] = "";
|
|
33
|
+
RecorderErrors["NO_RECORDER"] = "recorder_error";
|
|
34
|
+
return RecorderErrors;
|
|
35
|
+
}({});
|
|
36
|
+
const stopMediaStream = stream => {
|
|
37
|
+
if (!stream) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
stream.getTracks().forEach(track => track.stop());
|
|
41
|
+
};
|
|
42
|
+
function useReactMediaRecorder({
|
|
43
|
+
audio = true,
|
|
44
|
+
video = false,
|
|
45
|
+
selfBrowserSurface = undefined,
|
|
46
|
+
preferCurrentTab = false,
|
|
47
|
+
onStop = () => null,
|
|
48
|
+
onStart = () => null,
|
|
49
|
+
blobPropertyBag,
|
|
50
|
+
screen = false,
|
|
51
|
+
systemAudio = false,
|
|
52
|
+
mediaRecorderOptions = undefined,
|
|
53
|
+
customMediaStream = null,
|
|
54
|
+
stopStreamsOnStop = true,
|
|
55
|
+
askPermissionOnMount = false
|
|
56
|
+
}) {
|
|
57
|
+
const mediaRecorder = (0, _react.useRef)(null);
|
|
58
|
+
const mediaChunks = (0, _react.useRef)([]);
|
|
59
|
+
const mediaStream = (0, _react.useRef)(null);
|
|
60
|
+
const mediaStreamRequestId = (0, _react.useRef)(0);
|
|
61
|
+
const shouldReleaseMediaStream = (0, _react.useRef)(false);
|
|
62
|
+
const [status, setStatus] = (0, _react.useState)('idle');
|
|
63
|
+
const [isAudioMuted, setIsAudioMuted] = (0, _react.useState)(false);
|
|
64
|
+
const [mediaBlobUrl, setMediaBlobUrl] = (0, _react.useState)(undefined);
|
|
65
|
+
const [error, setError] = (0, _react.useState)('NONE');
|
|
66
|
+
const [init, setInit] = (0, _react.useState)(false);
|
|
67
|
+
(0, _react.useEffect)(() => {
|
|
68
|
+
if (init) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const setup = async () => {
|
|
72
|
+
try {
|
|
73
|
+
await (0, _extendableMediaRecorder.register)(await (0, _extendableMediaRecorderWavEncoder.connect)());
|
|
74
|
+
} catch (e) {
|
|
75
|
+
//
|
|
76
|
+
}
|
|
77
|
+
setInit(true); // now runs only AFTER the encoder is registered
|
|
78
|
+
};
|
|
79
|
+
setup();
|
|
80
|
+
}, []);
|
|
81
|
+
const getMediaStream = (0, _react.useCallback)(async () => {
|
|
82
|
+
shouldReleaseMediaStream.current = false;
|
|
83
|
+
const requestId = ++mediaStreamRequestId.current;
|
|
84
|
+
setStatus('acquiring_media');
|
|
85
|
+
const requiredMedia = {
|
|
86
|
+
audio: typeof audio === 'boolean' ? !!audio : audio,
|
|
87
|
+
video: typeof video === 'boolean' ? !!video : video
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
let stream;
|
|
91
|
+
if (customMediaStream) {
|
|
92
|
+
stream = customMediaStream;
|
|
93
|
+
} else if (screen) {
|
|
94
|
+
stream = await window.navigator.mediaDevices.getDisplayMedia({
|
|
95
|
+
video: video || true,
|
|
96
|
+
audio: systemAudio,
|
|
97
|
+
// @ts-expect-error
|
|
98
|
+
selfBrowserSurface,
|
|
99
|
+
preferCurrentTab,
|
|
100
|
+
suppressLocalAudioPlayback: false
|
|
101
|
+
});
|
|
102
|
+
stream.getVideoTracks()[0].addEventListener('ended', () => {
|
|
103
|
+
stopRecording();
|
|
104
|
+
});
|
|
105
|
+
// Add microphone audio if requested (and not using system audio only)
|
|
106
|
+
if (audio && !systemAudio) {
|
|
107
|
+
const audioStream = await window.navigator.mediaDevices.getUserMedia({
|
|
108
|
+
audio
|
|
109
|
+
});
|
|
110
|
+
audioStream.getAudioTracks().forEach(audioTrack => stream.addTrack(audioTrack));
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
stream = await window.navigator.mediaDevices.getUserMedia(requiredMedia);
|
|
114
|
+
}
|
|
115
|
+
if (shouldReleaseMediaStream.current || requestId !== mediaStreamRequestId.current) {
|
|
116
|
+
stopMediaStream(stream);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
mediaStream.current = stream;
|
|
120
|
+
setStatus('idle');
|
|
121
|
+
} catch (error) {
|
|
122
|
+
setError(error.name);
|
|
123
|
+
setStatus('idle');
|
|
124
|
+
}
|
|
125
|
+
}, [audio, video, screen, systemAudio]);
|
|
126
|
+
(0, _react.useEffect)(() => {
|
|
127
|
+
if (!window.MediaRecorder) {
|
|
128
|
+
throw new Error('Unsupported Browser');
|
|
129
|
+
}
|
|
130
|
+
if (screen) {
|
|
131
|
+
if (!window.navigator.mediaDevices.getDisplayMedia) {
|
|
132
|
+
throw new Error("This browser doesn't support screen capturing");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const checkConstraints = mediaType => {
|
|
136
|
+
const supportedMediaConstraints = navigator.mediaDevices.getSupportedConstraints();
|
|
137
|
+
const unSupportedConstraints = Object.keys(mediaType).filter(constraint => !supportedMediaConstraints[constraint]);
|
|
138
|
+
if (unSupportedConstraints.length > 0) {
|
|
139
|
+
console.error(`The constraints ${unSupportedConstraints.join(',')} doesn't support on this browser. Please check your ReactMediaRecorder component.`);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
if (typeof audio === 'object') {
|
|
143
|
+
checkConstraints(audio);
|
|
144
|
+
}
|
|
145
|
+
if (typeof video === 'object') {
|
|
146
|
+
checkConstraints(video);
|
|
147
|
+
}
|
|
148
|
+
if (init && mediaRecorderOptions && mediaRecorderOptions.mimeType) {
|
|
149
|
+
if (!_extendableMediaRecorder.MediaRecorder.isTypeSupported(mediaRecorderOptions.mimeType)) {
|
|
150
|
+
console.error(`The specified MIME type you supplied for MediaRecorder doesn't support this browser`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!mediaStream.current && askPermissionOnMount) {
|
|
154
|
+
getMediaStream();
|
|
155
|
+
}
|
|
156
|
+
return () => {
|
|
157
|
+
shouldReleaseMediaStream.current = true;
|
|
158
|
+
mediaStreamRequestId.current += 1;
|
|
159
|
+
stopMediaStream(mediaStream.current);
|
|
160
|
+
mediaStream.current = null;
|
|
161
|
+
};
|
|
162
|
+
}, [audio, screen, video, getMediaStream, mediaRecorderOptions, askPermissionOnMount, init]);
|
|
163
|
+
|
|
164
|
+
// Media Recorder Handlers
|
|
165
|
+
|
|
166
|
+
const startRecording = async () => {
|
|
167
|
+
setError('NONE');
|
|
168
|
+
if (!mediaStream.current) {
|
|
169
|
+
await getMediaStream();
|
|
170
|
+
}
|
|
171
|
+
if (mediaStream.current) {
|
|
172
|
+
const isStreamEnded = mediaStream.current.getTracks().some(track => track.readyState === 'ended');
|
|
173
|
+
if (isStreamEnded) {
|
|
174
|
+
await getMediaStream();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// User blocked the permissions (getMediaStream errored out)
|
|
178
|
+
if (!mediaStream.current.active) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
mediaRecorder.current = new _extendableMediaRecorder.MediaRecorder(mediaStream.current, mediaRecorderOptions || undefined);
|
|
182
|
+
mediaRecorder.current.ondataavailable = onRecordingActive;
|
|
183
|
+
mediaRecorder.current.onstop = onRecordingStop;
|
|
184
|
+
mediaRecorder.current.onstart = onRecordingStart;
|
|
185
|
+
mediaRecorder.current.onerror = () => {
|
|
186
|
+
setError('NO_RECORDER');
|
|
187
|
+
setStatus('idle');
|
|
188
|
+
};
|
|
189
|
+
mediaRecorder.current.start(1000);
|
|
190
|
+
setStatus('recording');
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
const onRecordingActive = ({
|
|
194
|
+
data
|
|
195
|
+
}) => {
|
|
196
|
+
mediaChunks.current.push(data);
|
|
197
|
+
};
|
|
198
|
+
const onRecordingStart = () => {
|
|
199
|
+
onStart();
|
|
200
|
+
};
|
|
201
|
+
const onRecordingStop = () => {
|
|
202
|
+
const chunks = mediaChunks.current;
|
|
203
|
+
if (chunks.length === 0) {
|
|
204
|
+
setStatus('stopped');
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const [firstChunk] = chunks;
|
|
208
|
+
const blobProperty = {
|
|
209
|
+
type: firstChunk.type,
|
|
210
|
+
...(blobPropertyBag || (video ? {
|
|
211
|
+
type: 'video/mp4'
|
|
212
|
+
} : {
|
|
213
|
+
type: 'audio/wav'
|
|
214
|
+
}))
|
|
215
|
+
};
|
|
216
|
+
const blob = new Blob(chunks, blobProperty);
|
|
217
|
+
const url = URL.createObjectURL(blob);
|
|
218
|
+
setStatus('stopped');
|
|
219
|
+
setMediaBlobUrl(url);
|
|
220
|
+
onStop(url, blob);
|
|
221
|
+
// Clear chunks after processing
|
|
222
|
+
mediaChunks.current = [];
|
|
223
|
+
};
|
|
224
|
+
const muteAudio = mute => {
|
|
225
|
+
setIsAudioMuted(mute);
|
|
226
|
+
if (mediaStream.current) {
|
|
227
|
+
mediaStream.current.getAudioTracks().forEach(audioTrack => audioTrack.enabled = !mute);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
const pauseRecording = () => {
|
|
231
|
+
if (mediaRecorder.current && mediaRecorder.current.state === 'recording') {
|
|
232
|
+
setStatus('paused');
|
|
233
|
+
mediaRecorder.current.pause();
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
const resumeRecording = () => {
|
|
237
|
+
if (mediaRecorder.current && mediaRecorder.current.state === 'paused') {
|
|
238
|
+
setStatus('recording');
|
|
239
|
+
mediaRecorder.current.resume();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
const stopRecording = () => {
|
|
243
|
+
if (mediaRecorder.current) {
|
|
244
|
+
if (mediaRecorder.current.state !== 'inactive') {
|
|
245
|
+
setStatus('stopping');
|
|
246
|
+
mediaRecorder.current.stop();
|
|
247
|
+
if (stopStreamsOnStop) {
|
|
248
|
+
stopMediaStream(mediaStream.current);
|
|
249
|
+
}
|
|
250
|
+
// Note: chunks are cleared in onRecordingStop after blob is created
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// use this to release the stream when the component is unmounted
|
|
256
|
+
const releaseStream = () => {
|
|
257
|
+
shouldReleaseMediaStream.current = true;
|
|
258
|
+
mediaStreamRequestId.current += 1;
|
|
259
|
+
if (mediaRecorder.current && mediaRecorder.current.state !== 'inactive') {
|
|
260
|
+
mediaRecorder.current.stop();
|
|
261
|
+
}
|
|
262
|
+
stopMediaStream(mediaStream.current);
|
|
263
|
+
mediaStream.current = null;
|
|
264
|
+
setStatus('idle');
|
|
265
|
+
setIsAudioMuted(false);
|
|
266
|
+
};
|
|
267
|
+
const previewStream = (0, _react.useMemo)(() => {
|
|
268
|
+
return mediaStream.current ? new MediaStream(mediaStream.current.getVideoTracks()) : null;
|
|
269
|
+
}, [status]);
|
|
270
|
+
const previewAudioStream = (0, _react.useMemo)(() => {
|
|
271
|
+
return mediaStream.current ? new MediaStream(mediaStream.current.getAudioTracks()) : null;
|
|
272
|
+
}, [status]);
|
|
273
|
+
return {
|
|
274
|
+
error: RecorderErrors[error],
|
|
275
|
+
muteAudio: () => muteAudio(true),
|
|
276
|
+
unMuteAudio: () => muteAudio(false),
|
|
277
|
+
startRecording,
|
|
278
|
+
pauseRecording,
|
|
279
|
+
resumeRecording,
|
|
280
|
+
stopRecording,
|
|
281
|
+
releaseStream,
|
|
282
|
+
mediaBlobUrl,
|
|
283
|
+
status,
|
|
284
|
+
isAudioMuted,
|
|
285
|
+
previewStream,
|
|
286
|
+
previewAudioStream,
|
|
287
|
+
clearBlobUrl: () => {
|
|
288
|
+
if (mediaBlobUrl) {
|
|
289
|
+
URL.revokeObjectURL(mediaBlobUrl);
|
|
290
|
+
}
|
|
291
|
+
setMediaBlobUrl(undefined);
|
|
292
|
+
setStatus('idle');
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
const ReactMediaRecorder = props => props.render(useReactMediaRecorder(props));
|
|
297
|
+
exports.ReactMediaRecorder = ReactMediaRecorder;
|
|
298
|
+
//# sourceMappingURL=useReactRecorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_extendableMediaRecorder","require","_react","_extendableMediaRecorderWavEncoder","RecorderErrors","exports","stopMediaStream","stream","getTracks","forEach","track","stop","useReactMediaRecorder","audio","video","selfBrowserSurface","undefined","preferCurrentTab","onStop","onStart","blobPropertyBag","screen","systemAudio","mediaRecorderOptions","customMediaStream","stopStreamsOnStop","askPermissionOnMount","mediaRecorder","useRef","mediaChunks","mediaStream","mediaStreamRequestId","shouldReleaseMediaStream","status","setStatus","useState","isAudioMuted","setIsAudioMuted","mediaBlobUrl","setMediaBlobUrl","error","setError","init","setInit","useEffect","setup","register","connect","e","getMediaStream","useCallback","current","requestId","requiredMedia","window","navigator","mediaDevices","getDisplayMedia","suppressLocalAudioPlayback","getVideoTracks","addEventListener","stopRecording","audioStream","getUserMedia","getAudioTracks","audioTrack","addTrack","name","MediaRecorder","Error","checkConstraints","mediaType","supportedMediaConstraints","getSupportedConstraints","unSupportedConstraints","Object","keys","filter","constraint","length","console","join","mimeType","ExtendableMediaRecorder","isTypeSupported","startRecording","isStreamEnded","some","readyState","active","ondataavailable","onRecordingActive","onstop","onRecordingStop","onstart","onRecordingStart","onerror","start","data","push","chunks","firstChunk","blobProperty","type","blob","Blob","url","URL","createObjectURL","muteAudio","mute","enabled","pauseRecording","state","pause","resumeRecording","resume","releaseStream","previewStream","useMemo","MediaStream","previewAudioStream","unMuteAudio","clearBlobUrl","revokeObjectURL","ReactMediaRecorder","props","render"],"sources":["../../../../src/hooks/useMediaRecorder/useReactRecorder.tsx"],"sourcesContent":["/* eslint-disable no-undef */\nimport {\n register,\n MediaRecorder as ExtendableMediaRecorder,\n IMediaRecorder,\n} from 'extendable-media-recorder';\nimport {\n ReactElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n useMemo,\n} from 'react';\nimport { connect } from 'extendable-media-recorder-wav-encoder';\n\nexport type ReactMediaRecorderRenderProps = {\n error: string;\n muteAudio: () => void;\n unMuteAudio: () => void;\n startRecording: () => void;\n pauseRecording: () => void;\n resumeRecording: () => void;\n stopRecording: () => void;\n mediaBlobUrl: undefined | string;\n status: StatusMessages;\n isAudioMuted: boolean;\n previewStream: MediaStream | null;\n previewAudioStream: MediaStream | null;\n clearBlobUrl: () => void;\n releaseStream: () => void;\n};\n\nexport type ReactMediaRecorderHookProps = {\n audio?: boolean | MediaTrackConstraints;\n video?: boolean | MediaTrackConstraints;\n screen?: boolean;\n /**\n * When true, captures system audio from the tab/screen being shared\n * instead of microphone audio. Only works when screen=true.\n */\n systemAudio?: boolean | MediaTrackConstraints;\n selfBrowserSurface?: SelfBrowserSurface;\n preferCurrentTab?: PreferCurrentTab;\n onStop?: (blobUrl: string, blob: Blob) => void;\n onStart?: () => void;\n blobPropertyBag?: BlobPropertyBag;\n mediaRecorderOptions?: MediaRecorderOptions | undefined;\n customMediaStream?: MediaStream | null;\n stopStreamsOnStop?: boolean;\n askPermissionOnMount?: boolean;\n};\nexport type ReactMediaRecorderProps = ReactMediaRecorderHookProps & {\n render: (props: ReactMediaRecorderRenderProps) => ReactElement;\n};\n\n/**\n * Experimental (optional).\n * An enumerated value specifying whether the browser should allow the user to select the current tab for capture.\n * This helps to avoid the \"infinite hall of mirrors\" effect experienced when a video conferencing app inadvertently shares its own display.\n * Possible values are include, which hints that the browser should include the current tab in the choices offered for capture,\n * and exclude, which hints that it should be excluded.\n * A default value is not mandated by the spec.\n * See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#selfbrowsersurface\n */\nexport type SelfBrowserSurface = undefined | 'include' | 'exclude';\n\n/**\n * Experimental (optional).\n * A boolean; a value of true instructs the browser to offer the current tab as the most prominent capture source, i.e. as a separate \"This Tab\" option in the \"Choose what to share\" options presented to the user.\n * This is useful as many app types generally just want to share the current tab.\n * See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab\n */\nexport type PreferCurrentTab = true | false;\n\nexport type StatusMessages =\n | 'media_aborted'\n | 'permission_denied'\n | 'no_specified_media_found'\n | 'media_in_use'\n | 'invalid_media_constraints'\n | 'no_constraints'\n | 'recorder_error'\n | 'idle'\n | 'acquiring_media'\n | 'delayed_start'\n | 'recording'\n | 'stopping'\n | 'stopped'\n | 'paused';\n\nexport enum RecorderErrors {\n AbortError = 'media_aborted',\n NotAllowedError = 'permission_denied',\n NotFoundError = 'no_specified_media_found',\n NotReadableError = 'media_in_use',\n OverconstrainedError = 'invalid_media_constraints',\n TypeError = 'no_constraints',\n NONE = '',\n NO_RECORDER = 'recorder_error',\n}\n\nconst stopMediaStream = (stream: MediaStream | null) => {\n if (!stream) {\n return;\n }\n\n stream.getTracks().forEach((track) => track.stop());\n};\n\nexport function useReactMediaRecorder({\n audio = true,\n video = false,\n selfBrowserSurface = undefined,\n preferCurrentTab = false,\n onStop = () => null,\n onStart = () => null,\n blobPropertyBag,\n screen = false,\n systemAudio = false,\n mediaRecorderOptions = undefined,\n customMediaStream = null,\n stopStreamsOnStop = true,\n askPermissionOnMount = false,\n}: ReactMediaRecorderHookProps): ReactMediaRecorderRenderProps {\n const mediaRecorder = useRef<IMediaRecorder | null>(null);\n const mediaChunks = useRef<Blob[]>([]);\n const mediaStream = useRef<MediaStream | null>(null);\n const mediaStreamRequestId = useRef(0);\n const shouldReleaseMediaStream = useRef(false);\n const [status, setStatus] = useState<StatusMessages>('idle');\n const [isAudioMuted, setIsAudioMuted] = useState<boolean>(false);\n const [mediaBlobUrl, setMediaBlobUrl] = useState<string | undefined>(\n undefined,\n );\n const [error, setError] = useState<keyof typeof RecorderErrors>('NONE');\n const [init, setInit] = useState(false);\n\n useEffect(() => {\n if (init) {\n return;\n }\n\n const setup = async () => {\n try {\n await register(await connect());\n } catch (e) {\n //\n }\n setInit(true); // now runs only AFTER the encoder is registered\n };\n\n setup();\n }, []);\n\n const getMediaStream = useCallback(async () => {\n shouldReleaseMediaStream.current = false;\n const requestId = ++mediaStreamRequestId.current;\n setStatus('acquiring_media');\n const requiredMedia: MediaStreamConstraints = {\n audio: typeof audio === 'boolean' ? !!audio : audio,\n video: typeof video === 'boolean' ? !!video : video,\n };\n try {\n let stream: MediaStream;\n\n if (customMediaStream) {\n stream = customMediaStream;\n } else if (screen) {\n stream = (await window.navigator.mediaDevices.getDisplayMedia({\n video: video || true,\n audio: systemAudio,\n // @ts-expect-error\n selfBrowserSurface,\n preferCurrentTab,\n suppressLocalAudioPlayback: false,\n })) as MediaStream;\n stream.getVideoTracks()[0].addEventListener('ended', () => {\n stopRecording();\n });\n // Add microphone audio if requested (and not using system audio only)\n if (audio && !systemAudio) {\n const audioStream = await window.navigator.mediaDevices.getUserMedia({\n audio,\n });\n\n audioStream\n .getAudioTracks()\n .forEach((audioTrack) => stream.addTrack(audioTrack));\n }\n } else {\n stream = await window.navigator.mediaDevices.getUserMedia(\n requiredMedia,\n );\n }\n\n if (\n shouldReleaseMediaStream.current ||\n requestId !== mediaStreamRequestId.current\n ) {\n stopMediaStream(stream);\n return;\n }\n\n mediaStream.current = stream;\n setStatus('idle');\n } catch (error: any) {\n setError(error.name);\n setStatus('idle');\n }\n }, [audio, video, screen, systemAudio]);\n\n useEffect(() => {\n if (!window.MediaRecorder) {\n throw new Error('Unsupported Browser');\n }\n\n if (screen) {\n if (!window.navigator.mediaDevices.getDisplayMedia) {\n throw new Error(\"This browser doesn't support screen capturing\");\n }\n }\n\n const checkConstraints = (mediaType: MediaTrackConstraints) => {\n const supportedMediaConstraints =\n navigator.mediaDevices.getSupportedConstraints();\n const unSupportedConstraints = Object.keys(mediaType).filter(\n (constraint) =>\n !(supportedMediaConstraints as { [key: string]: any })[constraint],\n );\n\n if (unSupportedConstraints.length > 0) {\n console.error(\n `The constraints ${unSupportedConstraints.join(\n ',',\n )} doesn't support on this browser. Please check your ReactMediaRecorder component.`,\n );\n }\n };\n\n if (typeof audio === 'object') {\n checkConstraints(audio);\n }\n if (typeof video === 'object') {\n checkConstraints(video);\n }\n\n if (init && mediaRecorderOptions && mediaRecorderOptions.mimeType) {\n if (\n !ExtendableMediaRecorder.isTypeSupported(mediaRecorderOptions.mimeType)\n ) {\n console.error(\n `The specified MIME type you supplied for MediaRecorder doesn't support this browser`,\n );\n }\n }\n\n if (!mediaStream.current && askPermissionOnMount) {\n getMediaStream();\n }\n\n return () => {\n shouldReleaseMediaStream.current = true;\n mediaStreamRequestId.current += 1;\n stopMediaStream(mediaStream.current);\n mediaStream.current = null;\n };\n }, [\n audio,\n screen,\n video,\n getMediaStream,\n mediaRecorderOptions,\n askPermissionOnMount,\n init,\n ]);\n\n // Media Recorder Handlers\n\n const startRecording = async () => {\n setError('NONE');\n if (!mediaStream.current) {\n await getMediaStream();\n }\n if (mediaStream.current) {\n const isStreamEnded = mediaStream.current\n .getTracks()\n .some((track) => track.readyState === 'ended');\n if (isStreamEnded) {\n await getMediaStream();\n }\n\n // User blocked the permissions (getMediaStream errored out)\n if (!mediaStream.current.active) {\n return;\n }\n mediaRecorder.current = new ExtendableMediaRecorder(\n mediaStream.current,\n mediaRecorderOptions || undefined,\n );\n mediaRecorder.current.ondataavailable = onRecordingActive;\n mediaRecorder.current.onstop = onRecordingStop;\n mediaRecorder.current.onstart = onRecordingStart;\n mediaRecorder.current.onerror = () => {\n setError('NO_RECORDER');\n setStatus('idle');\n };\n mediaRecorder.current.start(1000);\n setStatus('recording');\n }\n };\n\n const onRecordingActive = ({ data }: BlobEvent) => {\n mediaChunks.current.push(data);\n };\n\n const onRecordingStart = () => {\n onStart();\n };\n\n const onRecordingStop = () => {\n const chunks = mediaChunks.current;\n if (chunks.length === 0) {\n setStatus('stopped');\n return;\n }\n const [firstChunk] = chunks;\n const blobProperty: BlobPropertyBag = {\n type: firstChunk.type,\n ...(blobPropertyBag ||\n (video ? { type: 'video/mp4' } : { type: 'audio/wav' })),\n };\n const blob = new Blob(chunks, blobProperty);\n const url = URL.createObjectURL(blob);\n setStatus('stopped');\n setMediaBlobUrl(url);\n onStop(url, blob);\n // Clear chunks after processing\n mediaChunks.current = [];\n };\n\n const muteAudio = (mute: boolean) => {\n setIsAudioMuted(mute);\n if (mediaStream.current) {\n mediaStream.current\n .getAudioTracks()\n .forEach((audioTrack) => (audioTrack.enabled = !mute));\n }\n };\n\n const pauseRecording = () => {\n if (mediaRecorder.current && mediaRecorder.current.state === 'recording') {\n setStatus('paused');\n mediaRecorder.current.pause();\n }\n };\n const resumeRecording = () => {\n if (mediaRecorder.current && mediaRecorder.current.state === 'paused') {\n setStatus('recording');\n mediaRecorder.current.resume();\n }\n };\n\n const stopRecording = () => {\n if (mediaRecorder.current) {\n if (mediaRecorder.current.state !== 'inactive') {\n setStatus('stopping');\n mediaRecorder.current.stop();\n if (stopStreamsOnStop) {\n stopMediaStream(mediaStream.current);\n }\n // Note: chunks are cleared in onRecordingStop after blob is created\n }\n }\n };\n\n // use this to release the stream when the component is unmounted\n const releaseStream = () => {\n shouldReleaseMediaStream.current = true;\n mediaStreamRequestId.current += 1;\n\n if (mediaRecorder.current && mediaRecorder.current.state !== 'inactive') {\n mediaRecorder.current.stop();\n }\n\n stopMediaStream(mediaStream.current);\n mediaStream.current = null;\n setStatus('idle');\n setIsAudioMuted(false);\n };\n\n const previewStream = useMemo(() => {\n return mediaStream.current\n ? new MediaStream(mediaStream.current.getVideoTracks())\n : null;\n }, [status]);\n\n const previewAudioStream = useMemo(() => {\n return mediaStream.current\n ? new MediaStream(mediaStream.current.getAudioTracks())\n : null;\n }, [status]);\n\n return {\n error: RecorderErrors[error],\n muteAudio: () => muteAudio(true),\n unMuteAudio: () => muteAudio(false),\n startRecording,\n pauseRecording,\n resumeRecording,\n stopRecording,\n releaseStream,\n mediaBlobUrl,\n status,\n isAudioMuted,\n previewStream,\n previewAudioStream,\n clearBlobUrl: () => {\n if (mediaBlobUrl) {\n URL.revokeObjectURL(mediaBlobUrl);\n }\n setMediaBlobUrl(undefined);\n setStatus('idle');\n },\n };\n}\n\nexport const ReactMediaRecorder = (props: ReactMediaRecorderProps) =>\n props.render(useReactMediaRecorder(props));\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
var _useMicrophone = require("./useMicrophone");
|
|
5
|
+
Object.keys(_useMicrophone).forEach(function (key) {
|
|
6
|
+
if (key === "default" || key === "__esModule") return;
|
|
7
|
+
if (key in exports && exports[key] === _useMicrophone[key]) return;
|
|
8
|
+
exports[key] = _useMicrophone[key];
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useMicrophone","require","Object","keys","forEach","key","exports"],"sources":["../../../../src/hooks/useMicrophone/index.ts"],"sourcesContent":["export * from './useMicrophone';\n"],"mappings":";;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAL,cAAA,CAAAK,GAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.useMicrophone = useMicrophone;
|
|
5
|
+
var _jotai = require("jotai");
|
|
6
|
+
var state = _interopRequireWildcard(require("../../conversation/state"));
|
|
7
|
+
var _useDevices = require("../useDevices");
|
|
8
|
+
var _useDeviceSwitcher = require("../useDeviceSwitcher");
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
function useMicrophone() {
|
|
11
|
+
const devices = (0, _useDevices.useDevices)({
|
|
12
|
+
type: 'audioinput'
|
|
13
|
+
});
|
|
14
|
+
const [microphone, setMicrophone] = (0, _jotai.useAtom)(state.microphone);
|
|
15
|
+
(0, _useDeviceSwitcher.useDeviceSwitcher)({
|
|
16
|
+
device: microphone,
|
|
17
|
+
devices,
|
|
18
|
+
onChange: setMicrophone
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
devices,
|
|
22
|
+
enabled: microphone.enabled,
|
|
23
|
+
deviceId: microphone.deviceId,
|
|
24
|
+
setEnabled(enabled) {
|
|
25
|
+
setMicrophone({
|
|
26
|
+
...microphone,
|
|
27
|
+
enabled
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
setDeviceId(deviceId) {
|
|
31
|
+
setMicrophone({
|
|
32
|
+
...microphone,
|
|
33
|
+
deviceId
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=useMicrophone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_jotai","require","state","_interopRequireWildcard","_useDevices","_useDeviceSwitcher","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useMicrophone","devices","useDevices","type","microphone","setMicrophone","useAtom","useDeviceSwitcher","device","onChange","enabled","deviceId","setEnabled","setDeviceId"],"sources":["../../../../src/hooks/useMicrophone/useMicrophone.ts"],"sourcesContent":["import { useAtom } from 'jotai';\n\nimport * as state from '../../conversation/state';\n\nimport { useDevices } from '../useDevices';\nimport { useDeviceSwitcher } from '../useDeviceSwitcher';\n\nexport function useMicrophone() {\n const devices = useDevices({ type: 'audioinput' });\n const [microphone, setMicrophone] = useAtom(state.microphone);\n\n useDeviceSwitcher({\n device: microphone,\n devices,\n onChange: setMicrophone,\n });\n\n return {\n devices,\n enabled: microphone.enabled,\n deviceId: microphone.deviceId,\n setEnabled(enabled: boolean) {\n setMicrophone({ ...microphone, enabled });\n },\n setDeviceId(deviceId: string) {\n setMicrophone({ ...microphone, deviceId });\n },\n };\n}\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAAyD,SAAAE,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAElD,SAASkB,aAAaA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAAC,sBAAU,EAAC;IAAEC,IAAI,EAAE;EAAa,CAAC,CAAC;EAClD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,cAAO,EAAC7B,KAAK,CAAC2B,UAAU,CAAC;EAE7D,IAAAG,oCAAiB,EAAC;IAChBC,MAAM,EAAEJ,UAAU;IAClBH,OAAO;IACPQ,QAAQ,EAAEJ;EACZ,CAAC,CAAC;EAEF,OAAO;IACLJ,OAAO;IACPS,OAAO,EAAEN,UAAU,CAACM,OAAO;IAC3BC,QAAQ,EAAEP,UAAU,CAACO,QAAQ;IAC7BC,UAAUA,CAACF,OAAgB,EAAE;MAC3BL,aAAa,CAAC;QAAE,GAAGD,UAAU;QAAEM;MAAQ,CAAC,CAAC;IAC3C,CAAC;IACDG,WAAWA,CAACF,QAAgB,EAAE;MAC5BN,aAAa,CAAC;QAAE,GAAGD,UAAU;QAAEO;MAAS,CAAC,CAAC;IAC5C;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
var _useParticipantTrack = require("./useParticipantTrack");
|
|
5
|
+
Object.keys(_useParticipantTrack).forEach(function (key) {
|
|
6
|
+
if (key === "default" || key === "__esModule") return;
|
|
7
|
+
if (key in exports && exports[key] === _useParticipantTrack[key]) return;
|
|
8
|
+
exports[key] = _useParticipantTrack[key];
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useParticipantTrack","require","Object","keys","forEach","key","exports"],"sources":["../../../../src/hooks/useParticipantTrack/index.ts"],"sourcesContent":["export * from './useParticipantTrack';\n"],"mappings":";;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,oBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,oBAAA,CAAAK,GAAA;EAAAC,OAAA,CAAAD,GAAA,IAAAL,oBAAA,CAAAK,GAAA;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.Source = void 0;
|
|
5
|
+
exports.useParticipantTrack = useParticipantTrack;
|
|
6
|
+
var _componentsReact = require("@livekit/components-react");
|
|
7
|
+
var _livekitClient = require("livekit-client");
|
|
8
|
+
let Source = exports.Source = function (Source) {
|
|
9
|
+
Source[Source["Camera"] = _livekitClient.Track.Source.Camera] = "Camera";
|
|
10
|
+
Source[Source["Microphone"] = _livekitClient.Track.Source.Microphone] = "Microphone";
|
|
11
|
+
Source[Source["ScreenShare"] = _livekitClient.Track.Source.ScreenShare] = "ScreenShare";
|
|
12
|
+
return Source;
|
|
13
|
+
}({});
|
|
14
|
+
function useParticipantTrack({
|
|
15
|
+
type,
|
|
16
|
+
source
|
|
17
|
+
}) {
|
|
18
|
+
const track = (0, _componentsReact.useTracks)([source]).find(track => {
|
|
19
|
+
if (type === 'screen') {
|
|
20
|
+
return track.source === Source.ScreenShare;
|
|
21
|
+
}
|
|
22
|
+
if (type === 'user') {
|
|
23
|
+
return track.participant.isLocal;
|
|
24
|
+
}
|
|
25
|
+
if (type === 'agent') {
|
|
26
|
+
return track.participant.isAgent;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
});
|
|
30
|
+
return (track == null ? void 0 : track.publication) || {};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useParticipantTrack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_componentsReact","require","_livekitClient","Source","exports","Track","Camera","Microphone","ScreenShare","useParticipantTrack","type","source","track","useTracks","find","participant","isLocal","isAgent","publication"],"sources":["../../../../src/hooks/useParticipantTrack/useParticipantTrack.ts"],"sourcesContent":["import { useTracks } from '@livekit/components-react';\nimport { Track } from 'livekit-client';\n\nexport enum Source {\n Camera = Track.Source.Camera,\n Microphone = Track.Source.Microphone,\n ScreenShare = Track.Source.ScreenShare,\n}\n\nexport type UseParticipantTrackProps = {\n type: 'user' | 'agent' | 'screen';\n source: Source;\n};\n\nexport function useParticipantTrack({\n type,\n source,\n}: UseParticipantTrackProps) {\n const track = useTracks([source]).find((track) => {\n if (type === 'screen') {\n return track.source === Source.ScreenShare;\n }\n if (type === 'user') {\n return track.participant.isLocal;\n }\n if (type === 'agent') {\n return track.participant.isAgent;\n }\n return false;\n });\n\n return track?.publication! || {};\n}\n"],"mappings":";;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAAuC,IAE3BE,MAAM,GAAAC,OAAA,CAAAD,MAAA,aAANA,MAAM;EAANA,MAAM,CAANA,MAAM,aACPE,oBAAK,CAACF,MAAM,CAACG,MAAM;EADlBH,MAAM,CAANA,MAAM,iBAEHE,oBAAK,CAACF,MAAM,CAACI,UAAU;EAF1BJ,MAAM,CAANA,MAAM,kBAGFE,oBAAK,CAACF,MAAM,CAACK,WAAW;EAAA,OAH5BL,MAAM;AAAA;AAWX,SAASM,mBAAmBA,CAAC;EAClCC,IAAI;EACJC;AACwB,CAAC,EAAE;EAC3B,MAAMC,KAAK,GAAG,IAAAC,0BAAS,EAAC,CAACF,MAAM,CAAC,CAAC,CAACG,IAAI,CAAEF,KAAK,IAAK;IAChD,IAAIF,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAOE,KAAK,CAACD,MAAM,KAAKR,MAAM,CAACK,WAAW;IAC5C;IACA,IAAIE,IAAI,KAAK,MAAM,EAAE;MACnB,OAAOE,KAAK,CAACG,WAAW,CAACC,OAAO;IAClC;IACA,IAAIN,IAAI,KAAK,OAAO,EAAE;MACpB,OAAOE,KAAK,CAACG,WAAW,CAACE,OAAO;IAClC;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,OAAO,CAAAL,KAAK,oBAALA,KAAK,CAAEM,WAAW,KAAK,CAAC,CAAC;AAClC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.usePictureInPictureAuto = exports.usePictureInPicture = exports.pipVideoAtom = exports.pipSupportedAtom = exports.pipActiveAtom = void 0;
|
|
5
|
+
var _usePictureInPicture = require("./usePictureInPicture");
|
|
6
|
+
exports.usePictureInPicture = _usePictureInPicture.usePictureInPicture;
|
|
7
|
+
var _usePictureInPictureAuto = require("./usePictureInPictureAuto");
|
|
8
|
+
exports.usePictureInPictureAuto = _usePictureInPictureAuto.usePictureInPictureAuto;
|
|
9
|
+
var _state = require("./state");
|
|
10
|
+
exports.pipVideoAtom = _state.pipVideoAtom;
|
|
11
|
+
exports.pipActiveAtom = _state.pipActiveAtom;
|
|
12
|
+
exports.pipSupportedAtom = _state.pipSupportedAtom;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_usePictureInPicture","require","exports","usePictureInPicture","_usePictureInPictureAuto","usePictureInPictureAuto","_state","pipVideoAtom","pipActiveAtom","pipSupportedAtom"],"sources":["../../../../src/hooks/usePictureInPicture/index.ts"],"sourcesContent":["export { usePictureInPicture } from './usePictureInPicture';\nexport type { UsePictureInPictureReturn } from './types';\n\n// Internal exports - not exported from package\nexport { usePictureInPictureAuto } from './usePictureInPictureAuto';\nexport type { UsePictureInPictureAutoOptions } from './types';\nexport { pipVideoAtom, pipActiveAtom, pipSupportedAtom } from './state';\n"],"mappings":";;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAA4DC,OAAA,CAAAC,mBAAA,GAAAH,oBAAA,CAAAG,mBAAA;AAI5D,IAAAC,wBAAA,GAAAH,OAAA;AAAoEC,OAAA,CAAAG,uBAAA,GAAAD,wBAAA,CAAAC,uBAAA;AAEpE,IAAAC,MAAA,GAAAL,OAAA;AAAwEC,OAAA,CAAAK,YAAA,GAAAD,MAAA,CAAAC,YAAA;AAAAL,OAAA,CAAAM,aAAA,GAAAF,MAAA,CAAAE,aAAA;AAAAN,OAAA,CAAAO,gBAAA,GAAAH,MAAA,CAAAG,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.pipVideoAtom = exports.pipSupportedAtom = exports.pipActiveAtom = void 0;
|
|
5
|
+
var _jotai = require("jotai");
|
|
6
|
+
var _compatibility = require("../../utils/compatibility/compatibility");
|
|
7
|
+
const pipVideoAtom = exports.pipVideoAtom = (0, _jotai.atom)(null);
|
|
8
|
+
const pipActiveAtom = exports.pipActiveAtom = (0, _jotai.atom)(false);
|
|
9
|
+
const pipSupportedAtom = exports.pipSupportedAtom = (0, _jotai.atom)(() => {
|
|
10
|
+
const browser = (0, _compatibility.detectBrowser)();
|
|
11
|
+
const pictureInPictureEnabled = typeof document !== 'undefined' && 'pictureInPictureEnabled' in document && document.pictureInPictureEnabled;
|
|
12
|
+
return browser !== 'safari' && pictureInPictureEnabled;
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_jotai","require","_compatibility","pipVideoAtom","exports","atom","pipActiveAtom","pipSupportedAtom","browser","detectBrowser","pictureInPictureEnabled","document"],"sources":["../../../../src/hooks/usePictureInPicture/state.ts"],"sourcesContent":["import { atom } from 'jotai';\nimport { detectBrowser } from '../../utils/compatibility/compatibility';\n\nexport const pipVideoAtom = atom<HTMLVideoElement | null>(null);\n\nexport const pipActiveAtom = atom(false);\n\nexport const pipSupportedAtom = atom(() => {\n const browser = detectBrowser();\n const pictureInPictureEnabled =\n typeof document !== 'undefined' &&\n 'pictureInPictureEnabled' in document &&\n document.pictureInPictureEnabled;\n\n return browser !== 'safari' && pictureInPictureEnabled;\n});\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEO,MAAME,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,IAAAE,WAAI,EAA0B,IAAI,CAAC;AAExD,MAAMC,aAAa,GAAAF,OAAA,CAAAE,aAAA,GAAG,IAAAD,WAAI,EAAC,KAAK,CAAC;AAEjC,MAAME,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG,IAAAF,WAAI,EAAC,MAAM;EACzC,MAAMG,OAAO,GAAG,IAAAC,4BAAa,EAAC,CAAC;EAC/B,MAAMC,uBAAuB,GAC3B,OAAOC,QAAQ,KAAK,WAAW,IAC/B,yBAAyB,IAAIA,QAAQ,IACrCA,QAAQ,CAACD,uBAAuB;EAElC,OAAOF,OAAO,KAAK,QAAQ,IAAIE,uBAAuB;AACxD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/hooks/usePictureInPicture/types.ts"],"sourcesContent":["export type UsePictureInPictureAutoOptions = {\n /** Video or Canvas element to use for PiP */\n element: HTMLVideoElement | HTMLCanvasElement | null;\n /** Callback when entering PiP */\n onEnter?: () => void;\n /** Callback when exiting PiP */\n onExit?: () => void;\n /** Callback when PiP error occurs */\n onError?: (error: Error) => void;\n};\n\nexport type UsePictureInPictureReturn = {\n /** Whether PiP is currently active */\n isActive: boolean;\n /** Whether PiP is supported by the browser */\n isSupported: boolean;\n /** Whether video element is ready for PiP */\n isReady: boolean;\n /** Enter PiP mode */\n enter: () => Promise<void>;\n /** Exit PiP mode */\n exit: () => Promise<void>;\n /** Toggle PiP mode */\n toggle: () => Promise<void>;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.usePictureInPicture = usePictureInPicture;
|
|
5
|
+
var _react = require("react");
|
|
6
|
+
var _jotai = require("jotai");
|
|
7
|
+
var _state = require("./state");
|
|
8
|
+
function usePictureInPicture() {
|
|
9
|
+
const isActive = (0, _jotai.useAtomValue)(_state.pipActiveAtom);
|
|
10
|
+
const isSupported = (0, _jotai.useAtomValue)(_state.pipSupportedAtom);
|
|
11
|
+
const pipVideo = (0, _jotai.useAtomValue)(_state.pipVideoAtom);
|
|
12
|
+
const enter = (0, _react.useCallback)(async () => {
|
|
13
|
+
if (!isSupported) {
|
|
14
|
+
throw new Error('PiP not supported');
|
|
15
|
+
}
|
|
16
|
+
if (!pipVideo) {
|
|
17
|
+
throw new Error('No video element for PiP');
|
|
18
|
+
}
|
|
19
|
+
if (pipVideo.paused && pipVideo.srcObject) {
|
|
20
|
+
await pipVideo.play();
|
|
21
|
+
}
|
|
22
|
+
await pipVideo.requestPictureInPicture();
|
|
23
|
+
}, [isSupported, pipVideo]);
|
|
24
|
+
const exit = (0, _react.useCallback)(async () => {
|
|
25
|
+
if (document.pictureInPictureElement) {
|
|
26
|
+
await document.exitPictureInPicture();
|
|
27
|
+
}
|
|
28
|
+
}, []);
|
|
29
|
+
const toggle = (0, _react.useCallback)(async () => {
|
|
30
|
+
if (isActive) {
|
|
31
|
+
await exit();
|
|
32
|
+
} else {
|
|
33
|
+
await enter();
|
|
34
|
+
}
|
|
35
|
+
}, [isActive, enter, exit]);
|
|
36
|
+
return {
|
|
37
|
+
isActive,
|
|
38
|
+
isSupported,
|
|
39
|
+
isReady: !!pipVideo,
|
|
40
|
+
enter,
|
|
41
|
+
exit,
|
|
42
|
+
toggle
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=usePictureInPicture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_jotai","_state","usePictureInPicture","isActive","useAtomValue","pipActiveAtom","isSupported","pipSupportedAtom","pipVideo","pipVideoAtom","enter","useCallback","Error","paused","srcObject","play","requestPictureInPicture","exit","document","pictureInPictureElement","exitPictureInPicture","toggle","isReady"],"sources":["../../../../src/hooks/usePictureInPicture/usePictureInPicture.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { useAtomValue } from 'jotai';\n\nimport { pipVideoAtom, pipActiveAtom, pipSupportedAtom } from './state';\nimport type { UsePictureInPictureReturn } from './types';\n\nexport function usePictureInPicture(): UsePictureInPictureReturn {\n const isActive = useAtomValue(pipActiveAtom);\n const isSupported = useAtomValue(pipSupportedAtom);\n const pipVideo = useAtomValue(pipVideoAtom);\n\n const enter = useCallback(async () => {\n if (!isSupported) {\n throw new Error('PiP not supported');\n }\n if (!pipVideo) {\n throw new Error('No video element for PiP');\n }\n\n if (pipVideo.paused && pipVideo.srcObject) {\n await pipVideo.play();\n }\n await pipVideo.requestPictureInPicture();\n }, [isSupported, pipVideo]);\n\n const exit = useCallback(async () => {\n if (document.pictureInPictureElement) {\n await document.exitPictureInPicture();\n }\n }, []);\n\n const toggle = useCallback(async () => {\n if (isActive) {\n await exit();\n } else {\n await enter();\n }\n }, [isActive, enter, exit]);\n\n return {\n isActive,\n isSupported,\n isReady: !!pipVideo,\n enter,\n exit,\n toggle,\n };\n}\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAGO,SAASG,mBAAmBA,CAAA,EAA8B;EAC/D,MAAMC,QAAQ,GAAG,IAAAC,mBAAY,EAACC,oBAAa,CAAC;EAC5C,MAAMC,WAAW,GAAG,IAAAF,mBAAY,EAACG,uBAAgB,CAAC;EAClD,MAAMC,QAAQ,GAAG,IAAAJ,mBAAY,EAACK,mBAAY,CAAC;EAE3C,MAAMC,KAAK,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACpC,IAAI,CAACL,WAAW,EAAE;MAChB,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;IACtC;IACA,IAAI,CAACJ,QAAQ,EAAE;MACb,MAAM,IAAII,KAAK,CAAC,0BAA0B,CAAC;IAC7C;IAEA,IAAIJ,QAAQ,CAACK,MAAM,IAAIL,QAAQ,CAACM,SAAS,EAAE;MACzC,MAAMN,QAAQ,CAACO,IAAI,CAAC,CAAC;IACvB;IACA,MAAMP,QAAQ,CAACQ,uBAAuB,CAAC,CAAC;EAC1C,CAAC,EAAE,CAACV,WAAW,EAAEE,QAAQ,CAAC,CAAC;EAE3B,MAAMS,IAAI,GAAG,IAAAN,kBAAW,EAAC,YAAY;IACnC,IAAIO,QAAQ,CAACC,uBAAuB,EAAE;MACpC,MAAMD,QAAQ,CAACE,oBAAoB,CAAC,CAAC;IACvC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,MAAM,GAAG,IAAAV,kBAAW,EAAC,YAAY;IACrC,IAAIR,QAAQ,EAAE;MACZ,MAAMc,IAAI,CAAC,CAAC;IACd,CAAC,MAAM;MACL,MAAMP,KAAK,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACP,QAAQ,EAAEO,KAAK,EAAEO,IAAI,CAAC,CAAC;EAE3B,OAAO;IACLd,QAAQ;IACRG,WAAW;IACXgB,OAAO,EAAE,CAAC,CAACd,QAAQ;IACnBE,KAAK;IACLO,IAAI;IACJI;EACF,CAAC;AACH","ignoreList":[]}
|