@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
@@ -4,21 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
7
+ var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
- 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); }
10
- 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; }
11
- 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); }
12
- 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; }
13
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
14
- 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); }
9
+ var _jsxRuntime = require("react/jsx-runtime");
15
10
  const DEFAULT_DELAY = 1000;
16
11
  class TimeoutHandler {
17
- constructor() {
18
- _defineProperty(this, "handlerRef", {
19
- id: -1
20
- });
21
- }
12
+ handlerRef = {
13
+ id: -1
14
+ };
22
15
  get handler() {
23
16
  return this.handlerRef.id;
24
17
  }
@@ -52,70 +45,13 @@ function setIntervalWithTimeout(callback, intervalMs, handleWrapper = new Timeou
52
45
  * Will not fire visibility changes for zero width/height components.
53
46
  */
54
47
  class ViewPortDetector extends _react.Component {
48
+ lastValue = null;
49
+ interval = null;
50
+ view = null;
51
+ lastAppStateActive = false;
52
+ appStateSubscription = null;
55
53
  constructor(props) {
56
54
  super(props);
57
- _defineProperty(this, "lastValue", null);
58
- _defineProperty(this, "interval", null);
59
- _defineProperty(this, "view", null);
60
- _defineProperty(this, "lastAppStateActive", false);
61
- _defineProperty(this, "appStateSubscription", null);
62
- _defineProperty(this, "hasValidTimeout", (disabled, delay) => {
63
- let disabledValue = disabled ?? false;
64
- let delayValue = delay ?? DEFAULT_DELAY;
65
- return _reactNative.AppState.currentState === 'active' && !disabledValue && delayValue > 0;
66
- });
67
- _defineProperty(this, "handleAppStateChange", nextAppState => {
68
- let nextAppStateActive = nextAppState === 'active';
69
- if (this.lastAppStateActive !== nextAppStateActive) {
70
- this.checkVisibility();
71
- }
72
- this.lastAppStateActive = nextAppStateActive;
73
- if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
74
- this.stopWatching();
75
- } else {
76
- this.startWatching();
77
- }
78
- });
79
- _defineProperty(this, "startWatching", () => {
80
- if (this.interval) {
81
- return;
82
- }
83
- this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
84
- });
85
- _defineProperty(this, "stopWatching", () => {
86
- var _this$interval;
87
- (_this$interval = this.interval) === null || _this$interval === void 0 || _this$interval.clear();
88
- this.interval = null;
89
- });
90
- _defineProperty(this, "checkVisibility", () => {
91
- if (!this.view) {
92
- return;
93
- }
94
- if (_reactNative.AppState.currentState !== 'active') {
95
- this.updateVisibility(false);
96
- return;
97
- }
98
- this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
99
- this.checkInViewPort(width, height);
100
- });
101
- });
102
- _defineProperty(this, "checkInViewPort", (width, height) => {
103
- let isVisible;
104
- // Not visible if any of these are missing.
105
- if (!width || !height) {
106
- isVisible = false;
107
- } else {
108
- isVisible = true;
109
- }
110
- this.updateVisibility(isVisible);
111
- });
112
- _defineProperty(this, "updateVisibility", isVisible => {
113
- if (this.lastValue !== isVisible) {
114
- var _this$props$onChange, _this$props;
115
- this.lastValue = isVisible;
116
- (_this$props$onChange = (_this$props = this.props).onChange) === null || _this$props$onChange === void 0 || _this$props$onChange.call(_this$props, isVisible);
117
- }
118
- });
119
55
  this.state = {
120
56
  rectTop: 0,
121
57
  rectBottom: 0
@@ -129,11 +65,15 @@ class ViewPortDetector extends _react.Component {
129
65
  }
130
66
  }
131
67
  componentWillUnmount() {
132
- var _this$appStateSubscri;
133
- (_this$appStateSubscri = this.appStateSubscription) === null || _this$appStateSubscri === void 0 || _this$appStateSubscri.remove();
68
+ this.appStateSubscription?.remove();
134
69
  this.appStateSubscription = null;
135
70
  this.stopWatching();
136
71
  }
72
+ hasValidTimeout = (disabled, delay) => {
73
+ let disabledValue = disabled ?? false;
74
+ let delayValue = delay ?? DEFAULT_DELAY;
75
+ return _reactNative.AppState.currentState === 'active' && !disabledValue && delayValue > 0;
76
+ };
137
77
  UNSAFE_componentWillReceiveProps(nextProps) {
138
78
  if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {
139
79
  this.stopWatching();
@@ -144,13 +84,65 @@ class ViewPortDetector extends _react.Component {
144
84
  this.startWatching();
145
85
  }
146
86
  }
87
+ handleAppStateChange = nextAppState => {
88
+ let nextAppStateActive = nextAppState === 'active';
89
+ if (this.lastAppStateActive !== nextAppStateActive) {
90
+ this.checkVisibility();
91
+ }
92
+ this.lastAppStateActive = nextAppStateActive;
93
+ if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
94
+ this.stopWatching();
95
+ } else {
96
+ this.startWatching();
97
+ }
98
+ };
99
+ startWatching = () => {
100
+ if (this.interval) {
101
+ return;
102
+ }
103
+ this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
104
+ };
105
+ stopWatching = () => {
106
+ this.interval?.clear();
107
+ this.interval = null;
108
+ };
109
+ checkVisibility = () => {
110
+ if (!this.view) {
111
+ return;
112
+ }
113
+ if (_reactNative.AppState.currentState !== 'active') {
114
+ this.updateVisibility(false);
115
+ return;
116
+ }
117
+ this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
118
+ this.checkInViewPort(width, height);
119
+ });
120
+ };
121
+ checkInViewPort = (width, height) => {
122
+ let isVisible;
123
+ // Not visible if any of these are missing.
124
+ if (!width || !height) {
125
+ isVisible = false;
126
+ } else {
127
+ isVisible = true;
128
+ }
129
+ this.updateVisibility(isVisible);
130
+ };
131
+ updateVisibility = isVisible => {
132
+ if (this.lastValue !== isVisible) {
133
+ this.lastValue = isVisible;
134
+ this.props.onChange?.(isVisible);
135
+ }
136
+ };
147
137
  render() {
148
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
138
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
149
139
  collapsable: false,
150
140
  ref: component => {
151
141
  this.view = component;
152
- }
153
- }, this.props), this.props.children);
142
+ },
143
+ ...this.props,
144
+ children: this.props.children
145
+ });
154
146
  }
155
147
  }
156
148
  exports.default = ViewPortDetector;
@@ -1 +1 @@
1
- {"version":3,"names":["Object","defineProperty","exports","value","default","_react","_interopRequireWildcard","require","_reactNative","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","has","get","n","__proto__","a","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","_defineProperty","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DEFAULT_DELAY","TimeoutHandler","constructor","id","handler","handlerRef","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","Component","props","disabled","delay","disabledValue","delayValue","AppState","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","View","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":["Object","defineProperty","exports","value","default","_react","require","_reactNative","_jsxRuntime","DEFAULT_DELAY","TimeoutHandler","handlerRef","id","handler","n","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","Component","lastValue","interval","view","lastAppStateActive","appStateSubscription","constructor","props","state","rectTop","rectBottom","componentDidMount","AppState","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","jsx","View","collapsable","ref","component","children"],"sourceRoot":"../../../src","sources":["components/ViewPortDetector.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,23 +8,18 @@ var _reactNativeWebrtc = require("@livekit/react-native-webrtc");
8
8
  var _livekitClient = require("livekit-client");
9
9
  var _events = _interopRequireDefault(require("events"));
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- 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; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- 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); }
14
11
  /**
15
12
  * @experimental
16
13
  */
17
14
  class RNE2EEManager extends _events.default {
15
+ frameCryptors = new Map();
16
+ algorithm = _reactNativeWebrtc.RTCFrameCryptorAlgorithm.kAesGcm;
17
+ encryptionEnabled = false;
18
+ dataChannelEncryptionEnabled = false;
19
+ dataPacketCryptorLock = new _livekitClient.Mutex();
20
+ dataPacketCryptor = undefined;
18
21
  constructor(keyProvider, dcEncryptionEnabled = false) {
19
22
  super();
20
- _defineProperty(this, "room", void 0);
21
- _defineProperty(this, "frameCryptors", new Map());
22
- _defineProperty(this, "keyProvider", void 0);
23
- _defineProperty(this, "algorithm", _reactNativeWebrtc.RTCFrameCryptorAlgorithm.kAesGcm);
24
- _defineProperty(this, "encryptionEnabled", false);
25
- _defineProperty(this, "dataChannelEncryptionEnabled", false);
26
- _defineProperty(this, "dataPacketCryptorLock", new _livekitClient.Mutex());
27
- _defineProperty(this, "dataPacketCryptor", undefined);
28
23
  this.keyProvider = keyProvider;
29
24
  this.encryptionEnabled = false;
30
25
  this.dataChannelEncryptionEnabled = dcEncryptionEnabled;
@@ -169,13 +164,11 @@ class RNE2EEManager extends _events.default {
169
164
  // No-op
170
165
  }
171
166
  setParticipantCryptorEnabled(enabled, participantIdentity) {
172
- var _this$room;
173
- if (this.encryptionEnabled !== enabled && participantIdentity === ((_this$room = this.room) === null || _this$room === void 0 ? void 0 : _this$room.localParticipant.identity)) {
167
+ if (this.encryptionEnabled !== enabled && participantIdentity === this.room?.localParticipant.identity) {
174
168
  this.encryptionEnabled = enabled;
175
169
  this.emit(_livekitClient.EncryptionEvent.ParticipantEncryptionStatusChanged, enabled, this.room.localParticipant);
176
170
  } else {
177
- var _this$room2;
178
- const participant = (_this$room2 = this.room) === null || _this$room2 === void 0 ? void 0 : _this$room2.getParticipantByIdentity(participantIdentity);
171
+ const participant = this.room?.getParticipantByIdentity(participantIdentity);
179
172
  if (!participant) {
180
173
  throw TypeError(`couldn't set encryption status, participant not found ${participantIdentity}`);
181
174
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeWebrtc","require","_livekitClient","_events","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","RNE2EEManager","EventEmitter","constructor","keyProvider","dcEncryptionEnabled","Map","RTCFrameCryptorAlgorithm","kAesGcm","Mutex","undefined","encryptionEnabled","dataChannelEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","setup","room","setupEventListeners","localParticipant","on","ParticipantEvent","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","frameCryptors","delete","setEnabled","dispose","RoomEvent","TrackSubscribed","_track","pub","participant","setupE2EEReceiver","TrackUnsubscribed","_participant","SignalConnected","setParticipantCryptorEnabled","isE2EEEnabled","identity","isEncrypted","createFrameCryptorForSender","track","sender","set","setKeyIndex","getLatestKeyIndex","createFrameCryptorForReceiver","receiver","setSifTrailer","trailer","getDataPacketCryptor","dataPacketCryptor","unlock","dataPacketCryptorLock","lock","RTCDataPacketCryptorFactory","createDataPacketCryptor","algorithm","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","RTCFrameCryptorFactory","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","_this$room","emit","EncryptionEvent","ParticipantEncryptionStatusChanged","_this$room2","getParticipantByIdentity","exports"],"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":["_reactNativeWebrtc","require","_livekitClient","_events","_interopRequireDefault","e","__esModule","default","RNE2EEManager","EventEmitter","frameCryptors","Map","algorithm","RTCFrameCryptorAlgorithm","kAesGcm","encryptionEnabled","dataChannelEncryptionEnabled","dataPacketCryptorLock","Mutex","dataPacketCryptor","undefined","constructor","keyProvider","dcEncryptionEnabled","isEnabled","isDataChannelEncryptionEnabled","value","setup","room","setupEventListeners","localParticipant","on","ParticipantEvent","LocalTrackPublished","publication","setupE2EESender","LocalTrackUnpublished","frameCryptor","findTrackCryptor","trackSid","delete","setEnabled","dispose","RoomEvent","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","RTCDataPacketCryptorFactory","createDataPacketCryptor","rtcKeyProvider","encryptData","data","Error","participantId","encryptedPacket","encrypt","uuid","payload","iv","keyIndex","handleEncryptedData","participantIdentity","packet","decryptedData","decrypt","trackId","get","RTCFrameCryptorFactory","createFrameCryptorForRtpSender","createFrameCryptorForRtpReceiver","setupEngine","_engine","enabled","emit","EncryptionEvent","ParticipantEncryptionStatusChanged","getParticipantByIdentity","exports"],"sourceRoot":"../../../src","sources":["e2ee/RNE2EEManager.ts"],"mappings":"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","ignoreList":[]}
@@ -6,9 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _livekitClient = require("livekit-client");
8
8
  var _reactNativeWebrtc = require("@livekit/react-native-webrtc");
9
- 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; }
10
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
11
- 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); }
12
9
  const defaultRatchetSalt = 'LKFrameEncryptionKey';
13
10
  const defaultMagicBytes = 'LK-ROCKS';
14
11
  const defaultRatchetWindowSize = 16;
@@ -24,6 +21,7 @@ const defaultDiscardFrameWhenCryptorNotReady = false;
24
21
  * @experimental
25
22
  */
26
23
  class RNKeyProvider extends _livekitClient.BaseKeyProvider {
24
+ latestSetIndex = new Map();
27
25
  constructor(options) {
28
26
  const opts = {
29
27
  sharedKey: options.sharedKey ?? true,
@@ -40,8 +38,6 @@ class RNKeyProvider extends _livekitClient.BaseKeyProvider {
40
38
  }
41
39
  opts.uncryptedMagicBytes = magicBytes;
42
40
  super(opts);
43
- _defineProperty(this, "latestSetIndex", new Map());
44
- _defineProperty(this, "nativeKeyProvider", void 0);
45
41
  this.nativeKeyProvider = _reactNativeWebrtc.RTCFrameCryptorFactory.createDefaultKeyProvider(opts);
46
42
  }
47
43
  getLatestKeyIndex(participantId) {
@@ -1 +1 @@
1
- {"version":3,"names":["_livekitClient","require","_reactNativeWebrtc","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","BaseKeyProvider","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","Map","nativeKeyProvider","RTCFrameCryptorFactory","createDefaultKeyProvider","getLatestKeyIndex","participantId","latestSetIndex","get","setSharedKey","key","keyIndex","ratchetSharedKey","setKey","getOptions","set","ratchetKey","participantIdentity","setSifTrailer","trailer","rtcKeyProvider","dispose","exports","default"],"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":["_livekitClient","require","_reactNativeWebrtc","defaultRatchetSalt","defaultMagicBytes","defaultRatchetWindowSize","defaultFailureTolerance","defaultKeyRingSize","defaultDiscardFrameWhenCryptorNotReady","RNKeyProvider","BaseKeyProvider","latestSetIndex","Map","constructor","options","opts","sharedKey","ratchetSalt","ratchetWindowSize","failureTolerance","keyRingSize","keyringSize","discardFrameWhenCryptorNotReady","magicBytes","uncryptedMagicBytes","TextEncoder","encode","nativeKeyProvider","RTCFrameCryptorFactory","createDefaultKeyProvider","getLatestKeyIndex","participantId","get","setSharedKey","key","keyIndex","ratchetSharedKey","setKey","getOptions","set","ratchetKey","participantIdentity","setSifTrailer","trailer","rtcKeyProvider","dispose","exports","default"],"sourceRoot":"../../../src","sources":["e2ee/RNKeyProvider.ts"],"mappings":"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","ignoreList":[]}
@@ -26,18 +26,16 @@ function setupNativeEvents() {
26
26
  }
27
27
  const _subscriptions = new Map();
28
28
  function addListener(listener, eventName, eventHandler) {
29
- var _subscriptions$get;
30
29
  if (!NATIVE_EVENTS.includes(eventName)) {
31
30
  throw new Error(`Invalid event: ${eventName}`);
32
31
  }
33
32
  if (!_subscriptions.has(listener)) {
34
33
  _subscriptions.set(listener, []);
35
34
  }
36
- (_subscriptions$get = _subscriptions.get(listener)) === null || _subscriptions$get === void 0 || _subscriptions$get.push(eventEmitter.addListener(eventName, eventHandler));
35
+ _subscriptions.get(listener)?.push(eventEmitter.addListener(eventName, eventHandler));
37
36
  }
38
37
  function removeListener(listener) {
39
- var _subscriptions$get2;
40
- (_subscriptions$get2 = _subscriptions.get(listener)) === null || _subscriptions$get2 === void 0 || _subscriptions$get2.forEach(sub => {
38
+ _subscriptions.get(listener)?.forEach(sub => {
41
39
  sub.remove();
42
40
  });
43
41
  _subscriptions.delete(listener);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_EventEmitter","_interopRequireDefault","_LKNativeModule","e","__esModule","default","nativeEmitter","NativeEventEmitter","LiveKitModule","NATIVE_EVENTS","eventEmitter","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,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,eAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA8C,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAF9C;;AAIA;AACA;AACA,MAAMG,aAAa,GAAG,IAAIC,+BAAkB,CAACC,uBAAa,CAAC;AAE3D,MAAMC,aAAa,GAAG,CACpB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,CAChB;AAED,MAAMC,YAAY,GAAG,IAAIC,qBAAY,CAAC,CAAC;AAEhC,SAASC,iBAAiBA,CAAA,EAAG;EAClC,KAAK,MAAMC,SAAS,IAAIJ,aAAa,EAAE;IACrCH,aAAa,CAACQ,WAAW,CAACD,SAAS,EAAE,CAAC,GAAGE,IAAI,KAAK;MAChDL,YAAY,CAACM,IAAI,CAACH,SAAS,EAAE,GAAGE,IAAI,CAAC;IACvC,CAAC,CAAC;EACJ;AACF;AAKA,MAAME,cAAoD,GAAG,IAAIC,GAAG,CAAC,CAAC;AAE/D,SAASJ,WAAWA,CACzBK,QAAkB,EAClBN,SAAiB,EACjBO,YAA0B,EACpB;EAAA,IAAAC,kBAAA;EACN,IAAI,CAACZ,aAAa,CAACa,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,CAACjB,YAAY,CAACI,WAAW,CAACD,SAAS,EAAEO,YAAY,CAAC,CAAC;AAC7D;AAEO,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":["_reactNative","require","_EventEmitter","_interopRequireDefault","_LKNativeModule","e","__esModule","default","nativeEmitter","NativeEventEmitter","LiveKitModule","NATIVE_EVENTS","eventEmitter","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,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,eAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA8C,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAF9C;;AAIA;AACA;AACA,MAAMG,aAAa,GAAG,IAAIC,+BAAkB,CAACC,uBAAa,CAAC;AAE3D,MAAMC,aAAa,GAAG,CACpB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,CAChB;AAED,MAAMC,YAAY,GAAG,IAAIC,qBAAY,CAAC,CAAC;AAEhC,SAASC,iBAAiBA,CAAA,EAAG;EAClC,KAAK,MAAMC,SAAS,IAAIJ,aAAa,EAAE;IACrCH,aAAa,CAACQ,WAAW,CAACD,SAAS,EAAE,CAAC,GAAGE,IAAI,KAAK;MAChDL,YAAY,CAACM,IAAI,CAACH,SAAS,EAAE,GAAGE,IAAI,CAAC;IACvC,CAAC,CAAC;EACJ;AACF;AAKA,MAAME,cAAoD,GAAG,IAAIC,GAAG,CAAC,CAAC;AAE/D,SAASJ,WAAWA,CACzBK,QAAkB,EAClBN,SAAiB,EACjBO,YAA0B,EACpB;EACN,IAAI,CAACX,aAAa,CAACY,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,CAAChB,YAAY,CAACI,WAAW,CAACD,SAAS,EAAEO,YAAY,CAAC,CAAC;AAC7D;AAEO,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 +1 @@
1
- {"version":3,"names":["_RNE2EEManager","_interopRequireDefault","require","_","_react","e","__esModule","default","useRNE2EEManager","options","keyProvider","useState","RNKeyProvider","keyProviderOptions","e2eeManager","RNE2EEManager","useEffect","setup","setSharedKey","sharedKey","error","log","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,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,CAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAA4C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAc5C;AACA;AACA;AACO,SAASG,gBAAgBA,CAC9BC,OAAgC,EACZ;EACpB,IAAI,CAACC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAC1B,MAAM,IAAIC,eAAa,CAACH,OAAO,CAACI,kBAAkB,IAAI,CAAC,CAAC,CAC1D,CAAC;EACD,IAAI,CAACC,WAAW,CAAC,GAAG,IAAAH,eAAQ,EAAC,MAAM,IAAII,sBAAa,CAACL,WAAW,EAAE,KAAK,CAAC,CAAC;EAEzE,IAAAM,gBAAS,EAAC,MAAM;IACd,IAAIC,KAAK,GAAG,MAAAA,CAAA,KAAY;MACtB,IAAI;QACF,MAAMP,WAAW,CAACQ,YAAY,CAACT,OAAO,CAACU,SAAS,CAAC;MACnD,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdC,KAAG,CAACC,IAAI,CAAC,0BAA0B,EAAEF,KAAK,CAAC;MAC7C;IACF,CAAC;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,CAACP,WAAW,EAAED,OAAO,CAACU,SAAS,CAAC,CAAC;EAEpC,IAAAH,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXN,WAAW,CAACa,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,WAAW,CAAC,CAAC;EAEjB,OAAO;IACLA,WAAW;IACXI;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_RNE2EEManager","_interopRequireDefault","require","_","_react","e","__esModule","default","useRNE2EEManager","options","keyProvider","useState","RNKeyProvider","keyProviderOptions","e2eeManager","RNE2EEManager","useEffect","setup","setSharedKey","sharedKey","error","log","warn","dispose"],"sourceRoot":"../../../src","sources":["hooks/useE2EEManager.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,CAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAA4C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAc5C;AACA;AACA;AACO,SAASG,gBAAgBA,CAC9BC,OAAgC,EACZ;EACpB,IAAI,CAACC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAC1B,MAAM,IAAIC,eAAa,CAACH,OAAO,CAACI,kBAAkB,IAAI,CAAC,CAAC,CAC1D,CAAC;EACD,IAAI,CAACC,WAAW,CAAC,GAAG,IAAAH,eAAQ,EAAC,MAAM,IAAII,sBAAa,CAACL,WAAW,EAAE,KAAK,CAAC,CAAC;EAEzE,IAAAM,gBAAS,EAAC,MAAM;IACd,IAAIC,KAAK,GAAG,MAAAA,CAAA,KAAY;MACtB,IAAI;QACF,MAAMP,WAAW,CAACQ,YAAY,CAACT,OAAO,CAACU,SAAS,CAAC;MACnD,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdC,KAAG,CAACC,IAAI,CAAC,0BAA0B,EAAEF,KAAK,CAAC;MAC7C;IACF,CAAC;IACDH,KAAK,CAAC,CAAC;IACP,OAAO,MAAM,CAAC,CAAC;EACjB,CAAC,EAAE,CAACP,WAAW,EAAED,OAAO,CAACU,SAAS,CAAC,CAAC;EAEpC,IAAAH,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXN,WAAW,CAACa,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,WAAW,CAAC,CAAC;EAEjB,OAAO;IACLA,WAAW;IACXI;EACF,CAAC;AACH","ignoreList":[]}
@@ -28,8 +28,7 @@ const multibandDefaults = {
28
28
  * @returns A number array containing the volume for each frequency band.
29
29
  */
30
30
  function useMultibandTrackVolume(trackOrTrackReference, options) {
31
- var _trackOrTrackReferenc;
32
- const track = trackOrTrackReference instanceof _livekitClient.Track ? trackOrTrackReference : trackOrTrackReference === null || trackOrTrackReference === void 0 || (_trackOrTrackReferenc = trackOrTrackReference.publication) === null || _trackOrTrackReferenc === void 0 ? void 0 : _trackOrTrackReferenc.track;
31
+ const track = trackOrTrackReference instanceof _livekitClient.Track ? trackOrTrackReference : trackOrTrackReference?.publication?.track;
33
32
  const opts = (0, _react.useMemo)(() => {
34
33
  return {
35
34
  ...multibandDefaults,
@@ -39,10 +38,10 @@ function useMultibandTrackVolume(trackOrTrackReference, options) {
39
38
  // disabled due to use of JSON.stringify, dependencies are reference equality
40
39
  // eslint-disable-next-line react-hooks/exhaustive-deps
41
40
  }, [JSON.stringify(options)]);
42
- const mediaStreamTrack = track === null || track === void 0 ? void 0 : track.mediaStreamTrack;
41
+ const mediaStreamTrack = track?.mediaStreamTrack;
43
42
  const hasMediaStreamTrack = mediaStreamTrack != null;
44
- const peerConnectionId = (mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack._peerConnectionId) ?? -1;
45
- const mediaStreamTrackId = mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack.id;
43
+ const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;
44
+ const mediaStreamTrackId = mediaStreamTrack?.id;
46
45
  let [magnitudes, setMagnitudes] = (0, _react.useState)([]);
47
46
  (0, _react.useEffect)(() => {
48
47
  let listener = Object();
@@ -1 +1 @@
1
- {"version":3,"names":["_livekitClient","require","_react","_EventEmitter","_LKNativeModule","_interopRequireDefault","e","__esModule","default","multibandDefaults","bands","minFrequency","maxFrequency","updateInterval","useMultibandTrackVolume","trackOrTrackReference","options","_trackOrTrackReferenc","track","Track","publication","opts","useMemo","JSON","stringify","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","magnitudes","setMagnitudes","useState","useEffect","listener","Object","reactTag","LiveKitModule","createMultibandVolumeProcessor","addListener","event","removeListener","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,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA8C,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9C;AACA;AACA;AACA;;AAoBA,MAAMG,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;AACO,SAASC,uBAAuBA,CACrCC,qBAG+B,EAC/BC,OAAqC,EACrC;EAAA,IAAAC,qBAAA;EACA,MAAMC,KAAK,GACTH,qBAAqB,YAAYI,oBAAK,GAClCJ,qBAAqB,GAEnBA,qBAAqB,aAArBA,qBAAqB,gBAAAE,qBAAA,GAArBF,qBAAqB,CAAEK,WAAW,cAAAH,qBAAA,uBAAlCA,qBAAA,CAAoCC,KACrC;EACP,MAAMG,IAAI,GAAG,IAAAC,cAAO,EAAC,MAAM;IACzB,OAAO;MAAE,GAAGb,iBAAiB;MAAE,GAAGO;IAAQ,CAAC;;IAE3C;IACA;EACF,CAAC,EAAE,CAACO,IAAI,CAACC,SAAS,CAACR,OAAO,CAAC,CAAC,CAAC;EAE7B,MAAMS,gBAAgB,GAAGP,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,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,GAAG,IAAAC,eAAQ,EAAW,EAAE,CAAC;EACxD,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIX,mBAAmB,EAAE;MACvBW,QAAQ,GAAGC,uBAAa,CAACC,8BAA8B,CACrDlB,IAAI,EACJM,gBAAgB,EAChBE,kBACF,CAAC;MACD,IAAAW,yBAAW,EAACL,QAAQ,EAAE,wBAAwB,EAAGM,KAAU,IAAK;QAC9D,IAAIA,KAAK,CAACV,UAAU,IAAIM,QAAQ,IAAII,KAAK,CAACX,EAAE,KAAKO,QAAQ,EAAE;UACzDL,aAAa,CAACS,KAAK,CAACV,UAAU,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvB,IAAAgB,4BAAc,EAACP,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZC,uBAAa,CAACK,8BAA8B,CAC1CN,QAAQ,EACRV,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,EAAER,IAAI,CAAC,CAAC;EAErE,OAAOU,UAAU;AACnB","ignoreList":[]}
1
+ {"version":3,"names":["_livekitClient","require","_react","_EventEmitter","_LKNativeModule","_interopRequireDefault","e","__esModule","default","multibandDefaults","bands","minFrequency","maxFrequency","updateInterval","useMultibandTrackVolume","trackOrTrackReference","options","track","Track","publication","opts","useMemo","JSON","stringify","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","magnitudes","setMagnitudes","useState","useEffect","listener","Object","reactTag","LiveKitModule","createMultibandVolumeProcessor","addListener","event","removeListener","deleteMultibandVolumeProcessor"],"sourceRoot":"../../../src","sources":["hooks/useMultibandTrackVolume.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA8C,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9C;AACA;AACA;AACA;;AAoBA,MAAMG,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;AACO,SAASC,uBAAuBA,CACrCC,qBAG+B,EAC/BC,OAAqC,EACrC;EACA,MAAMC,KAAK,GACTF,qBAAqB,YAAYG,oBAAK,GAClCH,qBAAqB,GAEnBA,qBAAqB,EAAEI,WAAW,EAAEF,KACrC;EACP,MAAMG,IAAI,GAAG,IAAAC,cAAO,EAAC,MAAM;IACzB,OAAO;MAAE,GAAGZ,iBAAiB;MAAE,GAAGO;IAAQ,CAAC;;IAE3C;IACA;EACF,CAAC,EAAE,CAACM,IAAI,CAACC,SAAS,CAACP,OAAO,CAAC,CAAC,CAAC;EAE7B,MAAMQ,gBAAgB,GAAGP,KAAK,EAAEO,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,GAAG,IAAAC,eAAQ,EAAW,EAAE,CAAC;EACxD,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIX,mBAAmB,EAAE;MACvBW,QAAQ,GAAGC,uBAAa,CAACC,8BAA8B,CACrDlB,IAAI,EACJM,gBAAgB,EAChBE,kBACF,CAAC;MACD,IAAAW,yBAAW,EAACL,QAAQ,EAAE,wBAAwB,EAAGM,KAAU,IAAK;QAC9D,IAAIA,KAAK,CAACV,UAAU,IAAIM,QAAQ,IAAII,KAAK,CAACX,EAAE,KAAKO,QAAQ,EAAE;UACzDL,aAAa,CAACS,KAAK,CAACV,UAAU,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvB,IAAAgB,4BAAc,EAACP,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZC,uBAAa,CAACK,8BAA8B,CAC1CN,QAAQ,EACRV,gBAAgB,EAChBE,kBACF,CAAC;QACH;MACF;IACF,CAAC;EACH,CAAC,EAAE,CAACH,mBAAmB,EAAEC,gBAAgB,EAAEE,kBAAkB,EAAER,IAAI,CAAC,CAAC;EAErE,OAAOU,UAAU;AACnB","ignoreList":[]}
@@ -16,12 +16,11 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
16
  * @returns A number between 0-1 representing the volume.
17
17
  */
18
18
  function useTrackVolume(trackOrTrackReference) {
19
- var _trackOrTrackReferenc;
20
- const track = trackOrTrackReference instanceof _livekitClient.Track ? trackOrTrackReference : trackOrTrackReference === null || trackOrTrackReference === void 0 || (_trackOrTrackReferenc = trackOrTrackReference.publication) === null || _trackOrTrackReferenc === void 0 ? void 0 : _trackOrTrackReferenc.track;
21
- const mediaStreamTrack = track === null || track === void 0 ? void 0 : track.mediaStreamTrack;
19
+ const track = trackOrTrackReference instanceof _livekitClient.Track ? trackOrTrackReference : trackOrTrackReference?.publication?.track;
20
+ const mediaStreamTrack = track?.mediaStreamTrack;
22
21
  const hasMediaStreamTrack = mediaStreamTrack != null;
23
- const peerConnectionId = (mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack._peerConnectionId) ?? -1;
24
- const mediaStreamTrackId = mediaStreamTrack === null || mediaStreamTrack === void 0 ? void 0 : mediaStreamTrack.id;
22
+ const peerConnectionId = mediaStreamTrack?._peerConnectionId ?? -1;
23
+ const mediaStreamTrackId = mediaStreamTrack?.id;
25
24
  let [volume, setVolume] = (0, _react.useState)(0.0);
26
25
  (0, _react.useEffect)(() => {
27
26
  let listener = Object();
@@ -1 +1 @@
1
- {"version":3,"names":["_livekitClient","require","_react","_EventEmitter","_LKNativeModule","_interopRequireDefault","e","__esModule","default","useTrackVolume","trackOrTrackReference","_trackOrTrackReferenc","track","Track","publication","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","volume","setVolume","useState","useEffect","listener","Object","reactTag","LiveKitModule","createVolumeProcessor","addListener","event","removeListener","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,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA8C,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9C;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,cAAcA,CAC5BC,qBAG+B,EAC/B;EAAA,IAAAC,qBAAA;EACA,MAAMC,KAAK,GACTF,qBAAqB,YAAYG,oBAAK,GAClCH,qBAAqB,GAEnBA,qBAAqB,aAArBA,qBAAqB,gBAAAC,qBAAA,GAArBD,qBAAqB,CAAEI,WAAW,cAAAH,qBAAA,uBAAlCA,qBAAA,CAAoCC,KACrC;EAEP,MAAMG,gBAAgB,GAAGH,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,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,GAAG,IAAAC,eAAQ,EAAC,GAAG,CAAC;EACvC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIX,mBAAmB,EAAE;MACvBW,QAAQ,GAAGC,uBAAa,CAACC,qBAAqB,CAC5CZ,gBAAgB,EAChBE,kBACF,CAAC;MACD,IAAAW,yBAAW,EAACL,QAAQ,EAAE,qBAAqB,EAAGM,KAAU,IAAK;QAC3D,IAAIA,KAAK,CAACV,MAAM,IAAIM,QAAQ,IAAII,KAAK,CAACX,EAAE,KAAKO,QAAQ,EAAE;UACrDL,SAAS,CAACS,KAAK,CAACV,MAAM,CAAC;QACzB;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvB,IAAAgB,4BAAc,EAACP,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZC,uBAAa,CAACK,qBAAqB,CACjCN,QAAQ,EACRV,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":["_livekitClient","require","_react","_EventEmitter","_LKNativeModule","_interopRequireDefault","e","__esModule","default","useTrackVolume","trackOrTrackReference","track","Track","publication","mediaStreamTrack","hasMediaStreamTrack","peerConnectionId","_peerConnectionId","mediaStreamTrackId","id","volume","setVolume","useState","useEffect","listener","Object","reactTag","LiveKitModule","createVolumeProcessor","addListener","event","removeListener","deleteVolumeProcessor"],"sourceRoot":"../../../src","sources":["hooks/useTrackVolume.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAA8C,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9C;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,cAAcA,CAC5BC,qBAG+B,EAC/B;EACA,MAAMC,KAAK,GACTD,qBAAqB,YAAYE,oBAAK,GAClCF,qBAAqB,GAEnBA,qBAAqB,EAAEG,WAAW,EAAEF,KACrC;EAEP,MAAMG,gBAAgB,GAAGH,KAAK,EAAEG,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,GAAG,IAAAC,eAAQ,EAAC,GAAG,CAAC;EACvC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,QAAQ,GAAGC,MAAM,CAAC,CAAC;IACvB,IAAIC,QAAuB,GAAG,IAAI;IAClC,IAAIX,mBAAmB,EAAE;MACvBW,QAAQ,GAAGC,uBAAa,CAACC,qBAAqB,CAC5CZ,gBAAgB,EAChBE,kBACF,CAAC;MACD,IAAAW,yBAAW,EAACL,QAAQ,EAAE,qBAAqB,EAAGM,KAAU,IAAK;QAC3D,IAAIA,KAAK,CAACV,MAAM,IAAIM,QAAQ,IAAII,KAAK,CAACX,EAAE,KAAKO,QAAQ,EAAE;UACrDL,SAAS,CAACS,KAAK,CAACV,MAAM,CAAC;QACzB;MACF,CAAC,CAAC;IACJ;IACA,OAAO,MAAM;MACX,IAAIL,mBAAmB,EAAE;QACvB,IAAAgB,4BAAc,EAACP,QAAQ,CAAC;QACxB,IAAIE,QAAQ,EAAE;UACZC,uBAAa,CAACK,qBAAqB,CACjCN,QAAQ,EACRV,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 +1 @@
1
- {"version":3,"names":["_componentsReact","require","_useE2EEManager","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useTrackVolume","_useMultibandTrackVolume"],"sources":["hooks.ts"],"sourcesContent":["export {\n useConnectionState,\n useDataChannel,\n useIsSpeaking,\n useLocalParticipant,\n useLocalParticipantPermissions,\n useParticipantInfo,\n useParticipants,\n useRemoteParticipants,\n useRemoteParticipant,\n useSpeakingParticipants,\n useSortedParticipants,\n useChat,\n useIsEncrypted,\n useRoomInfo,\n useIsMuted,\n useParticipantTracks,\n useLiveKitRoom,\n RoomContext,\n useRoomContext,\n ParticipantContext,\n useParticipantContext,\n TrackRefContext,\n useTrackRefContext,\n useTracks,\n isTrackReference,\n useEnsureTrackRef,\n useMaybeTrackRefContext,\n useTrackMutedIndicator,\n useVisualStableUpdate,\n useVoiceAssistant,\n useTrackTranscription,\n} from '@livekit/components-react';\nexport type {\n AgentState,\n UseLocalParticipantOptions,\n UseParticipantInfoOptions,\n UseParticipantsOptions,\n UseRemoteParticipantOptions,\n UseRemoteParticipantsOptions,\n UseTracksOptions,\n TrackReference,\n TrackReferenceOrPlaceholder,\n UseVisualStableUpdateOptions,\n TrackTranscriptionOptions,\n} from '@livekit/components-react';\n\nexport type { ReceivedDataMessage } from '@livekit/components-core';\nexport * from './hooks/useE2EEManager';\nexport * from './hooks/useTrackVolume';\nexport * from './hooks/useMultibandTrackVolume';\nexport type { UseRNE2EEManagerOptions } from './hooks/useE2EEManager';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAgDA,IAAAC,eAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,eAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,eAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,eAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,eAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,eAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,eAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,eAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,wBAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,wBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,wBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,wBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_componentsReact","require","_useE2EEManager","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useTrackVolume","_useMultibandTrackVolume"],"sourceRoot":"../../src","sources":["hooks.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAgDA,IAAAC,eAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,eAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,eAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,eAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,eAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,eAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,eAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,eAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,wBAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,wBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,wBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,wBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -163,8 +163,7 @@ Object.keys(_AudioManager).forEach(function (key) {
163
163
  });
164
164
  });
165
165
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
166
- 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); }
167
- 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; }
166
+ 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); }
168
167
  /**
169
168
  * Registers the required globals needed for LiveKit to work.
170
169
  *
@@ -219,9 +218,8 @@ function livekitRegisterGlobals() {
219
218
  global.LiveKitReactNativeGlobal = lkGlobal;
220
219
  }
221
220
  function fixWebrtcAdapter() {
222
- var _window;
223
221
  // @ts-ignore
224
- if (((_window = window) === null || _window === void 0 ? void 0 : _window.navigator) !== undefined) {
222
+ if (window?.navigator !== undefined) {
225
223
  // @ts-ignore
226
224
  const {
227
225
  navigator
@@ -243,9 +241,8 @@ function shimArrayAt() {
243
241
  }
244
242
  }
245
243
  function shimCryptoUuid() {
246
- var _global$crypto;
247
244
  let crypto = global.crypto;
248
- if (typeof ((_global$crypto = global.crypto) === null || _global$crypto === void 0 ? void 0 : _global$crypto.randomUUID) !== 'function') {
245
+ if (typeof global.crypto?.randomUUID !== 'function') {
249
246
  let createRandomUUID = () => {
250
247
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
251
248
  /* eslint-disable no-bitwise */