@livekit/react-native 2.0.1 → 2.1.0-0

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 (59) hide show
  1. package/README.md +4 -0
  2. package/android/src/main/java/com/livekit/reactnative/LiveKitReactNative.kt +4 -4
  3. package/android/src/main/java/com/livekit/reactnative/video/CustomVideoDecoderFactory.kt +67 -0
  4. package/android/src/main/java/com/livekit/reactnative/video/CustomVideoEncoderFactory.kt +74 -0
  5. package/lib/commonjs/components/LiveKitRoom.js +43 -0
  6. package/lib/commonjs/components/LiveKitRoom.js.map +1 -0
  7. package/lib/commonjs/components/VideoTrack.js +171 -0
  8. package/lib/commonjs/components/VideoTrack.js.map +1 -0
  9. package/lib/commonjs/components/VideoView.js +15 -11
  10. package/lib/commonjs/components/VideoView.js.map +1 -1
  11. package/lib/commonjs/components/ViewPortDetector.js +134 -39
  12. package/lib/commonjs/components/ViewPortDetector.js.map +1 -1
  13. package/lib/commonjs/hooks.js +232 -0
  14. package/lib/commonjs/hooks.js.map +1 -0
  15. package/lib/commonjs/index.js +42 -0
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/useParticipant.js +1 -0
  18. package/lib/commonjs/useParticipant.js.map +1 -1
  19. package/lib/commonjs/useRoom.js +1 -0
  20. package/lib/commonjs/useRoom.js.map +1 -1
  21. package/lib/module/components/LiveKitRoom.js +32 -0
  22. package/lib/module/components/LiveKitRoom.js.map +1 -0
  23. package/lib/module/components/VideoTrack.js +152 -0
  24. package/lib/module/components/VideoTrack.js.map +1 -0
  25. package/lib/module/components/VideoView.js +20 -12
  26. package/lib/module/components/VideoView.js.map +1 -1
  27. package/lib/module/components/ViewPortDetector.js +134 -40
  28. package/lib/module/components/ViewPortDetector.js.map +1 -1
  29. package/lib/module/hooks.js +3 -0
  30. package/lib/module/hooks.js.map +1 -0
  31. package/lib/module/index.js +9 -3
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/useParticipant.js +3 -0
  34. package/lib/module/useParticipant.js.map +1 -1
  35. package/lib/module/useRoom.js +2 -0
  36. package/lib/module/useRoom.js.map +1 -1
  37. package/lib/typescript/components/LiveKitRoom.d.ts +90 -0
  38. package/lib/typescript/components/VideoTrack.d.ts +11 -0
  39. package/lib/typescript/components/VideoView.d.ts +6 -0
  40. package/lib/typescript/components/ViewPortDetector.d.ts +11 -4
  41. package/lib/typescript/hooks.d.ts +2 -0
  42. package/lib/typescript/index.d.ts +3 -0
  43. package/lib/typescript/useParticipant.d.ts +2 -0
  44. package/lib/typescript/useRoom.d.ts +1 -0
  45. package/livekit-react-native.podspec +5 -0
  46. package/package.json +2 -1
  47. package/src/components/LiveKitRoom.tsx +118 -0
  48. package/src/components/VideoTrack.tsx +150 -0
  49. package/src/components/VideoView.tsx +26 -13
  50. package/src/components/ViewPortDetector.tsx +112 -21
  51. package/src/hooks.ts +40 -0
  52. package/src/index.tsx +6 -4
  53. package/src/useParticipant.ts +2 -1
  54. package/src/useRoom.ts +1 -0
  55. package/android/local.properties +0 -8
  56. package/ios/LivekitReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  57. package/ios/LivekitReactNative.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  58. package/ios/LivekitReactNative.xcodeproj/project.xcworkspace/xcuserdata/davidliu.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  59. package/ios/LivekitReactNative.xcodeproj/xcuserdata/davidliu.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
@@ -17,11 +17,56 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
17
17
 
18
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
19
 
20
+ const DEFAULT_DELAY = 1000;
21
+
22
+ class TimeoutHandler {
23
+ constructor() {
24
+ _defineProperty(this, "handlerRef", {
25
+ id: -1
26
+ });
27
+ }
28
+
29
+ get handler() {
30
+ return this.handlerRef.id;
31
+ }
32
+
33
+ set handler(n) {
34
+ this.handlerRef.id = n;
35
+ }
36
+
37
+ clear() {
38
+ clearTimeout(this.handlerRef.id);
39
+ }
40
+
41
+ }
42
+
43
+ function setIntervalWithTimeout(callback, intervalMs) {
44
+ let handleWrapper = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new TimeoutHandler();
45
+ let cleared = false;
46
+
47
+ const timeout = () => {
48
+ handleWrapper.handler = setTimeout(() => {
49
+ callback(() => {
50
+ cleared = true;
51
+ handleWrapper.clear();
52
+ });
53
+
54
+ if (!cleared) {
55
+ timeout();
56
+ }
57
+ }, intervalMs);
58
+ };
59
+
60
+ timeout();
61
+ return handleWrapper;
62
+ }
20
63
  /**
21
64
  * Detects when this is in the viewport and visible.
22
65
  *
23
66
  * Will not fire visibility changes for zero width/height components.
24
67
  */
68
+
69
+
25
70
  class ViewPortDetector extends _react.Component {
26
71
  constructor(props) {
27
72
  super(props);
@@ -32,6 +77,83 @@ class ViewPortDetector extends _react.Component {
32
77
 
33
78
  _defineProperty(this, "view", null);
34
79
 
80
+ _defineProperty(this, "lastAppStateActive", false);
81
+
82
+ _defineProperty(this, "appStateSubscription", null);
83
+
84
+ _defineProperty(this, "hasValidTimeout", (disabled, delay) => {
85
+ let disabledValue = disabled !== null && disabled !== void 0 ? disabled : false;
86
+ let delayValue = delay !== null && delay !== void 0 ? delay : DEFAULT_DELAY;
87
+ return _reactNative.AppState.currentState === 'active' && !disabledValue && delayValue > 0;
88
+ });
89
+
90
+ _defineProperty(this, "handleAppStateChange", nextAppState => {
91
+ let nextAppStateActive = nextAppState === 'active';
92
+
93
+ if (this.lastAppStateActive !== nextAppStateActive) {
94
+ this.checkVisibility();
95
+ }
96
+
97
+ this.lastAppStateActive = nextAppStateActive;
98
+
99
+ if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {
100
+ this.stopWatching();
101
+ } else {
102
+ this.startWatching();
103
+ }
104
+ });
105
+
106
+ _defineProperty(this, "startWatching", () => {
107
+ if (this.interval) {
108
+ return;
109
+ }
110
+
111
+ this.interval = setIntervalWithTimeout(this.checkVisibility, this.props.delay || DEFAULT_DELAY);
112
+ });
113
+
114
+ _defineProperty(this, "stopWatching", () => {
115
+ var _this$interval;
116
+
117
+ (_this$interval = this.interval) === null || _this$interval === void 0 ? void 0 : _this$interval.clear();
118
+ this.interval = null;
119
+ });
120
+
121
+ _defineProperty(this, "checkVisibility", () => {
122
+ if (!this.view) {
123
+ return;
124
+ }
125
+
126
+ if (_reactNative.AppState.currentState !== 'active') {
127
+ this.updateVisibility(false);
128
+ return;
129
+ }
130
+
131
+ this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
132
+ this.checkInViewPort(width, height);
133
+ });
134
+ });
135
+
136
+ _defineProperty(this, "checkInViewPort", (width, height) => {
137
+ let isVisible; // Not visible if any of these are missing.
138
+
139
+ if (!width || !height) {
140
+ isVisible = false;
141
+ } else {
142
+ isVisible = true;
143
+ }
144
+
145
+ this.updateVisibility(isVisible);
146
+ });
147
+
148
+ _defineProperty(this, "updateVisibility", isVisible => {
149
+ if (this.lastValue !== isVisible) {
150
+ var _this$props$onChange, _this$props;
151
+
152
+ this.lastValue = isVisible;
153
+ (_this$props$onChange = (_this$props = this.props).onChange) === null || _this$props$onChange === void 0 ? void 0 : _this$props$onChange.call(_this$props, isVisible);
154
+ }
155
+ });
156
+
35
157
  this.state = {
36
158
  rectTop: 0,
37
159
  rectBottom: 0
@@ -39,58 +161,31 @@ class ViewPortDetector extends _react.Component {
39
161
  }
40
162
 
41
163
  componentDidMount() {
42
- if (!this.props.disabled) {
164
+ this.lastAppStateActive = _reactNative.AppState.currentState === 'active';
165
+ this.appStateSubscription = _reactNative.AppState.addEventListener('change', this.handleAppStateChange);
166
+
167
+ if (this.hasValidTimeout(this.props.disabled, this.props.delay)) {
43
168
  this.startWatching();
44
169
  }
45
170
  }
46
171
 
47
172
  componentWillUnmount() {
173
+ var _this$appStateSubscri;
174
+
175
+ (_this$appStateSubscri = this.appStateSubscription) === null || _this$appStateSubscri === void 0 ? void 0 : _this$appStateSubscri.remove();
176
+ this.appStateSubscription = null;
48
177
  this.stopWatching();
49
178
  }
50
179
 
51
180
  UNSAFE_componentWillReceiveProps(nextProps) {
52
- if (nextProps.disabled) {
181
+ if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {
53
182
  this.stopWatching();
54
183
  } else {
55
- this.lastValue = null;
56
- this.startWatching();
57
- }
58
- }
59
-
60
- startWatching() {
61
- if (this.interval) {
62
- return;
63
- }
64
-
65
- this.interval = setInterval(() => {
66
- if (!this.view) {
67
- return;
184
+ if (this.props.propKey !== nextProps.propKey) {
185
+ this.lastValue = null;
68
186
  }
69
187
 
70
- this.view.measure((_x, _y, width, height, _pageX, _pageY) => {
71
- this.checkInViewPort(width, height);
72
- });
73
- }, this.props.delay || 100);
74
- }
75
-
76
- stopWatching() {
77
- this.interval = clearInterval(this.interval);
78
- }
79
-
80
- checkInViewPort(width, height) {
81
- let isVisible; // Not visible if any of these are missing.
82
-
83
- if (!width || !height) {
84
- isVisible = false;
85
- } else {
86
- isVisible = true;
87
- }
88
-
89
- if (this.lastValue !== isVisible) {
90
- var _this$props$onChange, _this$props;
91
-
92
- this.lastValue = isVisible;
93
- (_this$props$onChange = (_this$props = this.props).onChange) === null || _this$props$onChange === void 0 ? void 0 : _this$props$onChange.call(_this$props, isVisible);
188
+ this.startWatching();
94
189
  }
95
190
  }
96
191
 
@@ -1 +1 @@
1
- {"version":3,"sources":["ViewPortDetector.tsx"],"names":["ViewPortDetector","Component","constructor","props","state","rectTop","rectBottom","componentDidMount","disabled","startWatching","componentWillUnmount","stopWatching","UNSAFE_componentWillReceiveProps","nextProps","lastValue","interval","setInterval","view","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","delay","clearInterval","isVisible","onChange","render","component","children"],"mappings":"AAAA;;;;;;;AAEA;;AACA;;;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACe,MAAMA,gBAAN,SAA+BC,gBAA/B,CAEb;AAKAC,EAAAA,WAAW,CAACC,KAAD,EAAe;AACxB,UAAMA,KAAN;;AADwB,uCAJU,IAIV;;AAAA,sCAHK,IAGL;;AAAA,kCAFE,IAEF;;AAExB,SAAKC,KAAL,GAAa;AAAEC,MAAAA,OAAO,EAAE,CAAX;AAAcC,MAAAA,UAAU,EAAE;AAA1B,KAAb;AACD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,QAAI,CAAC,KAAKJ,KAAL,CAAWK,QAAhB,EAA0B;AACxB,WAAKC,aAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKC,YAAL;AACD;;AAEDC,EAAAA,gCAAgC,CAACC,SAAD,EAAmB;AACjD,QAAIA,SAAS,CAACL,QAAd,EAAwB;AACtB,WAAKG,YAAL;AACD,KAFD,MAEO;AACL,WAAKG,SAAL,GAAiB,IAAjB;AACA,WAAKL,aAAL;AACD;AACF;;AAEOA,EAAAA,aAAa,GAAG;AACtB,QAAI,KAAKM,QAAT,EAAmB;AACjB;AACD;;AACD,SAAKA,QAAL,GAAgBC,WAAW,CAAC,MAAM;AAChC,UAAI,CAAC,KAAKC,IAAV,EAAgB;AACd;AACD;;AACD,WAAKA,IAAL,CAAUC,OAAV,CAAkB,CAACC,EAAD,EAAKC,EAAL,EAASC,KAAT,EAAgBC,MAAhB,EAAwBC,MAAxB,EAAgCC,MAAhC,KAA2C;AAC3D,aAAKC,eAAL,CAAqBJ,KAArB,EAA4BC,MAA5B;AACD,OAFD;AAGD,KAP0B,EAOxB,KAAKnB,KAAL,CAAWuB,KAAX,IAAoB,GAPI,CAA3B;AAQD;;AAEOf,EAAAA,YAAY,GAAG;AACrB,SAAKI,QAAL,GAAgBY,aAAa,CAAC,KAAKZ,QAAN,CAA7B;AACD;;AAEOU,EAAAA,eAAe,CAACJ,KAAD,EAAiBC,MAAjB,EAAkC;AACvD,QAAIM,SAAJ,CADuD,CAEvD;;AACA,QAAI,CAACP,KAAD,IAAU,CAACC,MAAf,EAAuB;AACrBM,MAAAA,SAAS,GAAG,KAAZ;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,GAAG,IAAZ;AACD;;AAED,QAAI,KAAKd,SAAL,KAAmBc,SAAvB,EAAkC;AAAA;;AAChC,WAAKd,SAAL,GAAiBc,SAAjB;AACA,kDAAKzB,KAAL,EAAW0B,QAAX,gGAAsBD,SAAtB;AACD;AACF;;AAEDE,EAAAA,MAAM,GAAG;AACP,wBACE,6BAAC,iBAAD;AACE,MAAA,WAAW,EAAE,KADf;AAEE,MAAA,GAAG,EAAGC,SAAD,IAAe;AAClB,aAAKd,IAAL,GAAYc,SAAZ;AACD;AAJH,OAKM,KAAK5B,KALX,GAOG,KAAKA,KAAL,CAAW6B,QAPd,CADF;AAWD;;AA1ED","sourcesContent":["'use strict';\n\nimport React, { Component, PropsWithChildren } from 'react';\nimport { View, ViewStyle } from 'react-native';\n\nexport type Props = {\n disabled?: boolean;\n style?: ViewStyle;\n onChange?: (isVisible: boolean) => void;\n delay?: number;\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: any | null = null;\n private view: View | null = null;\n\n constructor(props: Props) {\n super(props);\n this.state = { rectTop: 0, rectBottom: 0 };\n }\n\n componentDidMount() {\n if (!this.props.disabled) {\n this.startWatching();\n }\n }\n\n componentWillUnmount() {\n this.stopWatching();\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n if (nextProps.disabled) {\n this.stopWatching();\n } else {\n this.lastValue = null;\n this.startWatching();\n }\n }\n\n private startWatching() {\n if (this.interval) {\n return;\n }\n this.interval = setInterval(() => {\n if (!this.view) {\n return;\n }\n this.view.measure((_x, _y, width, height, _pageX, _pageY) => {\n this.checkInViewPort(width, height);\n });\n }, this.props.delay || 100);\n }\n\n private stopWatching() {\n this.interval = clearInterval(this.interval);\n }\n\n private 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\n if (this.lastValue !== isVisible) {\n this.lastValue = isVisible;\n this.props.onChange?.(isVisible);\n }\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"]}
1
+ {"version":3,"sources":["ViewPortDetector.tsx"],"names":["DEFAULT_DELAY","TimeoutHandler","id","handler","handlerRef","n","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","Component","constructor","props","disabled","delay","disabledValue","delayValue","AppState","currentState","nextAppState","nextAppStateActive","lastAppStateActive","checkVisibility","hasValidTimeout","stopWatching","startWatching","interval","view","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","lastValue","onChange","state","rectTop","rectBottom","componentDidMount","appStateSubscription","addEventListener","handleAppStateChange","componentWillUnmount","remove","UNSAFE_componentWillReceiveProps","nextProps","propKey","render","component","children"],"mappings":"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","sourcesContent":["'use strict';\n\nimport React, { Component, PropsWithChildren } from 'react';\nimport {\n AppState,\n AppStateStatus,\n NativeEventSubscription,\n View,\n 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"]}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ParticipantContext", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _componentsReact.ParticipantContext;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ReceivedDataMessage", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _componentsCore.ReceivedDataMessage;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "RoomContext", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _componentsReact.RoomContext;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "TrackRefContext", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _componentsReact.TrackRefContext;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "TrackReference", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _componentsReact.TrackReference;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "TrackReferenceOrPlaceholder", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _componentsReact.TrackReferenceOrPlaceholder;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "UseLocalParticipantOptions", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _componentsReact.UseLocalParticipantOptions;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "UseParticipantInfoOptions", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _componentsReact.UseParticipantInfoOptions;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "UseParticipantsOptions", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _componentsReact.UseParticipantsOptions;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "UseRemoteParticipantOptions", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _componentsReact.UseRemoteParticipantOptions;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "UseRemoteParticipantsOptions", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _componentsReact.UseRemoteParticipantsOptions;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "UseTracksOptions", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _componentsReact.UseTracksOptions;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "UseVisualStableUpdateOptions", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _componentsReact.UseVisualStableUpdateOptions;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "isTrackReference", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _componentsReact.isTrackReference;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "useChat", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _componentsReact.useChat;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "useConnectionState", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _componentsReact.useConnectionState;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "useDataChannel", {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _componentsReact.useDataChannel;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "useEnsureTrackRef", {
109
+ enumerable: true,
110
+ get: function () {
111
+ return _componentsReact.useEnsureTrackRef;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "useIsEncrypted", {
115
+ enumerable: true,
116
+ get: function () {
117
+ return _componentsReact.useIsEncrypted;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "useIsMuted", {
121
+ enumerable: true,
122
+ get: function () {
123
+ return _componentsReact.useIsMuted;
124
+ }
125
+ });
126
+ Object.defineProperty(exports, "useIsSpeaking", {
127
+ enumerable: true,
128
+ get: function () {
129
+ return _componentsReact.useIsSpeaking;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "useLiveKitRoom", {
133
+ enumerable: true,
134
+ get: function () {
135
+ return _componentsReact.useLiveKitRoom;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "useLocalParticipant", {
139
+ enumerable: true,
140
+ get: function () {
141
+ return _componentsReact.useLocalParticipant;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "useLocalParticipantPermissions", {
145
+ enumerable: true,
146
+ get: function () {
147
+ return _componentsReact.useLocalParticipantPermissions;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "useParticipantContext", {
151
+ enumerable: true,
152
+ get: function () {
153
+ return _componentsReact.useParticipantContext;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "useParticipantInfo", {
157
+ enumerable: true,
158
+ get: function () {
159
+ return _componentsReact.useParticipantInfo;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, "useParticipantTracks", {
163
+ enumerable: true,
164
+ get: function () {
165
+ return _componentsReact.useParticipantTracks;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "useParticipants", {
169
+ enumerable: true,
170
+ get: function () {
171
+ return _componentsReact.useParticipants;
172
+ }
173
+ });
174
+ Object.defineProperty(exports, "useRemoteParticipant", {
175
+ enumerable: true,
176
+ get: function () {
177
+ return _componentsReact.useRemoteParticipant;
178
+ }
179
+ });
180
+ Object.defineProperty(exports, "useRemoteParticipants", {
181
+ enumerable: true,
182
+ get: function () {
183
+ return _componentsReact.useRemoteParticipants;
184
+ }
185
+ });
186
+ Object.defineProperty(exports, "useRoomContext", {
187
+ enumerable: true,
188
+ get: function () {
189
+ return _componentsReact.useRoomContext;
190
+ }
191
+ });
192
+ Object.defineProperty(exports, "useSortedParticipants", {
193
+ enumerable: true,
194
+ get: function () {
195
+ return _componentsReact.useSortedParticipants;
196
+ }
197
+ });
198
+ Object.defineProperty(exports, "useSpeakingParticipants", {
199
+ enumerable: true,
200
+ get: function () {
201
+ return _componentsReact.useSpeakingParticipants;
202
+ }
203
+ });
204
+ Object.defineProperty(exports, "useTrackMutedIndicator", {
205
+ enumerable: true,
206
+ get: function () {
207
+ return _componentsReact.useTrackMutedIndicator;
208
+ }
209
+ });
210
+ Object.defineProperty(exports, "useTrackRefContext", {
211
+ enumerable: true,
212
+ get: function () {
213
+ return _componentsReact.useTrackRefContext;
214
+ }
215
+ });
216
+ Object.defineProperty(exports, "useTracks", {
217
+ enumerable: true,
218
+ get: function () {
219
+ return _componentsReact.useTracks;
220
+ }
221
+ });
222
+ Object.defineProperty(exports, "useVisualStableUpdate", {
223
+ enumerable: true,
224
+ get: function () {
225
+ return _componentsReact.useVisualStableUpdate;
226
+ }
227
+ });
228
+
229
+ var _componentsReact = require("@livekit/components-react");
230
+
231
+ var _componentsCore = require("@livekit/components-core");
232
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAuCA","sourcesContent":["export {\n useConnectionState,\n useDataChannel,\n useIsSpeaking,\n useLocalParticipant,\n UseLocalParticipantOptions,\n useLocalParticipantPermissions,\n useParticipantInfo,\n UseParticipantInfoOptions,\n useParticipants,\n UseParticipantsOptions,\n useRemoteParticipants,\n UseRemoteParticipantOptions,\n useRemoteParticipant,\n UseRemoteParticipantsOptions,\n useSpeakingParticipants,\n useSortedParticipants,\n useChat,\n useIsEncrypted,\n useIsMuted,\n useParticipantTracks,\n useLiveKitRoom,\n RoomContext,\n useRoomContext,\n ParticipantContext,\n useParticipantContext,\n TrackRefContext,\n useTrackRefContext,\n useTracks,\n UseTracksOptions,\n TrackReference,\n TrackReferenceOrPlaceholder,\n isTrackReference,\n useEnsureTrackRef,\n useTrackMutedIndicator,\n useVisualStableUpdate,\n UseVisualStableUpdateOptions,\n} from '@livekit/components-react';\n\nexport { ReceivedDataMessage } from '@livekit/components-core';\n"]}
@@ -81,6 +81,48 @@ var _AudioSession = _interopRequireWildcard(require("./audio/AudioSession"));
81
81
 
82
82
  var _reactNative = require("react-native");
83
83
 
84
+ var _hooks = require("./hooks");
85
+
86
+ Object.keys(_hooks).forEach(function (key) {
87
+ if (key === "default" || key === "__esModule") return;
88
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
89
+ if (key in exports && exports[key] === _hooks[key]) return;
90
+ Object.defineProperty(exports, key, {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _hooks[key];
94
+ }
95
+ });
96
+ });
97
+
98
+ var _LiveKitRoom = require("./components/LiveKitRoom");
99
+
100
+ Object.keys(_LiveKitRoom).forEach(function (key) {
101
+ if (key === "default" || key === "__esModule") return;
102
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
103
+ if (key in exports && exports[key] === _LiveKitRoom[key]) return;
104
+ Object.defineProperty(exports, key, {
105
+ enumerable: true,
106
+ get: function () {
107
+ return _LiveKitRoom[key];
108
+ }
109
+ });
110
+ });
111
+
112
+ var _VideoTrack = require("./components/VideoTrack");
113
+
114
+ Object.keys(_VideoTrack).forEach(function (key) {
115
+ if (key === "default" || key === "__esModule") return;
116
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
117
+ if (key in exports && exports[key] === _VideoTrack[key]) return;
118
+ Object.defineProperty(exports, key, {
119
+ enumerable: true,
120
+ get: function () {
121
+ return _VideoTrack[key];
122
+ }
123
+ });
124
+ });
125
+
84
126
  var _VideoView = require("./components/VideoView");
85
127
 
86
128
  Object.keys(_VideoView).forEach(function (key) {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["registerGlobals","livekitRegisterGlobals","fixWebrtcAdapter","shimPromiseAllSettled","shimArrayAt","shimAsyncIterator","shimIterator","lkGlobal","platform","Platform","OS","devicePixelRatio","PixelRatio","get","global","LiveKitReactNativeGlobal","window","navigator","undefined","userAgent","product","allSettled","require","shim","Array","prototype","at"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAWA;;AA+DA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;AA/DA;AACA;AACA;AACA;AACA;AACO,SAASA,eAAT,GAA2B;AAChC;AACAC,EAAAA,sBAAsB;AACtB;AACAC,EAAAA,gBAAgB;AAChBC,EAAAA,qBAAqB;AACrBC,EAAAA,WAAW;AACXC,EAAAA,iBAAiB;AACjBC,EAAAA,YAAY;AACb;;AACD,SAASL,sBAAT,GAAkC;AAChC,MAAIM,QAAgC,GAAG;AACrCC,IAAAA,QAAQ,EAAEC,sBAASC,EADkB;AAErCC,IAAAA,gBAAgB,EAAEC,wBAAWC,GAAX;AAFmB,GAAvC,CADgC,CAMhC;;AACAC,EAAAA,MAAM,CAACC,wBAAP,GAAkCR,QAAlC;AACD;;AAED,SAASL,gBAAT,GAA4B;AAAA;;AAC1B;AACA,MAAI,YAAAc,MAAM,UAAN,0CAAQC,SAAR,MAAsBC,SAA1B,EAAqC;AACnC;AACA,UAAM;AAAED,MAAAA;AAAF,QAAgBD,MAAtB;;AACA,QAAIC,SAAS,CAACE,SAAV,KAAwBD,SAA5B,EAAuC;AAAA;;AACrCD,MAAAA,SAAS,CAACE,SAAV,yBAAsBF,SAAS,CAACG,OAAhC,mEAA2C,SAA3C;AACD;AACF;AACF;;AAED,SAASjB,qBAAT,GAAiC;AAC/B,MAAIkB,UAAU,GAAGC,OAAO,CAAC,oBAAD,CAAxB;;AACAD,EAAAA,UAAU,CAACE,IAAX;AACD;;AAED,SAASnB,WAAT,GAAuB;AACrB;AACA,MAAI,CAACoB,KAAK,CAACC,SAAN,CAAgBC,EAArB,EAAyB;AACvB,QAAIA,EAAE,GAAGJ,OAAO,CAAC,oBAAD,CAAhB;;AACAI,IAAAA,EAAE,CAACH,IAAH;AACD;AACF;;AAED,SAASlB,iBAAT,GAA6B;AAC3B,MAAIkB,IAAI,GAAGD,OAAO,CAAC,8CAAD,CAAlB;;AACAC,EAAAA,IAAI;AACL;;AAED,SAASjB,YAAT,GAAwB;AACtB,MAAIiB,IAAI,GAAGD,OAAO,CAAC,yCAAD,CAAlB;;AACAC,EAAAA,IAAI;AACL","sourcesContent":["import { registerGlobals as webrtcRegisterGlobals } from '@livekit/react-native-webrtc';\nimport { setupURLPolyfill } from 'react-native-url-polyfill';\nimport 'fastestsmallesttextencoderdecoder';\nimport AudioSession, {\n AndroidAudioTypePresets,\n AndroidAudioTypeOptions,\n AppleAudioCategory,\n AppleAudioCategoryOption,\n AppleAudioConfiguration,\n AppleAudioMode,\n AudioTrackState,\n getDefaultAppleAudioConfigurationForMode,\n} from './audio/AudioSession';\nimport type { AudioConfiguration } from './audio/AudioSession';\nimport { PixelRatio, Platform } from 'react-native';\nimport type { LiveKitReactNativeInfo } from 'livekit-client';\nimport type { LogLevel, SetLogLevelOptions } from './logger';\n\n/**\n * Registers the required globals needed for LiveKit to work.\n *\n * Must be called before using LiveKit.\n */\nexport function registerGlobals() {\n webrtcRegisterGlobals();\n livekitRegisterGlobals();\n setupURLPolyfill();\n fixWebrtcAdapter();\n shimPromiseAllSettled();\n shimArrayAt();\n shimAsyncIterator();\n shimIterator();\n}\nfunction livekitRegisterGlobals() {\n let lkGlobal: LiveKitReactNativeInfo = {\n platform: Platform.OS,\n devicePixelRatio: PixelRatio.get(),\n };\n\n // @ts-ignore\n global.LiveKitReactNativeGlobal = lkGlobal;\n}\n\nfunction fixWebrtcAdapter() {\n // @ts-ignore\n if (window?.navigator !== undefined) {\n // @ts-ignore\n const { navigator } = window;\n if (navigator.userAgent === undefined) {\n navigator.userAgent = navigator.product ?? 'Unknown';\n }\n }\n}\n\nfunction shimPromiseAllSettled() {\n var allSettled = require('promise.allsettled');\n allSettled.shim();\n}\n\nfunction shimArrayAt() {\n // Some versions of RN don't have Array.prototype.at, which is used by sdp-transform\n if (!Array.prototype.at) {\n var at = require('array.prototype.at');\n at.shim();\n }\n}\n\nfunction shimAsyncIterator() {\n var shim = require('well-known-symbols/Symbol.asyncIterator/shim');\n shim();\n}\n\nfunction shimIterator() {\n var shim = require('well-known-symbols/Symbol.iterator/shim');\n shim();\n}\n\nexport * from './components/VideoView';\nexport * from './useParticipant';\nexport * from './useRoom';\nexport * from './logger';\nexport * from './audio/AudioManager';\n\nexport {\n AudioSession,\n AudioConfiguration,\n AndroidAudioTypeOptions,\n AndroidAudioTypePresets,\n AppleAudioCategory,\n AppleAudioCategoryOption,\n AppleAudioConfiguration,\n AppleAudioMode,\n AudioTrackState,\n getDefaultAppleAudioConfigurationForMode,\n LogLevel,\n SetLogLevelOptions,\n};\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["registerGlobals","livekitRegisterGlobals","fixWebrtcAdapter","shimPromiseAllSettled","shimArrayAt","shimAsyncIterator","shimIterator","lkGlobal","platform","Platform","OS","devicePixelRatio","PixelRatio","get","global","LiveKitReactNativeGlobal","window","navigator","undefined","userAgent","product","allSettled","require","shim","Array","prototype","at"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAWA;;AA8DA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;AAjEA;AACA;AACA;AACA;AACA;AACO,SAASA,eAAT,GAA2B;AAChC;AACAC,EAAAA,sBAAsB;AACtB;AACAC,EAAAA,gBAAgB;AAChBC,EAAAA,qBAAqB;AACrBC,EAAAA,WAAW;AACXC,EAAAA,iBAAiB;AACjBC,EAAAA,YAAY;AACb;;AACD,SAASL,sBAAT,GAAkC;AAChC,MAAIM,QAAgC,GAAG;AACrCC,IAAAA,QAAQ,EAAEC,sBAASC,EADkB;AAErCC,IAAAA,gBAAgB,EAAEC,wBAAWC,GAAX;AAFmB,GAAvC,CADgC,CAMhC;;AACAC,EAAAA,MAAM,CAACC,wBAAP,GAAkCR,QAAlC;AACD;;AAED,SAASL,gBAAT,GAA4B;AAAA;;AAC1B;AACA,MAAI,YAAAc,MAAM,UAAN,0CAAQC,SAAR,MAAsBC,SAA1B,EAAqC;AACnC;AACA,UAAM;AAAED,MAAAA;AAAF,QAAgBD,MAAtB;;AACA,QAAIC,SAAS,CAACE,SAAV,KAAwBD,SAA5B,EAAuC;AAAA;;AACrCD,MAAAA,SAAS,CAACE,SAAV,yBAAsBF,SAAS,CAACG,OAAhC,mEAA2C,SAA3C;AACD;AACF;AACF;;AAED,SAASjB,qBAAT,GAAiC;AAC/B,MAAIkB,UAAU,GAAGC,OAAO,CAAC,oBAAD,CAAxB;;AACAD,EAAAA,UAAU,CAACE,IAAX;AACD;;AAED,SAASnB,WAAT,GAAuB;AACrB;AACA,MAAI,CAACoB,KAAK,CAACC,SAAN,CAAgBC,EAArB,EAAyB;AACvB,QAAIA,EAAE,GAAGJ,OAAO,CAAC,oBAAD,CAAhB;;AACAI,IAAAA,EAAE,CAACH,IAAH;AACD;AACF;;AAED,SAASlB,iBAAT,GAA6B;AAC3B,MAAIkB,IAAI,GAAGD,OAAO,CAAC,8CAAD,CAAlB;;AACAC,EAAAA,IAAI;AACL;;AAED,SAASjB,YAAT,GAAwB;AACtB,MAAIiB,IAAI,GAAGD,OAAO,CAAC,yCAAD,CAAlB;;AACAC,EAAAA,IAAI;AACL","sourcesContent":["import { registerGlobals as webrtcRegisterGlobals } from '@livekit/react-native-webrtc';\nimport { setupURLPolyfill } from 'react-native-url-polyfill';\nimport 'fastestsmallesttextencoderdecoder';\nimport AudioSession, {\n AndroidAudioTypePresets,\n AndroidAudioTypeOptions,\n AppleAudioCategory,\n AppleAudioCategoryOption,\n AppleAudioConfiguration,\n AppleAudioMode,\n AudioTrackState,\n getDefaultAppleAudioConfigurationForMode,\n} from './audio/AudioSession';\nimport type { AudioConfiguration } from './audio/AudioSession';\nimport { PixelRatio, Platform } from 'react-native';\nimport type { LiveKitReactNativeInfo } from 'livekit-client';\nimport type { LogLevel, SetLogLevelOptions } from './logger';\n\n/**\n * Registers the required globals needed for LiveKit to work.\n *\n * Must be called before using LiveKit.\n */\nexport function registerGlobals() {\n webrtcRegisterGlobals();\n livekitRegisterGlobals();\n setupURLPolyfill();\n fixWebrtcAdapter();\n shimPromiseAllSettled();\n shimArrayAt();\n shimAsyncIterator();\n shimIterator();\n}\nfunction livekitRegisterGlobals() {\n let lkGlobal: LiveKitReactNativeInfo = {\n platform: Platform.OS,\n devicePixelRatio: PixelRatio.get(),\n };\n\n // @ts-ignore\n global.LiveKitReactNativeGlobal = lkGlobal;\n}\n\nfunction fixWebrtcAdapter() {\n // @ts-ignore\n if (window?.navigator !== undefined) {\n // @ts-ignore\n const { navigator } = window;\n if (navigator.userAgent === undefined) {\n navigator.userAgent = navigator.product ?? 'Unknown';\n }\n }\n}\n\nfunction shimPromiseAllSettled() {\n var allSettled = require('promise.allsettled');\n allSettled.shim();\n}\n\nfunction shimArrayAt() {\n // Some versions of RN don't have Array.prototype.at, which is used by sdp-transform\n if (!Array.prototype.at) {\n var at = require('array.prototype.at');\n at.shim();\n }\n}\n\nfunction shimAsyncIterator() {\n var shim = require('well-known-symbols/Symbol.asyncIterator/shim');\n shim();\n}\n\nfunction shimIterator() {\n var shim = require('well-known-symbols/Symbol.iterator/shim');\n shim();\n}\nexport * from './hooks';\nexport * from './components/LiveKitRoom';\nexport * from './components/VideoTrack';\nexport * from './components/VideoView'; // deprecated\nexport * from './useParticipant'; // deprecated\nexport * from './useRoom'; // deprecated\nexport * from './logger';\nexport * from './audio/AudioManager';\n\nexport {\n AudioSession,\n AudioConfiguration,\n AndroidAudioTypeOptions,\n AndroidAudioTypePresets,\n AppleAudioCategory,\n AppleAudioCategoryOption,\n AppleAudioConfiguration,\n AppleAudioMode,\n AudioTrackState,\n getDefaultAppleAudioConfigurationForMode,\n LogLevel,\n SetLogLevelOptions,\n};\n"]}
@@ -9,6 +9,7 @@ var _livekitClient = require("livekit-client");
9
9
 
10
10
  var _react = require("react");
11
11
 
12
+ /** @deprecated use `useRemoteParticipant` or `useLocalParticipant` instead */
12
13
  function useParticipant(participant) {
13
14
  const [isAudioMuted, setAudioMuted] = (0, _react.useState)(false);
14
15
  const [, setVideoMuted] = (0, _react.useState)(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["useParticipant.ts"],"names":["useParticipant","participant","isAudioMuted","setAudioMuted","setVideoMuted","connectionQuality","setConnectionQuality","isSpeaking","setSpeaking","metadata","setMetadata","publications","setPublications","subscribedTracks","setSubscribedTracks","cameraPublication","setCameraPublication","getTrackPublication","Track","Source","Camera","microphonePublication","setMicrophonePublication","Microphone","screenSharePublication","setScreenSharePublication","ScreenShare","onPublicationsChanged","Array","from","trackPublications","values","filter","pub","isSubscribed","track","undefined","onMuted","kind","Kind","Audio","Video","onUnmuted","onMetadataChanged","onIsSpeakingChanged","onConnectionQualityUpdate","on","ParticipantEvent","TrackMuted","TrackUnmuted","ParticipantMetadataChanged","IsSpeakingChanged","TrackPublished","TrackUnpublished","TrackSubscribed","TrackUnsubscribed","LocalTrackPublished","LocalTrackUnpublished","ConnectionQualityChanged","off","muted","audioTrackPublications","forEach","isMuted","isLocal","LocalParticipant"],"mappings":"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","sourcesContent":["import {\n ConnectionQuality,\n LocalParticipant,\n Participant,\n ParticipantEvent,\n Track,\n TrackPublication,\n} from 'livekit-client';\nimport { useEffect, useState } from 'react';\n\nexport interface ParticipantState {\n isSpeaking: boolean;\n connectionQuality: ConnectionQuality;\n isLocal: boolean;\n metadata?: string;\n publications: TrackPublication[];\n subscribedTracks: TrackPublication[];\n cameraPublication?: TrackPublication;\n microphonePublication?: TrackPublication;\n screenSharePublication?: TrackPublication;\n}\n\nexport function useParticipant(participant: Participant): ParticipantState {\n const [isAudioMuted, setAudioMuted] = useState(false);\n const [, setVideoMuted] = useState(false);\n const [connectionQuality, setConnectionQuality] = useState<ConnectionQuality>(\n participant.connectionQuality\n );\n const [isSpeaking, setSpeaking] = useState(false);\n const [metadata, setMetadata] = useState<string>();\n const [publications, setPublications] = useState<TrackPublication[]>([]);\n const [subscribedTracks, setSubscribedTracks] = useState<TrackPublication[]>(\n []\n );\n\n const [cameraPublication, setCameraPublication] = useState(\n participant.getTrackPublication(Track.Source.Camera)\n );\n const [microphonePublication, setMicrophonePublication] = useState(\n participant.getTrackPublication(Track.Source.Microphone)\n );\n const [screenSharePublication, setScreenSharePublication] = useState(\n participant.getTrackPublication(Track.Source.ScreenShare)\n );\n useEffect(() => {\n const onPublicationsChanged = () => {\n setPublications(Array.from(participant.trackPublications.values()));\n setCameraPublication(\n participant.getTrackPublication(Track.Source.Camera)\n );\n setMicrophonePublication(\n participant.getTrackPublication(Track.Source.Microphone)\n );\n setScreenSharePublication(\n participant.getTrackPublication(Track.Source.ScreenShare)\n );\n setSubscribedTracks(\n Array.from(participant.trackPublications.values()).filter((pub) => {\n return pub.isSubscribed && pub.track !== undefined;\n })\n );\n };\n const onMuted = (pub: TrackPublication) => {\n if (pub.kind === Track.Kind.Audio) {\n setAudioMuted(true);\n } else if (pub.kind === Track.Kind.Video) {\n setVideoMuted(true);\n }\n };\n const onUnmuted = (pub: TrackPublication) => {\n if (pub.kind === Track.Kind.Audio) {\n setAudioMuted(false);\n } else if (pub.kind === Track.Kind.Video) {\n setVideoMuted(false);\n }\n };\n const onMetadataChanged = () => {\n if (participant.metadata) {\n setMetadata(participant.metadata);\n }\n };\n const onIsSpeakingChanged = () => {\n setSpeaking(participant.isSpeaking);\n };\n const onConnectionQualityUpdate = () => {\n setConnectionQuality(participant.connectionQuality);\n };\n\n // register listeners\n participant\n .on(ParticipantEvent.TrackMuted, onMuted)\n .on(ParticipantEvent.TrackUnmuted, onUnmuted)\n .on(ParticipantEvent.ParticipantMetadataChanged, onMetadataChanged)\n .on(ParticipantEvent.IsSpeakingChanged, onIsSpeakingChanged)\n .on(ParticipantEvent.TrackPublished, onPublicationsChanged)\n .on(ParticipantEvent.TrackUnpublished, onPublicationsChanged)\n .on(ParticipantEvent.TrackSubscribed, onPublicationsChanged)\n .on(ParticipantEvent.TrackUnsubscribed, onPublicationsChanged)\n .on(ParticipantEvent.LocalTrackPublished, onPublicationsChanged)\n .on(ParticipantEvent.LocalTrackUnpublished, onPublicationsChanged)\n .on(ParticipantEvent.ConnectionQualityChanged, onConnectionQualityUpdate);\n\n // set initial state\n onMetadataChanged();\n onIsSpeakingChanged();\n onPublicationsChanged();\n\n return () => {\n // cleanup\n participant\n .off(ParticipantEvent.TrackMuted, onMuted)\n .off(ParticipantEvent.TrackUnmuted, onUnmuted)\n .off(ParticipantEvent.ParticipantMetadataChanged, onMetadataChanged)\n .off(ParticipantEvent.IsSpeakingChanged, onIsSpeakingChanged)\n .off(ParticipantEvent.TrackPublished, onPublicationsChanged)\n .off(ParticipantEvent.TrackUnpublished, onPublicationsChanged)\n .off(ParticipantEvent.TrackSubscribed, onPublicationsChanged)\n .off(ParticipantEvent.TrackUnsubscribed, onPublicationsChanged)\n .off(ParticipantEvent.LocalTrackPublished, onPublicationsChanged)\n .off(ParticipantEvent.LocalTrackUnpublished, onPublicationsChanged)\n .off(\n ParticipantEvent.ConnectionQualityChanged,\n onConnectionQualityUpdate\n );\n };\n }, [participant]);\n\n let muted: boolean | undefined;\n participant.audioTrackPublications.forEach((pub) => {\n muted = pub.isMuted;\n });\n if (muted === undefined) {\n muted = true;\n }\n if (isAudioMuted !== muted) {\n setAudioMuted(muted);\n }\n\n return {\n isLocal: participant instanceof LocalParticipant,\n isSpeaking,\n connectionQuality,\n publications,\n subscribedTracks,\n cameraPublication,\n microphonePublication,\n screenSharePublication,\n metadata,\n };\n}\n"]}
1
+ {"version":3,"sources":["useParticipant.ts"],"names":["useParticipant","participant","isAudioMuted","setAudioMuted","setVideoMuted","connectionQuality","setConnectionQuality","isSpeaking","setSpeaking","metadata","setMetadata","publications","setPublications","subscribedTracks","setSubscribedTracks","cameraPublication","setCameraPublication","getTrackPublication","Track","Source","Camera","microphonePublication","setMicrophonePublication","Microphone","screenSharePublication","setScreenSharePublication","ScreenShare","onPublicationsChanged","Array","from","trackPublications","values","filter","pub","isSubscribed","track","undefined","onMuted","kind","Kind","Audio","Video","onUnmuted","onMetadataChanged","onIsSpeakingChanged","onConnectionQualityUpdate","on","ParticipantEvent","TrackMuted","TrackUnmuted","ParticipantMetadataChanged","IsSpeakingChanged","TrackPublished","TrackUnpublished","TrackSubscribed","TrackUnsubscribed","LocalTrackPublished","LocalTrackUnpublished","ConnectionQualityChanged","off","muted","audioTrackPublications","forEach","isMuted","isLocal","LocalParticipant"],"mappings":"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","sourcesContent":["import {\n ConnectionQuality,\n LocalParticipant,\n Participant,\n ParticipantEvent,\n Track,\n TrackPublication,\n} from 'livekit-client';\nimport { useEffect, useState } from 'react';\n\n/** @deprecated use `useRemoteParticipant` or `useLocalParticipant` instead */\nexport interface ParticipantState {\n isSpeaking: boolean;\n connectionQuality: ConnectionQuality;\n isLocal: boolean;\n metadata?: string;\n publications: TrackPublication[];\n subscribedTracks: TrackPublication[];\n cameraPublication?: TrackPublication;\n microphonePublication?: TrackPublication;\n screenSharePublication?: TrackPublication;\n}\n/** @deprecated use `useRemoteParticipant` or `useLocalParticipant` instead */\nexport function useParticipant(participant: Participant): ParticipantState {\n const [isAudioMuted, setAudioMuted] = useState(false);\n const [, setVideoMuted] = useState(false);\n const [connectionQuality, setConnectionQuality] = useState<ConnectionQuality>(\n participant.connectionQuality\n );\n const [isSpeaking, setSpeaking] = useState(false);\n const [metadata, setMetadata] = useState<string>();\n const [publications, setPublications] = useState<TrackPublication[]>([]);\n const [subscribedTracks, setSubscribedTracks] = useState<TrackPublication[]>(\n []\n );\n\n const [cameraPublication, setCameraPublication] = useState(\n participant.getTrackPublication(Track.Source.Camera)\n );\n const [microphonePublication, setMicrophonePublication] = useState(\n participant.getTrackPublication(Track.Source.Microphone)\n );\n const [screenSharePublication, setScreenSharePublication] = useState(\n participant.getTrackPublication(Track.Source.ScreenShare)\n );\n useEffect(() => {\n const onPublicationsChanged = () => {\n setPublications(Array.from(participant.trackPublications.values()));\n setCameraPublication(\n participant.getTrackPublication(Track.Source.Camera)\n );\n setMicrophonePublication(\n participant.getTrackPublication(Track.Source.Microphone)\n );\n setScreenSharePublication(\n participant.getTrackPublication(Track.Source.ScreenShare)\n );\n setSubscribedTracks(\n Array.from(participant.trackPublications.values()).filter((pub) => {\n return pub.isSubscribed && pub.track !== undefined;\n })\n );\n };\n const onMuted = (pub: TrackPublication) => {\n if (pub.kind === Track.Kind.Audio) {\n setAudioMuted(true);\n } else if (pub.kind === Track.Kind.Video) {\n setVideoMuted(true);\n }\n };\n const onUnmuted = (pub: TrackPublication) => {\n if (pub.kind === Track.Kind.Audio) {\n setAudioMuted(false);\n } else if (pub.kind === Track.Kind.Video) {\n setVideoMuted(false);\n }\n };\n const onMetadataChanged = () => {\n if (participant.metadata) {\n setMetadata(participant.metadata);\n }\n };\n const onIsSpeakingChanged = () => {\n setSpeaking(participant.isSpeaking);\n };\n const onConnectionQualityUpdate = () => {\n setConnectionQuality(participant.connectionQuality);\n };\n\n // register listeners\n participant\n .on(ParticipantEvent.TrackMuted, onMuted)\n .on(ParticipantEvent.TrackUnmuted, onUnmuted)\n .on(ParticipantEvent.ParticipantMetadataChanged, onMetadataChanged)\n .on(ParticipantEvent.IsSpeakingChanged, onIsSpeakingChanged)\n .on(ParticipantEvent.TrackPublished, onPublicationsChanged)\n .on(ParticipantEvent.TrackUnpublished, onPublicationsChanged)\n .on(ParticipantEvent.TrackSubscribed, onPublicationsChanged)\n .on(ParticipantEvent.TrackUnsubscribed, onPublicationsChanged)\n .on(ParticipantEvent.LocalTrackPublished, onPublicationsChanged)\n .on(ParticipantEvent.LocalTrackUnpublished, onPublicationsChanged)\n .on(ParticipantEvent.ConnectionQualityChanged, onConnectionQualityUpdate);\n\n // set initial state\n onMetadataChanged();\n onIsSpeakingChanged();\n onPublicationsChanged();\n\n return () => {\n // cleanup\n participant\n .off(ParticipantEvent.TrackMuted, onMuted)\n .off(ParticipantEvent.TrackUnmuted, onUnmuted)\n .off(ParticipantEvent.ParticipantMetadataChanged, onMetadataChanged)\n .off(ParticipantEvent.IsSpeakingChanged, onIsSpeakingChanged)\n .off(ParticipantEvent.TrackPublished, onPublicationsChanged)\n .off(ParticipantEvent.TrackUnpublished, onPublicationsChanged)\n .off(ParticipantEvent.TrackSubscribed, onPublicationsChanged)\n .off(ParticipantEvent.TrackUnsubscribed, onPublicationsChanged)\n .off(ParticipantEvent.LocalTrackPublished, onPublicationsChanged)\n .off(ParticipantEvent.LocalTrackUnpublished, onPublicationsChanged)\n .off(\n ParticipantEvent.ConnectionQualityChanged,\n onConnectionQualityUpdate\n );\n };\n }, [participant]);\n\n let muted: boolean | undefined;\n participant.audioTrackPublications.forEach((pub) => {\n muted = pub.isMuted;\n });\n if (muted === undefined) {\n muted = true;\n }\n if (isAudioMuted !== muted) {\n setAudioMuted(muted);\n }\n\n return {\n isLocal: participant instanceof LocalParticipant,\n isSpeaking,\n connectionQuality,\n publications,\n subscribedTracks,\n cameraPublication,\n microphonePublication,\n screenSharePublication,\n metadata,\n };\n}\n"]}
@@ -10,6 +10,7 @@ var _livekitClient = require("livekit-client");
10
10
 
11
11
  var _react = require("react");
12
12
 
13
+ /** @deprecated wrap your components in a <LiveKitRoom> component instead and use more granular hooks to track state you're interested in */
13
14
  function useRoom(room, options) {
14
15
  var _options$sortParticip;
15
16