@100mslive/react-native-hms 1.11.0 → 1.12.1

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 (37) hide show
  1. package/README.md +12 -11
  2. package/android/build.gradle +27 -42
  3. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +2 -2
  4. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +1 -1
  5. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +9 -9
  6. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +2 -2
  7. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +1 -1
  8. package/ios/HMSRNSDK.swift +32 -7
  9. package/lib/commonjs/classes/HMSNativeEventEmitter.js +1 -3
  10. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
  11. package/lib/commonjs/classes/HMSPeerType.js +1 -1
  12. package/lib/commonjs/classes/HMSPeerType.js.map +1 -1
  13. package/lib/commonjs/classes/HMSSessionStore.js +1 -3
  14. package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
  15. package/lib/commonjs/classes/HmsView.js +1 -2
  16. package/lib/commonjs/classes/HmsView.js.map +1 -1
  17. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +1 -2
  18. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  19. package/lib/commonjs/hooks/useHMSPeerUpdates.js +1 -2
  20. package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
  21. package/lib/module/classes/HMSNativeEventEmitter.js +1 -3
  22. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
  23. package/lib/module/classes/HMSPeerType.js +1 -1
  24. package/lib/module/classes/HMSPeerType.js.map +1 -1
  25. package/lib/module/classes/HMSSessionStore.js +1 -3
  26. package/lib/module/classes/HMSSessionStore.js.map +1 -1
  27. package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +1 -0
  28. package/package.json +12 -6
  29. package/react-native-hms.podspec +12 -2
  30. package/sdk-versions.json +3 -3
  31. package/src/classes/HMSNativeEventEmitter.ts +1 -7
  32. package/src/classes/HMSSessionStore.ts +1 -9
  33. package/android/local.properties +0 -1
  34. package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  35. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  36. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  37. package/ios/Hmssdk.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
package/README.md CHANGED
@@ -47,27 +47,28 @@ Troubleshooting Guide for resolving issues in running the Example app is [availa
47
47
 
48
48
  ## ☝️ Minimum Configuration
49
49
 
50
- - Support for React Native 0.64.4 or above
51
- - Support for Java 8 or above
50
+ - Support for React Native 0.73.0 or above
51
+ - Support for Java 17 or above
52
52
  - Support for Android API level 24 or above
53
- - Xcode 13 or above
54
- - Support for iOS 12 or above
53
+ - Xcode 14 or above
54
+ - Support for iOS 16 or above
55
+ - Node.js 22 or above
55
56
 
56
57
  ## 🤝 Recommended Configuration
57
58
 
58
- - React Native 0.68.0 or above
59
- - Java 11 or above
60
- - Android API level 33 or above
61
- - Xcode 14 or above
59
+ - React Native 0.77.3 or above
60
+ - Java 17 or above
61
+ - Android API level 35 or above
62
+ - Xcode 15 or above
62
63
  - iOS 16 or above
64
+ - Node.js 22 or above
63
65
 
64
66
  ## 📱 Supported Devices
65
67
 
66
- - The Android SDK supports Android API level 21 and higher. It is built for armeabi-v7a, arm64-v8a, x86, and x86_64 architectures.
68
+ - The Android SDK supports Android API level 24 (Android 7.0) and higher. It is built for arm64-v8a and x86_64 architectures (64-bit only).
67
69
  Devices running Android OS 11 or above is recommended.
68
70
 
69
- - iPhone & iPads with iOS version 12 or above are supported.
70
- Devices running iOS 16 or above is recommended.
71
+ - iPhone & iPads with iOS version 16 or above are supported.
71
72
 
72
73
  ## Installation
73
74
 
@@ -3,67 +3,52 @@ import groovy.json.JsonSlurper
3
3
  def sdkVersions = new JsonSlurper().parse file("../sdk-versions.json")
4
4
 
5
5
  buildscript {
6
-
7
- ext.safeExtGet = { prop, fallback ->
8
- rootProject.ext.has(prop) ? rootProject.ext.get (prop) : fallback
9
- }
10
-
11
- ext.getKotlinVersion = {
12
- if (ext.has("kotlinVersion")) {
13
- ext.kotlinVersion()
14
- } else {
15
- ext.safeExtGet("kotlinVersion", "1.7.20")
16
- }
17
- }
18
- ext.getKotlinGradlePluginVersion = {
19
- if (ext.has("kotlinGradlePluginVersion")) {
20
- ext.kotlinGradlePluginVersion()
21
- } else {
22
- ext.safeExtGet("kotlinGradlePluginVersion", "1.8.0")
23
- }
24
- }
25
- if (project == rootProject) {
26
- repositories {
27
- google()
28
- mavenCentral()
29
- gradlePluginPortal( )
30
- }
31
-
32
- dependencies {
33
- classpath 'com.android.tools.build:gradle:3.5.3'
34
- }
35
- }
36
6
  repositories {
7
+ google()
37
8
  mavenCentral()
38
9
  }
39
10
  dependencies {
40
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinGradlePluginVersion()}"
11
+ classpath("com.android.tools.build:gradle:8.5.0")
12
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21")
41
13
  }
42
14
  }
43
15
 
44
16
  apply plugin: 'com.android.library'
45
17
  apply plugin: 'kotlin-android'
46
18
 
19
+ // Define helper functions for Kotlin version management (RN 0.77.3 requires 2.0.21)
20
+ def getKotlinVersion() {
21
+ return rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : "2.0.21"
22
+ }
23
+
24
+ def getKotlinGradlePluginVersion() {
25
+ return rootProject.ext.has("kotlinGradlePluginVersion") ? rootProject.ext.get("kotlinGradlePluginVersion") : "2.0.21"
26
+ }
27
+
47
28
  def safeExtGet(prop, fallback) {
48
29
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
49
30
  }
50
31
 
51
32
  android {
52
33
  namespace 'com.reactnativehmssdk'
53
- compileSdkVersion safeExtGet('Hmssdk_compileSdkVersion', 31)
34
+ buildToolsVersion = "35.0.0"
35
+ compileSdkVersion safeExtGet('Hmssdk_compileSdkVersion', 35)
54
36
  defaultConfig {
55
- minSdkVersion safeExtGet('Hmssdk_minSdkVersion', 21)
56
- targetSdkVersion safeExtGet('Hmssdk_targetSdkVersion', 31)
37
+ minSdkVersion safeExtGet('Hmssdk_minSdkVersion', 24)
38
+ targetSdkVersion safeExtGet('Hmssdk_targetSdkVersion', 35)
57
39
  versionCode 1
58
40
  versionName "1.0"
59
41
  }
60
42
 
61
- lintOptions {
43
+ lint {
62
44
  disable 'GradleCompatible'
63
45
  }
64
46
  compileOptions {
65
- sourceCompatibility JavaVersion.VERSION_1_8
66
- targetCompatibility JavaVersion.VERSION_1_8
47
+ sourceCompatibility JavaVersion.VERSION_17
48
+ targetCompatibility JavaVersion.VERSION_17
49
+ }
50
+ kotlinOptions {
51
+ jvmTarget = "17"
67
52
  }
68
53
  }
69
54
 
@@ -82,12 +67,12 @@ repositories {
82
67
  dependencies {
83
68
  //noinspection GradleDynamicVersion
84
69
  implementation "com.facebook.react:react-native:+"
85
- implementation "com.google.code.gson:gson:2.9.0"
70
+ implementation "com.google.code.gson:gson:2.11.0"
86
71
  implementation "org.jetbrains.kotlin:kotlin-stdlib:${getKotlinVersion()}"
87
- implementation "androidx.core:core-ktx:1.6.0"
88
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0"
89
- implementation "androidx.constraintlayout:constraintlayout:2.1.3"
90
- implementation "androidx.appcompat:appcompat:1.3.1"
72
+ implementation "androidx.core:core-ktx:1.13.1"
73
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1"
74
+ implementation "androidx.constraintlayout:constraintlayout:2.1.4"
75
+ implementation "androidx.appcompat:appcompat:1.7.0"
91
76
 
92
77
  implementation "live.100ms:android-sdk:${sdkVersions["android"]}"
93
78
  implementation "live.100ms:video-view:${sdkVersions["android"]}"
@@ -21,7 +21,7 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
21
21
  view.cleanup()
22
22
  }
23
23
 
24
- override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any>? {
24
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
25
25
  super.getExportedCustomDirectEventTypeConstants()
26
26
 
27
27
  return MapBuilder.of(
@@ -96,7 +96,7 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
96
96
  }
97
97
  }
98
98
 
99
- override fun getCommandsMap(): MutableMap<String, Int>? =
99
+ override fun getCommandsMap(): Map<String, Int>? =
100
100
  MapBuilder
101
101
  .builder<String, Int>()
102
102
  .put("play", 10)
@@ -11,6 +11,7 @@ import android.webkit.URLUtil
11
11
  import androidx.annotation.RequiresApi
12
12
  import com.facebook.react.bridge.*
13
13
  import com.facebook.react.uimanager.events.RCTEventEmitter
14
+ import hms.webrtc.SurfaceViewRenderer
14
15
  import live.hms.video.audio.HMSAudioManager
15
16
  import live.hms.video.error.HMSException
16
17
  import live.hms.video.events.AgentType
@@ -27,7 +28,6 @@ import live.hms.video.sdk.models.role.HMSRole
27
28
  import live.hms.video.services.LogAlarmManager
28
29
  import live.hms.video.utils.HMSLogger
29
30
  import live.hms.video.utils.HmsUtilities
30
- import org.webrtc.SurfaceViewRenderer
31
31
  import java.io.ByteArrayOutputStream
32
32
  import java.util.*
33
33
  import kotlin.collections.ArrayList
@@ -96,7 +96,7 @@ class HMSManager(
96
96
  reactAppContext = reactApplicationContext
97
97
 
98
98
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
99
- currentActivity?.let {
99
+ reactApplicationContext?.currentActivity?.let {
100
100
  pipReceiver?.register(it)
101
101
  }
102
102
  }
@@ -438,7 +438,7 @@ class HMSManager(
438
438
  data: ReadableMap,
439
439
  callback: Promise?,
440
440
  ) {
441
- currentActivity?.application?.registerActivityLifecycleCallbacks(this)
441
+ reactApplicationContext?.currentActivity?.application?.registerActivityLifecycleCallbacks(this)
442
442
  val hms = HMSHelper.getHms(data, hmsCollection)
443
443
 
444
444
  hms?.startScreenshare(callback)
@@ -461,7 +461,7 @@ class HMSManager(
461
461
  ) {
462
462
  val hms = HMSHelper.getHms(data, hmsCollection)
463
463
 
464
- currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
464
+ reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
465
465
  hms?.stopScreenshare(callback)
466
466
  }
467
467
 
@@ -470,7 +470,7 @@ class HMSManager(
470
470
  data: ReadableMap,
471
471
  callback: Promise?,
472
472
  ) {
473
- currentActivity?.application?.registerActivityLifecycleCallbacks(this)
473
+ reactApplicationContext?.currentActivity?.application?.registerActivityLifecycleCallbacks(this)
474
474
  val hms = HMSHelper.getHms(data, hmsCollection)
475
475
 
476
476
  hms?.startAudioshare(data, callback)
@@ -493,7 +493,7 @@ class HMSManager(
493
493
  ) {
494
494
  val hms = HMSHelper.getHms(data, hmsCollection)
495
495
 
496
- currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
496
+ reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
497
497
  hms?.stopAudioshare(callback)
498
498
  }
499
499
 
@@ -784,7 +784,7 @@ class HMSManager(
784
784
  return
785
785
  }
786
786
 
787
- val activity = currentActivity
787
+ val activity = reactApplicationContext?.currentActivity
788
788
 
789
789
  if (activity !== null) {
790
790
  val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
@@ -1085,7 +1085,7 @@ class HMSManager(
1085
1085
  throw Throwable(message = "PIP Mode is not supported!")
1086
1086
  }
1087
1087
 
1088
- val activity = currentActivity ?: return false
1088
+ val activity = reactApplicationContext?.currentActivity ?: return false
1089
1089
  val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
1090
1090
  val pipParams = buildPipParams(pipParamConfig) ?: return false
1091
1091
 
@@ -1122,7 +1122,7 @@ class HMSManager(
1122
1122
  throw Throwable(message = "PIP Mode is not supported!")
1123
1123
  }
1124
1124
 
1125
- val activity = currentActivity ?: return false
1125
+ val activity = reactApplicationContext?.currentActivity ?: return false
1126
1126
  val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
1127
1127
  val pipParams = buildPipParams(pipParamConfig) ?: return false
1128
1128
 
@@ -1713,7 +1713,7 @@ class HMSManager(
1713
1713
  hmsCollection[key]?.leave(null)
1714
1714
  }
1715
1715
  }
1716
- currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
1716
+ reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
1717
1717
  hmsCollection = mutableMapOf()
1718
1718
  // unregistering pip actions on activity destroy.
1719
1719
  if (pipReceiver !== null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -21,7 +21,7 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
21
21
  return HMSView(reactContext)
22
22
  }
23
23
 
24
- override fun getExportedCustomBubblingEventTypeConstants(): MutableMap<String, Any>? =
24
+ override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any>? =
25
25
  MapBuilder
26
26
  .builder<String, Any>()
27
27
  .put(
@@ -29,7 +29,7 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
29
29
  MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", "onChange")),
30
30
  ).build()
31
31
 
32
- override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any>? =
32
+ override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? =
33
33
  MapBuilder.of(
34
34
  "captureFrame",
35
35
  MapBuilder.of("registrationName", "onDataReturned"),
@@ -12,11 +12,11 @@ import com.facebook.react.bridge.ReactContext
12
12
  import com.facebook.react.bridge.ReadableArray
13
13
  import com.facebook.react.bridge.WritableMap
14
14
  import com.facebook.react.uimanager.events.RCTEventEmitter
15
+ import hms.webrtc.RendererCommon
15
16
  import live.hms.video.media.tracks.HMSVideoTrack
16
17
  import live.hms.video.utils.HmsUtilities
17
18
  import live.hms.videoview.HMSVideoView
18
19
  import live.hms.videoview.VideoViewStateChangeListener
19
- import org.webrtc.RendererCommon
20
20
 
21
21
  @SuppressLint("ViewConstructor")
22
22
  class HMSView(
@@ -2343,14 +2343,39 @@ class HMSRNSDK: NSObject, HMSUpdateListener, HMSPreviewListener {
2343
2343
  reject?("6004", errorMessage, nil)
2344
2344
  return
2345
2345
  }
2346
- DispatchQueue.main.async {
2347
- guard let image = RCTConvert.uiImage(imageSource) else {
2348
- let errorMessage = "\(#function) Unable to create `UIImage` from given background `source` object!"
2349
- reject?("6004", errorMessage, nil)
2350
- return
2346
+
2347
+ // Check if it's a remote URL
2348
+ if let uriString = imageSource.value(forKey: "uri") as? String,
2349
+ (uriString.hasPrefix("http://") || uriString.hasPrefix("https://")),
2350
+ let url = URL(string: uriString) {
2351
+ // Download remote image
2352
+ URLSession.shared.dataTask(with: url) { data, response, error in
2353
+ DispatchQueue.main.async {
2354
+ if let error = error {
2355
+ let errorMessage = "\(#function) Failed to download image: \(error.localizedDescription)"
2356
+ reject?("6004", errorMessage, nil)
2357
+ return
2358
+ }
2359
+ guard let data = data, let image = UIImage(data: data) else {
2360
+ let errorMessage = "\(#function) Unable to create `UIImage` from downloaded data!"
2361
+ reject?("6004", errorMessage, nil)
2362
+ return
2363
+ }
2364
+ virtualBackgroundPlugin.backgroundImage = image
2365
+ resolve?(true)
2366
+ }
2367
+ }.resume()
2368
+ } else {
2369
+ // Use RCTConvert for local files and bundled resources
2370
+ DispatchQueue.main.async {
2371
+ guard let image = RCTConvert.uiImage(imageSource) else {
2372
+ let errorMessage = "\(#function) Unable to create `UIImage` from given background `source` object!"
2373
+ reject?("6004", errorMessage, nil)
2374
+ return
2375
+ }
2376
+ virtualBackgroundPlugin.backgroundImage = image
2377
+ resolve?(true)
2351
2378
  }
2352
- virtualBackgroundPlugin.backgroundImage = image
2353
- resolve?(true)
2354
2379
  }
2355
2380
  default:
2356
2381
  let errorMessage = "\(#function) Unknown background `type` passed!"
@@ -52,11 +52,9 @@ class HMSNativeEventEmitter {
52
52
  let subscription = this._nativeEventEmitter.addListener(eventType, listener);
53
53
  return {
54
54
  remove: () => {
55
- if (subscription && Object.getOwnPropertyNames(subscription).includes('remove') && typeof subscription.remove === 'function') {
55
+ if (subscription) {
56
56
  subscription.remove();
57
57
  subscription = null;
58
- } else {
59
- this._nativeEventEmitter.removeListener(eventType, listener);
60
58
  }
61
59
 
62
60
  // disable `eventType` on `HMSSDK`, if all listeners has been removed
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_HMSLogger","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSNativeEventEmitter","constructor","nativeModule","_nativeModule","_nativeEventEmitter","NativeEventEmitter","listenerCount","eventType","listeners","count","length","logger","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","getOwnPropertyNames","includes","removeListener","disableHMSEventType","removeAllListeners","enableEvent","disableEvent","exports"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (\n subscription &&\n Object.getOwnPropertyNames(subscription).includes('remove') &&\n typeof subscription.remove === 'function'\n ) {\n subscription.remove();\n subscription = null;\n } else {\n this._nativeEventEmitter.removeListener(eventType, listener);\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_HMSLogger","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSNativeEventEmitter","constructor","nativeModule","_nativeModule","_nativeEventEmitter","NativeEventEmitter","listenerCount","eventType","listeners","count","length","logger","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","disableHMSEventType","removeAllListeners","enableEvent","disableEvent","exports"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (subscription) {\n subscription.remove();\n subscription = null;\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,6 @@ let HMSPeerType = exports.HMSPeerType = /*#__PURE__*/function (HMSPeerType) {
19
19
  HMSPeerType["SIP"] = "SIP";
20
20
  HMSPeerType["REGULAR"] = "REGULAR";
21
21
  return HMSPeerType;
22
- }({}); // Represents a regular peer, such as a standard user in a video call.
22
+ }({});
23
23
  const HMSPeerTypeOrdinals = exports.HMSPeerTypeOrdinals = new Map([['0', HMSPeerType.SIP], ['1', HMSPeerType.REGULAR]]);
24
24
  //# sourceMappingURL=HMSPeerType.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HMSPeerType","exports","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAWYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAEA;AAGhB,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEH,WAAW,CAACI,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEJ,WAAW,CAACK,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["HMSPeerType","exports","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAWYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKhB,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEH,WAAW,CAACI,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEJ,WAAW,CAACK,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
@@ -146,10 +146,8 @@ class HMSSessionStore {
146
146
  this._addedKeyChangeListenerCount -= 1;
147
147
  if (this._addedKeyChangeListenerCount <= 0) {
148
148
  this._addedKeyChangeListenerCount = 0;
149
- if (this._deviceEventEmitterSubscription && typeof this._deviceEventEmitterSubscription.remove === 'function') {
149
+ if (this._deviceEventEmitterSubscription) {
150
150
  this._deviceEventEmitterSubscription.remove();
151
- } else {
152
- _reactNative.DeviceEventEmitter.removeListener(_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
153
151
  }
154
152
  this._deviceEventEmitterSubscription = undefined;
155
153
  this._eventEmitter = undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","key","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","key","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription.remove();\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,8 +9,7 @@ var _reactNative = require("react-native");
9
9
  var _HMSConstants = require("./HMSConstants");
10
10
  var _HMSVideoViewMode = require("./HMSVideoViewMode");
11
11
  var _hmsviews = require("../hooks/hmsviews");
12
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
13
  /**
15
14
  * Interface defining the properties for the `HmsView` component.
16
15
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_HMSConstants","_HMSVideoViewMode","_hmsviews","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HmsView","requireNativeComponent","_nextRequestId","_requestMap","Map","HmsViewComponent","exports","React","forwardRef","props","ref","trackId","style","styles","hmsView","id","HMSConstants","DEFAULT_SDK_ID","mirror","setZOrderMediaOverlay","autoSimulcast","scaleType","HMSVideoViewMode","ASPECT_FILL","hmsViewRef","useRef","applyStyles_ANDROID","setApplyStyles_ANDROID","useState","data","onChange","nativeEvent","event","setHmsViewsResolutionsState","_onDataReturned","requestId","result","error","promise","resolve","reject","delete","capture","viewManagerConfig","UIManager","getViewManagerConfig","requestMap","Promise","dispatchViewManagerCommand","findNodeHandle","current","Commands","useImperativeHandle","createElement","Platform","OS","onDataReturned","StyleSheet","create","flex"],"sources":["HmsView.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useRef } from 'react';\nimport {\n findNodeHandle,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n Platform,\n} from 'react-native';\nimport type { NativeSyntheticEvent, ViewStyle } from 'react-native';\nimport { HMSConstants } from './HMSConstants';\nimport { HMSVideoViewMode } from './HMSVideoViewMode';\nimport { setHmsViewsResolutionsState } from '../hooks/hmsviews';\n\n/**\n * Interface defining the properties for the `HmsView` component.\n *\n * This interface specifies the structure of the props that the `HmsView` component expects. It includes\n * properties for configuring the video track display, such as the track ID, mirroring options,\n * and scale type. It also includes properties for handling events and customizing the component's style.\n *\n * @interface HmsViewProps\n * @property {Object} data - An object containing the track ID, instance ID, mirroring option, and scale type for the video or audio track.\n * @property {string} data.trackId - The unique identifier for the track to be displayed.\n * @property {string} data.id - The identifier for the `HmsViewComponent` instance.\n * @property {boolean} data.mirror - Indicates whether the video should be mirrored. This is commonly used for local video tracks.\n * @property {HMSVideoViewMode} data.scaleType - Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} autoSimulcast - Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {boolean} setZOrderMediaOverlay - When true, the video view will be rendered above the regular view hierarchy.\n * @property {ViewStyle} style - Custom styles to apply to the view.\n * @property {Function} onChange - A callback function that is invoked when the `HmsView` component emits a change event.\n * @property {Function} onDataReturned - A callback function that is invoked when the `HmsView` component returns data in response to a capture frame event.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\ninterface HmsViewProps {\n data: {\n trackId: string;\n id: string;\n mirror: boolean;\n scaleType: HMSVideoViewMode;\n };\n autoSimulcast: boolean;\n setZOrderMediaOverlay: boolean;\n scaleType: HMSVideoViewMode;\n style: ViewStyle;\n onChange: Function;\n onDataReturned: Function;\n}\n\n// Imports the `HmsView` component from the native side using the `requireNativeComponent` function.\n// This component is used to render video tracks in the application.\nconst HmsView = requireNativeComponent<HmsViewProps>('HMSView');\nlet _nextRequestId = 1;\nlet _requestMap = new Map();\n\n/**\n * Defines the properties for the `HmsViewComponent`.\n *\n * This interface outlines the props that can be passed to the `HmsViewComponent` to configure its behavior and appearance.\n *\n * @interface HmsComponentProps\n * @property {string} trackId - The unique identifier for the track to be displayed.\n * @property {ViewStyle} [style] - Optional. Custom styles to apply to the view.\n * @property {boolean} [mirror] - Optional. If true, the video will be mirrored. This is commonly used for local video tracks.\n * @property {boolean} [autoSimulcast] - Optional. Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {HMSVideoViewMode} [scaleType] - Optional. Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} [setZOrderMediaOverlay] - Optional. When true, the video view will be rendered above the regular view hierarchy.\n * @property {string} id - The identifier for the `HmsViewComponent` instance.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\nexport interface HmsComponentProps {\n trackId: string;\n style?: ViewStyle;\n mirror?: boolean;\n autoSimulcast?: boolean;\n scaleType?: HMSVideoViewMode;\n setZOrderMediaOverlay?: boolean;\n id: string;\n}\n\nexport const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(\n (props, ref) => {\n const {\n trackId,\n style = styles.hmsView,\n id = HMSConstants.DEFAULT_SDK_ID,\n mirror = false,\n setZOrderMediaOverlay = false,\n autoSimulcast = true,\n scaleType = HMSVideoViewMode.ASPECT_FILL,\n } = props;\n\n const hmsViewRef: any = useRef();\n const [applyStyles_ANDROID, setApplyStyles_ANDROID] = useState(false);\n const data = {\n trackId,\n id,\n mirror,\n scaleType,\n };\n\n /**\n * This method is passed to `onChange` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'topChange' event.\n */\n const onChange = ({\n nativeEvent,\n }: NativeSyntheticEvent<{\n data: { height: number; width: number };\n event: 'ON_RESOLUTION_CHANGE_EVENT';\n }>) => {\n const { event, data } = nativeEvent;\n\n setApplyStyles_ANDROID(true);\n\n if (event === 'ON_RESOLUTION_CHANGE_EVENT') {\n setHmsViewsResolutionsState(trackId, data);\n }\n };\n\n /**\n * This method is passed to `onDataReturned` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'captureFrame' event.\n */\n const _onDataReturned = (event: {\n nativeEvent: { requestId: any; result: any; error: any };\n }) => {\n // We grab the relevant data out of our event.\n let { requestId, result, error } = event.nativeEvent;\n // Then we get the promise we saved earlier for the given request ID.\n let promise = _requestMap.get(requestId);\n if (result) {\n // If it was successful, we resolve the promise.\n promise.resolve(result);\n } else {\n // Otherwise, we reject it.\n promise.reject(error);\n }\n // Finally, we clean up our request map.\n _requestMap.delete(requestId);\n };\n\n const capture = async () => {\n const viewManagerConfig = UIManager.getViewManagerConfig('HMSView');\n\n let requestId = _nextRequestId++;\n let requestMap = _requestMap;\n\n // We create a promise here that will be resolved once `_onRequestDone` is\n // called.\n let promise = new Promise(function (resolve, reject) {\n requestMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsViewRef.current),\n viewManagerConfig.Commands.capture,\n [requestId]\n );\n return promise;\n };\n\n useImperativeHandle(ref, () => {\n return {\n capture,\n };\n });\n\n return (\n <HmsView\n ref={hmsViewRef}\n onChange={onChange}\n data={data}\n style={\n Platform.OS === 'android' ? (applyStyles_ANDROID ? style : {}) : style\n }\n autoSimulcast={autoSimulcast}\n scaleType={scaleType}\n setZOrderMediaOverlay={setZOrderMediaOverlay}\n onDataReturned={_onDataReturned}\n />\n );\n }\n);\n\nconst styles = StyleSheet.create({\n hmsView: {\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_HMSConstants","_HMSVideoViewMode","_hmsviews","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","HmsView","requireNativeComponent","_nextRequestId","_requestMap","Map","HmsViewComponent","exports","React","forwardRef","props","ref","trackId","style","styles","hmsView","id","HMSConstants","DEFAULT_SDK_ID","mirror","setZOrderMediaOverlay","autoSimulcast","scaleType","HMSVideoViewMode","ASPECT_FILL","hmsViewRef","useRef","applyStyles_ANDROID","setApplyStyles_ANDROID","useState","data","onChange","nativeEvent","event","setHmsViewsResolutionsState","_onDataReturned","requestId","result","error","promise","resolve","reject","delete","capture","viewManagerConfig","UIManager","getViewManagerConfig","requestMap","Promise","dispatchViewManagerCommand","findNodeHandle","current","Commands","useImperativeHandle","createElement","Platform","OS","onDataReturned","StyleSheet","create","flex"],"sources":["HmsView.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useRef } from 'react';\nimport {\n findNodeHandle,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n Platform,\n} from 'react-native';\nimport type { NativeSyntheticEvent, ViewStyle } from 'react-native';\nimport { HMSConstants } from './HMSConstants';\nimport { HMSVideoViewMode } from './HMSVideoViewMode';\nimport { setHmsViewsResolutionsState } from '../hooks/hmsviews';\n\n/**\n * Interface defining the properties for the `HmsView` component.\n *\n * This interface specifies the structure of the props that the `HmsView` component expects. It includes\n * properties for configuring the video track display, such as the track ID, mirroring options,\n * and scale type. It also includes properties for handling events and customizing the component's style.\n *\n * @interface HmsViewProps\n * @property {Object} data - An object containing the track ID, instance ID, mirroring option, and scale type for the video or audio track.\n * @property {string} data.trackId - The unique identifier for the track to be displayed.\n * @property {string} data.id - The identifier for the `HmsViewComponent` instance.\n * @property {boolean} data.mirror - Indicates whether the video should be mirrored. This is commonly used for local video tracks.\n * @property {HMSVideoViewMode} data.scaleType - Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} autoSimulcast - Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {boolean} setZOrderMediaOverlay - When true, the video view will be rendered above the regular view hierarchy.\n * @property {ViewStyle} style - Custom styles to apply to the view.\n * @property {Function} onChange - A callback function that is invoked when the `HmsView` component emits a change event.\n * @property {Function} onDataReturned - A callback function that is invoked when the `HmsView` component returns data in response to a capture frame event.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\ninterface HmsViewProps {\n data: {\n trackId: string;\n id: string;\n mirror: boolean;\n scaleType: HMSVideoViewMode;\n };\n autoSimulcast: boolean;\n setZOrderMediaOverlay: boolean;\n scaleType: HMSVideoViewMode;\n style: ViewStyle;\n onChange: Function;\n onDataReturned: Function;\n}\n\n// Imports the `HmsView` component from the native side using the `requireNativeComponent` function.\n// This component is used to render video tracks in the application.\nconst HmsView = requireNativeComponent<HmsViewProps>('HMSView');\nlet _nextRequestId = 1;\nlet _requestMap = new Map();\n\n/**\n * Defines the properties for the `HmsViewComponent`.\n *\n * This interface outlines the props that can be passed to the `HmsViewComponent` to configure its behavior and appearance.\n *\n * @interface HmsComponentProps\n * @property {string} trackId - The unique identifier for the track to be displayed.\n * @property {ViewStyle} [style] - Optional. Custom styles to apply to the view.\n * @property {boolean} [mirror] - Optional. If true, the video will be mirrored. This is commonly used for local video tracks.\n * @property {boolean} [autoSimulcast] - Optional. Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {HMSVideoViewMode} [scaleType] - Optional. Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} [setZOrderMediaOverlay] - Optional. When true, the video view will be rendered above the regular view hierarchy.\n * @property {string} id - The identifier for the `HmsViewComponent` instance.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\nexport interface HmsComponentProps {\n trackId: string;\n style?: ViewStyle;\n mirror?: boolean;\n autoSimulcast?: boolean;\n scaleType?: HMSVideoViewMode;\n setZOrderMediaOverlay?: boolean;\n id: string;\n}\n\nexport const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(\n (props, ref) => {\n const {\n trackId,\n style = styles.hmsView,\n id = HMSConstants.DEFAULT_SDK_ID,\n mirror = false,\n setZOrderMediaOverlay = false,\n autoSimulcast = true,\n scaleType = HMSVideoViewMode.ASPECT_FILL,\n } = props;\n\n const hmsViewRef: any = useRef();\n const [applyStyles_ANDROID, setApplyStyles_ANDROID] = useState(false);\n const data = {\n trackId,\n id,\n mirror,\n scaleType,\n };\n\n /**\n * This method is passed to `onChange` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'topChange' event.\n */\n const onChange = ({\n nativeEvent,\n }: NativeSyntheticEvent<{\n data: { height: number; width: number };\n event: 'ON_RESOLUTION_CHANGE_EVENT';\n }>) => {\n const { event, data } = nativeEvent;\n\n setApplyStyles_ANDROID(true);\n\n if (event === 'ON_RESOLUTION_CHANGE_EVENT') {\n setHmsViewsResolutionsState(trackId, data);\n }\n };\n\n /**\n * This method is passed to `onDataReturned` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'captureFrame' event.\n */\n const _onDataReturned = (event: {\n nativeEvent: { requestId: any; result: any; error: any };\n }) => {\n // We grab the relevant data out of our event.\n let { requestId, result, error } = event.nativeEvent;\n // Then we get the promise we saved earlier for the given request ID.\n let promise = _requestMap.get(requestId);\n if (result) {\n // If it was successful, we resolve the promise.\n promise.resolve(result);\n } else {\n // Otherwise, we reject it.\n promise.reject(error);\n }\n // Finally, we clean up our request map.\n _requestMap.delete(requestId);\n };\n\n const capture = async () => {\n const viewManagerConfig = UIManager.getViewManagerConfig('HMSView');\n\n let requestId = _nextRequestId++;\n let requestMap = _requestMap;\n\n // We create a promise here that will be resolved once `_onRequestDone` is\n // called.\n let promise = new Promise(function (resolve, reject) {\n requestMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsViewRef.current),\n viewManagerConfig.Commands.capture,\n [requestId]\n );\n return promise;\n };\n\n useImperativeHandle(ref, () => {\n return {\n capture,\n };\n });\n\n return (\n <HmsView\n ref={hmsViewRef}\n onChange={onChange}\n data={data}\n style={\n Platform.OS === 'android' ? (applyStyles_ANDROID ? style : {}) : style\n }\n autoSimulcast={autoSimulcast}\n scaleType={scaleType}\n setZOrderMediaOverlay={setZOrderMediaOverlay}\n onDataReturned={_onDataReturned}\n />\n );\n }\n);\n\nconst styles = StyleSheet.create({\n hmsView: {\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -12,8 +12,7 @@ var _types = require("../../types");
12
12
  var _HMSEncoder = require("../../classes/HMSEncoder");
13
13
  var _hmsStore = require("../../stores/hms-store");
14
14
  var _hlsPlayerStatsStore = require("../../stores/hls-player-stats-store");
15
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
16
  const _HMSHLSPlayer = ({
18
17
  url = '',
19
18
  style,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerViewManagerConfig","Commands","UIManager","dispatchViewManagerCommand","findNodeHandle","stop","undefined","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","areClosedCaptionSupported","requestId","promise","Promise","resolve","reject","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport {\n View,\n StyleSheet,\n UIManager,\n findNodeHandle,\n Platform,\n} from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport {\n RCTHMSHLSPlayer,\n RCTHMSHLSPlayerViewManagerConfig,\n} from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n play: (url?: string) => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.play\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.play,\n url ? [url] : ['']\n );\n }\n },\n stop: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop,\n undefined\n );\n }\n },\n pause: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause,\n undefined\n );\n }\n },\n resume: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume,\n undefined\n );\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,\n [seconds]\n );\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,\n [seconds]\n );\n }\n },\n seekToLivePosition: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,\n undefined\n );\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,\n [level]\n );\n }\n },\n isClosedCaptionSupported: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption,\n undefined\n );\n }\n },\n disableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption,\n undefined\n );\n }\n },\n getPlayerDurationDetails: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n };\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}\n onHmsHlsStatsEvent={handleHLSStatsEvent}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android' ? handleHLSPlayerCuesEvent : undefined\n }\n onDataReturned={handleRequestedDataReturned}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerViewManagerConfig","Commands","UIManager","dispatchViewManagerCommand","findNodeHandle","stop","undefined","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","areClosedCaptionSupported","requestId","promise","Promise","resolve","reject","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport {\n View,\n StyleSheet,\n UIManager,\n findNodeHandle,\n Platform,\n} from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport {\n RCTHMSHLSPlayer,\n RCTHMSHLSPlayerViewManagerConfig,\n} from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n play: (url?: string) => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.play\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.play,\n url ? [url] : ['']\n );\n }\n },\n stop: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop,\n undefined\n );\n }\n },\n pause: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause,\n undefined\n );\n }\n },\n resume: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume,\n undefined\n );\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,\n [seconds]\n );\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,\n [seconds]\n );\n }\n },\n seekToLivePosition: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,\n undefined\n );\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,\n [level]\n );\n }\n },\n isClosedCaptionSupported: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption,\n undefined\n );\n }\n },\n disableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption,\n undefined\n );\n }\n },\n getPlayerDurationDetails: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n };\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}\n onHmsHlsStatsEvent={handleHLSStatsEvent}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android' ? handleHLSPlayerCuesEvent : undefined\n }\n onDataReturned={handleRequestedDataReturned}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AASA,IAAAE,MAAA,GAAAF,OAAA;AASA,IAAAG,gBAAA,GAAAH,OAAA;AAWA,IAAAI,MAAA,GAAAJ,OAAA;AAQA,IAAAK,WAAA,GAAAL,OAAA;AAEA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AAAgF,SAAAD,wBAAAS,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAX,uBAAA,YAAAA,CAAAS,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AA2BhF,MAAMkB,aAGL,GAAGA,CACF;EAAEC,GAAG,GAAG,EAAE;EAAEC,KAAK;EAAEC,cAAc;EAAEC,WAAW;EAAEC,cAAc,GAAG;AAAM,CAAC,EACxEC,GAAG,KACA;EACH,MAAMC,eAAe,GAAG,IAAAC,aAAM,EAA4B,IAAI,CAAC;EAC/D,MAAMC,gBAAgB,GAAG,IAAAC,cAAO,EAC9B,MACE,IAAIC,GAAG,CAGL,CAAC,EACL,EACF,CAAC;EACD,MAAMC,gBAAgB,GAAG,IAAAJ,aAAM,EAAC,CAAC,CAAC;EAElC,IAAAK,0BAAmB,EACjBP,GAAG,EACH,OAAO;IACLQ,IAAI,EAAGb,GAAY,IAAK;MACtB,IACEM,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACH,IAAI,EAC9C;QACAI,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACH,IAAI,EAC9Cb,GAAG,GAAG,CAACA,GAAG,CAAC,GAAG,CAAC,EAAE,CACnB,CAAC;MACH;IACF,CAAC;IACDoB,IAAI,EAAEA,CAAA,KAAM;MACV,IACEd,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACI,IAAI,EAC9C;QACAH,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACI,IAAI,EAC9CC,SACF,CAAC;MACH;IACF,CAAC;IACDC,KAAK,EAAEA,CAAA,KAAM;MACX,IACEhB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACM,KAAK,EAC/C;QACAL,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACM,KAAK,EAC/CD,SACF,CAAC;MACH;IACF,CAAC;IACDE,MAAM,EAAEA,CAAA,KAAM;MACZ,IACEjB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACO,MAAM,EAChD;QACAN,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACO,MAAM,EAChDF,SACF,CAAC;MACH;IACF,CAAC;IACDG,WAAW,EAAGC,OAAe,IAAK;MAChC,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAIC,KAAK,CACbD,OAAO,GACH,iCAAiC,GACjC,0BACN,CAAC;MACH;MAEA,IACEnB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACQ,WAAW,EACrD;QACAP,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACQ,WAAW,EACrD,CAACC,OAAO,CACV,CAAC;MACH;IACF,CAAC;IACDE,YAAY,EAAGF,OAAe,IAAK;MACjC,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAIC,KAAK,CACbD,OAAO,GACH,iCAAiC,GACjC,0BACN,CAAC;MACH;MAEA,IACEnB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACW,YAAY,EACtD;QACAV,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACW,YAAY,EACtD,CAACF,OAAO,CACV,CAAC;MACH;IACF,CAAC;IACDG,kBAAkB,EAAEA,CAAA,KAAM;MACxB,IACEtB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACY,kBAAkB,EAC5D;QACAX,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACY,kBAAkB,EAC5DP,SACF,CAAC;MACH;IACF,CAAC;IACDQ,SAAS,EAAGC,KAAa,IAAK;MAC5B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,IAAIJ,KAAK,CACbI,KAAK,GAAG,+BAA+B,GAAG,wBAC5C,CAAC;MACH;MAEA,IACExB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACa,SAAS,EACnD;QACAZ,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACa,SAAS,EACnD,CAACC,KAAK,CACR,CAAC;MACH;IACF,CAAC;IACDC,wBAAwB,EAAEA,CAAA,KAAM;MAC9B,IACEzB,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACgB,yBAAyB,EACnE;QACA,MAAMC,SAAS,GAAGtB,gBAAgB,CAACG,OAAO,EAAE;QAC5C,MAAMoB,OAAO,GAAG,IAAIC,OAAO,CAAU,CAACC,OAAO,EAAEC,MAAM,KAAK;UACxD7B,gBAAgB,CAACf,GAAG,CAACwC,SAAS,EAAE;YAAEG,OAAO;YAAEC;UAAO,CAAC,CAAC;QACtD,CAAC,CAAC;QAEFpB,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACgB,yBAAyB,EACnE,CAACC,SAAS,CACZ,CAAC;QACD,OAAOC,OAAO;MAChB;MACA,OAAOC,OAAO,CAACC,OAAO,CAAC,KAAK,CAAC;IAC/B,CAAC;IACDE,sBAAsB,EAAEA,CAAA,KAAM;MAC5B,IACEhC,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACsB,sBAAsB,EAChE;QACA,MAAML,SAAS,GAAGtB,gBAAgB,CAACG,OAAO,EAAE;QAC5C,MAAMoB,OAAO,GAAG,IAAIC,OAAO,CAAU,CAACC,OAAO,EAAEC,MAAM,KAAK;UACxD7B,gBAAgB,CAACf,GAAG,CAACwC,SAAS,EAAE;YAAEG,OAAO;YAAEC;UAAO,CAAC,CAAC;QACtD,CAAC,CAAC;QAEFpB,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACsB,sBAAsB,EAChE,CAACL,SAAS,CACZ,CAAC;QACD,OAAOC,OAAO;MAChB;MACA,OAAOC,OAAO,CAACC,OAAO,CAAC,KAAK,CAAC;IAC/B,CAAC;IACDG,mBAAmB,EAAEA,CAAA,KAAM;MACzB,IACEjC,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACuB,mBAAmB,EAC7D;QACAtB,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACuB,mBAAmB,EAC7DlB,SACF,CAAC;MACH;IACF,CAAC;IACDmB,oBAAoB,EAAEA,CAAA,KAAM;MAC1B,IACElC,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACwB,oBAAoB,EAC9D;QACAvB,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACwB,oBAAoB,EAC9DnB,SACF,CAAC;MACH;IACF,CAAC;IACDoB,wBAAwB,EAAEA,CAAA,KAAM;MAC9B,IACEnC,eAAe,CAACQ,OAAO,IACvBC,iDAAgC,CAACC,QAAQ,CAACyB,wBAAwB,EAClE;QACA,MAAMR,SAAS,GAAGtB,gBAAgB,CAACG,OAAO,EAAE;QAC5C,MAAMoB,OAAO,GAAG,IAAIC,OAAO,CACzB,CAACC,OAAO,EAAEC,MAAM,KAAK;UACnB7B,gBAAgB,CAACf,GAAG,CAACwC,SAAS,EAAE;YAAEG,OAAO;YAAEC;UAAO,CAAC,CAAC;QACtD,CACF,CAAC;QAEDpB,sBAAS,CAACC,0BAA0B,CAClC,IAAAC,2BAAc,EAACb,eAAe,CAACQ,OAAO,CAAC,EACvCC,iDAAgC,CAACC,QAAQ,CAACyB,wBAAwB,EAClE,CAACR,SAAS,CACZ,CAAC;QACD,OAAOC,OAAO;MAChB;MACA,OAAOC,OAAO,CAACC,OAAO,CAAC;QACrBM,cAAc,EAAErB,SAAS;QACzBsB,iBAAiB,EAAEtB;MACrB,CAAC,CAAC;IACJ;EACF,CAAC,CAAC,EACF,CAACV,gBAAgB,EAAEH,gBAAgB,CACrC,CAAC;;EAED;EACA,MAAMoC,sBAAkD,GAAGA,CAAC;IAC1DC;EACF,CAAC,KAAK;IACJ,MAAM;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGF,WAAW;IAEnC,IAAIC,KAAK,KAAKE,qCAA8B,CAACC,qBAAqB,EAAE;MAClE,MAAMC,eAAe,GAAGC,sBAAU,CAACC,2BAA2B,CAG5DL,IAAI,CAAC;MACP,IAAAM,yBAAkB,EAACH,eAAe,CAAC;IACrC,CAAC,MAAM,IACLJ,KAAK,KAAKE,qCAA8B,CAACM,yBAAyB,EAClE;MACA,IAAAC,mCAA4B,EAACR,IAAI,CAACS,KAAK,CAAC;IAC1C,CAAC,MAAM,IACLV,KAAK,KACLE,qCAA8B,CAACS,mCAAmC,EAClE;MACA,IAAAC,gCAAyB,EAAC;QAAE,GAAGX;MAAK,CAAC,CAAC;IACxC,CAAC,MAAM;MACL,IAAAY,mCAA4B,EAACZ,IAAI,CAACa,KAAK,CAAC;IAC1C;EACF,CAAC;;EAED;EACA,MAAMC,mBAA4C,GAAGA,CAAC;IAAEhB;EAAY,CAAC,KAAK;IACxE,MAAM;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGF,WAAW;IAEnC,IAAIC,KAAK,KAAKgB,kCAA2B,CAACC,oBAAoB,EAAE;MAC9D,IAAAC,gCAAyB,EAACjB,IAAI,CAAC;IACjC,CAAC,MAAM;MACL,IAAAkB,2BAAoB,EAAClB,IAAI,CAAC;IAC5B;EACF,CAAC;;EAED;EACA,MAAMmB,wBAAoD,GAAGA,CAAC;IAC5DrB;EACF,CAAC,KAAK;IACJ,MAAM;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGF,WAAW;IAEnC,IAAIC,KAAK,KAAK,0BAA0B,EAAE;MACxC,IAAAqB,+BAAwB,EAACpB,IAAI,CAAC;IAChC;EACF,CAAC;;EAED;EACA,MAAMqB,2BAAsD,GAAGA,CAAC;IAC9DvB;EACF,CAAC,KAAK;IACJ,MAAM;MAAEZ,SAAS;MAAEc;IAAK,CAAC,GAAGF,WAAW;IACvC,MAAMwB,cAAc,GAAG7D,gBAAgB,CAAChB,GAAG,CAACyC,SAAS,CAAC;IAEtD,IAAI,CAACoC,cAAc,EAAE;MACnBC,OAAO,CAACC,IAAI,CACV,uCAAuC,EACvC,6CAA6C,EAC7CtC,SACF,CAAC;MACD;IACF;IACAoC,cAAc,CAACjC,OAAO,CAACW,IAAI,CAAC;EAC9B,CAAC;EAED,IAAAyB,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXC,qBAAW,CAACC,QAAQ,CAAC,CAAC,CAACC,kBAAkB,CAAC,CAAC;MAC3CC,8CAAyB,CAACF,QAAQ,CAAC,CAAC,CAACG,KAAK,CAAC,CAAC;IAC9C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE3G,MAAA,CAAAoB,OAAA,CAAAwF,aAAA,CAACzG,YAAA,CAAA0G,IAAI;IAAC9E,KAAK,EAAE,CAAC+E,MAAM,CAACC,SAAS,EAAE/E,cAAc;EAAE,gBAC9ChC,MAAA,CAAAoB,OAAA,CAAAwF,aAAA,CAACzG,YAAA,CAAA0G,IAAI;IAAC9E,KAAK,EAAE,CAAC+E,MAAM,CAACE,aAAa,EAAEjF,KAAK;EAAE,gBACzC/B,MAAA,CAAAoB,OAAA,CAAAwF,aAAA,CAACvG,gBAAA,CAAA4G,eAAe;IACd9E,GAAG,EAAEC,eAAgB;IACrBN,GAAG,EAAEA,GAAI;IACTC,KAAK,EAAE+E,MAAM,CAACI,MAAO;IACrBjF,WAAW,EAAEA,WAAY;IACzBC,cAAc,EAAEA,cAAe;IAC/BiF,qBAAqB,EAAEzC,sBAAuB;IAC9C0C,kBAAkB,EAAEzB,mBAAoB;IACxC0B,oBAAoB,EAClBC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAGvB,wBAAwB,GAAG7C,SACxD;IACDqE,cAAc,EAAEtB;EAA4B,CAC7C,CACG,CACF,CAAC;AAEX,CAAC;AAEM,MAAMuB,YAAY,GAAAC,OAAA,CAAAD,YAAA,gBAAGE,cAAK,CAACC,UAAU,CAG1C/F,aAAa,CAAC;AAEhB,MAAMiF,MAAM,GAAGe,uBAAU,CAACC,MAAM,CAAC;EAC/Bf,SAAS,EAAE;IACTgB,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDjB,aAAa,EAAE;IACbkB,eAAe,EAAE,SAAS;IAC1BF,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDf,MAAM,EAAE;IACNiB,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,MAAM;IACdL,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -14,8 +14,7 @@ var _HMSPeerUpdate = require("../classes/HMSPeerUpdate");
14
14
  var _HMSPeersCache = require("../classes/HMSPeersCache");
15
15
  var _HMSUpdateListenerActions = require("../classes/HMSUpdateListenerActions");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
18
  const eventType = _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PEER_UPDATE;
20
19
 
21
20
  // TODO: How to handle events which have already been received?
@@ -1 +1 @@
1
- {"version":3,"names":["React","_interopRequireWildcard","require","_HMSConstants","_HMSEncoder","_HMSEventEmitter","_HMSLogger","_HMSNativeEventListener","_interopRequireDefault","_HMSPeerUpdate","_HMSPeersCache","_HMSUpdateListenerActions","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","eventType","HMSUpdateListenerActions","ON_PEER_UPDATE","useHMSPeerUpdates","effect","deps","useEffect","HMSEventEmitter","listenerCount","addPeerUpdateSubscription","subscription","addListener","remove","removePeerUpdateSubscription","exports","peerUpdateSubscription","HMSNativeEventListener","HMSConstants","DEFAULT_SDK_ID","peerData","_getHmsPeersCache","_getLogger","data","peer","type","ordinal","HMSPeerUpdateOrdinals","keys","peerID","HMSEncoder","encodeHmsPeer","encodeHmsPeerUpdate","getHmsPeersCache","updatePeerCache","getLogger","verbose","emit"],"sources":["useHMSPeerUpdates.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { HMSConstants } from '../classes/HMSConstants';\nimport { HMSEncoder } from '../classes/HMSEncoder';\nimport { HMSEventEmitter } from '../classes/HMSEventEmitter';\nimport { getLogger } from '../classes/HMSLogger';\nimport HMSNativeEventListener from '../classes/HMSNativeEventListener';\nimport type { HMSNativeEventSubscription } from '../classes/HMSNativeEventListener';\nimport type { HMSPeer } from '../classes/HMSPeer';\nimport { HMSPeerUpdate, HMSPeerUpdateOrdinals } from '../classes/HMSPeerUpdate';\nimport { getHmsPeersCache } from '../classes/HMSPeersCache';\nimport { HMSUpdateListenerActions } from '../classes/HMSUpdateListenerActions';\n\nconst eventType = HMSUpdateListenerActions.ON_PEER_UPDATE;\n\n// TODO: How to handle events which have already been received?\n// TODO(DOUBT): add HMSInstance as dependency because of actions enabling/disabling events on HMSInstance?\nexport const useHMSPeerUpdates = (\n effect: (data: { peer: HMSPeer; type: HMSPeerUpdate }) => void,\n deps: React.DependencyList | undefined = []\n) => {\n React.useEffect(() => {\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n addPeerUpdateSubscription();\n }\n\n const subscription = HMSEventEmitter.addListener(eventType, effect, null);\n\n return () => {\n subscription.remove();\n\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n removePeerUpdateSubscription();\n }\n };\n }, deps);\n};\n\nlet peerUpdateSubscription: HMSNativeEventSubscription | null = null;\n\nfunction addPeerUpdateSubscription() {\n if (peerUpdateSubscription !== null) {\n return;\n }\n\n peerUpdateSubscription = HMSNativeEventListener.addListener(\n HMSConstants.DEFAULT_SDK_ID,\n HMSUpdateListenerActions.ON_PEER_UPDATE,\n (peerData: any) => {\n const data: { peer: any; type: any } = {\n peer: peerData,\n type: null,\n };\n\n for (const ordinal of HMSPeerUpdateOrdinals.keys()) {\n if (ordinal in peerData) {\n data.peer.peerID = peerData[ordinal];\n data.type = ordinal;\n break;\n }\n }\n\n const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);\n const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;\n\n getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);\n\n getLogger()?.verbose('#Listener ON_PEER_LISTENER_CALL', {\n peer,\n type,\n });\n\n HMSEventEmitter.emit(eventType, { peer, type });\n }\n );\n}\n\nfunction removePeerUpdateSubscription() {\n if (peerUpdateSubscription === null) {\n return;\n }\n\n peerUpdateSubscription.remove();\n peerUpdateSubscription = null;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_HMSConstants","_HMSEncoder","_HMSEventEmitter","_HMSLogger","_HMSNativeEventListener","_interopRequireDefault","_HMSPeerUpdate","_HMSPeersCache","_HMSUpdateListenerActions","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","eventType","HMSUpdateListenerActions","ON_PEER_UPDATE","useHMSPeerUpdates","effect","deps","useEffect","HMSEventEmitter","listenerCount","addPeerUpdateSubscription","subscription","addListener","remove","removePeerUpdateSubscription","exports","peerUpdateSubscription","HMSNativeEventListener","HMSConstants","DEFAULT_SDK_ID","peerData","_getHmsPeersCache","_getLogger","data","peer","type","ordinal","HMSPeerUpdateOrdinals","keys","peerID","HMSEncoder","encodeHmsPeer","encodeHmsPeerUpdate","getHmsPeersCache","updatePeerCache","getLogger","verbose","emit"],"sources":["useHMSPeerUpdates.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { HMSConstants } from '../classes/HMSConstants';\nimport { HMSEncoder } from '../classes/HMSEncoder';\nimport { HMSEventEmitter } from '../classes/HMSEventEmitter';\nimport { getLogger } from '../classes/HMSLogger';\nimport HMSNativeEventListener from '../classes/HMSNativeEventListener';\nimport type { HMSNativeEventSubscription } from '../classes/HMSNativeEventListener';\nimport type { HMSPeer } from '../classes/HMSPeer';\nimport { HMSPeerUpdate, HMSPeerUpdateOrdinals } from '../classes/HMSPeerUpdate';\nimport { getHmsPeersCache } from '../classes/HMSPeersCache';\nimport { HMSUpdateListenerActions } from '../classes/HMSUpdateListenerActions';\n\nconst eventType = HMSUpdateListenerActions.ON_PEER_UPDATE;\n\n// TODO: How to handle events which have already been received?\n// TODO(DOUBT): add HMSInstance as dependency because of actions enabling/disabling events on HMSInstance?\nexport const useHMSPeerUpdates = (\n effect: (data: { peer: HMSPeer; type: HMSPeerUpdate }) => void,\n deps: React.DependencyList | undefined = []\n) => {\n React.useEffect(() => {\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n addPeerUpdateSubscription();\n }\n\n const subscription = HMSEventEmitter.addListener(eventType, effect, null);\n\n return () => {\n subscription.remove();\n\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n removePeerUpdateSubscription();\n }\n };\n }, deps);\n};\n\nlet peerUpdateSubscription: HMSNativeEventSubscription | null = null;\n\nfunction addPeerUpdateSubscription() {\n if (peerUpdateSubscription !== null) {\n return;\n }\n\n peerUpdateSubscription = HMSNativeEventListener.addListener(\n HMSConstants.DEFAULT_SDK_ID,\n HMSUpdateListenerActions.ON_PEER_UPDATE,\n (peerData: any) => {\n const data: { peer: any; type: any } = {\n peer: peerData,\n type: null,\n };\n\n for (const ordinal of HMSPeerUpdateOrdinals.keys()) {\n if (ordinal in peerData) {\n data.peer.peerID = peerData[ordinal];\n data.type = ordinal;\n break;\n }\n }\n\n const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);\n const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;\n\n getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);\n\n getLogger()?.verbose('#Listener ON_PEER_LISTENER_CALL', {\n peer,\n type,\n });\n\n HMSEventEmitter.emit(eventType, { peer, type });\n }\n );\n}\n\nfunction removePeerUpdateSubscription() {\n if (peerUpdateSubscription === null) {\n return;\n }\n\n peerUpdateSubscription.remove();\n peerUpdateSubscription = null;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -46,11 +46,9 @@ export class HMSNativeEventEmitter {
46
46
  let subscription = this._nativeEventEmitter.addListener(eventType, listener);
47
47
  return {
48
48
  remove: () => {
49
- if (subscription && Object.getOwnPropertyNames(subscription).includes('remove') && typeof subscription.remove === 'function') {
49
+ if (subscription) {
50
50
  subscription.remove();
51
51
  subscription = null;
52
- } else {
53
- this._nativeEventEmitter.removeListener(eventType, listener);
54
52
  }
55
53
 
56
54
  // disable `eventType` on `HMSSDK`, if all listeners has been removed
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","logger","HMSNativeEventEmitter","constructor","nativeModule","_defineProperty","_nativeModule","_nativeEventEmitter","listenerCount","eventType","listeners","count","length","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","Object","getOwnPropertyNames","includes","removeListener","disableHMSEventType","removeAllListeners","enableEvent","disableEvent"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (\n subscription &&\n Object.getOwnPropertyNames(subscription).includes('remove') &&\n typeof subscription.remove === 'function'\n ) {\n subscription.remove();\n subscription = null;\n } else {\n this._nativeEventEmitter.removeListener(eventType, listener);\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","logger","HMSNativeEventEmitter","constructor","nativeModule","_defineProperty","_nativeModule","_nativeEventEmitter","listenerCount","eventType","listeners","count","length","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","disableHMSEventType","removeAllListeners","enableEvent","disableEvent"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (subscription) {\n subscription.remove();\n subscription = null;\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":";;;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AAEjD,SAASC,MAAM,QAAQ,aAAa;AAMpC,OAAO,MAAMC,qBAAqB,CAAC;EAIjCC,WAAWA,CAACC,YAAiB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC7B,IAAI,CAACC,aAAa,GAAGF,YAAY;IACjC,IAAI,CAACG,mBAAmB,GAAG,IAAIP,kBAAkB,CAACI,YAAY,CAAC;EACjE;EAEAI,aAAaA,CAACC,SAAiB,EAAU;IACvC;IACA;IACA,IAAI,OAAO,IAAI,CAACF,mBAAmB,CAACG,SAAS,KAAK,UAAU,EAAE;MAC5D;MACA,MAAMC,KAAK,GAAG,IAAI,CAACJ,mBAAmB,CAACG,SAAS,CAACD,SAAS,CAAC,CAACG,MAAM;MAElEX,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,+CAA+C,EAAE;QAC/DJ,SAAS;QACTE;MACF,CAAC,CAAC;MACF,OAAOA,KAAK;IACd;;IAEA;IACA,MAAMA,KAAK,GAAG,IAAI,CAACJ,mBAAmB,CAACC,aAAa,CAACC,SAAS,CAAC;IAE/DR,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,+CAA+C,EAAE;MAC/DJ,SAAS;MACTE;IACF,CAAC,CAAC;IACF,OAAOA,KAAK;EACd;EAEAG,WAAWA,CACTC,EAAU,EACVN,SAAiB,EACjBO,QAAiC,EACX;IACtBf,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,6CAA6C,EAAE;MAC7DE,EAAE;MACFN,SAAS;MACTO;IACF,CAAC,CAAC;;IAEF;IACA;IACA,IAAI,IAAI,CAACR,aAAa,CAACC,SAAS,CAAC,IAAI,CAAC,EAAE;MACtC,IAAI,CAACQ,kBAAkB,CAACF,EAAE,EAAEN,SAAS,CAAC;IACxC;IAEA,IAAIS,YAAsC,GACxC,IAAI,CAACX,mBAAmB,CAACO,WAAW,CAACL,SAAS,EAAEO,QAAQ,CAAC;IAE3D,OAAO;MACLG,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAID,YAAY,EAAE;UAChBA,YAAY,CAACC,MAAM,CAAC,CAAC;UACrBD,YAAY,GAAG,IAAI;QACrB;;QAEA;QACA,IAAI,IAAI,CAACV,aAAa,CAACC,SAAS,CAAC,IAAI,CAAC,EAAE;UACtC,IAAI,CAACW,mBAAmB,CAACL,EAAE,EAAEN,SAAS,CAAC;QACzC;MACF;IACF,CAAC;EACH;EAEAY,kBAAkBA,CAACN,EAAU,EAAEN,SAAiB,EAAE;IAChDR,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,oDAAoD,EAAE;MACpEE,EAAE;MACFN;IACF,CAAC,CAAC;;IAEF;IACA,IAAI,CAACW,mBAAmB,CAACL,EAAE,EAAEN,SAAS,CAAC;IAEvC,OAAO,IAAI,CAACF,mBAAmB,CAACc,kBAAkB,CAACZ,SAAS,CAAC;EAC/D;EAEQQ,kBAAkBA,CAACF,EAAU,EAAEN,SAAiB,EAAE;IACxDR,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,oDAAoD,EAAE;MACpEE,EAAE;MACFN;IACF,CAAC,CAAC;IACF,IAAI,CAACH,aAAa,CAACgB,WAAW,CAAC;MAAEP,EAAE;MAAEN;IAAU,CAAC,CAAC;EACnD;EAEQW,mBAAmBA,CAACL,EAAU,EAAEN,SAAiB,EAAE;IACzDR,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEY,OAAO,CAAC,qDAAqD,EAAE;MACrEE,EAAE;MACFN;IACF,CAAC,CAAC;IACF,IAAI,CAACH,aAAa,CAACiB,YAAY,CAAC;MAAER,EAAE;MAAEN;IAAU,CAAC,CAAC;EACpD;AACF","ignoreList":[]}
@@ -13,6 +13,6 @@ export let HMSPeerType = /*#__PURE__*/function (HMSPeerType) {
13
13
  HMSPeerType["SIP"] = "SIP";
14
14
  HMSPeerType["REGULAR"] = "REGULAR";
15
15
  return HMSPeerType;
16
- }({}); // Represents a regular peer, such as a standard user in a video call.
16
+ }({});
17
17
  export const HMSPeerTypeOrdinals = new Map([['0', HMSPeerType.SIP], ['1', HMSPeerType.REGULAR]]);
18
18
  //# sourceMappingURL=HMSPeerType.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HMSPeerType","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAEA;AAGvB,OAAO,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEF,WAAW,CAACG,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEH,WAAW,CAACI,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["HMSPeerType","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,OAAO,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEF,WAAW,CAACG,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEH,WAAW,CAACI,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
@@ -139,10 +139,8 @@ export class HMSSessionStore {
139
139
  this._addedKeyChangeListenerCount -= 1;
140
140
  if (this._addedKeyChangeListenerCount <= 0) {
141
141
  this._addedKeyChangeListenerCount = 0;
142
- if (this._deviceEventEmitterSubscription && typeof this._deviceEventEmitterSubscription.remove === 'function') {
142
+ if (this._deviceEventEmitterSubscription) {
143
143
  this._deviceEventEmitterSubscription.remove();
144
- } else {
145
- DeviceEventEmitter.removeListener(HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
146
144
  }
147
145
  this._deviceEventEmitterSubscription = undefined;
148
146
  this._eventEmitter = undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription.remove();\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import type { StyleProp, NativeSyntheticEvent, ViewStyle, NativeMethods } from 'react-native';
2
3
  import type { HMSHLSPlayerCuesEvent, HMSHLSPlayerPlaybackEvent, HMSHLSPlayerStatsEvent, RequestedDataEvent } from '../../types';
3
4
  export type HmsHlsPlaybackEventHandler = (event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@100mslive/react-native-hms",
3
- "version": "1.11.0",
3
+ "version": "1.12.1",
4
4
  "description": "Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms React Native SDK. With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -111,7 +111,10 @@
111
111
  "teams",
112
112
  "ai"
113
113
  ],
114
- "repository": "https://github.com/100mslive/100ms-react-native",
114
+ "repository": {
115
+ "type": "git",
116
+ "url": "git+https://github.com/100mslive/100ms-react-native.git"
117
+ },
115
118
  "author": "Yogesh <yogesh@100ms.live> (https://www.100ms.live/)",
116
119
  "license": "MIT",
117
120
  "bugs": {
@@ -125,7 +128,7 @@
125
128
  "@commitlint/config-conventional": "^11.0.0",
126
129
  "@react-native-community/eslint-config": "^2.0.0",
127
130
  "@types/jest": "^26.0.0",
128
- "@types/react": "^16.9.19",
131
+ "@types/react": "^18.3.1",
129
132
  "@types/react-native": "^0.64.5",
130
133
  "commitlint": "^11.0.0",
131
134
  "eslint": "^7.2.0",
@@ -134,15 +137,15 @@
134
137
  "husky": "^4.2.5",
135
138
  "jest": "^26.0.1",
136
139
  "prettier": "^2.0.5",
137
- "react": "17.0.1",
138
- "react-native": "0.64.4",
140
+ "react": "18.2.0",
141
+ "react-native": "0.73.11",
139
142
  "react-native-builder-bob": "^0.18.0",
140
143
  "typedoc": "^0.24.7",
141
144
  "typescript": "^4.6.3"
142
145
  },
143
146
  "peerDependencies": {
144
147
  "react": "*",
145
- "react-native": "*"
148
+ "react-native": ">=0.77.3"
146
149
  },
147
150
  "jest": {
148
151
  "preset": "react-native",
@@ -206,6 +209,9 @@
206
209
  ]
207
210
  ]
208
211
  },
212
+ "overrides": {
213
+ "fast-xml-parser": "^5.3.4"
214
+ },
209
215
  "dependencies": {
210
216
  "zustand": "^4.3.8"
211
217
  }
@@ -7,16 +7,26 @@ Pod::Spec.new do |s|
7
7
  s.name = "react-native-hms"
8
8
  s.version = package["version"]
9
9
  s.summary = package["description"]
10
+ s.description = package["description"]
10
11
  s.homepage = package["homepage"]
11
12
  s.license = package["license"]
12
13
  s.authors = package["author"]
13
14
 
14
- s.platforms = { :ios => "12.0" }
15
+ s.platforms = { :ios => "16.0" }
15
16
  s.source = { :git => "https://github.com/100mslive/100ms-react-native.git", :tag => "#{s.version}" }
16
17
 
17
18
  s.source_files = "ios/**/*.{h,m,mm,swift}"
19
+ s.requires_arc = true
20
+ s.swift_version = "5.0"
18
21
 
19
- s.dependency "React-Core"
22
+ # Use modern dependency installation if available, otherwise fallback to React-Core
23
+ if defined?(install_modules_dependencies()) != nil
24
+ install_modules_dependencies(s)
25
+ else
26
+ s.dependency "React-Core"
27
+ end
28
+
29
+ # 100ms SDK dependencies
20
30
  s.dependency "HMSSDK", sdkVersions["ios"]
21
31
  s.dependency 'HMSBroadcastExtensionSDK', sdkVersions["iOSBroadcastExtension"]
22
32
  s.dependency 'HMSHLSPlayerSDK', sdkVersions["iOSHMSHLSPlayer"]
package/sdk-versions.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "ios": "1.16.5",
3
- "iOSBroadcastExtension": "0.0.9",
2
+ "ios": "1.17.0",
3
+ "iOSBroadcastExtension": "1.0.1",
4
4
  "iOSHMSHLSPlayer": "0.0.2",
5
5
  "iOSNoiseCancellationModels": "1.0.0",
6
- "android": "2.9.69"
6
+ "android": "2.9.78"
7
7
  }
@@ -61,15 +61,9 @@ export class HMSNativeEventEmitter {
61
61
 
62
62
  return {
63
63
  remove: () => {
64
- if (
65
- subscription &&
66
- Object.getOwnPropertyNames(subscription).includes('remove') &&
67
- typeof subscription.remove === 'function'
68
- ) {
64
+ if (subscription) {
69
65
  subscription.remove();
70
66
  subscription = null;
71
- } else {
72
- this._nativeEventEmitter.removeListener(eventType, listener);
73
67
  }
74
68
 
75
69
  // disable `eventType` on `HMSSDK`, if all listeners has been removed
@@ -168,16 +168,8 @@ export class HMSSessionStore {
168
168
 
169
169
  if (this._addedKeyChangeListenerCount <= 0) {
170
170
  this._addedKeyChangeListenerCount = 0;
171
- if (
172
- this._deviceEventEmitterSubscription &&
173
- typeof this._deviceEventEmitterSubscription.remove === 'function'
174
- ) {
171
+ if (this._deviceEventEmitterSubscription) {
175
172
  this._deviceEventEmitterSubscription.remove();
176
- } else {
177
- DeviceEventEmitter.removeListener(
178
- HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,
179
- this._deviceEventEmitterListener
180
- );
181
173
  }
182
174
 
183
175
  this._deviceEventEmitterSubscription = undefined;
@@ -1 +0,0 @@
1
- sdk.dir=/Users/yogesh/Library/Android/sdk
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Workspace
3
- version = "1.0">
4
- <FileRef
5
- location = "self:">
6
- </FileRef>
7
- </Workspace>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>IDEDidComputeMac32BitWarning</key>
6
- <true/>
7
- </dict>
8
- </plist>
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>SchemeUserState</key>
6
- <dict>
7
- <key>Hmssdk.xcscheme_^#shared#^_</key>
8
- <dict>
9
- <key>orderHint</key>
10
- <integer>0</integer>
11
- </dict>
12
- </dict>
13
- </dict>
14
- </plist>