@stream-io/video-react-native-sdk 1.20.1-alpha.2 → 1.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +2635 -0
  2. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +37 -10
  3. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  4. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +8 -0
  5. package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  6. package/dist/commonjs/hooks/useTrackDimensions.js +20 -7
  7. package/dist/commonjs/hooks/useTrackDimensions.js.map +1 -1
  8. package/dist/commonjs/version.js +1 -1
  9. package/dist/commonjs/version.js.map +1 -1
  10. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +39 -12
  11. package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  12. package/dist/module/components/Call/CallContent/RTCViewPipNative.js +7 -0
  13. package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
  14. package/dist/module/hooks/useTrackDimensions.js +20 -7
  15. package/dist/module/hooks/useTrackDimensions.js.map +1 -1
  16. package/dist/module/version.js +1 -1
  17. package/dist/module/version.js.map +1 -1
  18. package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
  19. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +1 -0
  20. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
  21. package/dist/typescript/hooks/useTrackDimensions.d.ts.map +1 -1
  22. package/dist/typescript/version.d.ts +1 -1
  23. package/dist/typescript/version.d.ts.map +1 -1
  24. package/ios/PictureInPicture/StreamPictureInPictureController.swift +4 -0
  25. package/ios/RTCViewPip.swift +17 -3
  26. package/ios/RTCViewPipManager.mm +1 -0
  27. package/ios/RTCViewPipManager.swift +39 -6
  28. package/ios/StreamVideoReactNative-Bridging-Header.h +1 -0
  29. package/package.json +8 -8
  30. package/src/components/Call/CallContent/RTCViewPipIOS.tsx +56 -12
  31. package/src/components/Call/CallContent/RTCViewPipNative.tsx +17 -0
  32. package/src/hooks/useTrackDimensions.ts +16 -5
  33. package/src/version.ts +1 -1
  34. package/ios/StreamVideoReactNative.xcodeproj/project.xcworkspace/xcuserdata/santhoshvaiyapuri.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  35. package/ios/StreamVideoReactNative.xcodeproj/xcuserdata/santhoshvaiyapuri.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
@@ -11,6 +11,7 @@ var _reactNative = require("react-native");
11
11
  var _RTCViewPipNative = require("./RTCViewPipNative");
12
12
  var _hooks = require("../../../utils/hooks");
13
13
  var _shouldDisableIOSLocalVideoOnBackground = require("../../../utils/internal/shouldDisableIOSLocalVideoOnBackground");
14
+ var _useTrackDimensions = require("../../../hooks/useTrackDimensions");
14
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
16
  const RTCViewPipIOS = exports.RTCViewPipIOS = /*#__PURE__*/_react.default.memo(props => {
16
17
  const {
@@ -66,22 +67,48 @@ const RTCViewPipIOS = exports.RTCViewPipIOS = /*#__PURE__*/_react.default.memo(p
66
67
  subscription?.unsubscribe();
67
68
  };
68
69
  }, [call]);
70
+ const onDimensionsUpdated = (0, _react.useCallback)((width, height) => {
71
+ const node = (0, _reactNative.findNodeHandle)(nativeRef.current);
72
+ if (node !== null && width > 0 && height > 0) {
73
+ (0, _RTCViewPipNative.onNativeDimensionsUpdated)(node, width, height);
74
+ }
75
+ }, []);
76
+ const {
77
+ videoStream,
78
+ screenShareStream
79
+ } = participantInSpotlight;
80
+ const isScreenSharing = (0, _videoClient.hasScreenShare)(participantInSpotlight);
81
+ const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
69
82
  const streamURL = (0, _react.useMemo)(() => {
70
- if (!participantInSpotlight) {
83
+ if (!videoStreamToRender) {
71
84
  return undefined;
72
85
  }
73
- const {
74
- videoStream,
75
- screenShareStream
76
- } = participantInSpotlight;
77
- const isScreenSharing = (0, _videoClient.hasScreenShare)(participantInSpotlight);
78
- const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
79
86
  return videoStreamToRender?.toURL();
80
- }, [participantInSpotlight]);
81
- return /*#__PURE__*/_react.default.createElement(_RTCViewPipNative.RTCViewPipNative, {
87
+ }, [videoStreamToRender]);
88
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_RTCViewPipNative.RTCViewPipNative, {
82
89
  streamURL: streamURL,
83
90
  ref: nativeRef
84
- });
91
+ }), /*#__PURE__*/_react.default.createElement(DimensionsUpdatedRenderless, {
92
+ participant: participantInSpotlight,
93
+ trackType: isScreenSharing ? 'screenShareTrack' : 'videoTrack',
94
+ onDimensionsUpdated: onDimensionsUpdated,
95
+ key: streamURL
96
+ }));
97
+ });
98
+ const DimensionsUpdatedRenderless = /*#__PURE__*/_react.default.memo(({
99
+ participant,
100
+ trackType,
101
+ onDimensionsUpdated
102
+ }) => {
103
+ const {
104
+ width,
105
+ height
106
+ } = (0, _useTrackDimensions.useTrackDimensions)(participant, trackType);
107
+ (0, _react.useEffect)(() => {
108
+ onDimensionsUpdated(width, height);
109
+ }, [width, height, onDimensionsUpdated]);
110
+ return null;
85
111
  });
112
+ DimensionsUpdatedRenderless.displayName = 'DimensionsUpdatedRenderless';
86
113
  RTCViewPipIOS.displayName = 'RTCViewPipIOS';
87
114
  //# sourceMappingURL=RTCViewPipIOS.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_interopRequireWildcard","_reactNative","_RTCViewPipNative","_hooks","_shouldDisableIOSLocalVideoOnBackground","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RTCViewPipIOS","exports","React","memo","props","includeLocalParticipantVideo","useCall","useParticipants","useCallStateHooks","_allParticipants","sortBy","speakerLayoutSortPreset","allParticipants","useDebouncedValue","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","useEffect","shouldDisableIOSLocalVideoOnBackgroundRef","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","findNodeHandle","onNativeCallClosed","unsubFunc","on","getLogger","subscription","state","callingState$","subscribe","CallingState","LEFT","unsubscribe","streamURL","useMemo","undefined","videoStream","screenShareStream","isScreenSharing","hasScreenShare","videoStreamToRender","toURL","createElement","RTCViewPipNative","ref","displayName"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_interopRequireWildcard","_reactNative","_RTCViewPipNative","_hooks","_shouldDisableIOSLocalVideoOnBackground","_useTrackDimensions","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RTCViewPipIOS","exports","React","memo","props","includeLocalParticipantVideo","useCall","useParticipants","useCallStateHooks","_allParticipants","sortBy","speakerLayoutSortPreset","allParticipants","useDebouncedValue","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","useEffect","shouldDisableIOSLocalVideoOnBackgroundRef","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","findNodeHandle","onNativeCallClosed","unsubFunc","on","getLogger","subscription","state","callingState$","subscribe","CallingState","LEFT","unsubscribe","onDimensionsUpdated","useCallback","width","height","onNativeDimensionsUpdated","videoStream","screenShareStream","isScreenSharing","hasScreenShare","videoStreamToRender","streamURL","useMemo","undefined","toURL","createElement","Fragment","RTCViewPipNative","ref","DimensionsUpdatedRenderless","trackType","key","useTrackDimensions","displayName"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.RTCViewPipNative = void 0;
7
7
  exports.onNativeCallClosed = onNativeCallClosed;
8
+ exports.onNativeDimensionsUpdated = onNativeDimensionsUpdated;
8
9
  var _videoClient = require("@stream-io/video-client");
9
10
  var _react = _interopRequireDefault(require("react"));
10
11
  var _reactNative = require("react-native");
@@ -15,6 +16,13 @@ function onNativeCallClosed(reactTag) {
15
16
  (0, _videoClient.getLogger)(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
16
17
  _reactNative.UIManager.dispatchViewManagerCommand(reactTag, _reactNative.UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
17
18
  }
19
+ function onNativeDimensionsUpdated(reactTag, width, height) {
20
+ (0, _videoClient.getLogger)(['RTCViewPipNative'])('debug', 'onNativeDimensionsUpdated', {
21
+ width,
22
+ height
23
+ });
24
+ _reactNative.UIManager.dispatchViewManagerCommand(reactTag, _reactNative.UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.setPreferredContentSize, [width, height]);
25
+ }
18
26
 
19
27
  /** Wrapper for the native view
20
28
  * meant to stay private and not exposed */
@@ -1 +1 @@
1
- {"version":3,"names":["_videoClient","require","_react","_interopRequireDefault","_reactNative","e","__esModule","default","COMPONENT_NAME","NativeComponent","requireNativeComponent","onNativeCallClosed","reactTag","getLogger","UIManager","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","RTCViewPipNative","exports","React","memo","forwardRef","props","ref","Platform","OS","createElement","style","StyleSheet","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAMsB,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtB,MAAMG,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzD,IAAAC,mCAAsB,EAACF,cAAc,CAAC;AAEjC,SAASG,kBAAkBA,CAACC,QAAgB,EAAE;EACnD,IAAAC,sBAAS,EAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DC,sBAAS,CAACC,0BAA0B,CAClCH,QAAQ,EACRE,sBAAS,CAACE,oBAAoB,CAACR,cAAc,CAAC,CAACS,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;;AAEA;AACA;AACO,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,cAAK,CAACC,IAAI,cACxCD,cAAK,CAACE,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACEzB,MAAA,CAAAK,OAAA,CAAAqB,aAAA,CAACnB,eAAe;IACdoB,KAAK,EAAEC,uBAAU,CAACC,YAAa;IAC/BC,aAAa,EAAE;IACf;IAAA;IACAC,SAAS,EAAET,KAAK,CAACS;IACjB;IAAA;IACAR,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_videoClient","require","_react","_interopRequireDefault","_reactNative","e","__esModule","default","COMPONENT_NAME","NativeComponent","requireNativeComponent","onNativeCallClosed","reactTag","getLogger","UIManager","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","onNativeDimensionsUpdated","width","height","setPreferredContentSize","RTCViewPipNative","exports","React","memo","forwardRef","props","ref","Platform","OS","createElement","style","StyleSheet","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAMsB,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtB,MAAMG,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzD,IAAAC,mCAAsB,EAACF,cAAc,CAAC;AAEjC,SAASG,kBAAkBA,CAACC,QAAgB,EAAE;EACnD,IAAAC,sBAAS,EAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DC,sBAAS,CAACC,0BAA0B,CAClCH,QAAQ,EACRE,sBAAS,CAACE,oBAAoB,CAACR,cAAc,CAAC,CAACS,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;AAEO,SAASC,yBAAyBA,CACvCP,QAAgB,EAChBQ,KAAa,EACbC,MAAc,EACd;EACA,IAAAR,sBAAS,EAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,2BAA2B,EAAE;IACpEO,KAAK;IACLC;EACF,CAAC,CAAC;EACFP,sBAAS,CAACC,0BAA0B,CAClCH,QAAQ,EACRE,sBAAS,CAACE,oBAAoB,CAACR,cAAc,CAAC,CAACS,QAAQ,CACpDK,uBAAuB,EAC1B,CAACF,KAAK,EAAEC,MAAM,CAChB,CAAC;AACH;;AAEA;AACA;AACO,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,cAAK,CAACC,IAAI,cACxCD,cAAK,CAACE,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACE7B,MAAA,CAAAK,OAAA,CAAAyB,aAAA,CAACvB,eAAe;IACdwB,KAAK,EAAEC,uBAAU,CAACC,YAAa;IAC/BC,aAAa,EAAE;IACf;IAAA;IACAC,SAAS,EAAET,KAAK,CAACS;IACjB;IAAA;IACAR,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
@@ -33,21 +33,34 @@ function useTrackDimensions(participant, trackType) {
33
33
 
34
34
  // Set up videoTrackDimensionChanged event listener for more direct dimension updates
35
35
  (0, _react.useEffect)(() => {
36
- if (!trackId || !_reactNative.NativeModules.WebRTCModule) return;
36
+ if (!trackId || !track) return;
37
37
  const handleVideoTrackDimensionChanged = eventData => {
38
38
  // Only handle events for this specific participant
39
39
  if (eventData.trackId === trackId) {
40
40
  setTrackDimensions(prev => {
41
- if (prev.width !== eventData.width || prev.height !== eventData.height) {
42
- return {
43
- width: eventData.width,
44
- height: eventData.height
45
- };
41
+ if (prev.width === eventData.width && prev.height === eventData.height) {
42
+ return prev;
46
43
  }
47
- return prev;
44
+ return {
45
+ width: eventData.width,
46
+ height: eventData.height
47
+ };
48
48
  });
49
49
  }
50
50
  };
51
+ const {
52
+ width,
53
+ height
54
+ } = track.getSettings();
55
+ setTrackDimensions(prev => {
56
+ if (prev.width === width && prev.height === height) {
57
+ return prev;
58
+ }
59
+ return {
60
+ width: width ?? 0,
61
+ height: height ?? 0
62
+ };
63
+ });
51
64
  const subscription = webRTCEventEmitter.addListener('videoTrackDimensionChanged', handleVideoTrackDimensionChanged);
52
65
  return () => {
53
66
  subscription.remove();
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","webRTCEventEmitter","NativeEventEmitter","NativeModules","WebRTCModule","useTrackDimensions","participant","trackType","videoStream","screenShareStream","stream","track","getVideoTracks","trackId","id","trackDimensions","setTrackDimensions","useState","settings","getSettings","width","height","useEffect","handleVideoTrackDimensionChanged","eventData","prev","subscription","addListener","remove"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,MAAME,kBAAkB,GAAG,IAAIC,+BAAkB,CAACC,0BAAa,CAACC,YAAY,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,WAAmC,EACnCC,SAAyB,EACzB;EACA,MAAM;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGH,WAAW;EACtD,MAAMI,MAAM,GACVH,SAAS,KAAK,kBAAkB,GAAGE,iBAAiB,GAAGD,WAAW;EACpE,MAAM,CAACG,KAAK,CAAC,GAAGD,MAAM,EAAEE,cAAc,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,OAAO,GAAGF,KAAK,EAAEG,EAAE;EAEzB,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IAC3D,MAAMC,QAAQ,GAAGP,KAAK,EAAEQ,WAAW,CAAC,CAAC;IACrC,MAAMC,KAAK,GAAGF,QAAQ,EAAEE,KAAK,IAAI,CAAC;IAClC,MAAMC,MAAM,GAAGH,QAAQ,EAAEG,MAAM,IAAI,CAAC;IACpC,OAAO;MACLD,KAAK;MACLC;IACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACT,OAAO,IAAI,CAACV,0BAAa,CAACC,YAAY,EAAE;IAE7C,MAAMmB,gCAAgC,GAAIC,SAKzC,IAAK;MACJ;MACA,IAAIA,SAAS,CAACX,OAAO,KAAKA,OAAO,EAAE;QACjCG,kBAAkB,CAAES,IAAI,IAAK;UAC3B,IACEA,IAAI,CAACL,KAAK,KAAKI,SAAS,CAACJ,KAAK,IAC9BK,IAAI,CAACJ,MAAM,KAAKG,SAAS,CAACH,MAAM,EAChC;YACA,OAAO;cAAED,KAAK,EAAEI,SAAS,CAACJ,KAAK;cAAEC,MAAM,EAAEG,SAAS,CAACH;YAAO,CAAC;UAC7D;UACA,OAAOI,IAAI;QACb,CAAC,CAAC;MACJ;IACF,CAAC;IAED,MAAMC,YAAY,GAAGzB,kBAAkB,CAAC0B,WAAW,CACjD,4BAA4B,EAC5BJ,gCACF,CAAC;IAED,OAAO,MAAM;MACXG,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACf,OAAO,EAAEF,KAAK,CAAC,CAAC;EAEpB,OAAOI,eAAe;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","webRTCEventEmitter","NativeEventEmitter","NativeModules","WebRTCModule","useTrackDimensions","participant","trackType","videoStream","screenShareStream","stream","track","getVideoTracks","trackId","id","trackDimensions","setTrackDimensions","useState","settings","getSettings","width","height","useEffect","handleVideoTrackDimensionChanged","eventData","prev","subscription","addListener","remove"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,MAAME,kBAAkB,GAAG,IAAIC,+BAAkB,CAACC,0BAAa,CAACC,YAAY,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,WAAmC,EACnCC,SAAyB,EACzB;EACA,MAAM;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGH,WAAW;EACtD,MAAMI,MAAM,GACVH,SAAS,KAAK,kBAAkB,GAAGE,iBAAiB,GAAGD,WAAW;EACpE,MAAM,CAACG,KAAK,CAAC,GAAGD,MAAM,EAAEE,cAAc,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,OAAO,GAAGF,KAAK,EAAEG,EAAE;EAEzB,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IAC3D,MAAMC,QAAQ,GAAGP,KAAK,EAAEQ,WAAW,CAAC,CAAC;IACrC,MAAMC,KAAK,GAAGF,QAAQ,EAAEE,KAAK,IAAI,CAAC;IAClC,MAAMC,MAAM,GAAGH,QAAQ,EAAEG,MAAM,IAAI,CAAC;IACpC,OAAO;MACLD,KAAK;MACLC;IACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACT,OAAO,IAAI,CAACF,KAAK,EAAE;IAExB,MAAMY,gCAAgC,GAAIC,SAKzC,IAAK;MACJ;MACA,IAAIA,SAAS,CAACX,OAAO,KAAKA,OAAO,EAAE;QACjCG,kBAAkB,CAAES,IAAI,IAAK;UAC3B,IACEA,IAAI,CAACL,KAAK,KAAKI,SAAS,CAACJ,KAAK,IAC9BK,IAAI,CAACJ,MAAM,KAAKG,SAAS,CAACH,MAAM,EAChC;YACA,OAAOI,IAAI;UACb;UACA,OAAO;YAAEL,KAAK,EAAEI,SAAS,CAACJ,KAAK;YAAEC,MAAM,EAAEG,SAAS,CAACH;UAAO,CAAC;QAC7D,CAAC,CAAC;MACJ;IACF,CAAC;IAED,MAAM;MAAED,KAAK;MAAEC;IAAO,CAAC,GAAGV,KAAK,CAACQ,WAAW,CAAC,CAAC;IAC7CH,kBAAkB,CAAES,IAAI,IAAK;MAC3B,IAAIA,IAAI,CAACL,KAAK,KAAKA,KAAK,IAAIK,IAAI,CAACJ,MAAM,KAAKA,MAAM,EAAE;QAClD,OAAOI,IAAI;MACb;MACA,OAAO;QACLL,KAAK,EAAEA,KAAK,IAAI,CAAC;QACjBC,MAAM,EAAEA,MAAM,IAAI;MACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMK,YAAY,GAAGzB,kBAAkB,CAAC0B,WAAW,CACjD,4BAA4B,EAC5BJ,gCACF,CAAC;IAED,OAAO,MAAM;MACXG,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACf,OAAO,EAAEF,KAAK,CAAC,CAAC;EAEpB,OAAOI,eAAe;AACxB","ignoreList":[]}
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = exports.version = '1.20.1-alpha.1';
7
+ const version = exports.version = '1.20.2';
8
8
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["version","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["version","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG,QAAQ","ignoreList":[]}
@@ -1,10 +1,11 @@
1
1
  import { CallingState, getLogger, hasScreenShare, speakerLayoutSortPreset } from '@stream-io/video-client';
2
2
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
- import React, { useEffect, useMemo } from 'react';
3
+ import React, { useEffect, useMemo, useCallback } from 'react';
4
4
  import { findNodeHandle } from 'react-native';
5
- import { onNativeCallClosed, RTCViewPipNative } from './RTCViewPipNative';
5
+ import { onNativeCallClosed, onNativeDimensionsUpdated, RTCViewPipNative } from './RTCViewPipNative';
6
6
  import { useDebouncedValue } from '../../../utils/hooks';
7
7
  import { shouldDisableIOSLocalVideoOnBackgroundRef } from '../../../utils/internal/shouldDisableIOSLocalVideoOnBackground';
8
+ import { useTrackDimensions } from '../../../hooks/useTrackDimensions';
8
9
  export const RTCViewPipIOS = /*#__PURE__*/React.memo(props => {
9
10
  const {
10
11
  includeLocalParticipantVideo
@@ -59,22 +60,48 @@ export const RTCViewPipIOS = /*#__PURE__*/React.memo(props => {
59
60
  subscription?.unsubscribe();
60
61
  };
61
62
  }, [call]);
63
+ const onDimensionsUpdated = useCallback((width, height) => {
64
+ const node = findNodeHandle(nativeRef.current);
65
+ if (node !== null && width > 0 && height > 0) {
66
+ onNativeDimensionsUpdated(node, width, height);
67
+ }
68
+ }, []);
69
+ const {
70
+ videoStream,
71
+ screenShareStream
72
+ } = participantInSpotlight;
73
+ const isScreenSharing = hasScreenShare(participantInSpotlight);
74
+ const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
62
75
  const streamURL = useMemo(() => {
63
- if (!participantInSpotlight) {
76
+ if (!videoStreamToRender) {
64
77
  return undefined;
65
78
  }
66
- const {
67
- videoStream,
68
- screenShareStream
69
- } = participantInSpotlight;
70
- const isScreenSharing = hasScreenShare(participantInSpotlight);
71
- const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
72
79
  return videoStreamToRender?.toURL();
73
- }, [participantInSpotlight]);
74
- return /*#__PURE__*/React.createElement(RTCViewPipNative, {
80
+ }, [videoStreamToRender]);
81
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RTCViewPipNative, {
75
82
  streamURL: streamURL,
76
83
  ref: nativeRef
77
- });
84
+ }), /*#__PURE__*/React.createElement(DimensionsUpdatedRenderless, {
85
+ participant: participantInSpotlight,
86
+ trackType: isScreenSharing ? 'screenShareTrack' : 'videoTrack',
87
+ onDimensionsUpdated: onDimensionsUpdated,
88
+ key: streamURL
89
+ }));
90
+ });
91
+ const DimensionsUpdatedRenderless = /*#__PURE__*/React.memo(({
92
+ participant,
93
+ trackType,
94
+ onDimensionsUpdated
95
+ }) => {
96
+ const {
97
+ width,
98
+ height
99
+ } = useTrackDimensions(participant, trackType);
100
+ useEffect(() => {
101
+ onDimensionsUpdated(width, height);
102
+ }, [width, height, onDimensionsUpdated]);
103
+ return null;
78
104
  });
105
+ DimensionsUpdatedRenderless.displayName = 'DimensionsUpdatedRenderless';
79
106
  RTCViewPipIOS.displayName = 'RTCViewPipIOS';
80
107
  //# sourceMappingURL=RTCViewPipIOS.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CallingState","getLogger","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","findNodeHandle","onNativeCallClosed","RTCViewPipNative","useDebouncedValue","shouldDisableIOSLocalVideoOnBackgroundRef","RTCViewPipIOS","memo","props","includeLocalParticipantVideo","call","useParticipants","_allParticipants","sortBy","allParticipants","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","unsubFunc","on","subscription","state","callingState$","subscribe","LEFT","unsubscribe","streamURL","undefined","videoStream","screenShareStream","isScreenSharing","videoStreamToRender","toURL","createElement","ref","displayName"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CallingState","getLogger","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","useCallback","findNodeHandle","onNativeCallClosed","onNativeDimensionsUpdated","RTCViewPipNative","useDebouncedValue","shouldDisableIOSLocalVideoOnBackgroundRef","useTrackDimensions","RTCViewPipIOS","memo","props","includeLocalParticipantVideo","call","useParticipants","_allParticipants","sortBy","allParticipants","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","unsubFunc","on","subscription","state","callingState$","subscribe","LEFT","unsubscribe","onDimensionsUpdated","width","height","videoStream","screenShareStream","isScreenSharing","videoStreamToRender","streamURL","undefined","toURL","createElement","Fragment","ref","DimensionsUpdatedRenderless","trackType","key","displayName"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,13 @@ export function onNativeCallClosed(reactTag) {
7
7
  getLogger(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
8
8
  UIManager.dispatchViewManagerCommand(reactTag, UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
9
9
  }
10
+ export function onNativeDimensionsUpdated(reactTag, width, height) {
11
+ getLogger(['RTCViewPipNative'])('debug', 'onNativeDimensionsUpdated', {
12
+ width,
13
+ height
14
+ });
15
+ UIManager.dispatchViewManagerCommand(reactTag, UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.setPreferredContentSize, [width, height]);
16
+ }
10
17
 
11
18
  /** Wrapper for the native view
12
19
  * meant to stay private and not exposed */
@@ -1 +1 @@
1
- {"version":3,"names":["getLogger","React","Platform","requireNativeComponent","StyleSheet","UIManager","COMPONENT_NAME","NativeComponent","onNativeCallClosed","reactTag","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","RTCViewPipNative","memo","forwardRef","props","ref","OS","createElement","style","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,yBAAyB;AACnD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAEEC,QAAQ,EACRC,sBAAsB,EACtBC,UAAU,EACVC,SAAS,QACJ,cAAc;AAErB,MAAMC,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzDJ,sBAAsB,CAACG,cAAc,CAAC;AAExC,OAAO,SAASE,kBAAkBA,CAACC,QAAgB,EAAE;EACnDT,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DK,SAAS,CAACK,0BAA0B,CAClCD,QAAQ,EACRJ,SAAS,CAACM,oBAAoB,CAACL,cAAc,CAAC,CAACM,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;;AAEA;AACA;AACA,OAAO,MAAMC,gBAAgB,gBAAGb,KAAK,CAACc,IAAI,cACxCd,KAAK,CAACe,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIhB,QAAQ,CAACiB,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACElB,KAAA,CAAAmB,aAAA,CAACb,eAAe;IACdc,KAAK,EAAEjB,UAAU,CAACkB,YAAa;IAC/BC,aAAa,EAAE;IACf;IAAA;IACAC,SAAS,EAAEP,KAAK,CAACO;IACjB;IAAA;IACAN,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getLogger","React","Platform","requireNativeComponent","StyleSheet","UIManager","COMPONENT_NAME","NativeComponent","onNativeCallClosed","reactTag","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","onNativeDimensionsUpdated","width","height","setPreferredContentSize","RTCViewPipNative","memo","forwardRef","props","ref","OS","createElement","style","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,yBAAyB;AACnD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAEEC,QAAQ,EACRC,sBAAsB,EACtBC,UAAU,EACVC,SAAS,QACJ,cAAc;AAErB,MAAMC,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzDJ,sBAAsB,CAACG,cAAc,CAAC;AAExC,OAAO,SAASE,kBAAkBA,CAACC,QAAgB,EAAE;EACnDT,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DK,SAAS,CAACK,0BAA0B,CAClCD,QAAQ,EACRJ,SAAS,CAACM,oBAAoB,CAACL,cAAc,CAAC,CAACM,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;AAEA,OAAO,SAASC,yBAAyBA,CACvCL,QAAgB,EAChBM,KAAa,EACbC,MAAc,EACd;EACAhB,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,2BAA2B,EAAE;IACpEe,KAAK;IACLC;EACF,CAAC,CAAC;EACFX,SAAS,CAACK,0BAA0B,CAClCD,QAAQ,EACRJ,SAAS,CAACM,oBAAoB,CAACL,cAAc,CAAC,CAACM,QAAQ,CACpDK,uBAAuB,EAC1B,CAACF,KAAK,EAAEC,MAAM,CAChB,CAAC;AACH;;AAEA;AACA;AACA,OAAO,MAAME,gBAAgB,gBAAGjB,KAAK,CAACkB,IAAI,cACxClB,KAAK,CAACmB,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIpB,QAAQ,CAACqB,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACEtB,KAAA,CAAAuB,aAAA,CAACjB,eAAe;IACdkB,KAAK,EAAErB,UAAU,CAACsB,YAAa;IAC/BC,aAAa,EAAE;IACf;IAAA;IACAC,SAAS,EAAEP,KAAK,CAACO;IACjB;IAAA;IACAN,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
@@ -27,21 +27,34 @@ export function useTrackDimensions(participant, trackType) {
27
27
 
28
28
  // Set up videoTrackDimensionChanged event listener for more direct dimension updates
29
29
  useEffect(() => {
30
- if (!trackId || !NativeModules.WebRTCModule) return;
30
+ if (!trackId || !track) return;
31
31
  const handleVideoTrackDimensionChanged = eventData => {
32
32
  // Only handle events for this specific participant
33
33
  if (eventData.trackId === trackId) {
34
34
  setTrackDimensions(prev => {
35
- if (prev.width !== eventData.width || prev.height !== eventData.height) {
36
- return {
37
- width: eventData.width,
38
- height: eventData.height
39
- };
35
+ if (prev.width === eventData.width && prev.height === eventData.height) {
36
+ return prev;
40
37
  }
41
- return prev;
38
+ return {
39
+ width: eventData.width,
40
+ height: eventData.height
41
+ };
42
42
  });
43
43
  }
44
44
  };
45
+ const {
46
+ width,
47
+ height
48
+ } = track.getSettings();
49
+ setTrackDimensions(prev => {
50
+ if (prev.width === width && prev.height === height) {
51
+ return prev;
52
+ }
53
+ return {
54
+ width: width ?? 0,
55
+ height: height ?? 0
56
+ };
57
+ });
45
58
  const subscription = webRTCEventEmitter.addListener('videoTrackDimensionChanged', handleVideoTrackDimensionChanged);
46
59
  return () => {
47
60
  subscription.remove();
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","NativeEventEmitter","NativeModules","webRTCEventEmitter","WebRTCModule","useTrackDimensions","participant","trackType","videoStream","screenShareStream","stream","track","getVideoTracks","trackId","id","trackDimensions","setTrackDimensions","settings","getSettings","width","height","handleVideoTrackDimensionChanged","eventData","prev","subscription","addListener","remove"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":"AAIA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAEhE,MAAMC,kBAAkB,GAAG,IAAIF,kBAAkB,CAACC,aAAa,CAACE,YAAY,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,WAAmC,EACnCC,SAAyB,EACzB;EACA,MAAM;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGH,WAAW;EACtD,MAAMI,MAAM,GACVH,SAAS,KAAK,kBAAkB,GAAGE,iBAAiB,GAAGD,WAAW;EACpE,MAAM,CAACG,KAAK,CAAC,GAAGD,MAAM,EAAEE,cAAc,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,OAAO,GAAGF,KAAK,EAAEG,EAAE;EAEzB,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGhB,QAAQ,CAAC,MAAM;IAC3D,MAAMiB,QAAQ,GAAGN,KAAK,EAAEO,WAAW,CAAC,CAAC;IACrC,MAAMC,KAAK,GAAGF,QAAQ,EAAEE,KAAK,IAAI,CAAC;IAClC,MAAMC,MAAM,GAAGH,QAAQ,EAAEG,MAAM,IAAI,CAAC;IACpC,OAAO;MACLD,KAAK;MACLC;IACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACArB,SAAS,CAAC,MAAM;IACd,IAAI,CAACc,OAAO,IAAI,CAACX,aAAa,CAACE,YAAY,EAAE;IAE7C,MAAMiB,gCAAgC,GAAIC,SAKzC,IAAK;MACJ;MACA,IAAIA,SAAS,CAACT,OAAO,KAAKA,OAAO,EAAE;QACjCG,kBAAkB,CAAEO,IAAI,IAAK;UAC3B,IACEA,IAAI,CAACJ,KAAK,KAAKG,SAAS,CAACH,KAAK,IAC9BI,IAAI,CAACH,MAAM,KAAKE,SAAS,CAACF,MAAM,EAChC;YACA,OAAO;cAAED,KAAK,EAAEG,SAAS,CAACH,KAAK;cAAEC,MAAM,EAAEE,SAAS,CAACF;YAAO,CAAC;UAC7D;UACA,OAAOG,IAAI;QACb,CAAC,CAAC;MACJ;IACF,CAAC;IAED,MAAMC,YAAY,GAAGrB,kBAAkB,CAACsB,WAAW,CACjD,4BAA4B,EAC5BJ,gCACF,CAAC;IAED,OAAO,MAAM;MACXG,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,OAAO,EAAEF,KAAK,CAAC,CAAC;EAEpB,OAAOI,eAAe;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useState","NativeEventEmitter","NativeModules","webRTCEventEmitter","WebRTCModule","useTrackDimensions","participant","trackType","videoStream","screenShareStream","stream","track","getVideoTracks","trackId","id","trackDimensions","setTrackDimensions","settings","getSettings","width","height","handleVideoTrackDimensionChanged","eventData","prev","subscription","addListener","remove"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":"AAIA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAEhE,MAAMC,kBAAkB,GAAG,IAAIF,kBAAkB,CAACC,aAAa,CAACE,YAAY,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,WAAmC,EACnCC,SAAyB,EACzB;EACA,MAAM;IAAEC,WAAW;IAAEC;EAAkB,CAAC,GAAGH,WAAW;EACtD,MAAMI,MAAM,GACVH,SAAS,KAAK,kBAAkB,GAAGE,iBAAiB,GAAGD,WAAW;EACpE,MAAM,CAACG,KAAK,CAAC,GAAGD,MAAM,EAAEE,cAAc,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,OAAO,GAAGF,KAAK,EAAEG,EAAE;EAEzB,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGhB,QAAQ,CAAC,MAAM;IAC3D,MAAMiB,QAAQ,GAAGN,KAAK,EAAEO,WAAW,CAAC,CAAC;IACrC,MAAMC,KAAK,GAAGF,QAAQ,EAAEE,KAAK,IAAI,CAAC;IAClC,MAAMC,MAAM,GAAGH,QAAQ,EAAEG,MAAM,IAAI,CAAC;IACpC,OAAO;MACLD,KAAK;MACLC;IACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACArB,SAAS,CAAC,MAAM;IACd,IAAI,CAACc,OAAO,IAAI,CAACF,KAAK,EAAE;IAExB,MAAMU,gCAAgC,GAAIC,SAKzC,IAAK;MACJ;MACA,IAAIA,SAAS,CAACT,OAAO,KAAKA,OAAO,EAAE;QACjCG,kBAAkB,CAAEO,IAAI,IAAK;UAC3B,IACEA,IAAI,CAACJ,KAAK,KAAKG,SAAS,CAACH,KAAK,IAC9BI,IAAI,CAACH,MAAM,KAAKE,SAAS,CAACF,MAAM,EAChC;YACA,OAAOG,IAAI;UACb;UACA,OAAO;YAAEJ,KAAK,EAAEG,SAAS,CAACH,KAAK;YAAEC,MAAM,EAAEE,SAAS,CAACF;UAAO,CAAC;QAC7D,CAAC,CAAC;MACJ;IACF,CAAC;IAED,MAAM;MAAED,KAAK;MAAEC;IAAO,CAAC,GAAGT,KAAK,CAACO,WAAW,CAAC,CAAC;IAC7CF,kBAAkB,CAAEO,IAAI,IAAK;MAC3B,IAAIA,IAAI,CAACJ,KAAK,KAAKA,KAAK,IAAII,IAAI,CAACH,MAAM,KAAKA,MAAM,EAAE;QAClD,OAAOG,IAAI;MACb;MACA,OAAO;QACLJ,KAAK,EAAEA,KAAK,IAAI,CAAC;QACjBC,MAAM,EAAEA,MAAM,IAAI;MACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAMI,YAAY,GAAGrB,kBAAkB,CAACsB,WAAW,CACjD,4BAA4B,EAC5BJ,gCACF,CAAC;IAED,OAAO,MAAM;MACXG,YAAY,CAACE,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,OAAO,EAAEF,KAAK,CAAC,CAAC;EAEpB,OAAOI,eAAe;AACxB","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export const version = '1.20.1-alpha.1';
1
+ export const version = '1.20.2';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["version"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["version"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,QAAQ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"RTCViewPipIOS.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipIOS.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAMlD,KAAK,KAAK,GAAG;IACX,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,aAAa,oCAAsB,KAAK,uBAiFnD,CAAC"}
1
+ {"version":3,"file":"RTCViewPipIOS.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipIOS.tsx"],"names":[],"mappings":"AAUA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAW/D,KAAK,KAAK,GAAG;IACX,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,aAAa,oCAAsB,KAAK,uBAiGnD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  export declare function onNativeCallClosed(reactTag: number): void;
3
+ export declare function onNativeDimensionsUpdated(reactTag: number, width: number, height: number): void;
3
4
  /** Wrapper for the native view
4
5
  * meant to stay private and not exposed */
5
6
  export declare const RTCViewPipNative: React.NamedExoticComponent<{
@@ -1 +1 @@
1
- {"version":3,"file":"RTCViewPipNative.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipNative.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAkB1B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,QAOlD;AAED;2CAC2C;AAC3C,eAAO,MAAM,gBAAgB;gBAIX,MAAM;wCAgBvB,CAAC"}
1
+ {"version":3,"file":"RTCViewPipNative.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipNative.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAkB1B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,QAOlD;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,QAYf;AAED;2CAC2C;AAC3C,eAAO,MAAM,gBAAgB;gBAIX,MAAM;wCAgBvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTrackDimensions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrackDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAMjC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,sBAAsB,EACnC,SAAS,EAAE,cAAc;;;EAqD1B"}
1
+ {"version":3,"file":"useTrackDimensions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrackDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAMjC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,sBAAsB,EACnC,SAAS,EAAE,cAAc;;;EAgE1B"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.20.1-alpha.1";
1
+ export declare const version = "1.20.2";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,mBAAmB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
@@ -81,6 +81,10 @@ import Foundation
81
81
  super.init()
82
82
  }
83
83
 
84
+ func setPreferredContentSize(_ size: CGSize) {
85
+ contentViewController?.preferredContentSize = size
86
+ }
87
+
84
88
  // MARK: - AVPictureInPictureControllerDelegate
85
89
 
86
90
  func pictureInPictureController(
@@ -6,6 +6,7 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
+ import React
9
10
 
10
11
  @objc(RTCViewPip)
11
12
  class RTCViewPip: UIView {
@@ -49,7 +50,7 @@ class RTCViewPip: UIView {
49
50
  }
50
51
 
51
52
  DispatchQueue.main.async {
52
- NSLog("PiP - Setting video track for streamURL: -\(streamURLString)")
53
+ NSLog("PiP - Setting video track for streamURL: -\(streamURLString) trackId: \(videoTrack.trackId)")
53
54
  self.pictureInPictureController?.track = videoTrack
54
55
  }
55
56
  }
@@ -67,20 +68,33 @@ class RTCViewPip: UIView {
67
68
  self.pictureInPictureController = nil
68
69
  }
69
70
 
71
+ @objc
72
+ func setPreferredContentSize(_ size: CGSize) {
73
+ NSLog("PiP - RTCViewPip setPreferredContentSize \(size)")
74
+ self.pictureInPictureController?.setPreferredContentSize(size)
75
+ }
76
+
70
77
  override func didMoveToSuperview() {
71
78
  super.didMoveToSuperview()
72
79
  if self.superview == nil {
73
- print("PiP - RTCViewPip has been removed from its superview.")
80
+ NSLog("PiP - RTCViewPip has been removed from its superview.")
74
81
  NotificationCenter.default.removeObserver(self)
75
82
  DispatchQueue.main.async {
76
83
  NSLog("PiP - onCallClosed called due to view detaching")
77
84
  self.onCallClosed()
78
85
  }
79
86
  } else {
80
- print("PiP - RTCViewPip has been added to a superview.")
87
+ NSLog("PiP - RTCViewPip has been added to a superview.")
81
88
  setupNotificationObserver()
82
89
  DispatchQueue.main.async {
83
90
  self.pictureInPictureController?.sourceView = self
91
+ if let reactTag = self.reactTag, let bridge = self.webRtcModule?.bridge {
92
+ if let manager = bridge.module(for: RTCViewPipManager.self) as? RTCViewPipManager,
93
+ let size = manager.getCachedSize(for: reactTag) {
94
+ NSLog("PiP - Applying cached size \(size) for reactTag \(reactTag)")
95
+ self.setPreferredContentSize(size)
96
+ }
97
+ }
84
98
  }
85
99
  }
86
100
  }
@@ -12,5 +12,6 @@
12
12
 
13
13
  RCT_EXPORT_VIEW_PROPERTY(streamURL, NSString)
14
14
  RCT_EXTERN_METHOD(onCallClosed:(nonnull NSNumber*) reactTag)
15
+ RCT_EXTERN_METHOD(setPreferredContentSize:(nonnull NSNumber *)reactTag width:(CGFloat)w height:(CGFloat)h);
15
16
 
16
17
  @end
@@ -10,6 +10,8 @@ import Foundation
10
10
  @objc(RTCViewPipManager)
11
11
  class RTCViewPipManager: RCTViewManager {
12
12
 
13
+ private var cachedSizes: [NSNumber: CGSize] = [:]
14
+
13
15
  override func view() -> UIView! {
14
16
  let view = RTCViewPip()
15
17
  view.setWebRtcModule(self.bridge.module(forName: "WebRTCModule") as! WebRTCModule)
@@ -20,15 +22,46 @@ class RTCViewPipManager: RCTViewManager {
20
22
  return true
21
23
  }
22
24
 
23
- @objc func onCallClosed(_ reactTag: NSNumber) {
24
- self.bridge!.uiManager.addUIBlock { (_: RCTUIManager?, viewRegistry: [NSNumber: UIView]?) in
25
- guard let pipView = viewRegistry?[reactTag] as? RTCViewPip else {
25
+ @objc(onCallClosed:)
26
+ func onCallClosed(_ reactTag: NSNumber) {
27
+
28
+ bridge.uiManager.addUIBlock({ (uiManager, viewRegistry) in
29
+ let view = uiManager?.view(forReactTag: reactTag)
30
+ if let pipView = view as? RTCViewPip {
31
+ DispatchQueue.main.async {
32
+ pipView.onCallClosed()
33
+ }
34
+ } else {
26
35
  NSLog("PiP - onCallClosed cant be called, Invalid view returned from registry, expecting RTCViewPip")
27
- return
28
36
  }
29
- DispatchQueue.main.async {
30
- pipView.onCallClosed()
37
+ })
38
+ }
39
+
40
+
41
+ @objc(setPreferredContentSize:width:height:)
42
+ func setPreferredContentSize(_ reactTag: NSNumber, width: CGFloat, height: CGFloat) {
43
+ let size = CGSize(width: width, height: height)
44
+
45
+ bridge.uiManager.addUIBlock({ (uiManager, viewRegistry) in
46
+ let view = uiManager?.view(forReactTag: reactTag)
47
+ if let pipView = view as? RTCViewPip {
48
+ DispatchQueue.main.async {
49
+ pipView.setPreferredContentSize(size)
50
+ }
51
+ } else {
52
+ // If the view is not found, cache the size.
53
+ // this happens when this method is called before the view can attach react super view
54
+ NSLog("PiP - View not found for reactTag \(reactTag), caching size.")
55
+ self.cachedSizes[reactTag] = size
31
56
  }
57
+ })
58
+ }
59
+
60
+ func getCachedSize(for reactTag: NSNumber) -> CGSize? {
61
+ let size = self.cachedSizes.removeValue(forKey: reactTag)
62
+ if size != nil {
63
+ NSLog("PiP - Found and removed cached size for reactTag \(reactTag).")
32
64
  }
65
+ return size
33
66
  }
34
67
  }
@@ -5,6 +5,7 @@
5
5
  #import <React/RCTUIManager.h>
6
6
  #import <React/RCTView.h>
7
7
  #import <React/RCTBridge.h>
8
+ #import <React/UIView+React.h>
8
9
 
9
10
  #import <WebRTC/RTCCVPixelBuffer.h>
10
11
  #import <WebRTC/RTCVideoFrame.h>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-native-sdk",
3
- "version": "1.20.1-alpha.2",
3
+ "version": "1.20.2",
4
4
  "description": "Stream Video SDK for React Native",
5
5
  "author": "https://getstream.io",
6
6
  "homepage": "https://getstream.io/video/docs/react-native/",
@@ -45,8 +45,8 @@
45
45
  "!**/.*"
46
46
  ],
47
47
  "dependencies": {
48
- "@stream-io/video-client": "1.27.1",
49
- "@stream-io/video-react-bindings": "1.7.10",
48
+ "@stream-io/video-client": "1.27.2",
49
+ "@stream-io/video-react-bindings": "1.7.11",
50
50
  "intl-pluralrules": "2.0.1",
51
51
  "lodash.merge": "^4.6.2",
52
52
  "react-native-url-polyfill": "1.3.0",
@@ -60,7 +60,7 @@
60
60
  "@react-native-firebase/app": ">=17.5.0",
61
61
  "@react-native-firebase/messaging": ">=17.5.0",
62
62
  "@stream-io/noise-cancellation-react-native": ">=0.1.0",
63
- "@stream-io/react-native-webrtc": ">=125.4.0",
63
+ "@stream-io/react-native-webrtc": ">=125.4.1",
64
64
  "@stream-io/video-filters-react-native": ">=0.1.0",
65
65
  "expo": ">=47.0.0",
66
66
  "expo-build-properties": "*",
@@ -125,9 +125,9 @@
125
125
  "@react-native-firebase/app": "^22.1.0",
126
126
  "@react-native-firebase/messaging": "^22.1.0",
127
127
  "@react-native/babel-preset": "^0.79.2",
128
- "@stream-io/noise-cancellation-react-native": "workspace:^",
129
- "@stream-io/react-native-webrtc": "^125.4.0",
130
- "@stream-io/video-filters-react-native": "workspace:^",
128
+ "@stream-io/noise-cancellation-react-native": "^0.2.1",
129
+ "@stream-io/react-native-webrtc": "125.4.1",
130
+ "@stream-io/video-filters-react-native": "^0.6.1",
131
131
  "@testing-library/jest-native": "^5.4.3",
132
132
  "@testing-library/react-native": "13.2.0",
133
133
  "@tsconfig/node14": "14.1.3",
@@ -164,4 +164,4 @@
164
164
  "typescript"
165
165
  ]
166
166
  }
167
- }
167
+ }