@livekit/react-native 2.1.1 → 2.3.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.
- package/README.md +15 -6
- package/android/build.gradle +1 -1
- package/android/gradle/wrapper/gradle-wrapper.properties +3 -1
- package/android/gradlew +29 -14
- package/android/gradlew.bat +19 -16
- package/android/src/main/java/com/livekit/reactnative/LiveKitReactNative.kt +14 -1
- package/android/src/main/java/com/livekit/reactnative/LivekitReactNativeModule.kt +10 -0
- package/android/src/main/java/com/livekit/reactnative/video/SimulcastVideoEncoderFactoryWrapper.kt +2 -2
- package/android/src/main/java/org/webrtc/audio/WebRtcAudioTrackHelper.kt +20 -0
- package/lib/commonjs/audio/AudioManager.js +4 -27
- package/lib/commonjs/audio/AudioManager.js.map +1 -1
- package/lib/commonjs/audio/AudioSession.js +55 -23
- package/lib/commonjs/audio/AudioSession.js.map +1 -1
- package/lib/commonjs/components/LiveKitRoom.js +3 -6
- package/lib/commonjs/components/LiveKitRoom.js.map +1 -1
- package/lib/commonjs/components/VideoTrack.js +30 -66
- package/lib/commonjs/components/VideoTrack.js.map +1 -1
- package/lib/commonjs/components/VideoView.js +32 -63
- package/lib/commonjs/components/VideoView.js.map +1 -1
- package/lib/commonjs/components/ViewPortDetector.js +15 -62
- package/lib/commonjs/components/ViewPortDetector.js.map +1 -1
- package/lib/commonjs/hooks.js +6 -63
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/commonjs/index.js +10 -85
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/logger.js +4 -14
- package/lib/commonjs/logger.js.map +1 -1
- package/lib/commonjs/polyfills/EncoderDecoderTogether.min.js +105 -0
- package/lib/commonjs/polyfills/EncoderDecoderTogether.min.js.map +1 -0
- package/lib/commonjs/useParticipant.js +5 -13
- package/lib/commonjs/useParticipant.js.map +1 -1
- package/lib/commonjs/useRoom.js +17 -33
- package/lib/commonjs/useRoom.js.map +1 -1
- package/lib/module/audio/AudioManager.js +3 -17
- package/lib/module/audio/AudioManager.js.map +1 -1
- package/lib/module/audio/AudioSession.js +54 -16
- package/lib/module/audio/AudioSession.js.map +1 -1
- package/lib/module/components/LiveKitRoom.js +1 -0
- package/lib/module/components/LiveKitRoom.js.map +1 -1
- package/lib/module/components/VideoTrack.js +18 -44
- package/lib/module/components/VideoTrack.js.map +1 -1
- package/lib/module/components/VideoView.js +18 -42
- package/lib/module/components/VideoView.js.map +1 -1
- package/lib/module/components/ViewPortDetector.js +13 -54
- package/lib/module/components/ViewPortDetector.js.map +1 -1
- package/lib/module/hooks.js +1 -2
- package/lib/module/hooks.js.map +1 -1
- package/lib/module/index.js +6 -24
- package/lib/module/index.js.map +1 -1
- package/lib/module/logger.js +2 -6
- package/lib/module/logger.js.map +1 -1
- package/lib/module/polyfills/EncoderDecoderTogether.min.js +105 -0
- package/lib/module/polyfills/EncoderDecoderTogether.min.js.map +1 -0
- package/lib/module/useParticipant.js +5 -11
- package/lib/module/useParticipant.js.map +1 -1
- package/lib/module/useRoom.js +17 -30
- package/lib/module/useRoom.js.map +1 -1
- package/lib/typescript/babel.config.d.ts +1 -0
- package/lib/typescript/docs/assets/icons.d.ts +0 -0
- package/lib/typescript/docs/assets/main.d.ts +0 -0
- package/lib/typescript/docs/assets/navigation.d.ts +0 -0
- package/lib/typescript/docs/assets/search.d.ts +0 -0
- package/lib/typescript/lib/commonjs/audio/AudioManager.d.ts +10 -0
- package/lib/typescript/lib/commonjs/audio/AudioSession.d.ts +33 -0
- package/lib/typescript/lib/commonjs/components/LiveKitRoom.d.ts +20 -0
- package/lib/typescript/lib/commonjs/components/VideoTrack.d.ts +8 -0
- package/lib/typescript/lib/commonjs/components/VideoView.d.ts +14 -0
- package/lib/typescript/lib/commonjs/components/ViewPortDetector.d.ts +30 -0
- package/lib/typescript/lib/commonjs/hooks.d.ts +29 -0
- package/lib/typescript/lib/commonjs/index.d.ts +10 -0
- package/lib/typescript/lib/commonjs/logger.d.ts +8 -0
- package/lib/typescript/lib/commonjs/useParticipant.d.ts +14 -0
- package/lib/typescript/lib/commonjs/useRoom.d.ts +16 -0
- package/lib/typescript/lib/module/audio/AudioManager.d.ts +9 -0
- package/lib/typescript/lib/module/audio/AudioSession.d.ts +31 -0
- package/lib/typescript/lib/module/components/LiveKitRoom.d.ts +22 -0
- package/lib/typescript/lib/module/components/VideoTrack.d.ts +9 -0
- package/lib/typescript/lib/module/components/VideoView.d.ts +9 -0
- package/lib/typescript/lib/module/components/ViewPortDetector.d.ts +29 -0
- package/lib/typescript/lib/module/hooks.d.ts +1 -0
- package/lib/typescript/lib/module/index.d.ts +18 -0
- package/lib/typescript/lib/module/logger.d.ts +8 -0
- package/lib/typescript/lib/module/polyfills/EncoderDecoderTogether.min.d.ts +0 -0
- package/lib/typescript/lib/module/useParticipant.d.ts +13 -0
- package/lib/typescript/lib/module/useRoom.d.ts +15 -0
- package/lib/typescript/scripts/bootstrap.d.ts +1 -0
- package/lib/typescript/{audio → src/audio}/AudioSession.d.ts +7 -9
- package/lib/typescript/{components → src/components}/LiveKitRoom.d.ts +1 -1
- package/lib/typescript/{components → src/components}/VideoTrack.d.ts +2 -2
- package/lib/typescript/{components → src/components}/VideoView.d.ts +3 -3
- package/lib/typescript/{components → src/components}/ViewPortDetector.d.ts +3 -3
- package/lib/typescript/src/hooks.d.ts +3 -0
- package/lib/typescript/src/index.d.ts +20 -0
- package/lib/typescript/{logger.d.ts → src/logger.d.ts} +2 -2
- package/lib/typescript/src/polyfills/EncoderDecoderTogether.min.d.ts +0 -0
- package/lib/typescript/{useRoom.d.ts → src/useRoom.d.ts} +1 -1
- package/package.json +22 -19
- package/src/audio/AudioSession.ts +0 -2
- package/src/components/LiveKitRoom.tsx +1 -1
- package/src/components/VideoTrack.tsx +7 -2
- package/src/components/VideoView.tsx +8 -3
- package/src/components/ViewPortDetector.tsx +4 -4
- package/src/hooks.ts +12 -9
- package/src/index.tsx +11 -9
- package/src/polyfills/EncoderDecoderTogether.min.js +6 -0
- package/src/useRoom.ts +1 -1
- package/lib/typescript/hooks.d.ts +0 -2
- package/lib/typescript/index.d.ts +0 -19
- /package/lib/typescript/{audio → src/audio}/AudioManager.d.ts +0 -0
- /package/lib/typescript/{useParticipant.d.ts → src/useParticipant.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ViewPortDetector.tsx"],"names":["React","Component","AppState","View","DEFAULT_DELAY","TimeoutHandler","id","handler","handlerRef","n","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","constructor","props","disabled","delay","disabledValue","delayValue","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"]}
|
|
1
|
+
{"version":3,"names":["_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_defineProperty","_toPropertyKey","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","React","Component","AppState","View","DEFAULT_DELAY","TimeoutHandler","constructor","id","handler","handlerRef","clear","clearTimeout","setIntervalWithTimeout","callback","intervalMs","handleWrapper","cleared","timeout","setTimeout","ViewPortDetector","props","disabled","delay","disabledValue","delayValue","currentState","nextAppState","nextAppStateActive","lastAppStateActive","checkVisibility","hasValidTimeout","stopWatching","startWatching","interval","_this$interval","view","updateVisibility","measure","_x","_y","width","height","_pageX","_pageY","checkInViewPort","isVisible","lastValue","_this$props$onChange","_this$props","onChange","state","rectTop","rectBottom","componentDidMount","appStateSubscription","addEventListener","handleAppStateChange","componentWillUnmount","_this$appStateSubscri","remove","UNSAFE_componentWillReceiveProps","nextProps","propKey","render","createElement","collapsable","ref","component","children"],"sources":["ViewPortDetector.tsx"],"sourcesContent":["'use strict';\n\nimport React, { Component, type PropsWithChildren } from 'react';\nimport {\n AppState,\n type AppStateStatus,\n type NativeEventSubscription,\n View,\n type ViewStyle,\n} from 'react-native';\n\nconst DEFAULT_DELAY = 1000;\n\nexport type Props = {\n disabled?: boolean;\n style?: ViewStyle;\n onChange?: (isVisible: boolean) => void;\n delay?: number;\n propKey?: any;\n};\n\nclass TimeoutHandler {\n private handlerRef: { id: any } = { id: -1 };\n\n get handler(): any {\n return this.handlerRef.id;\n }\n set handler(n: any) {\n this.handlerRef.id = n;\n }\n\n clear() {\n clearTimeout(this.handlerRef.id as any);\n }\n}\n\nfunction setIntervalWithTimeout(\n callback: (clear: () => void) => any,\n intervalMs: number,\n handleWrapper = new TimeoutHandler()\n): TimeoutHandler {\n let cleared = false;\n\n const timeout = () => {\n handleWrapper.handler = setTimeout(() => {\n callback(() => {\n cleared = true;\n handleWrapper.clear();\n });\n if (!cleared) {\n timeout();\n }\n }, intervalMs);\n };\n timeout();\n return handleWrapper;\n}\n\n/**\n * Detects when this is in the viewport and visible.\n *\n * Will not fire visibility changes for zero width/height components.\n */\nexport default class ViewPortDetector extends Component<\n PropsWithChildren<Props>\n> {\n private lastValue: boolean | null = null;\n private interval: TimeoutHandler | null = null;\n private view: View | null = null;\n private lastAppStateActive = false;\n private appStateSubscription: NativeEventSubscription | null = null;\n\n constructor(props: Props) {\n super(props);\n this.state = { rectTop: 0, rectBottom: 0 };\n }\n\n componentDidMount() {\n this.lastAppStateActive = AppState.currentState === 'active';\n this.appStateSubscription = AppState.addEventListener(\n 'change',\n this.handleAppStateChange\n );\n if (this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.startWatching();\n }\n }\n\n componentWillUnmount() {\n this.appStateSubscription?.remove();\n this.appStateSubscription = null;\n this.stopWatching();\n }\n\n hasValidTimeout = (disabled?: boolean, delay?: number): boolean => {\n let disabledValue = disabled ?? false;\n let delayValue = delay ?? DEFAULT_DELAY;\n return (\n AppState.currentState === 'active' && !disabledValue && delayValue > 0\n );\n };\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n if (!this.hasValidTimeout(nextProps.disabled, nextProps.delay)) {\n this.stopWatching();\n } else {\n if (this.props.propKey !== nextProps.propKey) {\n this.lastValue = null;\n }\n this.startWatching();\n }\n }\n handleAppStateChange = (nextAppState: AppStateStatus) => {\n let nextAppStateActive = nextAppState === 'active';\n if (this.lastAppStateActive !== nextAppStateActive) {\n this.checkVisibility();\n }\n this.lastAppStateActive = nextAppStateActive;\n\n if (!this.hasValidTimeout(this.props.disabled, this.props.delay)) {\n this.stopWatching();\n } else {\n this.startWatching();\n }\n };\n\n startWatching = () => {\n if (this.interval) {\n return;\n }\n this.interval = setIntervalWithTimeout(\n this.checkVisibility,\n this.props.delay || DEFAULT_DELAY\n );\n };\n\n stopWatching = () => {\n this.interval?.clear();\n this.interval = null;\n };\n\n checkVisibility = () => {\n if (!this.view) {\n return;\n }\n\n if (AppState.currentState !== 'active') {\n this.updateVisibility(false);\n return;\n }\n\n this.view.measure((_x, _y, width, height, _pageX, _pageY) => {\n this.checkInViewPort(width, height);\n });\n };\n checkInViewPort = (width?: number, height?: number) => {\n let isVisible: boolean;\n // Not visible if any of these are missing.\n if (!width || !height) {\n isVisible = false;\n } else {\n isVisible = true;\n }\n this.updateVisibility(isVisible);\n };\n\n updateVisibility = (isVisible: boolean) => {\n if (this.lastValue !== isVisible) {\n this.lastValue = isVisible;\n this.props.onChange?.(isVisible);\n }\n };\n render() {\n return (\n <View\n collapsable={false}\n ref={(component) => {\n this.view = component;\n }}\n {...this.props}\n >\n {this.props.children}\n </View>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/module/hooks.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export { useConnectionState, useDataChannel, useIsSpeaking, useLocalParticipant,
|
|
2
|
-
export { ReceivedDataMessage } from '@livekit/components-core';
|
|
1
|
+
export { useConnectionState, useDataChannel, useIsSpeaking, useLocalParticipant, useLocalParticipantPermissions, useParticipantInfo, useParticipants, useRemoteParticipants, useRemoteParticipant, useSpeakingParticipants, useSortedParticipants, useChat, useIsEncrypted, useRoomInfo, useIsMuted, useParticipantTracks, useLiveKitRoom, RoomContext, useRoomContext, ParticipantContext, useParticipantContext, TrackRefContext, useTrackRefContext, useTracks, isTrackReference, useEnsureTrackRef, useTrackMutedIndicator, useVisualStableUpdate } from '@livekit/components-react';
|
|
3
2
|
//# sourceMappingURL=hooks.js.map
|
package/lib/module/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["useConnectionState","useDataChannel","useIsSpeaking","useLocalParticipant","useLocalParticipantPermissions","useParticipantInfo","useParticipants","useRemoteParticipants","useRemoteParticipant","useSpeakingParticipants","useSortedParticipants","useChat","useIsEncrypted","useRoomInfo","useIsMuted","useParticipantTracks","useLiveKitRoom","RoomContext","useRoomContext","ParticipantContext","useParticipantContext","TrackRefContext","useTrackRefContext","useTracks","isTrackReference","useEnsureTrackRef","useTrackMutedIndicator","useVisualStableUpdate"],"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 useTrackMutedIndicator,\n useVisualStableUpdate,\n} from '@livekit/components-react';\nexport type {\n UseLocalParticipantOptions,\n UseParticipantInfoOptions,\n UseParticipantsOptions,\n UseRemoteParticipantOptions,\n UseRemoteParticipantsOptions,\n UseTracksOptions,\n TrackReference,\n TrackReferenceOrPlaceholder,\n UseVisualStableUpdateOptions,\n} from '@livekit/components-react';\n\nexport type { ReceivedDataMessage } from '@livekit/components-core';\n"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,cAAc,EACdC,aAAa,EACbC,mBAAmB,EACnBC,8BAA8B,EAC9BC,kBAAkB,EAClBC,eAAe,EACfC,qBAAqB,EACrBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,EACrBC,OAAO,EACPC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,oBAAoB,EACpBC,cAAc,EACdC,WAAW,EACXC,cAAc,EACdC,kBAAkB,EAClBC,qBAAqB,EACrBC,eAAe,EACfC,kBAAkB,EAClBC,SAAS,EACTC,gBAAgB,EAChBC,iBAAiB,EACjBC,sBAAsB,EACtBC,qBAAqB,QAChB,2BAA2B","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { registerGlobals as webrtcRegisterGlobals } from '@livekit/react-native-webrtc';
|
|
2
2
|
import { setupURLPolyfill } from 'react-native-url-polyfill';
|
|
3
|
-
import '
|
|
4
|
-
import AudioSession, { AndroidAudioTypePresets,
|
|
3
|
+
import './polyfills/EncoderDecoderTogether.min.js';
|
|
4
|
+
import AudioSession, { AndroidAudioTypePresets, getDefaultAppleAudioConfigurationForMode } from './audio/AudioSession';
|
|
5
5
|
import { PixelRatio, Platform } from 'react-native';
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
* Registers the required globals needed for LiveKit to work.
|
|
9
8
|
*
|
|
@@ -19,71 +18,54 @@ export function registerGlobals() {
|
|
|
19
18
|
shimAsyncIterator();
|
|
20
19
|
shimIterator();
|
|
21
20
|
}
|
|
22
|
-
|
|
23
21
|
function livekitRegisterGlobals() {
|
|
24
22
|
let lkGlobal = {
|
|
25
23
|
platform: Platform.OS,
|
|
26
24
|
devicePixelRatio: PixelRatio.get()
|
|
27
|
-
};
|
|
25
|
+
};
|
|
28
26
|
|
|
27
|
+
// @ts-ignore
|
|
29
28
|
global.LiveKitReactNativeGlobal = lkGlobal;
|
|
30
29
|
}
|
|
31
|
-
|
|
32
30
|
function fixWebrtcAdapter() {
|
|
33
31
|
var _window;
|
|
34
|
-
|
|
35
32
|
// @ts-ignore
|
|
36
33
|
if (((_window = window) === null || _window === void 0 ? void 0 : _window.navigator) !== undefined) {
|
|
37
34
|
// @ts-ignore
|
|
38
35
|
const {
|
|
39
36
|
navigator
|
|
40
37
|
} = window;
|
|
41
|
-
|
|
42
38
|
if (navigator.userAgent === undefined) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
navigator.userAgent = (_navigator$product = navigator.product) !== null && _navigator$product !== void 0 ? _navigator$product : 'Unknown';
|
|
39
|
+
navigator.userAgent = navigator.product ?? 'Unknown';
|
|
46
40
|
}
|
|
47
41
|
}
|
|
48
42
|
}
|
|
49
|
-
|
|
50
43
|
function shimPromiseAllSettled() {
|
|
51
44
|
var allSettled = require('promise.allsettled');
|
|
52
|
-
|
|
53
45
|
allSettled.shim();
|
|
54
46
|
}
|
|
55
|
-
|
|
56
47
|
function shimArrayAt() {
|
|
57
48
|
// Some versions of RN don't have Array.prototype.at, which is used by sdp-transform
|
|
58
49
|
if (!Array.prototype.at) {
|
|
59
50
|
var at = require('array.prototype.at');
|
|
60
|
-
|
|
61
51
|
at.shim();
|
|
62
52
|
}
|
|
63
53
|
}
|
|
64
|
-
|
|
65
54
|
function shimAsyncIterator() {
|
|
66
55
|
var shim = require('well-known-symbols/Symbol.asyncIterator/shim');
|
|
67
|
-
|
|
68
56
|
shim();
|
|
69
57
|
}
|
|
70
|
-
|
|
71
58
|
function shimIterator() {
|
|
72
59
|
var shim = require('well-known-symbols/Symbol.iterator/shim');
|
|
73
|
-
|
|
74
60
|
shim();
|
|
75
61
|
}
|
|
76
|
-
|
|
77
62
|
export * from './hooks';
|
|
78
63
|
export * from './components/LiveKitRoom';
|
|
79
64
|
export * from './components/VideoTrack';
|
|
80
65
|
export * from './components/VideoView'; // deprecated
|
|
81
|
-
|
|
82
66
|
export * from './useParticipant'; // deprecated
|
|
83
|
-
|
|
84
67
|
export * from './useRoom'; // deprecated
|
|
85
|
-
|
|
86
68
|
export * from './logger';
|
|
87
69
|
export * from './audio/AudioManager';
|
|
88
|
-
export { AudioSession,
|
|
70
|
+
export { AudioSession, AndroidAudioTypePresets, getDefaultAppleAudioConfigurationForMode };
|
|
89
71
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["registerGlobals","webrtcRegisterGlobals","setupURLPolyfill","AudioSession","AndroidAudioTypePresets","getDefaultAppleAudioConfigurationForMode","PixelRatio","Platform","livekitRegisterGlobals","fixWebrtcAdapter","shimPromiseAllSettled","shimArrayAt","shimAsyncIterator","shimIterator","lkGlobal","platform","OS","devicePixelRatio","get","global","LiveKitReactNativeGlobal","_window","window","navigator","undefined","userAgent","product","allSettled","require","shim","Array","prototype","at"],"sources":["index.tsx"],"sourcesContent":["import { registerGlobals as webrtcRegisterGlobals } from '@livekit/react-native-webrtc';\nimport { setupURLPolyfill } from 'react-native-url-polyfill';\nimport './polyfills/EncoderDecoderTogether.min.js';\nimport AudioSession, {\n AndroidAudioTypePresets,\n type AndroidAudioTypeOptions,\n type AppleAudioCategory,\n type AppleAudioCategoryOption,\n type AppleAudioConfiguration,\n type AppleAudioMode,\n type 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 AndroidAudioTypePresets,\n getDefaultAppleAudioConfigurationForMode,\n};\nexport type {\n AudioConfiguration,\n AndroidAudioTypeOptions,\n AppleAudioCategory,\n AppleAudioCategoryOption,\n AppleAudioConfiguration,\n AppleAudioMode,\n AudioTrackState,\n LogLevel,\n SetLogLevelOptions,\n};\n"],"mappings":"AAAA,SAASA,eAAe,IAAIC,qBAAqB,QAAQ,8BAA8B;AACvF,SAASC,gBAAgB,QAAQ,2BAA2B;AAC5D,OAAO,2CAA2C;AAClD,OAAOC,YAAY,IACjBC,uBAAuB,EAOvBC,wCAAwC,QACnC,sBAAsB;AAE7B,SAASC,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AAInD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASP,eAAeA,CAAA,EAAG;EAChCC,qBAAqB,CAAC,CAAC;EACvBO,sBAAsB,CAAC,CAAC;EACxBN,gBAAgB,CAAC,CAAC;EAClBO,gBAAgB,CAAC,CAAC;EAClBC,qBAAqB,CAAC,CAAC;EACvBC,WAAW,CAAC,CAAC;EACbC,iBAAiB,CAAC,CAAC;EACnBC,YAAY,CAAC,CAAC;AAChB;AACA,SAASL,sBAAsBA,CAAA,EAAG;EAChC,IAAIM,QAAgC,GAAG;IACrCC,QAAQ,EAAER,QAAQ,CAACS,EAAE;IACrBC,gBAAgB,EAAEX,UAAU,CAACY,GAAG,CAAC;EACnC,CAAC;;EAED;EACAC,MAAM,CAACC,wBAAwB,GAAGN,QAAQ;AAC5C;AAEA,SAASL,gBAAgBA,CAAA,EAAG;EAAA,IAAAY,OAAA;EAC1B;EACA,IAAI,EAAAA,OAAA,GAAAC,MAAM,cAAAD,OAAA,uBAANA,OAAA,CAAQE,SAAS,MAAKC,SAAS,EAAE;IACnC;IACA,MAAM;MAAED;IAAU,CAAC,GAAGD,MAAM;IAC5B,IAAIC,SAAS,CAACE,SAAS,KAAKD,SAAS,EAAE;MACrCD,SAAS,CAACE,SAAS,GAAGF,SAAS,CAACG,OAAO,IAAI,SAAS;IACtD;EACF;AACF;AAEA,SAAShB,qBAAqBA,CAAA,EAAG;EAC/B,IAAIiB,UAAU,GAAGC,OAAO,CAAC,oBAAoB,CAAC;EAC9CD,UAAU,CAACE,IAAI,CAAC,CAAC;AACnB;AAEA,SAASlB,WAAWA,CAAA,EAAG;EACrB;EACA,IAAI,CAACmB,KAAK,CAACC,SAAS,CAACC,EAAE,EAAE;IACvB,IAAIA,EAAE,GAAGJ,OAAO,CAAC,oBAAoB,CAAC;IACtCI,EAAE,CAACH,IAAI,CAAC,CAAC;EACX;AACF;AAEA,SAASjB,iBAAiBA,CAAA,EAAG;EAC3B,IAAIiB,IAAI,GAAGD,OAAO,CAAC,8CAA8C,CAAC;EAClEC,IAAI,CAAC,CAAC;AACR;AAEA,SAAShB,YAAYA,CAAA,EAAG;EACtB,IAAIgB,IAAI,GAAGD,OAAO,CAAC,yCAAyC,CAAC;EAC7DC,IAAI,CAAC,CAAC;AACR;AACA,cAAc,SAAS;AACvB,cAAc,0BAA0B;AACxC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB,CAAC,CAAC;AACxC,cAAc,kBAAkB,CAAC,CAAC;AAClC,cAAc,WAAW,CAAC,CAAC;AAC3B,cAAc,UAAU;AACxB,cAAc,sBAAsB;AAEpC,SACE1B,YAAY,EACZC,uBAAuB,EACvBC,wCAAwC","ignoreList":[]}
|
package/lib/module/logger.js
CHANGED
|
@@ -2,17 +2,13 @@ import { setLogLevel as setClientSdkLogLevel } from 'livekit-client';
|
|
|
2
2
|
import loglevel from 'loglevel';
|
|
3
3
|
export const log = loglevel.getLogger('lk-react-native');
|
|
4
4
|
log.setDefaultLevel('WARN');
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Set the log level for both the `@livekit/react-native` package and the `@livekit-client` package.
|
|
8
7
|
* To set the `@livekit-client` log independently, use the `liveKitClientLogLevel` prop on the `options` object.
|
|
9
8
|
* @public
|
|
10
9
|
*/
|
|
11
|
-
export function setLogLevel(level) {
|
|
12
|
-
var _options$liveKitClien;
|
|
13
|
-
|
|
14
|
-
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
10
|
+
export function setLogLevel(level, options = {}) {
|
|
15
11
|
log.setLevel(level);
|
|
16
|
-
setClientSdkLogLevel(
|
|
12
|
+
setClientSdkLogLevel(options.liveKitClientLogLevel ?? level);
|
|
17
13
|
}
|
|
18
14
|
//# sourceMappingURL=logger.js.map
|
package/lib/module/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["setLogLevel","setClientSdkLogLevel","loglevel","log","getLogger","setDefaultLevel","level","options","setLevel","liveKitClientLogLevel"],"sources":["logger.ts"],"sourcesContent":["import { setLogLevel as setClientSdkLogLevel } from 'livekit-client';\nimport loglevel from 'loglevel';\n\nexport const log = loglevel.getLogger('lk-react-native');\nlog.setDefaultLevel('WARN');\n\nexport type LogLevel = Parameters<typeof setClientSdkLogLevel>[0];\nexport type SetLogLevelOptions = {\n liveKitClientLogLevel?: LogLevel;\n};\n\n/**\n * Set the log level for both the `@livekit/react-native` package and the `@livekit-client` package.\n * To set the `@livekit-client` log independently, use the `liveKitClientLogLevel` prop on the `options` object.\n * @public\n */\nexport function setLogLevel(\n level: LogLevel,\n options: SetLogLevelOptions = {}\n): void {\n log.setLevel(level);\n setClientSdkLogLevel(options.liveKitClientLogLevel ?? level);\n}\n"],"mappings":"AAAA,SAASA,WAAW,IAAIC,oBAAoB,QAAQ,gBAAgB;AACpE,OAAOC,QAAQ,MAAM,UAAU;AAE/B,OAAO,MAAMC,GAAG,GAAGD,QAAQ,CAACE,SAAS,CAAC,iBAAiB,CAAC;AACxDD,GAAG,CAACE,eAAe,CAAC,MAAM,CAAC;AAO3B;AACA;AACA;AACA;AACA;AACA,OAAO,SAASL,WAAWA,CACzBM,KAAe,EACfC,OAA2B,GAAG,CAAC,CAAC,EAC1B;EACNJ,GAAG,CAACK,QAAQ,CAACF,KAAK,CAAC;EACnBL,oBAAoB,CAACM,OAAO,CAACE,qBAAqB,IAAIH,KAAK,CAAC;AAC9D","ignoreList":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
(function (q) {
|
|
4
|
+
function x() {}
|
|
5
|
+
function y() {}
|
|
6
|
+
var z = String.fromCharCode,
|
|
7
|
+
v = {}.toString,
|
|
8
|
+
A = v.call(q.SharedArrayBuffer),
|
|
9
|
+
B = v(),
|
|
10
|
+
r = q.Uint8Array,
|
|
11
|
+
t = r || Array,
|
|
12
|
+
w = r ? ArrayBuffer : t,
|
|
13
|
+
C = w.isView || function (g) {
|
|
14
|
+
return g && "length" in g;
|
|
15
|
+
},
|
|
16
|
+
D = v.call(w.prototype);
|
|
17
|
+
w = y.prototype;
|
|
18
|
+
var E = q.TextEncoder,
|
|
19
|
+
F = q.TextDecoder,
|
|
20
|
+
a = new (r ? Uint16Array : t)(32);
|
|
21
|
+
x.prototype.decode = function (g) {
|
|
22
|
+
if (!C(g)) {
|
|
23
|
+
var l = v.call(g);
|
|
24
|
+
if (l !== D && l !== A && l !== B) throw TypeError("Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'");
|
|
25
|
+
g = r ? new t(g) : g || [];
|
|
26
|
+
}
|
|
27
|
+
for (var f = l = "", b = 0, c = g.length | 0, u = c - 32 | 0, e, d, h = 0, p = 0, m, k = 0, n = -1; b < c;) {
|
|
28
|
+
for (e = b <= u ? 32 : c - b | 0; k < e; b = b + 1 | 0, k = k + 1 | 0) {
|
|
29
|
+
d = g[b] & 255;
|
|
30
|
+
switch (d >> 4) {
|
|
31
|
+
case 15:
|
|
32
|
+
m = g[b = b + 1 | 0] & 255;
|
|
33
|
+
if (2 !== m >> 6 || 247 < d) {
|
|
34
|
+
b = b - 1 | 0;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
h = (d & 7) << 6 | m & 63;
|
|
38
|
+
p = 5;
|
|
39
|
+
d = 256;
|
|
40
|
+
case 14:
|
|
41
|
+
m = g[b = b + 1 | 0] & 255, h <<= 6, h |= (d & 15) << 6 | m & 63, p = 2 === m >> 6 ? p + 4 | 0 : 24, d = d + 256 & 768;
|
|
42
|
+
case 13:
|
|
43
|
+
case 12:
|
|
44
|
+
m = g[b = b + 1 | 0] & 255, h <<= 6, h |= (d & 31) << 6 | m & 63, p = p + 7 | 0, b < c && 2 === m >> 6 && h >> p && 1114112 > h ? (d = h, h = h - 65536 | 0, 0 <= h && (n = (h >> 10) + 55296 | 0, d = (h & 1023) + 56320 | 0, 31 > k ? (a[k] = n, k = k + 1 | 0, n = -1) : (m = n, n = d, d = m))) : (d >>= 8, b = b - d - 1 | 0, d = 65533), h = p = 0, e = b <= u ? 32 : c - b | 0;
|
|
45
|
+
default:
|
|
46
|
+
a[k] = d;
|
|
47
|
+
continue;
|
|
48
|
+
case 11:
|
|
49
|
+
case 10:
|
|
50
|
+
case 9:
|
|
51
|
+
case 8:
|
|
52
|
+
}
|
|
53
|
+
a[k] = 65533;
|
|
54
|
+
}
|
|
55
|
+
f += z(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15], a[16], a[17], a[18], a[19], a[20], a[21], a[22], a[23], a[24], a[25], a[26], a[27], a[28], a[29], a[30], a[31]);
|
|
56
|
+
32 > k && (f = f.slice(0, k - 32 | 0));
|
|
57
|
+
if (b < c) {
|
|
58
|
+
if (a[0] = n, k = ~n >>> 31, n = -1, f.length < l.length) continue;
|
|
59
|
+
} else -1 !== n && (f += z(n));
|
|
60
|
+
l += f;
|
|
61
|
+
f = "";
|
|
62
|
+
}
|
|
63
|
+
return l;
|
|
64
|
+
};
|
|
65
|
+
w.encode = function (g) {
|
|
66
|
+
g = void 0 === g ? "" : "" + g;
|
|
67
|
+
var l = g.length | 0,
|
|
68
|
+
f = new t((l << 1) + 8 | 0),
|
|
69
|
+
b,
|
|
70
|
+
c = 0,
|
|
71
|
+
u = !r;
|
|
72
|
+
for (b = 0; b < l; b = b + 1 | 0, c = c + 1 | 0) {
|
|
73
|
+
var e = g.charCodeAt(b) | 0;
|
|
74
|
+
if (127 >= e) f[c] = e;else {
|
|
75
|
+
if (2047 >= e) f[c] = 192 | e >> 6;else {
|
|
76
|
+
a: {
|
|
77
|
+
if (55296 <= e) if (56319 >= e) {
|
|
78
|
+
var d = g.charCodeAt(b = b + 1 | 0) | 0;
|
|
79
|
+
if (56320 <= d && 57343 >= d) {
|
|
80
|
+
e = (e << 10) + d - 56613888 | 0;
|
|
81
|
+
if (65535 < e) {
|
|
82
|
+
f[c] = 240 | e >> 18;
|
|
83
|
+
f[c = c + 1 | 0] = 128 | e >> 12 & 63;
|
|
84
|
+
f[c = c + 1 | 0] = 128 | e >> 6 & 63;
|
|
85
|
+
f[c = c + 1 | 0] = 128 | e & 63;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
break a;
|
|
89
|
+
}
|
|
90
|
+
e = 65533;
|
|
91
|
+
} else 57343 >= e && (e = 65533);
|
|
92
|
+
!u && b << 1 < c && b << 1 < (c - 7 | 0) && (u = !0, d = new t(3 * l), d.set(f), f = d);
|
|
93
|
+
}
|
|
94
|
+
f[c] = 224 | e >> 12;
|
|
95
|
+
f[c = c + 1 | 0] = 128 | e >> 6 & 63;
|
|
96
|
+
}
|
|
97
|
+
f[c = c + 1 | 0] = 128 | e & 63;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return r ? f.subarray(0, c) : f.slice(0, c);
|
|
101
|
+
};
|
|
102
|
+
E || (q.TextEncoder = y);
|
|
103
|
+
F || (q.TextDecoder = x);
|
|
104
|
+
})("" + void 0 == typeof global ? "" + void 0 == typeof self ? this : self : global); //AnonyCo
|
|
105
|
+
//# sourceMappingURL=EncoderDecoderTogether.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["q","x","y","z","String","fromCharCode","v","toString","A","call","SharedArrayBuffer","B","r","Uint8Array","t","Array","w","ArrayBuffer","C","isView","g","D","prototype","E","TextEncoder","F","TextDecoder","a","Uint16Array","decode","l","TypeError","f","b","c","length","u","e","d","h","p","m","k","n","slice","encode","charCodeAt","set","subarray","global","self"],"sources":["EncoderDecoderTogether.min.js"],"sourcesContent":["'use strict';(function(q){function x(){}function y(){}var z=String.fromCharCode,v={}.toString,A=v.call(q.SharedArrayBuffer),B=v(),r=q.Uint8Array,t=r||Array,w=r?ArrayBuffer:t,C=w.isView||function(g){return g&&\"length\"in g},D=v.call(w.prototype);w=y.prototype;var E=q.TextEncoder,F=q.TextDecoder,a=new (r?Uint16Array:t)(32);x.prototype.decode=function(g){if(!C(g)){var l=v.call(g);if(l!==D&&l!==A&&l!==B)throw TypeError(\"Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\ng=r?new t(g):g||[]}for(var f=l=\"\",b=0,c=g.length|0,u=c-32|0,e,d,h=0,p=0,m,k=0,n=-1;b<c;){for(e=b<=u?32:c-b|0;k<e;b=b+1|0,k=k+1|0){d=g[b]&255;switch(d>>4){case 15:m=g[b=b+1|0]&255;if(2!==m>>6||247<d){b=b-1|0;break}h=(d&7)<<6|m&63;p=5;d=256;case 14:m=g[b=b+1|0]&255,h<<=6,h|=(d&15)<<6|m&63,p=2===m>>6?p+4|0:24,d=d+256&768;case 13:case 12:m=g[b=b+1|0]&255,h<<=6,h|=(d&31)<<6|m&63,p=p+7|0,b<c&&2===m>>6&&h>>p&&1114112>h?(d=h,h=h-65536|0,0<=h&&(n=(h>>10)+55296|0,d=(h&1023)+56320|0,31>k?(a[k]=n,k=k+1|0,n=-1):\n(m=n,n=d,d=m))):(d>>=8,b=b-d-1|0,d=65533),h=p=0,e=b<=u?32:c-b|0;default:a[k]=d;continue;case 11:case 10:case 9:case 8:}a[k]=65533}f+=z(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],a[19],a[20],a[21],a[22],a[23],a[24],a[25],a[26],a[27],a[28],a[29],a[30],a[31]);32>k&&(f=f.slice(0,k-32|0));if(b<c){if(a[0]=n,k=~n>>>31,n=-1,f.length<l.length)continue}else-1!==n&&(f+=z(n));l+=f;f=\"\"}return l};w.encode=function(g){g=void 0===g?\"\":\"\"+g;var l=g.length|\n0,f=new t((l<<1)+8|0),b,c=0,u=!r;for(b=0;b<l;b=b+1|0,c=c+1|0){var e=g.charCodeAt(b)|0;if(127>=e)f[c]=e;else{if(2047>=e)f[c]=192|e>>6;else{a:{if(55296<=e)if(56319>=e){var d=g.charCodeAt(b=b+1|0)|0;if(56320<=d&&57343>=d){e=(e<<10)+d-56613888|0;if(65535<e){f[c]=240|e>>18;f[c=c+1|0]=128|e>>12&63;f[c=c+1|0]=128|e>>6&63;f[c=c+1|0]=128|e&63;continue}break a}e=65533}else 57343>=e&&(e=65533);!u&&b<<1<c&&b<<1<(c-7|0)&&(u=!0,d=new t(3*l),d.set(f),f=d)}f[c]=224|e>>12;f[c=c+1|0]=128|e>>6&63}f[c=c+1|0]=128|e&63}}return r?\nf.subarray(0,c):f.slice(0,c)};E||(q.TextEncoder=y);F||(q.TextDecoder=x)})(\"\"+void 0==typeof global?\"\"+void 0==typeof self?this:self:global);//AnonyCo\n//# sourceMappingURL=https://cdn.jsdelivr.net/gh/davidliu/FastestSmallestTextEncoderDecoder/EncoderDecoderTogether.min.js.map\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LocalParticipant, ParticipantEvent, Track } from 'livekit-client';
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
|
+
|
|
3
4
|
/** @deprecated use `useRemoteParticipant` or `useLocalParticipant` instead */
|
|
4
5
|
|
|
5
6
|
/** @deprecated use `useRemoteParticipant` or `useLocalParticipant` instead */
|
|
@@ -24,7 +25,6 @@ export function useParticipant(participant) {
|
|
|
24
25
|
return pub.isSubscribed && pub.track !== undefined;
|
|
25
26
|
}));
|
|
26
27
|
};
|
|
27
|
-
|
|
28
28
|
const onMuted = pub => {
|
|
29
29
|
if (pub.kind === Track.Kind.Audio) {
|
|
30
30
|
setAudioMuted(true);
|
|
@@ -32,7 +32,6 @@ export function useParticipant(participant) {
|
|
|
32
32
|
setVideoMuted(true);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
-
|
|
36
35
|
const onUnmuted = pub => {
|
|
37
36
|
if (pub.kind === Track.Kind.Audio) {
|
|
38
37
|
setAudioMuted(false);
|
|
@@ -40,24 +39,22 @@ export function useParticipant(participant) {
|
|
|
40
39
|
setVideoMuted(false);
|
|
41
40
|
}
|
|
42
41
|
};
|
|
43
|
-
|
|
44
42
|
const onMetadataChanged = () => {
|
|
45
43
|
if (participant.metadata) {
|
|
46
44
|
setMetadata(participant.metadata);
|
|
47
45
|
}
|
|
48
46
|
};
|
|
49
|
-
|
|
50
47
|
const onIsSpeakingChanged = () => {
|
|
51
48
|
setSpeaking(participant.isSpeaking);
|
|
52
49
|
};
|
|
53
|
-
|
|
54
50
|
const onConnectionQualityUpdate = () => {
|
|
55
51
|
setConnectionQuality(participant.connectionQuality);
|
|
56
|
-
};
|
|
57
|
-
|
|
52
|
+
};
|
|
58
53
|
|
|
59
|
-
|
|
54
|
+
// register listeners
|
|
55
|
+
participant.on(ParticipantEvent.TrackMuted, onMuted).on(ParticipantEvent.TrackUnmuted, onUnmuted).on(ParticipantEvent.ParticipantMetadataChanged, onMetadataChanged).on(ParticipantEvent.IsSpeakingChanged, onIsSpeakingChanged).on(ParticipantEvent.TrackPublished, onPublicationsChanged).on(ParticipantEvent.TrackUnpublished, onPublicationsChanged).on(ParticipantEvent.TrackSubscribed, onPublicationsChanged).on(ParticipantEvent.TrackUnsubscribed, onPublicationsChanged).on(ParticipantEvent.LocalTrackPublished, onPublicationsChanged).on(ParticipantEvent.LocalTrackUnpublished, onPublicationsChanged).on(ParticipantEvent.ConnectionQualityChanged, onConnectionQualityUpdate);
|
|
60
56
|
|
|
57
|
+
// set initial state
|
|
61
58
|
onMetadataChanged();
|
|
62
59
|
onIsSpeakingChanged();
|
|
63
60
|
onPublicationsChanged();
|
|
@@ -70,15 +67,12 @@ export function useParticipant(participant) {
|
|
|
70
67
|
participant.audioTrackPublications.forEach(pub => {
|
|
71
68
|
muted = pub.isMuted;
|
|
72
69
|
});
|
|
73
|
-
|
|
74
70
|
if (muted === undefined) {
|
|
75
71
|
muted = true;
|
|
76
72
|
}
|
|
77
|
-
|
|
78
73
|
if (isAudioMuted !== muted) {
|
|
79
74
|
setAudioMuted(muted);
|
|
80
75
|
}
|
|
81
|
-
|
|
82
76
|
return {
|
|
83
77
|
isLocal: participant instanceof LocalParticipant,
|
|
84
78
|
isSpeaking,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useParticipant.ts"],"names":["LocalParticipant","ParticipantEvent","Track","useEffect","useState","useParticipant","participant","isAudioMuted","setAudioMuted","setVideoMuted","connectionQuality","setConnectionQuality","isSpeaking","setSpeaking","metadata","setMetadata","publications","setPublications","subscribedTracks","setSubscribedTracks","cameraPublication","setCameraPublication","getTrackPublication","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","TrackMuted","TrackUnmuted","ParticipantMetadataChanged","IsSpeakingChanged","TrackPublished","TrackUnpublished","TrackSubscribed","TrackUnsubscribed","LocalTrackPublished","LocalTrackUnpublished","ConnectionQualityChanged","off","muted","audioTrackPublications","forEach","isMuted","isLocal"],"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"]}
|
|
1
|
+
{"version":3,"names":["LocalParticipant","ParticipantEvent","Track","useEffect","useState","useParticipant","participant","isAudioMuted","setAudioMuted","setVideoMuted","connectionQuality","setConnectionQuality","isSpeaking","setSpeaking","metadata","setMetadata","publications","setPublications","subscribedTracks","setSubscribedTracks","cameraPublication","setCameraPublication","getTrackPublication","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","TrackMuted","TrackUnmuted","ParticipantMetadataChanged","IsSpeakingChanged","TrackPublished","TrackUnpublished","TrackSubscribed","TrackUnsubscribed","LocalTrackPublished","LocalTrackUnpublished","ConnectionQualityChanged","off","muted","audioTrackPublications","forEach","isMuted","isLocal"],"sources":["useParticipant.ts"],"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"],"mappings":"AAAA,SAEEA,gBAAgB,EAEhBC,gBAAgB,EAChBC,KAAK,QAEA,gBAAgB;AACvB,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;;AAE3C;;AAYA;AACA,OAAO,SAASC,cAAcA,CAACC,WAAwB,EAAoB;EACzE,MAAM,CAACC,YAAY,EAAEC,aAAa,CAAC,GAAGJ,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,GAAGK,aAAa,CAAC,GAAGL,QAAQ,CAAC,KAAK,CAAC;EACzC,MAAM,CAACM,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGP,QAAQ,CACxDE,WAAW,CAACI,iBACd,CAAC;EACD,MAAM,CAACE,UAAU,EAAEC,WAAW,CAAC,GAAGT,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACU,QAAQ,EAAEC,WAAW,CAAC,GAAGX,QAAQ,CAAS,CAAC;EAClD,MAAM,CAACY,YAAY,EAAEC,eAAe,CAAC,GAAGb,QAAQ,CAAqB,EAAE,CAAC;EACxE,MAAM,CAACc,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGf,QAAQ,CACtD,EACF,CAAC;EAED,MAAM,CAACgB,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGjB,QAAQ,CACxDE,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACC,MAAM,CACrD,CAAC;EACD,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGtB,QAAQ,CAChEE,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACI,UAAU,CACzD,CAAC;EACD,MAAM,CAACC,sBAAsB,EAAEC,yBAAyB,CAAC,GAAGzB,QAAQ,CAClEE,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACO,WAAW,CAC1D,CAAC;EACD3B,SAAS,CAAC,MAAM;IACd,MAAM4B,qBAAqB,GAAGA,CAAA,KAAM;MAClCd,eAAe,CAACe,KAAK,CAACC,IAAI,CAAC3B,WAAW,CAAC4B,iBAAiB,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC;MACnEd,oBAAoB,CAClBf,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACC,MAAM,CACrD,CAAC;MACDE,wBAAwB,CACtBpB,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACI,UAAU,CACzD,CAAC;MACDE,yBAAyB,CACvBvB,WAAW,CAACgB,mBAAmB,CAACpB,KAAK,CAACqB,MAAM,CAACO,WAAW,CAC1D,CAAC;MACDX,mBAAmB,CACjBa,KAAK,CAACC,IAAI,CAAC3B,WAAW,CAAC4B,iBAAiB,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,CAAEC,GAAG,IAAK;QACjE,OAAOA,GAAG,CAACC,YAAY,IAAID,GAAG,CAACE,KAAK,KAAKC,SAAS;MACpD,CAAC,CACH,CAAC;IACH,CAAC;IACD,MAAMC,OAAO,GAAIJ,GAAqB,IAAK;MACzC,IAAIA,GAAG,CAACK,IAAI,KAAKxC,KAAK,CAACyC,IAAI,CAACC,KAAK,EAAE;QACjCpC,aAAa,CAAC,IAAI,CAAC;MACrB,CAAC,MAAM,IAAI6B,GAAG,CAACK,IAAI,KAAKxC,KAAK,CAACyC,IAAI,CAACE,KAAK,EAAE;QACxCpC,aAAa,CAAC,IAAI,CAAC;MACrB;IACF,CAAC;IACD,MAAMqC,SAAS,GAAIT,GAAqB,IAAK;MAC3C,IAAIA,GAAG,CAACK,IAAI,KAAKxC,KAAK,CAACyC,IAAI,CAACC,KAAK,EAAE;QACjCpC,aAAa,CAAC,KAAK,CAAC;MACtB,CAAC,MAAM,IAAI6B,GAAG,CAACK,IAAI,KAAKxC,KAAK,CAACyC,IAAI,CAACE,KAAK,EAAE;QACxCpC,aAAa,CAAC,KAAK,CAAC;MACtB;IACF,CAAC;IACD,MAAMsC,iBAAiB,GAAGA,CAAA,KAAM;MAC9B,IAAIzC,WAAW,CAACQ,QAAQ,EAAE;QACxBC,WAAW,CAACT,WAAW,CAACQ,QAAQ,CAAC;MACnC;IACF,CAAC;IACD,MAAMkC,mBAAmB,GAAGA,CAAA,KAAM;MAChCnC,WAAW,CAACP,WAAW,CAACM,UAAU,CAAC;IACrC,CAAC;IACD,MAAMqC,yBAAyB,GAAGA,CAAA,KAAM;MACtCtC,oBAAoB,CAACL,WAAW,CAACI,iBAAiB,CAAC;IACrD,CAAC;;IAED;IACAJ,WAAW,CACR4C,EAAE,CAACjD,gBAAgB,CAACkD,UAAU,EAAEV,OAAO,CAAC,CACxCS,EAAE,CAACjD,gBAAgB,CAACmD,YAAY,EAAEN,SAAS,CAAC,CAC5CI,EAAE,CAACjD,gBAAgB,CAACoD,0BAA0B,EAAEN,iBAAiB,CAAC,CAClEG,EAAE,CAACjD,gBAAgB,CAACqD,iBAAiB,EAAEN,mBAAmB,CAAC,CAC3DE,EAAE,CAACjD,gBAAgB,CAACsD,cAAc,EAAExB,qBAAqB,CAAC,CAC1DmB,EAAE,CAACjD,gBAAgB,CAACuD,gBAAgB,EAAEzB,qBAAqB,CAAC,CAC5DmB,EAAE,CAACjD,gBAAgB,CAACwD,eAAe,EAAE1B,qBAAqB,CAAC,CAC3DmB,EAAE,CAACjD,gBAAgB,CAACyD,iBAAiB,EAAE3B,qBAAqB,CAAC,CAC7DmB,EAAE,CAACjD,gBAAgB,CAAC0D,mBAAmB,EAAE5B,qBAAqB,CAAC,CAC/DmB,EAAE,CAACjD,gBAAgB,CAAC2D,qBAAqB,EAAE7B,qBAAqB,CAAC,CACjEmB,EAAE,CAACjD,gBAAgB,CAAC4D,wBAAwB,EAAEZ,yBAAyB,CAAC;;IAE3E;IACAF,iBAAiB,CAAC,CAAC;IACnBC,mBAAmB,CAAC,CAAC;IACrBjB,qBAAqB,CAAC,CAAC;IAEvB,OAAO,MAAM;MACX;MACAzB,WAAW,CACRwD,GAAG,CAAC7D,gBAAgB,CAACkD,UAAU,EAAEV,OAAO,CAAC,CACzCqB,GAAG,CAAC7D,gBAAgB,CAACmD,YAAY,EAAEN,SAAS,CAAC,CAC7CgB,GAAG,CAAC7D,gBAAgB,CAACoD,0BAA0B,EAAEN,iBAAiB,CAAC,CACnEe,GAAG,CAAC7D,gBAAgB,CAACqD,iBAAiB,EAAEN,mBAAmB,CAAC,CAC5Dc,GAAG,CAAC7D,gBAAgB,CAACsD,cAAc,EAAExB,qBAAqB,CAAC,CAC3D+B,GAAG,CAAC7D,gBAAgB,CAACuD,gBAAgB,EAAEzB,qBAAqB,CAAC,CAC7D+B,GAAG,CAAC7D,gBAAgB,CAACwD,eAAe,EAAE1B,qBAAqB,CAAC,CAC5D+B,GAAG,CAAC7D,gBAAgB,CAACyD,iBAAiB,EAAE3B,qBAAqB,CAAC,CAC9D+B,GAAG,CAAC7D,gBAAgB,CAAC0D,mBAAmB,EAAE5B,qBAAqB,CAAC,CAChE+B,GAAG,CAAC7D,gBAAgB,CAAC2D,qBAAqB,EAAE7B,qBAAqB,CAAC,CAClE+B,GAAG,CACF7D,gBAAgB,CAAC4D,wBAAwB,EACzCZ,yBACF,CAAC;IACL,CAAC;EACH,CAAC,EAAE,CAAC3C,WAAW,CAAC,CAAC;EAEjB,IAAIyD,KAA0B;EAC9BzD,WAAW,CAAC0D,sBAAsB,CAACC,OAAO,CAAE5B,GAAG,IAAK;IAClD0B,KAAK,GAAG1B,GAAG,CAAC6B,OAAO;EACrB,CAAC,CAAC;EACF,IAAIH,KAAK,KAAKvB,SAAS,EAAE;IACvBuB,KAAK,GAAG,IAAI;EACd;EACA,IAAIxD,YAAY,KAAKwD,KAAK,EAAE;IAC1BvD,aAAa,CAACuD,KAAK,CAAC;EACtB;EAEA,OAAO;IACLI,OAAO,EAAE7D,WAAW,YAAYN,gBAAgB;IAChDY,UAAU;IACVF,iBAAiB;IACjBM,YAAY;IACZE,gBAAgB;IAChBE,iBAAiB;IACjBK,qBAAqB;IACrBG,sBAAsB;IACtBd;EACF,CAAC;AACH","ignoreList":[]}
|
package/lib/module/useRoom.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { ConnectionState, RoomEvent, Track } from 'livekit-client';
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
|
-
|
|
4
3
|
/** @deprecated wrap your components in a <LiveKitRoom> component instead and use more granular hooks to track state you're interested in */
|
|
5
4
|
export function useRoom(room, options) {
|
|
6
|
-
var _options$sortParticip;
|
|
7
|
-
|
|
8
5
|
const [error] = useState();
|
|
9
6
|
const [participants, setParticipants] = useState([]);
|
|
10
7
|
const [audioTracks, setAudioTracks] = useState([]);
|
|
11
|
-
const sortFunc = (
|
|
8
|
+
const sortFunc = (options === null || options === void 0 ? void 0 : options.sortParticipants) ?? sortParticipants;
|
|
12
9
|
useEffect(() => {
|
|
13
10
|
const onParticipantsChanged = () => {
|
|
14
11
|
const remotes = Array.from(room.remoteParticipants.values());
|
|
@@ -17,15 +14,12 @@ export function useRoom(room, options) {
|
|
|
17
14
|
sortFunc(newParticipants, room.localParticipant);
|
|
18
15
|
setParticipants(newParticipants);
|
|
19
16
|
};
|
|
20
|
-
|
|
21
17
|
const onSubscribedTrackChanged = track => {
|
|
22
18
|
// ordering may have changed, re-sort
|
|
23
19
|
onParticipantsChanged();
|
|
24
|
-
|
|
25
20
|
if (track && track.kind !== Track.Kind.Audio) {
|
|
26
21
|
return;
|
|
27
22
|
}
|
|
28
|
-
|
|
29
23
|
const tracks = [];
|
|
30
24
|
room.remoteParticipants.forEach(p => {
|
|
31
25
|
p.audioTrackPublications.forEach(pub => {
|
|
@@ -36,17 +30,16 @@ export function useRoom(room, options) {
|
|
|
36
30
|
});
|
|
37
31
|
setAudioTracks(tracks);
|
|
38
32
|
};
|
|
39
|
-
|
|
40
33
|
const onConnectionStateChanged = state => {
|
|
41
34
|
if (state === ConnectionState.Connected) {
|
|
42
35
|
onParticipantsChanged();
|
|
43
36
|
}
|
|
44
37
|
};
|
|
45
|
-
|
|
46
38
|
room.once(RoomEvent.Disconnected, () => {
|
|
47
39
|
room.off(RoomEvent.ParticipantConnected, onParticipantsChanged).off(RoomEvent.ParticipantDisconnected, onParticipantsChanged).off(RoomEvent.ActiveSpeakersChanged, onParticipantsChanged).off(RoomEvent.TrackSubscribed, onSubscribedTrackChanged).off(RoomEvent.TrackUnsubscribed, onSubscribedTrackChanged).off(RoomEvent.LocalTrackPublished, onParticipantsChanged).off(RoomEvent.LocalTrackUnpublished, onParticipantsChanged).off(RoomEvent.AudioPlaybackStatusChanged, onParticipantsChanged).off(RoomEvent.ConnectionStateChanged, onConnectionStateChanged);
|
|
48
40
|
});
|
|
49
|
-
room.on(RoomEvent.ConnectionStateChanged, onConnectionStateChanged).on(RoomEvent.Reconnected, onParticipantsChanged).on(RoomEvent.ParticipantConnected, onParticipantsChanged).on(RoomEvent.ParticipantDisconnected, onParticipantsChanged).on(RoomEvent.ActiveSpeakersChanged, onParticipantsChanged).on(RoomEvent.TrackSubscribed, onSubscribedTrackChanged).on(RoomEvent.TrackUnsubscribed, onSubscribedTrackChanged).on(RoomEvent.LocalTrackPublished, onParticipantsChanged).on(RoomEvent.LocalTrackUnpublished, onParticipantsChanged)
|
|
41
|
+
room.on(RoomEvent.ConnectionStateChanged, onConnectionStateChanged).on(RoomEvent.Reconnected, onParticipantsChanged).on(RoomEvent.ParticipantConnected, onParticipantsChanged).on(RoomEvent.ParticipantDisconnected, onParticipantsChanged).on(RoomEvent.ActiveSpeakersChanged, onParticipantsChanged).on(RoomEvent.TrackSubscribed, onSubscribedTrackChanged).on(RoomEvent.TrackUnsubscribed, onSubscribedTrackChanged).on(RoomEvent.LocalTrackPublished, onParticipantsChanged).on(RoomEvent.LocalTrackUnpublished, onParticipantsChanged)
|
|
42
|
+
// trigger a state change by re-sorting participants
|
|
50
43
|
.on(RoomEvent.AudioPlaybackStatusChanged, onParticipantsChanged);
|
|
51
44
|
onSubscribedTrackChanged();
|
|
52
45
|
return () => {
|
|
@@ -59,6 +52,7 @@ export function useRoom(room, options) {
|
|
|
59
52
|
audioTracks
|
|
60
53
|
};
|
|
61
54
|
}
|
|
55
|
+
|
|
62
56
|
/**
|
|
63
57
|
* Default sort for participants, it'll order participants by:
|
|
64
58
|
* 1. dominant speaker (speaker with the loudest audio level)
|
|
@@ -67,56 +61,49 @@ export function useRoom(room, options) {
|
|
|
67
61
|
* 4. participants with video on
|
|
68
62
|
* 5. by joinedAt
|
|
69
63
|
*/
|
|
70
|
-
|
|
71
64
|
export function sortParticipants(participants, localParticipant) {
|
|
72
65
|
participants.sort((a, b) => {
|
|
73
|
-
var _a$joinedAt
|
|
74
|
-
|
|
66
|
+
var _a$joinedAt, _b$joinedAt;
|
|
75
67
|
// loudest speaker first
|
|
76
68
|
if (a.isSpeaking && b.isSpeaking) {
|
|
77
69
|
return b.audioLevel - a.audioLevel;
|
|
78
|
-
}
|
|
79
|
-
|
|
70
|
+
}
|
|
80
71
|
|
|
72
|
+
// speaker goes first
|
|
81
73
|
if (a.isSpeaking !== b.isSpeaking) {
|
|
82
74
|
if (a.isSpeaking) {
|
|
83
75
|
return -1;
|
|
84
76
|
} else {
|
|
85
77
|
return 1;
|
|
86
78
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
79
|
+
}
|
|
89
80
|
|
|
81
|
+
// last active speaker first
|
|
90
82
|
if (a.lastSpokeAt !== b.lastSpokeAt) {
|
|
91
|
-
var _a$lastSpokeAt
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
const bLast = (_b$lastSpokeAt$getTim = (_b$lastSpokeAt = b.lastSpokeAt) === null || _b$lastSpokeAt === void 0 ? void 0 : _b$lastSpokeAt.getTime()) !== null && _b$lastSpokeAt$getTim !== void 0 ? _b$lastSpokeAt$getTim : 0;
|
|
83
|
+
var _a$lastSpokeAt, _b$lastSpokeAt;
|
|
84
|
+
const aLast = ((_a$lastSpokeAt = a.lastSpokeAt) === null || _a$lastSpokeAt === void 0 ? void 0 : _a$lastSpokeAt.getTime()) ?? 0;
|
|
85
|
+
const bLast = ((_b$lastSpokeAt = b.lastSpokeAt) === null || _b$lastSpokeAt === void 0 ? void 0 : _b$lastSpokeAt.getTime()) ?? 0;
|
|
95
86
|
return bLast - aLast;
|
|
96
|
-
}
|
|
97
|
-
|
|
87
|
+
}
|
|
98
88
|
|
|
89
|
+
// video on
|
|
99
90
|
const aVideo = a.videoTrackPublications.size > 0;
|
|
100
91
|
const bVideo = b.videoTrackPublications.size > 0;
|
|
101
|
-
|
|
102
92
|
if (aVideo !== bVideo) {
|
|
103
93
|
if (aVideo) {
|
|
104
94
|
return -1;
|
|
105
95
|
} else {
|
|
106
96
|
return 1;
|
|
107
97
|
}
|
|
108
|
-
}
|
|
109
|
-
|
|
98
|
+
}
|
|
110
99
|
|
|
111
|
-
|
|
100
|
+
// joinedAt
|
|
101
|
+
return (((_a$joinedAt = a.joinedAt) === null || _a$joinedAt === void 0 ? void 0 : _a$joinedAt.getTime()) ?? 0) - (((_b$joinedAt = b.joinedAt) === null || _b$joinedAt === void 0 ? void 0 : _b$joinedAt.getTime()) ?? 0);
|
|
112
102
|
});
|
|
113
|
-
|
|
114
103
|
if (localParticipant) {
|
|
115
104
|
const localIdx = participants.indexOf(localParticipant);
|
|
116
|
-
|
|
117
105
|
if (localIdx >= 0) {
|
|
118
106
|
participants.splice(localIdx, 1);
|
|
119
|
-
|
|
120
107
|
if (participants.length > 0) {
|
|
121
108
|
participants.splice(1, 0, localParticipant);
|
|
122
109
|
} else {
|