@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.
Files changed (785) hide show
  1. package/README.md +186 -0
  2. package/components/package.json +5 -0
  3. package/dist/cjs/components/Audio/Audio.js +31 -0
  4. package/dist/cjs/components/Audio/Audio.js.map +1 -0
  5. package/dist/cjs/components/Audio/index.js +10 -0
  6. package/dist/cjs/components/Audio/index.js.map +1 -0
  7. package/dist/cjs/components/ChromaKey/ChromaKey.js +127 -0
  8. package/dist/cjs/components/ChromaKey/ChromaKey.js.map +1 -0
  9. package/dist/cjs/components/ChromaKey/chroma-key.js +99 -0
  10. package/dist/cjs/components/ChromaKey/chroma-key.js.map +1 -0
  11. package/dist/cjs/components/ChromaKey/index.js +10 -0
  12. package/dist/cjs/components/ChromaKey/index.js.map +1 -0
  13. package/dist/cjs/components/ChromaKey/shaders/chroma-key.shader.js +44 -0
  14. package/dist/cjs/components/ChromaKey/shaders/chroma-key.shader.js.map +1 -0
  15. package/dist/cjs/components/ChromaKey/shaders/index.js +10 -0
  16. package/dist/cjs/components/ChromaKey/shaders/index.js.map +1 -0
  17. package/dist/cjs/components/ChromaKey/shaders/vertex-align.shader.js +12 -0
  18. package/dist/cjs/components/ChromaKey/shaders/vertex-align.shader.js.map +1 -0
  19. package/dist/cjs/components/ChromaKey/types.js +4 -0
  20. package/dist/cjs/components/ChromaKey/types.js.map +1 -0
  21. package/dist/cjs/components/LegendsPlatform/LegendsPlatform.js +91 -0
  22. package/dist/cjs/components/LegendsPlatform/LegendsPlatform.js.map +1 -0
  23. package/dist/cjs/components/LegendsPlatform/index.js +10 -0
  24. package/dist/cjs/components/LegendsPlatform/index.js.map +1 -0
  25. package/dist/cjs/components/LegendsPlatformQLess/LegendsPlatform.js +69 -0
  26. package/dist/cjs/components/LegendsPlatformQLess/LegendsPlatform.js.map +1 -0
  27. package/dist/cjs/components/LegendsPlatformQLess/index.js +10 -0
  28. package/dist/cjs/components/LegendsPlatformQLess/index.js.map +1 -0
  29. package/dist/cjs/components/Video/Video.js +88 -0
  30. package/dist/cjs/components/Video/Video.js.map +1 -0
  31. package/dist/cjs/components/Video/index.js +16 -0
  32. package/dist/cjs/components/Video/index.js.map +1 -0
  33. package/dist/cjs/components/Video/types.js +4 -0
  34. package/dist/cjs/components/Video/types.js.map +1 -0
  35. package/dist/cjs/components/Video/useAttachVideo.js +33 -0
  36. package/dist/cjs/components/Video/useAttachVideo.js.map +1 -0
  37. package/dist/cjs/components/VideoPostProcessor/VideoPostProcessor.js +61 -0
  38. package/dist/cjs/components/VideoPostProcessor/VideoPostProcessor.js.map +1 -0
  39. package/dist/cjs/components/VideoPostProcessor/effects.js +30 -0
  40. package/dist/cjs/components/VideoPostProcessor/effects.js.map +1 -0
  41. package/dist/cjs/components/VideoPostProcessor/index.js +10 -0
  42. package/dist/cjs/components/VideoPostProcessor/index.js.map +1 -0
  43. package/dist/cjs/components/VideoPreview/VideoPreview.js +68 -0
  44. package/dist/cjs/components/VideoPreview/VideoPreview.js.map +1 -0
  45. package/dist/cjs/components/VideoPreview/index.js +16 -0
  46. package/dist/cjs/components/VideoPreview/index.js.map +1 -0
  47. package/dist/cjs/components/VideoPreview/types.js +4 -0
  48. package/dist/cjs/components/VideoPreview/types.js.map +1 -0
  49. package/dist/cjs/components/VideoPreview/useVideoPreviewStream.js +85 -0
  50. package/dist/cjs/components/VideoPreview/useVideoPreviewStream.js.map +1 -0
  51. package/dist/cjs/components.js +34 -0
  52. package/dist/cjs/components.js.map +1 -0
  53. package/dist/cjs/conversation/index.js +18 -0
  54. package/dist/cjs/conversation/index.js.map +1 -0
  55. package/dist/cjs/conversation/state.js +24 -0
  56. package/dist/cjs/conversation/state.js.map +1 -0
  57. package/dist/cjs/conversation/types.js +4 -0
  58. package/dist/cjs/conversation/types.js.map +1 -0
  59. package/dist/cjs/conversation/utils.js +25 -0
  60. package/dist/cjs/conversation/utils.js.map +1 -0
  61. package/dist/cjs/external-types.d.js +2 -0
  62. package/dist/cjs/external-types.d.js.map +1 -0
  63. package/dist/cjs/hooks/index.js +58 -0
  64. package/dist/cjs/hooks/index.js.map +1 -0
  65. package/dist/cjs/hooks/useActivityState/index.js +10 -0
  66. package/dist/cjs/hooks/useActivityState/index.js.map +1 -0
  67. package/dist/cjs/hooks/useActivityState/useActivityState.js +15 -0
  68. package/dist/cjs/hooks/useActivityState/useActivityState.js.map +1 -0
  69. package/dist/cjs/hooks/useAudio/index.js +10 -0
  70. package/dist/cjs/hooks/useAudio/index.js.map +1 -0
  71. package/dist/cjs/hooks/useAudio/useAudio.js +28 -0
  72. package/dist/cjs/hooks/useAudio/useAudio.js.map +1 -0
  73. package/dist/cjs/hooks/useAudioLevel/helpers.js +28 -0
  74. package/dist/cjs/hooks/useAudioLevel/helpers.js.map +1 -0
  75. package/dist/cjs/hooks/useAudioLevel/index.js +10 -0
  76. package/dist/cjs/hooks/useAudioLevel/index.js.map +1 -0
  77. package/dist/cjs/hooks/useAudioLevel/types.js +4 -0
  78. package/dist/cjs/hooks/useAudioLevel/types.js.map +1 -0
  79. package/dist/cjs/hooks/useAudioLevel/useAudioLevel.js +49 -0
  80. package/dist/cjs/hooks/useAudioLevel/useAudioLevel.js.map +1 -0
  81. package/dist/cjs/hooks/useCamera/index.js +10 -0
  82. package/dist/cjs/hooks/useCamera/index.js.map +1 -0
  83. package/dist/cjs/hooks/useCamera/useCamera.js +32 -0
  84. package/dist/cjs/hooks/useCamera/useCamera.js.map +1 -0
  85. package/dist/cjs/hooks/useConnectionState/index.js +10 -0
  86. package/dist/cjs/hooks/useConnectionState/index.js.map +1 -0
  87. package/dist/cjs/hooks/useConnectionState/useConnectionState.js +15 -0
  88. package/dist/cjs/hooks/useConnectionState/useConnectionState.js.map +1 -0
  89. package/dist/cjs/hooks/useConversation/index.js +16 -0
  90. package/dist/cjs/hooks/useConversation/index.js.map +1 -0
  91. package/dist/cjs/hooks/useConversation/livekit/constants.js +15 -0
  92. package/dist/cjs/hooks/useConversation/livekit/constants.js.map +1 -0
  93. package/dist/cjs/hooks/useConversation/livekit/types.js +4 -0
  94. package/dist/cjs/hooks/useConversation/livekit/types.js.map +1 -0
  95. package/dist/cjs/hooks/useConversation/livekit/useConversation.js +371 -0
  96. package/dist/cjs/hooks/useConversation/livekit/useConversation.js.map +1 -0
  97. package/dist/cjs/hooks/useConversation/livekit/utils/dataChannel.js +25 -0
  98. package/dist/cjs/hooks/useConversation/livekit/utils/dataChannel.js.map +1 -0
  99. package/dist/cjs/hooks/useConversation/livekit/utils/index.js +40 -0
  100. package/dist/cjs/hooks/useConversation/livekit/utils/index.js.map +1 -0
  101. package/dist/cjs/hooks/useConversation/livekit/utils/messaging.js +11 -0
  102. package/dist/cjs/hooks/useConversation/livekit/utils/messaging.js.map +1 -0
  103. package/dist/cjs/hooks/useConversation/livekit/utils/participants.js +34 -0
  104. package/dist/cjs/hooks/useConversation/livekit/utils/participants.js.map +1 -0
  105. package/dist/cjs/hooks/useConversation/livekit/utils/serialization.js +13 -0
  106. package/dist/cjs/hooks/useConversation/livekit/utils/serialization.js.map +1 -0
  107. package/dist/cjs/hooks/useConversation/livekit/utils/toolAdapter.js +18 -0
  108. package/dist/cjs/hooks/useConversation/livekit/utils/toolAdapter.js.map +1 -0
  109. package/dist/cjs/hooks/useConversation/livekit/utils/transcriptions.js +15 -0
  110. package/dist/cjs/hooks/useConversation/livekit/utils/transcriptions.js.map +1 -0
  111. package/dist/cjs/hooks/useConversation/types.js +4 -0
  112. package/dist/cjs/hooks/useConversation/types.js.map +1 -0
  113. package/dist/cjs/hooks/useConversation/useConversation.js +99 -0
  114. package/dist/cjs/hooks/useConversation/useConversation.js.map +1 -0
  115. package/dist/cjs/hooks/useConversationEvents/index.js +22 -0
  116. package/dist/cjs/hooks/useConversationEvents/index.js.map +1 -0
  117. package/dist/cjs/hooks/useConversationEvents/types.js +4 -0
  118. package/dist/cjs/hooks/useConversationEvents/types.js.map +1 -0
  119. package/dist/cjs/hooks/useConversationEvents/useConversationEvent.js +11 -0
  120. package/dist/cjs/hooks/useConversationEvents/useConversationEvent.js.map +1 -0
  121. package/dist/cjs/hooks/useConversationEvents/useConversationEvents.js +20 -0
  122. package/dist/cjs/hooks/useConversationEvents/useConversationEvents.js.map +1 -0
  123. package/dist/cjs/hooks/useConversationEvents/useEmitConversationEvent.js +13 -0
  124. package/dist/cjs/hooks/useConversationEvents/useEmitConversationEvent.js.map +1 -0
  125. package/dist/cjs/hooks/useConversationStatus/index.js +10 -0
  126. package/dist/cjs/hooks/useConversationStatus/index.js.map +1 -0
  127. package/dist/cjs/hooks/useConversationStatus/useConversationStatus.js +10 -0
  128. package/dist/cjs/hooks/useConversationStatus/useConversationStatus.js.map +1 -0
  129. package/dist/cjs/hooks/useConversationTimer/index.js +10 -0
  130. package/dist/cjs/hooks/useConversationTimer/index.js.map +1 -0
  131. package/dist/cjs/hooks/useConversationTimer/useConversationTimer.js +45 -0
  132. package/dist/cjs/hooks/useConversationTimer/useConversationTimer.js.map +1 -0
  133. package/dist/cjs/hooks/useCreateConversation/helpers.js +8 -0
  134. package/dist/cjs/hooks/useCreateConversation/helpers.js.map +1 -0
  135. package/dist/cjs/hooks/useCreateConversation/index.js +10 -0
  136. package/dist/cjs/hooks/useCreateConversation/index.js.map +1 -0
  137. package/dist/cjs/hooks/useCreateConversation/useCreateConversation.js +104 -0
  138. package/dist/cjs/hooks/useCreateConversation/useCreateConversation.js.map +1 -0
  139. package/dist/cjs/hooks/useDeviceSwitcher/index.js +10 -0
  140. package/dist/cjs/hooks/useDeviceSwitcher/index.js.map +1 -0
  141. package/dist/cjs/hooks/useDeviceSwitcher/useDeviceSwitcher.js +31 -0
  142. package/dist/cjs/hooks/useDeviceSwitcher/useDeviceSwitcher.js.map +1 -0
  143. package/dist/cjs/hooks/useDevices/index.js +10 -0
  144. package/dist/cjs/hooks/useDevices/index.js.map +1 -0
  145. package/dist/cjs/hooks/useDevices/useDevices.js +49 -0
  146. package/dist/cjs/hooks/useDevices/useDevices.js.map +1 -0
  147. package/dist/cjs/hooks/useMediaPermissions/index.js +10 -0
  148. package/dist/cjs/hooks/useMediaPermissions/index.js.map +1 -0
  149. package/dist/cjs/hooks/useMediaPermissions/types.js +4 -0
  150. package/dist/cjs/hooks/useMediaPermissions/types.js.map +1 -0
  151. package/dist/cjs/hooks/useMediaPermissions/useMediaPermissions.js +46 -0
  152. package/dist/cjs/hooks/useMediaPermissions/useMediaPermissions.js.map +1 -0
  153. package/dist/cjs/hooks/useMediaRecorder/index.js +10 -0
  154. package/dist/cjs/hooks/useMediaRecorder/index.js.map +1 -0
  155. package/dist/cjs/hooks/useMediaRecorder/useMediaRecorder.js +229 -0
  156. package/dist/cjs/hooks/useMediaRecorder/useMediaRecorder.js.map +1 -0
  157. package/dist/cjs/hooks/useMediaRecorder/useReactRecorder.js +298 -0
  158. package/dist/cjs/hooks/useMediaRecorder/useReactRecorder.js.map +1 -0
  159. package/dist/cjs/hooks/useMicrophone/index.js +10 -0
  160. package/dist/cjs/hooks/useMicrophone/index.js.map +1 -0
  161. package/dist/cjs/hooks/useMicrophone/useMicrophone.js +38 -0
  162. package/dist/cjs/hooks/useMicrophone/useMicrophone.js.map +1 -0
  163. package/dist/cjs/hooks/useParticipantTrack/index.js +10 -0
  164. package/dist/cjs/hooks/useParticipantTrack/index.js.map +1 -0
  165. package/dist/cjs/hooks/useParticipantTrack/useParticipantTrack.js +32 -0
  166. package/dist/cjs/hooks/useParticipantTrack/useParticipantTrack.js.map +1 -0
  167. package/dist/cjs/hooks/usePictureInPicture/index.js +13 -0
  168. package/dist/cjs/hooks/usePictureInPicture/index.js.map +1 -0
  169. package/dist/cjs/hooks/usePictureInPicture/state.js +14 -0
  170. package/dist/cjs/hooks/usePictureInPicture/state.js.map +1 -0
  171. package/dist/cjs/hooks/usePictureInPicture/types.js +4 -0
  172. package/dist/cjs/hooks/usePictureInPicture/types.js.map +1 -0
  173. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.js +45 -0
  174. package/dist/cjs/hooks/usePictureInPicture/usePictureInPicture.js.map +1 -0
  175. package/dist/cjs/hooks/usePictureInPicture/usePictureInPictureAuto.js +116 -0
  176. package/dist/cjs/hooks/usePictureInPicture/usePictureInPictureAuto.js.map +1 -0
  177. package/dist/cjs/hooks/useScreenShare/index.js +10 -0
  178. package/dist/cjs/hooks/useScreenShare/index.js.map +1 -0
  179. package/dist/cjs/hooks/useScreenShare/useScreenShare.js +45 -0
  180. package/dist/cjs/hooks/useScreenShare/useScreenShare.js.map +1 -0
  181. package/dist/cjs/hooks/useSpeaker/index.js +10 -0
  182. package/dist/cjs/hooks/useSpeaker/index.js.map +1 -0
  183. package/dist/cjs/hooks/useSpeaker/useSpeaker.js +31 -0
  184. package/dist/cjs/hooks/useSpeaker/useSpeaker.js.map +1 -0
  185. package/dist/cjs/hooks/useTextChat/index.js +10 -0
  186. package/dist/cjs/hooks/useTextChat/index.js.map +1 -0
  187. package/dist/cjs/hooks/useTextChat/usePendingMessages.js +23 -0
  188. package/dist/cjs/hooks/useTextChat/usePendingMessages.js.map +1 -0
  189. package/dist/cjs/hooks/useTextChat/useTextChat.js +62 -0
  190. package/dist/cjs/hooks/useTextChat/useTextChat.js.map +1 -0
  191. package/dist/cjs/hooks/useTextChat/useToolAwareSend.js +33 -0
  192. package/dist/cjs/hooks/useTextChat/useToolAwareSend.js.map +1 -0
  193. package/dist/cjs/hooks/useTools/index.js +9 -0
  194. package/dist/cjs/hooks/useTools/index.js.map +1 -0
  195. package/dist/cjs/hooks/useTools/model/errors.js +12 -0
  196. package/dist/cjs/hooks/useTools/model/errors.js.map +1 -0
  197. package/dist/cjs/hooks/useTools/model/types.js +4 -0
  198. package/dist/cjs/hooks/useTools/model/types.js.map +1 -0
  199. package/dist/cjs/hooks/useTools/public/useTools.js +11 -0
  200. package/dist/cjs/hooks/useTools/public/useTools.js.map +1 -0
  201. package/dist/cjs/hooks/useTools/runtime/createToolRuntimeSession.js +74 -0
  202. package/dist/cjs/hooks/useTools/runtime/createToolRuntimeSession.js.map +1 -0
  203. package/dist/cjs/hooks/useTools/runtime/executeToolCall.js +33 -0
  204. package/dist/cjs/hooks/useTools/runtime/executeToolCall.js.map +1 -0
  205. package/dist/cjs/hooks/useTools/runtime/executeToolCallBatch.js +41 -0
  206. package/dist/cjs/hooks/useTools/runtime/executeToolCallBatch.js.map +1 -0
  207. package/dist/cjs/hooks/useTools/runtime/types.js +4 -0
  208. package/dist/cjs/hooks/useTools/runtime/types.js.map +1 -0
  209. package/dist/cjs/hooks/useTools/runtime/useToolCallingRuntime.js +59 -0
  210. package/dist/cjs/hooks/useTools/runtime/useToolCallingRuntime.js.map +1 -0
  211. package/dist/cjs/hooks/useTools/store/state.js +30 -0
  212. package/dist/cjs/hooks/useTools/store/state.js.map +1 -0
  213. package/dist/cjs/hooks/useTools/utils/normalizeFunctionCall.js +22 -0
  214. package/dist/cjs/hooks/useTools/utils/normalizeFunctionCall.js.map +1 -0
  215. package/dist/cjs/hooks/useTools/utils/serialize.js +28 -0
  216. package/dist/cjs/hooks/useTools/utils/serialize.js.map +1 -0
  217. package/dist/cjs/hooks/useTranscriptions/index.js +16 -0
  218. package/dist/cjs/hooks/useTranscriptions/index.js.map +1 -0
  219. package/dist/cjs/hooks/useTranscriptions/types.js +4 -0
  220. package/dist/cjs/hooks/useTranscriptions/types.js.map +1 -0
  221. package/dist/cjs/hooks/useTranscriptions/useTranscription.js +16 -0
  222. package/dist/cjs/hooks/useTranscriptions/useTranscription.js.map +1 -0
  223. package/dist/cjs/hooks/useTranscriptions/useTranscriptions.js +18 -0
  224. package/dist/cjs/hooks/useTranscriptions/useTranscriptions.js.map +1 -0
  225. package/dist/cjs/hooks/useUserActivity/index.js +10 -0
  226. package/dist/cjs/hooks/useUserActivity/index.js.map +1 -0
  227. package/dist/cjs/hooks/useUserActivity/useUserActivity.js +23 -0
  228. package/dist/cjs/hooks/useUserActivity/useUserActivity.js.map +1 -0
  229. package/dist/cjs/livekit/components.js +10 -0
  230. package/dist/cjs/livekit/components.js.map +1 -0
  231. package/dist/cjs/livekit/sdk.js +10 -0
  232. package/dist/cjs/livekit/sdk.js.map +1 -0
  233. package/dist/cjs/sdk-consumer/context.js +15 -0
  234. package/dist/cjs/sdk-consumer/context.js.map +1 -0
  235. package/dist/cjs/sdk-consumer/index.js +10 -0
  236. package/dist/cjs/sdk-consumer/index.js.map +1 -0
  237. package/dist/cjs/sdk.js +148 -0
  238. package/dist/cjs/sdk.js.map +1 -0
  239. package/dist/cjs/services/FetchPersonaChatService.js +139 -0
  240. package/dist/cjs/services/FetchPersonaChatService.js.map +1 -0
  241. package/dist/cjs/test-types.d.js +2 -0
  242. package/dist/cjs/test-types.d.js.map +1 -0
  243. package/dist/cjs/types/http.js +14 -0
  244. package/dist/cjs/types/http.js.map +1 -0
  245. package/dist/cjs/types/index.js +7 -0
  246. package/dist/cjs/types/index.js.map +1 -0
  247. package/dist/cjs/types/service.js +4 -0
  248. package/dist/cjs/types/service.js.map +1 -0
  249. package/dist/cjs/utils/captureImage/captureImage.js +29 -0
  250. package/dist/cjs/utils/captureImage/captureImage.js.map +1 -0
  251. package/dist/cjs/utils/captureImage/helpers.js +74 -0
  252. package/dist/cjs/utils/captureImage/helpers.js.map +1 -0
  253. package/dist/cjs/utils/captureImage/index.js +16 -0
  254. package/dist/cjs/utils/captureImage/index.js.map +1 -0
  255. package/dist/cjs/utils/captureImage/types.js +4 -0
  256. package/dist/cjs/utils/captureImage/types.js.map +1 -0
  257. package/dist/cjs/utils/compatibility/compatibility.js +17 -0
  258. package/dist/cjs/utils/compatibility/compatibility.js.map +1 -0
  259. package/dist/cjs/utils/compatibility/index.js +10 -0
  260. package/dist/cjs/utils/compatibility/index.js.map +1 -0
  261. package/dist/cjs/utils.js +10 -0
  262. package/dist/cjs/utils.js.map +1 -0
  263. package/dist/esm/components/Audio/Audio.js +18 -0
  264. package/dist/esm/components/Audio/Audio.js.map +1 -0
  265. package/dist/esm/components/Audio/index.js +2 -0
  266. package/dist/esm/components/Audio/index.js.map +1 -0
  267. package/dist/esm/components/ChromaKey/ChromaKey.js +115 -0
  268. package/dist/esm/components/ChromaKey/ChromaKey.js.map +1 -0
  269. package/dist/esm/components/ChromaKey/chroma-key.js +91 -0
  270. package/dist/esm/components/ChromaKey/chroma-key.js.map +1 -0
  271. package/dist/esm/components/ChromaKey/index.js +2 -0
  272. package/dist/esm/components/ChromaKey/index.js.map +1 -0
  273. package/dist/esm/components/ChromaKey/shaders/chroma-key.shader.js +40 -0
  274. package/dist/esm/components/ChromaKey/shaders/chroma-key.shader.js.map +1 -0
  275. package/dist/esm/components/ChromaKey/shaders/index.js +3 -0
  276. package/dist/esm/components/ChromaKey/shaders/index.js.map +1 -0
  277. package/dist/esm/components/ChromaKey/shaders/vertex-align.shader.js +8 -0
  278. package/dist/esm/components/ChromaKey/shaders/vertex-align.shader.js.map +1 -0
  279. package/dist/esm/components/ChromaKey/types.js +2 -0
  280. package/dist/esm/components/ChromaKey/types.js.map +1 -0
  281. package/dist/esm/components/LegendsPlatform/LegendsPlatform.js +53 -0
  282. package/dist/esm/components/LegendsPlatform/LegendsPlatform.js.map +1 -0
  283. package/dist/esm/components/LegendsPlatform/index.js +2 -0
  284. package/dist/esm/components/LegendsPlatform/index.js.map +1 -0
  285. package/dist/esm/components/LegendsPlatformQLess/LegendsPlatform.js +30 -0
  286. package/dist/esm/components/LegendsPlatformQLess/LegendsPlatform.js.map +1 -0
  287. package/dist/esm/components/LegendsPlatformQLess/index.js +2 -0
  288. package/dist/esm/components/LegendsPlatformQLess/index.js.map +1 -0
  289. package/dist/esm/components/Video/Video.js +73 -0
  290. package/dist/esm/components/Video/Video.js.map +1 -0
  291. package/dist/esm/components/Video/index.js +3 -0
  292. package/dist/esm/components/Video/index.js.map +1 -0
  293. package/dist/esm/components/Video/types.js +2 -0
  294. package/dist/esm/components/Video/types.js.map +1 -0
  295. package/dist/esm/components/Video/useAttachVideo.js +27 -0
  296. package/dist/esm/components/Video/useAttachVideo.js.map +1 -0
  297. package/dist/esm/components/VideoPostProcessor/VideoPostProcessor.js +47 -0
  298. package/dist/esm/components/VideoPostProcessor/VideoPostProcessor.js.map +1 -0
  299. package/dist/esm/components/VideoPostProcessor/effects.js +25 -0
  300. package/dist/esm/components/VideoPostProcessor/effects.js.map +1 -0
  301. package/dist/esm/components/VideoPostProcessor/index.js +2 -0
  302. package/dist/esm/components/VideoPostProcessor/index.js.map +1 -0
  303. package/dist/esm/components/VideoPreview/VideoPreview.js +48 -0
  304. package/dist/esm/components/VideoPreview/VideoPreview.js.map +1 -0
  305. package/dist/esm/components/VideoPreview/index.js +3 -0
  306. package/dist/esm/components/VideoPreview/index.js.map +1 -0
  307. package/dist/esm/components/VideoPreview/types.js +2 -0
  308. package/dist/esm/components/VideoPreview/types.js.map +1 -0
  309. package/dist/esm/components/VideoPreview/useVideoPreviewStream.js +85 -0
  310. package/dist/esm/components/VideoPreview/useVideoPreviewStream.js.map +1 -0
  311. package/dist/esm/components.js +6 -0
  312. package/dist/esm/components.js.map +1 -0
  313. package/dist/esm/conversation/index.js +4 -0
  314. package/dist/esm/conversation/index.js.map +1 -0
  315. package/dist/esm/conversation/state.js +20 -0
  316. package/dist/esm/conversation/state.js.map +1 -0
  317. package/dist/esm/conversation/types.js +2 -0
  318. package/dist/esm/conversation/types.js.map +1 -0
  319. package/dist/esm/conversation/utils.js +21 -0
  320. package/dist/esm/conversation/utils.js.map +1 -0
  321. package/dist/esm/external-types.d.js +2 -0
  322. package/dist/esm/external-types.d.js.map +1 -0
  323. package/dist/esm/hooks/index.js +10 -0
  324. package/dist/esm/hooks/index.js.map +1 -0
  325. package/dist/esm/hooks/useActivityState/index.js +2 -0
  326. package/dist/esm/hooks/useActivityState/index.js.map +1 -0
  327. package/dist/esm/hooks/useActivityState/useActivityState.js +11 -0
  328. package/dist/esm/hooks/useActivityState/useActivityState.js.map +1 -0
  329. package/dist/esm/hooks/useAudio/index.js +2 -0
  330. package/dist/esm/hooks/useAudio/index.js.map +1 -0
  331. package/dist/esm/hooks/useAudio/useAudio.js +26 -0
  332. package/dist/esm/hooks/useAudio/useAudio.js.map +1 -0
  333. package/dist/esm/hooks/useAudioLevel/helpers.js +23 -0
  334. package/dist/esm/hooks/useAudioLevel/helpers.js.map +1 -0
  335. package/dist/esm/hooks/useAudioLevel/index.js +2 -0
  336. package/dist/esm/hooks/useAudioLevel/index.js.map +1 -0
  337. package/dist/esm/hooks/useAudioLevel/types.js +2 -0
  338. package/dist/esm/hooks/useAudioLevel/types.js.map +1 -0
  339. package/dist/esm/hooks/useAudioLevel/useAudioLevel.js +43 -0
  340. package/dist/esm/hooks/useAudioLevel/useAudioLevel.js.map +1 -0
  341. package/dist/esm/hooks/useCamera/index.js +2 -0
  342. package/dist/esm/hooks/useCamera/index.js.map +1 -0
  343. package/dist/esm/hooks/useCamera/useCamera.js +29 -0
  344. package/dist/esm/hooks/useCamera/useCamera.js.map +1 -0
  345. package/dist/esm/hooks/useConnectionState/index.js +2 -0
  346. package/dist/esm/hooks/useConnectionState/index.js.map +1 -0
  347. package/dist/esm/hooks/useConnectionState/useConnectionState.js +11 -0
  348. package/dist/esm/hooks/useConnectionState/useConnectionState.js.map +1 -0
  349. package/dist/esm/hooks/useConversation/index.js +3 -0
  350. package/dist/esm/hooks/useConversation/index.js.map +1 -0
  351. package/dist/esm/hooks/useConversation/livekit/constants.js +11 -0
  352. package/dist/esm/hooks/useConversation/livekit/constants.js.map +1 -0
  353. package/dist/esm/hooks/useConversation/livekit/types.js +2 -0
  354. package/dist/esm/hooks/useConversation/livekit/types.js.map +1 -0
  355. package/dist/esm/hooks/useConversation/livekit/useConversation.js +377 -0
  356. package/dist/esm/hooks/useConversation/livekit/useConversation.js.map +1 -0
  357. package/dist/esm/hooks/useConversation/livekit/utils/dataChannel.js +18 -0
  358. package/dist/esm/hooks/useConversation/livekit/utils/dataChannel.js.map +1 -0
  359. package/dist/esm/hooks/useConversation/livekit/utils/index.js +7 -0
  360. package/dist/esm/hooks/useConversation/livekit/utils/index.js.map +1 -0
  361. package/dist/esm/hooks/useConversation/livekit/utils/messaging.js +7 -0
  362. package/dist/esm/hooks/useConversation/livekit/utils/messaging.js.map +1 -0
  363. package/dist/esm/hooks/useConversation/livekit/utils/participants.js +28 -0
  364. package/dist/esm/hooks/useConversation/livekit/utils/participants.js.map +1 -0
  365. package/dist/esm/hooks/useConversation/livekit/utils/serialization.js +9 -0
  366. package/dist/esm/hooks/useConversation/livekit/utils/serialization.js.map +1 -0
  367. package/dist/esm/hooks/useConversation/livekit/utils/toolAdapter.js +14 -0
  368. package/dist/esm/hooks/useConversation/livekit/utils/toolAdapter.js.map +1 -0
  369. package/dist/esm/hooks/useConversation/livekit/utils/transcriptions.js +11 -0
  370. package/dist/esm/hooks/useConversation/livekit/utils/transcriptions.js.map +1 -0
  371. package/dist/esm/hooks/useConversation/types.js +2 -0
  372. package/dist/esm/hooks/useConversation/types.js.map +1 -0
  373. package/dist/esm/hooks/useConversation/useConversation.js +93 -0
  374. package/dist/esm/hooks/useConversation/useConversation.js.map +1 -0
  375. package/dist/esm/hooks/useConversationEvents/index.js +4 -0
  376. package/dist/esm/hooks/useConversationEvents/index.js.map +1 -0
  377. package/dist/esm/hooks/useConversationEvents/types.js +2 -0
  378. package/dist/esm/hooks/useConversationEvents/types.js.map +1 -0
  379. package/dist/esm/hooks/useConversationEvents/useConversationEvent.js +7 -0
  380. package/dist/esm/hooks/useConversationEvents/useConversationEvent.js.map +1 -0
  381. package/dist/esm/hooks/useConversationEvents/useConversationEvents.js +20 -0
  382. package/dist/esm/hooks/useConversationEvents/useConversationEvents.js.map +1 -0
  383. package/dist/esm/hooks/useConversationEvents/useEmitConversationEvent.js +9 -0
  384. package/dist/esm/hooks/useConversationEvents/useEmitConversationEvent.js.map +1 -0
  385. package/dist/esm/hooks/useConversationStatus/index.js +2 -0
  386. package/dist/esm/hooks/useConversationStatus/index.js.map +1 -0
  387. package/dist/esm/hooks/useConversationStatus/useConversationStatus.js +6 -0
  388. package/dist/esm/hooks/useConversationStatus/useConversationStatus.js.map +1 -0
  389. package/dist/esm/hooks/useConversationTimer/index.js +2 -0
  390. package/dist/esm/hooks/useConversationTimer/index.js.map +1 -0
  391. package/dist/esm/hooks/useConversationTimer/useConversationTimer.js +44 -0
  392. package/dist/esm/hooks/useConversationTimer/useConversationTimer.js.map +1 -0
  393. package/dist/esm/hooks/useCreateConversation/helpers.js +4 -0
  394. package/dist/esm/hooks/useCreateConversation/helpers.js.map +1 -0
  395. package/dist/esm/hooks/useCreateConversation/index.js +2 -0
  396. package/dist/esm/hooks/useCreateConversation/index.js.map +1 -0
  397. package/dist/esm/hooks/useCreateConversation/useCreateConversation.js +98 -0
  398. package/dist/esm/hooks/useCreateConversation/useCreateConversation.js.map +1 -0
  399. package/dist/esm/hooks/useDeviceSwitcher/index.js +2 -0
  400. package/dist/esm/hooks/useDeviceSwitcher/index.js.map +1 -0
  401. package/dist/esm/hooks/useDeviceSwitcher/useDeviceSwitcher.js +26 -0
  402. package/dist/esm/hooks/useDeviceSwitcher/useDeviceSwitcher.js.map +1 -0
  403. package/dist/esm/hooks/useDevices/index.js +2 -0
  404. package/dist/esm/hooks/useDevices/index.js.map +1 -0
  405. package/dist/esm/hooks/useDevices/useDevices.js +45 -0
  406. package/dist/esm/hooks/useDevices/useDevices.js.map +1 -0
  407. package/dist/esm/hooks/useMediaPermissions/index.js +3 -0
  408. package/dist/esm/hooks/useMediaPermissions/index.js.map +1 -0
  409. package/dist/esm/hooks/useMediaPermissions/types.js +2 -0
  410. package/dist/esm/hooks/useMediaPermissions/types.js.map +1 -0
  411. package/dist/esm/hooks/useMediaPermissions/useMediaPermissions.js +42 -0
  412. package/dist/esm/hooks/useMediaPermissions/useMediaPermissions.js.map +1 -0
  413. package/dist/esm/hooks/useMediaRecorder/index.js +2 -0
  414. package/dist/esm/hooks/useMediaRecorder/index.js.map +1 -0
  415. package/dist/esm/hooks/useMediaRecorder/useMediaRecorder.js +227 -0
  416. package/dist/esm/hooks/useMediaRecorder/useMediaRecorder.js.map +1 -0
  417. package/dist/esm/hooks/useMediaRecorder/useReactRecorder.js +315 -0
  418. package/dist/esm/hooks/useMediaRecorder/useReactRecorder.js.map +1 -0
  419. package/dist/esm/hooks/useMicrophone/index.js +2 -0
  420. package/dist/esm/hooks/useMicrophone/index.js.map +1 -0
  421. package/dist/esm/hooks/useMicrophone/useMicrophone.js +35 -0
  422. package/dist/esm/hooks/useMicrophone/useMicrophone.js.map +1 -0
  423. package/dist/esm/hooks/useParticipantTrack/index.js +2 -0
  424. package/dist/esm/hooks/useParticipantTrack/index.js.map +1 -0
  425. package/dist/esm/hooks/useParticipantTrack/useParticipantTrack.js +26 -0
  426. package/dist/esm/hooks/useParticipantTrack/useParticipantTrack.js.map +1 -0
  427. package/dist/esm/hooks/usePictureInPicture/index.js +5 -0
  428. package/dist/esm/hooks/usePictureInPicture/index.js.map +1 -0
  429. package/dist/esm/hooks/usePictureInPicture/state.js +10 -0
  430. package/dist/esm/hooks/usePictureInPicture/state.js.map +1 -0
  431. package/dist/esm/hooks/usePictureInPicture/types.js +2 -0
  432. package/dist/esm/hooks/usePictureInPicture/types.js.map +1 -0
  433. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.js +41 -0
  434. package/dist/esm/hooks/usePictureInPicture/usePictureInPicture.js.map +1 -0
  435. package/dist/esm/hooks/usePictureInPicture/usePictureInPictureAuto.js +111 -0
  436. package/dist/esm/hooks/usePictureInPicture/usePictureInPictureAuto.js.map +1 -0
  437. package/dist/esm/hooks/useScreenShare/index.js +2 -0
  438. package/dist/esm/hooks/useScreenShare/index.js.map +1 -0
  439. package/dist/esm/hooks/useScreenShare/useScreenShare.js +42 -0
  440. package/dist/esm/hooks/useScreenShare/useScreenShare.js.map +1 -0
  441. package/dist/esm/hooks/useSpeaker/index.js +2 -0
  442. package/dist/esm/hooks/useSpeaker/index.js.map +1 -0
  443. package/dist/esm/hooks/useSpeaker/useSpeaker.js +28 -0
  444. package/dist/esm/hooks/useSpeaker/useSpeaker.js.map +1 -0
  445. package/dist/esm/hooks/useTextChat/index.js +2 -0
  446. package/dist/esm/hooks/useTextChat/index.js.map +1 -0
  447. package/dist/esm/hooks/useTextChat/usePendingMessages.js +19 -0
  448. package/dist/esm/hooks/useTextChat/usePendingMessages.js.map +1 -0
  449. package/dist/esm/hooks/useTextChat/useTextChat.js +59 -0
  450. package/dist/esm/hooks/useTextChat/useTextChat.js.map +1 -0
  451. package/dist/esm/hooks/useTextChat/useToolAwareSend.js +28 -0
  452. package/dist/esm/hooks/useTextChat/useToolAwareSend.js.map +1 -0
  453. package/dist/esm/hooks/useTools/index.js +3 -0
  454. package/dist/esm/hooks/useTools/index.js.map +1 -0
  455. package/dist/esm/hooks/useTools/model/errors.js +7 -0
  456. package/dist/esm/hooks/useTools/model/errors.js.map +1 -0
  457. package/dist/esm/hooks/useTools/model/types.js +2 -0
  458. package/dist/esm/hooks/useTools/model/types.js.map +1 -0
  459. package/dist/esm/hooks/useTools/public/useTools.js +7 -0
  460. package/dist/esm/hooks/useTools/public/useTools.js.map +1 -0
  461. package/dist/esm/hooks/useTools/runtime/createToolRuntimeSession.js +66 -0
  462. package/dist/esm/hooks/useTools/runtime/createToolRuntimeSession.js.map +1 -0
  463. package/dist/esm/hooks/useTools/runtime/executeToolCall.js +29 -0
  464. package/dist/esm/hooks/useTools/runtime/executeToolCall.js.map +1 -0
  465. package/dist/esm/hooks/useTools/runtime/executeToolCallBatch.js +36 -0
  466. package/dist/esm/hooks/useTools/runtime/executeToolCallBatch.js.map +1 -0
  467. package/dist/esm/hooks/useTools/runtime/types.js +2 -0
  468. package/dist/esm/hooks/useTools/runtime/types.js.map +1 -0
  469. package/dist/esm/hooks/useTools/runtime/useToolCallingRuntime.js +58 -0
  470. package/dist/esm/hooks/useTools/runtime/useToolCallingRuntime.js.map +1 -0
  471. package/dist/esm/hooks/useTools/store/state.js +26 -0
  472. package/dist/esm/hooks/useTools/store/state.js.map +1 -0
  473. package/dist/esm/hooks/useTools/utils/normalizeFunctionCall.js +18 -0
  474. package/dist/esm/hooks/useTools/utils/normalizeFunctionCall.js.map +1 -0
  475. package/dist/esm/hooks/useTools/utils/serialize.js +23 -0
  476. package/dist/esm/hooks/useTools/utils/serialize.js.map +1 -0
  477. package/dist/esm/hooks/useTranscriptions/index.js +3 -0
  478. package/dist/esm/hooks/useTranscriptions/index.js.map +1 -0
  479. package/dist/esm/hooks/useTranscriptions/types.js +2 -0
  480. package/dist/esm/hooks/useTranscriptions/types.js.map +1 -0
  481. package/dist/esm/hooks/useTranscriptions/useTranscription.js +15 -0
  482. package/dist/esm/hooks/useTranscriptions/useTranscription.js.map +1 -0
  483. package/dist/esm/hooks/useTranscriptions/useTranscriptions.js +15 -0
  484. package/dist/esm/hooks/useTranscriptions/useTranscriptions.js.map +1 -0
  485. package/dist/esm/hooks/useUserActivity/index.js +2 -0
  486. package/dist/esm/hooks/useUserActivity/index.js.map +1 -0
  487. package/dist/esm/hooks/useUserActivity/useUserActivity.js +22 -0
  488. package/dist/esm/hooks/useUserActivity/useUserActivity.js.map +1 -0
  489. package/dist/esm/livekit/components.js +2 -0
  490. package/dist/esm/livekit/components.js.map +1 -0
  491. package/dist/esm/livekit/sdk.js +2 -0
  492. package/dist/esm/livekit/sdk.js.map +1 -0
  493. package/dist/esm/sdk-consumer/context.js +10 -0
  494. package/dist/esm/sdk-consumer/context.js.map +1 -0
  495. package/dist/esm/sdk-consumer/index.js +2 -0
  496. package/dist/esm/sdk-consumer/index.js.map +1 -0
  497. package/dist/esm/sdk.js +25 -0
  498. package/dist/esm/sdk.js.map +1 -0
  499. package/dist/esm/services/FetchPersonaChatService.js +124 -0
  500. package/dist/esm/services/FetchPersonaChatService.js.map +1 -0
  501. package/dist/esm/test-types.d.js +2 -0
  502. package/dist/esm/test-types.d.js.map +1 -0
  503. package/dist/esm/types/http.js +9 -0
  504. package/dist/esm/types/http.js.map +1 -0
  505. package/dist/esm/types/index.js +2 -0
  506. package/dist/esm/types/index.js.map +1 -0
  507. package/dist/esm/types/service.js +2 -0
  508. package/dist/esm/types/service.js.map +1 -0
  509. package/dist/esm/utils/captureImage/captureImage.js +29 -0
  510. package/dist/esm/utils/captureImage/captureImage.js.map +1 -0
  511. package/dist/esm/utils/captureImage/helpers.js +69 -0
  512. package/dist/esm/utils/captureImage/helpers.js.map +1 -0
  513. package/dist/esm/utils/captureImage/index.js +3 -0
  514. package/dist/esm/utils/captureImage/index.js.map +1 -0
  515. package/dist/esm/utils/captureImage/types.js +2 -0
  516. package/dist/esm/utils/captureImage/types.js.map +1 -0
  517. package/dist/esm/utils/compatibility/compatibility.js +12 -0
  518. package/dist/esm/utils/compatibility/compatibility.js.map +1 -0
  519. package/dist/esm/utils/compatibility/index.js +2 -0
  520. package/dist/esm/utils/compatibility/index.js.map +1 -0
  521. package/dist/esm/utils.js +2 -0
  522. package/dist/esm/utils.js.map +1 -0
  523. package/dist/types/components/Audio/Audio.d.ts +3 -0
  524. package/dist/types/components/Audio/Audio.d.ts.map +1 -0
  525. package/dist/types/components/Audio/index.d.ts +2 -0
  526. package/dist/types/components/Audio/index.d.ts.map +1 -0
  527. package/dist/types/components/ChromaKey/ChromaKey.d.ts +20 -0
  528. package/dist/types/components/ChromaKey/ChromaKey.d.ts.map +1 -0
  529. package/dist/types/components/ChromaKey/chroma-key.d.ts +9 -0
  530. package/dist/types/components/ChromaKey/chroma-key.d.ts.map +1 -0
  531. package/dist/types/components/ChromaKey/index.d.ts +2 -0
  532. package/dist/types/components/ChromaKey/index.d.ts.map +1 -0
  533. package/dist/types/components/ChromaKey/shaders/chroma-key.shader.d.ts +3 -0
  534. package/dist/types/components/ChromaKey/shaders/chroma-key.shader.d.ts.map +1 -0
  535. package/dist/types/components/ChromaKey/shaders/index.d.ts +3 -0
  536. package/dist/types/components/ChromaKey/shaders/index.d.ts.map +1 -0
  537. package/dist/types/components/ChromaKey/shaders/vertex-align.shader.d.ts +3 -0
  538. package/dist/types/components/ChromaKey/shaders/vertex-align.shader.d.ts.map +1 -0
  539. package/dist/types/components/ChromaKey/types.d.ts +3 -0
  540. package/dist/types/components/ChromaKey/types.d.ts.map +1 -0
  541. package/dist/types/components/LegendsPlatform/LegendsPlatform.d.ts +18 -0
  542. package/dist/types/components/LegendsPlatform/LegendsPlatform.d.ts.map +1 -0
  543. package/dist/types/components/LegendsPlatform/index.d.ts +2 -0
  544. package/dist/types/components/LegendsPlatform/index.d.ts.map +1 -0
  545. package/dist/types/components/LegendsPlatformQLess/LegendsPlatform.d.ts +15 -0
  546. package/dist/types/components/LegendsPlatformQLess/LegendsPlatform.d.ts.map +1 -0
  547. package/dist/types/components/LegendsPlatformQLess/index.d.ts +2 -0
  548. package/dist/types/components/LegendsPlatformQLess/index.d.ts.map +1 -0
  549. package/dist/types/components/Video/Video.d.ts +14 -0
  550. package/dist/types/components/Video/Video.d.ts.map +1 -0
  551. package/dist/types/components/Video/index.d.ts +3 -0
  552. package/dist/types/components/Video/index.d.ts.map +1 -0
  553. package/dist/types/components/Video/types.d.ts +22 -0
  554. package/dist/types/components/Video/types.d.ts.map +1 -0
  555. package/dist/types/components/Video/useAttachVideo.d.ts +10 -0
  556. package/dist/types/components/Video/useAttachVideo.d.ts.map +1 -0
  557. package/dist/types/components/VideoPostProcessor/VideoPostProcessor.d.ts +11 -0
  558. package/dist/types/components/VideoPostProcessor/VideoPostProcessor.d.ts.map +1 -0
  559. package/dist/types/components/VideoPostProcessor/effects.d.ts +3 -0
  560. package/dist/types/components/VideoPostProcessor/effects.d.ts.map +1 -0
  561. package/dist/types/components/VideoPostProcessor/index.d.ts +2 -0
  562. package/dist/types/components/VideoPostProcessor/index.d.ts.map +1 -0
  563. package/dist/types/components/VideoPreview/VideoPreview.d.ts +4 -0
  564. package/dist/types/components/VideoPreview/VideoPreview.d.ts.map +1 -0
  565. package/dist/types/components/VideoPreview/index.d.ts +3 -0
  566. package/dist/types/components/VideoPreview/index.d.ts.map +1 -0
  567. package/dist/types/components/VideoPreview/types.d.ts +11 -0
  568. package/dist/types/components/VideoPreview/types.d.ts.map +1 -0
  569. package/dist/types/components/VideoPreview/useVideoPreviewStream.d.ts +13 -0
  570. package/dist/types/components/VideoPreview/useVideoPreviewStream.d.ts.map +1 -0
  571. package/dist/types/components.d.ts +6 -0
  572. package/dist/types/components.d.ts.map +1 -0
  573. package/dist/types/conversation/index.d.ts +3 -0
  574. package/dist/types/conversation/index.d.ts.map +1 -0
  575. package/dist/types/conversation/state.d.ts +47 -0
  576. package/dist/types/conversation/state.d.ts.map +1 -0
  577. package/dist/types/conversation/types.d.ts +27 -0
  578. package/dist/types/conversation/types.d.ts.map +1 -0
  579. package/dist/types/conversation/utils.d.ts +6 -0
  580. package/dist/types/conversation/utils.d.ts.map +1 -0
  581. package/dist/types/hooks/index.d.ts +10 -0
  582. package/dist/types/hooks/index.d.ts.map +1 -0
  583. package/dist/types/hooks/useActivityState/index.d.ts +2 -0
  584. package/dist/types/hooks/useActivityState/index.d.ts.map +1 -0
  585. package/dist/types/hooks/useActivityState/useActivityState.d.ts +2 -0
  586. package/dist/types/hooks/useActivityState/useActivityState.d.ts.map +1 -0
  587. package/dist/types/hooks/useAudio/index.d.ts +2 -0
  588. package/dist/types/hooks/useAudio/index.d.ts.map +1 -0
  589. package/dist/types/hooks/useAudio/useAudio.d.ts +7 -0
  590. package/dist/types/hooks/useAudio/useAudio.d.ts.map +1 -0
  591. package/dist/types/hooks/useAudioLevel/helpers.d.ts +11 -0
  592. package/dist/types/hooks/useAudioLevel/helpers.d.ts.map +1 -0
  593. package/dist/types/hooks/useAudioLevel/index.d.ts +2 -0
  594. package/dist/types/hooks/useAudioLevel/index.d.ts.map +1 -0
  595. package/dist/types/hooks/useAudioLevel/types.d.ts +8 -0
  596. package/dist/types/hooks/useAudioLevel/types.d.ts.map +1 -0
  597. package/dist/types/hooks/useAudioLevel/useAudioLevel.d.ts +3 -0
  598. package/dist/types/hooks/useAudioLevel/useAudioLevel.d.ts.map +1 -0
  599. package/dist/types/hooks/useCamera/index.d.ts +2 -0
  600. package/dist/types/hooks/useCamera/index.d.ts.map +1 -0
  601. package/dist/types/hooks/useCamera/useCamera.d.ts +8 -0
  602. package/dist/types/hooks/useCamera/useCamera.d.ts.map +1 -0
  603. package/dist/types/hooks/useConnectionState/index.d.ts +2 -0
  604. package/dist/types/hooks/useConnectionState/index.d.ts.map +1 -0
  605. package/dist/types/hooks/useConnectionState/useConnectionState.d.ts +2 -0
  606. package/dist/types/hooks/useConnectionState/useConnectionState.d.ts.map +1 -0
  607. package/dist/types/hooks/useConversation/index.d.ts +3 -0
  608. package/dist/types/hooks/useConversation/index.d.ts.map +1 -0
  609. package/dist/types/hooks/useConversation/livekit/constants.d.ts +4 -0
  610. package/dist/types/hooks/useConversation/livekit/constants.d.ts.map +1 -0
  611. package/dist/types/hooks/useConversation/livekit/types.d.ts +32 -0
  612. package/dist/types/hooks/useConversation/livekit/types.d.ts.map +1 -0
  613. package/dist/types/hooks/useConversation/livekit/useConversation.d.ts +3 -0
  614. package/dist/types/hooks/useConversation/livekit/useConversation.d.ts.map +1 -0
  615. package/dist/types/hooks/useConversation/livekit/utils/dataChannel.d.ts +6 -0
  616. package/dist/types/hooks/useConversation/livekit/utils/dataChannel.d.ts.map +1 -0
  617. package/dist/types/hooks/useConversation/livekit/utils/index.d.ts +7 -0
  618. package/dist/types/hooks/useConversation/livekit/utils/index.d.ts.map +1 -0
  619. package/dist/types/hooks/useConversation/livekit/utils/messaging.d.ts +3 -0
  620. package/dist/types/hooks/useConversation/livekit/utils/messaging.d.ts.map +1 -0
  621. package/dist/types/hooks/useConversation/livekit/utils/participants.d.ts +6 -0
  622. package/dist/types/hooks/useConversation/livekit/utils/participants.d.ts.map +1 -0
  623. package/dist/types/hooks/useConversation/livekit/utils/serialization.d.ts +2 -0
  624. package/dist/types/hooks/useConversation/livekit/utils/serialization.d.ts.map +1 -0
  625. package/dist/types/hooks/useConversation/livekit/utils/toolAdapter.d.ts +4 -0
  626. package/dist/types/hooks/useConversation/livekit/utils/toolAdapter.d.ts.map +1 -0
  627. package/dist/types/hooks/useConversation/livekit/utils/transcriptions.d.ts +3 -0
  628. package/dist/types/hooks/useConversation/livekit/utils/transcriptions.d.ts.map +1 -0
  629. package/dist/types/hooks/useConversation/types.d.ts +23 -0
  630. package/dist/types/hooks/useConversation/types.d.ts.map +1 -0
  631. package/dist/types/hooks/useConversation/useConversation.d.ts +3 -0
  632. package/dist/types/hooks/useConversation/useConversation.d.ts.map +1 -0
  633. package/dist/types/hooks/useConversationEvents/index.d.ts +4 -0
  634. package/dist/types/hooks/useConversationEvents/index.d.ts.map +1 -0
  635. package/dist/types/hooks/useConversationEvents/types.d.ts +72 -0
  636. package/dist/types/hooks/useConversationEvents/types.d.ts.map +1 -0
  637. package/dist/types/hooks/useConversationEvents/useConversationEvent.d.ts +3 -0
  638. package/dist/types/hooks/useConversationEvents/useConversationEvent.d.ts.map +1 -0
  639. package/dist/types/hooks/useConversationEvents/useConversationEvents.d.ts +5 -0
  640. package/dist/types/hooks/useConversationEvents/useConversationEvents.d.ts.map +1 -0
  641. package/dist/types/hooks/useConversationEvents/useEmitConversationEvent.d.ts +3 -0
  642. package/dist/types/hooks/useConversationEvents/useEmitConversationEvent.d.ts.map +1 -0
  643. package/dist/types/hooks/useConversationStatus/index.d.ts +2 -0
  644. package/dist/types/hooks/useConversationStatus/index.d.ts.map +1 -0
  645. package/dist/types/hooks/useConversationStatus/useConversationStatus.d.ts +2 -0
  646. package/dist/types/hooks/useConversationStatus/useConversationStatus.d.ts.map +1 -0
  647. package/dist/types/hooks/useConversationTimer/index.d.ts +2 -0
  648. package/dist/types/hooks/useConversationTimer/index.d.ts.map +1 -0
  649. package/dist/types/hooks/useConversationTimer/useConversationTimer.d.ts +17 -0
  650. package/dist/types/hooks/useConversationTimer/useConversationTimer.d.ts.map +1 -0
  651. package/dist/types/hooks/useCreateConversation/helpers.d.ts +8 -0
  652. package/dist/types/hooks/useCreateConversation/helpers.d.ts.map +1 -0
  653. package/dist/types/hooks/useCreateConversation/index.d.ts +2 -0
  654. package/dist/types/hooks/useCreateConversation/index.d.ts.map +1 -0
  655. package/dist/types/hooks/useCreateConversation/useCreateConversation.d.ts +11 -0
  656. package/dist/types/hooks/useCreateConversation/useCreateConversation.d.ts.map +1 -0
  657. package/dist/types/hooks/useDeviceSwitcher/index.d.ts +2 -0
  658. package/dist/types/hooks/useDeviceSwitcher/index.d.ts.map +1 -0
  659. package/dist/types/hooks/useDeviceSwitcher/useDeviceSwitcher.d.ts +9 -0
  660. package/dist/types/hooks/useDeviceSwitcher/useDeviceSwitcher.d.ts.map +1 -0
  661. package/dist/types/hooks/useDevices/index.d.ts +2 -0
  662. package/dist/types/hooks/useDevices/index.d.ts.map +1 -0
  663. package/dist/types/hooks/useDevices/useDevices.d.ts +6 -0
  664. package/dist/types/hooks/useDevices/useDevices.d.ts.map +1 -0
  665. package/dist/types/hooks/useMediaPermissions/index.d.ts +3 -0
  666. package/dist/types/hooks/useMediaPermissions/index.d.ts.map +1 -0
  667. package/dist/types/hooks/useMediaPermissions/types.d.ts +3 -0
  668. package/dist/types/hooks/useMediaPermissions/types.d.ts.map +1 -0
  669. package/dist/types/hooks/useMediaPermissions/useMediaPermissions.d.ts +7 -0
  670. package/dist/types/hooks/useMediaPermissions/useMediaPermissions.d.ts.map +1 -0
  671. package/dist/types/hooks/useMediaRecorder/index.d.ts +2 -0
  672. package/dist/types/hooks/useMediaRecorder/index.d.ts.map +1 -0
  673. package/dist/types/hooks/useMediaRecorder/useMediaRecorder.d.ts +39 -0
  674. package/dist/types/hooks/useMediaRecorder/useMediaRecorder.d.ts.map +1 -0
  675. package/dist/types/hooks/useMediaRecorder/useReactRecorder.d.ts +70 -0
  676. package/dist/types/hooks/useMediaRecorder/useReactRecorder.d.ts.map +1 -0
  677. package/dist/types/hooks/useMicrophone/index.d.ts +2 -0
  678. package/dist/types/hooks/useMicrophone/index.d.ts.map +1 -0
  679. package/dist/types/hooks/useMicrophone/useMicrophone.d.ts +8 -0
  680. package/dist/types/hooks/useMicrophone/useMicrophone.d.ts.map +1 -0
  681. package/dist/types/hooks/useParticipantTrack/index.d.ts +2 -0
  682. package/dist/types/hooks/useParticipantTrack/index.d.ts.map +1 -0
  683. package/dist/types/hooks/useParticipantTrack/useParticipantTrack.d.ts +11 -0
  684. package/dist/types/hooks/useParticipantTrack/useParticipantTrack.d.ts.map +1 -0
  685. package/dist/types/hooks/usePictureInPicture/index.d.ts +6 -0
  686. package/dist/types/hooks/usePictureInPicture/index.d.ts.map +1 -0
  687. package/dist/types/hooks/usePictureInPicture/state.d.ts +8 -0
  688. package/dist/types/hooks/usePictureInPicture/state.d.ts.map +1 -0
  689. package/dist/types/hooks/usePictureInPicture/types.d.ts +25 -0
  690. package/dist/types/hooks/usePictureInPicture/types.d.ts.map +1 -0
  691. package/dist/types/hooks/usePictureInPicture/usePictureInPicture.d.ts +3 -0
  692. package/dist/types/hooks/usePictureInPicture/usePictureInPicture.d.ts.map +1 -0
  693. package/dist/types/hooks/usePictureInPicture/usePictureInPictureAuto.d.ts +3 -0
  694. package/dist/types/hooks/usePictureInPicture/usePictureInPictureAuto.d.ts.map +1 -0
  695. package/dist/types/hooks/useScreenShare/index.d.ts +2 -0
  696. package/dist/types/hooks/useScreenShare/index.d.ts.map +1 -0
  697. package/dist/types/hooks/useScreenShare/useScreenShare.d.ts +13 -0
  698. package/dist/types/hooks/useScreenShare/useScreenShare.d.ts.map +1 -0
  699. package/dist/types/hooks/useSpeaker/index.d.ts +2 -0
  700. package/dist/types/hooks/useSpeaker/index.d.ts.map +1 -0
  701. package/dist/types/hooks/useSpeaker/useSpeaker.d.ts +6 -0
  702. package/dist/types/hooks/useSpeaker/useSpeaker.d.ts.map +1 -0
  703. package/dist/types/hooks/useTextChat/index.d.ts +2 -0
  704. package/dist/types/hooks/useTextChat/index.d.ts.map +1 -0
  705. package/dist/types/hooks/useTextChat/usePendingMessages.d.ts +11 -0
  706. package/dist/types/hooks/useTextChat/usePendingMessages.d.ts.map +1 -0
  707. package/dist/types/hooks/useTextChat/useTextChat.d.ts +21 -0
  708. package/dist/types/hooks/useTextChat/useTextChat.d.ts.map +1 -0
  709. package/dist/types/hooks/useTextChat/useToolAwareSend.d.ts +8 -0
  710. package/dist/types/hooks/useTextChat/useToolAwareSend.d.ts.map +1 -0
  711. package/dist/types/hooks/useTools/index.d.ts +4 -0
  712. package/dist/types/hooks/useTools/index.d.ts.map +1 -0
  713. package/dist/types/hooks/useTools/model/errors.d.ts +4 -0
  714. package/dist/types/hooks/useTools/model/errors.d.ts.map +1 -0
  715. package/dist/types/hooks/useTools/model/types.d.ts +27 -0
  716. package/dist/types/hooks/useTools/model/types.d.ts.map +1 -0
  717. package/dist/types/hooks/useTools/public/useTools.d.ts +2 -0
  718. package/dist/types/hooks/useTools/public/useTools.d.ts.map +1 -0
  719. package/dist/types/hooks/useTools/runtime/createToolRuntimeSession.d.ts +9 -0
  720. package/dist/types/hooks/useTools/runtime/createToolRuntimeSession.d.ts.map +1 -0
  721. package/dist/types/hooks/useTools/runtime/executeToolCall.d.ts +3 -0
  722. package/dist/types/hooks/useTools/runtime/executeToolCall.d.ts.map +1 -0
  723. package/dist/types/hooks/useTools/runtime/executeToolCallBatch.d.ts +11 -0
  724. package/dist/types/hooks/useTools/runtime/executeToolCallBatch.d.ts.map +1 -0
  725. package/dist/types/hooks/useTools/runtime/types.d.ts +35 -0
  726. package/dist/types/hooks/useTools/runtime/types.d.ts.map +1 -0
  727. package/dist/types/hooks/useTools/runtime/useToolCallingRuntime.d.ts +9 -0
  728. package/dist/types/hooks/useTools/runtime/useToolCallingRuntime.d.ts.map +1 -0
  729. package/dist/types/hooks/useTools/store/state.d.ts +17 -0
  730. package/dist/types/hooks/useTools/store/state.d.ts.map +1 -0
  731. package/dist/types/hooks/useTools/utils/normalizeFunctionCall.d.ts +4 -0
  732. package/dist/types/hooks/useTools/utils/normalizeFunctionCall.d.ts.map +1 -0
  733. package/dist/types/hooks/useTools/utils/serialize.d.ts +3 -0
  734. package/dist/types/hooks/useTools/utils/serialize.d.ts.map +1 -0
  735. package/dist/types/hooks/useTranscriptions/index.d.ts +3 -0
  736. package/dist/types/hooks/useTranscriptions/index.d.ts.map +1 -0
  737. package/dist/types/hooks/useTranscriptions/types.d.ts +5 -0
  738. package/dist/types/hooks/useTranscriptions/types.d.ts.map +1 -0
  739. package/dist/types/hooks/useTranscriptions/useTranscription.d.ts +3 -0
  740. package/dist/types/hooks/useTranscriptions/useTranscription.d.ts.map +1 -0
  741. package/dist/types/hooks/useTranscriptions/useTranscriptions.d.ts +3 -0
  742. package/dist/types/hooks/useTranscriptions/useTranscriptions.d.ts.map +1 -0
  743. package/dist/types/hooks/useUserActivity/index.d.ts +2 -0
  744. package/dist/types/hooks/useUserActivity/index.d.ts.map +1 -0
  745. package/dist/types/hooks/useUserActivity/useUserActivity.d.ts +8 -0
  746. package/dist/types/hooks/useUserActivity/useUserActivity.d.ts.map +1 -0
  747. package/dist/types/livekit/components.d.ts +2 -0
  748. package/dist/types/livekit/components.d.ts.map +1 -0
  749. package/dist/types/livekit/sdk.d.ts +2 -0
  750. package/dist/types/livekit/sdk.d.ts.map +1 -0
  751. package/dist/types/sdk-consumer/context.d.ts +12 -0
  752. package/dist/types/sdk-consumer/context.d.ts.map +1 -0
  753. package/dist/types/sdk-consumer/index.d.ts +2 -0
  754. package/dist/types/sdk-consumer/index.d.ts.map +1 -0
  755. package/dist/types/sdk.d.ts +25 -0
  756. package/dist/types/sdk.d.ts.map +1 -0
  757. package/dist/types/services/FetchPersonaChatService.d.ts +15 -0
  758. package/dist/types/services/FetchPersonaChatService.d.ts.map +1 -0
  759. package/dist/types/types/http.d.ts +15 -0
  760. package/dist/types/types/http.d.ts.map +1 -0
  761. package/dist/types/types/index.d.ts +4 -0
  762. package/dist/types/types/index.d.ts.map +1 -0
  763. package/dist/types/types/service.d.ts +62 -0
  764. package/dist/types/types/service.d.ts.map +1 -0
  765. package/dist/types/utils/captureImage/captureImage.d.ts +3 -0
  766. package/dist/types/utils/captureImage/captureImage.d.ts.map +1 -0
  767. package/dist/types/utils/captureImage/helpers.d.ts +4 -0
  768. package/dist/types/utils/captureImage/helpers.d.ts.map +1 -0
  769. package/dist/types/utils/captureImage/index.d.ts +3 -0
  770. package/dist/types/utils/captureImage/index.d.ts.map +1 -0
  771. package/dist/types/utils/captureImage/types.d.ts +9 -0
  772. package/dist/types/utils/captureImage/types.d.ts.map +1 -0
  773. package/dist/types/utils/compatibility/compatibility.d.ts +3 -0
  774. package/dist/types/utils/compatibility/compatibility.d.ts.map +1 -0
  775. package/dist/types/utils/compatibility/index.d.ts +2 -0
  776. package/dist/types/utils/compatibility/index.d.ts.map +1 -0
  777. package/dist/types/utils.d.ts +2 -0
  778. package/dist/types/utils.d.ts.map +1 -0
  779. package/livekit/components/package.json +5 -0
  780. package/livekit/sdk/package.json +5 -0
  781. package/livekit-client.patch +19 -0
  782. package/package.json +108 -0
  783. package/sdk/package.json +5 -0
  784. package/tpa/package.json +5 -0
  785. package/utils/package.json +5 -0
@@ -0,0 +1,227 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
2
+ const _excluded = ["enabled", "duration", "threshold", "autoStart", "onSample", "type", "audioConstraints", "systemAudioConstraints", "videoConstraints"];
3
+ import { useEffect, useMemo, useState, useRef } from 'react';
4
+ import { useReactMediaRecorder } from './useReactRecorder';
5
+ import { useUnmount } from 'react-use';
6
+ import { useMicrophone } from '../useMicrophone';
7
+ import { useCamera } from '../useCamera';
8
+ import { useStopwatch } from 'react-timer-hook';
9
+ import invariant from 'invariant';
10
+ import { isIosDevice } from '../../utils/compatibility';
11
+ export function useMediaRecorder(options) {
12
+ const _options$enabled = options.enabled,
13
+ enabled = _options$enabled === void 0 ? true : _options$enabled,
14
+ _options$duration = options.duration,
15
+ duration = _options$duration === void 0 ? 10000 : _options$duration,
16
+ _options$threshold = options.threshold,
17
+ threshold = _options$threshold === void 0 ? 1000 : _options$threshold,
18
+ _options$autoStart = options.autoStart,
19
+ autoStart = _options$autoStart === void 0 ? true : _options$autoStart,
20
+ onSample = options.onSample,
21
+ type = options.type,
22
+ audioConstraints = options.audioConstraints,
23
+ systemAudioConstraints = options.systemAudioConstraints,
24
+ _options$videoConstra = options.videoConstraints,
25
+ videoConstraints = _options$videoConstra === void 0 ? {
26
+ width: {
27
+ ideal: 1920
28
+ },
29
+ height: {
30
+ ideal: 1080
31
+ }
32
+ } : _options$videoConstra,
33
+ reactMediaRecorderHookProps = _objectWithoutPropertiesLoose(options, _excluded);
34
+ const elapsedTimeRef = useRef({
35
+ totalMilliseconds: 0,
36
+ milliseconds: 0,
37
+ seconds: 0,
38
+ minutes: 0,
39
+ hours: 0
40
+ });
41
+ const _useMicrophone = useMicrophone(),
42
+ microphoneDeviceId = _useMicrophone.deviceId;
43
+ const _useCamera = useCamera(),
44
+ cameraDeviceId = _useCamera.deviceId;
45
+ const _useState = useState('inactive'),
46
+ state = _useState[0],
47
+ setState = _useState[1];
48
+
49
+ // eslint-disable-next-line no-undef
50
+ const audioConstraint = useMemo(() => {
51
+ if (!enabled) {
52
+ return false;
53
+ }
54
+ if (microphoneDeviceId === 'default') {
55
+ return audioConstraints || true;
56
+ }
57
+ if (audioConstraints) {
58
+ return {
59
+ deviceId: isIosDevice() ? {
60
+ ideal: microphoneDeviceId
61
+ } : {
62
+ exact: microphoneDeviceId
63
+ },
64
+ ...audioConstraints
65
+ };
66
+ }
67
+ return {
68
+ deviceId: isIosDevice() ? {
69
+ ideal: microphoneDeviceId
70
+ } : {
71
+ exact: microphoneDeviceId
72
+ }
73
+ };
74
+ }, [microphoneDeviceId, enabled, audioConstraints]);
75
+
76
+ // eslint-disable-next-line no-undef
77
+ const videoConstraint = useMemo(() => {
78
+ if (!enabled || type !== 'video') {
79
+ return false;
80
+ }
81
+ if (cameraDeviceId === 'default') {
82
+ return videoConstraints || true;
83
+ }
84
+ if (videoConstraints) {
85
+ return {
86
+ deviceId: isIosDevice() ? {
87
+ ideal: cameraDeviceId
88
+ } : {
89
+ exact: cameraDeviceId
90
+ },
91
+ ...videoConstraints
92
+ };
93
+ }
94
+ return {
95
+ deviceId: isIosDevice() ? {
96
+ ideal: cameraDeviceId
97
+ } : {
98
+ exact: cameraDeviceId
99
+ }
100
+ };
101
+ }, [cameraDeviceId, enabled, type, videoConstraints]);
102
+ const _useReactMediaRecorde = useReactMediaRecorder({
103
+ screen: type === 'screen',
104
+ audio: audioConstraint,
105
+ video: videoConstraint,
106
+ systemAudio: systemAudioConstraints,
107
+ onStop: (blobUrl, blob) => {
108
+ onSample(blobUrl, blob, elapsedTimeRef.current);
109
+ },
110
+ askPermissionOnMount: enabled && typeof window !== 'undefined',
111
+ ...reactMediaRecorderHookProps
112
+ }),
113
+ startRecording = _useReactMediaRecorde.startRecording,
114
+ stopRecording = _useReactMediaRecorde.stopRecording,
115
+ pauseRecording = _useReactMediaRecorde.pauseRecording,
116
+ resumeRecording = _useReactMediaRecorde.resumeRecording,
117
+ previewStream = _useReactMediaRecorde.previewStream,
118
+ previewAudioStream = _useReactMediaRecorde.previewAudioStream,
119
+ mediaBlobUrl = _useReactMediaRecorde.mediaBlobUrl,
120
+ releaseStream = _useReactMediaRecorde.releaseStream;
121
+ const _useStopwatch = useStopwatch({
122
+ autoStart: false,
123
+ interval: 1000
124
+ }),
125
+ startTimer = _useStopwatch.start,
126
+ pauseTimer = _useStopwatch.pause,
127
+ resetTimer = _useStopwatch.reset,
128
+ totalMilliseconds = _useStopwatch.totalMilliseconds,
129
+ milliseconds = _useStopwatch.milliseconds,
130
+ seconds = _useStopwatch.seconds,
131
+ minutes = _useStopwatch.minutes,
132
+ hours = _useStopwatch.hours,
133
+ days = _useStopwatch.days;
134
+ useEffect(() => {
135
+ if (state === 'recording') {
136
+ elapsedTimeRef.current = {
137
+ totalMilliseconds,
138
+ milliseconds,
139
+ seconds,
140
+ minutes,
141
+ hours
142
+ };
143
+ }
144
+ }, [totalMilliseconds, milliseconds, seconds, minutes, hours, state]);
145
+ useEffect(() => {
146
+ if (autoStart && enabled) {
147
+ start();
148
+ }
149
+ }, [autoStart, enabled]);
150
+ useEffect(() => {
151
+ if (totalMilliseconds >= duration - threshold) {
152
+ stop();
153
+ }
154
+ }, [totalMilliseconds, duration, threshold]);
155
+ useUnmount(cleanup);
156
+ return {
157
+ start,
158
+ stop,
159
+ pause,
160
+ resume,
161
+ releaseStream,
162
+ state,
163
+ previewStream,
164
+ previewAudioStream,
165
+ mediaBlobUrl,
166
+ elapsed: {
167
+ totalMilliseconds,
168
+ milliseconds,
169
+ seconds,
170
+ minutes,
171
+ hours,
172
+ days
173
+ }
174
+ };
175
+ function cleanup() {
176
+ resetTimer(undefined, false);
177
+ elapsedTimeRef.current = {
178
+ totalMilliseconds: 0,
179
+ milliseconds: 0,
180
+ seconds: 0,
181
+ minutes: 0,
182
+ hours: 0
183
+ };
184
+ setState('inactive');
185
+ releaseStream();
186
+ }
187
+ function start() {
188
+ invariant(enabled, 'Recorder is not enabled');
189
+ if (state === 'inactive') {
190
+ setState('recording');
191
+ startRecording();
192
+ startTimer();
193
+ } else {
194
+ console.warn('Recorder is already started');
195
+ }
196
+ }
197
+ function stop() {
198
+ if (state === 'recording' || state === 'paused') {
199
+ setState('inactive');
200
+ stopRecording();
201
+ resetTimer(undefined, false);
202
+ } else {
203
+ console.warn('Recorder is not recording. To stop the recorder, call the start method first.');
204
+ }
205
+ }
206
+ function pause() {
207
+ invariant(enabled, 'Recorder is not enabled');
208
+ if (state === 'recording') {
209
+ setState('paused');
210
+ pauseRecording();
211
+ pauseTimer();
212
+ } else {
213
+ console.warn('Recorder is not recording. To pause the recorder, call the start method first.');
214
+ }
215
+ }
216
+ function resume() {
217
+ invariant(enabled, 'Recorder is not enabled');
218
+ if (state === 'paused') {
219
+ setState('recording');
220
+ resumeRecording();
221
+ startTimer();
222
+ } else {
223
+ console.warn('Recorder is not paused. To resume the recorder, call the pause method first.');
224
+ }
225
+ }
226
+ }
227
+ //# sourceMappingURL=useMediaRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useState","useRef","useReactMediaRecorder","useUnmount","useMicrophone","useCamera","useStopwatch","invariant","isIosDevice","useMediaRecorder","options","_options$enabled","enabled","_options$duration","duration","_options$threshold","threshold","_options$autoStart","autoStart","onSample","type","audioConstraints","systemAudioConstraints","_options$videoConstra","videoConstraints","width","ideal","height","reactMediaRecorderHookProps","_objectWithoutPropertiesLoose","_excluded","elapsedTimeRef","totalMilliseconds","milliseconds","seconds","minutes","hours","_useMicrophone","microphoneDeviceId","deviceId","_useCamera","cameraDeviceId","_useState","state","setState","audioConstraint","exact","videoConstraint","_useReactMediaRecorde","screen","audio","video","systemAudio","onStop","blobUrl","blob","current","askPermissionOnMount","window","startRecording","stopRecording","pauseRecording","resumeRecording","previewStream","previewAudioStream","mediaBlobUrl","releaseStream","_useStopwatch","interval","startTimer","start","pauseTimer","pause","resetTimer","reset","days","stop","cleanup","resume","elapsed","undefined","console","warn"],"sources":["../../../../src/hooks/useMediaRecorder/useMediaRecorder.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, useRef } from 'react';\nimport {\n useReactMediaRecorder,\n ReactMediaRecorderHookProps,\n} from './useReactRecorder';\nimport { useUnmount } from 'react-use';\nimport { useMicrophone } from '../useMicrophone';\nimport { useCamera } from '../useCamera';\nimport { useStopwatch } from 'react-timer-hook';\nimport invariant from 'invariant';\nimport { isIosDevice } from '../../utils/compatibility';\n\nexport type ElapsedTime = {\n totalMilliseconds: number;\n milliseconds: number;\n seconds: number;\n minutes: number;\n hours: number;\n};\n\nexport type UseMediaRecorderOptions = {\n enabled?: boolean;\n duration?: number;\n threshold?: number;\n // eslint-disable-next-line no-undef\n audioConstraints?: Omit<MediaTrackConstraints, 'deviceId'>;\n // eslint-disable-next-line no-undef\n systemAudioConstraints?: MediaTrackConstraints;\n // eslint-disable-next-line no-undef\n videoConstraints?: Omit<MediaTrackConstraints, 'deviceId'>;\n type: 'audio' | 'video' | 'screen';\n autoStart?: boolean;\n onSample(blobUrl: string, sample: Blob, elapsedTime: ElapsedTime): void;\n} & Omit<ReactMediaRecorderHookProps, 'audio' | 'video' | 'onStop'>;\n\nexport function useMediaRecorder(options: UseMediaRecorderOptions) {\n const {\n enabled = true,\n duration = 10000,\n threshold = 1000,\n autoStart = true,\n onSample,\n type,\n audioConstraints,\n systemAudioConstraints,\n videoConstraints = { width: { ideal: 1920 }, height: { ideal: 1080 } },\n ...reactMediaRecorderHookProps\n } = options;\n const elapsedTimeRef = useRef<ElapsedTime>({\n totalMilliseconds: 0,\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n });\n\n const { deviceId: microphoneDeviceId } = useMicrophone();\n const { deviceId: cameraDeviceId } = useCamera();\n\n const [state, setState] = useState<'inactive' | 'paused' | 'recording'>(\n 'inactive',\n );\n\n // eslint-disable-next-line no-undef\n const audioConstraint = useMemo<boolean | MediaTrackConstraints>(() => {\n if (!enabled) {\n return false;\n }\n\n if (microphoneDeviceId === 'default') {\n return audioConstraints || true;\n }\n\n if (audioConstraints) {\n return {\n deviceId: isIosDevice()\n ? { ideal: microphoneDeviceId }\n : { exact: microphoneDeviceId },\n ...audioConstraints,\n };\n }\n return {\n deviceId: isIosDevice()\n ? { ideal: microphoneDeviceId }\n : { exact: microphoneDeviceId },\n };\n }, [microphoneDeviceId, enabled, audioConstraints]);\n\n // eslint-disable-next-line no-undef\n const videoConstraint = useMemo<boolean | MediaTrackConstraints>(() => {\n if (!enabled || type !== 'video') {\n return false;\n }\n\n if (cameraDeviceId === 'default') {\n return videoConstraints || true;\n }\n\n if (videoConstraints) {\n return {\n deviceId: isIosDevice()\n ? { ideal: cameraDeviceId }\n : { exact: cameraDeviceId },\n ...videoConstraints,\n };\n }\n return {\n deviceId: isIosDevice()\n ? { ideal: cameraDeviceId }\n : { exact: cameraDeviceId },\n };\n }, [cameraDeviceId, enabled, type, videoConstraints]);\n\n const {\n startRecording,\n stopRecording,\n pauseRecording,\n resumeRecording,\n previewStream,\n previewAudioStream,\n mediaBlobUrl,\n releaseStream,\n } = useReactMediaRecorder({\n screen: type === 'screen',\n audio: audioConstraint,\n video: videoConstraint,\n systemAudio: systemAudioConstraints,\n onStop: (blobUrl, blob) => {\n onSample(blobUrl, blob, elapsedTimeRef.current);\n },\n askPermissionOnMount: enabled && typeof window !== 'undefined',\n ...reactMediaRecorderHookProps,\n });\n\n const {\n start: startTimer,\n pause: pauseTimer,\n reset: resetTimer,\n totalMilliseconds,\n milliseconds,\n seconds,\n minutes,\n hours,\n days,\n } = useStopwatch({\n autoStart: false,\n interval: 1000,\n });\n\n useEffect(() => {\n if (state === 'recording') {\n elapsedTimeRef.current = {\n totalMilliseconds,\n milliseconds,\n seconds,\n minutes,\n hours,\n };\n }\n }, [totalMilliseconds, milliseconds, seconds, minutes, hours, state]);\n\n useEffect(() => {\n if (autoStart && enabled) {\n start();\n }\n }, [autoStart, enabled]);\n\n useEffect(() => {\n if (totalMilliseconds >= duration - threshold) {\n stop();\n }\n }, [totalMilliseconds, duration, threshold]);\n\n useUnmount(cleanup);\n\n return {\n start,\n stop,\n pause,\n resume,\n releaseStream,\n state,\n previewStream,\n previewAudioStream,\n mediaBlobUrl,\n elapsed: {\n totalMilliseconds,\n milliseconds,\n seconds,\n minutes,\n hours,\n days,\n },\n };\n function cleanup() {\n resetTimer(undefined, false);\n elapsedTimeRef.current = {\n totalMilliseconds: 0,\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n };\n setState('inactive');\n releaseStream();\n }\n\n function start() {\n invariant(enabled, 'Recorder is not enabled');\n\n if (state === 'inactive') {\n setState('recording');\n startRecording();\n startTimer();\n } else {\n console.warn('Recorder is already started');\n }\n }\n\n function stop() {\n if (state === 'recording' || state === 'paused') {\n setState('inactive');\n stopRecording();\n resetTimer(undefined, false);\n } else {\n console.warn(\n 'Recorder is not recording. To stop the recorder, call the start method first.',\n );\n }\n }\n\n function pause() {\n invariant(enabled, 'Recorder is not enabled');\n\n if (state === 'recording') {\n setState('paused');\n pauseRecording();\n pauseTimer();\n } else {\n console.warn(\n 'Recorder is not recording. To pause the recorder, call the start method first.',\n );\n }\n }\n\n function resume() {\n invariant(enabled, 'Recorder is not enabled');\n\n if (state === 'paused') {\n setState('recording');\n resumeRecording();\n startTimer();\n } else {\n console.warn(\n 'Recorder is not paused. To resume the recorder, call the pause method first.',\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,315 @@
1
+ /* eslint-disable no-undef */
2
+ import { register, MediaRecorder as ExtendableMediaRecorder } from 'extendable-media-recorder';
3
+ import { useCallback, useEffect, useRef, useState, useMemo } from 'react';
4
+ import { connect } from 'extendable-media-recorder-wav-encoder';
5
+
6
+ /**
7
+ * Experimental (optional).
8
+ * An enumerated value specifying whether the browser should allow the user to select the current tab for capture.
9
+ * This helps to avoid the "infinite hall of mirrors" effect experienced when a video conferencing app inadvertently shares its own display.
10
+ * Possible values are include, which hints that the browser should include the current tab in the choices offered for capture,
11
+ * and exclude, which hints that it should be excluded.
12
+ * A default value is not mandated by the spec.
13
+ * See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#selfbrowsersurface
14
+ */
15
+
16
+ /**
17
+ * Experimental (optional).
18
+ * 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.
19
+ * This is useful as many app types generally just want to share the current tab.
20
+ * See specs at: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#prefercurrenttab
21
+ */
22
+
23
+ export let RecorderErrors = /*#__PURE__*/function (RecorderErrors) {
24
+ RecorderErrors["AbortError"] = "media_aborted";
25
+ RecorderErrors["NotAllowedError"] = "permission_denied";
26
+ RecorderErrors["NotFoundError"] = "no_specified_media_found";
27
+ RecorderErrors["NotReadableError"] = "media_in_use";
28
+ RecorderErrors["OverconstrainedError"] = "invalid_media_constraints";
29
+ RecorderErrors["TypeError"] = "no_constraints";
30
+ RecorderErrors["NONE"] = "";
31
+ RecorderErrors["NO_RECORDER"] = "recorder_error";
32
+ return RecorderErrors;
33
+ }({});
34
+ const stopMediaStream = stream => {
35
+ if (!stream) {
36
+ return;
37
+ }
38
+ stream.getTracks().forEach(track => track.stop());
39
+ };
40
+ export function useReactMediaRecorder(_ref) {
41
+ let _ref$audio = _ref.audio,
42
+ audio = _ref$audio === void 0 ? true : _ref$audio,
43
+ _ref$video = _ref.video,
44
+ video = _ref$video === void 0 ? false : _ref$video,
45
+ _ref$selfBrowserSurfa = _ref.selfBrowserSurface,
46
+ selfBrowserSurface = _ref$selfBrowserSurfa === void 0 ? undefined : _ref$selfBrowserSurfa,
47
+ _ref$preferCurrentTab = _ref.preferCurrentTab,
48
+ preferCurrentTab = _ref$preferCurrentTab === void 0 ? false : _ref$preferCurrentTab,
49
+ _ref$onStop = _ref.onStop,
50
+ onStop = _ref$onStop === void 0 ? () => null : _ref$onStop,
51
+ _ref$onStart = _ref.onStart,
52
+ onStart = _ref$onStart === void 0 ? () => null : _ref$onStart,
53
+ blobPropertyBag = _ref.blobPropertyBag,
54
+ _ref$screen = _ref.screen,
55
+ screen = _ref$screen === void 0 ? false : _ref$screen,
56
+ _ref$systemAudio = _ref.systemAudio,
57
+ systemAudio = _ref$systemAudio === void 0 ? false : _ref$systemAudio,
58
+ _ref$mediaRecorderOpt = _ref.mediaRecorderOptions,
59
+ mediaRecorderOptions = _ref$mediaRecorderOpt === void 0 ? undefined : _ref$mediaRecorderOpt,
60
+ _ref$customMediaStrea = _ref.customMediaStream,
61
+ customMediaStream = _ref$customMediaStrea === void 0 ? null : _ref$customMediaStrea,
62
+ _ref$stopStreamsOnSto = _ref.stopStreamsOnStop,
63
+ stopStreamsOnStop = _ref$stopStreamsOnSto === void 0 ? true : _ref$stopStreamsOnSto,
64
+ _ref$askPermissionOnM = _ref.askPermissionOnMount,
65
+ askPermissionOnMount = _ref$askPermissionOnM === void 0 ? false : _ref$askPermissionOnM;
66
+ const mediaRecorder = useRef(null);
67
+ const mediaChunks = useRef([]);
68
+ const mediaStream = useRef(null);
69
+ const mediaStreamRequestId = useRef(0);
70
+ const shouldReleaseMediaStream = useRef(false);
71
+ const _useState = useState('idle'),
72
+ status = _useState[0],
73
+ setStatus = _useState[1];
74
+ const _useState2 = useState(false),
75
+ isAudioMuted = _useState2[0],
76
+ setIsAudioMuted = _useState2[1];
77
+ const _useState3 = useState(undefined),
78
+ mediaBlobUrl = _useState3[0],
79
+ setMediaBlobUrl = _useState3[1];
80
+ const _useState4 = useState('NONE'),
81
+ error = _useState4[0],
82
+ setError = _useState4[1];
83
+ const _useState5 = useState(false),
84
+ init = _useState5[0],
85
+ setInit = _useState5[1];
86
+ useEffect(() => {
87
+ if (init) {
88
+ return;
89
+ }
90
+ const setup = async () => {
91
+ try {
92
+ await register(await connect());
93
+ } catch (e) {
94
+ //
95
+ }
96
+ setInit(true); // now runs only AFTER the encoder is registered
97
+ };
98
+ setup();
99
+ }, []);
100
+ const getMediaStream = useCallback(async () => {
101
+ shouldReleaseMediaStream.current = false;
102
+ const requestId = ++mediaStreamRequestId.current;
103
+ setStatus('acquiring_media');
104
+ const requiredMedia = {
105
+ audio: typeof audio === 'boolean' ? !!audio : audio,
106
+ video: typeof video === 'boolean' ? !!video : video
107
+ };
108
+ try {
109
+ let stream;
110
+ if (customMediaStream) {
111
+ stream = customMediaStream;
112
+ } else if (screen) {
113
+ stream = await window.navigator.mediaDevices.getDisplayMedia({
114
+ video: video || true,
115
+ audio: systemAudio,
116
+ // @ts-expect-error
117
+ selfBrowserSurface,
118
+ preferCurrentTab,
119
+ suppressLocalAudioPlayback: false
120
+ });
121
+ stream.getVideoTracks()[0].addEventListener('ended', () => {
122
+ stopRecording();
123
+ });
124
+ // Add microphone audio if requested (and not using system audio only)
125
+ if (audio && !systemAudio) {
126
+ const audioStream = await window.navigator.mediaDevices.getUserMedia({
127
+ audio
128
+ });
129
+ audioStream.getAudioTracks().forEach(audioTrack => stream.addTrack(audioTrack));
130
+ }
131
+ } else {
132
+ stream = await window.navigator.mediaDevices.getUserMedia(requiredMedia);
133
+ }
134
+ if (shouldReleaseMediaStream.current || requestId !== mediaStreamRequestId.current) {
135
+ stopMediaStream(stream);
136
+ return;
137
+ }
138
+ mediaStream.current = stream;
139
+ setStatus('idle');
140
+ } catch (error) {
141
+ setError(error.name);
142
+ setStatus('idle');
143
+ }
144
+ }, [audio, video, screen, systemAudio]);
145
+ useEffect(() => {
146
+ if (!window.MediaRecorder) {
147
+ throw new Error('Unsupported Browser');
148
+ }
149
+ if (screen) {
150
+ if (!window.navigator.mediaDevices.getDisplayMedia) {
151
+ throw new Error("This browser doesn't support screen capturing");
152
+ }
153
+ }
154
+ const checkConstraints = mediaType => {
155
+ const supportedMediaConstraints = navigator.mediaDevices.getSupportedConstraints();
156
+ const unSupportedConstraints = Object.keys(mediaType).filter(constraint => !supportedMediaConstraints[constraint]);
157
+ if (unSupportedConstraints.length > 0) {
158
+ console.error(`The constraints ${unSupportedConstraints.join(',')} doesn't support on this browser. Please check your ReactMediaRecorder component.`);
159
+ }
160
+ };
161
+ if (typeof audio === 'object') {
162
+ checkConstraints(audio);
163
+ }
164
+ if (typeof video === 'object') {
165
+ checkConstraints(video);
166
+ }
167
+ if (init && mediaRecorderOptions && mediaRecorderOptions.mimeType) {
168
+ if (!ExtendableMediaRecorder.isTypeSupported(mediaRecorderOptions.mimeType)) {
169
+ console.error(`The specified MIME type you supplied for MediaRecorder doesn't support this browser`);
170
+ }
171
+ }
172
+ if (!mediaStream.current && askPermissionOnMount) {
173
+ getMediaStream();
174
+ }
175
+ return () => {
176
+ shouldReleaseMediaStream.current = true;
177
+ mediaStreamRequestId.current += 1;
178
+ stopMediaStream(mediaStream.current);
179
+ mediaStream.current = null;
180
+ };
181
+ }, [audio, screen, video, getMediaStream, mediaRecorderOptions, askPermissionOnMount, init]);
182
+
183
+ // Media Recorder Handlers
184
+
185
+ const startRecording = async () => {
186
+ setError('NONE');
187
+ if (!mediaStream.current) {
188
+ await getMediaStream();
189
+ }
190
+ if (mediaStream.current) {
191
+ const isStreamEnded = mediaStream.current.getTracks().some(track => track.readyState === 'ended');
192
+ if (isStreamEnded) {
193
+ await getMediaStream();
194
+ }
195
+
196
+ // User blocked the permissions (getMediaStream errored out)
197
+ if (!mediaStream.current.active) {
198
+ return;
199
+ }
200
+ mediaRecorder.current = new ExtendableMediaRecorder(mediaStream.current, mediaRecorderOptions || undefined);
201
+ mediaRecorder.current.ondataavailable = onRecordingActive;
202
+ mediaRecorder.current.onstop = onRecordingStop;
203
+ mediaRecorder.current.onstart = onRecordingStart;
204
+ mediaRecorder.current.onerror = () => {
205
+ setError('NO_RECORDER');
206
+ setStatus('idle');
207
+ };
208
+ mediaRecorder.current.start(1000);
209
+ setStatus('recording');
210
+ }
211
+ };
212
+ const onRecordingActive = _ref2 => {
213
+ let data = _ref2.data;
214
+ mediaChunks.current.push(data);
215
+ };
216
+ const onRecordingStart = () => {
217
+ onStart();
218
+ };
219
+ const onRecordingStop = () => {
220
+ const chunks = mediaChunks.current;
221
+ if (chunks.length === 0) {
222
+ setStatus('stopped');
223
+ return;
224
+ }
225
+ const firstChunk = chunks[0];
226
+ const blobProperty = {
227
+ type: firstChunk.type,
228
+ ...(blobPropertyBag || (video ? {
229
+ type: 'video/mp4'
230
+ } : {
231
+ type: 'audio/wav'
232
+ }))
233
+ };
234
+ const blob = new Blob(chunks, blobProperty);
235
+ const url = URL.createObjectURL(blob);
236
+ setStatus('stopped');
237
+ setMediaBlobUrl(url);
238
+ onStop(url, blob);
239
+ // Clear chunks after processing
240
+ mediaChunks.current = [];
241
+ };
242
+ const muteAudio = mute => {
243
+ setIsAudioMuted(mute);
244
+ if (mediaStream.current) {
245
+ mediaStream.current.getAudioTracks().forEach(audioTrack => audioTrack.enabled = !mute);
246
+ }
247
+ };
248
+ const pauseRecording = () => {
249
+ if (mediaRecorder.current && mediaRecorder.current.state === 'recording') {
250
+ setStatus('paused');
251
+ mediaRecorder.current.pause();
252
+ }
253
+ };
254
+ const resumeRecording = () => {
255
+ if (mediaRecorder.current && mediaRecorder.current.state === 'paused') {
256
+ setStatus('recording');
257
+ mediaRecorder.current.resume();
258
+ }
259
+ };
260
+ const stopRecording = () => {
261
+ if (mediaRecorder.current) {
262
+ if (mediaRecorder.current.state !== 'inactive') {
263
+ setStatus('stopping');
264
+ mediaRecorder.current.stop();
265
+ if (stopStreamsOnStop) {
266
+ stopMediaStream(mediaStream.current);
267
+ }
268
+ // Note: chunks are cleared in onRecordingStop after blob is created
269
+ }
270
+ }
271
+ };
272
+
273
+ // use this to release the stream when the component is unmounted
274
+ const releaseStream = () => {
275
+ shouldReleaseMediaStream.current = true;
276
+ mediaStreamRequestId.current += 1;
277
+ if (mediaRecorder.current && mediaRecorder.current.state !== 'inactive') {
278
+ mediaRecorder.current.stop();
279
+ }
280
+ stopMediaStream(mediaStream.current);
281
+ mediaStream.current = null;
282
+ setStatus('idle');
283
+ setIsAudioMuted(false);
284
+ };
285
+ const previewStream = useMemo(() => {
286
+ return mediaStream.current ? new MediaStream(mediaStream.current.getVideoTracks()) : null;
287
+ }, [status]);
288
+ const previewAudioStream = useMemo(() => {
289
+ return mediaStream.current ? new MediaStream(mediaStream.current.getAudioTracks()) : null;
290
+ }, [status]);
291
+ return {
292
+ error: RecorderErrors[error],
293
+ muteAudio: () => muteAudio(true),
294
+ unMuteAudio: () => muteAudio(false),
295
+ startRecording,
296
+ pauseRecording,
297
+ resumeRecording,
298
+ stopRecording,
299
+ releaseStream,
300
+ mediaBlobUrl,
301
+ status,
302
+ isAudioMuted,
303
+ previewStream,
304
+ previewAudioStream,
305
+ clearBlobUrl: () => {
306
+ if (mediaBlobUrl) {
307
+ URL.revokeObjectURL(mediaBlobUrl);
308
+ }
309
+ setMediaBlobUrl(undefined);
310
+ setStatus('idle');
311
+ }
312
+ };
313
+ }
314
+ export const ReactMediaRecorder = props => props.render(useReactMediaRecorder(props));
315
+ //# sourceMappingURL=useReactRecorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["register","MediaRecorder","ExtendableMediaRecorder","useCallback","useEffect","useRef","useState","useMemo","connect","RecorderErrors","stopMediaStream","stream","getTracks","forEach","track","stop","useReactMediaRecorder","_ref","_ref$audio","audio","_ref$video","video","_ref$selfBrowserSurfa","selfBrowserSurface","undefined","_ref$preferCurrentTab","preferCurrentTab","_ref$onStop","onStop","_ref$onStart","onStart","blobPropertyBag","_ref$screen","screen","_ref$systemAudio","systemAudio","_ref$mediaRecorderOpt","mediaRecorderOptions","_ref$customMediaStrea","customMediaStream","_ref$stopStreamsOnSto","stopStreamsOnStop","_ref$askPermissionOnM","askPermissionOnMount","mediaRecorder","mediaChunks","mediaStream","mediaStreamRequestId","shouldReleaseMediaStream","_useState","status","setStatus","_useState2","isAudioMuted","setIsAudioMuted","_useState3","mediaBlobUrl","setMediaBlobUrl","_useState4","error","setError","_useState5","init","setInit","setup","e","getMediaStream","current","requestId","requiredMedia","window","navigator","mediaDevices","getDisplayMedia","suppressLocalAudioPlayback","getVideoTracks","addEventListener","stopRecording","audioStream","getUserMedia","getAudioTracks","audioTrack","addTrack","name","Error","checkConstraints","mediaType","supportedMediaConstraints","getSupportedConstraints","unSupportedConstraints","Object","keys","filter","constraint","length","console","join","mimeType","isTypeSupported","startRecording","isStreamEnded","some","readyState","active","ondataavailable","onRecordingActive","onstop","onRecordingStop","onstart","onRecordingStart","onerror","start","_ref2","data","push","chunks","firstChunk","blobProperty","type","blob","Blob","url","URL","createObjectURL","muteAudio","mute","enabled","pauseRecording","state","pause","resumeRecording","resume","releaseStream","previewStream","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,2 @@
1
+ export * from './useMicrophone';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/hooks/useMicrophone/index.ts"],"sourcesContent":["export * from './useMicrophone';\n"],"mappings":"AAAA,cAAc,iBAAiB","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ import { useAtom } from 'jotai';
2
+ import * as state from '../../conversation/state';
3
+ import { useDevices } from '../useDevices';
4
+ import { useDeviceSwitcher } from '../useDeviceSwitcher';
5
+ export function useMicrophone() {
6
+ const devices = useDevices({
7
+ type: 'audioinput'
8
+ });
9
+ const _useAtom = useAtom(state.microphone),
10
+ microphone = _useAtom[0],
11
+ setMicrophone = _useAtom[1];
12
+ useDeviceSwitcher({
13
+ device: microphone,
14
+ devices,
15
+ onChange: setMicrophone
16
+ });
17
+ return {
18
+ devices,
19
+ enabled: microphone.enabled,
20
+ deviceId: microphone.deviceId,
21
+ setEnabled(enabled) {
22
+ setMicrophone({
23
+ ...microphone,
24
+ enabled
25
+ });
26
+ },
27
+ setDeviceId(deviceId) {
28
+ setMicrophone({
29
+ ...microphone,
30
+ deviceId
31
+ });
32
+ }
33
+ };
34
+ }
35
+ //# sourceMappingURL=useMicrophone.js.map