@sbhjt-gr/react-native-webrtc 137.0.2

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 (377) hide show
  1. package/.clang-format +11 -0
  2. package/.eslintignore +6 -0
  3. package/.nvmrc +1 -0
  4. package/ISSUE_TEMPLATE.md +40 -0
  5. package/LICENSE +22 -0
  6. package/README.md +82 -0
  7. package/android/build.gradle +36 -0
  8. package/android/consumer-rules.pro +3 -0
  9. package/android/src/main/AndroidManifest.xml +11 -0
  10. package/android/src/main/java/com/oney/WebRTCModule/AbstractVideoCaptureController.java +113 -0
  11. package/android/src/main/java/com/oney/WebRTCModule/CameraCaptureController.java +338 -0
  12. package/android/src/main/java/com/oney/WebRTCModule/CameraEventsHandler.java +49 -0
  13. package/android/src/main/java/com/oney/WebRTCModule/DataChannelWrapper.java +99 -0
  14. package/android/src/main/java/com/oney/WebRTCModule/DataPacketCryptorManager.java +63 -0
  15. package/android/src/main/java/com/oney/WebRTCModule/DisplayUtils.java +16 -0
  16. package/android/src/main/java/com/oney/WebRTCModule/EglUtils.java +66 -0
  17. package/android/src/main/java/com/oney/WebRTCModule/GetUserMediaImpl.java +539 -0
  18. package/android/src/main/java/com/oney/WebRTCModule/LibraryLoader.java +21 -0
  19. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionNotification.java +70 -0
  20. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionService.java +82 -0
  21. package/android/src/main/java/com/oney/WebRTCModule/PeerConnectionObserver.java +588 -0
  22. package/android/src/main/java/com/oney/WebRTCModule/RTCCryptoManager.java +493 -0
  23. package/android/src/main/java/com/oney/WebRTCModule/RTCVideoViewManager.java +98 -0
  24. package/android/src/main/java/com/oney/WebRTCModule/ReactBridgeUtil.java +36 -0
  25. package/android/src/main/java/com/oney/WebRTCModule/ScreenCaptureController.java +94 -0
  26. package/android/src/main/java/com/oney/WebRTCModule/SerializeUtils.java +342 -0
  27. package/android/src/main/java/com/oney/WebRTCModule/StringUtils.java +101 -0
  28. package/android/src/main/java/com/oney/WebRTCModule/ThreadUtils.java +41 -0
  29. package/android/src/main/java/com/oney/WebRTCModule/TrackCapturerEventsEmitter.java +34 -0
  30. package/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java +137 -0
  31. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java +1593 -0
  32. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModuleOptions.java +33 -0
  33. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModulePackage.java +21 -0
  34. package/android/src/main/java/com/oney/WebRTCModule/WebRTCView.java +583 -0
  35. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/ProcessorProvider.java +38 -0
  36. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoEffectProcessor.java +59 -0
  37. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessor.java +19 -0
  38. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessorFactoryInterface.java +12 -0
  39. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoDecoderFactory.java +73 -0
  40. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoEncoderFactory.java +73 -0
  41. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoDecoderFactoryProxy.java +36 -0
  42. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoEncoderFactoryProxy.java +36 -0
  43. package/android/src/main/java/org/webrtc/Camera1Helper.java +54 -0
  44. package/android/src/main/java/org/webrtc/Camera2Helper.java +52 -0
  45. package/android/src/main/res/values/strings.xml +5 -0
  46. package/android/src/main/res/values/styles.xml +8 -0
  47. package/apple/.placeholder +0 -0
  48. package/ios/RCTWebRTC/CaptureController.h +18 -0
  49. package/ios/RCTWebRTC/CaptureController.m +29 -0
  50. package/ios/RCTWebRTC/CapturerEventsDelegate.h +12 -0
  51. package/ios/RCTWebRTC/DataChannelWrapper.h +27 -0
  52. package/ios/RCTWebRTC/DataChannelWrapper.m +42 -0
  53. package/ios/RCTWebRTC/I420Converter.h +22 -0
  54. package/ios/RCTWebRTC/I420Converter.m +164 -0
  55. package/ios/RCTWebRTC/PIPController.h +24 -0
  56. package/ios/RCTWebRTC/PIPController.m +234 -0
  57. package/ios/RCTWebRTC/RCTConvert+WebRTC.h +16 -0
  58. package/ios/RCTWebRTC/RCTConvert+WebRTC.m +206 -0
  59. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.h +10 -0
  60. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.m +16 -0
  61. package/ios/RCTWebRTC/RTCVideoViewManager.h +29 -0
  62. package/ios/RCTWebRTC/RTCVideoViewManager.m +411 -0
  63. package/ios/RCTWebRTC/SampleBufferVideoCallView.h +12 -0
  64. package/ios/RCTWebRTC/SampleBufferVideoCallView.m +178 -0
  65. package/ios/RCTWebRTC/ScreenCaptureController.h +20 -0
  66. package/ios/RCTWebRTC/ScreenCaptureController.m +83 -0
  67. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.h +7 -0
  68. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.m +60 -0
  69. package/ios/RCTWebRTC/ScreenCapturer.h +19 -0
  70. package/ios/RCTWebRTC/ScreenCapturer.m +264 -0
  71. package/ios/RCTWebRTC/SerializeUtils.h +28 -0
  72. package/ios/RCTWebRTC/SerializeUtils.m +314 -0
  73. package/ios/RCTWebRTC/SocketConnection.h +13 -0
  74. package/ios/RCTWebRTC/SocketConnection.m +137 -0
  75. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.h +14 -0
  76. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.m +37 -0
  77. package/ios/RCTWebRTC/VideoCaptureController.h +21 -0
  78. package/ios/RCTWebRTC/VideoCaptureController.m +328 -0
  79. package/ios/RCTWebRTC/WebRTCModule+Permissions.m +75 -0
  80. package/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +20 -0
  81. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.h +14 -0
  82. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.m +165 -0
  83. package/ios/RCTWebRTC/WebRTCModule+RTCFrameCryptor.m +611 -0
  84. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.h +14 -0
  85. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m +545 -0
  86. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.h +24 -0
  87. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m +1004 -0
  88. package/ios/RCTWebRTC/WebRTCModule+Transceivers.m +267 -0
  89. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.h +12 -0
  90. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.m +166 -0
  91. package/ios/RCTWebRTC/WebRTCModule.h +45 -0
  92. package/ios/RCTWebRTC/WebRTCModule.m +149 -0
  93. package/ios/RCTWebRTC/WebRTCModuleOptions.h +24 -0
  94. package/ios/RCTWebRTC/WebRTCModuleOptions.m +31 -0
  95. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.h +9 -0
  96. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.m +23 -0
  97. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.h +13 -0
  98. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.m +23 -0
  99. package/ios/RCTWebRTC/videoEffects/VideoFrameProcessor.h +8 -0
  100. package/ios/RCTWebRTC.xcodeproj/project.pbxproj +404 -0
  101. package/ios/RCTWebRTC.xcworkspace/contents.xcworkspacedata +10 -0
  102. package/lib/commonjs/Constraints.js +2 -0
  103. package/lib/commonjs/Constraints.js.map +1 -0
  104. package/lib/commonjs/EventEmitter.js +69 -0
  105. package/lib/commonjs/EventEmitter.js.map +1 -0
  106. package/lib/commonjs/Logger.js +47 -0
  107. package/lib/commonjs/Logger.js.map +1 -0
  108. package/lib/commonjs/MediaDevices.js +54 -0
  109. package/lib/commonjs/MediaDevices.js.map +1 -0
  110. package/lib/commonjs/MediaStream.js +137 -0
  111. package/lib/commonjs/MediaStream.js.map +1 -0
  112. package/lib/commonjs/MediaStreamError.js +19 -0
  113. package/lib/commonjs/MediaStreamError.js.map +1 -0
  114. package/lib/commonjs/MediaStreamErrorEvent.js +17 -0
  115. package/lib/commonjs/MediaStreamErrorEvent.js.map +1 -0
  116. package/lib/commonjs/MediaStreamTrack.js +239 -0
  117. package/lib/commonjs/MediaStreamTrack.js.map +1 -0
  118. package/lib/commonjs/MediaStreamTrackEvent.js +26 -0
  119. package/lib/commonjs/MediaStreamTrackEvent.js.map +1 -0
  120. package/lib/commonjs/MessageEvent.js +27 -0
  121. package/lib/commonjs/MessageEvent.js.map +1 -0
  122. package/lib/commonjs/Permissions.js +116 -0
  123. package/lib/commonjs/Permissions.js.map +1 -0
  124. package/lib/commonjs/RTCAudioSession.js +33 -0
  125. package/lib/commonjs/RTCAudioSession.js.map +1 -0
  126. package/lib/commonjs/RTCDataChannel.js +165 -0
  127. package/lib/commonjs/RTCDataChannel.js.map +1 -0
  128. package/lib/commonjs/RTCDataChannelEvent.js +26 -0
  129. package/lib/commonjs/RTCDataChannelEvent.js.map +1 -0
  130. package/lib/commonjs/RTCDataPacketCryptor.js +76 -0
  131. package/lib/commonjs/RTCDataPacketCryptor.js.map +1 -0
  132. package/lib/commonjs/RTCDataPacketCryptorFactory.js +27 -0
  133. package/lib/commonjs/RTCDataPacketCryptorFactory.js.map +1 -0
  134. package/lib/commonjs/RTCErrorEvent.js +23 -0
  135. package/lib/commonjs/RTCErrorEvent.js.map +1 -0
  136. package/lib/commonjs/RTCFrameCryptor.js +138 -0
  137. package/lib/commonjs/RTCFrameCryptor.js.map +1 -0
  138. package/lib/commonjs/RTCFrameCryptorFactory.js +81 -0
  139. package/lib/commonjs/RTCFrameCryptorFactory.js.map +1 -0
  140. package/lib/commonjs/RTCIceCandidate.js +34 -0
  141. package/lib/commonjs/RTCIceCandidate.js.map +1 -0
  142. package/lib/commonjs/RTCIceCandidateEvent.js +28 -0
  143. package/lib/commonjs/RTCIceCandidateEvent.js.map +1 -0
  144. package/lib/commonjs/RTCKeyProvider.js +111 -0
  145. package/lib/commonjs/RTCKeyProvider.js.map +1 -0
  146. package/lib/commonjs/RTCPIPView.js +38 -0
  147. package/lib/commonjs/RTCPIPView.js.map +1 -0
  148. package/lib/commonjs/RTCPeerConnection.js +694 -0
  149. package/lib/commonjs/RTCPeerConnection.js.map +1 -0
  150. package/lib/commonjs/RTCRtcpParameters.js +24 -0
  151. package/lib/commonjs/RTCRtcpParameters.js.map +1 -0
  152. package/lib/commonjs/RTCRtpCapabilities.js +22 -0
  153. package/lib/commonjs/RTCRtpCapabilities.js.map +1 -0
  154. package/lib/commonjs/RTCRtpCodecCapability.js +19 -0
  155. package/lib/commonjs/RTCRtpCodecCapability.js.map +1 -0
  156. package/lib/commonjs/RTCRtpCodecParameters.js +38 -0
  157. package/lib/commonjs/RTCRtpCodecParameters.js.map +1 -0
  158. package/lib/commonjs/RTCRtpEncodingParameters.js +78 -0
  159. package/lib/commonjs/RTCRtpEncodingParameters.js.map +1 -0
  160. package/lib/commonjs/RTCRtpHeaderExtension.js +27 -0
  161. package/lib/commonjs/RTCRtpHeaderExtension.js.map +1 -0
  162. package/lib/commonjs/RTCRtpParameters.js +35 -0
  163. package/lib/commonjs/RTCRtpParameters.js.map +1 -0
  164. package/lib/commonjs/RTCRtpReceiveParameters.js +15 -0
  165. package/lib/commonjs/RTCRtpReceiveParameters.js.map +1 -0
  166. package/lib/commonjs/RTCRtpReceiver.js +53 -0
  167. package/lib/commonjs/RTCRtpReceiver.js.map +1 -0
  168. package/lib/commonjs/RTCRtpSendParameters.js +49 -0
  169. package/lib/commonjs/RTCRtpSendParameters.js.map +1 -0
  170. package/lib/commonjs/RTCRtpSender.js +67 -0
  171. package/lib/commonjs/RTCRtpSender.js.map +1 -0
  172. package/lib/commonjs/RTCRtpTransceiver.js +81 -0
  173. package/lib/commonjs/RTCRtpTransceiver.js.map +1 -0
  174. package/lib/commonjs/RTCSessionDescription.js +33 -0
  175. package/lib/commonjs/RTCSessionDescription.js.map +1 -0
  176. package/lib/commonjs/RTCTrackEvent.js +38 -0
  177. package/lib/commonjs/RTCTrackEvent.js.map +1 -0
  178. package/lib/commonjs/RTCUtil.js +186 -0
  179. package/lib/commonjs/RTCUtil.js.map +1 -0
  180. package/lib/commonjs/RTCView.js +16 -0
  181. package/lib/commonjs/RTCView.js.map +1 -0
  182. package/lib/commonjs/ScreenCapturePickerView.js +10 -0
  183. package/lib/commonjs/ScreenCapturePickerView.js.map +1 -0
  184. package/lib/commonjs/getDisplayMedia.js +33 -0
  185. package/lib/commonjs/getDisplayMedia.js.map +1 -0
  186. package/lib/commonjs/getUserMedia.js +101 -0
  187. package/lib/commonjs/getUserMedia.js.map +1 -0
  188. package/lib/commonjs/index.js +224 -0
  189. package/lib/commonjs/index.js.map +1 -0
  190. package/lib/module/Constraints.js +2 -0
  191. package/lib/module/Constraints.js.map +1 -0
  192. package/lib/module/EventEmitter.js +58 -0
  193. package/lib/module/EventEmitter.js.map +1 -0
  194. package/lib/module/Logger.js +39 -0
  195. package/lib/module/Logger.js.map +1 -0
  196. package/lib/module/MediaDevices.js +46 -0
  197. package/lib/module/MediaDevices.js.map +1 -0
  198. package/lib/module/MediaStream.js +129 -0
  199. package/lib/module/MediaStream.js.map +1 -0
  200. package/lib/module/MediaStreamError.js +12 -0
  201. package/lib/module/MediaStreamError.js.map +1 -0
  202. package/lib/module/MediaStreamErrorEvent.js +10 -0
  203. package/lib/module/MediaStreamErrorEvent.js.map +1 -0
  204. package/lib/module/MediaStreamTrack.js +231 -0
  205. package/lib/module/MediaStreamTrack.js.map +1 -0
  206. package/lib/module/MediaStreamTrackEvent.js +19 -0
  207. package/lib/module/MediaStreamTrackEvent.js.map +1 -0
  208. package/lib/module/MessageEvent.js +20 -0
  209. package/lib/module/MessageEvent.js.map +1 -0
  210. package/lib/module/Permissions.js +109 -0
  211. package/lib/module/Permissions.js.map +1 -0
  212. package/lib/module/RTCAudioSession.js +26 -0
  213. package/lib/module/RTCAudioSession.js.map +1 -0
  214. package/lib/module/RTCDataChannel.js +155 -0
  215. package/lib/module/RTCDataChannel.js.map +1 -0
  216. package/lib/module/RTCDataChannelEvent.js +19 -0
  217. package/lib/module/RTCDataChannelEvent.js.map +1 -0
  218. package/lib/module/RTCDataPacketCryptor.js +66 -0
  219. package/lib/module/RTCDataPacketCryptor.js.map +1 -0
  220. package/lib/module/RTCDataPacketCryptorFactory.js +19 -0
  221. package/lib/module/RTCDataPacketCryptorFactory.js.map +1 -0
  222. package/lib/module/RTCErrorEvent.js +16 -0
  223. package/lib/module/RTCErrorEvent.js.map +1 -0
  224. package/lib/module/RTCFrameCryptor.js +128 -0
  225. package/lib/module/RTCFrameCryptor.js.map +1 -0
  226. package/lib/module/RTCFrameCryptorFactory.js +70 -0
  227. package/lib/module/RTCFrameCryptorFactory.js.map +1 -0
  228. package/lib/module/RTCIceCandidate.js +27 -0
  229. package/lib/module/RTCIceCandidate.js.map +1 -0
  230. package/lib/module/RTCIceCandidateEvent.js +21 -0
  231. package/lib/module/RTCIceCandidateEvent.js.map +1 -0
  232. package/lib/module/RTCKeyProvider.js +101 -0
  233. package/lib/module/RTCKeyProvider.js.map +1 -0
  234. package/lib/module/RTCPIPView.js +26 -0
  235. package/lib/module/RTCPIPView.js.map +1 -0
  236. package/lib/module/RTCPeerConnection.js +684 -0
  237. package/lib/module/RTCPeerConnection.js.map +1 -0
  238. package/lib/module/RTCRtcpParameters.js +17 -0
  239. package/lib/module/RTCRtcpParameters.js.map +1 -0
  240. package/lib/module/RTCRtpCapabilities.js +15 -0
  241. package/lib/module/RTCRtpCapabilities.js.map +1 -0
  242. package/lib/module/RTCRtpCodecCapability.js +12 -0
  243. package/lib/module/RTCRtpCodecCapability.js.map +1 -0
  244. package/lib/module/RTCRtpCodecParameters.js +31 -0
  245. package/lib/module/RTCRtpCodecParameters.js.map +1 -0
  246. package/lib/module/RTCRtpEncodingParameters.js +71 -0
  247. package/lib/module/RTCRtpEncodingParameters.js.map +1 -0
  248. package/lib/module/RTCRtpHeaderExtension.js +20 -0
  249. package/lib/module/RTCRtpHeaderExtension.js.map +1 -0
  250. package/lib/module/RTCRtpParameters.js +27 -0
  251. package/lib/module/RTCRtpParameters.js.map +1 -0
  252. package/lib/module/RTCRtpReceiveParameters.js +7 -0
  253. package/lib/module/RTCRtpReceiveParameters.js.map +1 -0
  254. package/lib/module/RTCRtpReceiver.js +45 -0
  255. package/lib/module/RTCRtpReceiver.js.map +1 -0
  256. package/lib/module/RTCRtpSendParameters.js +41 -0
  257. package/lib/module/RTCRtpSendParameters.js.map +1 -0
  258. package/lib/module/RTCRtpSender.js +59 -0
  259. package/lib/module/RTCRtpSender.js.map +1 -0
  260. package/lib/module/RTCRtpTransceiver.js +74 -0
  261. package/lib/module/RTCRtpTransceiver.js.map +1 -0
  262. package/lib/module/RTCSessionDescription.js +26 -0
  263. package/lib/module/RTCSessionDescription.js.map +1 -0
  264. package/lib/module/RTCTrackEvent.js +31 -0
  265. package/lib/module/RTCTrackEvent.js.map +1 -0
  266. package/lib/module/RTCUtil.js +176 -0
  267. package/lib/module/RTCUtil.js.map +1 -0
  268. package/lib/module/RTCView.js +11 -0
  269. package/lib/module/RTCView.js.map +1 -0
  270. package/lib/module/ScreenCapturePickerView.js +3 -0
  271. package/lib/module/ScreenCapturePickerView.js.map +1 -0
  272. package/lib/module/getDisplayMedia.js +26 -0
  273. package/lib/module/getDisplayMedia.js.map +1 -0
  274. package/lib/module/getUserMedia.js +92 -0
  275. package/lib/module/getUserMedia.js.map +1 -0
  276. package/lib/module/index.js +60 -0
  277. package/lib/module/index.js.map +1 -0
  278. package/lib/typescript/Constraints.d.ts +19 -0
  279. package/lib/typescript/EventEmitter.d.ts +7 -0
  280. package/lib/typescript/Logger.d.ts +13 -0
  281. package/lib/typescript/MediaDevices.d.ts +30 -0
  282. package/lib/typescript/MediaStream.d.ts +48 -0
  283. package/lib/typescript/MediaStreamError.d.ts +6 -0
  284. package/lib/typescript/MediaStreamErrorEvent.d.ts +6 -0
  285. package/lib/typescript/MediaStreamTrack.d.ts +103 -0
  286. package/lib/typescript/MediaStreamTrackEvent.d.ts +19 -0
  287. package/lib/typescript/MessageEvent.d.ts +21 -0
  288. package/lib/typescript/Permissions.d.ts +55 -0
  289. package/lib/typescript/RTCAudioSession.d.ts +10 -0
  290. package/lib/typescript/RTCDataChannel.d.ts +43 -0
  291. package/lib/typescript/RTCDataChannelEvent.d.ts +19 -0
  292. package/lib/typescript/RTCDataPacketCryptor.d.ts +12 -0
  293. package/lib/typescript/RTCDataPacketCryptorFactory.d.ts +6 -0
  294. package/lib/typescript/RTCErrorEvent.d.ts +12 -0
  295. package/lib/typescript/RTCFrameCryptor.d.ts +47 -0
  296. package/lib/typescript/RTCFrameCryptorFactory.d.ts +21 -0
  297. package/lib/typescript/RTCIceCandidate.d.ts +17 -0
  298. package/lib/typescript/RTCIceCandidateEvent.d.ts +20 -0
  299. package/lib/typescript/RTCKeyProvider.d.ts +21 -0
  300. package/lib/typescript/RTCPIPView.d.ts +15 -0
  301. package/lib/typescript/RTCPeerConnection.d.ts +117 -0
  302. package/lib/typescript/RTCRtcpParameters.d.ts +10 -0
  303. package/lib/typescript/RTCRtpCapabilities.d.ts +9 -0
  304. package/lib/typescript/RTCRtpCodecCapability.d.ts +7 -0
  305. package/lib/typescript/RTCRtpCodecParameters.d.ts +16 -0
  306. package/lib/typescript/RTCRtpEncodingParameters.d.ts +23 -0
  307. package/lib/typescript/RTCRtpHeaderExtension.d.ts +12 -0
  308. package/lib/typescript/RTCRtpParameters.d.ts +19 -0
  309. package/lib/typescript/RTCRtpReceiveParameters.d.ts +4 -0
  310. package/lib/typescript/RTCRtpReceiver.d.ts +21 -0
  311. package/lib/typescript/RTCRtpSendParameters.d.ts +20 -0
  312. package/lib/typescript/RTCRtpSender.d.ts +22 -0
  313. package/lib/typescript/RTCRtpTransceiver.d.ts +31 -0
  314. package/lib/typescript/RTCSessionDescription.d.ts +12 -0
  315. package/lib/typescript/RTCTrackEvent.d.ts +29 -0
  316. package/lib/typescript/RTCUtil.d.ts +37 -0
  317. package/lib/typescript/RTCView.d.ts +117 -0
  318. package/lib/typescript/ScreenCapturePickerView.d.ts +2 -0
  319. package/lib/typescript/getDisplayMedia.d.ts +2 -0
  320. package/lib/typescript/getUserMedia.d.ts +7 -0
  321. package/lib/typescript/index.d.ts +22 -0
  322. package/livekit-react-native-webrtc.podspec +29 -0
  323. package/macos/RCTWebRTC.xcodeproj/project.pbxproj +324 -0
  324. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  325. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  326. package/metro.config.js +7 -0
  327. package/metro.config.macos.js +14 -0
  328. package/package.json +65 -0
  329. package/react-native.config.js +11 -0
  330. package/src/.eslintrc.cjs +67 -0
  331. package/src/Constraints.ts +21 -0
  332. package/src/EventEmitter.ts +83 -0
  333. package/src/Logger.ts +49 -0
  334. package/src/MediaDevices.ts +53 -0
  335. package/src/MediaStream.ts +161 -0
  336. package/src/MediaStreamError.ts +12 -0
  337. package/src/MediaStreamErrorEvent.ts +11 -0
  338. package/src/MediaStreamTrack.ts +331 -0
  339. package/src/MediaStreamTrackEvent.ts +25 -0
  340. package/src/MessageEvent.ts +26 -0
  341. package/src/Permissions.ts +133 -0
  342. package/src/RTCAudioSession.ts +25 -0
  343. package/src/RTCDataChannel.ts +190 -0
  344. package/src/RTCDataChannelEvent.ts +28 -0
  345. package/src/RTCDataPacketCryptor.ts +90 -0
  346. package/src/RTCDataPacketCryptorFactory.ts +25 -0
  347. package/src/RTCErrorEvent.ts +21 -0
  348. package/src/RTCFrameCryptor.ts +163 -0
  349. package/src/RTCFrameCryptorFactory.ts +102 -0
  350. package/src/RTCIceCandidate.ts +29 -0
  351. package/src/RTCIceCandidateEvent.ts +26 -0
  352. package/src/RTCKeyProvider.ts +117 -0
  353. package/src/RTCPIPView.tsx +47 -0
  354. package/src/RTCPeerConnection.ts +832 -0
  355. package/src/RTCRtcpParameters.ts +23 -0
  356. package/src/RTCRtpCapabilities.ts +16 -0
  357. package/src/RTCRtpCodecCapability.ts +13 -0
  358. package/src/RTCRtpCodecParameters.ts +44 -0
  359. package/src/RTCRtpEncodingParameters.ts +90 -0
  360. package/src/RTCRtpHeaderExtension.ts +27 -0
  361. package/src/RTCRtpParameters.ts +37 -0
  362. package/src/RTCRtpReceiveParameters.ts +7 -0
  363. package/src/RTCRtpReceiver.ts +60 -0
  364. package/src/RTCRtpSendParameters.ts +63 -0
  365. package/src/RTCRtpSender.ts +78 -0
  366. package/src/RTCRtpTransceiver.ts +107 -0
  367. package/src/RTCSessionDescription.ts +30 -0
  368. package/src/RTCTrackEvent.ts +42 -0
  369. package/src/RTCUtil.ts +211 -0
  370. package/src/RTCView.ts +122 -0
  371. package/src/ScreenCapturePickerView.ts +4 -0
  372. package/src/getDisplayMedia.ts +30 -0
  373. package/src/getUserMedia.ts +111 -0
  374. package/src/index.ts +101 -0
  375. package/tools/format.sh +6 -0
  376. package/tools/release.sh +45 -0
  377. package/tsconfig.json +16 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _RTCRtpSendParameters = _interopRequireDefault(require("./RTCRtpSendParameters"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ const {
12
+ WebRTCModule
13
+ } = _reactNative.NativeModules;
14
+ class RTCRtpSender {
15
+ constructor(info) {
16
+ _defineProperty(this, "_id", void 0);
17
+ _defineProperty(this, "_track", null);
18
+ _defineProperty(this, "_peerConnectionId", void 0);
19
+ _defineProperty(this, "_rtpParameters", void 0);
20
+ this._peerConnectionId = info.peerConnectionId;
21
+ this._id = info.id;
22
+ this._rtpParameters = new _RTCRtpSendParameters.default(info.rtpParameters);
23
+ if (info.track) {
24
+ this._track = info.track;
25
+ }
26
+ }
27
+ async replaceTrack(track) {
28
+ try {
29
+ await WebRTCModule.senderReplaceTrack(this._peerConnectionId, this._id, track ? track.id : null);
30
+ } catch (e) {
31
+ return;
32
+ }
33
+ this._track = track;
34
+ }
35
+ static getCapabilities(kind) {
36
+ return WebRTCModule.senderGetCapabilities(kind);
37
+ }
38
+ getParameters() {
39
+ return this._rtpParameters;
40
+ }
41
+ async setParameters(parameters) {
42
+ // This allows us to get rid of private "underscore properties"
43
+ const _params = JSON.parse(JSON.stringify(parameters));
44
+ const newParameters = await WebRTCModule.senderSetParameters(this._peerConnectionId, this._id, _params);
45
+ this._rtpParameters = new _RTCRtpSendParameters.default(newParameters);
46
+ }
47
+ getStats() {
48
+ return WebRTCModule.senderGetStats(this._peerConnectionId, this._id).then(data =>
49
+ /* On both Android and iOS it is faster to construct a single
50
+ JSON string representing the Map of StatsReports and have it
51
+ pass through the React Native bridge rather than the Map of
52
+ StatsReports. While the implementations do try to be faster in
53
+ general, the stress is on being faster to pass through the React
54
+ Native bridge which is a bottleneck that tends to be visible in
55
+ the UI when there is congestion involving UI-related passing.
56
+ */
57
+ new Map(JSON.parse(data)));
58
+ }
59
+ get track() {
60
+ return this._track;
61
+ }
62
+ get id() {
63
+ return this._id;
64
+ }
65
+ }
66
+ exports.default = RTCRtpSender;
67
+ //# sourceMappingURL=RTCRtpSender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_RTCRtpSendParameters","_interopRequireDefault","obj","__esModule","default","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","WebRTCModule","NativeModules","RTCRtpSender","constructor","info","_peerConnectionId","peerConnectionId","_id","id","_rtpParameters","RTCRtpSendParameters","rtpParameters","track","_track","replaceTrack","senderReplaceTrack","e","getCapabilities","kind","senderGetCapabilities","getParameters","setParameters","parameters","_params","JSON","parse","stringify","newParameters","senderSetParameters","getStats","senderGetStats","then","data","Map","exports"],"sources":["RTCRtpSender.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\n\nimport MediaStreamTrack from './MediaStreamTrack';\nimport RTCRtpCapabilities from './RTCRtpCapabilities';\nimport RTCRtpSendParameters, { RTCRtpSendParametersInit } from './RTCRtpSendParameters';\n\nconst { WebRTCModule } = NativeModules;\n\n\nexport default class RTCRtpSender {\n _id: string;\n _track: MediaStreamTrack | null = null;\n _peerConnectionId: number;\n _rtpParameters: RTCRtpSendParameters;\n\n constructor(info: {\n peerConnectionId: number,\n id: string,\n track?: MediaStreamTrack,\n rtpParameters: RTCRtpSendParametersInit\n }) {\n this._peerConnectionId = info.peerConnectionId;\n this._id = info.id;\n this._rtpParameters = new RTCRtpSendParameters(info.rtpParameters);\n\n if (info.track) {\n this._track = info.track;\n }\n }\n\n async replaceTrack(track: MediaStreamTrack | null): Promise<void> {\n try {\n await WebRTCModule.senderReplaceTrack(this._peerConnectionId, this._id, track ? track.id : null);\n } catch (e) {\n return;\n }\n\n this._track = track;\n }\n\n static getCapabilities(kind: 'audio' | 'video'): RTCRtpCapabilities {\n return WebRTCModule.senderGetCapabilities(kind);\n }\n\n getParameters(): RTCRtpSendParameters {\n return this._rtpParameters;\n }\n\n async setParameters(parameters: RTCRtpSendParameters): Promise<void> {\n // This allows us to get rid of private \"underscore properties\"\n const _params = JSON.parse(JSON.stringify(parameters));\n const newParameters = await WebRTCModule.senderSetParameters(this._peerConnectionId, this._id, _params);\n\n this._rtpParameters = new RTCRtpSendParameters(newParameters);\n }\n\n getStats() {\n return WebRTCModule.senderGetStats(this._peerConnectionId, this._id).then(data =>\n /* On both Android and iOS it is faster to construct a single\n JSON string representing the Map of StatsReports and have it\n pass through the React Native bridge rather than the Map of\n StatsReports. While the implementations do try to be faster in\n general, the stress is on being faster to pass through the React\n Native bridge which is a bottleneck that tends to be visible in\n the UI when there is congestion involving UI-related passing.\n */\n new Map(JSON.parse(data))\n );\n }\n\n get track() {\n return this._track;\n }\n\n get id() {\n return this._id;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,qBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAwF,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAJ,GAAA,IAAAM,MAAA,CAAAC,cAAA,CAAAP,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAV,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAExF,MAAM;EAAEW;AAAa,CAAC,GAAGC,0BAAa;AAGvB,MAAMC,YAAY,CAAC;EAM9BC,WAAWA,CAACC,IAKX,EAAE;IAAAZ,eAAA;IAAAA,eAAA,iBAT+B,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAUlC,IAAI,CAACa,iBAAiB,GAAGD,IAAI,CAACE,gBAAgB;IAC9C,IAAI,CAACC,GAAG,GAAGH,IAAI,CAACI,EAAE;IAClB,IAAI,CAACC,cAAc,GAAG,IAAIC,6BAAoB,CAACN,IAAI,CAACO,aAAa,CAAC;IAElE,IAAIP,IAAI,CAACQ,KAAK,EAAE;MACZ,IAAI,CAACC,MAAM,GAAGT,IAAI,CAACQ,KAAK;IAC5B;EACJ;EAEA,MAAME,YAAYA,CAACF,KAA8B,EAAiB;IAC9D,IAAI;MACA,MAAMZ,YAAY,CAACe,kBAAkB,CAAC,IAAI,CAACV,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEK,KAAK,GAAGA,KAAK,CAACJ,EAAE,GAAG,IAAI,CAAC;IACpG,CAAC,CAAC,OAAOQ,CAAC,EAAE;MACR;IACJ;IAEA,IAAI,CAACH,MAAM,GAAGD,KAAK;EACvB;EAEA,OAAOK,eAAeA,CAACC,IAAuB,EAAsB;IAChE,OAAOlB,YAAY,CAACmB,qBAAqB,CAACD,IAAI,CAAC;EACnD;EAEAE,aAAaA,CAAA,EAAyB;IAClC,OAAO,IAAI,CAACX,cAAc;EAC9B;EAEA,MAAMY,aAAaA,CAACC,UAAgC,EAAiB;IACjE;IACA,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,UAAU,CAAC,CAAC;IACtD,MAAMK,aAAa,GAAG,MAAM3B,YAAY,CAAC4B,mBAAmB,CAAC,IAAI,CAACvB,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEgB,OAAO,CAAC;IAEvG,IAAI,CAACd,cAAc,GAAG,IAAIC,6BAAoB,CAACiB,aAAa,CAAC;EACjE;EAEAE,QAAQA,CAAA,EAAG;IACP,OAAO7B,YAAY,CAAC8B,cAAc,CAAC,IAAI,CAACzB,iBAAiB,EAAE,IAAI,CAACE,GAAG,CAAC,CAACwB,IAAI,CAACC,IAAI;IAC1E;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;IACY,IAAIC,GAAG,CAACT,IAAI,CAACC,KAAK,CAACO,IAAI,CAAC,CAC5B,CAAC;EACL;EAEA,IAAIpB,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;EACtB;EAEA,IAAIL,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACD,GAAG;EACnB;AACJ;AAAC2B,OAAA,CAAA3C,OAAA,GAAAW,YAAA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ const {
10
+ WebRTCModule
11
+ } = _reactNative.NativeModules;
12
+ class RTCRtpTransceiver {
13
+ constructor(args) {
14
+ var _args$mid, _args$currentDirectio;
15
+ _defineProperty(this, "_peerConnectionId", void 0);
16
+ _defineProperty(this, "_sender", void 0);
17
+ _defineProperty(this, "_receiver", void 0);
18
+ _defineProperty(this, "_mid", null);
19
+ _defineProperty(this, "_direction", void 0);
20
+ _defineProperty(this, "_currentDirection", void 0);
21
+ _defineProperty(this, "_stopped", void 0);
22
+ this._peerConnectionId = args.peerConnectionId;
23
+ this._mid = (_args$mid = args.mid) !== null && _args$mid !== void 0 ? _args$mid : null;
24
+ this._direction = args.direction;
25
+ this._currentDirection = (_args$currentDirectio = args.currentDirection) !== null && _args$currentDirectio !== void 0 ? _args$currentDirectio : null;
26
+ this._stopped = Boolean(args.isStopped);
27
+ this._sender = args.sender;
28
+ this._receiver = args.receiver;
29
+ }
30
+ get mid() {
31
+ return this._mid;
32
+ }
33
+ get stopped() {
34
+ return this._stopped;
35
+ }
36
+ get direction() {
37
+ return this._direction;
38
+ }
39
+ set direction(val) {
40
+ if (!['sendonly', 'recvonly', 'sendrecv', 'inactive'].includes(val)) {
41
+ throw new TypeError('Invalid direction provided');
42
+ }
43
+ if (this._stopped) {
44
+ throw new Error('Transceiver Stopped');
45
+ }
46
+ if (this._direction === val) {
47
+ return;
48
+ }
49
+ const oldDirection = this._direction;
50
+ WebRTCModule.transceiverSetDirection(this._peerConnectionId, this.sender.id, val).catch(() => {
51
+ this._direction = oldDirection;
52
+ });
53
+ this._direction = val;
54
+ }
55
+ get currentDirection() {
56
+ return this._currentDirection;
57
+ }
58
+ get sender() {
59
+ return this._sender;
60
+ }
61
+ get receiver() {
62
+ return this._receiver;
63
+ }
64
+ stop() {
65
+ if (this._stopped) {
66
+ return;
67
+ }
68
+ WebRTCModule.transceiverStop(this._peerConnectionId, this.sender.id).then(() => this._setStopped());
69
+ }
70
+ setCodecPreferences(codecs) {
71
+ WebRTCModule.transceiverSetCodecPreferences(this._peerConnectionId, this.sender.id, codecs);
72
+ }
73
+ _setStopped() {
74
+ this._stopped = true;
75
+ this._direction = 'stopped';
76
+ this._currentDirection = 'stopped';
77
+ this._mid = null;
78
+ }
79
+ }
80
+ exports.default = RTCRtpTransceiver;
81
+ //# sourceMappingURL=RTCRtpTransceiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","WebRTCModule","NativeModules","RTCRtpTransceiver","constructor","args","_args$mid","_args$currentDirectio","_peerConnectionId","peerConnectionId","_mid","mid","_direction","direction","_currentDirection","currentDirection","_stopped","Boolean","isStopped","_sender","sender","_receiver","receiver","stopped","val","includes","TypeError","Error","oldDirection","transceiverSetDirection","id","catch","stop","transceiverStop","then","_setStopped","setCodecPreferences","codecs","transceiverSetCodecPreferences","exports","default"],"sources":["RTCRtpTransceiver.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\n\nimport RTCRtpCodecCapability from './RTCRtpCodecCapability';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpSender from './RTCRtpSender';\n\nconst { WebRTCModule } = NativeModules;\n\nexport default class RTCRtpTransceiver {\n _peerConnectionId: number;\n _sender: RTCRtpSender;\n _receiver: RTCRtpReceiver;\n\n _mid: string | null = null;\n _direction: string;\n _currentDirection: string;\n _stopped: boolean;\n\n constructor(args: {\n peerConnectionId: number,\n isStopped: boolean,\n direction: string,\n currentDirection: string,\n mid?: string,\n sender: RTCRtpSender,\n receiver: RTCRtpReceiver,\n }) {\n this._peerConnectionId = args.peerConnectionId;\n this._mid = args.mid ?? null;\n this._direction = args.direction;\n this._currentDirection = args.currentDirection ?? null;\n this._stopped = Boolean(args.isStopped);\n this._sender = args.sender;\n this._receiver = args.receiver;\n }\n\n get mid() {\n return this._mid;\n }\n\n get stopped() {\n return this._stopped;\n }\n\n get direction() {\n return this._direction;\n }\n\n set direction(val) {\n if (![ 'sendonly', 'recvonly', 'sendrecv', 'inactive' ].includes(val)) {\n throw new TypeError('Invalid direction provided');\n }\n\n if (this._stopped) {\n throw new Error('Transceiver Stopped');\n }\n\n if (this._direction === val) {\n return;\n }\n\n const oldDirection = this._direction;\n\n WebRTCModule.transceiverSetDirection(this._peerConnectionId, this.sender.id, val)\n .catch(() => {\n this._direction = oldDirection;\n });\n\n this._direction = val;\n }\n\n get currentDirection() {\n return this._currentDirection;\n }\n\n get sender() {\n return this._sender;\n }\n\n get receiver() {\n return this._receiver;\n }\n\n stop() {\n if (this._stopped) {\n return;\n }\n\n WebRTCModule.transceiverStop(this._peerConnectionId, this.sender.id)\n .then(() => this._setStopped());\n }\n\n setCodecPreferences(codecs: RTCRtpCodecCapability[]) {\n WebRTCModule.transceiverSetCodecPreferences(\n this._peerConnectionId,\n this.sender.id,\n codecs\n );\n }\n\n _setStopped() {\n this._stopped = true;\n this._direction = 'stopped';\n this._currentDirection = 'stopped';\n this._mid = null;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ class RTCSessionDescription {
9
+ constructor() {
10
+ let info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
11
+ type: null,
12
+ sdp: ''
13
+ };
14
+ _defineProperty(this, "_sdp", void 0);
15
+ _defineProperty(this, "_type", void 0);
16
+ this._sdp = info.sdp;
17
+ this._type = info.type;
18
+ }
19
+ get sdp() {
20
+ return this._sdp;
21
+ }
22
+ get type() {
23
+ return this._type;
24
+ }
25
+ toJSON() {
26
+ return {
27
+ sdp: this._sdp,
28
+ type: this._type
29
+ };
30
+ }
31
+ }
32
+ exports.default = RTCSessionDescription;
33
+ //# sourceMappingURL=RTCSessionDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RTCSessionDescription","constructor","info","arguments","length","undefined","type","sdp","_defineProperty","_sdp","_type","toJSON","exports","default"],"sources":["RTCSessionDescription.ts"],"sourcesContent":["\nexport interface RTCSessionDescriptionInit {\n sdp: string;\n type: string | null;\n}\n\nexport default class RTCSessionDescription {\n _sdp: string;\n _type: string | null;\n\n constructor(info: RTCSessionDescriptionInit = { type: null, sdp: '' }) {\n this._sdp = info.sdp;\n this._type = info.type;\n }\n\n get sdp(): string {\n return this._sdp;\n }\n\n get type(): string | null {\n return this._type;\n }\n\n toJSON(): RTCSessionDescriptionInit {\n return {\n sdp: this._sdp,\n type: this._type\n };\n }\n}\n"],"mappings":";;;;;;;AAMe,MAAMA,qBAAqB,CAAC;EAIvCC,WAAWA,CAAA,EAA4D;IAAA,IAA3DC,IAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;MAAEG,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE;IAAG,CAAC;IAAAC,eAAA;IAAAA,eAAA;IACjE,IAAI,CAACC,IAAI,GAAGP,IAAI,CAACK,GAAG;IACpB,IAAI,CAACG,KAAK,GAAGR,IAAI,CAACI,IAAI;EAC1B;EAEA,IAAIC,GAAGA,CAAA,EAAW;IACd,OAAO,IAAI,CAACE,IAAI;EACpB;EAEA,IAAIH,IAAIA,CAAA,EAAkB;IACtB,OAAO,IAAI,CAACI,KAAK;EACrB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,OAAO;MACHJ,GAAG,EAAE,IAAI,CAACE,IAAI;MACdH,IAAI,EAAE,IAAI,CAACI;IACf,CAAC;EACL;AACJ;AAACE,OAAA,CAAAC,OAAA,GAAAb,qBAAA"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _index = require("event-target-shim/index");
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ /**
10
+ * @eventClass
11
+ * This event is fired whenever the Track is changed in PeerConnection.
12
+ * @param {TRACK_EVENTS} type - The type of event.
13
+ * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.
14
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.
15
+ */
16
+ class RTCTrackEvent extends _index.Event {
17
+ /** @eventProperty */
18
+
19
+ /** @eventProperty */
20
+
21
+ /** @eventProperty */
22
+
23
+ /** @eventProperty */
24
+
25
+ constructor(type, eventInitDict) {
26
+ super(type, eventInitDict);
27
+ _defineProperty(this, "streams", []);
28
+ _defineProperty(this, "transceiver", void 0);
29
+ _defineProperty(this, "receiver", void 0);
30
+ _defineProperty(this, "track", void 0);
31
+ this.streams = eventInitDict.streams;
32
+ this.transceiver = eventInitDict.transceiver;
33
+ this.receiver = eventInitDict.transceiver.receiver;
34
+ this.track = eventInitDict.transceiver.receiver ? eventInitDict.transceiver.receiver.track : null;
35
+ }
36
+ }
37
+ exports.default = RTCTrackEvent;
38
+ //# sourceMappingURL=RTCTrackEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_index","require","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","RTCTrackEvent","Event","constructor","type","eventInitDict","streams","transceiver","receiver","track","exports","default"],"sources":["RTCTrackEvent.ts"],"sourcesContent":["import { Event } from 'event-target-shim/index';\n\nimport MediaStream from './MediaStream';\nimport type MediaStreamTrack from './MediaStreamTrack';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\n\ntype TRACK_EVENTS = 'track'\n\ninterface IRTCTrackEventInitDict extends Event.EventInit {\n streams: MediaStream[]\n transceiver: RTCRtpTransceiver\n}\n\n/**\n * @eventClass\n * This event is fired whenever the Track is changed in PeerConnection.\n * @param {TRACK_EVENTS} type - The type of event.\n * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.\n */\nexport default class RTCTrackEvent<TEventType extends TRACK_EVENTS> extends Event<TEventType> {\n /** @eventProperty */\n readonly streams: MediaStream[] = [];\n\n /** @eventProperty */\n readonly transceiver: RTCRtpTransceiver;\n\n /** @eventProperty */\n readonly receiver: RTCRtpReceiver | null;\n\n /** @eventProperty */\n readonly track: MediaStreamTrack | null;\n\n constructor(type: TEventType, eventInitDict: IRTCTrackEventInitDict) {\n super(type, eventInitDict);\n this.streams = eventInitDict.streams;\n this.transceiver = eventInitDict.transceiver;\n this.receiver = eventInitDict.transceiver.receiver;\n this.track = eventInitDict.transceiver.receiver ? eventInitDict.transceiver.receiver.track : null;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAgD,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAD,GAAA,IAAAG,MAAA,CAAAC,cAAA,CAAAJ,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAP,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAchD;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMQ,aAAa,SAA0CC,YAAK,CAAa;EAC1F;;EAGA;;EAGA;;EAGA;;EAGAC,WAAWA,CAACC,IAAgB,EAAEC,aAAqC,EAAE;IACjE,KAAK,CAACD,IAAI,EAAEC,aAAa,CAAC;IAACb,eAAA,kBAZG,EAAE;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAahC,IAAI,CAACc,OAAO,GAAGD,aAAa,CAACC,OAAO;IACpC,IAAI,CAACC,WAAW,GAAGF,aAAa,CAACE,WAAW;IAC5C,IAAI,CAACC,QAAQ,GAAGH,aAAa,CAACE,WAAW,CAACC,QAAQ;IAClD,IAAI,CAACC,KAAK,GAAGJ,aAAa,CAACE,WAAW,CAACC,QAAQ,GAAGH,aAAa,CAACE,WAAW,CAACC,QAAQ,CAACC,KAAK,GAAG,IAAI;EACrG;AACJ;AAACC,OAAA,CAAAC,OAAA,GAAAV,aAAA"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.deepClone = deepClone;
7
+ exports.isSdpTypeValid = isSdpTypeValid;
8
+ exports.normalizeConstraints = normalizeConstraints;
9
+ exports.normalizeOfferOptions = normalizeOfferOptions;
10
+ exports.uniqueID = uniqueID;
11
+ const DEFAULT_AUDIO_CONSTRAINTS = {};
12
+ const DEFAULT_VIDEO_CONSTRAINTS = {
13
+ facingMode: 'user',
14
+ frameRate: 30,
15
+ height: 720,
16
+ width: 1280
17
+ };
18
+ const FACING_MODES = ['user', 'environment'];
19
+ const ASPECT_RATIO = 16 / 9;
20
+ const STANDARD_OFFER_OPTIONS = {
21
+ icerestart: 'IceRestart',
22
+ offertoreceiveaudio: 'OfferToReceiveAudio',
23
+ offertoreceivevideo: 'OfferToReceiveVideo',
24
+ voiceactivitydetection: 'VoiceActivityDetection'
25
+ };
26
+ const SDP_TYPES = ['offer', 'pranswer', 'answer', 'rollback'];
27
+ function getDefaultMediaConstraints(mediaType) {
28
+ switch (mediaType) {
29
+ case 'audio':
30
+ return DEFAULT_AUDIO_CONSTRAINTS;
31
+ case 'video':
32
+ return DEFAULT_VIDEO_CONSTRAINTS;
33
+ default:
34
+ throw new TypeError(`Invalid media type: ${mediaType}`);
35
+ }
36
+ }
37
+ function extractString(constraints, prop) {
38
+ const value = constraints[prop];
39
+ const type = typeof value;
40
+ if (type === 'object') {
41
+ for (const v of ['exact', 'ideal']) {
42
+ if (value[v]) {
43
+ return value[v];
44
+ }
45
+ }
46
+ } else if (type === 'string') {
47
+ return value;
48
+ }
49
+ }
50
+ function extractNumber(constraints, prop) {
51
+ const value = constraints[prop];
52
+ const type = typeof value;
53
+ if (type === 'number') {
54
+ return Number.parseInt(value);
55
+ } else if (type === 'object') {
56
+ for (const v of ['exact', 'ideal', 'max', 'min']) {
57
+ if (value[v]) {
58
+ return Number.parseInt(value[v]);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ function normalizeMediaConstraints(constraints, mediaType) {
64
+ switch (mediaType) {
65
+ case 'audio':
66
+ return constraints;
67
+ case 'video':
68
+ {
69
+ const c = {
70
+ deviceId: extractString(constraints, 'deviceId'),
71
+ facingMode: extractString(constraints, 'facingMode'),
72
+ frameRate: extractNumber(constraints, 'frameRate'),
73
+ height: extractNumber(constraints, 'height'),
74
+ width: extractNumber(constraints, 'width')
75
+ };
76
+ if (!c.deviceId) {
77
+ delete c.deviceId;
78
+ }
79
+ if (!FACING_MODES.includes(c.facingMode)) {
80
+ c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;
81
+ }
82
+ if (!c.frameRate) {
83
+ c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;
84
+ }
85
+ if (!c.height && !c.width) {
86
+ c.height = DEFAULT_VIDEO_CONSTRAINTS.height;
87
+ c.width = DEFAULT_VIDEO_CONSTRAINTS.width;
88
+ } else if (!c.height && c.width) {
89
+ c.height = Math.round(c.width / ASPECT_RATIO);
90
+ } else if (!c.width && c.height) {
91
+ c.width = Math.round(c.height * ASPECT_RATIO);
92
+ }
93
+ return c;
94
+ }
95
+ default:
96
+ throw new TypeError(`Invalid media type: ${mediaType}`);
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Utility for creating short random strings from float point values.
102
+ * We take 4 characters from the end after converting to a string.
103
+ * Conversion to string gives us some letters as we don't want just numbers.
104
+ * Should be suitable to pass for enough randomness.
105
+ *
106
+ * @return {String} 4 random characters
107
+ */
108
+ function chr4() {
109
+ return Math.random().toString(16).slice(-4);
110
+ }
111
+
112
+ /**
113
+ * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
114
+ *
115
+ * @return {String} uuidv4
116
+ */
117
+ function uniqueID() {
118
+ return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
119
+ }
120
+
121
+ /**
122
+ * Utility for deep cloning an object. Object.assign() only does a shallow copy.
123
+ *
124
+ * @param {Object} obj - object to be cloned
125
+ * @return {Object} cloned obj
126
+ */
127
+ function deepClone(obj) {
128
+ return JSON.parse(JSON.stringify(obj));
129
+ }
130
+
131
+ /**
132
+ * Checks whether an SDP type is valid or not.
133
+ *
134
+ * @param type SDP type to check.
135
+ * @returns Whether the SDP type is valid or not.
136
+ */
137
+ function isSdpTypeValid(type) {
138
+ return SDP_TYPES.includes(type);
139
+ }
140
+
141
+ /**
142
+ * Normalize options passed to createOffer().
143
+ *
144
+ * @param options - user supplied options
145
+ * @return Normalized options
146
+ */
147
+ function normalizeOfferOptions(options) {
148
+ const newOptions = {};
149
+ if (typeof options !== 'object') {
150
+ return newOptions;
151
+ }
152
+
153
+ // Convert standard options into WebRTC internal constant names.
154
+ // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113
155
+ for (const [key, value] of Object.entries(options)) {
156
+ const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];
157
+ if (newKey) {
158
+ newOptions[newKey] = String(Boolean(value));
159
+ }
160
+ }
161
+ return newOptions;
162
+ }
163
+
164
+ /**
165
+ * Normalize the given constraints in something we can work with.
166
+ */
167
+ function normalizeConstraints(constraints) {
168
+ const c = deepClone(constraints);
169
+ for (const mediaType of ['audio', 'video']) {
170
+ const mediaTypeConstraints = c[mediaType];
171
+ const typeofMediaTypeConstraints = typeof mediaTypeConstraints;
172
+ if (typeofMediaTypeConstraints !== 'undefined') {
173
+ if (typeofMediaTypeConstraints === 'boolean') {
174
+ if (mediaTypeConstraints) {
175
+ c[mediaType] = getDefaultMediaConstraints(mediaType);
176
+ }
177
+ } else if (typeofMediaTypeConstraints === 'object') {
178
+ c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);
179
+ } else {
180
+ throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);
181
+ }
182
+ }
183
+ }
184
+ return c;
185
+ }
186
+ //# sourceMappingURL=RTCUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_AUDIO_CONSTRAINTS","DEFAULT_VIDEO_CONSTRAINTS","facingMode","frameRate","height","width","FACING_MODES","ASPECT_RATIO","STANDARD_OFFER_OPTIONS","icerestart","offertoreceiveaudio","offertoreceivevideo","voiceactivitydetection","SDP_TYPES","getDefaultMediaConstraints","mediaType","TypeError","extractString","constraints","prop","value","type","v","extractNumber","Number","parseInt","normalizeMediaConstraints","c","deviceId","includes","Math","round","chr4","random","toString","slice","uniqueID","deepClone","obj","JSON","parse","stringify","isSdpTypeValid","normalizeOfferOptions","options","newOptions","key","Object","entries","newKey","toLowerCase","String","Boolean","normalizeConstraints","mediaTypeConstraints","typeofMediaTypeConstraints"],"sources":["RTCUtil.ts"],"sourcesContent":["\nconst DEFAULT_AUDIO_CONSTRAINTS = {};\n\nconst DEFAULT_VIDEO_CONSTRAINTS = {\n facingMode: 'user',\n frameRate: 30,\n height: 720,\n width: 1280\n};\n\nconst FACING_MODES = [ 'user', 'environment' ];\n\nconst ASPECT_RATIO = 16 / 9;\n\nexport type RTCOfferOptions = {\n iceRestart?:boolean;\n offerToReceiveAudio?: boolean;\n offerToReceiveVideo?: boolean;\n voiceActivityDetection?:boolean\n};\n\nconst STANDARD_OFFER_OPTIONS = {\n icerestart: 'IceRestart',\n offertoreceiveaudio: 'OfferToReceiveAudio',\n offertoreceivevideo: 'OfferToReceiveVideo',\n voiceactivitydetection: 'VoiceActivityDetection'\n};\n\nconst SDP_TYPES = [\n 'offer',\n 'pranswer',\n 'answer',\n 'rollback'\n];\n\nfunction getDefaultMediaConstraints(mediaType) {\n switch (mediaType) {\n case 'audio':\n return DEFAULT_AUDIO_CONSTRAINTS;\n case 'video':\n return DEFAULT_VIDEO_CONSTRAINTS;\n default:\n throw new TypeError(`Invalid media type: ${mediaType}`);\n }\n}\n\nfunction extractString(constraints, prop) {\n const value = constraints[prop];\n const type = typeof value;\n\n if (type === 'object') {\n for (const v of [ 'exact', 'ideal' ]) {\n if (value[v]) {\n return value[v];\n }\n }\n } else if (type === 'string') {\n return value;\n }\n}\n\nfunction extractNumber(constraints, prop) {\n const value = constraints[prop];\n const type = typeof value;\n\n if (type === 'number') {\n return Number.parseInt(value);\n } else if (type === 'object') {\n for (const v of [ 'exact', 'ideal', 'max', 'min' ]) {\n if (value[v]) {\n return Number.parseInt(value[v]);\n }\n }\n }\n}\n\nfunction normalizeMediaConstraints(constraints, mediaType) {\n switch (mediaType) {\n case 'audio':\n return constraints;\n\n case 'video': {\n const c = {\n deviceId: extractString(constraints, 'deviceId'),\n facingMode: extractString(constraints, 'facingMode'),\n frameRate: extractNumber(constraints, 'frameRate'),\n height: extractNumber(constraints, 'height'),\n width: extractNumber(constraints, 'width')\n };\n\n if (!c.deviceId) {\n delete c.deviceId;\n }\n\n if (!FACING_MODES.includes(c.facingMode)) {\n c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;\n }\n\n if (!c.frameRate) {\n c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;\n }\n\n if (!c.height && !c.width) {\n c.height = DEFAULT_VIDEO_CONSTRAINTS.height;\n c.width = DEFAULT_VIDEO_CONSTRAINTS.width;\n } else if (!c.height && c.width) {\n c.height = Math.round(c.width / ASPECT_RATIO);\n } else if (!c.width && c.height) {\n c.width = Math.round(c.height * ASPECT_RATIO);\n }\n\n return c;\n }\n\n default:\n throw new TypeError(`Invalid media type: ${mediaType}`);\n }\n}\n\n/**\n * Utility for creating short random strings from float point values.\n * We take 4 characters from the end after converting to a string.\n * Conversion to string gives us some letters as we don't want just numbers.\n * Should be suitable to pass for enough randomness.\n *\n * @return {String} 4 random characters\n */\nfunction chr4() {\n return Math.random().toString(16).slice(-4);\n}\n\n/**\n * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\n *\n * @return {String} uuidv4\n */\nexport function uniqueID(): string {\n return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\n}\n\n/**\n * Utility for deep cloning an object. Object.assign() only does a shallow copy.\n *\n * @param {Object} obj - object to be cloned\n * @return {Object} cloned obj\n */\nexport function deepClone<T>(obj: T): T {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n * Checks whether an SDP type is valid or not.\n *\n * @param type SDP type to check.\n * @returns Whether the SDP type is valid or not.\n */\nexport function isSdpTypeValid(type: string): boolean {\n return SDP_TYPES.includes(type);\n}\n\n/**\n * Normalize options passed to createOffer().\n *\n * @param options - user supplied options\n * @return Normalized options\n */\nexport function normalizeOfferOptions(options?: RTCOfferOptions) {\n const newOptions: Record<string,string> = {};\n\n if (typeof options !== 'object') {\n return newOptions;\n }\n\n // Convert standard options into WebRTC internal constant names.\n // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113\n for (const [ key, value ] of Object.entries(options)) {\n const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];\n\n if (newKey) {\n newOptions[newKey] = String(Boolean(value));\n }\n }\n\n return newOptions;\n}\n\n/**\n * Normalize the given constraints in something we can work with.\n */\nexport function normalizeConstraints(constraints) {\n const c = deepClone(constraints);\n\n for (const mediaType of [ 'audio', 'video' ]) {\n const mediaTypeConstraints = c[mediaType];\n const typeofMediaTypeConstraints = typeof mediaTypeConstraints;\n\n if (typeofMediaTypeConstraints !== 'undefined') {\n if (typeofMediaTypeConstraints === 'boolean') {\n if (mediaTypeConstraints) {\n c[mediaType] = getDefaultMediaConstraints(mediaType);\n }\n } else if (typeofMediaTypeConstraints === 'object') {\n c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);\n } else {\n throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);\n }\n }\n }\n\n return c;\n}\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ /**
9
+ * Native prop validation was removed from RN in:
10
+ * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34
11
+ *
12
+ * So we list them here for documentation purposes.
13
+ */
14
+ var _default = (0, _reactNative.requireNativeComponent)('RTCVideoView');
15
+ exports.default = _default;
16
+ //# sourceMappingURL=RTCView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","requireNativeComponent","exports","default"],"sources":["RTCView.ts"],"sourcesContent":["import { requireNativeComponent, ViewProps } from 'react-native';\n\n/**\n * Native prop validation was removed from RN in:\n * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34\n *\n * So we list them here for documentation purposes.\n */\nexport interface RTCVideoViewProps extends ViewProps {\n /**\n * Indicates whether the video specified by {@link #streamURL} should be\n * mirrored during rendering. Commonly, applications choose to mirror the\n * user-facing camera.\n *\n * mirror: boolean\n */\n mirror?: boolean;\n\n /**\n * In the fashion of\n * https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth\n * and https://www.w3.org/TR/html5/rendering.html#video-object-fit,\n * resembles the CSS style object-fit.\n *\n * objectFit: 'contain' | 'cover'\n *\n * Defaults to 'cover'.\n */\n objectFit?: 'contain' | 'cover';\n\n /**\n * URL / id of the stream that should be rendered.\n *\n * streamURL: string\n */\n streamURL?: string;\n /**\n * Similarly to the CSS property z-index, specifies the z-order of this\n * RTCView in the stacking space of all RTCViews. When RTCViews overlap,\n * zOrder determines which one covers the other. An RTCView with a larger\n * zOrder generally covers an RTCView with a lower one.\n *\n * Non-overlapping RTCViews may safely share a z-order (because one does not\n * have to cover the other).\n *\n * The support for zOrder is platform-dependent and/or\n * implementation-specific. Thus, specifying a value for zOrder is to be\n * thought of as giving a hint rather than as imposing a requirement. For\n * example, video renderers such as RTCView are commonly implemented using\n * OpenGL and OpenGL views may have different numbers of layers in their\n * stacking space. Android has three: a layer bellow the window (aka\n * default), a layer bellow the window again but above the previous layer\n * (aka media overlay), and above the window. Consequently, it is advisable\n * to limit the number of utilized layers in the stacking space to the\n * minimum sufficient for the desired display. For example, a video call\n * application usually needs a maximum of two zOrder values: 0 for the\n * remote video(s) which appear in the background, and 1 for the local\n * video(s) which appear above the remote video(s).\n *\n * zOrder: number\n */\n zOrder?: number;\n\n\n /**\n * Picture in picture options for this view. Disabled if not supplied.\n *\n * Note: this should only be generally only used with remote video tracks,\n * as the local camera may stop while in the background.\n *\n * iOS only. Requires iOS 15.0 or above, and the PIP background mode capability.\n */\n iosPIP?: RTCIOSPIPOptions;\n\n /**\n * Callback function that is called when the dimensions of the video change.\n *\n * @param {Object} event - The event object containing the new dimensions.\n * @param {Object} event.nativeEvent - The native event data.\n * @param {number} event.nativeEvent.width - The width of the video.\n * @param {number} event.nativeEvent.height - The height of the video.\n */\n onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;\n}\n\nexport interface RTCIOSPIPOptions {\n\n /**\n * Whether PIP can be launched from this view.\n *\n * Defaults to true.\n */\n enabled?: boolean;\n\n /**\n * The preferred size of the PIP window.\n */\n preferredSize?: {\n width: number;\n height: number;\n },\n\n /**\n * Indicates whether Picture in Picture starts automatically\n * when the controller embeds its content inline and the app\n * transitions to the background.\n *\n * Defaults to true.\n *\n * See: AVPictureInPictureController.canStartPictureInPictureAutomaticallyFromInline\n */\n startAutomatically?: boolean;\n\n /**\n * Indicates whether Picture in Picture should stop automatically\n * when the app returns to the foreground.\n *\n * Defaults to true.\n */\n stopAutomatically?: boolean;\n}\nexport default requireNativeComponent<RTCVideoViewProps>('RTCVideoView');\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA,IAAAC,QAAA,GAuHe,IAAAC,mCAAsB,EAAoB,cAAc,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAH,QAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _default = (0, _reactNative.requireNativeComponent)('ScreenCapturePickerView');
9
+ exports.default = _default;
10
+ //# sourceMappingURL=ScreenCapturePickerView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","requireNativeComponent","exports","default"],"sources":["ScreenCapturePickerView.ts"],"sourcesContent":["\nimport { requireNativeComponent } from 'react-native';\n\nexport default requireNativeComponent('ScreenCapturePickerView');\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAsD,IAAAC,QAAA,GAEvC,IAAAC,mCAAsB,EAAC,yBAAyB,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAH,QAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getDisplayMedia;
7
+ var _reactNative = require("react-native");
8
+ var _MediaStream = _interopRequireDefault(require("./MediaStream"));
9
+ var _MediaStreamError = _interopRequireDefault(require("./MediaStreamError"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const {
12
+ WebRTCModule
13
+ } = _reactNative.NativeModules;
14
+ function getDisplayMedia() {
15
+ return new Promise((resolve, reject) => {
16
+ WebRTCModule.getDisplayMedia().then(data => {
17
+ const {
18
+ streamId,
19
+ track
20
+ } = data;
21
+ const info = {
22
+ streamId: streamId,
23
+ streamReactTag: streamId,
24
+ tracks: [track]
25
+ };
26
+ const stream = new _MediaStream.default(info);
27
+ resolve(stream);
28
+ }, error => {
29
+ reject(new _MediaStreamError.default(error));
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=getDisplayMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_MediaStream","_interopRequireDefault","_MediaStreamError","obj","__esModule","default","WebRTCModule","NativeModules","getDisplayMedia","Promise","resolve","reject","then","data","streamId","track","info","streamReactTag","tracks","stream","MediaStream","error","MediaStreamError"],"sources":["getDisplayMedia.ts"],"sourcesContent":["\nimport { NativeModules } from 'react-native';\n\nimport MediaStream from './MediaStream';\nimport MediaStreamError from './MediaStreamError';\n\nconst { WebRTCModule } = NativeModules;\n\nexport default function getDisplayMedia(): Promise<MediaStream> {\n return new Promise((resolve, reject) => {\n WebRTCModule.getDisplayMedia().then(\n data => {\n const { streamId, track } = data;\n\n const info = {\n streamId: streamId,\n streamReactTag: streamId,\n tracks: [ track ]\n };\n\n const stream = new MediaStream(info);\n\n resolve(stream);\n },\n error => {\n reject(new MediaStreamError(error));\n }\n );\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAAkD,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAElD,MAAM;EAAEG;AAAa,CAAC,GAAGC,0BAAa;AAEvB,SAASC,eAAeA,CAAA,EAAyB;EAC5D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpCL,YAAY,CAACE,eAAe,CAAC,CAAC,CAACI,IAAI,CAC/BC,IAAI,IAAI;MACJ,MAAM;QAAEC,QAAQ;QAAEC;MAAM,CAAC,GAAGF,IAAI;MAEhC,MAAMG,IAAI,GAAG;QACTF,QAAQ,EAAEA,QAAQ;QAClBG,cAAc,EAAEH,QAAQ;QACxBI,MAAM,EAAE,CAAEH,KAAK;MACnB,CAAC;MAED,MAAMI,MAAM,GAAG,IAAIC,oBAAW,CAACJ,IAAI,CAAC;MAEpCN,OAAO,CAACS,MAAM,CAAC;IACnB,CAAC,EACDE,KAAK,IAAI;MACLV,MAAM,CAAC,IAAIW,yBAAgB,CAACD,KAAK,CAAC,CAAC;IACvC,CACJ,CAAC;EACL,CAAC,CAAC;AACN"}