@livekit/react-native 2.9.5 → 2.9.7

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 (139) hide show
  1. package/README.md +7 -5
  2. package/ios/LivekitReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  3. package/ios/LivekitReactNative.xcodeproj/xcuserdata/davidliu.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  4. package/lib/commonjs/LKNativeModule.js.map +1 -1
  5. package/lib/commonjs/audio/AudioManager.js +1 -2
  6. package/lib/commonjs/audio/AudioManager.js.map +1 -1
  7. package/lib/commonjs/audio/AudioSession.js +105 -100
  8. package/lib/commonjs/audio/AudioSession.js.map +1 -1
  9. package/lib/commonjs/audio/MediaRecorder.js +11 -17
  10. package/lib/commonjs/audio/MediaRecorder.js.map +1 -1
  11. package/lib/commonjs/components/BarVisualizer.js +8 -8
  12. package/lib/commonjs/components/BarVisualizer.js.map +1 -1
  13. package/lib/commonjs/components/LiveKitRoom.js +11 -7
  14. package/lib/commonjs/components/LiveKitRoom.js.map +1 -1
  15. package/lib/commonjs/components/VideoTrack.js +34 -47
  16. package/lib/commonjs/components/VideoTrack.js.map +1 -1
  17. package/lib/commonjs/components/VideoView.js +36 -48
  18. package/lib/commonjs/components/VideoView.js.map +1 -1
  19. package/lib/commonjs/components/ViewPortDetector.js +71 -79
  20. package/lib/commonjs/components/ViewPortDetector.js.map +1 -1
  21. package/lib/commonjs/e2ee/RNE2EEManager.js +8 -15
  22. package/lib/commonjs/e2ee/RNE2EEManager.js.map +1 -1
  23. package/lib/commonjs/e2ee/RNKeyProvider.js +1 -5
  24. package/lib/commonjs/e2ee/RNKeyProvider.js.map +1 -1
  25. package/lib/commonjs/events/EventEmitter.js +2 -4
  26. package/lib/commonjs/events/EventEmitter.js.map +1 -1
  27. package/lib/commonjs/hooks/useE2EEManager.js.map +1 -1
  28. package/lib/commonjs/hooks/useMultibandTrackVolume.js +4 -5
  29. package/lib/commonjs/hooks/useMultibandTrackVolume.js.map +1 -1
  30. package/lib/commonjs/hooks/useTrackVolume.js +4 -5
  31. package/lib/commonjs/hooks/useTrackVolume.js.map +1 -1
  32. package/lib/commonjs/hooks.js.map +1 -1
  33. package/lib/commonjs/index.js +3 -6
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/logger.js.map +1 -1
  36. package/lib/commonjs/package.json +1 -0
  37. package/lib/commonjs/polyfills/EncoderDecoderTogether.min.js.map +1 -1
  38. package/lib/commonjs/polyfills/MediaRecorderShim.js.map +1 -1
  39. package/lib/commonjs/useParticipant.js.map +1 -1
  40. package/lib/commonjs/useRoom.js +4 -6
  41. package/lib/commonjs/useRoom.js.map +1 -1
  42. package/lib/module/LKNativeModule.js +2 -0
  43. package/lib/module/LKNativeModule.js.map +1 -1
  44. package/lib/module/audio/AudioManager.js +2 -0
  45. package/lib/module/audio/AudioManager.js.map +1 -1
  46. package/lib/module/audio/AudioSession.js +107 -100
  47. package/lib/module/audio/AudioSession.js.map +1 -1
  48. package/lib/module/audio/MediaRecorder.js +13 -17
  49. package/lib/module/audio/MediaRecorder.js.map +1 -1
  50. package/lib/module/components/BarVisualizer.js +9 -6
  51. package/lib/module/components/BarVisualizer.js.map +1 -1
  52. package/lib/module/components/LiveKitRoom.js +12 -6
  53. package/lib/module/components/LiveKitRoom.js.map +1 -1
  54. package/lib/module/components/VideoTrack.js +35 -45
  55. package/lib/module/components/VideoTrack.js.map +1 -1
  56. package/lib/module/components/VideoView.js +37 -46
  57. package/lib/module/components/VideoView.js.map +1 -1
  58. package/lib/module/components/ViewPortDetector.js +71 -77
  59. package/lib/module/components/ViewPortDetector.js.map +1 -1
  60. package/lib/module/e2ee/RNE2EEManager.js +10 -15
  61. package/lib/module/e2ee/RNE2EEManager.js.map +1 -1
  62. package/lib/module/e2ee/RNKeyProvider.js +3 -5
  63. package/lib/module/e2ee/RNKeyProvider.js.map +1 -1
  64. package/lib/module/events/EventEmitter.js +4 -4
  65. package/lib/module/events/EventEmitter.js.map +1 -1
  66. package/lib/module/hooks/useE2EEManager.js +2 -0
  67. package/lib/module/hooks/useE2EEManager.js.map +1 -1
  68. package/lib/module/hooks/useMultibandTrackVolume.js +6 -5
  69. package/lib/module/hooks/useMultibandTrackVolume.js.map +1 -1
  70. package/lib/module/hooks/useTrackVolume.js +6 -5
  71. package/lib/module/hooks/useTrackVolume.js.map +1 -1
  72. package/lib/module/hooks.js +2 -0
  73. package/lib/module/hooks.js.map +1 -1
  74. package/lib/module/index.js +4 -4
  75. package/lib/module/index.js.map +1 -1
  76. package/lib/module/logger.js +2 -0
  77. package/lib/module/logger.js.map +1 -1
  78. package/lib/module/polyfills/EncoderDecoderTogether.min.js.map +1 -1
  79. package/lib/module/polyfills/MediaRecorderShim.js +2 -0
  80. package/lib/module/polyfills/MediaRecorderShim.js.map +1 -1
  81. package/lib/module/useParticipant.js +2 -0
  82. package/lib/module/useParticipant.js.map +1 -1
  83. package/lib/module/useRoom.js +6 -6
  84. package/lib/module/useRoom.js.map +1 -1
  85. package/lib/typescript/{LKNativeModule.d.ts → src/LKNativeModule.d.ts} +1 -0
  86. package/lib/typescript/src/LKNativeModule.d.ts.map +1 -0
  87. package/lib/typescript/{audio → src/audio}/AudioManager.d.ts +1 -0
  88. package/lib/typescript/src/audio/AudioManager.d.ts.map +1 -0
  89. package/lib/typescript/{audio → src/audio}/AudioSession.d.ts +1 -0
  90. package/lib/typescript/src/audio/AudioSession.d.ts.map +1 -0
  91. package/lib/typescript/{audio → src/audio}/MediaRecorder.d.ts +1 -0
  92. package/lib/typescript/src/audio/MediaRecorder.d.ts.map +1 -0
  93. package/lib/typescript/{components → src/components}/BarVisualizer.d.ts +2 -2
  94. package/lib/typescript/src/components/BarVisualizer.d.ts.map +1 -0
  95. package/lib/typescript/{components → src/components}/LiveKitRoom.d.ts +2 -1
  96. package/lib/typescript/src/components/LiveKitRoom.d.ts.map +1 -0
  97. package/lib/typescript/{components → src/components}/VideoTrack.d.ts +2 -2
  98. package/lib/typescript/src/components/VideoTrack.d.ts.map +1 -0
  99. package/lib/typescript/{components → src/components}/VideoView.d.ts +2 -2
  100. package/lib/typescript/src/components/VideoView.d.ts.map +1 -0
  101. package/lib/typescript/{components → src/components}/ViewPortDetector.d.ts +3 -2
  102. package/lib/typescript/src/components/ViewPortDetector.d.ts.map +1 -0
  103. package/lib/typescript/{e2ee → src/e2ee}/RNE2EEManager.d.ts +1 -0
  104. package/lib/typescript/src/e2ee/RNE2EEManager.d.ts.map +1 -0
  105. package/lib/typescript/{e2ee → src/e2ee}/RNKeyProvider.d.ts +1 -0
  106. package/lib/typescript/src/e2ee/RNKeyProvider.d.ts.map +1 -0
  107. package/lib/typescript/{events → src/events}/EventEmitter.d.ts +1 -0
  108. package/lib/typescript/src/events/EventEmitter.d.ts.map +1 -0
  109. package/lib/typescript/{hooks → src/hooks}/useE2EEManager.d.ts +1 -0
  110. package/lib/typescript/src/hooks/useE2EEManager.d.ts.map +1 -0
  111. package/lib/typescript/{hooks → src/hooks}/useMultibandTrackVolume.d.ts +1 -0
  112. package/lib/typescript/src/hooks/useMultibandTrackVolume.d.ts.map +1 -0
  113. package/lib/typescript/{hooks → src/hooks}/useTrackVolume.d.ts +1 -0
  114. package/lib/typescript/src/hooks/useTrackVolume.d.ts.map +1 -0
  115. package/lib/typescript/{hooks.d.ts → src/hooks.d.ts} +1 -0
  116. package/lib/typescript/src/hooks.d.ts.map +1 -0
  117. package/lib/typescript/{index.d.ts → src/index.d.ts} +1 -0
  118. package/lib/typescript/src/index.d.ts.map +1 -0
  119. package/lib/typescript/{logger.d.ts → src/logger.d.ts} +1 -0
  120. package/lib/typescript/src/logger.d.ts.map +1 -0
  121. package/lib/typescript/src/polyfills/MediaRecorderShim.d.ts +2 -0
  122. package/lib/typescript/src/polyfills/MediaRecorderShim.d.ts.map +1 -0
  123. package/lib/typescript/{useParticipant.d.ts → src/useParticipant.d.ts} +1 -0
  124. package/lib/typescript/src/useParticipant.d.ts.map +1 -0
  125. package/lib/typescript/{useRoom.d.ts → src/useRoom.d.ts} +1 -0
  126. package/lib/typescript/src/useRoom.d.ts.map +1 -0
  127. package/package.json +41 -57
  128. package/src/audio/MediaRecorder.ts +2 -2
  129. package/src/components/BarVisualizer.tsx +2 -2
  130. package/src/components/VideoTrack.tsx +0 -2
  131. package/src/components/VideoView.tsx +0 -2
  132. package/src/components/ViewPortDetector.tsx +1 -1
  133. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  134. package/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  135. package/android/gradlew +0 -249
  136. package/android/gradlew.bat +0 -92
  137. package/android/local.properties +0 -8
  138. package/lib/typescript/polyfills/EncoderDecoderTogether.min.d.ts +0 -0
  139. package/lib/typescript/polyfills/MediaRecorderShim.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","LocalVideoTrack","TrackEvent","RTCView","useCallback","useEffect","useMemo","useState","RemoteVideoTrack","ViewPortDetector","VideoView","style","videoTrack","objectFit","zOrder","mirror","elementInfo","info","VideoViewElementInfo","id","sid","something","layoutOnChange","event","onLayout","visibilityOnChange","isVisible","onVisibility","shouldObserveVisibility","isAdaptiveStream","mediaStream","setMediaStream","onRestarted","track","on","Restarted","off","observeElementInfo","stopObservingElementInfo","createElement","styles","container","onChange","videoView","disabled","propKey","streamURL","toURL","create","flex","width","constructor","_defineProperty","_width","_height","observe","_observing","stopObserving","height","nativeEvent","layout","_this$handleResize","handleResize","call","visible","visibilityChangedAt","Date","now","_this$handleVisibilit","handleVisibilityChanged"],"sources":["VideoView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n type LayoutChangeEvent,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport {\n type ElementInfo,\n LocalVideoTrack,\n Track,\n TrackEvent,\n type VideoTrack,\n} from 'livekit-client';\nimport { RTCView } from '@livekit/react-native-webrtc';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RemoteVideoTrack } from 'livekit-client';\nimport ViewPortDetector from './ViewPortDetector';\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport type Props = {\n videoTrack?: VideoTrack | undefined;\n style?: ViewStyle;\n objectFit?: 'cover' | 'contain' | undefined;\n mirror?: boolean;\n zOrder?: number;\n};\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport const VideoView = ({\n style = {},\n videoTrack,\n objectFit = 'cover',\n zOrder,\n mirror,\n}: Props) => {\n const [elementInfo] = useState(() => {\n let info = new VideoViewElementInfo();\n info.id = videoTrack?.sid;\n info.something = videoTrack;\n return info;\n });\n\n const layoutOnChange = useCallback(\n (event: LayoutChangeEvent) => elementInfo.onLayout(event),\n [elementInfo]\n );\n const visibilityOnChange = useCallback(\n (isVisible: boolean) => elementInfo.onVisibility(isVisible),\n [elementInfo]\n );\n const shouldObserveVisibility = useMemo(() => {\n return (\n videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream\n );\n }, [videoTrack]);\n\n const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);\n useEffect(() => {\n setMediaStream(videoTrack?.mediaStream);\n if (videoTrack instanceof LocalVideoTrack) {\n const onRestarted = (track: Track | null) => {\n setMediaStream(track?.mediaStream);\n };\n videoTrack.on(TrackEvent.Restarted, onRestarted);\n\n return () => {\n videoTrack.off(TrackEvent.Restarted, onRestarted);\n };\n } else {\n return () => {};\n }\n }, [videoTrack]);\n\n useEffect(() => {\n if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {\n videoTrack?.observeElementInfo(elementInfo);\n return () => {\n videoTrack?.stopObservingElementInfo(elementInfo);\n };\n } else {\n return () => {};\n }\n }, [videoTrack, elementInfo]);\n\n return (\n <View style={{ ...style, ...styles.container }} onLayout={layoutOnChange}>\n <ViewPortDetector\n onChange={visibilityOnChange}\n style={styles.videoView}\n disabled={!shouldObserveVisibility}\n propKey={videoTrack}\n >\n <RTCView\n style={styles.videoView}\n // @ts-expect-error\n streamURL={mediaStream?.toURL() ?? ''}\n objectFit={objectFit}\n zOrder={zOrder}\n mirror={mirror}\n />\n </ViewPortDetector>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n videoView: {\n flex: 1,\n width: '100%',\n },\n});\n\nclass VideoViewElementInfo implements ElementInfo {\n element: object = {};\n something?: any;\n id?: string;\n _width = 0;\n _height = 0;\n _observing = false;\n visible: boolean = true;\n visibilityChangedAt: number | undefined;\n pictureInPicture = false;\n handleResize?: (() => void) | undefined;\n handleVisibilityChanged?: (() => void) | undefined;\n width = () => this._width;\n height = () => this._height;\n\n observe(): void {\n this._observing = true;\n }\n stopObserving(): void {\n this._observing = false;\n }\n\n onLayout(event: LayoutChangeEvent) {\n let { width, height } = event.nativeEvent.layout;\n this._width = width;\n this._height = height;\n\n if (this._observing) {\n this.handleResize?.();\n }\n }\n onVisibility(isVisible: boolean) {\n if (this.visible !== isVisible) {\n this.visible = isVisible;\n this.visibilityChangedAt = Date.now();\n if (this._observing) {\n this.handleVisibilityChanged?.();\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","View","LocalVideoTrack","TrackEvent","RTCView","useCallback","useEffect","useMemo","useState","RemoteVideoTrack","ViewPortDetector","jsx","_jsx","VideoView","style","videoTrack","objectFit","zOrder","mirror","elementInfo","info","VideoViewElementInfo","id","sid","something","layoutOnChange","event","onLayout","visibilityOnChange","isVisible","onVisibility","shouldObserveVisibility","isAdaptiveStream","mediaStream","setMediaStream","onRestarted","track","on","Restarted","off","observeElementInfo","stopObservingElementInfo","styles","container","children","onChange","videoView","disabled","propKey","streamURL","toURL","create","flex","width","element","_width","_height","_observing","visible","pictureInPicture","height","observe","stopObserving","nativeEvent","layout","handleResize","visibilityChangedAt","Date","now","handleVisibilityChanged"],"sourceRoot":"../../../src","sources":["components/VideoView.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,13 @@
1
1
  'use strict';
2
2
 
3
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
4
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
- import React, { Component } from 'react';
3
+ import { Component } from 'react';
8
4
  import { AppState, View } from 'react-native';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
9
6
  const DEFAULT_DELAY = 1000;
10
7
  class TimeoutHandler {
11
- constructor() {
12
- _defineProperty(this, "handlerRef", {
13
- id: -1
14
- });
15
- }
8
+ handlerRef = {
9
+ id: -1
10
+ };
16
11
  get handler() {
17
12
  return this.handlerRef.id;
18
13
  }
@@ -46,70 +41,13 @@ function setIntervalWithTimeout(callback, intervalMs, handleWrapper = new Timeou
46
41
  * Will not fire visibility changes for zero width/height components.
47
42
  */
48
43
  export default class ViewPortDetector extends Component {
44
+ lastValue = null;
45
+ interval = null;
46
+ view = null;
47
+ lastAppStateActive = false;
48
+ appStateSubscription = null;
49
49
  constructor(props) {
50
50
  super(props);
51
- _defineProperty(this, "lastValue", null);
52
- _defineProperty(this, "interval", null);
53
- _defineProperty(this, "view", null);
54
- _defineProperty(this, "lastAppStateActive", false);
55
- _defineProperty(this, "appStateSubscription", null);
56
- _defineProperty(this, "hasValidTimeout", (disabled, delay) => {
57
- let disabledValue = disabled ?? false;
58
- let delayValue = delay ?? DEFAULT_DELAY;
59
- return AppState.currentState === 'active' && !disabledValue && delayValue > 0;
60
- });
61
- _defineProperty(this, "handleAppStateChange", nextAppState => {
62
- let nextAppStateActive = nextAppState === 'active';
63
- if (this.lastAppStateActive !== nextAppStateActive) {
64
- this.checkVisibility();
65
- }
66
- this.lastAppStateActive = nextAppStateActive;
67
- if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
68
- this.stopWatching();
69
- } else {
70
- this.startWatching();
71
- }
72
- });
73
- _defineProperty(this, "startWatching", () => {
74
- if (this.interval) {
75
- return;
76
- }
77
- this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
78
- });
79
- _defineProperty(this, "stopWatching", () => {
80
- var _this$interval;
81
- (_this$interval = this.interval) === null || _this$interval === void 0 || _this$interval.clear();
82
- this.interval = null;
83
- });
84
- _defineProperty(this, "checkVisibility", () => {
85
- if (!this.view) {
86
- return;
87
- }
88
- if (AppState.currentState !== 'active') {
89
- this.updateVisibility(false);
90
- return;
91
- }
92
- this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
93
- this.checkInViewPort(width, height);
94
- });
95
- });
96
- _defineProperty(this, "checkInViewPort", (width, height) => {
97
- let isVisible;
98
- // Not visible if any of these are missing.
99
- if (!width || !height) {
100
- isVisible = false;
101
- } else {
102
- isVisible = true;
103
- }
104
- this.updateVisibility(isVisible);
105
- });
106
- _defineProperty(this, "updateVisibility", isVisible => {
107
- if (this.lastValue !== isVisible) {
108
- var _this$props$onChange, _this$props;
109
- this.lastValue = isVisible;
110
- (_this$props$onChange = (_this$props = this.props).onChange) === null || _this$props$onChange === void 0 || _this$props$onChange.call(_this$props, isVisible);
111
- }
112
- });
113
51
  this.state = {
114
52
  rectTop: 0,
115
53
  rectBottom: 0
@@ -123,11 +61,15 @@ export default class ViewPortDetector extends Component {
123
61
  }
124
62
  }
125
63
  componentWillUnmount() {
126
- var _this$appStateSubscri;
127
- (_this$appStateSubscri = this.appStateSubscription) === null || _this$appStateSubscri === void 0 || _this$appStateSubscri.remove();
64
+ this.appStateSubscription?.remove();
128
65
  this.appStateSubscription = null;
129
66
  this.stopWatching();
130
67
  }
68
+ hasValidTimeout = (disabled, delay) => {
69
+ let disabledValue = disabled ?? false;
70
+ let delayValue = delay ?? DEFAULT_DELAY;
71
+ return AppState.currentState === 'active' && !disabledValue && delayValue > 0;
72
+ };
131
73
  UNSAFE_componentWillReceiveProps(nextProps) {
132
74
  if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {
133
75
  this.stopWatching();
@@ -138,13 +80,65 @@ export default class ViewPortDetector extends Component {
138
80
  this.startWatching();
139
81
  }
140
82
  }
83
+ handleAppStateChange = nextAppState => {
84
+ let nextAppStateActive = nextAppState === 'active';
85
+ if (this.lastAppStateActive !== nextAppStateActive) {
86
+ this.checkVisibility();
87
+ }
88
+ this.lastAppStateActive = nextAppStateActive;
89
+ if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
90
+ this.stopWatching();
91
+ } else {
92
+ this.startWatching();
93
+ }
94
+ };
95
+ startWatching = () => {
96
+ if (this.interval) {
97
+ return;
98
+ }
99
+ this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
100
+ };
101
+ stopWatching = () => {
102
+ this.interval?.clear();
103
+ this.interval = null;
104
+ };
105
+ checkVisibility = () => {
106
+ if (!this.view) {
107
+ return;
108
+ }
109
+ if (AppState.currentState !== 'active') {
110
+ this.updateVisibility(false);
111
+ return;
112
+ }
113
+ this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
114
+ this.checkInViewPort(width, height);
115
+ });
116
+ };
117
+ checkInViewPort = (width, height) => {
118
+ let isVisible;
119
+ // Not visible if any of these are missing.
120
+ if (!width || !height) {
121
+ isVisible = false;
122
+ } else {
123
+ isVisible = true;
124
+ }
125
+ this.updateVisibility(isVisible);
126
+ };
127
+ updateVisibility = isVisible => {
128
+ if (this.lastValue !== isVisible) {
129
+ this.lastValue = isVisible;
130
+ this.props.onChange?.(isVisible);
131
+ }
132
+ };
141
133
  render() {
142
- return /*#__PURE__*/React.createElement(View, _extends({
134
+ return /*#__PURE__*/_jsx(View, {
143
135
  collapsable: false,
144
136
  ref: component => {
145
137
  this.view = component;
146
- }
147
- }, this.props), this.props.children);
138
+ },
139
+ ...this.props,
140
+ children: this.props.children
141
+ });
148
142
  }
149
143
  }
150
144
  //# sourceMappingURL=ViewPortDetector.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","React","Component","AppState","View","DEFAULT_DELAY","TimeoutHandler","constructor","id","handler","handlerRef","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","props","disabled","delay","disabledValue","delayValue","currentState","nextAppState","nextAppStateActive","lastAppStateActive","checkVisibility","hasValidTimeout","stopWatching","startWatching","interval","_this$interval","view","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","lastValue","_this$props$onChange","_this$props","onChange","state","rectTop","rectBottom","componentDidMount","appStateSubscription","addEventListener","handleAppStateChange","componentWillUnmount","_this$appStateSubscri","remove","UNSAFE_componentWillReceiveProps","nextProps","propKey","render","createElement","collapsable","ref","component","children"],"sources":["ViewPortDetector.tsx"],"sourcesContent":["'use strict';\n\nimport React, { Component, type PropsWithChildren } from 'react';\nimport {\n AppState,\n type AppStateStatus,\n type NativeEventSubscription,\n View,\n type ViewStyle,\n} from 'react-native';\n\nconst DEFAULT_DELAY = 1000;\n\nexport type Props = {\n disabled?: boolean;\n style?: ViewStyle;\n onChange?: (isVisible: boolean) => void;\n delay?: number;\n propKey?: any;\n};\n\nclass TimeoutHandler {\n private handlerRef: { id: any } = { id: -1 };\n\n get handler(): any {\n return this.handlerRef.id;\n }\n set handler(n: any) {\n this.handlerRef.id = n;\n }\n\n clear() {\n clearTimeout(this.handlerRef.id as any);\n }\n}\n\nfunction setIntervalWithTimeout(\n callback: (clear: () => void) => any,\n intervalMs: number,\n handleWrapper = new TimeoutHandler()\n): TimeoutHandler {\n let cleared = false;\n\n const timeout = () => {\n handleWrapper.handler = setTimeout(() => {\n callback(() => {\n cleared = true;\n handleWrapper.clear();\n });\n if (!cleared) {\n timeout();\n }\n }, intervalMs);\n };\n timeout();\n return handleWrapper;\n}\n\n/**\n * Detects when this is in the viewport and visible.\n *\n * Will not fire visibility changes for zero width/height components.\n */\nexport default class ViewPortDetector extends Component<\n PropsWithChildren<Props>\n> {\n private lastValue: boolean | null = null;\n private interval: TimeoutHandler | null = null;\n private view: View | null = null;\n private lastAppStateActive = false;\n private appStateSubscription: NativeEventSubscription | null = null;\n\n constructor(props: Props) {\n super(props);\n this.state = { rectTop: 0, rectBottom: 0 };\n }\n\n componentDidMount() {\n this.lastAppStateActive = AppState.currentState === 'active';\n this.appStateSubscription = AppState.addEventListener(\n 'change',\n this.handleAppStateChange\n );\n if (this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.startWatching();\n }\n }\n\n componentWillUnmount() {\n this.appStateSubscription?.remove();\n this.appStateSubscription = null;\n this.stopWatching();\n }\n\n hasValidTimeout = (disabled?: boolean, delay?: number): boolean => {\n let disabledValue = disabled ?? false;\n let delayValue = delay ?? DEFAULT_DELAY;\n return (\n AppState.currentState === 'active' && !disabledValue && delayValue > 0\n );\n };\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {\n this.stopWatching();\n } else {\n if (this.props.propKey !== nextProps.propKey) {\n this.lastValue = null;\n }\n this.startWatching();\n }\n }\n handleAppStateChange = (nextAppState: AppStateStatus) => {\n let nextAppStateActive = nextAppState === 'active';\n if (this.lastAppStateActive !== nextAppStateActive) {\n this.checkVisibility();\n }\n this.lastAppStateActive = nextAppStateActive;\n\n if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.stopWatching();\n } else {\n this.startWatching();\n }\n };\n\n startWatching = () => {\n if (this.interval) {\n return;\n }\n this.interval = setIntervalWithTimeout(\n this.checkVisibility,\n this.props.delay || DEFAULT_DELAY\n );\n };\n\n stopWatching = () => {\n this.interval?.clear();\n this.interval = null;\n };\n\n checkVisibility = () => {\n if (!this.view) {\n return;\n }\n\n if (AppState.currentState !== 'active') {\n this.updateVisibility(false);\n return;\n }\n\n this.view.measure((_x, _y, width, height, _pageX, _pageY) => {\n this.checkInViewPort(width, height);\n });\n };\n checkInViewPort = (width?: number, height?: number) => {\n let isVisible: boolean;\n // Not visible if any of these are missing.\n if (!width || !height) {\n isVisible = false;\n } else {\n isVisible = true;\n }\n this.updateVisibility(isVisible);\n };\n\n updateVisibility = (isVisible: boolean) => {\n if (this.lastValue !== isVisible) {\n this.lastValue = isVisible;\n this.props.onChange?.(isVisible);\n }\n };\n render() {\n return (\n <View\n collapsable={false}\n ref={(component) => {\n this.view = component;\n }}\n {...this.props}\n >\n {this.props.children}\n </View>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Component","AppState","View","jsx","_jsx","DEFAULT_DELAY","TimeoutHandler","handlerRef","id","handler","n","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","lastValue","interval","view","lastAppStateActive","appStateSubscription","constructor","props","state","rectTop","rectBottom","componentDidMount","currentState","addEventListener","handleAppStateChange","hasValidTimeout","disabled","delay","startWatching","componentWillUnmount","remove","stopWatching","disabledValue","delayValue","UNSAFE_componentWillReceiveProps","nextProps","propKey","nextAppState","nextAppStateActive","checkVisibility","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","onChange","render","collapsable","ref","component","children"],"sourceRoot":"../../../src","sources":["components/ViewPortDetector.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
+ "use strict";
2
+
4
3
  import { RTCDataPacketCryptorFactory, RTCFrameCryptorAlgorithm, RTCFrameCryptorFactory } from '@livekit/react-native-webrtc';
5
4
  import { ParticipantEvent, RoomEvent, EncryptionEvent, Mutex } from 'livekit-client';
6
5
  import EventEmitter from 'events';
@@ -8,16 +7,14 @@ import EventEmitter from 'events';
8
7
  * @experimental
9
8
  */
10
9
  export default class RNE2EEManager extends EventEmitter {
10
+ frameCryptors = new Map();
11
+ algorithm = RTCFrameCryptorAlgorithm.kAesGcm;
12
+ encryptionEnabled = false;
13
+ dataChannelEncryptionEnabled = false;
14
+ dataPacketCryptorLock = new Mutex();
15
+ dataPacketCryptor = undefined;
11
16
  constructor(keyProvider, dcEncryptionEnabled = false) {
12
17
  super();
13
- _defineProperty(this, "room", void 0);
14
- _defineProperty(this, "frameCryptors", new Map());
15
- _defineProperty(this, "keyProvider", void 0);
16
- _defineProperty(this, "algorithm", RTCFrameCryptorAlgorithm.kAesGcm);
17
- _defineProperty(this, "encryptionEnabled", false);
18
- _defineProperty(this, "dataChannelEncryptionEnabled", false);
19
- _defineProperty(this, "dataPacketCryptorLock", new Mutex());
20
- _defineProperty(this, "dataPacketCryptor", undefined);
21
18
  this.keyProvider = keyProvider;
22
19
  this.encryptionEnabled = false;
23
20
  this.dataChannelEncryptionEnabled = dcEncryptionEnabled;
@@ -162,13 +159,11 @@ export default class RNE2EEManager extends EventEmitter {
162
159
  // No-op
163
160
  }
164
161
  setParticipantCryptorEnabled(enabled, participantIdentity) {
165
- var _this$room;
166
- if (this.encryptionEnabled !== enabled && participantIdentity === ((_this$room = this.room) === null || _this$room === void 0 ? void 0 : _this$room.localParticipant.identity)) {
162
+ if (this.encryptionEnabled !== enabled && participantIdentity === this.room?.localParticipant.identity) {
167
163
  this.encryptionEnabled = enabled;
168
164
  this.emit(EncryptionEvent.ParticipantEncryptionStatusChanged, enabled, this.room.localParticipant);
169
165
  } else {
170
- var _this$room2;
171
- const participant = (_this$room2 = this.room) === null || _this$room2 === void 0 ? void 0 : _this$room2.getParticipantByIdentity(participantIdentity);
166
+ const participant = this.room?.getParticipantByIdentity(participantIdentity);
172
167
  if (!participant) {
173
168
  throw TypeError(`couldn't set encryption status, participant not found ${participantIdentity}`);
174
169
  }
@@ -1 +1 @@
1
- {"version":3,"names":["RTCDataPacketCryptorFactory","RTCFrameCryptorAlgorithm","RTCFrameCryptorFactory","ParticipantEvent","RoomEvent","EncryptionEvent","Mutex","EventEmitter","RNE2EEManager","constructor","keyProvider","dcEncryptionEnabled","_defineProperty","Map","kAesGcm","undefined","encryptionEnabled","dataChannelEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","value","setup","room","setupEventListeners","localParticipant","on","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","frameCryptors","delete","setEnabled","dispose","TrackSubscribed","_track","pub","participant","setupE2EEReceiver","TrackUnsubscribed","_participant","SignalConnected","TypeError","setParticipantCryptorEnabled","isE2EEEnabled","identity","isEncrypted","createFrameCryptorForSender","track","sender","set","setKeyIndex","getLatestKeyIndex","createFrameCryptorForReceiver","receiver","setSifTrailer","trailer","getDataPacketCryptor","dataPacketCryptor","unlock","dataPacketCryptorLock","lock","createDataPacketCryptor","algorithm","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","_this$room","emit","ParticipantEncryptionStatusChanged","_this$room2","getParticipantByIdentity"],"sources":["RNE2EEManager.ts"],"sourcesContent":["import {\n RTCDataPacketCryptor,\n RTCDataPacketCryptorFactory,\n RTCFrameCryptorAlgorithm,\n RTCFrameCryptorFactory,\n RTCRtpReceiver,\n type RTCEncryptedPacket,\n type RTCFrameCryptor,\n type RTCRtpSender,\n} from '@livekit/react-native-webrtc';\nimport {\n LocalParticipant,\n LocalTrackPublication,\n ParticipantEvent,\n RemoteParticipant,\n RemoteTrackPublication,\n RoomEvent,\n type Room,\n type BaseE2EEManager,\n type E2EEManagerCallbacks,\n EncryptionEvent,\n type DecryptDataResponseMessage,\n type EncryptDataResponseMessage,\n Mutex,\n} from 'livekit-client';\nimport type RNKeyProvider from './RNKeyProvider';\nimport type RTCEngine from 'livekit-client/dist/src/room/RTCEngine';\nimport EventEmitter from 'events';\nimport type TypedEventEmitter from 'typed-emitter';\n\n/**\n * @experimental\n */\nexport default class RNE2EEManager\n extends (EventEmitter as new () => TypedEventEmitter<E2EEManagerCallbacks>)\n implements BaseE2EEManager\n{\n private room?: Room;\n private frameCryptors: Map<string, RTCFrameCryptor> = new Map();\n private keyProvider: RNKeyProvider;\n private algorithm: RTCFrameCryptorAlgorithm =\n RTCFrameCryptorAlgorithm.kAesGcm;\n\n private encryptionEnabled: boolean = false;\n private dataChannelEncryptionEnabled: boolean = false;\n\n private dataPacketCryptorLock = new Mutex();\n private dataPacketCryptor: RTCDataPacketCryptor | undefined = undefined;\n constructor(\n keyProvider: RNKeyProvider,\n dcEncryptionEnabled: boolean = false\n ) {\n super();\n this.keyProvider = keyProvider;\n this.encryptionEnabled = false;\n this.dataChannelEncryptionEnabled = dcEncryptionEnabled;\n }\n\n get isEnabled(): boolean {\n return this.encryptionEnabled;\n }\n get isDataChannelEncryptionEnabled(): boolean {\n return this.isEnabled && this.dataChannelEncryptionEnabled;\n }\n set isDataChannelEncryptionEnabled(value: boolean) {\n this.dataChannelEncryptionEnabled = value;\n }\n\n setup(room: Room) {\n if (this.room !== room) {\n this.room = room;\n this.setupEventListeners(room);\n }\n }\n\n private setupEventListeners(room: Room) {\n room.localParticipant\n .on(ParticipantEvent.LocalTrackPublished, async (publication) => {\n this.setupE2EESender(publication, room.localParticipant);\n })\n .on(ParticipantEvent.LocalTrackUnpublished, async (publication) => {\n let frameCryptor = this.findTrackCryptor(publication.trackSid);\n if (frameCryptor) {\n this.frameCryptors.delete(publication.trackSid);\n await frameCryptor.setEnabled(false);\n await frameCryptor.dispose();\n }\n });\n\n room\n .on(RoomEvent.TrackSubscribed, (_track, pub, participant) => {\n this.setupE2EEReceiver(pub, participant);\n })\n .on(\n RoomEvent.TrackUnsubscribed,\n async (_track, publication, _participant) => {\n let frameCryptor = this.findTrackCryptor(publication.trackSid);\n if (frameCryptor) {\n this.frameCryptors.delete(publication.trackSid);\n await frameCryptor.setEnabled(false);\n await frameCryptor.dispose();\n }\n }\n )\n .on(RoomEvent.SignalConnected, () => {\n if (!this.room) {\n throw new TypeError(`expected room to be present on signal connect`);\n }\n this.setParticipantCryptorEnabled(\n this.room.localParticipant.isE2EEEnabled,\n this.room.localParticipant.identity\n );\n });\n }\n\n private async setupE2EESender(\n publication: LocalTrackPublication,\n participant: LocalParticipant\n ) {\n if (!publication.isEncrypted) {\n return;\n }\n\n var frameCryptor = this.findTrackCryptor(publication.trackSid);\n\n if (!frameCryptor) {\n frameCryptor = this.createFrameCryptorForSender(\n publication.track!.sender,\n participant.identity\n );\n\n this.frameCryptors.set(publication.trackSid, frameCryptor);\n frameCryptor.setEnabled(true);\n frameCryptor.setKeyIndex(\n this.keyProvider.getLatestKeyIndex(participant.identity)\n );\n }\n }\n\n private async setupE2EEReceiver(\n publication: RemoteTrackPublication,\n participant: RemoteParticipant\n ) {\n if (!publication.isEncrypted) {\n return;\n }\n\n var frameCryptor = this.findTrackCryptor(publication.trackSid);\n\n if (!frameCryptor) {\n frameCryptor = this.createFrameCryptorForReceiver(\n publication.track!.receiver,\n participant.identity\n );\n\n this.frameCryptors.set(publication.trackSid, frameCryptor);\n frameCryptor.setEnabled(true);\n frameCryptor.setKeyIndex(\n this.keyProvider.getLatestKeyIndex(participant.identity)\n );\n }\n }\n\n setSifTrailer(trailer: Uint8Array): void {\n this.keyProvider.setSifTrailer(trailer);\n }\n\n private async getDataPacketCryptor(): Promise<RTCDataPacketCryptor> {\n let dataPacketCryptor = this.dataPacketCryptor;\n if (dataPacketCryptor) {\n return dataPacketCryptor;\n }\n\n let unlock = await this.dataPacketCryptorLock.lock();\n\n try {\n dataPacketCryptor = this.dataPacketCryptor;\n if (dataPacketCryptor) {\n return dataPacketCryptor;\n }\n\n dataPacketCryptor =\n await RTCDataPacketCryptorFactory.createDataPacketCryptor(\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n\n this.dataPacketCryptor = dataPacketCryptor;\n return dataPacketCryptor;\n } finally {\n unlock();\n }\n }\n async encryptData(\n data: Uint8Array\n ): Promise<EncryptDataResponseMessage['data']> {\n let room = this.room;\n if (!room) {\n throw new Error(\"e2eemanager isn't setup with room!\");\n }\n\n let participantId = room.localParticipant.identity;\n\n let dataPacketCryptor = await this.getDataPacketCryptor();\n\n let encryptedPacket = await dataPacketCryptor.encrypt(\n participantId,\n this.keyProvider.getLatestKeyIndex(participantId),\n data\n );\n\n if (!encryptedPacket) {\n throw new Error('encryption for packet failed');\n }\n return {\n uuid: '', //not used\n payload: encryptedPacket.payload,\n iv: encryptedPacket.iv,\n keyIndex: encryptedPacket.keyIndex,\n };\n }\n\n async handleEncryptedData(\n payload: Uint8Array,\n iv: Uint8Array,\n participantIdentity: string,\n keyIndex: number\n ): Promise<DecryptDataResponseMessage['data']> {\n let packet = {\n payload,\n iv,\n keyIndex,\n } satisfies RTCEncryptedPacket;\n\n let dataPacketCryptor = await this.getDataPacketCryptor();\n let decryptedData = await dataPacketCryptor.decrypt(\n participantIdentity,\n packet\n );\n\n if (!decryptedData) {\n throw new Error('decryption for packet failed');\n }\n\n return {\n uuid: '', //not used\n payload: decryptedData,\n } satisfies DecryptDataResponseMessage['data'];\n }\n\n // Utility methods\n //////////////////////\n\n private findTrackCryptor(trackId: string): RTCFrameCryptor | undefined {\n return this.frameCryptors.get(trackId);\n }\n\n private createFrameCryptorForSender(\n sender: RTCRtpSender,\n participantId: string\n ): RTCFrameCryptor {\n return RTCFrameCryptorFactory.createFrameCryptorForRtpSender(\n participantId,\n sender,\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n }\n\n private createFrameCryptorForReceiver(\n receiver: RTCRtpReceiver,\n participantId: string\n ): RTCFrameCryptor {\n return RTCFrameCryptorFactory.createFrameCryptorForRtpReceiver(\n participantId,\n receiver,\n this.algorithm,\n this.keyProvider.rtcKeyProvider\n );\n }\n\n setupEngine(_engine: RTCEngine): void {\n // No-op\n }\n setParticipantCryptorEnabled(\n enabled: boolean,\n participantIdentity: string\n ): void {\n if (\n this.encryptionEnabled !== enabled &&\n participantIdentity === this.room?.localParticipant.identity\n ) {\n this.encryptionEnabled = enabled;\n this.emit(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n enabled,\n this.room!.localParticipant\n );\n } else {\n const participant =\n this.room?.getParticipantByIdentity(participantIdentity);\n if (!participant) {\n throw TypeError(\n `couldn't set encryption status, participant not found ${participantIdentity}`\n );\n }\n this.emit(\n EncryptionEvent.ParticipantEncryptionStatusChanged,\n enabled,\n participant\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["RTCDataPacketCryptorFactory","RTCFrameCryptorAlgorithm","RTCFrameCryptorFactory","ParticipantEvent","RoomEvent","EncryptionEvent","Mutex","EventEmitter","RNE2EEManager","frameCryptors","Map","algorithm","kAesGcm","encryptionEnabled","dataChannelEncryptionEnabled","dataPacketCryptorLock","dataPacketCryptor","undefined","constructor","keyProvider","dcEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","value","setup","room","setupEventListeners","localParticipant","on","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","delete","setEnabled","dispose","TrackSubscribed","_track","pub","participant","setupE2EEReceiver","TrackUnsubscribed","_participant","SignalConnected","TypeError","setParticipantCryptorEnabled","isE2EEEnabled","identity","isEncrypted","createFrameCryptorForSender","track","sender","set","setKeyIndex","getLatestKeyIndex","createFrameCryptorForReceiver","receiver","setSifTrailer","trailer","getDataPacketCryptor","unlock","lock","createDataPacketCryptor","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","emit","ParticipantEncryptionStatusChanged","getParticipantByIdentity"],"sourceRoot":"../../../src","sources":["e2ee/RNE2EEManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
+ "use strict";
2
+
4
3
  import { BaseKeyProvider } from 'livekit-client';
5
4
  import { RTCFrameCryptorFactory } from '@livekit/react-native-webrtc';
6
5
  const defaultRatchetSalt = 'LKFrameEncryptionKey';
@@ -18,6 +17,7 @@ const defaultDiscardFrameWhenCryptorNotReady = false;
18
17
  * @experimental
19
18
  */
20
19
  export default class RNKeyProvider extends BaseKeyProvider {
20
+ latestSetIndex = new Map();
21
21
  constructor(options) {
22
22
  const opts = {
23
23
  sharedKey: options.sharedKey ?? true,
@@ -34,8 +34,6 @@ export default class RNKeyProvider extends BaseKeyProvider {
34
34
  }
35
35
  opts.uncryptedMagicBytes = magicBytes;
36
36
  super(opts);
37
- _defineProperty(this, "latestSetIndex", new Map());
38
- _defineProperty(this, "nativeKeyProvider", void 0);
39
37
  this.nativeKeyProvider = RTCFrameCryptorFactory.createDefaultKeyProvider(opts);
40
38
  }
41
39
  getLatestKeyIndex(participantId) {
@@ -1 +1 @@
1
- {"version":3,"names":["BaseKeyProvider","RTCFrameCryptorFactory","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","_defineProperty","Map","nativeKeyProvider","createDefaultKeyProvider","getLatestKeyIndex","participantId","latestSetIndex","get","setSharedKey","key","keyIndex","ratchetSharedKey","setKey","getOptions","set","ratchetKey","participantIdentity","setSifTrailer","trailer","rtcKeyProvider","dispose"],"sources":["RNKeyProvider.ts"],"sourcesContent":["import { BaseKeyProvider, type KeyProviderOptions } from 'livekit-client';\nimport {\n RTCFrameCryptorFactory,\n RTCKeyProvider,\n type RTCKeyProviderOptions,\n} from '@livekit/react-native-webrtc';\n\nconst defaultRatchetSalt = 'LKFrameEncryptionKey';\nconst defaultMagicBytes = 'LK-ROCKS';\nconst defaultRatchetWindowSize = 16;\nconst defaultFailureTolerance = -1;\nconst defaultKeyRingSize = 16;\nconst defaultDiscardFrameWhenCryptorNotReady = false;\n\n/**\n * Options for construction an RNKeyProvider\n */\nexport type RNKeyProviderOptions = KeyProviderOptions & {\n uncryptedMagicBytes?: string | Uint8Array;\n};\n\n/**\n * @experimental\n */\nexport default class RNKeyProvider extends BaseKeyProvider {\n private latestSetIndex: Map<string, number> = new Map();\n private nativeKeyProvider: RTCKeyProvider;\n\n constructor(options: Partial<RNKeyProviderOptions>) {\n const opts: RTCKeyProviderOptions & KeyProviderOptions = {\n sharedKey: options.sharedKey ?? true,\n ratchetSalt: options.ratchetSalt ?? defaultRatchetSalt,\n ratchetWindowSize: options.ratchetWindowSize ?? defaultRatchetWindowSize,\n failureTolerance: options.failureTolerance ?? defaultFailureTolerance,\n keyRingSize: options.keyringSize ?? defaultKeyRingSize,\n keyringSize: options.keyringSize ?? defaultKeyRingSize,\n discardFrameWhenCryptorNotReady: defaultDiscardFrameWhenCryptorNotReady,\n };\n\n let magicBytes = options.uncryptedMagicBytes ?? defaultMagicBytes;\n if (typeof magicBytes === 'string') {\n magicBytes = new TextEncoder().encode(magicBytes);\n }\n opts.uncryptedMagicBytes = magicBytes;\n\n super(opts);\n\n this.nativeKeyProvider =\n RTCFrameCryptorFactory.createDefaultKeyProvider(opts);\n }\n\n getLatestKeyIndex(participantId: string) {\n return this.latestSetIndex.get(participantId) ?? 0;\n }\n\n /**\n * Accepts a passphrase that's used to create the crypto keys.\n * @param key\n */\n async setSharedKey(key: string | Uint8Array, keyIndex?: number) {\n return this.nativeKeyProvider.setSharedKey(key, keyIndex);\n }\n\n async ratchetSharedKey(keyIndex?: number) {\n this.nativeKeyProvider.ratchetSharedKey(keyIndex);\n }\n\n /**\n * Accepts a passphrase that's used to create the crypto keys for a participant's stream.\n * @param key\n */\n async setKey(\n participantId: string,\n key: string | Uint8Array,\n keyIndex?: number\n ) {\n if (this.getOptions().sharedKey) {\n return this.setSharedKey(key, keyIndex);\n }\n\n this.latestSetIndex.set(participantId, keyIndex ?? 0);\n return this.nativeKeyProvider.setKey(participantId, key, keyIndex);\n }\n\n override async ratchetKey(participantIdentity?: string, keyIndex?: number) {\n if (!this.getOptions().sharedKey && participantIdentity) {\n this.nativeKeyProvider.ratchetKey(participantIdentity, keyIndex);\n } else {\n this.ratchetSharedKey(keyIndex);\n }\n }\n\n async setSifTrailer(trailer: Uint8Array) {\n return this.nativeKeyProvider.setSifTrailer(trailer);\n }\n\n /**\n * @internal\n */\n get rtcKeyProvider() {\n return this.nativeKeyProvider;\n }\n\n dispose() {\n this.nativeKeyProvider.dispose();\n }\n}\n\n// /**\n// * Define the `onxxx` event handlers.\n// */\n// const proto = RNExternalE2EEKeyProvider.prototype;\n\n// defineEventAttribute(proto, KeyProviderEvent.SetKey);\n// defineEventAttribute(proto, KeyProviderEvent.RatchetRequest);\n// defineEventAttribute(proto, KeyProviderEvent.KeyRatcheted);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseKeyProvider","RTCFrameCryptorFactory","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","latestSetIndex","Map","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","nativeKeyProvider","createDefaultKeyProvider","getLatestKeyIndex","participantId","get","setSharedKey","key","keyIndex","ratchetSharedKey","setKey","getOptions","set","ratchetKey","participantIdentity","setSifTrailer","trailer","rtcKeyProvider","dispose"],"sourceRoot":"../../../src","sources":["e2ee/RNKeyProvider.ts"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import { NativeEventEmitter } from 'react-native';
2
4
  // @ts-ignore
3
5
  import EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';
@@ -17,18 +19,16 @@ export function setupNativeEvents() {
17
19
  }
18
20
  const _subscriptions = new Map();
19
21
  export function addListener(listener, eventName, eventHandler) {
20
- var _subscriptions$get;
21
22
  if (!NATIVE_EVENTS.includes(eventName)) {
22
23
  throw new Error(`Invalid event: ${eventName}`);
23
24
  }
24
25
  if (!_subscriptions.has(listener)) {
25
26
  _subscriptions.set(listener, []);
26
27
  }
27
- (_subscriptions$get = _subscriptions.get(listener)) === null || _subscriptions$get === void 0 || _subscriptions$get.push(eventEmitter.addListener(eventName, eventHandler));
28
+ _subscriptions.get(listener)?.push(eventEmitter.addListener(eventName, eventHandler));
28
29
  }
29
30
  export function removeListener(listener) {
30
- var _subscriptions$get2;
31
- (_subscriptions$get2 = _subscriptions.get(listener)) === null || _subscriptions$get2 === void 0 || _subscriptions$get2.forEach(sub => {
31
+ _subscriptions.get(listener)?.forEach(sub => {
32
32
  sub.remove();
33
33
  });
34
34
  _subscriptions.delete(listener);
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","EventEmitter","LiveKitModule","nativeEmitter","NATIVE_EVENTS","eventEmitter","setupNativeEvents","eventName","addListener","args","emit","_subscriptions","Map","listener","eventHandler","_subscriptions$get","includes","Error","has","set","get","push","removeListener","_subscriptions$get2","forEach","sub","remove","delete"],"sources":["EventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter, type EmitterSubscription } from 'react-native';\n// @ts-ignore\nimport EventEmitter from 'react-native/Libraries/vendor/emitter/EventEmitter';\nimport LiveKitModule from '../LKNativeModule';\n\n// This emitter is going to be used to listen to all the native events (once) and then\n// re-emit them on a JS-only emitter.\nconst nativeEmitter = new NativeEventEmitter(LiveKitModule);\n\nconst NATIVE_EVENTS = [\n 'LK_VOLUME_PROCESSED',\n 'LK_MULTIBAND_PROCESSED',\n 'LK_AUDIO_DATA',\n];\n\nconst eventEmitter = new EventEmitter();\n\nexport function setupNativeEvents() {\n for (const eventName of NATIVE_EVENTS) {\n nativeEmitter.addListener(eventName, (...args) => {\n eventEmitter.emit(eventName, ...args);\n });\n }\n}\n\ntype EventHandler = (event: unknown) => void;\ntype Listener = unknown;\n\nconst _subscriptions: Map<Listener, EmitterSubscription[]> = new Map();\n\nexport function addListener(\n listener: Listener,\n eventName: string,\n eventHandler: EventHandler\n): void {\n if (!NATIVE_EVENTS.includes(eventName)) {\n throw new Error(`Invalid event: ${eventName}`);\n }\n\n if (!_subscriptions.has(listener)) {\n _subscriptions.set(listener, []);\n }\n\n _subscriptions\n .get(listener)\n ?.push(eventEmitter.addListener(eventName, eventHandler));\n}\n\nexport function removeListener(listener: Listener): void {\n _subscriptions.get(listener)?.forEach((sub) => {\n sub.remove();\n });\n\n _subscriptions.delete(listener);\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E;AACA,OAAOC,YAAY,MAAM,oDAAoD;AAC7E,OAAOC,aAAa,MAAM,mBAAmB;;AAE7C;AACA;AACA,MAAMC,aAAa,GAAG,IAAIH,kBAAkB,CAACE,aAAa,CAAC;AAE3D,MAAME,aAAa,GAAG,CACpB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,CAChB;AAED,MAAMC,YAAY,GAAG,IAAIJ,YAAY,CAAC,CAAC;AAEvC,OAAO,SAASK,iBAAiBA,CAAA,EAAG;EAClC,KAAK,MAAMC,SAAS,IAAIH,aAAa,EAAE;IACrCD,aAAa,CAACK,WAAW,CAACD,SAAS,EAAE,CAAC,GAAGE,IAAI,KAAK;MAChDJ,YAAY,CAACK,IAAI,CAACH,SAAS,EAAE,GAAGE,IAAI,CAAC;IACvC,CAAC,CAAC;EACJ;AACF;AAKA,MAAME,cAAoD,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEtE,OAAO,SAASJ,WAAWA,CACzBK,QAAkB,EAClBN,SAAiB,EACjBO,YAA0B,EACpB;EAAA,IAAAC,kBAAA;EACN,IAAI,CAACX,aAAa,CAACY,QAAQ,CAACT,SAAS,CAAC,EAAE;IACtC,MAAM,IAAIU,KAAK,CAAC,kBAAkBV,SAAS,EAAE,CAAC;EAChD;EAEA,IAAI,CAACI,cAAc,CAACO,GAAG,CAACL,QAAQ,CAAC,EAAE;IACjCF,cAAc,CAACQ,GAAG,CAACN,QAAQ,EAAE,EAAE,CAAC;EAClC;EAEA,CAAAE,kBAAA,GAAAJ,cAAc,CACXS,GAAG,CAACP,QAAQ,CAAC,cAAAE,kBAAA,eADhBA,kBAAA,CAEIM,IAAI,CAAChB,YAAY,CAACG,WAAW,CAACD,SAAS,EAAEO,YAAY,CAAC,CAAC;AAC7D;AAEA,OAAO,SAASQ,cAAcA,CAACT,QAAkB,EAAQ;EAAA,IAAAU,mBAAA;EACvD,CAAAA,mBAAA,GAAAZ,cAAc,CAACS,GAAG,CAACP,QAAQ,CAAC,cAAAU,mBAAA,eAA5BA,mBAAA,CAA8BC,OAAO,CAAEC,GAAG,IAAK;IAC7CA,GAAG,CAACC,MAAM,CAAC,CAAC;EACd,CAAC,CAAC;EAEFf,cAAc,CAACgB,MAAM,CAACd,QAAQ,CAAC;AACjC","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","EventEmitter","LiveKitModule","nativeEmitter","NATIVE_EVENTS","eventEmitter","setupNativeEvents","eventName","addListener","args","emit","_subscriptions","Map","listener","eventHandler","includes","Error","has","set","get","push","removeListener","forEach","sub","remove","delete"],"sourceRoot":"../../../src","sources":["events/EventEmitter.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E;AACA,OAAOC,YAAY,MAAM,oDAAoD;AAC7E,OAAOC,aAAa,MAAM,mBAAmB;;AAE7C;AACA;AACA,MAAMC,aAAa,GAAG,IAAIH,kBAAkB,CAACE,aAAa,CAAC;AAE3D,MAAME,aAAa,GAAG,CACpB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,CAChB;AAED,MAAMC,YAAY,GAAG,IAAIJ,YAAY,CAAC,CAAC;AAEvC,OAAO,SAASK,iBAAiBA,CAAA,EAAG;EAClC,KAAK,MAAMC,SAAS,IAAIH,aAAa,EAAE;IACrCD,aAAa,CAACK,WAAW,CAACD,SAAS,EAAE,CAAC,GAAGE,IAAI,KAAK;MAChDJ,YAAY,CAACK,IAAI,CAACH,SAAS,EAAE,GAAGE,IAAI,CAAC;IACvC,CAAC,CAAC;EACJ;AACF;AAKA,MAAME,cAAoD,GAAG,IAAIC,GAAG,CAAC,CAAC;AAEtE,OAAO,SAASJ,WAAWA,CACzBK,QAAkB,EAClBN,SAAiB,EACjBO,YAA0B,EACpB;EACN,IAAI,CAACV,aAAa,CAACW,QAAQ,CAACR,SAAS,CAAC,EAAE;IACtC,MAAM,IAAIS,KAAK,CAAC,kBAAkBT,SAAS,EAAE,CAAC;EAChD;EAEA,IAAI,CAACI,cAAc,CAACM,GAAG,CAACJ,QAAQ,CAAC,EAAE;IACjCF,cAAc,CAACO,GAAG,CAACL,QAAQ,EAAE,EAAE,CAAC;EAClC;EAEAF,cAAc,CACXQ,GAAG,CAACN,QAAQ,CAAC,EACZO,IAAI,CAACf,YAAY,CAACG,WAAW,CAACD,SAAS,EAAEO,YAAY,CAAC,CAAC;AAC7D;AAEA,OAAO,SAASO,cAAcA,CAACR,QAAkB,EAAQ;EACvDF,cAAc,CAACQ,GAAG,CAACN,QAAQ,CAAC,EAAES,OAAO,CAAEC,GAAG,IAAK;IAC7CA,GAAG,CAACC,MAAM,CAAC,CAAC;EACd,CAAC,CAAC;EAEFb,cAAc,CAACc,MAAM,CAACZ,QAAQ,CAAC;AACjC","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import RNE2EEManager from '../e2ee/RNE2EEManager';
2
4
  import { log, RNKeyProvider } from '..';
3
5
  import { useEffect, useState } from 'react';
@@ -1 +1 @@
1
- {"version":3,"names":["RNE2EEManager","log","RNKeyProvider","useEffect","useState","useRNE2EEManager","options","keyProvider","keyProviderOptions","e2eeManager","setup","setSharedKey","sharedKey","error","warn","dispose"],"sources":["useE2EEManager.ts"],"sourcesContent":["import RNE2EEManager from '../e2ee/RNE2EEManager';\nimport { log, RNKeyProvider } from '..';\nimport { useEffect, useState } from 'react';\nimport type { RNKeyProviderOptions } from '../e2ee/RNKeyProvider';\nimport type { BaseE2EEManager } from 'livekit-client';\n\nexport type UseRNE2EEManagerOptions = {\n keyProviderOptions?: RNKeyProviderOptions;\n sharedKey: string | Uint8Array;\n};\n\nexport interface RNE2EEManagerState {\n keyProvider: RNKeyProvider;\n e2eeManager: BaseE2EEManager;\n}\n\n/**\n * @experimental\n */\nexport function useRNE2EEManager(\n options: UseRNE2EEManagerOptions\n): RNE2EEManagerState {\n let [keyProvider] = useState(\n () => new RNKeyProvider(options.keyProviderOptions ?? {})\n );\n let [e2eeManager] = useState(() => new RNE2EEManager(keyProvider, false));\n\n useEffect(() => {\n let setup = async () => {\n try {\n await keyProvider.setSharedKey(options.sharedKey);\n } catch (error) {\n log.warn('unable to set shared key', error);\n }\n };\n setup();\n return () => {};\n }, [keyProvider, options.sharedKey]);\n\n useEffect(() => {\n return () => {\n keyProvider.dispose();\n };\n }, [keyProvider]);\n\n return {\n keyProvider,\n e2eeManager,\n };\n}\n"],"mappings":"AAAA,OAAOA,aAAa,MAAM,uBAAuB;AACjD,SAASC,GAAG,EAAEC,aAAa,QAAQ,IAAI;AACvC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAc3C;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,OAAgC,EACZ;EACpB,IAAI,CAACC,WAAW,CAAC,GAAGH,QAAQ,CAC1B,MAAM,IAAIF,aAAa,CAACI,OAAO,CAACE,kBAAkB,IAAI,CAAC,CAAC,CAC1D,CAAC;EACD,IAAI,CAACC,WAAW,CAAC,GAAGL,QAAQ,CAAC,MAAM,IAAIJ,aAAa,CAACO,WAAW,EAAE,KAAK,CAAC,CAAC;EAEzEJ,SAAS,CAAC,MAAM;IACd,IAAIO,KAAK,GAAG,MAAAA,CAAA,KAAY;MACtB,IAAI;QACF,MAAMH,WAAW,CAACI,YAAY,CAACL,OAAO,CAACM,SAAS,CAAC;MACnD,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdZ,GAAG,CAACa,IAAI,CAAC,0BAA0B,EAAED,KAAK,CAAC;MAC7C;IACF,CAAC;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,CAACH,WAAW,EAAED,OAAO,CAACM,SAAS,CAAC,CAAC;EAEpCT,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXI,WAAW,CAACQ,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACR,WAAW,CAAC,CAAC;EAEjB,OAAO;IACLA,WAAW;IACXE;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["RNE2EEManager","log","RNKeyProvider","useEffect","useState","useRNE2EEManager","options","keyProvider","keyProviderOptions","e2eeManager","setup","setSharedKey","sharedKey","error","warn","dispose"],"sourceRoot":"../../../src","sources":["hooks/useE2EEManager.ts"],"mappings":";;AAAA,OAAOA,aAAa,MAAM,uBAAuB;AACjD,SAASC,GAAG,EAAEC,aAAa,QAAQ,IAAI;AACvC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAc3C;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,OAAgC,EACZ;EACpB,IAAI,CAACC,WAAW,CAAC,GAAGH,QAAQ,CAC1B,MAAM,IAAIF,aAAa,CAACI,OAAO,CAACE,kBAAkB,IAAI,CAAC,CAAC,CAC1D,CAAC;EACD,IAAI,CAACC,WAAW,CAAC,GAAGL,QAAQ,CAAC,MAAM,IAAIJ,aAAa,CAACO,WAAW,EAAE,KAAK,CAAC,CAAC;EAEzEJ,SAAS,CAAC,MAAM;IACd,IAAIO,KAAK,GAAG,MAAAA,CAAA,KAAY;MACtB,IAAI;QACF,MAAMH,WAAW,CAACI,YAAY,CAACL,OAAO,CAACM,SAAS,CAAC;MACnD,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdZ,GAAG,CAACa,IAAI,CAAC,0BAA0B,EAAED,KAAK,CAAC;MAC7C;IACF,CAAC;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,CAACH,WAAW,EAAED,OAAO,CAACM,SAAS,CAAC,CAAC;EAEpCT,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXI,WAAW,CAACQ,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACR,WAAW,CAAC,CAAC;EAEjB,OAAO;IACLA,WAAW;IACXE;EACF,CAAC;AACH","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import { Track } from 'livekit-client';
2
4
  import { useEffect, useMemo, useState } from 'react';
3
5
  import { addListener, removeListener } from '../events/EventEmitter';
@@ -22,8 +24,7 @@ const multibandDefaults = {
22
24
  * @returns A number array containing the volume for each frequency band.
23
25
  */
24
26
  export function useMultibandTrackVolume(trackOrTrackReference, options) {
25
- var _trackOrTrackReferenc;
26
- const track = trackOrTrackReference instanceof Track ? trackOrTrackReference : trackOrTrackReference === null || trackOrTrackReference === void 0 || (_trackOrTrackReferenc = trackOrTrackReference.publication) === null || _trackOrTrackReferenc === void 0 ? void 0 : _trackOrTrackReferenc.track;
27
+ const track = trackOrTrackReference instanceof Track ? trackOrTrackReference : trackOrTrackReference?.publication?.track;
27
28
  const opts = useMemo(() => {
28
29
  return {
29
30
  ...multibandDefaults,
@@ -33,10 +34,10 @@ export function useMultibandTrackVolume(trackOrTrackReference, options) {
33
34
  // disabled due to use of JSON.stringify, dependencies are reference equality
34
35
  // eslint-disable-next-line react-hooks/exhaustive-deps
35
36
  }, [JSON.stringify(options)]);
36
- const mediaStreamTrack = track === null || track === void 0 ? void 0 : track.mediaStreamTrack;
37
+ const mediaStreamTrack = track?.mediaStreamTrack;
37
38
  const hasMediaStreamTrack = mediaStreamTrack != null;
38
- const peerConnectionId = (mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack._peerConnectionId) ?? -1;
39
- const mediaStreamTrackId = mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack.id;
39
+ const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;
40
+ const mediaStreamTrackId = mediaStreamTrack?.id;
40
41
  let [magnitudes, setMagnitudes] = useState([]);
41
42
  useEffect(() => {
42
43
  let listener = Object();
@@ -1 +1 @@
1
- {"version":3,"names":["Track","useEffect","useMemo","useState","addListener","removeListener","LiveKitModule","multibandDefaults","bands","minFrequency","maxFrequency","updateInterval","useMultibandTrackVolume","trackOrTrackReference","options","_trackOrTrackReferenc","track","publication","opts","JSON","stringify","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","magnitudes","setMagnitudes","listener","Object","reactTag","createMultibandVolumeProcessor","event","deleteMultibandVolumeProcessor"],"sources":["useMultibandTrackVolume.ts"],"sourcesContent":["import { type TrackReferenceOrPlaceholder } from '@livekit/components-react';\nimport {\n Track,\n type LocalAudioTrack,\n type RemoteAudioTrack,\n} from 'livekit-client';\nimport { useEffect, useMemo, useState } from 'react';\nimport { addListener, removeListener } from '../events/EventEmitter';\nimport LiveKitModule from '../LKNativeModule';\nimport type { MediaStreamTrack } from '@livekit/react-native-webrtc';\n\n/**\n * Interface for configuring options for the useMultibandTrackVolume hook.\n * @alpha\n */\nexport interface MultiBandTrackVolumeOptions {\n /**\n * the number of bands to split the audio into\n */\n bands?: number;\n /**\n * cut off frequency on the lower end\n */\n minFrequency?: number;\n /**\n * cut off frequency on the higher end\n */\n maxFrequency?: number;\n /**\n * update should run every x ms\n */\n updateInterval?: number;\n}\n\nconst multibandDefaults = {\n bands: 5,\n minFrequency: 1000,\n maxFrequency: 8000,\n updateInterval: 40,\n} as const satisfies MultiBandTrackVolumeOptions;\n\n/**\n * A hook for tracking the volume of an audio track across multiple frequency bands.\n *\n * @param trackOrTrackReference\n * @returns A number array containing the volume for each frequency band.\n */\nexport function useMultibandTrackVolume(\n trackOrTrackReference?:\n | LocalAudioTrack\n | RemoteAudioTrack\n | TrackReferenceOrPlaceholder,\n options?: MultiBandTrackVolumeOptions\n) {\n const track =\n trackOrTrackReference instanceof Track\n ? trackOrTrackReference\n : <LocalAudioTrack | RemoteAudioTrack | undefined>(\n trackOrTrackReference?.publication?.track\n );\n const opts = useMemo(() => {\n return { ...multibandDefaults, ...options };\n\n // disabled due to use of JSON.stringify, dependencies are reference equality\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(options)]);\n\n const mediaStreamTrack = track?.mediaStreamTrack as\n | MediaStreamTrack\n | undefined;\n const hasMediaStreamTrack = mediaStreamTrack != null;\n const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;\n const mediaStreamTrackId = mediaStreamTrack?.id;\n\n let [magnitudes, setMagnitudes] = useState<number[]>([]);\n useEffect(() => {\n let listener = Object();\n let reactTag: string | null = null;\n if (hasMediaStreamTrack) {\n reactTag = LiveKitModule.createMultibandVolumeProcessor(\n opts,\n peerConnectionId,\n mediaStreamTrackId\n );\n addListener(listener, 'LK_MULTIBAND_PROCESSED', (event: any) => {\n if (event.magnitudes && reactTag && event.id === reactTag) {\n setMagnitudes(event.magnitudes);\n }\n });\n }\n return () => {\n if (hasMediaStreamTrack) {\n removeListener(listener);\n if (reactTag) {\n LiveKitModule.deleteMultibandVolumeProcessor(\n reactTag,\n peerConnectionId,\n mediaStreamTrackId\n );\n }\n }\n };\n }, [hasMediaStreamTrack, peerConnectionId, mediaStreamTrackId, opts]);\n\n return magnitudes;\n}\n"],"mappings":"AACA,SACEA,KAAK,QAGA,gBAAgB;AACvB,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACpD,SAASC,WAAW,EAAEC,cAAc,QAAQ,wBAAwB;AACpE,OAAOC,aAAa,MAAM,mBAAmB;;AAG7C;AACA;AACA;AACA;;AAoBA,MAAMC,iBAAiB,GAAG;EACxBC,KAAK,EAAE,CAAC;EACRC,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,IAAI;EAClBC,cAAc,EAAE;AAClB,CAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,qBAG+B,EAC/BC,OAAqC,EACrC;EAAA,IAAAC,qBAAA;EACA,MAAMC,KAAK,GACTH,qBAAqB,YAAYb,KAAK,GAClCa,qBAAqB,GAEnBA,qBAAqB,aAArBA,qBAAqB,gBAAAE,qBAAA,GAArBF,qBAAqB,CAAEI,WAAW,cAAAF,qBAAA,uBAAlCA,qBAAA,CAAoCC,KACrC;EACP,MAAME,IAAI,GAAGhB,OAAO,CAAC,MAAM;IACzB,OAAO;MAAE,GAAGK,iBAAiB;MAAE,GAAGO;IAAQ,CAAC;;IAE3C;IACA;EACF,CAAC,EAAE,CAACK,IAAI,CAACC,SAAS,CAACN,OAAO,CAAC,CAAC,CAAC;EAE7B,MAAMO,gBAAgB,GAAGL,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEK,gBAEnB;EACb,MAAMC,mBAAmB,GAAGD,gBAAgB,IAAI,IAAI;EACpD,MAAME,gBAAgB,GAAG,CAAAF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEG,iBAAiB,KAAI,CAAC,CAAC;EAClE,MAAMC,kBAAkB,GAAGJ,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEK,EAAE;EAE/C,IAAI,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGzB,QAAQ,CAAW,EAAE,CAAC;EACxDF,SAAS,CAAC,MAAM;IACd,IAAI4B,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIT,mBAAmB,EAAE;MACvBS,QAAQ,GAAGzB,aAAa,CAAC0B,8BAA8B,CACrDd,IAAI,EACJK,gBAAgB,EAChBE,kBACF,CAAC;MACDrB,WAAW,CAACyB,QAAQ,EAAE,wBAAwB,EAAGI,KAAU,IAAK;QAC9D,IAAIA,KAAK,CAACN,UAAU,IAAII,QAAQ,IAAIE,KAAK,CAACP,EAAE,KAAKK,QAAQ,EAAE;UACzDH,aAAa,CAACK,KAAK,CAACN,UAAU,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvBjB,cAAc,CAACwB,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZzB,aAAa,CAAC4B,8BAA8B,CAC1CH,QAAQ,EACRR,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,EAAEP,IAAI,CAAC,CAAC;EAErE,OAAOS,UAAU;AACnB","ignoreList":[]}
1
+ {"version":3,"names":["Track","useEffect","useMemo","useState","addListener","removeListener","LiveKitModule","multibandDefaults","bands","minFrequency","maxFrequency","updateInterval","useMultibandTrackVolume","trackOrTrackReference","options","track","publication","opts","JSON","stringify","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","magnitudes","setMagnitudes","listener","Object","reactTag","createMultibandVolumeProcessor","event","deleteMultibandVolumeProcessor"],"sourceRoot":"../../../src","sources":["hooks/useMultibandTrackVolume.ts"],"mappings":";;AACA,SACEA,KAAK,QAGA,gBAAgB;AACvB,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACpD,SAASC,WAAW,EAAEC,cAAc,QAAQ,wBAAwB;AACpE,OAAOC,aAAa,MAAM,mBAAmB;;AAG7C;AACA;AACA;AACA;;AAoBA,MAAMC,iBAAiB,GAAG;EACxBC,KAAK,EAAE,CAAC;EACRC,YAAY,EAAE,IAAI;EAClBC,YAAY,EAAE,IAAI;EAClBC,cAAc,EAAE;AAClB,CAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,qBAG+B,EAC/BC,OAAqC,EACrC;EACA,MAAMC,KAAK,GACTF,qBAAqB,YAAYb,KAAK,GAClCa,qBAAqB,GAEnBA,qBAAqB,EAAEG,WAAW,EAAED,KACrC;EACP,MAAME,IAAI,GAAGf,OAAO,CAAC,MAAM;IACzB,OAAO;MAAE,GAAGK,iBAAiB;MAAE,GAAGO;IAAQ,CAAC;;IAE3C;IACA;EACF,CAAC,EAAE,CAACI,IAAI,CAACC,SAAS,CAACL,OAAO,CAAC,CAAC,CAAC;EAE7B,MAAMM,gBAAgB,GAAGL,KAAK,EAAEK,gBAEnB;EACb,MAAMC,mBAAmB,GAAGD,gBAAgB,IAAI,IAAI;EACpD,MAAME,gBAAgB,GAAGF,gBAAgB,EAAEG,iBAAiB,IAAI,CAAC,CAAC;EAClE,MAAMC,kBAAkB,GAAGJ,gBAAgB,EAAEK,EAAE;EAE/C,IAAI,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGxB,QAAQ,CAAW,EAAE,CAAC;EACxDF,SAAS,CAAC,MAAM;IACd,IAAI2B,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIT,mBAAmB,EAAE;MACvBS,QAAQ,GAAGxB,aAAa,CAACyB,8BAA8B,CACrDd,IAAI,EACJK,gBAAgB,EAChBE,kBACF,CAAC;MACDpB,WAAW,CAACwB,QAAQ,EAAE,wBAAwB,EAAGI,KAAU,IAAK;QAC9D,IAAIA,KAAK,CAACN,UAAU,IAAII,QAAQ,IAAIE,KAAK,CAACP,EAAE,KAAKK,QAAQ,EAAE;UACzDH,aAAa,CAACK,KAAK,CAACN,UAAU,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvBhB,cAAc,CAACuB,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZxB,aAAa,CAAC2B,8BAA8B,CAC1CH,QAAQ,EACRR,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,EAAEP,IAAI,CAAC,CAAC;EAErE,OAAOS,UAAU;AACnB","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  import { Track } from 'livekit-client';
2
4
  import { useEffect, useState } from 'react';
3
5
  import { addListener, removeListener } from '../events/EventEmitter';
@@ -9,12 +11,11 @@ import LiveKitModule from '../LKNativeModule';
9
11
  * @returns A number between 0-1 representing the volume.
10
12
  */
11
13
  export function useTrackVolume(trackOrTrackReference) {
12
- var _trackOrTrackReferenc;
13
- const track = trackOrTrackReference instanceof Track ? trackOrTrackReference : trackOrTrackReference === null || trackOrTrackReference === void 0 || (_trackOrTrackReferenc = trackOrTrackReference.publication) === null || _trackOrTrackReferenc === void 0 ? void 0 : _trackOrTrackReferenc.track;
14
- const mediaStreamTrack = track === null || track === void 0 ? void 0 : track.mediaStreamTrack;
14
+ const track = trackOrTrackReference instanceof Track ? trackOrTrackReference : trackOrTrackReference?.publication?.track;
15
+ const mediaStreamTrack = track?.mediaStreamTrack;
15
16
  const hasMediaStreamTrack = mediaStreamTrack != null;
16
- const peerConnectionId = (mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack._peerConnectionId) ?? -1;
17
- const mediaStreamTrackId = mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack.id;
17
+ const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;
18
+ const mediaStreamTrackId = mediaStreamTrack?.id;
18
19
  let [volume, setVolume] = useState(0.0);
19
20
  useEffect(() => {
20
21
  let listener = Object();
@@ -1 +1 @@
1
- {"version":3,"names":["Track","useEffect","useState","addListener","removeListener","LiveKitModule","useTrackVolume","trackOrTrackReference","_trackOrTrackReferenc","track","publication","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","volume","setVolume","listener","Object","reactTag","createVolumeProcessor","event","deleteVolumeProcessor"],"sources":["useTrackVolume.ts"],"sourcesContent":["import { type TrackReferenceOrPlaceholder } from '@livekit/components-react';\nimport {\n Track,\n type LocalAudioTrack,\n type RemoteAudioTrack,\n} from 'livekit-client';\nimport { useEffect, useState } from 'react';\nimport { addListener, removeListener } from '../events/EventEmitter';\nimport LiveKitModule from '../LKNativeModule';\nimport type { MediaStreamTrack } from '@livekit/react-native-webrtc';\n\n/**\n * A hook for tracking the volume of an audio track.\n *\n * @param trackOrTrackReference\n * @returns A number between 0-1 representing the volume.\n */\nexport function useTrackVolume(\n trackOrTrackReference?:\n | LocalAudioTrack\n | RemoteAudioTrack\n | TrackReferenceOrPlaceholder\n) {\n const track =\n trackOrTrackReference instanceof Track\n ? trackOrTrackReference\n : <LocalAudioTrack | RemoteAudioTrack | undefined>(\n trackOrTrackReference?.publication?.track\n );\n\n const mediaStreamTrack = track?.mediaStreamTrack as\n | MediaStreamTrack\n | undefined;\n const hasMediaStreamTrack = mediaStreamTrack != null;\n const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;\n const mediaStreamTrackId = mediaStreamTrack?.id;\n\n let [volume, setVolume] = useState(0.0);\n useEffect(() => {\n let listener = Object();\n let reactTag: string | null = null;\n if (hasMediaStreamTrack) {\n reactTag = LiveKitModule.createVolumeProcessor(\n peerConnectionId,\n mediaStreamTrackId\n );\n addListener(listener, 'LK_VOLUME_PROCESSED', (event: any) => {\n if (event.volume && reactTag && event.id === reactTag) {\n setVolume(event.volume);\n }\n });\n }\n return () => {\n if (hasMediaStreamTrack) {\n removeListener(listener);\n if (reactTag) {\n LiveKitModule.deleteVolumeProcessor(\n reactTag,\n peerConnectionId,\n mediaStreamTrackId\n );\n }\n }\n };\n }, [hasMediaStreamTrack, peerConnectionId, mediaStreamTrackId]);\n\n return volume;\n}\n"],"mappings":"AACA,SACEA,KAAK,QAGA,gBAAgB;AACvB,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,WAAW,EAAEC,cAAc,QAAQ,wBAAwB;AACpE,OAAOC,aAAa,MAAM,mBAAmB;AAG7C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,qBAG+B,EAC/B;EAAA,IAAAC,qBAAA;EACA,MAAMC,KAAK,GACTF,qBAAqB,YAAYP,KAAK,GAClCO,qBAAqB,GAEnBA,qBAAqB,aAArBA,qBAAqB,gBAAAC,qBAAA,GAArBD,qBAAqB,CAAEG,WAAW,cAAAF,qBAAA,uBAAlCA,qBAAA,CAAoCC,KACrC;EAEP,MAAME,gBAAgB,GAAGF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,gBAEnB;EACb,MAAMC,mBAAmB,GAAGD,gBAAgB,IAAI,IAAI;EACpD,MAAME,gBAAgB,GAAG,CAAAF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEG,iBAAiB,KAAI,CAAC,CAAC;EAClE,MAAMC,kBAAkB,GAAGJ,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEK,EAAE;EAE/C,IAAI,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGhB,QAAQ,CAAC,GAAG,CAAC;EACvCD,SAAS,CAAC,MAAM;IACd,IAAIkB,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIT,mBAAmB,EAAE;MACvBS,QAAQ,GAAGhB,aAAa,CAACiB,qBAAqB,CAC5CT,gBAAgB,EAChBE,kBACF,CAAC;MACDZ,WAAW,CAACgB,QAAQ,EAAE,qBAAqB,EAAGI,KAAU,IAAK;QAC3D,IAAIA,KAAK,CAACN,MAAM,IAAII,QAAQ,IAAIE,KAAK,CAACP,EAAE,KAAKK,QAAQ,EAAE;UACrDH,SAAS,CAACK,KAAK,CAACN,MAAM,CAAC;QACzB;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvBR,cAAc,CAACe,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZhB,aAAa,CAACmB,qBAAqB,CACjCH,QAAQ,EACRR,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,CAAC,CAAC;EAE/D,OAAOE,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["Track","useEffect","useState","addListener","removeListener","LiveKitModule","useTrackVolume","trackOrTrackReference","track","publication","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","volume","setVolume","listener","Object","reactTag","createVolumeProcessor","event","deleteVolumeProcessor"],"sourceRoot":"../../../src","sources":["hooks/useTrackVolume.ts"],"mappings":";;AACA,SACEA,KAAK,QAGA,gBAAgB;AACvB,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,WAAW,EAAEC,cAAc,QAAQ,wBAAwB;AACpE,OAAOC,aAAa,MAAM,mBAAmB;AAG7C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,qBAG+B,EAC/B;EACA,MAAMC,KAAK,GACTD,qBAAqB,YAAYP,KAAK,GAClCO,qBAAqB,GAEnBA,qBAAqB,EAAEE,WAAW,EAAED,KACrC;EAEP,MAAME,gBAAgB,GAAGF,KAAK,EAAEE,gBAEnB;EACb,MAAMC,mBAAmB,GAAGD,gBAAgB,IAAI,IAAI;EACpD,MAAME,gBAAgB,GAAGF,gBAAgB,EAAEG,iBAAiB,IAAI,CAAC,CAAC;EAClE,MAAMC,kBAAkB,GAAGJ,gBAAgB,EAAEK,EAAE;EAE/C,IAAI,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGf,QAAQ,CAAC,GAAG,CAAC;EACvCD,SAAS,CAAC,MAAM;IACd,IAAIiB,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIT,mBAAmB,EAAE;MACvBS,QAAQ,GAAGf,aAAa,CAACgB,qBAAqB,CAC5CT,gBAAgB,EAChBE,kBACF,CAAC;MACDX,WAAW,CAACe,QAAQ,EAAE,qBAAqB,EAAGI,KAAU,IAAK;QAC3D,IAAIA,KAAK,CAACN,MAAM,IAAII,QAAQ,IAAIE,KAAK,CAACP,EAAE,KAAKK,QAAQ,EAAE;UACrDH,SAAS,CAACK,KAAK,CAACN,MAAM,CAAC;QACzB;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvBP,cAAc,CAACc,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZf,aAAa,CAACkB,qBAAqB,CACjCH,QAAQ,EACRR,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,CAAC,CAAC;EAE/D,OAAOE,MAAM;AACf","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  export { useConnectionState, useDataChannel, useIsSpeaking, useLocalParticipant, useLocalParticipantPermissions, useParticipantInfo, useParticipants, useRemoteParticipants, useRemoteParticipant, useSpeakingParticipants, useSortedParticipants, useChat, useIsEncrypted, useRoomInfo, useIsMuted, useParticipantTracks, useLiveKitRoom, RoomContext, useRoomContext, ParticipantContext, useParticipantContext, TrackRefContext, useTrackRefContext, useTracks, isTrackReference, useEnsureTrackRef, useMaybeTrackRefContext, useTrackMutedIndicator, useVisualStableUpdate, useVoiceAssistant, useTrackTranscription } from '@livekit/components-react';
2
4
  export * from './hooks/useE2EEManager';
3
5
  export * from './hooks/useTrackVolume';