@fishjam-cloud/react-native-client 0.2.3 → 0.2.4

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 (43) hide show
  1. package/README.md +9 -397
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/io/fishjam/reactnative/EmitableEvents.kt +1 -1
  4. package/android/src/main/java/io/fishjam/reactnative/Errors.kt +3 -2
  5. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClient.kt +73 -73
  6. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +18 -18
  7. package/build/RNFishjamClientModule.d.ts +8 -8
  8. package/build/RNFishjamClientModule.d.ts.map +1 -1
  9. package/build/RNFishjamClientModule.js.map +1 -1
  10. package/build/common/client.d.ts +4 -4
  11. package/build/common/client.d.ts.map +1 -1
  12. package/build/common/client.js +5 -5
  13. package/build/common/client.js.map +1 -1
  14. package/build/common/metadata.d.ts +3 -3
  15. package/build/common/metadata.d.ts.map +1 -1
  16. package/build/common/metadata.js +4 -4
  17. package/build/common/metadata.js.map +1 -1
  18. package/build/hooks/useCamera.d.ts +17 -0
  19. package/build/hooks/useCamera.d.ts.map +1 -1
  20. package/build/hooks/useCamera.js +1 -1
  21. package/build/hooks/useCamera.js.map +1 -1
  22. package/build/hooks/useFishjamEvent.d.ts +1 -1
  23. package/build/hooks/useFishjamEvent.js +1 -1
  24. package/build/hooks/useFishjamEvent.js.map +1 -1
  25. package/build/hooks/useScreenShare.d.ts +57 -0
  26. package/build/hooks/useScreenShare.d.ts.map +1 -0
  27. package/build/hooks/useScreenShare.js +85 -0
  28. package/build/hooks/useScreenShare.js.map +1 -0
  29. package/build/index.d.ts +3 -2
  30. package/build/index.d.ts.map +1 -1
  31. package/build/index.js +1 -1
  32. package/build/index.js.map +1 -1
  33. package/ios/Events.swift +1 -1
  34. package/ios/RNFishjamClient.podspec +1 -1
  35. package/ios/RNFishjamClient.swift +62 -62
  36. package/ios/RNFishjamClientModule.swift +18 -17
  37. package/package.json +11 -9
  38. package/plugin/broadcastExtensionFiles/FishjamBroadcastSampleHandler.swift +1 -1
  39. package/plugin/build/withFishjamIos.js +1 -1
  40. package/build/hooks/useScreencast.d.ts +0 -57
  41. package/build/hooks/useScreencast.d.ts.map +0 -1
  42. package/build/hooks/useScreencast.js +0 -85
  43. package/build/hooks/useScreencast.js.map +0 -1
@@ -8,7 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
8
8
  import com.fishjamcloud.client.FishjamClient
9
9
  import com.fishjamcloud.client.FishjamClientListener
10
10
  import com.fishjamcloud.client.media.LocalAudioTrack
11
- import com.fishjamcloud.client.media.LocalScreencastTrack
11
+ import com.fishjamcloud.client.media.LocalScreenShareTrack
12
12
  import com.fishjamcloud.client.media.LocalVideoTrack
13
13
  import com.fishjamcloud.client.media.RemoteAudioTrack
14
14
  import com.fishjamcloud.client.media.RemoteVideoTrack
@@ -36,26 +36,26 @@ import org.webrtc.Logging
36
36
  class RNFishjamClient(
37
37
  val sendEvent: (name: String, data: Map<String, Any?>) -> Unit
38
38
  ) : FishjamClientListener {
39
- private val SCREENCAST_REQUEST = 1
39
+ private val SCREENSHARE_REQUEST = 1
40
40
 
41
41
  var isMicrophoneOn = false
42
42
  var isCameraOn = false
43
- var isScreencastOn = false
43
+ var isScreenShareOn = false
44
44
  var isConnected = false
45
45
 
46
46
  private var isCameraInitialized = false
47
47
 
48
48
  private var connectPromise: Promise? = null
49
- private var screencastPermissionPromise: Promise? = null
49
+ private var screenSharePermissionPromise: Promise? = null
50
50
 
51
51
  var videoSimulcastConfig: SimulcastConfig = SimulcastConfig()
52
52
  private var localUserMetadata: Metadata = mutableMapOf()
53
53
 
54
- var screencastQuality: String? = null
55
- var screencastSimulcastConfig: SimulcastConfig = SimulcastConfig()
56
- var screencastMaxBandwidth: TrackBandwidthLimit = TrackBandwidthLimit.BandwidthLimit(0)
54
+ var screenShareQuality: String? = null
55
+ var screenShareSimulcastConfig: SimulcastConfig = SimulcastConfig()
56
+ var screenShareMaxBandwidth: TrackBandwidthLimit = TrackBandwidthLimit.BandwidthLimit(0)
57
57
 
58
- var screencastMetadata: Map<String, Any> = mutableMapOf()
58
+ var screenShareMetadata: Map<String, Any> = mutableMapOf()
59
59
 
60
60
  private var mediaProjectionIntent: Intent? = null
61
61
 
@@ -105,16 +105,16 @@ class RNFishjamClient(
105
105
  data: Intent?
106
106
  ) {
107
107
  coroutineScope.launch(Dispatchers.Main) {
108
- if (requestCode != SCREENCAST_REQUEST) return@launch
108
+ if (requestCode != SCREENSHARE_REQUEST) return@launch
109
109
  if (resultCode != Activity.RESULT_OK) {
110
- screencastPermissionPromise?.resolve("denied")
111
- screencastPermissionPromise = null
110
+ screenSharePermissionPromise?.resolve("denied")
111
+ screenSharePermissionPromise = null
112
112
  return@launch
113
113
  }
114
114
 
115
115
  mediaProjectionIntent = data
116
- screencastPermissionPromise?.resolve("granted")
117
- screencastPermissionPromise = null
116
+ screenSharePermissionPromise?.resolve("granted")
117
+ screenSharePermissionPromise = null
118
118
  }
119
119
  }
120
120
 
@@ -169,7 +169,7 @@ class RNFishjamClient(
169
169
  }
170
170
  videoParameters =
171
171
  videoParameters.copy(
172
- dimensions = if (createOptions.flipVideo) videoParameters.dimensions.flip() else videoParameters.dimensions,
172
+ dimensions = if (createOptions.flipDimensions) videoParameters.dimensions.flip() else videoParameters.dimensions,
173
173
  simulcastConfig = getSimulcastConfigFromOptions(createOptions.simulcastConfig),
174
174
  maxBitrate = videoMaxBandwidth
175
175
  )
@@ -192,12 +192,12 @@ class RNFishjamClient(
192
192
  .filterIsInstance<LocalAudioTrack>()
193
193
  .firstOrNull()
194
194
 
195
- private fun getLocalScreencastTrack(): LocalScreencastTrack? =
195
+ private fun getLocalScreenShareTrack(): LocalScreenShareTrack? =
196
196
  fishjamClient
197
197
  .getLocalEndpoint()
198
198
  .tracks
199
199
  .values
200
- .filterIsInstance<LocalScreencastTrack>()
200
+ .filterIsInstance<LocalScreenShareTrack>()
201
201
  .firstOrNull()
202
202
 
203
203
  private fun ensureConnected() {
@@ -218,9 +218,9 @@ class RNFishjamClient(
218
218
  }
219
219
  }
220
220
 
221
- private fun ensureScreencastTrack() {
222
- if (getLocalScreencastTrack() == null) {
223
- throw NoScreencastTrackError()
221
+ private fun ensureScreenShareTrack() {
222
+ if (getLocalScreenShareTrack() == null) {
223
+ throw NoScreenShareTrackError()
224
224
  }
225
225
  }
226
226
 
@@ -255,12 +255,12 @@ class RNFishjamClient(
255
255
  }
256
256
 
257
257
  fun leaveRoom() {
258
- if (isScreencastOn) {
259
- stopScreencast()
258
+ if (isScreenShareOn) {
259
+ stopScreenShare()
260
260
  }
261
261
  isMicrophoneOn = false
262
262
  isCameraOn = false
263
- isScreencastOn = false
263
+ isScreenShareOn = false
264
264
  isConnected = false
265
265
  isCameraInitialized = false
266
266
  fishjamClient.leave()
@@ -346,9 +346,9 @@ class RNFishjamClient(
346
346
  return isMicrophoneOn
347
347
  }
348
348
 
349
- fun handleScreencastPermission(promise: Promise) {
350
- screencastPermissionPromise = promise
351
- if (!isScreencastOn) {
349
+ fun handleScreenSharePermission(promise: Promise) {
350
+ screenSharePermissionPromise = promise
351
+ if (!isScreenShareOn) {
352
352
  ensureConnected()
353
353
  val currentActivity = appContext?.currentActivity ?: throw ActivityNotFoundException()
354
354
 
@@ -357,25 +357,25 @@ class RNFishjamClient(
357
357
  AppCompatActivity.MEDIA_PROJECTION_SERVICE
358
358
  ) as MediaProjectionManager
359
359
  val intent = mediaProjectionManager.createScreenCaptureIntent()
360
- currentActivity.startActivityForResult(intent, SCREENCAST_REQUEST)
360
+ currentActivity.startActivityForResult(intent, SCREENSHARE_REQUEST)
361
361
  }
362
362
  }
363
363
 
364
- suspend fun toggleScreencast(screencastOptions: ScreencastOptions) {
365
- this.screencastMetadata = screencastOptions.screencastMetadata
366
- this.screencastQuality = screencastOptions.quality
367
- this.screencastSimulcastConfig =
368
- getSimulcastConfigFromOptions(screencastOptions.simulcastConfig)
369
- this.screencastMaxBandwidth =
364
+ suspend fun toggleScreenShare(screenShareOptions: ScreenShareOptions) {
365
+ this.screenShareMetadata = screenShareOptions.screenShareMetadata
366
+ this.screenShareQuality = screenShareOptions.quality
367
+ this.screenShareSimulcastConfig =
368
+ getSimulcastConfigFromOptions(screenShareOptions.simulcastConfig)
369
+ this.screenShareMaxBandwidth =
370
370
  getMaxBandwidthFromOptions(
371
- screencastOptions.maxBandwidthMap,
372
- screencastOptions.maxBandwidthInt
371
+ screenShareOptions.maxBandwidthMap,
372
+ screenShareOptions.maxBandwidthInt
373
373
  )
374
- if (!isScreencastOn) {
374
+ if (!isScreenShareOn) {
375
375
  ensureConnected()
376
- startScreencast()
376
+ startScreenShare()
377
377
  } else {
378
- stopScreencast()
378
+ stopScreenShare()
379
379
  }
380
380
  }
381
381
 
@@ -413,7 +413,7 @@ class RNFishjamClient(
413
413
  "metadata" to track.metadata
414
414
  )
415
415
 
416
- is LocalScreencastTrack ->
416
+ is LocalScreenShareTrack ->
417
417
  mapOf(
418
418
  "id" to track.id(),
419
419
  "type" to "Video",
@@ -478,9 +478,9 @@ class RNFishjamClient(
478
478
  }
479
479
  }
480
480
 
481
- fun updateLocalScreencastTrackMetadata(metadata: Metadata) {
482
- ensureScreencastTrack()
483
- getLocalScreencastTrack()?.let {
481
+ fun updateLocalScreenShareTrackMetadata(metadata: Metadata) {
482
+ ensureScreenShareTrack()
483
+ getLocalScreenShareTrack()?.let {
484
484
  updateTrackMetadata(it.id(), metadata)
485
485
  }
486
486
  }
@@ -531,27 +531,27 @@ class RNFishjamClient(
531
531
  )
532
532
  }
533
533
 
534
- fun toggleScreencastTrackEncoding(encoding: String): Map<String, Any> {
535
- ensureScreencastTrack()
536
- getLocalScreencastTrack()?.let {
537
- screencastSimulcastConfig = toggleTrackEncoding(encoding, it.id(), screencastSimulcastConfig)
534
+ fun toggleScreenShareTrackEncoding(encoding: String): Map<String, Any> {
535
+ ensureScreenShareTrack()
536
+ getLocalScreenShareTrack()?.let {
537
+ screenShareSimulcastConfig = toggleTrackEncoding(encoding, it.id(), screenShareSimulcastConfig)
538
538
  }
539
- return getSimulcastConfigAsRNMap(screencastSimulcastConfig)
539
+ return getSimulcastConfigAsRNMap(screenShareSimulcastConfig)
540
540
  }
541
541
 
542
- fun setScreencastTrackBandwidth(bandwidth: Int) {
543
- ensureScreencastTrack()
544
- getLocalScreencastTrack()?.let {
542
+ fun setScreenShareTrackBandwidth(bandwidth: Int) {
543
+ ensureScreenShareTrack()
544
+ getLocalScreenShareTrack()?.let {
545
545
  fishjamClient.setTrackBandwidth(it.id(), TrackBandwidthLimit.BandwidthLimit(bandwidth))
546
546
  }
547
547
  }
548
548
 
549
- fun setScreencastTrackEncodingBandwidth(
549
+ fun setScreenShareTrackEncodingBandwidth(
550
550
  encoding: String,
551
551
  bandwidth: Int
552
552
  ) {
553
- ensureScreencastTrack()
554
- getLocalScreencastTrack()?.let {
553
+ ensureScreenShareTrack()
554
+ getLocalScreenShareTrack()?.let {
555
555
  fishjamClient.setEncodingBandwidth(
556
556
  it.id(),
557
557
  encoding,
@@ -669,25 +669,25 @@ class RNFishjamClient(
669
669
  return newMap
670
670
  }
671
671
 
672
- private suspend fun startScreencast() {
673
- val videoParameters = getScreencastVideoParameters()
672
+ private suspend fun startScreenShare() {
673
+ val videoParameters = getScreenShareVideoParameters()
674
674
  if (mediaProjectionIntent == null) {
675
- throw MissingScreencastPermission()
675
+ throw MissingScreenSharePermission()
676
676
  }
677
- fishjamClient.createScreencastTrack(
677
+ fishjamClient.createScreenShareTrack(
678
678
  mediaProjectionIntent!!,
679
679
  videoParameters,
680
- screencastMetadata
680
+ screenShareMetadata
681
681
  )
682
682
  mediaProjectionIntent = null
683
683
 
684
- setScreencastTrackState(true)
684
+ setScreenShareTrackState(true)
685
685
  emitEndpoints()
686
686
  }
687
687
 
688
- private fun getScreencastVideoParameters(): VideoParameters {
688
+ private fun getScreenShareVideoParameters(): VideoParameters {
689
689
  val videoParameters =
690
- when (screencastQuality) {
690
+ when (screenShareQuality) {
691
691
  "VGA" -> VideoParameters.presetScreenShareVGA
692
692
  "HD5" -> VideoParameters.presetScreenShareHD5
693
693
  "HD15" -> VideoParameters.presetScreenShareHD15
@@ -698,28 +698,28 @@ class RNFishjamClient(
698
698
  val dimensions = videoParameters.dimensions.flip()
699
699
  return videoParameters.copy(
700
700
  dimensions = dimensions,
701
- simulcastConfig = screencastSimulcastConfig,
702
- maxBitrate = screencastMaxBandwidth
701
+ simulcastConfig = screenShareSimulcastConfig,
702
+ maxBitrate = screenShareMaxBandwidth
703
703
  )
704
704
  }
705
705
 
706
- private fun setScreencastTrackState(isEnabled: Boolean) {
707
- isScreencastOn = isEnabled
708
- val eventName = EmitableEvents.IsScreencastOn
706
+ private fun setScreenShareTrackState(isEnabled: Boolean) {
707
+ isScreenShareOn = isEnabled
708
+ val eventName = EmitableEvents.IsScreenShareOn
709
709
  emitEvent(eventName, mapOf(eventName to isEnabled))
710
710
  }
711
711
 
712
- private fun stopScreencast() {
713
- ensureScreencastTrack()
712
+ private fun stopScreenShare() {
713
+ ensureScreenShareTrack()
714
714
  coroutineScope.launch {
715
- val screencastTrack =
715
+ val screenShareTrack =
716
716
  fishjamClient.getLocalEndpoint().tracks.values.first { track ->
717
- track is LocalScreencastTrack
718
- } as? LocalScreencastTrack
719
- if (screencastTrack != null) {
720
- fishjamClient.removeTrack(screencastTrack.id())
717
+ track is LocalScreenShareTrack
718
+ } as? LocalScreenShareTrack
719
+ if (screenShareTrack != null) {
720
+ fishjamClient.removeTrack(screenShareTrack.id())
721
721
  }
722
- setScreencastTrackState(false)
722
+ setScreenShareTrackState(false)
723
723
  emitEndpoints()
724
724
  }
725
725
  }
@@ -29,7 +29,7 @@ class CameraConfig : Record {
29
29
  val quality: String = "VGA169"
30
30
 
31
31
  @Field
32
- val flipVideo: Boolean = false
32
+ val flipDimensions: Boolean = false
33
33
 
34
34
  @Field
35
35
  val videoTrackMetadata: Map<String, Any> = emptyMap()
@@ -51,12 +51,12 @@ class CameraConfig : Record {
51
51
  val cameraId: String? = null
52
52
  }
53
53
 
54
- class ScreencastOptions : Record {
54
+ class ScreenShareOptions : Record {
55
55
  @Field
56
56
  val quality: String = "HD15"
57
57
 
58
58
  @Field
59
- val screencastMetadata: Map<String, Any> = emptyMap()
59
+ val screenShareMetadata: Map<String, Any> = emptyMap()
60
60
 
61
61
  @Field
62
62
  val simulcastConfig: SimulcastConfig = SimulcastConfig()
@@ -109,7 +109,7 @@ class RNFishjamClientModule : Module() {
109
109
  Events(
110
110
  "IsCameraOn",
111
111
  "IsMicrophoneOn",
112
- "IsScreencastOn",
112
+ "IsScreenShareOn",
113
113
  "SimulcastConfigUpdate",
114
114
  "PeersUpdate",
115
115
  "AudioDeviceUpdate",
@@ -200,15 +200,15 @@ class RNFishjamClientModule : Module() {
200
200
  }
201
201
  }
202
202
 
203
- AsyncFunction("handleScreencastPermission") { promise: Promise ->
203
+ AsyncFunction("handleScreenSharePermission") { promise: Promise ->
204
204
  CoroutineScope(Dispatchers.Main).launch {
205
- rnFishjamClient.handleScreencastPermission(promise)
205
+ rnFishjamClient.handleScreenSharePermission(promise)
206
206
  }
207
207
  }
208
208
 
209
- AsyncFunction("toggleScreencast") Coroutine { screencastOptions: ScreencastOptions ->
209
+ AsyncFunction("toggleScreenShare") Coroutine { screenShareOptions: ScreenShareOptions ->
210
210
  withContext(Dispatchers.Main) {
211
- rnFishjamClient.toggleScreencast(screencastOptions)
211
+ rnFishjamClient.toggleScreenShare(screenShareOptions)
212
212
  }
213
213
  }
214
214
 
@@ -216,8 +216,8 @@ class RNFishjamClientModule : Module() {
216
216
  return@Property rnFishjamClient.getCaptureDevices()
217
217
  }
218
218
 
219
- Property("isScreencastOn") {
220
- return@Property rnFishjamClient.isScreencastOn
219
+ Property("isScreenShareOn") {
220
+ return@Property rnFishjamClient.isScreenShareOn
221
221
  }
222
222
 
223
223
  AsyncFunction("getPeers") Coroutine { ->
@@ -244,9 +244,9 @@ class RNFishjamClientModule : Module() {
244
244
  }
245
245
  }
246
246
 
247
- AsyncFunction("updateScreencastTrackMetadata") Coroutine { metadata: Map<String, Any> ->
247
+ AsyncFunction("updateScreenShareTrackMetadata") Coroutine { metadata: Map<String, Any> ->
248
248
  withContext(Dispatchers.Main) {
249
- rnFishjamClient.updateLocalScreencastTrackMetadata(metadata)
249
+ rnFishjamClient.updateLocalScreenShareTrackMetadata(metadata)
250
250
  }
251
251
  }
252
252
 
@@ -262,21 +262,21 @@ class RNFishjamClientModule : Module() {
262
262
  rnFishjamClient.stopAudioSwitcher()
263
263
  }
264
264
 
265
- AsyncFunction("toggleScreencastTrackEncoding") Coroutine { encoding: String ->
265
+ AsyncFunction("toggleScreenShareTrackEncoding") Coroutine { encoding: String ->
266
266
  withContext(Dispatchers.Main) {
267
- rnFishjamClient.toggleScreencastTrackEncoding(encoding)
267
+ rnFishjamClient.toggleScreenShareTrackEncoding(encoding)
268
268
  }
269
269
  }
270
270
 
271
- AsyncFunction("setScreencastTrackBandwidth") Coroutine { bandwidth: Int ->
271
+ AsyncFunction("setScreenShareTrackBandwidth") Coroutine { bandwidth: Int ->
272
272
  withContext(Dispatchers.Main) {
273
- rnFishjamClient.setScreencastTrackBandwidth(bandwidth)
273
+ rnFishjamClient.setScreenShareTrackBandwidth(bandwidth)
274
274
  }
275
275
  }
276
276
 
277
- AsyncFunction("setScreencastTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
277
+ AsyncFunction("setScreenShareTrackEncodingBandwidth") Coroutine { encoding: String, bandwidth: Int ->
278
278
  withContext(Dispatchers.Main) {
279
- rnFishjamClient.setScreencastTrackEncodingBandwidth(encoding, bandwidth)
279
+ rnFishjamClient.setScreenShareTrackEncodingBandwidth(encoding, bandwidth)
280
280
  }
281
281
  }
282
282
 
@@ -4,7 +4,7 @@ import type { RTCStats } from './stats/types';
4
4
  import type { ForegroundServiceOptions, SimulcastConfig } from './types';
5
5
  import type { CameraConfigInternal, Camera } from './hooks/useCamera';
6
6
  import type { Participant } from './hooks/useParticipants';
7
- import type { ScreencastOptionsInternal } from './hooks/useScreencast';
7
+ import type { ScreenShareOptionsInternal } from './hooks/useScreenShare';
8
8
  import type { ConnectionConfig } from './common/client';
9
9
  type Metadata = {
10
10
  [key: string]: any;
@@ -20,22 +20,22 @@ type RNFishjamClient = {
20
20
  flipCamera: () => Promise<void>;
21
21
  switchCamera: (cameraId: string) => Promise<void>;
22
22
  cameras: ReadonlyArray<Camera>;
23
- handleScreencastPermission: () => Promise<'granted' | 'denied'>;
24
- toggleScreencast: (screencastOptions: Partial<ScreencastOptionsInternal>) => Promise<void>;
25
- isScreencastOn: boolean;
23
+ handleScreenSharePermission: () => Promise<'granted' | 'denied'>;
24
+ toggleScreenShare: (screenShareOptions: Partial<ScreenShareOptionsInternal>) => Promise<void>;
25
+ isScreenShareOn: boolean;
26
26
  getPeers: <PeerMetadataType extends Metadata>() => Promise<Participant<PeerMetadataType>[]>;
27
27
  updatePeerMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
28
28
  updateVideoTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
29
29
  updateAudioTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
30
- updateScreencastTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
30
+ updateScreenShareTrackMetadata: <MetadataType extends Metadata>(metadata: MetadataType) => Promise<void>;
31
31
  setOutputAudioDevice: (audioDevice: string) => Promise<void>;
32
32
  startAudioSwitcher: () => Promise<void>;
33
33
  stopAudioSwitcher: () => Promise<void>;
34
34
  selectAudioSessionMode: (sessionMode: string) => Promise<void>;
35
35
  showAudioRoutePicker: () => Promise<void>;
36
- toggleScreencastTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
37
- setScreencastTrackBandwidth: (bandwidth: number) => Promise<void>;
38
- setScreencastTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
36
+ toggleScreenShareTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
37
+ setScreenShareTrackBandwidth: (bandwidth: number) => Promise<void>;
38
+ setScreenShareTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
39
39
  setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;
40
40
  toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;
41
41
  setVideoTrackEncodingBandwidth: (encoding: string, bandwidth: number) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.d.ts","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RNFishjamClientModule.d.ts","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAwEtE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAe,YAA8C,CAAC","sourcesContent":["import { EventEmitter, requireNativeModule } from 'expo-modules-core';\nimport { NativeModule } from 'react-native';\n\nimport type { RTCStats } from './stats/types';\nimport type { ForegroundServiceOptions, SimulcastConfig } from './types';\nimport type { CameraConfigInternal, Camera } from './hooks/useCamera';\nimport type { Participant } from './hooks/useParticipants';\nimport type { ScreencastOptionsInternal } from './hooks/useScreencast';\nimport type { ConnectionConfig } from './common/client';\n\ntype Metadata = { [key: string]: any };\n\ntype RNFishjamClient = {\n joinRoom: (\n url: string,\n participantToken: string,\n participantMetadata: Metadata,\n config: ConnectionConfig,\n ) => Promise<void>;\n leaveRoom: () => Promise<void>;\n startCamera: (config: CameraConfigInternal) => Promise<void>;\n isMicrophoneOn: boolean;\n toggleMicrophone: () => Promise<boolean>;\n isCameraOn: boolean;\n toggleCamera: () => Promise<boolean>;\n flipCamera: () => Promise<void>;\n switchCamera: (cameraId: string) => Promise<void>;\n cameras: ReadonlyArray<Camera>;\n handleScreencastPermission: () => Promise<'granted' | 'denied'>;\n toggleScreencast: (\n screencastOptions: Partial<ScreencastOptionsInternal>,\n ) => Promise<void>;\n isScreencastOn: boolean;\n getPeers: <PeerMetadataType extends Metadata>() => Promise<\n Participant<PeerMetadataType>[]\n >;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateAudioTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateScreencastTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n setOutputAudioDevice: (audioDevice: string) => Promise<void>;\n startAudioSwitcher: () => Promise<void>;\n stopAudioSwitcher: () => Promise<void>;\n selectAudioSessionMode: (sessionMode: string) => Promise<void>;\n showAudioRoutePicker: () => Promise<void>;\n toggleScreencastTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setScreencastTrackBandwidth: (bandwidth: number) => Promise<void>;\n setScreencastTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;\n toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setVideoTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setVideoTrackBandwidth: (bandwidth: number) => Promise<void>;\n changeWebRTCLoggingSeverity: (severity: string) => Promise<void>;\n getStatistics: () => Promise<RTCStats>;\n startForegroundService: (options: ForegroundServiceOptions) => void;\n stopForegroundService: () => void;\n};\n\nconst nativeModule = requireNativeModule('RNFishjamClient');\nexport const nativeModuleEventEmitter = new EventEmitter(nativeModule);\n\nexport default nativeModule as RNFishjamClient & NativeModule;\n"]}
1
+ {"version":3,"file":"RNFishjamClientModule.js","sourceRoot":"","sources":["../src/RNFishjamClientModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA0EtE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;AAEvE,eAAe,YAA8C,CAAC","sourcesContent":["import { EventEmitter, requireNativeModule } from 'expo-modules-core';\nimport { NativeModule } from 'react-native';\n\nimport type { RTCStats } from './stats/types';\nimport type { ForegroundServiceOptions, SimulcastConfig } from './types';\nimport type { CameraConfigInternal, Camera } from './hooks/useCamera';\nimport type { Participant } from './hooks/useParticipants';\nimport type { ScreenShareOptionsInternal } from './hooks/useScreenShare';\nimport type { ConnectionConfig } from './common/client';\n\ntype Metadata = { [key: string]: any };\n\ntype RNFishjamClient = {\n joinRoom: (\n url: string,\n participantToken: string,\n participantMetadata: Metadata,\n config: ConnectionConfig,\n ) => Promise<void>;\n leaveRoom: () => Promise<void>;\n startCamera: (config: CameraConfigInternal) => Promise<void>;\n isMicrophoneOn: boolean;\n toggleMicrophone: () => Promise<boolean>;\n isCameraOn: boolean;\n toggleCamera: () => Promise<boolean>;\n flipCamera: () => Promise<void>;\n switchCamera: (cameraId: string) => Promise<void>;\n cameras: ReadonlyArray<Camera>;\n handleScreenSharePermission: () => Promise<'granted' | 'denied'>;\n toggleScreenShare: (\n screenShareOptions: Partial<ScreenShareOptionsInternal>,\n ) => Promise<void>;\n isScreenShareOn: boolean;\n getPeers: <PeerMetadataType extends Metadata>() => Promise<\n Participant<PeerMetadataType>[]\n >;\n updatePeerMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateVideoTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateAudioTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n updateScreenShareTrackMetadata: <MetadataType extends Metadata>(\n metadata: MetadataType,\n ) => Promise<void>;\n setOutputAudioDevice: (audioDevice: string) => Promise<void>;\n startAudioSwitcher: () => Promise<void>;\n stopAudioSwitcher: () => Promise<void>;\n selectAudioSessionMode: (sessionMode: string) => Promise<void>;\n showAudioRoutePicker: () => Promise<void>;\n toggleScreenShareTrackEncoding: (\n encoding: string,\n ) => Promise<SimulcastConfig>;\n setScreenShareTrackBandwidth: (bandwidth: number) => Promise<void>;\n setScreenShareTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setTargetTrackEncoding: (trackId: string, encoding: string) => Promise<void>;\n toggleVideoTrackEncoding: (encoding: string) => Promise<SimulcastConfig>;\n setVideoTrackEncodingBandwidth: (\n encoding: string,\n bandwidth: number,\n ) => Promise<void>;\n setVideoTrackBandwidth: (bandwidth: number) => Promise<void>;\n changeWebRTCLoggingSeverity: (severity: string) => Promise<void>;\n getStatistics: () => Promise<RTCStats>;\n startForegroundService: (options: ForegroundServiceOptions) => void;\n stopForegroundService: () => void;\n};\n\nconst nativeModule = requireNativeModule('RNFishjamClient');\nexport const nativeModuleEventEmitter = new EventEmitter(nativeModule);\n\nexport default nativeModule as RNFishjamClient & NativeModule;\n"]}
@@ -16,12 +16,12 @@ export type ConnectionConfig = {
16
16
  };
17
17
  /**
18
18
  * @param url fishjam Url
19
- * @param participantToken
20
- * @param participantMetadata
21
- * @param config
19
+ * @param participantToken token received from server (or Room Manager)
20
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
21
+ * @param config additional connection configuration
22
22
  * @category Connection
23
23
  */
24
- export declare function joinRoom<ParticipantMetadata extends GenericMetadata = GenericMetadata>(url: string, participantToken: string, participantMetadata: ParticipantMetadata, config?: ConnectionConfig): Promise<void>;
24
+ export declare function joinRoom<ParticipantMetadata extends GenericMetadata = GenericMetadata>(url: string, participantToken: string, participantMetadata?: ParticipantMetadata, config?: ConnectionConfig): Promise<void>;
25
25
  /**
26
26
  * @category Connection
27
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAE7D,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,GAAE,gBAAqB,iBAQ9B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAE7D,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,MAAM,CAAC,EAAE,gBAAgB,iBAQ1B;AACD;;GAEG;AACH,wBAAsB,SAAS,kBAE9B"}
@@ -1,13 +1,13 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
3
  * @param url fishjam Url
4
- * @param participantToken
5
- * @param participantMetadata
6
- * @param config
4
+ * @param participantToken token received from server (or Room Manager)
5
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
6
+ * @param config additional connection configuration
7
7
  * @category Connection
8
8
  */
9
- export async function joinRoom(url, participantToken, participantMetadata, config = {}) {
10
- await RNFishjamClientModule.joinRoom(url, participantToken, participantMetadata, config);
9
+ export async function joinRoom(url, participantToken, participantMetadata, config) {
10
+ await RNFishjamClientModule.joinRoom(url, participantToken, participantMetadata ?? {}, config ?? {});
11
11
  }
12
12
  /**
13
13
  * @category Connection
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EACX,gBAAwB,EACxB,mBAAwC,EACxC,SAA2B,EAAE;IAE7B,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,gBAAgB,EAChB,mBAAmB,EACnB,MAAM,CACP,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,qBAAqB,CAAC,SAAS,EAAE,CAAC;AAC1C,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nexport type ConnectionConfig = {\n /**\n * Configuration for automatic reconnection\n * sdk uses a linear backoff algorithm, that is the formula\n * for the delay of the nth attempt is\n * n * delayMs + initialDelayMs\n *\n * Pass 0 for maxAttempts to disable automatic reconnection\n */\n reconnectConfig?: {\n maxAttempts?: number;\n initialDelayMs?: number;\n delayMs?: number;\n };\n};\n\n/**\n * @param url fishjam Url\n * @param participantToken\n * @param participantMetadata\n * @param config\n * @category Connection\n */\nexport async function joinRoom<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(\n url: string,\n participantToken: string,\n participantMetadata: ParticipantMetadata,\n config: ConnectionConfig = {},\n) {\n await RNFishjamClientModule.joinRoom(\n url,\n participantToken,\n participantMetadata,\n config,\n );\n}\n/**\n * @category Connection\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAkB7D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EACX,gBAAwB,EACxB,mBAAyC,EACzC,MAAyB;IAEzB,MAAM,qBAAqB,CAAC,QAAQ,CAClC,GAAG,EACH,gBAAgB,EAChB,mBAAmB,IAAI,EAAE,EACzB,MAAM,IAAI,EAAE,CACb,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,qBAAqB,CAAC,SAAS,EAAE,CAAC;AAC1C,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\nexport type ConnectionConfig = {\n /**\n * Configuration for automatic reconnection\n * sdk uses a linear backoff algorithm, that is the formula\n * for the delay of the nth attempt is\n * n * delayMs + initialDelayMs\n *\n * Pass 0 for maxAttempts to disable automatic reconnection\n */\n reconnectConfig?: {\n maxAttempts?: number;\n initialDelayMs?: number;\n delayMs?: number;\n };\n};\n\n/**\n * @param url fishjam Url\n * @param participantToken token received from server (or Room Manager)\n * @param participantMetadata string indexed record with metadata, that will be available to all other participants\n * @param config additional connection configuration\n * @category Connection\n */\nexport async function joinRoom<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(\n url: string,\n participantToken: string,\n participantMetadata?: ParticipantMetadata,\n config?: ConnectionConfig,\n) {\n await RNFishjamClientModule.joinRoom(\n url,\n participantToken,\n participantMetadata ?? {},\n config ?? {},\n );\n}\n/**\n * @category Connection\n */\nexport async function leaveRoom() {\n await RNFishjamClientModule.leaveRoom();\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { GenericMetadata } from '../types';
2
2
  /**
3
- * a function that updates endpoints's metadata on the server
4
- * @param metadata a map indexed by strings, containing participants metadata to be sent to the server
3
+ * Updates metadata send to other participants
4
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
5
5
  * @category Connection
6
6
  */
7
- export declare function updatePeerMetadata<ParticipantMetadata extends GenericMetadata = GenericMetadata>(metadata: ParticipantMetadata): Promise<void>;
7
+ export declare function updatePeerMetadata<ParticipantMetadata extends GenericMetadata = GenericMetadata>(participantMetadata: ParticipantMetadata): Promise<void>;
8
8
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAC7D,QAAQ,EAAE,mBAAmB,iBAE9B"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,mBAAmB,SAAS,eAAe,GAAG,eAAe,EAC7D,mBAAmB,EAAE,mBAAmB,iBAEzC"}
@@ -1,10 +1,10 @@
1
1
  import RNFishjamClientModule from '../RNFishjamClientModule';
2
2
  /**
3
- * a function that updates endpoints's metadata on the server
4
- * @param metadata a map indexed by strings, containing participants metadata to be sent to the server
3
+ * Updates metadata send to other participants
4
+ * @param participantMetadata string indexed record with metadata, that will be available to all other participants
5
5
  * @category Connection
6
6
  */
7
- export async function updatePeerMetadata(metadata) {
8
- await RNFishjamClientModule.updatePeerMetadata(metadata);
7
+ export async function updatePeerMetadata(participantMetadata) {
8
+ await RNFishjamClientModule.updatePeerMetadata(participantMetadata);
9
9
  }
10
10
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAEtC,QAA6B;IAC7B,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * a function that updates endpoints's metadata on the server\n * @param metadata a map indexed by strings, containing participants metadata to be sent to the server\n * @category Connection\n */\nexport async function updatePeerMetadata<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(metadata: ParticipantMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(metadata);\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/common/metadata.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAEtC,mBAAwC;IACxC,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import { GenericMetadata } from '../types';\nimport RNFishjamClientModule from '../RNFishjamClientModule';\n\n/**\n * Updates metadata send to other participants\n * @param participantMetadata string indexed record with metadata, that will be available to all other participants\n * @category Connection\n */\nexport async function updatePeerMetadata<\n ParticipantMetadata extends GenericMetadata = GenericMetadata,\n>(participantMetadata: ParticipantMetadata) {\n await RNFishjamClientModule.updatePeerMetadata(participantMetadata);\n}\n"]}
@@ -15,6 +15,23 @@ type CameraConfigBase = {
15
15
  * @default `VGA_169`
16
16
  */
17
17
  quality?: VideoQuality;
18
+ /**
19
+ * whether to flip the dimensions of the video, that is whether to film in vertical orientation.
20
+ * This basically switches width with height and is only used to select closes capture format.
21
+ *
22
+ * To record horizontal video your phone orientation must be in landscape and your app must support this orientation.
23
+ *
24
+ * Platform specific capture formats:
25
+ * @see iOS: https://developer.apple.com/documentation/avfoundation/avcapturedevice/format
26
+ * @see Android: https://github.com/webrtc-sdk/webrtc/blob/cdc3bba5aa38910a55428b919ba45aceac1ad9ad/sdk/android/api/org/webrtc/CameraEnumerationAndroid.java#L50
27
+ *
28
+ * WebRTC device orientation handling:
29
+ * @see iOS: https://github.com/webrtc-sdk/webrtc/blob/cdc3bba5aa38910a55428b919ba45aceac1ad9ad/sdk/objc/components/capturer/RTCCameraVideoCapturer.m#L285
30
+ * @see Android: https://github.com/pristineio/webrtc-mirror/blob/7a5bcdffaab90a05bc1146b2b1ea71c004e54d71/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java#L347
31
+ *
32
+ * @default `true`
33
+ */
34
+ flipDimensions?: boolean;
18
35
  /**
19
36
  * whether the camera track is initially enabled, you can toggle it on/off later with toggleCamera method
20
37
  * @default `true`
@@ -1 +1 @@
1
- {"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../src/hooks/useCamera.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,KAAK,EACL,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,CAAC;AAEZ,KAAK,gBAAgB,GAAG;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAI5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IACzD;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,GAAG,CACE;IAAE,eAAe,CAAC,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAChD,CAAC;AAuCJ,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,oBAAoB,CAOtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS;IAsFrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAGH,oCAAoC;;IAEpC;;;;OAIG;6BArFY,QAAQ,CAAC,YAAY,CAAC;IAuFrC;;;;OAIG,0BAhEc,QAAQ;IAkEzB;;;;OAIG;yCAvDc,aAAa;IAyD9B;;;;;OAKG;+CArDc,aAAa,aAAa,cAAc;IAuDzD;;;;;;;OAOG;wCA9Ee,cAAc;EAiFnC"}
1
+ {"version":3,"file":"useCamera.d.ts","sourceRoot":"","sources":["../../src/hooks/useCamera.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,KAAK,EACL,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAErE,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,CAAC;AAEZ,KAAK,gBAAgB,GAAG;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAI5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IACzD;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,GAAG,CACE;IAAE,eAAe,CAAC,EAAE,cAAc,CAAA;CAAE,GACpC;IAAE,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAChD,CAAC;AAuCJ,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,GAC7B,oBAAoB,CAOtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS;IAsFrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAGH,oCAAoC;;IAEpC;;;;OAIG;6BArFY,QAAQ,CAAC,YAAY,CAAC;IAuFrC;;;;OAIG,0BAhEc,QAAQ;IAkEzB;;;;OAIG;yCAvDc,aAAa;IAyD9B;;;;;OAKG;+CArDc,aAAa,aAAa,cAAc;IAuDzD;;;;;;;OAOG;wCA9Ee,cAAc;EAiFnC"}
@@ -25,7 +25,7 @@ function maxBandwidthConfig(maxBandwidth) {
25
25
  }
26
26
  function simulcastConfig(simulcastEnabled) {
27
27
  // iOS has a limit of 3 hardware encoders
28
- // 3 simulcast layers + 1 screencast layer = 4, which is too much
28
+ // 3 simulcast layers + 1 screen share layer = 4, which is too much
29
29
  // so we limit simulcast layers to 2
30
30
  if (simulcastEnabled) {
31
31
  return Platform.select({