@livekit/react-native 2.2.0 → 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 +14 -5
- 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/video/SimulcastVideoEncoderFactoryWrapper.kt +2 -2
- package/lib/commonjs/audio/AudioManager.js +4 -27
- package/lib/commonjs/audio/AudioManager.js.map +1 -1
- package/lib/commonjs/audio/AudioSession.js +55 -21
- 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 +0 -63
- package/lib/commonjs/hooks.js.map +1 -1
- package/lib/commonjs/index.js +9 -84
- 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 +16 -42
- package/lib/commonjs/polyfills/EncoderDecoderTogether.min.js.map +1 -1
- 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 -14
- 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 +5 -23
- 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 +16 -42
- package/lib/module/polyfills/EncoderDecoderTogether.min.js.map +1 -1
- 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 -7
- 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/{index.d.ts → src/index.d.ts} +3 -2
- 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 -18
- 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 +11 -9
- package/src/index.tsx +10 -8
- package/src/useRoom.ts +1 -1
- package/lib/typescript/hooks.d.ts +0 -2
- /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,"
|
|
1
|
+
{"version":3,"names":["_componentsReact","require","React","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","LiveKitRoom","props","room","useLiveKitRoom","createElement","Fragment","RoomContext","Provider","value","LKFeatureContext","featureFlags","children"],"sources":["LiveKitRoom.tsx"],"sourcesContent":["import {\n type FeatureFlags,\n LKFeatureContext,\n RoomContext,\n useLiveKitRoom,\n} from '@livekit/components-react';\nimport type {\n AudioCaptureOptions,\n RoomConnectOptions,\n RoomOptions,\n ScreenShareCaptureOptions,\n VideoCaptureOptions,\n} from 'livekit-client';\nimport type { MediaDeviceFailure, Room } from 'livekit-client';\nimport * as React from 'react';\n\n/** @public */\nexport interface LiveKitRoomProps {\n /**\n * URL to the LiveKit server.\n * For example: `wss://<domain>.livekit.cloud`\n * To simplify the implementation, `undefined` is also accepted as an intermediate value, but only with a valid string url can the connection be established.\n */\n serverUrl: string | undefined;\n /**\n * A user specific access token for a client to authenticate to the room.\n * This token is necessary to establish a connection to the room.\n * To simplify the implementation, `undefined` is also accepted as an intermediate value, but only with a valid string token can the connection be established.\n *\n * @see https://docs.livekit.io/cloud/project-management/keys-and-tokens/#generating-access-tokens\n */\n token: string | undefined;\n /**\n * Publish audio immediately after connecting to your LiveKit room.\n * @defaultValue `false`\n * @see https://docs.livekit.io/client-sdk-js/interfaces/AudioCaptureOptions.html\n */\n audio?: AudioCaptureOptions | boolean;\n /**\n * Publish video immediately after connecting to your LiveKit room.\n * @defaultValue `false`\n * @see https://docs.livekit.io/client-sdk-js/interfaces/VideoCaptureOptions.html\n */\n video?: VideoCaptureOptions | boolean;\n /**\n * Publish screen share immediately after connecting to your LiveKit room.\n * @defaultValue `false`\n * @see https://docs.livekit.io/client-sdk-js/interfaces/ScreenShareCaptureOptions.html\n */\n screen?: ScreenShareCaptureOptions | boolean;\n /**\n * If set to true a connection to LiveKit room is initiated.\n * @defaultValue `false`\n */\n connect?: boolean;\n /**\n * Options for when creating a new room.\n * When you pass your own room instance to this component, these options have no effect.\n * Instead, set the options directly in the room instance.\n *\n * @see https://docs.livekit.io/client-sdk-js/interfaces/RoomOptions.html\n */\n options?: RoomOptions;\n /**\n * Define options how to connect to the LiveKit server.\n *\n * @see https://docs.livekit.io/client-sdk-js/interfaces/RoomConnectOptions.html\n */\n connectOptions?: RoomConnectOptions;\n onConnected?: () => void;\n onDisconnected?: () => void;\n onError?: (error: Error) => void;\n onMediaDeviceFailure?: (failure?: MediaDeviceFailure) => void;\n onEncryptionError?: (error: Error) => void;\n /**\n * Optional room instance.\n * By passing your own room instance you overwrite the `options` parameter,\n * make sure to set the options directly on the room instance itself.\n */\n room?: Room;\n\n simulateParticipants?: number | undefined;\n\n /** @experimental */\n featureFlags?: FeatureFlags | undefined;\n}\n\n/**\n * The `LiveKitRoom` component provides the room context to all its child components.\n * It is generally the starting point of your LiveKit app and the root of the LiveKit component tree.\n * It provides the room state as a React context to all child components, so you don't have to pass it yourself.\n *\n * @example\n * ```tsx\n * <LiveKitRoom\n * token='<livekit-token>'\n * serverUrl='<url-to-livekit-server>'\n * connect={true}\n * >\n * ...\n * </LiveKitRoom>\n * ```\n * @public\n */\nexport function LiveKitRoom(props: React.PropsWithChildren<LiveKitRoomProps>) {\n const { room } = useLiveKitRoom(props);\n return (\n <>\n {room && (\n <RoomContext.Provider value={room}>\n <LKFeatureContext.Provider value={props.featureFlags}>\n {props.children}\n </LKFeatureContext.Provider>\n </RoomContext.Provider>\n )}\n </>\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AAcA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AAA+B,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE/B;;AAuEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,WAAWA,CAACC,KAAgD,EAAE;EAC5E,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,+BAAc,EAACF,KAAK,CAAC;EACtC,oBACEvB,KAAA,CAAA0B,aAAA,CAAA1B,KAAA,CAAA2B,QAAA,QACGH,IAAI,iBACHxB,KAAA,CAAA0B,aAAA,CAAC5B,gBAAA,CAAA8B,WAAW,CAACC,QAAQ;IAACC,KAAK,EAAEN;EAAK,gBAChCxB,KAAA,CAAA0B,aAAA,CAAC5B,gBAAA,CAAAiC,gBAAgB,CAACF,QAAQ;IAACC,KAAK,EAAEP,KAAK,CAACS;EAAa,GAClDT,KAAK,CAACU,QACkB,CACP,CAExB,CAAC;AAEP","ignoreList":[]}
|
|
@@ -4,57 +4,44 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VideoTrack = void 0;
|
|
7
|
-
|
|
8
|
-
var React =
|
|
9
|
-
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var React = _react;
|
|
10
9
|
var _reactNative = require("react-native");
|
|
11
|
-
|
|
12
10
|
var _livekitClient = require("livekit-client");
|
|
13
|
-
|
|
14
11
|
var _reactNativeWebrtc = require("@livekit/react-native-webrtc");
|
|
15
|
-
|
|
16
12
|
var _ViewPortDetector = _interopRequireDefault(require("./ViewPortDetector"));
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
trackRef,
|
|
32
|
-
objectFit = 'cover',
|
|
33
|
-
zOrder,
|
|
34
|
-
mirror
|
|
35
|
-
} = _ref;
|
|
36
|
-
const [elementInfo] = (0, React.useState)(() => {
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
|
+
const VideoTrack = ({
|
|
20
|
+
style = {},
|
|
21
|
+
trackRef,
|
|
22
|
+
objectFit = 'cover',
|
|
23
|
+
zOrder,
|
|
24
|
+
mirror
|
|
25
|
+
}) => {
|
|
26
|
+
const [elementInfo] = (0, _react.useState)(() => {
|
|
37
27
|
var _trackRef$publication;
|
|
38
|
-
|
|
39
28
|
let info = new VideoTrackElementInfo();
|
|
40
|
-
info.id = trackRef === null || trackRef === void 0
|
|
29
|
+
info.id = trackRef === null || trackRef === void 0 || (_trackRef$publication = trackRef.publication) === null || _trackRef$publication === void 0 ? void 0 : _trackRef$publication.trackSid;
|
|
41
30
|
return info;
|
|
42
31
|
});
|
|
43
|
-
const layoutOnChange = (0,
|
|
44
|
-
const visibilityOnChange = (0,
|
|
32
|
+
const layoutOnChange = (0, _react.useCallback)(event => elementInfo.onLayout(event), [elementInfo]);
|
|
33
|
+
const visibilityOnChange = (0, _react.useCallback)(isVisible => elementInfo.onVisibility(isVisible), [elementInfo]);
|
|
45
34
|
const videoTrack = trackRef === null || trackRef === void 0 ? void 0 : trackRef.publication.track;
|
|
46
|
-
const shouldObserveVisibility = (0,
|
|
35
|
+
const shouldObserveVisibility = (0, _react.useMemo)(() => {
|
|
47
36
|
return videoTrack instanceof _livekitClient.RemoteVideoTrack && videoTrack.isAdaptiveStream;
|
|
48
37
|
}, [videoTrack]);
|
|
49
|
-
const [mediaStream, setMediaStream] = (0,
|
|
50
|
-
(0,
|
|
38
|
+
const [mediaStream, setMediaStream] = (0, _react.useState)(videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.mediaStream);
|
|
39
|
+
(0, _react.useEffect)(() => {
|
|
51
40
|
setMediaStream(videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.mediaStream);
|
|
52
|
-
|
|
53
41
|
if (videoTrack instanceof _livekitClient.LocalVideoTrack) {
|
|
54
42
|
const onRestarted = track => {
|
|
55
43
|
setMediaStream(track === null || track === void 0 ? void 0 : track.mediaStream);
|
|
56
44
|
};
|
|
57
|
-
|
|
58
45
|
videoTrack.on(_livekitClient.TrackEvent.Restarted, onRestarted);
|
|
59
46
|
return () => {
|
|
60
47
|
videoTrack.off(_livekitClient.TrackEvent.Restarted, onRestarted);
|
|
@@ -63,18 +50,19 @@ const VideoTrack = _ref => {
|
|
|
63
50
|
return () => {};
|
|
64
51
|
}
|
|
65
52
|
}, [videoTrack]);
|
|
66
|
-
(0,
|
|
53
|
+
(0, _react.useEffect)(() => {
|
|
67
54
|
if (videoTrack instanceof _livekitClient.RemoteVideoTrack && videoTrack.isAdaptiveStream) {
|
|
68
|
-
videoTrack === null || videoTrack === void 0
|
|
55
|
+
videoTrack === null || videoTrack === void 0 || videoTrack.observeElementInfo(elementInfo);
|
|
69
56
|
return () => {
|
|
70
|
-
videoTrack === null || videoTrack === void 0
|
|
57
|
+
videoTrack === null || videoTrack === void 0 || videoTrack.stopObservingElementInfo(elementInfo);
|
|
71
58
|
};
|
|
72
59
|
} else {
|
|
73
60
|
return () => {};
|
|
74
61
|
}
|
|
75
62
|
}, [videoTrack, elementInfo]);
|
|
76
63
|
return /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
77
|
-
style: {
|
|
64
|
+
style: {
|
|
65
|
+
...style,
|
|
78
66
|
...styles.container
|
|
79
67
|
},
|
|
80
68
|
onLayout: layoutOnChange
|
|
@@ -85,15 +73,13 @@ const VideoTrack = _ref => {
|
|
|
85
73
|
propKey: videoTrack
|
|
86
74
|
}, /*#__PURE__*/React.createElement(_reactNativeWebrtc.RTCView, {
|
|
87
75
|
style: styles.videoTrack,
|
|
88
|
-
streamURL: (
|
|
76
|
+
streamURL: (mediaStream === null || mediaStream === void 0 ? void 0 : mediaStream.toURL()) ?? '',
|
|
89
77
|
objectFit: objectFit,
|
|
90
78
|
zOrder: zOrder,
|
|
91
79
|
mirror: mirror
|
|
92
80
|
})));
|
|
93
81
|
};
|
|
94
|
-
|
|
95
82
|
exports.VideoTrack = VideoTrack;
|
|
96
|
-
|
|
97
83
|
const styles = _reactNative.StyleSheet.create({
|
|
98
84
|
container: {},
|
|
99
85
|
videoTrack: {
|
|
@@ -101,44 +87,28 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
101
87
|
width: '100%'
|
|
102
88
|
}
|
|
103
89
|
});
|
|
104
|
-
|
|
105
90
|
class VideoTrackElementInfo {
|
|
106
91
|
constructor() {
|
|
107
92
|
_defineProperty(this, "element", {});
|
|
108
|
-
|
|
109
93
|
_defineProperty(this, "something", void 0);
|
|
110
|
-
|
|
111
94
|
_defineProperty(this, "id", void 0);
|
|
112
|
-
|
|
113
95
|
_defineProperty(this, "_width", 0);
|
|
114
|
-
|
|
115
96
|
_defineProperty(this, "_height", 0);
|
|
116
|
-
|
|
117
97
|
_defineProperty(this, "_observing", false);
|
|
118
|
-
|
|
119
98
|
_defineProperty(this, "visible", true);
|
|
120
|
-
|
|
121
99
|
_defineProperty(this, "visibilityChangedAt", void 0);
|
|
122
|
-
|
|
123
100
|
_defineProperty(this, "pictureInPicture", false);
|
|
124
|
-
|
|
125
101
|
_defineProperty(this, "handleResize", void 0);
|
|
126
|
-
|
|
127
102
|
_defineProperty(this, "handleVisibilityChanged", void 0);
|
|
128
|
-
|
|
129
103
|
_defineProperty(this, "width", () => this._width);
|
|
130
|
-
|
|
131
104
|
_defineProperty(this, "height", () => this._height);
|
|
132
105
|
}
|
|
133
|
-
|
|
134
106
|
observe() {
|
|
135
107
|
this._observing = true;
|
|
136
108
|
}
|
|
137
|
-
|
|
138
109
|
stopObserving() {
|
|
139
110
|
this._observing = false;
|
|
140
111
|
}
|
|
141
|
-
|
|
142
112
|
onLayout(event) {
|
|
143
113
|
let {
|
|
144
114
|
width,
|
|
@@ -146,26 +116,20 @@ class VideoTrackElementInfo {
|
|
|
146
116
|
} = event.nativeEvent.layout;
|
|
147
117
|
this._width = width;
|
|
148
118
|
this._height = height;
|
|
149
|
-
|
|
150
119
|
if (this._observing) {
|
|
151
120
|
var _this$handleResize;
|
|
152
|
-
|
|
153
|
-
(_this$handleResize = this.handleResize) === null || _this$handleResize === void 0 ? void 0 : _this$handleResize.call(this);
|
|
121
|
+
(_this$handleResize = this.handleResize) === null || _this$handleResize === void 0 || _this$handleResize.call(this);
|
|
154
122
|
}
|
|
155
123
|
}
|
|
156
|
-
|
|
157
124
|
onVisibility(isVisible) {
|
|
158
125
|
if (this.visible !== isVisible) {
|
|
159
126
|
this.visible = isVisible;
|
|
160
127
|
this.visibilityChangedAt = Date.now();
|
|
161
|
-
|
|
162
128
|
if (this._observing) {
|
|
163
129
|
var _this$handleVisibilit;
|
|
164
|
-
|
|
165
|
-
(_this$handleVisibilit = this.handleVisibilityChanged) === null || _this$handleVisibilit === void 0 ? void 0 : _this$handleVisibilit.call(this);
|
|
130
|
+
(_this$handleVisibilit = this.handleVisibilityChanged) === null || _this$handleVisibilit === void 0 || _this$handleVisibilit.call(this);
|
|
166
131
|
}
|
|
167
132
|
}
|
|
168
133
|
}
|
|
169
|
-
|
|
170
134
|
}
|
|
171
135
|
//# sourceMappingURL=VideoTrack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoTrack.tsx"],"names":["VideoTrack","style","trackRef","objectFit","zOrder","mirror","elementInfo","info","VideoTrackElementInfo","id","publication","trackSid","layoutOnChange","event","onLayout","visibilityOnChange","isVisible","onVisibility","videoTrack","track","shouldObserveVisibility","RemoteVideoTrack","isAdaptiveStream","mediaStream","setMediaStream","LocalVideoTrack","onRestarted","on","TrackEvent","Restarted","off","observeElementInfo","stopObservingElementInfo","styles","container","toURL","StyleSheet","create","flex","width","_width","_height","observe","_observing","stopObserving","height","nativeEvent","layout","handleResize","visible","visibilityChangedAt","Date","now","handleVisibilityChanged"],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport { LayoutChangeEvent, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n ElementInfo,\n LocalVideoTrack,\n Track,\n TrackEvent,\n} from 'livekit-client';\nimport { RTCView } from '@livekit/react-native-webrtc';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RemoteVideoTrack } from 'livekit-client';\nimport ViewPortDetector from './ViewPortDetector';\nimport type { TrackReference } from '@livekit/components-react';\n\nexport type VideoTrackProps = {\n trackRef: TrackReference | undefined;\n style?: ViewStyle;\n objectFit?: 'cover' | 'contain' | undefined;\n mirror?: boolean;\n zOrder?: number;\n};\n\nexport const VideoTrack = ({\n style = {},\n trackRef,\n objectFit = 'cover',\n zOrder,\n mirror,\n}: VideoTrackProps) => {\n const [elementInfo] = useState(() => {\n let info = new VideoTrackElementInfo();\n info.id = trackRef?.publication?.trackSid;\n return info;\n });\n\n const layoutOnChange = useCallback(\n (event: LayoutChangeEvent) => elementInfo.onLayout(event),\n [elementInfo]\n );\n const visibilityOnChange = useCallback(\n (isVisible: boolean) => elementInfo.onVisibility(isVisible),\n [elementInfo]\n );\n\n const videoTrack = trackRef?.publication.track;\n\n const shouldObserveVisibility = useMemo(() => {\n return (\n videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream\n );\n }, [videoTrack]);\n\n const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);\n useEffect(() => {\n setMediaStream(videoTrack?.mediaStream);\n if (videoTrack instanceof LocalVideoTrack) {\n const onRestarted = (track: Track | null) => {\n setMediaStream(track?.mediaStream);\n };\n videoTrack.on(TrackEvent.Restarted, onRestarted);\n\n return () => {\n videoTrack.off(TrackEvent.Restarted, onRestarted);\n };\n } else {\n return () => {};\n }\n }, [videoTrack]);\n\n useEffect(() => {\n if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {\n videoTrack?.observeElementInfo(elementInfo);\n return () => {\n videoTrack?.stopObservingElementInfo(elementInfo);\n };\n } else {\n return () => {};\n }\n }, [videoTrack, elementInfo]);\n\n return (\n <View style={{ ...style, ...styles.container }} onLayout={layoutOnChange}>\n <ViewPortDetector\n onChange={visibilityOnChange}\n style={styles.videoTrack}\n disabled={!shouldObserveVisibility}\n propKey={videoTrack}\n >\n <RTCView\n style={styles.videoTrack}\n streamURL={mediaStream?.toURL() ?? ''}\n objectFit={objectFit}\n zOrder={zOrder}\n mirror={mirror}\n />\n </ViewPortDetector>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n videoTrack: {\n flex: 1,\n width: '100%',\n },\n});\n\nclass VideoTrackElementInfo implements ElementInfo {\n element: object = {};\n something?: any;\n id?: string;\n _width = 0;\n _height = 0;\n _observing = false;\n visible: boolean = true;\n visibilityChangedAt: number | undefined;\n pictureInPicture = false;\n handleResize?: (() => void) | undefined;\n handleVisibilityChanged?: (() => void) | undefined;\n width = () => this._width;\n height = () => this._height;\n\n observe(): void {\n this._observing = true;\n }\n stopObserving(): void {\n this._observing = false;\n }\n\n onLayout(event: LayoutChangeEvent) {\n let { width, height } = event.nativeEvent.layout;\n this._width = width;\n this._height = height;\n\n if (this._observing) {\n this.handleResize?.();\n }\n }\n onVisibility(isVisible: boolean) {\n if (this.visible !== isVisible) {\n this.visible = isVisible;\n this.visibilityChangedAt = Date.now();\n if (this._observing) {\n this.handleVisibilityChanged?.();\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNative","_livekitClient","_reactNativeWebrtc","_ViewPortDetector","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","VideoTrack","style","trackRef","objectFit","zOrder","mirror","elementInfo","useState","_trackRef$publication","info","VideoTrackElementInfo","id","publication","trackSid","layoutOnChange","useCallback","event","onLayout","visibilityOnChange","isVisible","onVisibility","videoTrack","track","shouldObserveVisibility","useMemo","RemoteVideoTrack","isAdaptiveStream","mediaStream","setMediaStream","useEffect","LocalVideoTrack","onRestarted","on","TrackEvent","Restarted","off","observeElementInfo","stopObservingElementInfo","createElement","View","styles","container","onChange","disabled","propKey","RTCView","streamURL","toURL","exports","StyleSheet","create","flex","width","constructor","_width","_height","observe","_observing","stopObserving","height","nativeEvent","layout","_this$handleResize","handleResize","visible","visibilityChangedAt","Date","now","_this$handleVisibilit","handleVisibilityChanged"],"sources":["VideoTrack.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n type LayoutChangeEvent,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport {\n type ElementInfo,\n LocalVideoTrack,\n Track,\n TrackEvent,\n} from 'livekit-client';\nimport { RTCView } from '@livekit/react-native-webrtc';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RemoteVideoTrack } from 'livekit-client';\nimport ViewPortDetector from './ViewPortDetector';\nimport type { TrackReference } from '@livekit/components-react';\n\nexport type VideoTrackProps = {\n trackRef: TrackReference | undefined;\n style?: ViewStyle;\n objectFit?: 'cover' | 'contain' | undefined;\n mirror?: boolean;\n zOrder?: number;\n};\n\nexport const VideoTrack = ({\n style = {},\n trackRef,\n objectFit = 'cover',\n zOrder,\n mirror,\n}: VideoTrackProps) => {\n const [elementInfo] = useState(() => {\n let info = new VideoTrackElementInfo();\n info.id = trackRef?.publication?.trackSid;\n return info;\n });\n\n const layoutOnChange = useCallback(\n (event: LayoutChangeEvent) => elementInfo.onLayout(event),\n [elementInfo]\n );\n const visibilityOnChange = useCallback(\n (isVisible: boolean) => elementInfo.onVisibility(isVisible),\n [elementInfo]\n );\n\n const videoTrack = trackRef?.publication.track;\n\n const shouldObserveVisibility = useMemo(() => {\n return (\n videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream\n );\n }, [videoTrack]);\n\n const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);\n useEffect(() => {\n setMediaStream(videoTrack?.mediaStream);\n if (videoTrack instanceof LocalVideoTrack) {\n const onRestarted = (track: Track | null) => {\n setMediaStream(track?.mediaStream);\n };\n videoTrack.on(TrackEvent.Restarted, onRestarted);\n\n return () => {\n videoTrack.off(TrackEvent.Restarted, onRestarted);\n };\n } else {\n return () => {};\n }\n }, [videoTrack]);\n\n useEffect(() => {\n if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {\n videoTrack?.observeElementInfo(elementInfo);\n return () => {\n videoTrack?.stopObservingElementInfo(elementInfo);\n };\n } else {\n return () => {};\n }\n }, [videoTrack, elementInfo]);\n\n return (\n <View style={{ ...style, ...styles.container }} onLayout={layoutOnChange}>\n <ViewPortDetector\n onChange={visibilityOnChange}\n style={styles.videoTrack}\n disabled={!shouldObserveVisibility}\n propKey={videoTrack}\n >\n <RTCView\n style={styles.videoTrack}\n streamURL={mediaStream?.toURL() ?? ''}\n objectFit={objectFit}\n zOrder={zOrder}\n mirror={mirror}\n />\n </ViewPortDetector>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n videoTrack: {\n flex: 1,\n width: '100%',\n },\n});\n\nclass VideoTrackElementInfo implements ElementInfo {\n element: object = {};\n something?: any;\n id?: string;\n _width = 0;\n _height = 0;\n _observing = false;\n visible: boolean = true;\n visibilityChangedAt: number | undefined;\n pictureInPicture = false;\n handleResize?: (() => void) | undefined;\n handleVisibilityChanged?: (() => void) | undefined;\n width = () => this._width;\n height = () => this._height;\n\n observe(): void {\n this._observing = true;\n }\n stopObserving(): void {\n this._observing = false;\n }\n\n onLayout(event: LayoutChangeEvent) {\n let { width, height } = event.nativeEvent.layout;\n this._width = width;\n this._height = height;\n\n if (this._observing) {\n this.handleResize?.();\n }\n }\n onVisibility(isVisible: boolean) {\n if (this.visible !== isVisible) {\n this.visible = isVisible;\n this.visibilityChangedAt = Date.now();\n if (this._observing) {\n this.handleVisibilityChanged?.();\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,58 +4,50 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VideoView = void 0;
|
|
7
|
-
|
|
8
|
-
var React =
|
|
9
|
-
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var React = _react;
|
|
10
9
|
var _reactNative = require("react-native");
|
|
11
|
-
|
|
12
10
|
var _livekitClient = require("livekit-client");
|
|
13
|
-
|
|
14
11
|
var _reactNativeWebrtc = require("@livekit/react-native-webrtc");
|
|
15
|
-
|
|
16
12
|
var _ViewPortDetector = _interopRequireDefault(require("./ViewPortDetector"));
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
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; }
|
|
25
|
-
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
19
|
/**
|
|
27
20
|
* @deprecated use `VideoTrack` and `VideoTrackProps` instead.
|
|
28
21
|
*/
|
|
29
|
-
const VideoView = _ref => {
|
|
30
|
-
var _mediaStream$toURL;
|
|
31
22
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated use `VideoTrack` and `VideoTrackProps` instead.
|
|
25
|
+
*/
|
|
26
|
+
const VideoView = ({
|
|
27
|
+
style = {},
|
|
28
|
+
videoTrack,
|
|
29
|
+
objectFit = 'cover',
|
|
30
|
+
zOrder,
|
|
31
|
+
mirror
|
|
32
|
+
}) => {
|
|
33
|
+
const [elementInfo] = (0, _react.useState)(() => {
|
|
40
34
|
let info = new VideoViewElementInfo();
|
|
41
35
|
info.id = videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.sid;
|
|
42
36
|
info.something = videoTrack;
|
|
43
37
|
return info;
|
|
44
38
|
});
|
|
45
|
-
const layoutOnChange = (0,
|
|
46
|
-
const visibilityOnChange = (0,
|
|
47
|
-
const shouldObserveVisibility = (0,
|
|
39
|
+
const layoutOnChange = (0, _react.useCallback)(event => elementInfo.onLayout(event), [elementInfo]);
|
|
40
|
+
const visibilityOnChange = (0, _react.useCallback)(isVisible => elementInfo.onVisibility(isVisible), [elementInfo]);
|
|
41
|
+
const shouldObserveVisibility = (0, _react.useMemo)(() => {
|
|
48
42
|
return videoTrack instanceof _livekitClient.RemoteVideoTrack && videoTrack.isAdaptiveStream;
|
|
49
43
|
}, [videoTrack]);
|
|
50
|
-
const [mediaStream, setMediaStream] = (0,
|
|
51
|
-
(0,
|
|
44
|
+
const [mediaStream, setMediaStream] = (0, _react.useState)(videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.mediaStream);
|
|
45
|
+
(0, _react.useEffect)(() => {
|
|
52
46
|
setMediaStream(videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.mediaStream);
|
|
53
|
-
|
|
54
47
|
if (videoTrack instanceof _livekitClient.LocalVideoTrack) {
|
|
55
48
|
const onRestarted = track => {
|
|
56
49
|
setMediaStream(track === null || track === void 0 ? void 0 : track.mediaStream);
|
|
57
50
|
};
|
|
58
|
-
|
|
59
51
|
videoTrack.on(_livekitClient.TrackEvent.Restarted, onRestarted);
|
|
60
52
|
return () => {
|
|
61
53
|
videoTrack.off(_livekitClient.TrackEvent.Restarted, onRestarted);
|
|
@@ -64,18 +56,19 @@ const VideoView = _ref => {
|
|
|
64
56
|
return () => {};
|
|
65
57
|
}
|
|
66
58
|
}, [videoTrack]);
|
|
67
|
-
(0,
|
|
59
|
+
(0, _react.useEffect)(() => {
|
|
68
60
|
if (videoTrack instanceof _livekitClient.RemoteVideoTrack && videoTrack.isAdaptiveStream) {
|
|
69
|
-
videoTrack === null || videoTrack === void 0
|
|
61
|
+
videoTrack === null || videoTrack === void 0 || videoTrack.observeElementInfo(elementInfo);
|
|
70
62
|
return () => {
|
|
71
|
-
videoTrack === null || videoTrack === void 0
|
|
63
|
+
videoTrack === null || videoTrack === void 0 || videoTrack.stopObservingElementInfo(elementInfo);
|
|
72
64
|
};
|
|
73
65
|
} else {
|
|
74
66
|
return () => {};
|
|
75
67
|
}
|
|
76
68
|
}, [videoTrack, elementInfo]);
|
|
77
69
|
return /*#__PURE__*/React.createElement(_reactNative.View, {
|
|
78
|
-
style: {
|
|
70
|
+
style: {
|
|
71
|
+
...style,
|
|
79
72
|
...styles.container
|
|
80
73
|
},
|
|
81
74
|
onLayout: layoutOnChange
|
|
@@ -86,15 +79,13 @@ const VideoView = _ref => {
|
|
|
86
79
|
propKey: videoTrack
|
|
87
80
|
}, /*#__PURE__*/React.createElement(_reactNativeWebrtc.RTCView, {
|
|
88
81
|
style: styles.videoView,
|
|
89
|
-
streamURL: (
|
|
82
|
+
streamURL: (mediaStream === null || mediaStream === void 0 ? void 0 : mediaStream.toURL()) ?? '',
|
|
90
83
|
objectFit: objectFit,
|
|
91
84
|
zOrder: zOrder,
|
|
92
85
|
mirror: mirror
|
|
93
86
|
})));
|
|
94
87
|
};
|
|
95
|
-
|
|
96
88
|
exports.VideoView = VideoView;
|
|
97
|
-
|
|
98
89
|
const styles = _reactNative.StyleSheet.create({
|
|
99
90
|
container: {},
|
|
100
91
|
videoView: {
|
|
@@ -102,44 +93,28 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
102
93
|
width: '100%'
|
|
103
94
|
}
|
|
104
95
|
});
|
|
105
|
-
|
|
106
96
|
class VideoViewElementInfo {
|
|
107
97
|
constructor() {
|
|
108
98
|
_defineProperty(this, "element", {});
|
|
109
|
-
|
|
110
99
|
_defineProperty(this, "something", void 0);
|
|
111
|
-
|
|
112
100
|
_defineProperty(this, "id", void 0);
|
|
113
|
-
|
|
114
101
|
_defineProperty(this, "_width", 0);
|
|
115
|
-
|
|
116
102
|
_defineProperty(this, "_height", 0);
|
|
117
|
-
|
|
118
103
|
_defineProperty(this, "_observing", false);
|
|
119
|
-
|
|
120
104
|
_defineProperty(this, "visible", true);
|
|
121
|
-
|
|
122
105
|
_defineProperty(this, "visibilityChangedAt", void 0);
|
|
123
|
-
|
|
124
106
|
_defineProperty(this, "pictureInPicture", false);
|
|
125
|
-
|
|
126
107
|
_defineProperty(this, "handleResize", void 0);
|
|
127
|
-
|
|
128
108
|
_defineProperty(this, "handleVisibilityChanged", void 0);
|
|
129
|
-
|
|
130
109
|
_defineProperty(this, "width", () => this._width);
|
|
131
|
-
|
|
132
110
|
_defineProperty(this, "height", () => this._height);
|
|
133
111
|
}
|
|
134
|
-
|
|
135
112
|
observe() {
|
|
136
113
|
this._observing = true;
|
|
137
114
|
}
|
|
138
|
-
|
|
139
115
|
stopObserving() {
|
|
140
116
|
this._observing = false;
|
|
141
117
|
}
|
|
142
|
-
|
|
143
118
|
onLayout(event) {
|
|
144
119
|
let {
|
|
145
120
|
width,
|
|
@@ -147,26 +122,20 @@ class VideoViewElementInfo {
|
|
|
147
122
|
} = event.nativeEvent.layout;
|
|
148
123
|
this._width = width;
|
|
149
124
|
this._height = height;
|
|
150
|
-
|
|
151
125
|
if (this._observing) {
|
|
152
126
|
var _this$handleResize;
|
|
153
|
-
|
|
154
|
-
(_this$handleResize = this.handleResize) === null || _this$handleResize === void 0 ? void 0 : _this$handleResize.call(this);
|
|
127
|
+
(_this$handleResize = this.handleResize) === null || _this$handleResize === void 0 || _this$handleResize.call(this);
|
|
155
128
|
}
|
|
156
129
|
}
|
|
157
|
-
|
|
158
130
|
onVisibility(isVisible) {
|
|
159
131
|
if (this.visible !== isVisible) {
|
|
160
132
|
this.visible = isVisible;
|
|
161
133
|
this.visibilityChangedAt = Date.now();
|
|
162
|
-
|
|
163
134
|
if (this._observing) {
|
|
164
135
|
var _this$handleVisibilit;
|
|
165
|
-
|
|
166
|
-
(_this$handleVisibilit = this.handleVisibilityChanged) === null || _this$handleVisibilit === void 0 ? void 0 : _this$handleVisibilit.call(this);
|
|
136
|
+
(_this$handleVisibilit = this.handleVisibilityChanged) === null || _this$handleVisibilit === void 0 || _this$handleVisibilit.call(this);
|
|
167
137
|
}
|
|
168
138
|
}
|
|
169
139
|
}
|
|
170
|
-
|
|
171
140
|
}
|
|
172
141
|
//# sourceMappingURL=VideoView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VideoView.tsx"],"names":["VideoView","style","videoTrack","objectFit","zOrder","mirror","elementInfo","info","VideoViewElementInfo","id","sid","something","layoutOnChange","event","onLayout","visibilityOnChange","isVisible","onVisibility","shouldObserveVisibility","RemoteVideoTrack","isAdaptiveStream","mediaStream","setMediaStream","LocalVideoTrack","onRestarted","track","on","TrackEvent","Restarted","off","observeElementInfo","stopObservingElementInfo","styles","container","videoView","toURL","StyleSheet","create","flex","width","_width","_height","observe","_observing","stopObserving","height","nativeEvent","layout","handleResize","visible","visibilityChangedAt","Date","now","handleVisibilityChanged"],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport { LayoutChangeEvent, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n ElementInfo,\n LocalVideoTrack,\n Track,\n TrackEvent,\n VideoTrack,\n} from 'livekit-client';\nimport { RTCView } from '@livekit/react-native-webrtc';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RemoteVideoTrack } from 'livekit-client';\nimport ViewPortDetector from './ViewPortDetector';\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport type Props = {\n videoTrack?: VideoTrack | undefined;\n style?: ViewStyle;\n objectFit?: 'cover' | 'contain' | undefined;\n mirror?: boolean;\n zOrder?: number;\n};\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport const VideoView = ({\n style = {},\n videoTrack,\n objectFit = 'cover',\n zOrder,\n mirror,\n}: Props) => {\n const [elementInfo] = useState(() => {\n let info = new VideoViewElementInfo();\n info.id = videoTrack?.sid;\n info.something = videoTrack;\n return info;\n });\n\n const layoutOnChange = useCallback(\n (event: LayoutChangeEvent) => elementInfo.onLayout(event),\n [elementInfo]\n );\n const visibilityOnChange = useCallback(\n (isVisible: boolean) => elementInfo.onVisibility(isVisible),\n [elementInfo]\n );\n const shouldObserveVisibility = useMemo(() => {\n return (\n videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream\n );\n }, [videoTrack]);\n\n const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);\n useEffect(() => {\n setMediaStream(videoTrack?.mediaStream);\n if (videoTrack instanceof LocalVideoTrack) {\n const onRestarted = (track: Track | null) => {\n setMediaStream(track?.mediaStream);\n };\n videoTrack.on(TrackEvent.Restarted, onRestarted);\n\n return () => {\n videoTrack.off(TrackEvent.Restarted, onRestarted);\n };\n } else {\n return () => {};\n }\n }, [videoTrack]);\n\n useEffect(() => {\n if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {\n videoTrack?.observeElementInfo(elementInfo);\n return () => {\n videoTrack?.stopObservingElementInfo(elementInfo);\n };\n } else {\n return () => {};\n }\n }, [videoTrack, elementInfo]);\n\n return (\n <View style={{ ...style, ...styles.container }} onLayout={layoutOnChange}>\n <ViewPortDetector\n onChange={visibilityOnChange}\n style={styles.videoView}\n disabled={!shouldObserveVisibility}\n propKey={videoTrack}\n >\n <RTCView\n style={styles.videoView}\n streamURL={mediaStream?.toURL() ?? ''}\n objectFit={objectFit}\n zOrder={zOrder}\n mirror={mirror}\n />\n </ViewPortDetector>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n videoView: {\n flex: 1,\n width: '100%',\n },\n});\n\nclass VideoViewElementInfo implements ElementInfo {\n element: object = {};\n something?: any;\n id?: string;\n _width = 0;\n _height = 0;\n _observing = false;\n visible: boolean = true;\n visibilityChangedAt: number | undefined;\n pictureInPicture = false;\n handleResize?: (() => void) | undefined;\n handleVisibilityChanged?: (() => void) | undefined;\n width = () => this._width;\n height = () => this._height;\n\n observe(): void {\n this._observing = true;\n }\n stopObserving(): void {\n this._observing = false;\n }\n\n onLayout(event: LayoutChangeEvent) {\n let { width, height } = event.nativeEvent.layout;\n this._width = width;\n this._height = height;\n\n if (this._observing) {\n this.handleResize?.();\n }\n }\n onVisibility(isVisible: boolean) {\n if (this.visible !== isVisible) {\n this.visible = isVisible;\n this.visibilityChangedAt = Date.now();\n if (this._observing) {\n this.handleVisibilityChanged?.();\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNative","_livekitClient","_reactNativeWebrtc","_ViewPortDetector","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","VideoView","style","videoTrack","objectFit","zOrder","mirror","elementInfo","useState","info","VideoViewElementInfo","id","sid","something","layoutOnChange","useCallback","event","onLayout","visibilityOnChange","isVisible","onVisibility","shouldObserveVisibility","useMemo","RemoteVideoTrack","isAdaptiveStream","mediaStream","setMediaStream","useEffect","LocalVideoTrack","onRestarted","track","on","TrackEvent","Restarted","off","observeElementInfo","stopObservingElementInfo","createElement","View","styles","container","onChange","videoView","disabled","propKey","RTCView","streamURL","toURL","exports","StyleSheet","create","flex","width","constructor","_width","_height","observe","_observing","stopObserving","height","nativeEvent","layout","_this$handleResize","handleResize","visible","visibilityChangedAt","Date","now","_this$handleVisibilit","handleVisibilityChanged"],"sources":["VideoView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n type LayoutChangeEvent,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport {\n type ElementInfo,\n LocalVideoTrack,\n Track,\n TrackEvent,\n type VideoTrack,\n} from 'livekit-client';\nimport { RTCView } from '@livekit/react-native-webrtc';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RemoteVideoTrack } from 'livekit-client';\nimport ViewPortDetector from './ViewPortDetector';\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport type Props = {\n videoTrack?: VideoTrack | undefined;\n style?: ViewStyle;\n objectFit?: 'cover' | 'contain' | undefined;\n mirror?: boolean;\n zOrder?: number;\n};\n\n/**\n * @deprecated use `VideoTrack` and `VideoTrackProps` instead.\n */\nexport const VideoView = ({\n style = {},\n videoTrack,\n objectFit = 'cover',\n zOrder,\n mirror,\n}: Props) => {\n const [elementInfo] = useState(() => {\n let info = new VideoViewElementInfo();\n info.id = videoTrack?.sid;\n info.something = videoTrack;\n return info;\n });\n\n const layoutOnChange = useCallback(\n (event: LayoutChangeEvent) => elementInfo.onLayout(event),\n [elementInfo]\n );\n const visibilityOnChange = useCallback(\n (isVisible: boolean) => elementInfo.onVisibility(isVisible),\n [elementInfo]\n );\n const shouldObserveVisibility = useMemo(() => {\n return (\n videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream\n );\n }, [videoTrack]);\n\n const [mediaStream, setMediaStream] = useState(videoTrack?.mediaStream);\n useEffect(() => {\n setMediaStream(videoTrack?.mediaStream);\n if (videoTrack instanceof LocalVideoTrack) {\n const onRestarted = (track: Track | null) => {\n setMediaStream(track?.mediaStream);\n };\n videoTrack.on(TrackEvent.Restarted, onRestarted);\n\n return () => {\n videoTrack.off(TrackEvent.Restarted, onRestarted);\n };\n } else {\n return () => {};\n }\n }, [videoTrack]);\n\n useEffect(() => {\n if (videoTrack instanceof RemoteVideoTrack && videoTrack.isAdaptiveStream) {\n videoTrack?.observeElementInfo(elementInfo);\n return () => {\n videoTrack?.stopObservingElementInfo(elementInfo);\n };\n } else {\n return () => {};\n }\n }, [videoTrack, elementInfo]);\n\n return (\n <View style={{ ...style, ...styles.container }} onLayout={layoutOnChange}>\n <ViewPortDetector\n onChange={visibilityOnChange}\n style={styles.videoView}\n disabled={!shouldObserveVisibility}\n propKey={videoTrack}\n >\n <RTCView\n style={styles.videoView}\n streamURL={mediaStream?.toURL() ?? ''}\n objectFit={objectFit}\n zOrder={zOrder}\n mirror={mirror}\n />\n </ViewPortDetector>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n videoView: {\n flex: 1,\n width: '100%',\n },\n});\n\nclass VideoViewElementInfo implements ElementInfo {\n element: object = {};\n something?: any;\n id?: string;\n _width = 0;\n _height = 0;\n _observing = false;\n visible: boolean = true;\n visibilityChangedAt: number | undefined;\n pictureInPicture = false;\n handleResize?: (() => void) | undefined;\n handleVisibilityChanged?: (() => void) | undefined;\n width = () => this._width;\n height = () => this._height;\n\n observe(): void {\n this._observing = true;\n }\n stopObserving(): void {\n this._observing = false;\n }\n\n onLayout(event: LayoutChangeEvent) {\n let { width, height } = event.nativeEvent.layout;\n this._width = width;\n this._height = height;\n\n if (this._observing) {\n this.handleResize?.();\n }\n }\n onVisibility(isVisible: boolean) {\n if (this.visible !== isVisible) {\n this.visible = isVisible;\n this.visibilityChangedAt = Date.now();\n if (this._observing) {\n this.handleVisibilityChanged?.();\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|