@stream-io/video-react-native-sdk 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/android/build.gradle +2 -0
  3. package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +72 -0
  4. package/android/src/main/java/com/streamvideo/reactnative/util/YuvFrame.kt +97 -0
  5. package/dist/commonjs/components/Call/CallContent/CallContent.js +1 -2
  6. package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
  7. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +1 -2
  8. package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
  9. package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js +1 -2
  10. package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js.map +1 -1
  11. package/dist/commonjs/components/Call/CallControls/LobbyControls.js +1 -2
  12. package/dist/commonjs/components/Call/CallControls/LobbyControls.js.map +1 -1
  13. package/dist/commonjs/components/Call/CallControls/ReactionsButton.js +1 -2
  14. package/dist/commonjs/components/Call/CallControls/ReactionsButton.js.map +1 -1
  15. package/dist/commonjs/components/Call/CallControls/RejectCallButton.js +1 -2
  16. package/dist/commonjs/components/Call/CallControls/RejectCallButton.js.map +1 -1
  17. package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js +1 -2
  18. package/dist/commonjs/components/Call/CallControls/ScreenShareToggleButton.js.map +1 -1
  19. package/dist/commonjs/components/Call/CallControls/internal/ReactionsPicker.js +1 -2
  20. package/dist/commonjs/components/Call/CallControls/internal/ReactionsPicker.js.map +1 -1
  21. package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js +1 -2
  22. package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
  23. package/dist/commonjs/components/Call/CallParticipantsList/CallParticipantsList.js +1 -2
  24. package/dist/commonjs/components/Call/CallParticipantsList/CallParticipantsList.js.map +1 -1
  25. package/dist/commonjs/components/Call/Lobby/JoinCallButton.js +1 -2
  26. package/dist/commonjs/components/Call/Lobby/JoinCallButton.js.map +1 -1
  27. package/dist/commonjs/components/Call/Lobby/Lobby.js +1 -2
  28. package/dist/commonjs/components/Call/Lobby/Lobby.js.map +1 -1
  29. package/dist/commonjs/components/Call/Lobby/LobbyFooter.js +1 -2
  30. package/dist/commonjs/components/Call/Lobby/LobbyFooter.js.map +1 -1
  31. package/dist/commonjs/components/Livestream/HostLivestream/HostLivestream.js +1 -2
  32. package/dist/commonjs/components/Livestream/HostLivestream/HostLivestream.js.map +1 -1
  33. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js +1 -2
  34. package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
  35. package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js +1 -2
  36. package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js.map +1 -1
  37. package/dist/commonjs/components/Livestream/LivestreamLayout/LivestreamLayout.js +1 -2
  38. package/dist/commonjs/components/Livestream/LivestreamLayout/LivestreamLayout.js.map +1 -1
  39. package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js +1 -2
  40. package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
  41. package/dist/commonjs/components/Livestream/LivestreamTopView/DurationBadge.js +1 -2
  42. package/dist/commonjs/components/Livestream/LivestreamTopView/DurationBadge.js.map +1 -1
  43. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLivestream.js +1 -2
  44. package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLivestream.js.map +1 -1
  45. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js +1 -2
  46. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js.map +1 -1
  47. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js +1 -2
  48. package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/ReanimatedFloatingView.js.map +1 -1
  49. package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js +1 -2
  50. package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
  51. package/dist/commonjs/components/Participant/ParticipantView/ParticipantReaction.js +1 -2
  52. package/dist/commonjs/components/Participant/ParticipantView/ParticipantReaction.js.map +1 -1
  53. package/dist/commonjs/components/Participant/ParticipantView/ParticipantView.js +1 -2
  54. package/dist/commonjs/components/Participant/ParticipantView/ParticipantView.js.map +1 -1
  55. package/dist/commonjs/components/Participant/ParticipantView/SpeechIndicator.js +1 -2
  56. package/dist/commonjs/components/Participant/ParticipantView/SpeechIndicator.js.map +1 -1
  57. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js +18 -4
  58. package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
  59. package/dist/commonjs/contexts/BackgroundFilters.js +1 -2
  60. package/dist/commonjs/contexts/BackgroundFilters.js.map +1 -1
  61. package/dist/commonjs/contexts/StreamVideoContext.js +1 -2
  62. package/dist/commonjs/contexts/StreamVideoContext.js.map +1 -1
  63. package/dist/commonjs/contexts/ThemeContext.js +1 -2
  64. package/dist/commonjs/contexts/ThemeContext.js.map +1 -1
  65. package/dist/commonjs/contexts/internal/ScreenshotIosContext.js +77 -0
  66. package/dist/commonjs/contexts/internal/ScreenshotIosContext.js.map +1 -0
  67. package/dist/commonjs/hooks/index.js +11 -0
  68. package/dist/commonjs/hooks/index.js.map +1 -1
  69. package/dist/commonjs/hooks/useScreenshot.js +54 -0
  70. package/dist/commonjs/hooks/useScreenshot.js.map +1 -0
  71. package/dist/commonjs/icons/Lock.js +1 -2
  72. package/dist/commonjs/icons/Lock.js.map +1 -1
  73. package/dist/commonjs/icons/ScreenShare.js +1 -2
  74. package/dist/commonjs/icons/ScreenShare.js.map +1 -1
  75. package/dist/commonjs/icons/ScreenShareIndicator.js +1 -2
  76. package/dist/commonjs/icons/ScreenShareIndicator.js.map +1 -1
  77. package/dist/commonjs/icons/Settings.js +1 -2
  78. package/dist/commonjs/icons/Settings.js.map +1 -1
  79. package/dist/commonjs/icons/StopScreenShare.js +1 -2
  80. package/dist/commonjs/icons/StopScreenShare.js.map +1 -1
  81. package/dist/commonjs/providers/StreamCall/index.js +1 -2
  82. package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
  83. package/dist/commonjs/providers/StreamVideo.js +3 -3
  84. package/dist/commonjs/providers/StreamVideo.js.map +1 -1
  85. package/dist/commonjs/version.js +1 -1
  86. package/dist/module/components/Participant/ParticipantView/VideoRenderer.js +18 -3
  87. package/dist/module/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
  88. package/dist/module/contexts/internal/ScreenshotIosContext.js +68 -0
  89. package/dist/module/contexts/internal/ScreenshotIosContext.js.map +1 -0
  90. package/dist/module/hooks/index.js +1 -0
  91. package/dist/module/hooks/index.js.map +1 -1
  92. package/dist/module/hooks/useScreenshot.js +48 -0
  93. package/dist/module/hooks/useScreenshot.js.map +1 -0
  94. package/dist/module/providers/StreamVideo.js +3 -1
  95. package/dist/module/providers/StreamVideo.js.map +1 -1
  96. package/dist/module/version.js +1 -1
  97. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +2 -2
  98. package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
  99. package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +1 -1
  100. package/dist/typescript/contexts/internal/ScreenshotIosContext.d.ts +11 -0
  101. package/dist/typescript/contexts/internal/ScreenshotIosContext.d.ts.map +1 -0
  102. package/dist/typescript/hooks/index.d.ts +1 -0
  103. package/dist/typescript/hooks/index.d.ts.map +1 -1
  104. package/dist/typescript/hooks/useScreenshot.d.ts +19 -0
  105. package/dist/typescript/hooks/useScreenshot.d.ts.map +1 -0
  106. package/dist/typescript/providers/StreamVideo.d.ts.map +1 -1
  107. package/dist/typescript/version.d.ts +1 -1
  108. package/expo-config-plugin/dist/common/{addNewLinesToAppDelegate.js → addNewLinesToAppDelegateObjc.js} +3 -3
  109. package/expo-config-plugin/dist/common/addToSwiftBridgingHeaderFile.js +48 -0
  110. package/expo-config-plugin/dist/withAppDelegate.js +216 -34
  111. package/ios/StreamVideoReactNative.m +96 -0
  112. package/package.json +23 -25
  113. package/src/components/Participant/ParticipantView/VideoRenderer.tsx +35 -3
  114. package/src/contexts/internal/ScreenshotIosContext.tsx +145 -0
  115. package/src/hooks/index.ts +1 -0
  116. package/src/hooks/useScreenshot.ts +78 -0
  117. package/src/providers/StreamVideo.tsx +5 -2
  118. package/src/version.ts +1 -1
@@ -1,11 +1,12 @@
1
1
  import React, { useEffect, useRef } from 'react';
2
- import { StyleSheet, View } from 'react-native';
2
+ import { Platform, StyleSheet, View } from 'react-native';
3
3
  import { RTCView } from '@stream-io/react-native-webrtc';
4
4
  import { CallingState, hasScreenShare, hasVideo, VisibilityState } from '@stream-io/video-client';
5
5
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
6
6
  import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from './ParticipantVideoFallback';
7
7
  import { useTheme } from '../../../contexts/ThemeContext';
8
8
  import { useTrackDimensions } from '../../../hooks/useTrackDimensions';
9
+ import { useScreenshotIosContext } from '../../../contexts/internal/ScreenshotIosContext';
9
10
  const DEFAULT_VIEWPORT_VISIBILITY_STATE = {
10
11
  videoTrack: VisibilityState.UNKNOWN,
11
12
  screenShareTrack: VisibilityState.UNKNOWN
@@ -43,11 +44,16 @@ export const VideoRenderer = ({
43
44
  isParticipantVideoEnabled
44
45
  } = useIncomingVideoSettings();
45
46
  const callingState = useCallCallingState();
46
- const pendingVideoLayoutRef = useRef();
47
- const subscribedVideoLayoutRef = useRef();
47
+ const pendingVideoLayoutRef = useRef(undefined);
48
+ const subscribedVideoLayoutRef = useRef(undefined);
48
49
  const {
49
50
  direction
50
51
  } = useCameraState();
52
+ const viewRef = useRef(null);
53
+ const {
54
+ register: registerIosScreenshot,
55
+ deregister: deregisterIosScreenshot
56
+ } = useScreenshotIosContext();
51
57
  const videoDimensions = useTrackDimensions(participant, trackType);
52
58
  const {
53
59
  isLocalParticipant,
@@ -61,6 +67,14 @@ export const VideoRenderer = ({
61
67
  const hasJoinedCall = callingState === CallingState.JOINED;
62
68
  const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
63
69
  const canShowVideo = !!videoStreamToRender && isVisible && isPublishingVideoTrack && isParticipantVideoEnabled(participant.sessionId);
70
+ React.useEffect(() => {
71
+ if (Platform.OS === 'ios' && registerIosScreenshot && viewRef.current && canShowVideo) {
72
+ registerIosScreenshot(participant, trackType, viewRef);
73
+ return () => {
74
+ deregisterIosScreenshot(participant, trackType);
75
+ };
76
+ }
77
+ }, [participant, trackType, registerIosScreenshot, canShowVideo, deregisterIosScreenshot]);
64
78
  const mirror = isLocalParticipant && !isScreenSharing && direction === 'front';
65
79
 
66
80
  /**
@@ -197,6 +211,7 @@ export const VideoRenderer = ({
197
211
  style: [styles.videoStream, videoRenderer.videoStream],
198
212
  streamURL: videoStreamToRender.toURL(),
199
213
  mirror: mirror,
214
+ ref: viewRef,
200
215
  objectFit: objectFit ?? (videoDimensions.width > videoDimensions.height ? 'contain' : 'cover'),
201
216
  zOrder: videoZOrder
202
217
  }) : ParticipantVideoFallback && /*#__PURE__*/React.createElement(ParticipantVideoFallback, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","StyleSheet","View","RTCView","CallingState","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","useTrackDimensions","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","subscribedVideoLayoutRef","direction","videoDimensions","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","undefined","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","style","styles","container","streamURL","toURL","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,OAAO,QAAQ,gCAAgC;AAExD,SACEC,YAAY,EACZC,cAAc,EACdC,QAAQ,EAGRC,eAAe,QACV,yBAAyB;AAChC,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,wBAAwB,IAAIC,+BAA+B,QAAQ,4BAA4B;AACxG,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,SAASC,kBAAkB,QAAQ,mCAAmC;AAEtE,MAAMC,iCAGL,GAAG;EACFC,UAAU,EAAER,eAAe,CAACS,OAAO;EACnCC,gBAAgB,EAAEV,eAAe,CAACS;AACpC,CAAU;;AAEV;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,aAAa,GAAGA,CAAC;EAC5BC,SAAS,GAAG,YAAY;EACxBC,WAAW;EACXC,SAAS,GAAG,IAAI;EAChBX,wBAAwB,GAAGC,+BAA+B;EAC1DW,SAAS;EACTC,WAAW,GAAG;AACI,CAAC,KAAK;EACxB,MAAM;IACJC,KAAK,EAAE;MAAEC;IAAc;EACzB,CAAC,GAAGb,QAAQ,CAAC,CAAC;EACd,MAAMc,IAAI,GAAGlB,OAAO,CAAC,CAAC;EACtB,MAAM;IAAEmB,mBAAmB;IAAEC,cAAc;IAAEC;EAAyB,CAAC,GACrEpB,iBAAiB,CAAC,CAAC;EACrB,MAAM;IAAEqB;EAA0B,CAAC,GAAGD,wBAAwB,CAAC,CAAC;EAChE,MAAME,YAAY,GAAGJ,mBAAmB,CAAC,CAAC;EAC1C,MAAMK,qBAAqB,GAAGhC,MAAM,CAA2B,CAAC;EAChE,MAAMiC,wBAAwB,GAAGjC,MAAM,CAA2B,CAAC;EACnE,MAAM;IAAEkC;EAAU,CAAC,GAAGN,cAAc,CAAC,CAAC;EACtC,MAAMO,eAAe,GAAGtB,kBAAkB,CAACO,WAAW,EAAED,SAAS,CAAC;EAClE,MAAM;IACJiB,kBAAkB;IAClBC,SAAS;IACTC,uBAAuB;IACvBC,WAAW;IACXC;EACF,CAAC,GAAGpB,WAAW;EAEf,MAAMqB,eAAe,GAAGtB,SAAS,KAAK,kBAAkB;EACxD,MAAMuB,sBAAsB,GAAGD,eAAe,GAC1CpC,cAAc,CAACe,WAAW,CAAC,GAC3Bd,QAAQ,CAACc,WAAW,CAAC;EAEzB,MAAMuB,aAAa,GAAGZ,YAAY,KAAK3B,YAAY,CAACwC,MAAM;EAC1D,MAAMC,mBAAmB,GAAIJ,eAAe,GACxCD,iBAAiB,GACjBD,WAAkD;EAEtD,MAAMO,YAAY,GAChB,CAAC,CAACD,mBAAmB,IACrBxB,SAAS,IACTqB,sBAAsB,IACtBZ,yBAAyB,CAACV,WAAW,CAACiB,SAAS,CAAC;EAElD,MAAMU,MAAM,GACVX,kBAAkB,IAAI,CAACK,eAAe,IAAIP,SAAS,KAAK,OAAO;;EAEjE;AACF;AACA;AACA;EACEnC,SAAS,CAAC,MAAM;IACd,IAAI,CAAC2B,IAAI,IAAIU,kBAAkB,EAAE;MAC/B;IACF;IACA,IAAIf,SAAS,EAAE;MACb,IACEF,SAAS,KAAK,YAAY,IAC1BmB,uBAAuB,EAAEvB,UAAU,KAAKR,eAAe,CAACyC,OAAO,EAC/D;QACAtB,IAAI,CAACuB,KAAK,CAACC,iBAAiB,CAACb,SAAS,EAAGc,CAAC,KAAM;UAC9C,GAAGA,CAAC;UACJb,uBAAuB,EAAE;YACvB,IAAIa,CAAC,CAACb,uBAAuB,IAAIxB,iCAAiC,CAAC;YACnEC,UAAU,EAAER,eAAe,CAACyC;UAC9B;QACF,CAAC,CAAC,CAAC;MACL;MACA,IACE7B,SAAS,KAAK,kBAAkB,IAChCmB,uBAAuB,EAAErB,gBAAgB,KAAKV,eAAe,CAACyC,OAAO,EACrE;QACAtB,IAAI,CAACuB,KAAK,CAACC,iBAAiB,CAACb,SAAS,EAAGc,CAAC,KAAM;UAC9C,GAAGA,CAAC;UACJb,uBAAuB,EAAE;YACvB,IAAIa,CAAC,CAACb,uBAAuB,IAAIxB,iCAAiC,CAAC;YACnEG,gBAAgB,EAAEV,eAAe,CAACyC;UACpC;QACF,CAAC,CAAC,CAAC;MACL;IACF,CAAC,MAAM;MACL,IACE7B,SAAS,KAAK,YAAY,IAC1BmB,uBAAuB,EAAEvB,UAAU,KAAKR,eAAe,CAAC6C,SAAS,EACjE;QACA1B,IAAI,CAACuB,KAAK,CAACC,iBAAiB,CAACb,SAAS,EAAGc,CAAC,KAAM;UAC9C,GAAGA,CAAC;UACJb,uBAAuB,EAAE;YACvB,IAAIa,CAAC,CAACb,uBAAuB,IAAIxB,iCAAiC,CAAC;YACnEC,UAAU,EAAER,eAAe,CAAC6C;UAC9B;QACF,CAAC,CAAC,CAAC;MACL;MACA,IACEjC,SAAS,KAAK,kBAAkB,IAChCmB,uBAAuB,EAAErB,gBAAgB,KAAKV,eAAe,CAAC6C,SAAS,EACvE;QACA1B,IAAI,CAACuB,KAAK,CAACC,iBAAiB,CAACb,SAAS,EAAGc,CAAC,KAAM;UAC9C,GAAGA,CAAC;UACJb,uBAAuB,EAAE;YACvB,IAAIa,CAAC,CAACb,uBAAuB,IAAIxB,iCAAiC,CAAC;YACnEG,gBAAgB,EAAEV,eAAe,CAAC6C;UACpC;QACF,CAAC,CAAC,CAAC;MACL;MACA,IAAInB,wBAAwB,CAACoB,OAAO,EAAE;QACpC;QACArB,qBAAqB,CAACqB,OAAO,GAAGpB,wBAAwB,CAACoB,OAAO;QAChEpB,wBAAwB,CAACoB,OAAO,GAAGC,SAAS;MAC9C;IACF;EACF,CAAC,EAAE,CACDjB,SAAS,EACTC,uBAAuB,EACvBjB,SAAS,EACTK,IAAI,EACJP,SAAS,EACTiB,kBAAkB,CACnB,CAAC;EAEFrC,SAAS,CAAC,MAAM;IACd,IAAI,CAAC4C,aAAa,IAAIV,wBAAwB,CAACoB,OAAO,EAAE;MACtD;MACArB,qBAAqB,CAACqB,OAAO,GAAGpB,wBAAwB,CAACoB,OAAO;MAChEpB,wBAAwB,CAACoB,OAAO,GAAGC,SAAS;IAC9C;EACF,CAAC,EAAE,CAACX,aAAa,CAAC,CAAC;;EAEnB;AACF;AACA;AACA;AACA;AACA;EACE5C,SAAS,CAAC,MAAM;IACd,IAAI,CAAC2B,IAAI,IAAIU,kBAAkB,EAAE;MAC/B;IACF;IACA;IACA,MAAMmB,cAAc,GAAGvB,qBAAqB,CAACqB,OAAO;IAEpD,IAAI,CAACE,cAAc,IAAI,CAACb,sBAAsB,IAAI,CAACC,aAAa,EAAE;MAChE;IACF;;IAEA;IACA;IACA,MAAMa,SAAS,GAAGnC,SAAS,GAAGW,qBAAqB,CAACqB,OAAO,GAAGC,SAAS;IACvE5B,IAAI,CAACuB,KAAK,CAACQ,uBAAuB,CAACtC,SAAS,EAAE;MAC5C,CAACkB,SAAS,GAAG;QAAEmB;MAAU;IAC3B,CAAC,CAAC;IACF9B,IAAI,CAACgC,gBAAgB,CAACC,uBAAuB,CAAC,CAAC;IAE/C,IAAIH,SAAS,EAAE;MACbvB,wBAAwB,CAACoB,OAAO,GAAGrB,qBAAqB,CAACqB,OAAO;MAChErB,qBAAqB,CAACqB,OAAO,GAAGC,SAAS;IAC3C;EACF,CAAC,EAAE,CACD5B,IAAI,EACJgB,sBAAsB,EACtBvB,SAAS,EACTE,SAAS,EACTgB,SAAS,EACTM,aAAa,EACbP,kBAAkB,CACnB,CAAC;EAEFrC,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXkC,wBAAwB,CAACoB,OAAO,GAAGC,SAAS;MAC5CtB,qBAAqB,CAACqB,OAAO,GAAGC,SAAS;IAC3C,CAAC;EACH,CAAC,EAAE,CAACnC,SAAS,EAAEkB,SAAS,CAAC,CAAC;EAE1B,MAAMuB,QAA0D,GAC9DC,KAAK,IACF;IACH,IAAI,CAACnC,IAAI,IAAIU,kBAAkB,EAAE;MAC/B;IACF;IACA,MAAMoB,SAAS,GAAG;MAChBM,KAAK,EAAEC,IAAI,CAACC,KAAK,CAACH,KAAK,CAACI,WAAW,CAACC,MAAM,CAACJ,KAAK,CAAC;MACjDK,MAAM,EAAEJ,IAAI,CAACC,KAAK,CAACH,KAAK,CAACI,WAAW,CAACC,MAAM,CAACC,MAAM;IACpD,CAAC;;IAED;IACA;IACA;IACA,IAAI,CAACzB,sBAAsB,IAAI,CAACrB,SAAS,IAAI,CAACsB,aAAa,EAAE;MAC3DX,qBAAqB,CAACqB,OAAO,GAAGG,SAAS;MACzC;IACF;;IAEA;IACA,IACEvB,wBAAwB,CAACoB,OAAO,EAAES,KAAK,KAAKN,SAAS,CAACM,KAAK,IAC3D7B,wBAAwB,CAACoB,OAAO,EAAEc,MAAM,KAAKX,SAAS,CAACW,MAAM,EAC7D;MACA;IACF;IACAzC,IAAI,CAACuB,KAAK,CAACQ,uBAAuB,CAACtC,SAAS,EAAE;MAC5C,CAACkB,SAAS,GAAG;QACXmB;MACF;IACF,CAAC,CAAC;IACF9B,IAAI,CAACgC,gBAAgB,CAACC,uBAAuB,CAAC,CAAC;IAC/C1B,wBAAwB,CAACoB,OAAO,GAAGG,SAAS;IAC5CxB,qBAAqB,CAACqB,OAAO,GAAGC,SAAS;EAC3C,CAAC;EAED,oBACExD,KAAA,CAAAsE,aAAA,CAAClE,IAAI;IACH0D,QAAQ,EAAEA,QAAS;IACnBS,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAE9C,aAAa,CAAC8C,SAAS;EAAE,GAElDzB,YAAY,IAAID,mBAAmB,gBAClC/C,KAAA,CAAAsE,aAAA,CAACjE,OAAO;IACNkE,KAAK,EAAE,CAACC,MAAM,CAAC/B,WAAW,EAAEd,aAAa,CAACc,WAAW,CAAE;IACvDiC,SAAS,EAAE3B,mBAAmB,CAAC4B,KAAK,CAAC,CAAE;IACvC1B,MAAM,EAAEA,MAAO;IACfzB,SAAS,EACPA,SAAS,KACRa,eAAe,CAAC2B,KAAK,GAAG3B,eAAe,CAACgC,MAAM,GAC3C,SAAS,GACT,OAAO,CACZ;IACDO,MAAM,EAAEnD;EAAY,CACrB,CAAC,GAEFb,wBAAwB,iBACtBZ,KAAA,CAAAsE,aAAA,CAAC1D,wBAAwB;IAACU,WAAW,EAAEA;EAAY,CAAE,CAGrD,CAAC;AAEX,CAAC;AAED,MAAMkD,MAAM,GAAGrE,UAAU,CAAC0E,MAAM,CAAC;EAC/BJ,SAAS,EAAE;IACT,GAAGtE,UAAU,CAAC2E;EAChB,CAAC;EACDrC,WAAW,EAAE;IACX,GAAGtC,UAAU,CAAC2E;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","Platform","StyleSheet","View","RTCView","CallingState","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","useTrackDimensions","useScreenshotIosContext","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","undefined","subscribedVideoLayoutRef","direction","viewRef","register","registerIosScreenshot","deregister","deregisterIosScreenshot","videoDimensions","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","OS","current","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","style","styles","container","streamURL","toURL","ref","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ import { getLogger } from '@stream-io/video-client';
2
+ import React, { createContext, useContext, useCallback, useMemo } from 'react';
3
+ import { NativeModules, findNodeHandle, Platform } from 'react-native';
4
+ const {
5
+ StreamVideoReactNative
6
+ } = NativeModules;
7
+ // Create the context with a default undefined value
8
+ const ScreenshotIosContext = /*#__PURE__*/createContext(undefined);
9
+ const participantVideoViewRefMap = new Map();
10
+ export const ScreenshotIosContextProvider = ({
11
+ children
12
+ }) => {
13
+ // Register a participant's RTCView ref
14
+ const register = useCallback((participant, videoTrackType, ref) => {
15
+ if (ref && participant.userId) {
16
+ participantVideoViewRefMap.set(`${participant.userId}-${videoTrackType}`, ref);
17
+ }
18
+ }, []);
19
+ const deregister = useCallback((participant, videoTrackType) => {
20
+ if (participant.userId) {
21
+ participantVideoViewRefMap.delete(`${participant.userId}-${videoTrackType}`);
22
+ }
23
+ }, []);
24
+
25
+ // Take a snapshot of a specific participant's view
26
+ const take = useCallback(async (participant, videoTrackType) => {
27
+ try {
28
+ if (Platform.OS !== 'ios') {
29
+ throw new Error('ScreenshotIosContextProvider is only supported on iOS');
30
+ }
31
+ const ref = participantVideoViewRefMap.get(`${participant.userId}-${videoTrackType}`);
32
+ if (!ref || !ref.current) {
33
+ getLogger(['ScreenshotIosContextProvider'])('error', 'Cannot take snapshot: No registered view for this participant');
34
+ return null;
35
+ }
36
+
37
+ // Get the native handle for the view
38
+ const tag = findNodeHandle(ref.current);
39
+ if (!tag) {
40
+ getLogger(['ScreenshotIosContextProvider'])('error', 'Cannot take snapshot: Cannot get native handle for view');
41
+ return null;
42
+ }
43
+
44
+ // Take the snapshot using our native module
45
+ const base64Image = await StreamVideoReactNative.captureRef(tag, {});
46
+ return base64Image;
47
+ } catch (error) {
48
+ getLogger(['ScreenshotIosContextProvider'])('error', 'Error taking participant snapshot:', error);
49
+ return null;
50
+ }
51
+ }, []);
52
+ const value = useMemo(() => ({
53
+ register,
54
+ deregister,
55
+ take
56
+ }), [register, deregister, take]);
57
+ return /*#__PURE__*/React.createElement(ScreenshotIosContext.Provider, {
58
+ value: value
59
+ }, children);
60
+ };
61
+ export const useScreenshotIosContext = () => {
62
+ const context = useContext(ScreenshotIosContext);
63
+ if (!context) {
64
+ throw new Error('useScreenshotIosContext must be used within a ScreenshotIosContextProvider');
65
+ }
66
+ return context;
67
+ };
68
+ //# sourceMappingURL=ScreenshotIosContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getLogger","React","createContext","useContext","useCallback","useMemo","NativeModules","findNodeHandle","Platform","StreamVideoReactNative","ScreenshotIosContext","undefined","participantVideoViewRefMap","Map","ScreenshotIosContextProvider","children","register","participant","videoTrackType","ref","userId","set","deregister","delete","take","OS","Error","get","current","tag","base64Image","captureRef","error","value","createElement","Provider","useScreenshotIosContext","context"],"sourceRoot":"../../../../src","sources":["contexts/internal/ScreenshotIosContext.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,4 +8,5 @@ export * from './useAutoEnterPiPEffect';
8
8
  export * from './useApplyDefaultMediaStreamSettings';
9
9
  export * from './useScreenShareButton';
10
10
  export * from './useTrackDimensions';
11
+ export * from './useScreenshot';
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,sCAAsC;AACpD,cAAc,wBAAwB;AACtC,cAAc,sBAAsB","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,sCAAsC;AACpD,cAAc,wBAAwB;AACtC,cAAc,sBAAsB;AACpC,cAAc,iBAAiB","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ import { useCallback } from 'react';
2
+ import { useScreenshotIosContext } from '../contexts/internal/ScreenshotIosContext';
3
+ import { NativeModules, Platform } from 'react-native';
4
+ import { getLogger } from '@stream-io/video-client';
5
+ const {
6
+ StreamVideoReactNative
7
+ } = NativeModules;
8
+
9
+ /**
10
+ * Hook that provides functionality to take screenshots of participant video streams.
11
+ *
12
+ * @returns An object containing the `takeScreenShot` function that captures a participant's video.
13
+ */
14
+
15
+ export function useScreenshot() {
16
+ const {
17
+ take
18
+ } = useScreenshotIosContext();
19
+ const takeScreenshot = useCallback(async (participant, videoTrackType) => {
20
+ if (Platform.OS === 'android') {
21
+ const {
22
+ videoStream,
23
+ screenShareStream
24
+ } = participant;
25
+ const videoStreamForScreenshot = videoTrackType === 'screenShareTrack' ? screenShareStream : videoStream;
26
+ if (videoStreamForScreenshot) {
27
+ try {
28
+ return await StreamVideoReactNative.takeScreenshot(videoStreamForScreenshot.toURL());
29
+ } catch (error) {
30
+ getLogger(['useScreenshot'])('error', 'Error taking screenshot', error);
31
+ return null;
32
+ }
33
+ }
34
+ return null;
35
+ } else {
36
+ try {
37
+ return await take(participant, videoTrackType);
38
+ } catch (error) {
39
+ getLogger(['useScreenshot'])('error', 'Error taking screenshot', error);
40
+ return null;
41
+ }
42
+ }
43
+ }, [take]);
44
+ return {
45
+ takeScreenshot
46
+ };
47
+ }
48
+ //# sourceMappingURL=useScreenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useScreenshotIosContext","NativeModules","Platform","getLogger","StreamVideoReactNative","useScreenshot","take","takeScreenshot","participant","videoTrackType","OS","videoStream","screenShareStream","videoStreamForScreenshot","toURL","error"],"sourceRoot":"../../../src","sources":["hooks/useScreenshot.ts"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,uBAAuB,QAAQ,2CAA2C;AACnF,SAASC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,SAEEC,SAAS,QAEJ,yBAAyB;AAEhC,MAAM;EAAEC;AAAuB,CAAC,GAAGH,aAAa;;AAEhD;AACA;AACA;AACA;AACA;;AAeA,OAAO,SAASI,aAAaA,CAAA,EAAwB;EACnD,MAAM;IAAEC;EAAK,CAAC,GAAGN,uBAAuB,CAAC,CAAC;EAC1C,MAAMO,cAAc,GAAGR,WAAW,CAChC,OACES,WAAmC,EACnCC,cAA8B,KAC3B;IACH,IAAIP,QAAQ,CAACQ,EAAE,KAAK,SAAS,EAAE;MAC7B,MAAM;QAAEC,WAAW;QAAEC;MAAkB,CAAC,GAAGJ,WAAW;MAEtD,MAAMK,wBAAwB,GAAIJ,cAAc,KAAK,kBAAkB,GACnEG,iBAAiB,GACjBD,WAAkD;MAEtD,IAAIE,wBAAwB,EAAE;QAC5B,IAAI;UACF,OAAO,MAAMT,sBAAsB,CAACG,cAAc,CAChDM,wBAAwB,CAACC,KAAK,CAAC,CACjC,CAAC;QACH,CAAC,CAAC,OAAOC,KAAK,EAAE;UACdZ,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAC1B,OAAO,EACP,yBAAyB,EACzBY,KACF,CAAC;UACD,OAAO,IAAI;QACb;MACF;MACA,OAAO,IAAI;IACb,CAAC,MAAM;MACL,IAAI;QACF,OAAO,MAAMT,IAAI,CAACE,WAAW,EAAEC,cAAc,CAAC;MAChD,CAAC,CAAC,OAAOM,KAAK,EAAE;QACdZ,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAC1B,OAAO,EACP,yBAAyB,EACzBY,KACF,CAAC;QACD,OAAO,IAAI;MACb;IACF;EACF,CAAC,EACD,CAACT,IAAI,CACP,CAAC;EAED,OAAO;IAAEC;EAAe,CAAC;AAC3B","ignoreList":[]}
@@ -5,6 +5,8 @@ import NetInfo from '@react-native-community/netinfo';
5
5
  import { usePushRegisterEffect } from '../hooks';
6
6
  import { translations } from '../translations';
7
7
  import { StreamTheme } from '../contexts/ThemeContext';
8
+ import { ScreenshotIosContextProvider } from '../contexts/internal/ScreenshotIosContext';
9
+
8
10
  /**
9
11
  *
10
12
  * @param props
@@ -50,7 +52,7 @@ export const StreamVideo = props => {
50
52
  i18nInstance: i18nInstance
51
53
  }, /*#__PURE__*/React.createElement(StreamTheme, {
52
54
  style: style
53
- }, /*#__PURE__*/React.createElement(StreamVideoStoreProvider, null, /*#__PURE__*/React.createElement(PushRegister, null), children)));
55
+ }, /*#__PURE__*/React.createElement(StreamVideoStoreProvider, null, /*#__PURE__*/React.createElement(ScreenshotIosContextProvider, null, /*#__PURE__*/React.createElement(PushRegister, null), children))));
54
56
  };
55
57
 
56
58
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["StreamVideoProvider","React","useEffect","StreamVideoStoreProvider","NetInfo","usePushRegisterEffect","translations","StreamTheme","StreamVideo","props","client","children","translationsOverrides","i18nInstance","language","style","prevIsOnline","addEventListener","state","isConnected","isInternetReachable","isOnline","type","streamClient","updateNetworkConnectionStatus","createElement","PushRegister"],"sourceRoot":"../../../src","sources":["providers/StreamVideo.tsx"],"mappings":"AAAA,SAGEA,mBAAmB,QACd,iCAAiC;AACxC,OAAOC,KAAK,IAA4BC,SAAS,QAAQ,OAAO;AAChE,SAASC,wBAAwB,QAAQ,gCAAgC;AACzE,OAAOC,OAAO,MAAM,iCAAiC;AACrD,SAASC,qBAAqB,QAAQ,UAAU;AAChD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAA2BC,WAAW,QAAQ,0BAA0B;AAGxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GACtBC,KAKC,IACE;EACH,MAAM;IACJC,MAAM;IACNC,QAAQ;IACRC,qBAAqB,GAAGN,YAAY;IACpCO,YAAY;IACZC,QAAQ;IACRC;EACF,CAAC,GAAGN,KAAK;;EAET;AACF;AACA;EACEP,SAAS,CAAC,MAAM;IACd,IAAIc,YAAY,GAAG,IAAI;IACvB,OAAOZ,OAAO,CAACa,gBAAgB,CAAEC,KAAK,IAAK;MACzC,MAAM;QAAEC,WAAW;QAAEC;MAAoB,CAAC,GAAGF,KAAK;MAClD,MAAMG,QAAQ,GAAGF,WAAW,KAAK,IAAI,IAAIC,mBAAmB,KAAK,KAAK;MACtE,IAAIC,QAAQ,KAAKL,YAAY,EAAE;QAC7B;MACF;MACAA,YAAY,GAAGK,QAAQ;MACvB,MAAMC,IAAI,GAAGD,QAAQ,GAAG,QAAQ,GAAG,SAAS;MAC5CX,MAAM,CAACa,YAAY,CAACC,6BAA6B,CAAC;QAAEF;MAAK,CAAC,CAAC;IAC7D,CAAC,CAAC;EACJ,CAAC,EAAE,CAACZ,MAAM,CAAC,CAAC;EAEZ,oBACET,KAAA,CAAAwB,aAAA,CAACzB,mBAAmB;IAClBU,MAAM,EAAEA,MAAO;IACfI,QAAQ,EAAEA,QAAS;IACnBF,qBAAqB,EAAEA,qBAAsB;IAC7CC,YAAY,EAAEA;EAAa,gBAE3BZ,KAAA,CAAAwB,aAAA,CAAClB,WAAW;IAACQ,KAAK,EAAEA;EAAM,gBACxBd,KAAA,CAAAwB,aAAA,CAACtB,wBAAwB,qBACvBF,KAAA,CAAAwB,aAAA,CAACC,YAAY,MAAE,CAAC,EACff,QACuB,CACf,CACM,CAAC;AAE1B,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMe,YAAY,GAAGA,CAAA,KAAM;EACzBrB,qBAAqB,CAAC,CAAC;EACvB,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StreamVideoProvider","React","useEffect","StreamVideoStoreProvider","NetInfo","usePushRegisterEffect","translations","StreamTheme","ScreenshotIosContextProvider","StreamVideo","props","client","children","translationsOverrides","i18nInstance","language","style","prevIsOnline","addEventListener","state","isConnected","isInternetReachable","isOnline","type","streamClient","updateNetworkConnectionStatus","createElement","PushRegister"],"sourceRoot":"../../../src","sources":["providers/StreamVideo.tsx"],"mappings":"AAAA,SAGEA,mBAAmB,QACd,iCAAiC;AACxC,OAAOC,KAAK,IAA4BC,SAAS,QAAQ,OAAO;AAChE,SAASC,wBAAwB,QAAQ,gCAAgC;AACzE,OAAOC,OAAO,MAAM,iCAAiC;AACrD,SAASC,qBAAqB,QAAQ,UAAU;AAChD,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAA2BC,WAAW,QAAQ,0BAA0B;AAExE,SAASC,4BAA4B,QAAQ,2CAA2C;;AAExF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GACtBC,KAKC,IACE;EACH,MAAM;IACJC,MAAM;IACNC,QAAQ;IACRC,qBAAqB,GAAGP,YAAY;IACpCQ,YAAY;IACZC,QAAQ;IACRC;EACF,CAAC,GAAGN,KAAK;;EAET;AACF;AACA;EACER,SAAS,CAAC,MAAM;IACd,IAAIe,YAAY,GAAG,IAAI;IACvB,OAAOb,OAAO,CAACc,gBAAgB,CAAEC,KAAK,IAAK;MACzC,MAAM;QAAEC,WAAW;QAAEC;MAAoB,CAAC,GAAGF,KAAK;MAClD,MAAMG,QAAQ,GAAGF,WAAW,KAAK,IAAI,IAAIC,mBAAmB,KAAK,KAAK;MACtE,IAAIC,QAAQ,KAAKL,YAAY,EAAE;QAC7B;MACF;MACAA,YAAY,GAAGK,QAAQ;MACvB,MAAMC,IAAI,GAAGD,QAAQ,GAAG,QAAQ,GAAG,SAAS;MAC5CX,MAAM,CAACa,YAAY,CAACC,6BAA6B,CAAC;QAAEF;MAAK,CAAC,CAAC;IAC7D,CAAC,CAAC;EACJ,CAAC,EAAE,CAACZ,MAAM,CAAC,CAAC;EAEZ,oBACEV,KAAA,CAAAyB,aAAA,CAAC1B,mBAAmB;IAClBW,MAAM,EAAEA,MAAO;IACfI,QAAQ,EAAEA,QAAS;IACnBF,qBAAqB,EAAEA,qBAAsB;IAC7CC,YAAY,EAAEA;EAAa,gBAE3Bb,KAAA,CAAAyB,aAAA,CAACnB,WAAW;IAACS,KAAK,EAAEA;EAAM,gBACxBf,KAAA,CAAAyB,aAAA,CAACvB,wBAAwB,qBACvBF,KAAA,CAAAyB,aAAA,CAAClB,4BAA4B,qBAC3BP,KAAA,CAAAyB,aAAA,CAACC,YAAY,MAAE,CAAC,EACff,QAC2B,CACN,CACf,CACM,CAAC;AAE1B,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMe,YAAY,GAAGA,CAAA,KAAM;EACzBtB,qBAAqB,CAAC,CAAC;EACvB,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export const version = '1.12.0';
1
+ export const version = '1.13.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  export declare function onNativeCallClosed(reactTag: number): void;
3
3
  /** Wrapper for the native view
4
4
  * meant to stay private and not exposed */
5
- export declare const RTCViewPipNative: React.MemoExoticComponent<React.ForwardRefExoticComponent<{
5
+ export declare const RTCViewPipNative: React.NamedExoticComponent<{
6
6
  streamURL?: string;
7
- } & React.RefAttributes<React.Ref<any>>>>;
7
+ } & React.RefAttributes<React.Ref<any>>>;
8
8
  //# sourceMappingURL=RTCViewPipNative.d.ts.map
@@ -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;yCAgBvB,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;2CAC2C;AAC3C,eAAO,MAAM,gBAAgB;gBAIX,MAAM;wCAgBvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/VideoRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAsB9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,oBAAoB,EAClB,0BAA0B,GAC1B,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,aAAa,CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0FAO3B,kBAAkB,sBAoOpB,CAAC"}
1
+ {"version":3,"file":"VideoRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/VideoRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAuB9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,oBAAoB,EAClB,0BAA0B,GAC1B,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,aAAa,CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0FAO3B,kBAAkB,sBAmQpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { StreamVideoParticipant, type VideoTrackType } from '@stream-io/video-client';
2
+ import React, { RefObject } from 'react';
3
+ type ScreenshotIosContextType = {
4
+ register: (participant: StreamVideoParticipant, videoTrackType: VideoTrackType, ref: RefObject<any>) => void;
5
+ deregister: (participant: StreamVideoParticipant, videoTrackType: VideoTrackType) => void;
6
+ take: (participant: StreamVideoParticipant, videoTrackType: VideoTrackType) => Promise<string | null>;
7
+ };
8
+ export declare const ScreenshotIosContextProvider: ({ children, }: React.PropsWithChildren<{}>) => React.JSX.Element;
9
+ export declare const useScreenshotIosContext: () => ScreenshotIosContextType;
10
+ export {};
11
+ //# sourceMappingURL=ScreenshotIosContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotIosContext.d.ts","sourceRoot":"","sources":["../../../../src/contexts/internal/ScreenshotIosContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,cAAc,EAEpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAKf,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,CACR,WAAW,EAAE,sBAAsB,EACnC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAChB,IAAI,CAAC;IACV,UAAU,EAAE,CACV,WAAW,EAAE,sBAAsB,EACnC,cAAc,EAAE,cAAc,KAC3B,IAAI,CAAC;IACV,IAAI,EAAE,CACJ,WAAW,EAAE,sBAAsB,EACnC,cAAc,EAAE,cAAc,KAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7B,CAAC;AASF,eAAO,MAAM,4BAA4B,GAAI,eAE1C,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,sBA6F7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,wBAQ1C,CAAC"}
@@ -8,4 +8,5 @@ export * from './useAutoEnterPiPEffect';
8
8
  export * from './useApplyDefaultMediaStreamSettings';
9
9
  export * from './useScreenShareButton';
10
10
  export * from './useTrackDimensions';
11
+ export * from './useScreenshot';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { StreamVideoParticipant, type VideoTrackType } from '@stream-io/video-client';
2
+ /**
3
+ * Hook that provides functionality to take screenshots of participant video streams.
4
+ *
5
+ * @returns An object containing the `takeScreenShot` function that captures a participant's video.
6
+ */
7
+ type UseScreenshotResult = {
8
+ /**
9
+ * Takes a screenshot of a participant's video stream.
10
+ *
11
+ * @param participant - The participant whose video stream to capture
12
+ * @param videoTrackType - The type of video track to capture ('videoTrack' or 'screenShareTrack')
13
+ * @returns A Promise that resolves to a base64-encoded png image string or null if the screenshot fails
14
+ */
15
+ takeScreenshot: (participant: StreamVideoParticipant, videoTrackType: VideoTrackType) => Promise<string | null>;
16
+ };
17
+ export declare function useScreenshot(): UseScreenshotResult;
18
+ export {};
19
+ //# sourceMappingURL=useScreenshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenshot.d.ts","sourceRoot":"","sources":["../../../src/hooks/useScreenshot.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,sBAAsB,EAEtB,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAIjC;;;;GAIG;AACH,KAAK,mBAAmB,GAAG;IACzB;;;;;;OAMG;IACH,cAAc,EAAE,CACd,WAAW,EAAE,sBAAsB,EACnC,cAAc,EAAE,cAAc,KAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEF,wBAAgB,aAAa,IAAI,mBAAmB,CA8CnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"StreamVideo.d.ts","sourceRoot":"","sources":["../../../src/providers/StreamVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAKjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,iBAAiB,CACtB,gBAAgB,GACd,uBAAuB,GAAG;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B,CACJ,sBA2CF,CAAC"}
1
+ {"version":3,"file":"StreamVideo.d.ts","sourceRoot":"","sources":["../../../src/providers/StreamVideo.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAKjE,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,iBAAiB,CACtB,gBAAgB,GACd,uBAAuB,GAAG;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC5B,CACJ,sBA6CF,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.12.0";
1
+ export declare const version = "1.13.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = addNewLinesToAppDelegate;
4
- function addNewLinesToAppDelegate(content, toAdd) {
3
+ exports.default = addNewLinesToAppDelegateObjc;
4
+ function addNewLinesToAppDelegateObjc(content, toAdd) {
5
5
  const lines = content.split('\n');
6
6
  let lineIndex = lines.findIndex((line) => line.match('@end'));
7
7
  if (lineIndex < 0) {
8
- throw Error('Malformed app delegate');
8
+ throw Error('Malformed app delegate (objc)');
9
9
  }
10
10
  toAdd.unshift('');
11
11
  lineIndex -= 1;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addToSwiftBridgingHeaderFile = addToSwiftBridgingHeaderFile;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ function findBridgingHeaderName(dir) {
10
+ const files = fs_1.default.readdirSync(dir);
11
+ for (const file of files) {
12
+ const fullPath = path_1.default.join(dir, file);
13
+ const stat = fs_1.default.statSync(fullPath);
14
+ if (stat.isDirectory()) {
15
+ const result = findBridgingHeaderName(fullPath);
16
+ if (result)
17
+ return result; // Return if found in subdirectory
18
+ }
19
+ else if (file.endsWith('.pbxproj')) {
20
+ const content = fs_1.default.readFileSync(fullPath, 'utf8');
21
+ const match = content.match(/SWIFT_OBJC_BRIDGING_HEADER\s*=\s*(.*?);/);
22
+ if (match && match[1]) {
23
+ return match[1].trim();
24
+ }
25
+ }
26
+ }
27
+ return null; // Not found
28
+ }
29
+ /**
30
+ * Adds contents to the Swift bridging header file.
31
+ * @param projectRoot The root directory of the project.
32
+ * @param action The function to add the contents the bridging header file.
33
+ */
34
+ async function addToSwiftBridgingHeaderFile(projectRoot, action) {
35
+ const bridgingHeaderFileName = findBridgingHeaderName(projectRoot);
36
+ if (!bridgingHeaderFileName) {
37
+ console.error('No bridging header found.');
38
+ return;
39
+ }
40
+ const bridgingHeaderFullPath = path_1.default.resolve(projectRoot, `ios/${bridgingHeaderFileName.replace(/['"]/g, '')}`);
41
+ if (!fs_1.default.existsSync(bridgingHeaderFullPath)) {
42
+ console.error(`File not found at: ${bridgingHeaderFullPath}`);
43
+ return;
44
+ }
45
+ const headerFileContents = await fs_1.default.promises.readFile(bridgingHeaderFullPath, 'utf8');
46
+ const newHeaderFileContents = action(headerFileContents);
47
+ await fs_1.default.promises.writeFile(bridgingHeaderFullPath, newHeaderFileContents);
48
+ }