@azure/communication-react 1.7.0-beta.1 → 1.7.0-beta.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 (264) hide show
  1. package/dist/communication-react.d.ts +61 -26
  2. package/dist/dist-cjs/communication-react/index.js +424 -227
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/areEqual.d.ts +0 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  7. package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js +10 -0
  8. package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +0 -1
  10. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +11 -2
  11. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +2 -1
  15. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js +6 -2
  17. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -1
  19. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  21. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.d.ts +0 -1
  22. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js +18 -2
  23. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  24. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.d.ts +5 -0
  25. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +37 -15
  26. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  27. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  28. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  29. package/dist/dist-esm/communication-react/src/mergedHooks.d.ts +0 -1
  30. package/dist/dist-esm/northstar-wrapper/src/index.js +1 -1
  31. package/dist/dist-esm/react-components/src/components/Announcer/Announcer.d.ts +0 -1
  32. package/dist/dist-esm/react-components/src/components/Announcer/LiveMessage.d.ts +0 -1
  33. package/dist/dist-esm/react-components/src/components/Announcer/MessageBlock.d.ts +0 -1
  34. package/dist/dist-esm/react-components/src/components/Announcer.d.ts +0 -1
  35. package/dist/dist-esm/react-components/src/components/CameraButton.d.ts +0 -1
  36. package/dist/dist-esm/react-components/src/components/Caption.d.ts +0 -1
  37. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +6 -2
  38. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +3 -3
  39. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.d.ts +0 -1
  41. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.d.ts +0 -1
  42. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +0 -1
  43. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.d.ts +0 -1
  44. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +0 -1
  45. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +5 -2
  46. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.d.ts +0 -1
  48. package/dist/dist-esm/react-components/src/components/ComplianceBanner/BannerMessage.d.ts +0 -1
  49. package/dist/dist-esm/react-components/src/components/ComplianceBanner/ComplianceBanner.d.ts +0 -1
  50. package/dist/dist-esm/react-components/src/components/ComplianceBanner/DelayedUpdateBanner.d.ts +0 -1
  51. package/dist/dist-esm/react-components/src/components/ControlBarButton.d.ts +0 -1
  52. package/dist/dist-esm/react-components/src/components/ControlButtonTooltip.d.ts +0 -1
  53. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.d.ts +0 -1
  54. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.d.ts +0 -1
  55. package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.d.ts +0 -1
  56. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.d.ts +0 -1
  57. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.d.ts +0 -1
  58. package/dist/dist-esm/react-components/src/components/DevicesButton.d.ts +0 -1
  59. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +0 -1
  60. package/dist/dist-esm/react-components/src/components/Drawer/DrawerLightDismiss.d.ts +0 -1
  61. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.d.ts +0 -1
  62. package/dist/dist-esm/react-components/src/components/EndCallButton.d.ts +0 -1
  63. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +5 -1
  64. package/dist/dist-esm/react-components/src/components/ErrorBar.js +5 -2
  65. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  66. package/dist/dist-esm/react-components/src/components/FileCard.d.ts +0 -1
  67. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts +33 -6
  68. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js +18 -5
  69. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  70. package/dist/dist-esm/react-components/src/components/FileUploadCards.d.ts +0 -1
  71. package/dist/dist-esm/react-components/src/components/HighContrastAwareIcon.d.ts +0 -1
  72. package/dist/dist-esm/react-components/src/components/HoldButton.d.ts +0 -1
  73. package/dist/dist-esm/react-components/src/components/LocalVideoCameraButton.d.ts +0 -1
  74. package/dist/dist-esm/react-components/src/components/MentionPopover.js +15 -16
  75. package/dist/dist-esm/react-components/src/components/MentionPopover.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/MessageStatusIndicator.d.ts +0 -1
  77. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +0 -1
  78. package/dist/dist-esm/react-components/src/components/MessageThread.js +1 -1
  79. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  80. package/dist/dist-esm/react-components/src/components/MicrophoneButton.d.ts +0 -1
  81. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +1 -2
  82. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  83. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +1 -2
  84. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  85. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts +1 -2
  86. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  87. package/dist/dist-esm/react-components/src/components/PictureInPictureInPicture/PictureInPictureInPicture.d.ts +0 -1
  88. package/dist/dist-esm/react-components/src/components/ScreenShareButton.d.ts +0 -1
  89. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.d.ts +0 -1
  90. package/dist/dist-esm/react-components/src/components/SendBoxErrors.d.ts +0 -1
  91. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.d.ts +0 -1
  92. package/dist/dist-esm/react-components/src/components/StreamMedia.d.ts +0 -1
  93. package/dist/dist-esm/react-components/src/components/SystemMessage.d.ts +0 -1
  94. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +50 -22
  95. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +1 -1
  96. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js +45 -17
  97. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js.map +1 -1
  98. package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.d.ts +0 -1
  99. package/dist/dist-esm/react-components/src/components/TypingIndicator.d.ts +0 -1
  100. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.d.ts +0 -1
  101. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.d.ts +0 -1
  102. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.d.ts +0 -1
  103. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.d.ts +0 -1
  104. package/dist/dist-esm/react-components/src/components/VideoEffects/PresetVideoEffectsItems.d.ts +0 -1
  105. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.d.ts +0 -1
  106. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +3 -2
  107. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
  108. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.d.ts +0 -1
  109. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +0 -1
  110. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.d.ts +0 -1
  111. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +0 -1
  112. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +0 -1
  113. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +0 -1
  114. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +0 -1
  115. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +5 -1
  116. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -1
  117. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +0 -1
  118. package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +2 -1
  119. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +5 -1
  120. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
  121. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js +2 -1
  122. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js.map +1 -1
  123. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +5 -0
  124. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  125. package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +2 -2
  126. package/dist/dist-esm/react-components/src/theming/icons.d.ts +0 -1
  127. package/dist/dist-esm/react-components/src/types/OnRender.d.ts +0 -1
  128. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +0 -1
  129. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +21 -7
  130. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  131. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +10 -1
  132. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  133. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  134. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +3 -2
  135. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +13 -11
  136. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  137. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts +1 -1
  138. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -1
  139. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  140. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +0 -1
  141. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +0 -1
  142. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.d.ts +1 -1
  143. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js +2 -2
  144. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -1
  145. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +0 -1
  146. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ExpandedLocalVideoTile.d.ts +0 -1
  147. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.d.ts +0 -1
  148. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.d.ts +0 -1
  149. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.d.ts +0 -1
  150. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
  151. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.d.ts +0 -1
  152. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +0 -1
  153. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +5 -2
  154. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  155. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MutedNotification.d.ts +0 -1
  156. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.d.ts +0 -1
  157. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.d.ts +0 -1
  158. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.d.ts +2 -1
  159. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js +13 -19
  160. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.js.map +1 -1
  161. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.d.ts +0 -1
  162. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.d.ts +0 -1
  163. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +0 -1
  164. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.d.ts +0 -1
  165. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +0 -1
  166. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.d.ts +0 -1
  167. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +0 -1
  168. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/People.d.ts +0 -1
  169. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/ScreenShare.d.ts +0 -1
  170. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.d.ts +0 -1
  171. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +3 -2
  172. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -4
  173. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  174. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +3 -1
  175. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +7 -5
  176. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  177. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.d.ts +3 -1
  178. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +2 -4
  179. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
  180. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.d.ts +3 -1
  181. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +2 -4
  182. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  183. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.d.ts +0 -1
  184. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.d.ts +0 -1
  185. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +2 -2
  186. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
  187. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.d.ts +0 -1
  188. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/lobbySelector.d.ts +3 -0
  189. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.d.ts +3 -0
  190. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localVideoStreamSelector.d.ts +2 -0
  191. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localVideoStreamSelector.js +3 -1
  192. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localVideoStreamSelector.js.map +1 -1
  193. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/networkReconnectTileSelector.d.ts +3 -0
  194. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.d.ts +5 -1
  195. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js +14 -4
  196. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js.map +1 -1
  197. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/ErrorTracking.d.ts +9 -0
  198. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/ErrorTracking.js +4 -0
  199. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/ErrorTracking.js.map +1 -0
  200. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.d.ts +21 -0
  201. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js +43 -0
  202. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js.map +1 -0
  203. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +2 -13
  204. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -14
  205. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  206. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/index.d.ts +1 -0
  207. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/index.js +1 -0
  208. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/index.js.map +1 -1
  209. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +0 -1
  210. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +6 -2
  211. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  212. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/ChatButton.d.ts +0 -1
  213. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/ChatButtonWithUnreadMessagesBadge.d.ts +3 -5
  214. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/ChatButtonWithUnreadMessagesBadge.js +4 -26
  215. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/ChatButtonWithUnreadMessagesBadge.js.map +1 -1
  216. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/NotificationIcon.d.ts +0 -1
  217. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/useUnreadMessagesTracker.d.ts +7 -0
  218. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/useUnreadMessagesTracker.js +32 -0
  219. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/ChatButton/useUnreadMessagesTracker.js.map +1 -0
  220. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts +0 -1
  221. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatHeader.d.ts +0 -1
  222. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts +0 -1
  223. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  224. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  225. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +0 -1
  226. package/dist/dist-esm/react-composites/src/composites/ChatComposite/FileDownloadErrorBar.d.ts +0 -1
  227. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.d.ts +0 -1
  228. package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/usePropsFor.d.ts +0 -1
  229. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.d.ts +0 -1
  230. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts +0 -1
  231. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.d.ts +0 -1
  232. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.d.ts +0 -1
  233. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.d.ts +0 -1
  234. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +1 -1
  235. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -1
  236. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.d.ts +0 -1
  237. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.d.ts +0 -1
  238. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +1 -1
  239. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +1 -1
  240. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.d.ts +0 -1
  242. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.d.ts +0 -1
  243. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.d.ts +0 -1
  244. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.d.ts +0 -1
  245. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.d.ts +0 -1
  246. package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.d.ts +0 -1
  247. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.d.ts +0 -1
  248. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.d.ts +0 -1
  249. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.d.ts +0 -1
  250. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.d.ts +0 -1
  251. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.d.ts +0 -1
  252. package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.d.ts +0 -1
  253. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.d.ts +0 -1
  254. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js +2 -2
  255. package/dist/dist-esm/react-composites/src/composites/common/TabHeader.js.map +1 -1
  256. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +4 -5
  257. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +22 -12
  258. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
  259. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +0 -1
  260. package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +2 -2
  261. package/package.json +21 -22
  262. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/videoBackgroundErrorsSelector.d.ts +0 -7
  263. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/videoBackgroundErrorsSelector.js +0 -14
  264. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/videoBackgroundErrorsSelector.js.map +0 -1
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { VideoGalleryStream } from "../../../../../react-components/src";
3
2
  /**
4
3
  * @private
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CreateVideoStreamViewResult, VideoGalleryStream, VideoStreamOptions } from "../../../../../react-components/src";
3
2
  /**
4
3
  * @private
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';
3
2
  import { VideoStreamOptions } from "../../../../../react-components/src";
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * @private
4
3
  */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { OnRenderAvatarCallback } from "../../../../../react-components/src";
3
2
  import { AvatarPersonaDataCallback } from '../../common/AvatarPersona';
4
3
  import { RemoteVideoTileMenuOptions } from '../CallComposite';
@@ -45,6 +45,8 @@ export const MediaGallery = (props) => {
45
45
  const containerWidth = _useContainerWidth(containerRef);
46
46
  /* @conditional-compile-remove(vertical-gallery) */
47
47
  const containerHeight = _useContainerHeight(containerRef);
48
+ /* @conditional-compile-remove(click-to-call) */
49
+ const containerAspectRatio = containerWidth && containerHeight ? containerWidth / containerHeight : 0;
48
50
  const layoutBasedOnTilePosition = localVideoTileLayoutTrampoline(/* @conditional-compile-remove(click-to-call) */ (_a = props.localVideoTileOptions) === null || _a === void 0 ? void 0 : _a.position);
49
51
  const cameraSwitcherProps = useMemo(() => {
50
52
  return Object.assign(Object.assign({}, cameraSwitcherCallback), cameraSwitcherCameras);
@@ -80,8 +82,9 @@ export const MediaGallery = (props) => {
80
82
  return React.createElement(VideoGallery, Object.assign({}, videoGalleryProps, { localVideoViewOptions: localVideoViewOptions, remoteVideoViewOptions: remoteVideoViewOptions, styles: VideoGalleryStyles, layout: layoutBasedOnTilePosition, showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: (_a = props.onRenderAvatar) !== null && _a !== void 0 ? _a : onRenderAvatar,
81
83
  /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions: remoteVideoTileMenuOptions,
82
84
  /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition: overflowGalleryPosition,
83
- /* @conditional-compile-remove(click-to-call) */ localVideoTileSize: props.localVideoTileOptions === false ? 'hidden' : props.isMobile ? 'followDeviceOrientation' : '16:9' }));
84
- }, [videoGalleryProps, props.isMobile, props.onRenderAvatar, onRenderAvatar, cameraSwitcherProps, /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, /* @conditional-compile-remove(click-to-call) */ props.localVideoTileOptions, layoutBasedOnTilePosition]);
85
+ /* @conditional-compile-remove(click-to-call) */ localVideoTileSize: props.localVideoTileOptions === false ? 'hidden' : props.isMobile && containerAspectRatio < 1 ? '9:16' : '16:9' }));
86
+ }, [videoGalleryProps, props.isMobile, props.onRenderAvatar, onRenderAvatar, cameraSwitcherProps, /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, /* @conditional-compile-remove(click-to-call) */ props.localVideoTileOptions, layoutBasedOnTilePosition,
87
+ containerAspectRatio]);
85
88
  return React.createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
86
89
  React.createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
87
90
  VideoGalleryMemoized);
@@ -1 +1 @@
1
- {"version":3,"file":"MediaGallery.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/components/MediaGallery.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { CSSProperties, useCallback, useEffect, useMemo, useState } from 'react';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { useRef } from 'react';\nimport { VideoGallery, VideoStreamOptions, OnRenderAvatarCallback, CustomAvatarOptions, Announcer, VideoGalleryLayout } from '@internal/react-components';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { _useContainerWidth, _useContainerHeight } from '@internal/react-components';\n/* @conditional-compile-remove(pinned-participants) */\nimport { VideoTileContextualMenuProps, VideoTileDrawerMenuProps } from '@internal/react-components';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { getIsPreviewCameraOn } from '../selectors/baseSelectors';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { useSelector } from '../hooks/useSelector';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { LocalVideoCameraCycleButton } from '@internal/react-components';\nimport { _formatString } from '@internal/acs-ui-common';\nimport { useParticipantChangedAnnouncement } from '../utils/MediaGalleryUtils';\n/* @conditional-compile-remove(pinned-participants) */\nimport { RemoteVideoTileMenuOptions } from '../CallComposite';\n/* @conditional-compile-remove(click-to-call) */\nimport { LocalVideoTileOptions } from '../CallComposite';\nconst VideoGalleryStyles = {\n root: {\n height: '100%',\n minHeight: '10rem',\n // space affordance to ensure media gallery is never collapsed\n minWidth: '6rem'\n }\n};\nconst localVideoViewOptions = ({\n scalingMode: 'Crop',\n isMirrored: true\n} as VideoStreamOptions);\nconst remoteVideoViewOptions = ({\n scalingMode: 'Crop'\n} as VideoStreamOptions);\n\n/**\n * @private\n */\nexport interface MediaGalleryProps {\n isVideoStreamOn?: boolean;\n isMicrophoneChecked?: boolean;\n onStartLocalVideo: () => Promise<void>;\n onRenderAvatar?: OnRenderAvatarCallback;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n isMobile?: boolean;\n drawerMenuHostId?: string;\n /* @conditional-compile-remove(pinned-participants) */\n remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;\n /* @conditional-compile-remove(click-to-call) */\n localVideoTileOptions?: boolean | LocalVideoTileOptions;\n}\n\n/**\n * @private\n */\nexport const MediaGallery = (props: MediaGalleryProps): JSX.Element => {\n const videoGalleryProps = usePropsFor(VideoGallery);\n const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n const announcerString = useParticipantChangedAnnouncement();\n\n /* @conditional-compile-remove(vertical-gallery) */\n const containerRef = useRef<HTMLDivElement>(null);\n /* @conditional-compile-remove(vertical-gallery) */\n const containerWidth = _useContainerWidth(containerRef);\n /* @conditional-compile-remove(vertical-gallery) */\n const containerHeight = _useContainerHeight(containerRef);\n const layoutBasedOnTilePosition: VideoGalleryLayout = localVideoTileLayoutTrampoline( /* @conditional-compile-remove(click-to-call) */(props.localVideoTileOptions as LocalVideoTileOptions)?.position);\n const cameraSwitcherProps = useMemo(() => {\n return {\n ...cameraSwitcherCallback,\n ...cameraSwitcherCameras\n };\n }, [cameraSwitcherCallback, cameraSwitcherCameras]);\n const onRenderAvatar = useCallback((userId?: string, options?: CustomAvatarOptions) => {\n return <Stack className={mergeStyles({\n position: 'absolute',\n height: '100%',\n width: '100%'\n })}>\n <Stack styles={{\n root: {\n margin: 'auto',\n maxHeight: '100%'\n }\n }}>\n {options?.coinSize && <AvatarPersona userId={userId} {...options} dataProvider={props.onFetchAvatarPersonaData} />}\n </Stack>\n </Stack>;\n }, [props.onFetchAvatarPersonaData]);\n useLocalVideoStartTrigger(!!props.isVideoStreamOn);\n\n /* @conditional-compile-remove(pinned-participants) */\n const remoteVideoTileMenuOptions: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps = useMemo(() => {\n return props.remoteVideoTileMenuOptions?.isHidden ? false : props.isMobile ? {\n kind: 'drawer',\n hostId: props.drawerMenuHostId\n } : {\n kind: 'contextual'\n };\n }, [props.remoteVideoTileMenuOptions?.isHidden, props.isMobile, props.drawerMenuHostId]);\n\n /* @conditional-compile-remove(vertical-gallery) */\n const overflowGalleryPosition = useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9 ? 'VerticalRight' : 'HorizontalBottom', [containerWidth, containerHeight]);\n const VideoGalleryMemoized = useMemo(() => {\n return <VideoGallery {...videoGalleryProps} localVideoViewOptions={localVideoViewOptions} remoteVideoViewOptions={remoteVideoViewOptions} styles={VideoGalleryStyles} layout={layoutBasedOnTilePosition} showCameraSwitcherInLocalPreview={props.isMobile} localVideoCameraCycleButtonProps={cameraSwitcherProps} onRenderAvatar={props.onRenderAvatar ?? onRenderAvatar}\n /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions={remoteVideoTileMenuOptions}\n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition={overflowGalleryPosition}\n /* @conditional-compile-remove(click-to-call) */ localVideoTileSize={props.localVideoTileOptions === false ? 'hidden' : props.isMobile ? 'followDeviceOrientation' : '16:9'} />;\n }, [videoGalleryProps, props.isMobile, props.onRenderAvatar, onRenderAvatar, cameraSwitcherProps, /* @conditional-compile-remove(pinned-participants) */remoteVideoTileMenuOptions, /* @conditional-compile-remove(vertical-gallery) */overflowGalleryPosition, /* @conditional-compile-remove(click-to-call) */props.localVideoTileOptions, layoutBasedOnTilePosition]);\n return <div /* @conditional-compile-remove(vertical-gallery) */ ref={containerRef} style={mediaGalleryContainerStyles}>\n <Announcer announcementString={announcerString} ariaLive={'polite'} />\n {VideoGalleryMemoized}\n </div>;\n};\n\n/**\n * @private\n *\n * `shouldTransition` is an extra predicate that controls whether this hooks actually transitions the call.\n * The rule of hooks disallows calling the hook conditionally, so this predicate can be used to make the decision.\n */\nexport const useLocalVideoStartTrigger = (isLocalVideoAvailable: boolean, shouldTransition?: boolean): void => {\n // Once a call is joined, we need to transition the local preview camera setting into the call.\n // This logic is needed on any screen that we might join a call from:\n // - The Media gallery\n // - The lobby page\n // - The networkReconnect interstitial that may show at the start of a call.\n //\n // @TODO: Can we simply have the callHandlers handle this transition logic.\n const [isButtonStatusSynced, setIsButtonStatusSynced] = useState(false);\n const isPreviewCameraOn = useSelector(getIsPreviewCameraOn);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n useEffect(() => {\n if (shouldTransition !== false) {\n if (isPreviewCameraOn && !isLocalVideoAvailable && !isButtonStatusSynced) {\n mediaGalleryHandlers.onStartLocalVideo();\n }\n setIsButtonStatusSynced(true);\n }\n }, [shouldTransition, isButtonStatusSynced, isPreviewCameraOn, isLocalVideoAvailable, mediaGalleryHandlers]);\n};\nconst mediaGalleryContainerStyles: CSSProperties = {\n width: '100%',\n height: '100%'\n};\nconst localVideoTileLayoutTrampoline = (localTileOptions?: string): VideoGalleryLayout => {\n /* @conditional-compile-remove(click-to-call) */\n return localTileOptions === 'grid' ? 'default' : 'floatingLocalVideo';\n return 'floatingLocalVideo';\n};\"../../../../../react-components/src\"\"../../../../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"MediaGallery.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/components/MediaGallery.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { CSSProperties, useCallback, useEffect, useMemo, useState } from 'react';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { useRef } from 'react';\nimport { VideoGallery, VideoStreamOptions, OnRenderAvatarCallback, CustomAvatarOptions, Announcer, VideoGalleryLayout } from '@internal/react-components';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { _useContainerWidth, _useContainerHeight } from '@internal/react-components';\n/* @conditional-compile-remove(pinned-participants) */\nimport { VideoTileContextualMenuProps, VideoTileDrawerMenuProps } from '@internal/react-components';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { getIsPreviewCameraOn } from '../selectors/baseSelectors';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { useSelector } from '../hooks/useSelector';\nimport { localVideoCameraCycleButtonSelector } from '../selectors/LocalVideoTileSelector';\nimport { LocalVideoCameraCycleButton } from '@internal/react-components';\nimport { _formatString } from '@internal/acs-ui-common';\nimport { useParticipantChangedAnnouncement } from '../utils/MediaGalleryUtils';\n/* @conditional-compile-remove(pinned-participants) */\nimport { RemoteVideoTileMenuOptions } from '../CallComposite';\n/* @conditional-compile-remove(click-to-call) */\nimport { LocalVideoTileOptions } from '../CallComposite';\nconst VideoGalleryStyles = {\n root: {\n height: '100%',\n minHeight: '10rem',\n // space affordance to ensure media gallery is never collapsed\n minWidth: '6rem'\n }\n};\nconst localVideoViewOptions = ({\n scalingMode: 'Crop',\n isMirrored: true\n} as VideoStreamOptions);\nconst remoteVideoViewOptions = ({\n scalingMode: 'Crop'\n} as VideoStreamOptions);\n\n/**\n * @private\n */\nexport interface MediaGalleryProps {\n isVideoStreamOn?: boolean;\n isMicrophoneChecked?: boolean;\n onStartLocalVideo: () => Promise<void>;\n onRenderAvatar?: OnRenderAvatarCallback;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n isMobile?: boolean;\n drawerMenuHostId?: string;\n /* @conditional-compile-remove(pinned-participants) */\n remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;\n /* @conditional-compile-remove(click-to-call) */\n localVideoTileOptions?: boolean | LocalVideoTileOptions;\n}\n\n/**\n * @private\n */\nexport const MediaGallery = (props: MediaGalleryProps): JSX.Element => {\n const videoGalleryProps = usePropsFor(VideoGallery);\n const cameraSwitcherCameras = useSelector(localVideoCameraCycleButtonSelector);\n const cameraSwitcherCallback = useHandlers(LocalVideoCameraCycleButton);\n const announcerString = useParticipantChangedAnnouncement();\n\n /* @conditional-compile-remove(vertical-gallery) */\n const containerRef = useRef<HTMLDivElement>(null);\n /* @conditional-compile-remove(vertical-gallery) */\n const containerWidth = _useContainerWidth(containerRef);\n /* @conditional-compile-remove(vertical-gallery) */\n const containerHeight = _useContainerHeight(containerRef);\n /* @conditional-compile-remove(click-to-call) */\n const containerAspectRatio = containerWidth && containerHeight ? containerWidth / containerHeight : 0;\n const layoutBasedOnTilePosition: VideoGalleryLayout = localVideoTileLayoutTrampoline( /* @conditional-compile-remove(click-to-call) */(props.localVideoTileOptions as LocalVideoTileOptions)?.position);\n const cameraSwitcherProps = useMemo(() => {\n return {\n ...cameraSwitcherCallback,\n ...cameraSwitcherCameras\n };\n }, [cameraSwitcherCallback, cameraSwitcherCameras]);\n const onRenderAvatar = useCallback((userId?: string, options?: CustomAvatarOptions) => {\n return <Stack className={mergeStyles({\n position: 'absolute',\n height: '100%',\n width: '100%'\n })}>\n <Stack styles={{\n root: {\n margin: 'auto',\n maxHeight: '100%'\n }\n }}>\n {options?.coinSize && <AvatarPersona userId={userId} {...options} dataProvider={props.onFetchAvatarPersonaData} />}\n </Stack>\n </Stack>;\n }, [props.onFetchAvatarPersonaData]);\n useLocalVideoStartTrigger(!!props.isVideoStreamOn);\n\n /* @conditional-compile-remove(pinned-participants) */\n const remoteVideoTileMenuOptions: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps = useMemo(() => {\n return props.remoteVideoTileMenuOptions?.isHidden ? false : props.isMobile ? {\n kind: 'drawer',\n hostId: props.drawerMenuHostId\n } : {\n kind: 'contextual'\n };\n }, [props.remoteVideoTileMenuOptions?.isHidden, props.isMobile, props.drawerMenuHostId]);\n\n /* @conditional-compile-remove(vertical-gallery) */\n const overflowGalleryPosition = useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9 ? 'VerticalRight' : 'HorizontalBottom', [containerWidth, containerHeight]);\n const VideoGalleryMemoized = useMemo(() => {\n return <VideoGallery {...videoGalleryProps} localVideoViewOptions={localVideoViewOptions} remoteVideoViewOptions={remoteVideoViewOptions} styles={VideoGalleryStyles} layout={layoutBasedOnTilePosition} showCameraSwitcherInLocalPreview={props.isMobile} localVideoCameraCycleButtonProps={cameraSwitcherProps} onRenderAvatar={props.onRenderAvatar ?? onRenderAvatar}\n /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions={remoteVideoTileMenuOptions}\n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition={overflowGalleryPosition}\n /* @conditional-compile-remove(click-to-call) */ localVideoTileSize={props.localVideoTileOptions === false ? 'hidden' : props.isMobile && containerAspectRatio < 1 ? '9:16' : '16:9'} />;\n }, [videoGalleryProps, props.isMobile, props.onRenderAvatar, onRenderAvatar, cameraSwitcherProps, /* @conditional-compile-remove(pinned-participants) */remoteVideoTileMenuOptions, /* @conditional-compile-remove(vertical-gallery) */overflowGalleryPosition, /* @conditional-compile-remove(click-to-call) */props.localVideoTileOptions, layoutBasedOnTilePosition, /* @conditional-compile-remove(click-to-call) */\n containerAspectRatio]);\n return <div /* @conditional-compile-remove(vertical-gallery) */ ref={containerRef} style={mediaGalleryContainerStyles}>\n <Announcer announcementString={announcerString} ariaLive={'polite'} />\n {VideoGalleryMemoized}\n </div>;\n};\n\n/**\n * @private\n *\n * `shouldTransition` is an extra predicate that controls whether this hooks actually transitions the call.\n * The rule of hooks disallows calling the hook conditionally, so this predicate can be used to make the decision.\n */\nexport const useLocalVideoStartTrigger = (isLocalVideoAvailable: boolean, shouldTransition?: boolean): void => {\n // Once a call is joined, we need to transition the local preview camera setting into the call.\n // This logic is needed on any screen that we might join a call from:\n // - The Media gallery\n // - The lobby page\n // - The networkReconnect interstitial that may show at the start of a call.\n //\n // @TODO: Can we simply have the callHandlers handle this transition logic.\n const [isButtonStatusSynced, setIsButtonStatusSynced] = useState(false);\n const isPreviewCameraOn = useSelector(getIsPreviewCameraOn);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n useEffect(() => {\n if (shouldTransition !== false) {\n if (isPreviewCameraOn && !isLocalVideoAvailable && !isButtonStatusSynced) {\n mediaGalleryHandlers.onStartLocalVideo();\n }\n setIsButtonStatusSynced(true);\n }\n }, [shouldTransition, isButtonStatusSynced, isPreviewCameraOn, isLocalVideoAvailable, mediaGalleryHandlers]);\n};\nconst mediaGalleryContainerStyles: CSSProperties = {\n width: '100%',\n height: '100%'\n};\nconst localVideoTileLayoutTrampoline = (localTileOptions?: string): VideoGalleryLayout => {\n /* @conditional-compile-remove(click-to-call) */\n return localTileOptions === 'grid' ? 'default' : 'floatingLocalVideo';\n return 'floatingLocalVideo';\n};\"../../../../../react-components/src\"\"../../../../../acs-ui-common/src\""]}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * @private
4
3
  */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { VideoGalleryStream } from "../../../../../react-components/src";
3
2
  /**
4
3
  * @private
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { SidePaneRenderer } from './SidePaneProvider';
3
2
  /** @private */
4
3
  export interface SidePaneProps {
@@ -1,10 +1,11 @@
1
1
  import { SidePaneRenderer } from './SidePaneProvider';
2
+ import { ActiveErrorMessage } from "../../../../../../react-components/src";
2
3
  /** @private */
3
4
  export declare const VIDEO_EFFECTS_SIDE_PANE_ID = "videoeffects";
4
5
  /** @private */
5
6
  export declare const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;
6
7
  /** @private */
7
- export declare const useVideoEffectsPane: (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean) => {
8
+ export declare const useVideoEffectsPane: (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean, latestErrors: ActiveErrorMessage[], onDismissError: (error: ActiveErrorMessage) => void) => {
8
9
  openVideoEffectsPane: () => void;
9
10
  closeVideoEffectsPane: () => void;
10
11
  toggleVideoEffectsPane: () => void;
@@ -1,20 +1,17 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import React, { useCallback, useEffect, useMemo } from 'react';
4
4
  import { useIsParticularSidePaneOpen } from './SidePaneProvider';
5
5
  import { SidePaneHeader } from '../../../common/SidePaneHeader';
6
6
  /* @conditional-compile-remove(video-background-effects) */
7
7
  import { useLocale } from '../../../localization';
8
8
  import { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane';
9
- import { dismissVideoEffectsError } from '../../utils';
10
- import { videoBackgroundErrorsSelector } from '../../selectors/videoBackgroundErrorsSelector';
11
- import { useSelector } from '../../hooks/useSelector';
12
9
  /** @private */
13
10
  export const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';
14
11
  /** @private */
15
12
  export const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;
16
13
  /** @private */
17
- export const useVideoEffectsPane = (updateSidePaneRenderer, mobileView) => {
14
+ export const useVideoEffectsPane = (updateSidePaneRenderer, mobileView, latestErrors, onDismissError) => {
18
15
  const closePane = useCallback(() => {
19
16
  updateSidePaneRenderer(undefined);
20
17
  }, [updateSidePaneRenderer]);
@@ -26,21 +23,18 @@ export const useVideoEffectsPane = (updateSidePaneRenderer, mobileView) => {
26
23
  /* @conditional-compile-remove(video-background-effects) */ headingText: locale.strings.call.videoEffectsPaneTitle,
27
24
  /* @conditional-compile-remove(video-background-effects) */ dismissSidePaneButtonAriaLabel: (_b = (_a = locale.strings.call.dismissSidePaneButtonLabel) !== null && _a !== void 0 ? _a : locale.strings.callWithChat.dismissSidePaneButtonLabel) !== null && _b !== void 0 ? _b : 'Close', mobileView: mobileView });
28
25
  }, [closePane, /* @conditional-compile-remove(video-background-effects) */ locale.strings, mobileView]);
29
- const [dismissedVideoEffectsError, setDismissedVideoEffectsError] = useState();
30
- const [activeVideoEffect, setActiveVideoEffect] = useState();
31
- const onDismissVideoEffectError = useCallback((error) => {
32
- setDismissedVideoEffectsError(dismissVideoEffectsError(error));
33
- }, []);
34
- const latestVideoEffectError = useSelector(videoBackgroundErrorsSelector);
35
- const activeVideoEffectError = useCallback(() => {
36
- if (latestVideoEffectError && (!dismissedVideoEffectsError || latestVideoEffectError.timestamp > dismissedVideoEffectsError.dismissedAt) && (!activeVideoEffect || latestVideoEffectError.timestamp > activeVideoEffect.timestamp)) {
37
- return latestVideoEffectError;
38
- }
39
- return undefined;
40
- }, [dismissedVideoEffectsError, latestVideoEffectError, activeVideoEffect]);
26
+ /* @conditional-compile-remove(video-background-effects) */
27
+ const latestVideoEffectError = latestErrors.find(error => error.type === 'unableToStartVideoEffect');
41
28
  const onRenderContent = useCallback(() => {
42
- return React.createElement(VideoEffectsPaneContent, { onDismissError: onDismissVideoEffectError, activeVideoEffectError: activeVideoEffectError, setActiveVideoEffect: setActiveVideoEffect });
43
- }, [onDismissVideoEffectError, activeVideoEffectError]);
29
+ return React.createElement(VideoEffectsPaneContent, { onDismissError: onDismissError,
30
+ /* @conditional-compile-remove(video-background-effects) */ activeVideoEffectError: latestVideoEffectError, activeVideoEffectChange: () => {
31
+ // Clear any existing video effects error when the user clicks on a new video effect
32
+ /* @conditional-compile-remove(video-background-effects) */
33
+ latestVideoEffectError && (onDismissError === null || onDismissError === void 0 ? void 0 : onDismissError(latestVideoEffectError));
34
+ } });
35
+ }, [
36
+ latestVideoEffectError, onDismissError
37
+ ]);
44
38
  const sidePaneRenderer = useMemo(() => ({
45
39
  headerRenderer: onRenderHeader,
46
40
  contentRenderer: onRenderContent,
@@ -1 +1 @@
1
- {"version":3,"file":"useVideoEffectsPane.js","sourceRoot":"","sources":["../../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useLocale } from '../../../localization';\nimport { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane';\nimport { AdapterError } from '../../../common/adapters';\nimport { DismissedError, dismissVideoEffectsError } from '../../utils';\nimport { videoBackgroundErrorsSelector } from '../../selectors/videoBackgroundErrorsSelector';\nimport { useSelector } from '../../hooks/useSelector';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;\n\n/** @private */\nexport const useVideoEffectsPane = (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean): {\n openVideoEffectsPane: () => void;\n closeVideoEffectsPane: () => void;\n toggleVideoEffectsPane: () => void;\n isVideoEffectsPaneOpen: boolean;\n} => {\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n }, [updateSidePaneRenderer]);\n\n /* @conditional-compile-remove(video-background-effects) */\n const locale = useLocale();\n const onRenderHeader = useCallback(() => {\n return <SidePaneHeader onClose={closePane}\n /* @conditional-compile-remove(video-background-effects) */ headingText={locale.strings.call.videoEffectsPaneTitle}\n /* @conditional-compile-remove(video-background-effects) */ dismissSidePaneButtonAriaLabel={locale.strings.call.dismissSidePaneButtonLabel ?? locale.strings.callWithChat.dismissSidePaneButtonLabel ?? 'Close'} mobileView={mobileView} />;\n }, [closePane, /* @conditional-compile-remove(video-background-effects) */locale.strings, mobileView]);\n const [dismissedVideoEffectsError, setDismissedVideoEffectsError] = useState<DismissedError>();\n const [activeVideoEffect, setActiveVideoEffect] = useState<ActiveVideoEffect>();\n const onDismissVideoEffectError = useCallback((error: AdapterError) => {\n setDismissedVideoEffectsError(dismissVideoEffectsError(error));\n }, []);\n const latestVideoEffectError = useSelector(videoBackgroundErrorsSelector);\n const activeVideoEffectError = useCallback(() => {\n if (latestVideoEffectError && (!dismissedVideoEffectsError || latestVideoEffectError.timestamp > dismissedVideoEffectsError.dismissedAt) && (!activeVideoEffect || latestVideoEffectError.timestamp > activeVideoEffect.timestamp)) {\n return latestVideoEffectError;\n }\n return undefined;\n }, [dismissedVideoEffectsError, latestVideoEffectError, activeVideoEffect]);\n const onRenderContent = useCallback((): JSX.Element => {\n return <VideoEffectsPaneContent onDismissError={onDismissVideoEffectError} activeVideoEffectError={activeVideoEffectError} setActiveVideoEffect={setActiveVideoEffect} />;\n }, [onDismissVideoEffectError, activeVideoEffectError]);\n const sidePaneRenderer: SidePaneRenderer = useMemo(() => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: VIDEO_EFFECTS_SIDE_PANE_ID\n }), [onRenderContent, onRenderHeader]);\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n const isOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n const togglePane = useCallback(() => {\n if (isOpen) {\n closePane();\n } else {\n openPane();\n }\n }, [closePane, isOpen, openPane]);\n return {\n openVideoEffectsPane: openPane,\n closeVideoEffectsPane: closePane,\n toggleVideoEffectsPane: togglePane,\n isVideoEffectsPaneOpen: isOpen\n };\n};\n\n/**\n * Active video effect with timestamp.\n *\n * @private\n */\nexport interface ActiveVideoEffect {\n /**\n * Type of video effect that is active.\n */\n type: 'blur' | 'replacement';\n /**\n * The latest timestamp when this effect was activated.\n *\n */\n timestamp: Date;\n}"]}
1
+ {"version":3,"file":"useVideoEffectsPane.js","sourceRoot":"","sources":["../../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/components/SidePane/useVideoEffectsPane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useLocale } from '../../../localization';\nimport { VideoEffectsPaneContent } from '../../../common/VideoEffectsPane';\nimport { ActiveErrorMessage } from '@internal/react-components';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_ID = 'videoeffects';\n\n/** @private */\nexport const VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM = 17.5;\n\n/** @private */\nexport const useVideoEffectsPane = (updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void, mobileView: boolean, latestErrors: ActiveErrorMessage[], onDismissError: (error: ActiveErrorMessage) => void): {\n openVideoEffectsPane: () => void;\n closeVideoEffectsPane: () => void;\n toggleVideoEffectsPane: () => void;\n isVideoEffectsPaneOpen: boolean;\n} => {\n const closePane = useCallback(() => {\n updateSidePaneRenderer(undefined);\n }, [updateSidePaneRenderer]);\n\n /* @conditional-compile-remove(video-background-effects) */\n const locale = useLocale();\n const onRenderHeader = useCallback(() => {\n return <SidePaneHeader onClose={closePane}\n /* @conditional-compile-remove(video-background-effects) */ headingText={locale.strings.call.videoEffectsPaneTitle}\n /* @conditional-compile-remove(video-background-effects) */ dismissSidePaneButtonAriaLabel={locale.strings.call.dismissSidePaneButtonLabel ?? locale.strings.callWithChat.dismissSidePaneButtonLabel ?? 'Close'} mobileView={mobileView} />;\n }, [closePane, /* @conditional-compile-remove(video-background-effects) */locale.strings, mobileView]);\n\n /* @conditional-compile-remove(video-background-effects) */\n const latestVideoEffectError = latestErrors.find(error => error.type === 'unableToStartVideoEffect');\n const onRenderContent = useCallback((): JSX.Element => {\n return <VideoEffectsPaneContent onDismissError={onDismissError}\n /* @conditional-compile-remove(video-background-effects) */ activeVideoEffectError={latestVideoEffectError} activeVideoEffectChange={() => {\n // Clear any existing video effects error when the user clicks on a new video effect\n /* @conditional-compile-remove(video-background-effects) */\n latestVideoEffectError && onDismissError?.(latestVideoEffectError);\n }} />;\n }, [/* @conditional-compile-remove(video-background-effects) */\n latestVideoEffectError, onDismissError]);\n const sidePaneRenderer: SidePaneRenderer = useMemo(() => ({\n headerRenderer: onRenderHeader,\n contentRenderer: onRenderContent,\n id: VIDEO_EFFECTS_SIDE_PANE_ID\n }), [onRenderContent, onRenderHeader]);\n const openPane = useCallback(() => {\n updateSidePaneRenderer(sidePaneRenderer);\n }, [sidePaneRenderer, updateSidePaneRenderer]);\n const isOpen = useIsParticularSidePaneOpen(VIDEO_EFFECTS_SIDE_PANE_ID);\n\n // Update pane renderer if it is open and the openPane dep changes\n useEffect(() => {\n if (isOpen) {\n openPane();\n }\n }, [isOpen, openPane]);\n const togglePane = useCallback(() => {\n if (isOpen) {\n closePane();\n } else {\n openPane();\n }\n }, [closePane, isOpen, openPane]);\n return {\n openVideoEffectsPane: openPane,\n closeVideoEffectsPane: closePane,\n toggleVideoEffectsPane: togglePane,\n isVideoEffectsPaneOpen: isOpen\n };\n};\n\n/**\n * Active video effect with timestamp.\n *\n * @private\n */\nexport interface ActiveVideoEffect {\n /**\n * Type of video effect that is active.\n */\n type: 'blur' | 'replacement';\n /**\n * The latest timestamp when this effect was activated.\n *\n */\n timestamp: Date;\n}\"../../../../../../react-components/src\""]}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IButtonProps } from '@fluentui/react';
3
2
  /**
4
3
  * @private
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { CustomCallControlButtonCallback, CustomCallControlButtonPlacement } from '../../../common/ControlBar/CustomButton';
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  import { CallControlOptions } from '../../types/CallControlOptions';
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /** @private */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /** @private */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles, ParticipantMenuItemsCallback } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /** @private */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonProps } from "../../../../../../react-components/src";
3
2
  /**
4
3
  * @private
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { ControlBarButtonStyles } from "../../../../../../react-components/src";
3
2
  import { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';
4
3
  /** @private */
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { Common } from "../../../../../acs-ui-common/src";
3
2
  import { CallingHandlers, GetCallingSelector } from "../../../../../calling-component-bindings/src";
4
3
  declare type Selector = (state: any, props: any) => any;
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { DiagnosticQuality } from '@azure/communication-calling';
3
- import { OnRenderAvatarCallback, ParticipantMenuItemsCallback } from "../../../../../react-components/src";
2
+ import { ActiveErrorMessage, OnRenderAvatarCallback, ParticipantMenuItemsCallback } from "../../../../../react-components/src";
4
3
  import { AvatarPersonaDataCallback } from '../../common/AvatarPersona';
5
4
  import { CallCompositeOptions } from '../CallComposite';
6
5
  import { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';
@@ -18,6 +17,8 @@ export interface CallPageProps {
18
17
  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;
19
18
  mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;
20
19
  options?: CallCompositeOptions;
20
+ latestErrors: ActiveErrorMessage[];
21
+ onDismissError: (error: ActiveErrorMessage) => void;
21
22
  }
22
23
  /**
23
24
  * @private
@@ -36,9 +36,7 @@ export const CallPage = (props) => {
36
36
  // Reduce the controls shown when mobile view is enabled.
37
37
  const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
38
38
  const drawerMenuHostId = useId('drawerMenuHost');
39
- return React.createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }),
40
- // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
41
- errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && Object.assign(Object.assign({}, errorBarProps), { ignorePremountErrors: true }), mutedNotificationProps: mutedNotificationProps, callControlProps: {
39
+ return React.createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps, mutedNotificationProps: mutedNotificationProps, callControlProps: {
42
40
  callInvitationURL: callInvitationURL,
43
41
  onFetchParticipantMenuItems: onFetchParticipantMenuItems,
44
42
  options: callControlOptions,
@@ -46,7 +44,7 @@ export const CallPage = (props) => {
46
44
  },
47
45
  /* @conditional-compile-remove(one-to-n-calling) */ onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? React.createElement(MediaGallery, Object.assign({ isMobile: mobileView }, mediaGalleryProps, mediaGalleryHandlers, { onRenderAvatar: onRenderAvatar, onFetchAvatarPersonaData: onFetchAvatarPersonaData,
48
46
  /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions: options === null || options === void 0 ? void 0 : options.remoteVideoTileMenu, drawerMenuHostId: drawerMenuHostId,
49
- /* @conditional-compile-remove(click-to-call) */ localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile })) : React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)) : React.createElement(React.Fragment, null), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, dataUiId: 'call-page' });
47
+ /* @conditional-compile-remove(click-to-call) */ localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile })) : React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)) : React.createElement(React.Fragment, null), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError });
50
48
  };
51
49
  /**
52
50
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ErrorBar, OnRenderAvatarCallback, ParticipantMenuItemsCallback } from '@internal/react-components';\nimport React from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onRenderAvatar?: OnRenderAvatarCallback;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onRenderAvatar,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const {\n callStatus\n } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const strings = useLocale().strings.call;\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n const drawerMenuHostId = useId('drawerMenuHost');\n return <CallArrangement id={drawerMenuHostId} complianceBannerProps={{\n ...complianceBannerProps,\n strings\n }}\n // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.\n errorBarProps={options?.errorBar !== false && {\n ...errorBarProps,\n ignorePremountErrors: true\n }} mutedNotificationProps={mutedNotificationProps} callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n /* @conditional-compile-remove(one-to-n-calling) */ onFetchAvatarPersonaData={onFetchAvatarPersonaData} mobileView={mobileView} modalLayerHostId={props.modalLayerHostId} onRenderGalleryContent={() => _isInCall(callStatus) ? isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? <MediaGallery isMobile={mobileView} {...mediaGalleryProps} {...mediaGalleryHandlers} onRenderAvatar={onRenderAvatar} onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions={options?.remoteVideoTileMenu} drawerMenuHostId={drawerMenuHostId}\n /* @conditional-compile-remove(click-to-call) */ localVideoTileOptions={options?.localVideoTile} /> : <NetworkReconnectTile {...networkReconnectTileProps} /> : <></>} updateSidePaneRenderer={props.updateSidePaneRenderer} mobileChatTabHeader={props.mobileChatTabHeader} dataUiId={'call-page'} />;\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\"../../../../../calling-component-bindings/src\"\"../../../../../react-components/src\""]}
1
+ {"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ActiveErrorMessage, ErrorBar, OnRenderAvatarCallback, ParticipantMenuItemsCallback } from '@internal/react-components';\nimport React from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onRenderAvatar?: OnRenderAvatarCallback;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n latestErrors: ActiveErrorMessage[];\n onDismissError: (error: ActiveErrorMessage) => void;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onRenderAvatar,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const {\n callStatus\n } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const strings = useLocale().strings.call;\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n const drawerMenuHostId = useId('drawerMenuHost');\n return <CallArrangement id={drawerMenuHostId} complianceBannerProps={{\n ...complianceBannerProps,\n strings\n }} errorBarProps={options?.errorBar !== false && errorBarProps} mutedNotificationProps={mutedNotificationProps} callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n /* @conditional-compile-remove(one-to-n-calling) */ onFetchAvatarPersonaData={onFetchAvatarPersonaData} mobileView={mobileView} modalLayerHostId={props.modalLayerHostId} onRenderGalleryContent={() => _isInCall(callStatus) ? isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? <MediaGallery isMobile={mobileView} {...mediaGalleryProps} {...mediaGalleryHandlers} onRenderAvatar={onRenderAvatar} onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions={options?.remoteVideoTileMenu} drawerMenuHostId={drawerMenuHostId}\n /* @conditional-compile-remove(click-to-call) */ localVideoTileOptions={options?.localVideoTile} /> : <NetworkReconnectTile {...networkReconnectTileProps} /> : <></>} updateSidePaneRenderer={props.updateSidePaneRenderer} mobileChatTabHeader={props.mobileChatTabHeader} dataUiId={'call-page'} latestErrors={props.latestErrors} onDismissError={props.onDismissError} />;\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\"../../../../../calling-component-bindings/src\"\"../../../../../react-components/src\""]}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { ActiveErrorMessage } from "../../../../../react-components/src";
2
2
  import { DeviceCheckOptions } from '../CallComposite';
3
3
  import { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';
4
4
  /**
@@ -8,6 +8,8 @@ export interface ConfigurationPageProps {
8
8
  mobileView: boolean;
9
9
  startCallHandler(): void;
10
10
  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;
11
+ latestErrors: ActiveErrorMessage[];
12
+ onDismissError: (error: ActiveErrorMessage) => void;
11
13
  modalLayerHostId: string;
12
14
  deviceChecks?: DeviceCheckOptions;
13
15
  onPermissionsTroubleshootingClick?: (permissionsState: {
@@ -61,7 +61,7 @@ export const ConfigurationPage = (props) => {
61
61
  const [audioState, setAudioState] = useState(undefined);
62
62
  /* @conditional-compile-remove(call-readiness) */
63
63
  getDevicePermissionState(setVideoState, setAudioState);
64
- let errorBarProps = usePropsFor(ErrorBar);
64
+ const errorBarProps = usePropsFor(ErrorBar);
65
65
  const adapter = useAdapter();
66
66
  const deviceState = adapter.getState().devices;
67
67
  /* @conditional-compile-remove(unsupported-browser) */
@@ -71,14 +71,15 @@ export const ConfigurationPage = (props) => {
71
71
  const rolePermissions = _usePermissions();
72
72
  /* @conditional-compile-remove(video-background-effects) */
73
73
  const isCameraOn = useSelector(localVideoSelector).isAvailable;
74
+ let filteredLatestErrors = props.latestErrors;
74
75
  /* @conditional-compile-remove(rooms) */
75
76
  // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK
76
77
  if (!rolePermissions.cameraButton) {
77
- errorBarProps = Object.assign(Object.assign({}, errorBarProps), { activeErrorMessages: errorBarProps.activeErrorMessages.filter(e => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari') });
78
+ filteredLatestErrors = filteredLatestErrors.filter(e => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari');
78
79
  }
79
80
  /* @conditional-compile-remove(video-background-effects) */
80
81
  if ((useIsParticularSidePaneOpen('videoeffects') || !isCameraOn) && errorBarProps) {
81
- errorBarProps = Object.assign(Object.assign({}, errorBarProps), { activeErrorMessages: errorBarProps.activeErrorMessages.filter(e => e.type !== 'unableToStartVideoEffect') });
82
+ filteredLatestErrors = filteredLatestErrors.filter(e => e.type !== 'unableToStartVideoEffect');
82
83
  }
83
84
  /* @conditional-compile-remove(rooms) */
84
85
  if (!rolePermissions.microphoneButton) {
@@ -123,7 +124,7 @@ export const ConfigurationPage = (props) => {
123
124
  /* @conditional-compile-remove(call-readiness) */
124
125
  const forceShowingCheckPermissions = !minimumFallbackTimerElapsed;
125
126
  /* @conditional-compile-remove(video-background-effects) */
126
- const { toggleVideoEffectsPane, closeVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(props.updateSidePaneRenderer, mobileView);
127
+ const { toggleVideoEffectsPane, closeVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(props.updateSidePaneRenderer, mobileView, props.latestErrors, props.onDismissError);
127
128
  const startCall = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
128
129
  /* @conditional-compile-remove(video-background-effects) */
129
130
  closeVideoEffectsPane();
@@ -132,6 +133,7 @@ export const ConfigurationPage = (props) => {
132
133
  const panelLayerProps = useMemo(() => ({
133
134
  hostId: modalLayerHostId
134
135
  }), [modalLayerHostId]);
136
+ const filteredErrorBarProps = useMemo(() => (Object.assign(Object.assign({}, errorBarProps), { activeErrorMessages: filteredLatestErrors })), [errorBarProps, filteredLatestErrors]);
135
137
  return React.createElement(Stack, { className: mobileView ? configurationContainerStyleMobile : configurationContainerStyleDesktop },
136
138
  React.createElement(Stack, { styles: bannerNotificationStyles },
137
139
  React.createElement(ConfigurationPageErrorBar
@@ -143,7 +145,7 @@ export const ConfigurationPage = (props) => {
143
145
  showTroubleShootingErrorBar: !cameraPermissionGranted || !microphonePermissionGranted || networkErrors.length > 0,
144
146
  /* @conditional-compile-remove(call-readiness) */ permissionsState: permissionsState,
145
147
  /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick: onNetworkingTroubleShootingClick,
146
- /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, errorBarProps: errorBarProps })),
148
+ /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, errorBarProps: filteredErrorBarProps, onDismissError: props.onDismissError })),
147
149
  // show the following screen if permission API is availible (not unsupported) and videoState, audioState is assigned values
148
150
  videoState && videoState !== 'unsupported' && audioState && audioState !== 'unsupported' && React.createElement(CallReadinessModal, { modalLayerHostId: modalLayerHostId, mobileView: mobileView,
149
151
  /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: environmentInfo, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed, setIsPermissionsModalDismissed: setIsPermissionsModalDismissed, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick }),