@azure/communication-react 1.5.1-beta.1 → 1.5.1-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 (253) hide show
  1. package/CHANGELOG.beta.md +76 -1
  2. package/CHANGELOG.json +621 -0
  3. package/dist/communication-react.d.ts +217 -7
  4. package/dist/dist-cjs/communication-react/index.js +2207 -1184
  5. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
  10. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +4 -0
  11. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +37 -1
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  13. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +22 -1
  14. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  15. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +14 -0
  16. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +44 -0
  17. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +1 -0
  19. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +21 -0
  20. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  21. package/dist/dist-esm/calling-stateful-client/src/Converter.js +1 -0
  22. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  23. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.d.ts +13 -1
  24. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js +8 -1
  25. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js.map +1 -1
  26. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.d.ts +4 -0
  27. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js +28 -0
  28. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.d.ts +29 -0
  30. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.js +54 -0
  31. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.js.map +1 -0
  32. package/dist/dist-esm/calling-stateful-client/src/Logger.d.ts +16 -29
  33. package/dist/dist-esm/calling-stateful-client/src/Logger.js +16 -29
  34. package/dist/dist-esm/calling-stateful-client/src/Logger.js.map +1 -1
  35. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +1 -1
  36. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  37. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +137 -370
  38. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
  39. package/dist/dist-esm/calling-stateful-client/src/StreamUtilsLogging.d.ts +17 -0
  40. package/dist/dist-esm/calling-stateful-client/src/StreamUtilsLogging.js +198 -0
  41. package/dist/dist-esm/calling-stateful-client/src/StreamUtilsLogging.js.map +1 -0
  42. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -0
  43. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  44. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +1 -1
  45. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  46. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js +10 -2
  47. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js.map +1 -1
  48. package/dist/dist-esm/communication-react/src/index.d.ts +2 -0
  49. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/components/CameraButton.d.ts +16 -0
  51. package/dist/dist-esm/react-components/src/components/CameraButton.js +38 -1
  52. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +30 -0
  54. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +47 -0
  55. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -0
  56. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +6 -1
  57. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  58. package/dist/dist-esm/react-components/src/components/ControlBarButton.js +1 -1
  59. package/dist/dist-esm/react-components/src/components/ControlBarButton.js.map +1 -1
  60. package/dist/dist-esm/react-components/src/components/DevicesButton.d.ts +1 -1
  61. package/dist/dist-esm/react-components/src/components/DevicesButton.js +79 -55
  62. package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
  63. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +4 -0
  64. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  65. package/dist/dist-esm/react-components/src/components/HorizontalGallery.d.ts +4 -0
  66. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js +29 -24
  67. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +2 -2
  69. package/dist/dist-esm/react-components/src/components/MessageThread.js +24 -11
  70. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  71. package/dist/dist-esm/react-components/src/components/MicrophoneButton.d.ts +12 -0
  72. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js +29 -1
  73. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js.map +1 -1
  74. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +1 -1
  75. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +1 -1
  77. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  78. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.d.ts +4 -2
  79. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js +6 -42
  80. package/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js.map +1 -1
  81. package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.d.ts +35 -0
  82. package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js +32 -0
  83. package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js.map +1 -0
  84. package/dist/dist-esm/react-components/src/components/SendBox.js +5 -2
  85. package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
  86. package/dist/dist-esm/react-components/src/components/VerticalGallery.d.ts +67 -0
  87. package/dist/dist-esm/react-components/src/components/VerticalGallery.js +113 -0
  88. package/dist/dist-esm/react-components/src/components/VerticalGallery.js.map +1 -0
  89. package/dist/dist-esm/react-components/src/components/VideoEffects/PresetVideoEffectsItems.d.ts +21 -0
  90. package/dist/dist-esm/react-components/src/components/VideoEffects/PresetVideoEffectsItems.js +65 -0
  91. package/dist/dist-esm/react-components/src/components/VideoEffects/PresetVideoEffectsItems.js.map +1 -0
  92. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.d.ts +75 -0
  93. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +44 -0
  94. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -0
  95. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.d.ts +88 -0
  96. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js +80 -0
  97. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js.map +1 -0
  98. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +1 -1
  99. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +55 -19
  100. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  101. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.d.ts +10 -3
  102. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +11 -9
  103. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -1
  104. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +1 -1
  105. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +81 -24
  106. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  107. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +11 -1
  108. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -1
  109. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +21 -0
  110. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +63 -0
  111. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -0
  112. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +2 -1
  113. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js +8 -2
  114. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js.map +1 -1
  115. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.d.ts +32 -7
  116. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js +28 -12
  117. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js.map +1 -1
  118. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +2 -2
  119. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -1
  120. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.d.ts +4 -1
  121. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js +8 -7
  122. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js.map +1 -1
  123. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.d.ts +64 -0
  124. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js +79 -0
  125. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js.map +1 -0
  126. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.d.ts +25 -0
  127. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.js +94 -0
  128. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.js.map +1 -0
  129. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +4 -4
  130. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +58 -49
  131. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  132. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +25 -0
  133. package/dist/dist-esm/react-components/src/components/VideoGallery.js +32 -4
  134. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  135. package/dist/dist-esm/react-components/src/components/VideoTile.js +9 -12
  136. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  137. package/dist/dist-esm/react-components/src/components/index.d.ts +8 -0
  138. package/dist/dist-esm/react-components/src/components/index.js +4 -0
  139. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  140. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +13 -0
  141. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +35 -0
  142. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +1 -0
  143. package/dist/dist-esm/react-components/src/components/styles/HorizontalGallery.styles.js +1 -0
  144. package/dist/dist-esm/react-components/src/components/styles/HorizontalGallery.styles.js.map +1 -1
  145. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +2 -2
  146. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +30 -2
  147. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  148. package/dist/dist-esm/react-components/src/components/styles/VerticalGallery.styles.d.ts +32 -0
  149. package/dist/dist-esm/react-components/src/components/styles/VerticalGallery.styles.js +66 -0
  150. package/dist/dist-esm/react-components/src/components/styles/VerticalGallery.styles.js.map +1 -0
  151. package/dist/dist-esm/react-components/src/components/utils/overFlowGalleriesUtils.d.ts +11 -0
  152. package/dist/dist-esm/react-components/src/components/utils/overFlowGalleriesUtils.js +22 -0
  153. package/dist/dist-esm/react-components/src/components/utils/overFlowGalleriesUtils.js.map +1 -0
  154. package/dist/dist-esm/react-components/src/components/utils/responsive.d.ts +6 -0
  155. package/dist/dist-esm/react-components/src/components/utils/responsive.js +7 -0
  156. package/dist/dist-esm/react-components/src/components/utils/responsive.js.map +1 -1
  157. package/dist/dist-esm/react-components/src/components/utils.d.ts +5 -0
  158. package/dist/dist-esm/react-components/src/components/utils.js +20 -0
  159. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  160. package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js +6 -14
  161. package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js.map +1 -1
  162. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.d.ts +10 -4
  163. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js +7 -2
  164. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js.map +1 -1
  165. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +5 -0
  166. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  167. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +14 -3
  168. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +14 -3
  169. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +14 -3
  170. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +14 -3
  171. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +14 -3
  172. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +14 -3
  173. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +14 -3
  174. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +14 -3
  175. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +14 -3
  176. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +14 -3
  177. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +14 -3
  178. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +14 -3
  179. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +14 -3
  180. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +14 -3
  181. package/dist/dist-esm/react-components/src/theming/icons.d.ts +7 -0
  182. package/dist/dist-esm/react-components/src/theming/icons.js +19 -7
  183. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  184. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  185. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +4 -0
  186. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +27 -2
  187. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  188. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +42 -0
  189. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  190. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +8 -2
  191. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  192. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -1
  193. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  194. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +21 -3
  195. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  196. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +1 -1
  197. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
  198. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.d.ts +5 -4
  199. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js +3 -1
  200. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js.map +1 -1
  201. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +0 -5
  202. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js +1 -31
  203. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js.map +1 -1
  204. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +12 -0
  205. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  206. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
  207. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  208. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -1
  209. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  210. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +1 -1
  211. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +3 -3
  212. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -1
  213. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +11 -1
  214. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  215. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts +1 -0
  216. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +12 -8
  217. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  218. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.d.ts +16 -3
  219. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js +49 -43
  220. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js.map +1 -1
  221. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +4 -0
  222. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +24 -0
  223. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  224. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +19 -0
  225. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  226. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +4 -0
  227. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +18 -0
  228. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  229. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.d.ts +2 -0
  230. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js +47 -26
  231. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js.map +1 -1
  232. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +4 -4
  233. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  234. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.d.ts +1 -1
  235. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +5 -3
  236. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
  237. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +16 -1
  238. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  239. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -1
  240. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +11 -0
  242. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +19 -0
  243. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -0
  244. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +7 -0
  245. package/dist/dist-esm/react-composites/src/composites/common/icons.js +4 -4
  246. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  247. package/dist/dist-esm/react-composites/src/composites/common/styles/Composite.styles.d.ts +7 -0
  248. package/dist/dist-esm/react-composites/src/composites/common/styles/Composite.styles.js +9 -0
  249. package/dist/dist-esm/react-composites/src/composites/common/styles/Composite.styles.js.map +1 -0
  250. package/package.json +12 -12
  251. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.d.ts +0 -14
  252. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js +0 -19
  253. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js.map +0 -1
@@ -68,4 +68,9 @@ export declare const customIconName: Partial<{
68
68
  * @private
69
69
  */
70
70
  export declare const isValidString: (string: string | undefined) => string is string;
71
+ /**
72
+ * Chunk an array into rows of a given size.
73
+ * @private
74
+ */
75
+ export declare function chunk<T>(options: T[], itemsPerRow: number): T[][];
71
76
  //# sourceMappingURL=utils.d.ts.map
@@ -122,6 +122,7 @@ export const messageBarType = (errorType) => {
122
122
  case 'callMacOsCameraAccessDenied':
123
123
  case 'callMacOsScreenShareAccessDenied':
124
124
  case 'startScreenSharingGeneric':
125
+ case 'cameraFrozenForRemoteParticipants':
125
126
  return MessageBarType.warning;
126
127
  default:
127
128
  return MessageBarType.error;
@@ -162,4 +163,23 @@ export const customIconName = {
162
163
  export const isValidString = (string) => {
163
164
  return !!string && string.length > 0;
164
165
  };
166
+ /**
167
+ * Chunk an array into rows of a given size.
168
+ * @private
169
+ */
170
+ export function chunk(options, itemsPerRow) {
171
+ const rows = [];
172
+ let currentRow = [];
173
+ for (const option of options) {
174
+ currentRow.push(option);
175
+ if (currentRow.length === itemsPerRow) {
176
+ rows.push(currentRow);
177
+ currentRow = [];
178
+ }
179
+ }
180
+ if (currentRow.length > 0) {
181
+ rows.push(currentRow);
182
+ }
183
+ return rows;
184
+ }
165
185
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n dismissedAt: now,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenSharingGeneric':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IIconProps, MessageBarType } from '@fluentui/react';\nimport { ActiveErrorMessage, ErrorType } from './ErrorBar';\n\n/**\n * @private\n *\n * @param fileName\n * @param length\n * @returns string\n */\nexport const truncatedFileName = (fileName: string, length: number): string => {\n return fileName.substring(0, length).trimEnd() + (fileName.length > length ? '... ' : '');\n};\n\n/**\n * @private\n *\n * @param fileName\n * @returns string\n */\nexport const extension = (fileName: string): string => fileName.split('.').pop() || '';\n\n/**\n * @private\n */\nexport interface DismissedError {\n type: ErrorType;\n dismissedAt: Date;\n activeSince?: Date;\n}\n\n/**\n * @private\n * @param dismissedErrors\n * @param toDismiss\n * @returns DismissedError[]\n * Always returns a new Array so that the state variable is updated, trigerring a render.\n */\nexport const dismissError = (dismissedErrors: DismissedError[], toDismiss: ActiveErrorMessage): DismissedError[] => {\n const now = new Date(Date.now());\n for (const error of dismissedErrors) {\n if (error.type === toDismiss.type) {\n // Bump the timestamp for latest dismissal of this error to now.\n error.dismissedAt = now;\n error.activeSince = toDismiss.timestamp;\n return Array.from(dismissedErrors);\n }\n }\n\n // Record that this error was dismissed for the first time right now.\n return [\n ...dismissedErrors,\n {\n type: toDismiss.type,\n dismissedAt: now,\n activeSince: toDismiss.timestamp\n }\n ];\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns DismissedError[]\n * Returns a new Array if and only if contents change, to avoid re-rendering when nothing was dropped.\n */\nexport const dropDismissalsForInactiveErrors = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[]\n): DismissedError[] => {\n const active = new Map();\n for (const message of activeErrorMessages) {\n active.set(message.type, message);\n }\n\n // For an error such that:\n // * It was previously active, and dismissed.\n // * It did not have a timestamp associated with it.\n // * It is no longer active.\n //\n // We remove it from dismissals. When it becomes active again next time, it will be shown again on the UI.\n const shouldDeleteDismissal = (dismissed: DismissedError): boolean =>\n dismissed.activeSince === undefined && active.get(dismissed.type) === undefined;\n\n if (dismissedErrors.some((dismissed) => shouldDeleteDismissal(dismissed))) {\n return dismissedErrors.filter((dismissed) => !shouldDeleteDismissal(dismissed));\n }\n return dismissedErrors;\n};\n\n/**\n * @private\n * @param activeErrorMessages\n * @param dismissedErrors\n * @returns ActiveErrorMessage[]\n */\nexport const errorsToShow = (\n activeErrorMessages: ActiveErrorMessage[],\n dismissedErrors: DismissedError[],\n mountTimestamp?: Date\n): ActiveErrorMessage[] => {\n const dismissed: Map<ErrorType, DismissedError> = new Map();\n for (const error of dismissedErrors) {\n dismissed.set(error.type, error);\n }\n\n return activeErrorMessages.filter((error) => {\n if (mountTimestamp && error.timestamp && mountTimestamp > error.timestamp) {\n // Error has a timestamp and it is older than when the component was mounted.\n return false;\n }\n\n const dismissal = dismissed.get(error.type);\n if (!dismissal) {\n // This error was never dismissed.\n return true;\n }\n if (!error.timestamp) {\n // No timestamp associated with the error. In this case, the existence of a dismissal is enough to suppress the error.\n return false;\n }\n // Error has an associated timestamp, so compare with last dismissal.\n return error.timestamp > dismissal.dismissedAt;\n });\n};\n\n/**\n * @private\n * @param errorType\n * @returns MessageBarType\n */\nexport const messageBarType = (errorType: ErrorType): MessageBarType => {\n switch (errorType) {\n case 'callNetworkQualityLow':\n case 'callNoSpeakerFound':\n case 'callNoMicrophoneFound':\n case 'callMicrophoneAccessDenied':\n case 'callMicrophoneAccessDeniedSafari':\n case 'callMicrophoneMutedBySystem':\n case 'callMicrophoneUnmutedBySystem':\n case 'callMacOsMicrophoneAccessDenied':\n case 'callLocalVideoFreeze':\n case 'callCameraAccessDenied':\n case 'callCameraAccessDeniedSafari':\n case 'callCameraAlreadyInUse':\n case 'callVideoStoppedBySystem':\n case 'callVideoRecoveredBySystem':\n case 'callMacOsCameraAccessDenied':\n case 'callMacOsScreenShareAccessDenied':\n case 'startScreenSharingGeneric':\n case 'cameraFrozenForRemoteParticipants':\n return MessageBarType.warning;\n default:\n return MessageBarType.error;\n }\n};\n\n/**\n * @private\n * @param errorType\n * @returns IIconProps | undefined\n */\nexport const messageBarIconProps = (errorType: ErrorType): IIconProps | undefined => {\n const iconName = customIconName[errorType];\n return iconName ? { iconName } : undefined;\n};\n\n/**\n * @private\n */\nexport const customIconName: Partial<{ [key in ErrorType]: string }> = {\n callNetworkQualityLow: 'ErrorBarCallNetworkQualityLow',\n callNoSpeakerFound: 'ErrorBarCallNoSpeakerFound',\n callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',\n callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneAccessDeniedSafari: 'ErrorBarCallMicrophoneAccessDenied',\n callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',\n callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',\n callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',\n callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',\n callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',\n callCameraAccessDeniedSafari: 'ErrorBarCallCameraAccessDenied',\n callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',\n callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',\n callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',\n callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'\n};\n\n/**\n * @private\n */\nexport const isValidString = (string: string | undefined): string is string => {\n return !!string && string.length > 0;\n};\n\n/**\n * Chunk an array into rows of a given size.\n * @private\n */\nexport function chunk<T>(options: T[], itemsPerRow: number): T[][] {\n const rows: T[][] = [];\n let currentRow: T[] = [];\n for (const option of options) {\n currentRow.push(option);\n if (currentRow.length === itemsPerRow) {\n rows.push(currentRow);\n currentRow = [];\n }\n }\n if (currentRow.length > 0) {\n rows.push(currentRow);\n }\n return rows;\n}\n"]}
@@ -12,10 +12,7 @@ export const smartDominantSpeakerParticipants = (args) => {
12
12
  }
13
13
  const participantsMap = participantsById(participants);
14
14
  // Only use the Max allowed dominant speakers that exist in participants
15
- const dominantSpeakerIds = Array.from(new Set(dominantSpeakers).values())
16
- .filter((id) => !!participantsMap[id])
17
- .slice(0, maxDominantSpeakers);
18
- const lastVisibleParticipantIds = lastVisibleParticipants.map((p) => p.userId);
15
+ const dominantSpeakerIds = dominantSpeakers.filter((id) => !!participantsMap[id]).slice(0, maxDominantSpeakers);
19
16
  const newVisibleParticipantIds = lastVisibleParticipants.map((p) => p.userId).slice(0, maxDominantSpeakers);
20
17
  const newDominantSpeakerIds = dominantSpeakerIds.filter((id) => !newVisibleParticipantIds.includes(id));
21
18
  // Remove participants that are no longer dominant and replace them with new dominant speakers.
@@ -29,17 +26,12 @@ export const smartDominantSpeakerParticipants = (args) => {
29
26
  newVisibleParticipantIds[index] = replacement;
30
27
  }
31
28
  }
32
- const removedVisibleParticipantIds = lastVisibleParticipantIds.filter((p) => !newVisibleParticipantIds.includes(p));
33
- removedVisibleParticipantIds.forEach((p) => newVisibleParticipantIds.push(p));
34
- const newVisibleParticipantIdSet = new Set(newVisibleParticipantIds);
35
- const leftoverParticipants = participants.filter((p) => !newVisibleParticipantIdSet.has(p.userId));
36
- leftoverParticipants.forEach((p) => {
37
- newVisibleParticipantIds.push(p.userId);
38
- });
39
- // newVisibleParticipantIds can contain identifiers for participants that are no longer in the call. So we ignore those IDs.
40
- const newVisibleParticipants = newVisibleParticipantIds
29
+ let newVisibleParticipants = newVisibleParticipantIds
41
30
  .map((participantId) => participantsMap[participantId])
42
- .filter((p) => !!p);
31
+ .filter((p) => p !== undefined);
32
+ const newVisibleParticipantIdsSet = new Set(newVisibleParticipantIds);
33
+ const remainingParticipants = participants.filter((p) => !newVisibleParticipantIdsSet.has(p.userId));
34
+ newVisibleParticipants = newVisibleParticipants.concat(remainingParticipants);
43
35
  return newVisibleParticipants;
44
36
  };
45
37
  const participantsById = (participants) => {
@@ -1 +1 @@
1
- {"version":3,"file":"dominantSpeaker.js","sourceRoot":"","sources":["../../../../../../react-components/src/gallery/dominantSpeaker.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { VideoGalleryRemoteParticipant } from '../types';\n\ntype SmartDominantSpeakerParticipantsArgs = {\n /**\n * Array containing all participants of a call. {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\n participants: VideoGalleryRemoteParticipant[];\n /**\n * An array containing the userId of dominant speakers\n * in a call in the order of their dominance. 0th index is the most dominant, 1st is the second most etc\n */\n dominantSpeakers?: string[];\n /**\n * Array containing currently rendered (visible)\n * participants in the call. {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\n lastVisibleParticipants?: VideoGalleryRemoteParticipant[];\n /**\n * Maximum number of dominant speaker positions to move participants in.\n */\n maxDominantSpeakers: number;\n};\n\n/**\n * Calculates the participants that should be rendered based on the list of dominant\n * speakers and currently rendered participants in a call.\n * @param args - SmartDominantSpeakerParticipantsArgs\n * @returns VideoGalleryRemoteParticipant[] {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\nexport const smartDominantSpeakerParticipants = (\n args: SmartDominantSpeakerParticipantsArgs\n): VideoGalleryRemoteParticipant[] => {\n const { participants, dominantSpeakers = [], lastVisibleParticipants = [], maxDominantSpeakers } = args;\n\n // Don't apply any logic if total number of video streams is less than max dominant speakers.\n if (participants.length <= maxDominantSpeakers) {\n return participants;\n }\n\n const participantsMap = participantsById(participants);\n\n // Only use the Max allowed dominant speakers that exist in participants\n const dominantSpeakerIds = Array.from(new Set(dominantSpeakers).values())\n .filter((id) => !!participantsMap[id])\n .slice(0, maxDominantSpeakers);\n\n const lastVisibleParticipantIds = lastVisibleParticipants.map((p) => p.userId);\n const newVisibleParticipantIds = lastVisibleParticipants.map((p) => p.userId).slice(0, maxDominantSpeakers);\n const newDominantSpeakerIds = dominantSpeakerIds.filter((id) => !newVisibleParticipantIds.includes(id));\n\n // Remove participants that are no longer dominant and replace them with new dominant speakers.\n for (let index = 0; index < maxDominantSpeakers; index++) {\n const newVisibleParticipantId = newVisibleParticipantIds[index];\n if (newVisibleParticipantId === undefined || !dominantSpeakerIds.includes(newVisibleParticipantId)) {\n const replacement = newDominantSpeakerIds.shift();\n if (!replacement) {\n break;\n }\n newVisibleParticipantIds[index] = replacement;\n }\n }\n\n const removedVisibleParticipantIds = lastVisibleParticipantIds.filter((p) => !newVisibleParticipantIds.includes(p));\n removedVisibleParticipantIds.forEach((p) => newVisibleParticipantIds.push(p));\n\n const newVisibleParticipantIdSet = new Set(newVisibleParticipantIds);\n\n const leftoverParticipants = participants.filter((p) => !newVisibleParticipantIdSet.has(p.userId));\n leftoverParticipants.forEach((p) => {\n newVisibleParticipantIds.push(p.userId);\n });\n\n // newVisibleParticipantIds can contain identifiers for participants that are no longer in the call. So we ignore those IDs.\n const newVisibleParticipants = newVisibleParticipantIds\n .map((participantId) => participantsMap[participantId])\n .filter((p) => !!p);\n\n return newVisibleParticipants;\n};\n\nconst participantsById = (\n participants: VideoGalleryRemoteParticipant[]\n): { [key: string]: VideoGalleryRemoteParticipant } => {\n const response: { [key: string]: VideoGalleryRemoteParticipant } = {};\n participants.forEach((p) => (response[p.userId] = p));\n return response;\n};\n"]}
1
+ {"version":3,"file":"dominantSpeaker.js","sourceRoot":"","sources":["../../../../../../react-components/src/gallery/dominantSpeaker.ts"],"names":[],"mappings":"AAyBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,IAA0C,EACT,EAAE;IACnC,MAAM,EAAE,YAAY,EAAE,gBAAgB,GAAG,EAAE,EAAE,uBAAuB,GAAG,EAAE,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAExG,6FAA6F;IAC7F,IAAI,YAAY,CAAC,MAAM,IAAI,mBAAmB,EAAE;QAC9C,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEvD,wEAAwE;IACxE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAEhH,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC5G,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAExG,+FAA+F;IAC/F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,mBAAmB,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,uBAAuB,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YAClG,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM;aACP;YACD,wBAAwB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;SAC/C;KACF;IAED,IAAI,sBAAsB,GAAG,wBAAwB;SAClD,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAElC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtE,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAErG,sBAAsB,GAAG,sBAAsB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE9E,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,YAA6C,EACK,EAAE;IACpD,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { VideoGalleryRemoteParticipant } from '../types';\n\ntype SmartDominantSpeakerParticipantsArgs = {\n /**\n * Array containing all participants of a call. {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\n participants: VideoGalleryRemoteParticipant[];\n /**\n * An array containing the userId of dominant speakers\n * in a call in the order of their dominance. 0th index is the most dominant, 1st is the second most etc\n */\n dominantSpeakers?: string[];\n /**\n * Array containing currently rendered (visible)\n * participants in the call. {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\n lastVisibleParticipants?: VideoGalleryRemoteParticipant[];\n /**\n * Maximum number of dominant speaker positions to move participants in.\n */\n maxDominantSpeakers: number;\n};\n\n/**\n * Calculates the participants that should be rendered based on the list of dominant\n * speakers and currently rendered participants in a call.\n * @param args - SmartDominantSpeakerParticipantsArgs\n * @returns VideoGalleryRemoteParticipant[] {@link @azure/communication-react#VideoGalleryRemoteParticipant}\n */\nexport const smartDominantSpeakerParticipants = (\n args: SmartDominantSpeakerParticipantsArgs\n): VideoGalleryRemoteParticipant[] => {\n const { participants, dominantSpeakers = [], lastVisibleParticipants = [], maxDominantSpeakers } = args;\n\n // Don't apply any logic if total number of video streams is less than max dominant speakers.\n if (participants.length <= maxDominantSpeakers) {\n return participants;\n }\n\n const participantsMap = participantsById(participants);\n\n // Only use the Max allowed dominant speakers that exist in participants\n const dominantSpeakerIds = dominantSpeakers.filter((id) => !!participantsMap[id]).slice(0, maxDominantSpeakers);\n\n const newVisibleParticipantIds = lastVisibleParticipants.map((p) => p.userId).slice(0, maxDominantSpeakers);\n const newDominantSpeakerIds = dominantSpeakerIds.filter((id) => !newVisibleParticipantIds.includes(id));\n\n // Remove participants that are no longer dominant and replace them with new dominant speakers.\n for (let index = 0; index < maxDominantSpeakers; index++) {\n const newVisibleParticipantId = newVisibleParticipantIds[index];\n if (newVisibleParticipantId === undefined || !dominantSpeakerIds.includes(newVisibleParticipantId)) {\n const replacement = newDominantSpeakerIds.shift();\n if (!replacement) {\n break;\n }\n newVisibleParticipantIds[index] = replacement;\n }\n }\n\n let newVisibleParticipants = newVisibleParticipantIds\n .map((participantId) => participantsMap[participantId])\n .filter((p) => p !== undefined);\n\n const newVisibleParticipantIdsSet = new Set(newVisibleParticipantIds);\n const remainingParticipants = participants.filter((p) => !newVisibleParticipantIdsSet.has(p.userId));\n\n newVisibleParticipants = newVisibleParticipants.concat(remainingParticipants);\n\n return newVisibleParticipants;\n};\n\nconst participantsById = (\n participants: VideoGalleryRemoteParticipant[]\n): { [key: string]: VideoGalleryRemoteParticipant } => {\n const response: { [key: string]: VideoGalleryRemoteParticipant } = {};\n participants.forEach((p) => (response[p.userId] = p));\n return response;\n};\n"]}
@@ -35,10 +35,16 @@ export interface _Identifiers {
35
35
  videoGallery: string;
36
36
  /** `data-ui-id` value for `VideoTile` Component */
37
37
  videoTile: string;
38
- /** `data-ui-id` value for `HorizontalGallery` Component's left navigation button */
39
- horizontalGalleryLeftNavButton: string;
40
- /** `data-ui-id` value for `HorizontalGallery` Component's right navigation button */
41
- horizontalGalleryRightNavButton: string;
38
+ /** `data-ui-id` value for overflow gallery component's left navigation button */
39
+ overflowGalleryLeftNavButton: string;
40
+ /** `data-ui-id` value for overflow gallery component's right navigation button */
41
+ overflowGalleryRightNavButton: string;
42
+ /** `data-ui-id` value for the video tiles in the horizontal gallery */
43
+ horizontalGalleryVideoTile: string;
44
+ /** `data-ui-id` value for `VerticalGallery` Component's children video tiles */
45
+ verticalGalleryVideoTile: string;
46
+ /** `data-ui-id` value for `VerticalGallery` Component's page counter */
47
+ verticalGalleryPageCounter: string;
42
48
  }
43
49
  /**
44
50
  * @private
@@ -13,8 +13,13 @@ const defaultIdentifiers = {
13
13
  typingIndicator: 'typing-indicator',
14
14
  videoGallery: 'video-gallery',
15
15
  videoTile: 'video-tile',
16
- horizontalGalleryLeftNavButton: 'horizontal-gallery-left-nav-button',
17
- horizontalGalleryRightNavButton: 'horizontal-gallery-right-nav-button'
16
+ overflowGalleryLeftNavButton: 'overflow-gallery-left-nav-button',
17
+ overflowGalleryRightNavButton: 'overflow-gallery-right-nav-button',
18
+ /* @conditional-compile-remove(vertical-gallery) */
19
+ verticalGalleryVideoTile: 'vertical-gallery-video-tile',
20
+ horizontalGalleryVideoTile: 'horizontal-gallery-video-tile',
21
+ /* @conditional-compile-remove(vertical-gallery) */
22
+ verticalGalleryPageCounter: 'vertical-gallery-page-counter'
18
23
  };
19
24
  /**
20
25
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"IdentifierProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/identifiers/IdentifierProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA4CzD,MAAM,kBAAkB,GAAiB;IACvC,gBAAgB,EAAE,mBAAmB;IACrC,+BAA+B,EAAE,qCAAqC;IACtE,yBAAyB,EAAE,8BAA8B;IACzD,eAAe,EAAE,kBAAkB;IACnC,2BAA2B,EAAE,gCAAgC;IAC7D,sCAAsC,EAAE,4CAA4C;IACpF,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,YAAY;IACvB,8BAA8B,EAAE,oCAAoC;IACpE,+BAA+B,EAAE,qCAAqC;CACvE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAe,kBAAkB,CAAC,CAAC;AAgBjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAe,EAAE;IAClF,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACxC,OAAO,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,kBAAkB,IAAG,QAAQ,CAA8B,CAAC;AACvH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAiB,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { createContext, useContext } from 'react';\n\n/**\n * Identifiers that can be used to target specific components in a composite.\n *\n * @experimental\n *\n * These identifiers are assigned as `data-ui-id` HTML attribute of the root element of the targeted component.\n *\n * This API is intended for end to end test automation. As such, they are not covered by the API\n * guarantee of the public API. This will remain perenially experimental and compatibility breaking changes\n * may be made at any point.\n *\n * @internal\n */\nexport interface _Identifiers {\n /** `data-ui-id` value for `SendBox` Component */\n sendboxTextField: string;\n /** `data-ui-id` value for `ParticipantButton` Component's People menu item */\n participantButtonPeopleMenuItem: string;\n /** `data-ui-id` value for `ParticipantItem` Component's Menu button */\n participantItemMenuButton: string;\n /** `data-ui-id` value for `ParticipantList` Component */\n participantList: string;\n /** `data-ui-id` value for `ParticipantList` Component's People Button */\n participantListPeopleButton: string;\n /** `data-ui-id` value for `ParticipantList` Component's Remove Participant Button */\n participantListRemoveParticipantButton: string;\n /** `data-ui-id` value for `MessageThread` components message content */\n messageContent: string;\n /** `data-ui-id` value for `MessageThread` components message timestamp */\n messageTimestamp: string;\n /** `data-ui-id` value for `TypingIndicator` Component */\n typingIndicator: string;\n /** `data-ui-id` value for `VideoGallery` Component */\n videoGallery: string;\n /** `data-ui-id` value for `VideoTile` Component */\n videoTile: string;\n /** `data-ui-id` value for `HorizontalGallery` Component's left navigation button */\n horizontalGalleryLeftNavButton: string;\n /** `data-ui-id` value for `HorizontalGallery` Component's right navigation button */\n horizontalGalleryRightNavButton: string;\n}\n\nconst defaultIdentifiers: _Identifiers = {\n sendboxTextField: 'sendbox-textfield',\n participantButtonPeopleMenuItem: 'participant-button-people-menu-item',\n participantItemMenuButton: 'participant-item-menu-button',\n participantList: 'participant-list',\n participantListPeopleButton: 'participant-list-people-button',\n participantListRemoveParticipantButton: 'participant-list-remove-participant-button',\n messageContent: 'message-content',\n messageTimestamp: 'message-timestamp',\n typingIndicator: 'typing-indicator',\n videoGallery: 'video-gallery',\n videoTile: 'video-tile',\n horizontalGalleryLeftNavButton: 'horizontal-gallery-left-nav-button',\n horizontalGalleryRightNavButton: 'horizontal-gallery-right-nav-button'\n};\n\n/**\n * @private\n */\nexport const IdentifierContext = createContext<_Identifiers>(defaultIdentifiers);\n\n/**\n * Arguments to Context Provider for {@link _Identifiers}.\n *\n * @experimental\n *\n * See documentation for {@link _Identifiers}.\n *\n * @internal\n */\nexport interface _IdentifierProviderProps {\n identifiers?: _Identifiers;\n children: React.ReactNode;\n}\n\n/**\n * React Context provider for {@link _Identifiers}.\n *\n * @experimental\n *\n * See documentation for {@link _Identifiers}.\n *\n * @internal\n */\nexport const _IdentifierProvider = (props: _IdentifierProviderProps): JSX.Element => {\n const { identifiers, children } = props;\n return <IdentifierContext.Provider value={identifiers ?? defaultIdentifiers}>{children}</IdentifierContext.Provider>;\n};\n\n/**\n * @private\n */\nexport const useIdentifiers = (): _Identifiers => useContext(IdentifierContext);\n"]}
1
+ {"version":3,"file":"IdentifierProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/identifiers/IdentifierProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAoDzD,MAAM,kBAAkB,GAAiB;IACvC,gBAAgB,EAAE,mBAAmB;IACrC,+BAA+B,EAAE,qCAAqC;IACtE,yBAAyB,EAAE,8BAA8B;IACzD,eAAe,EAAE,kBAAkB;IACnC,2BAA2B,EAAE,gCAAgC;IAC7D,sCAAsC,EAAE,4CAA4C;IACpF,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,YAAY;IACvB,4BAA4B,EAAE,kCAAkC;IAChE,6BAA6B,EAAE,mCAAmC;IAClE,mDAAmD;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,0BAA0B,EAAE,+BAA+B;IAC3D,mDAAmD;IACnD,0BAA0B,EAAE,+BAA+B;CAC5D,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAe,kBAAkB,CAAC,CAAC;AAgBjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAe,EAAE;IAClF,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACxC,OAAO,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,kBAAkB,IAAG,QAAQ,CAA8B,CAAC;AACvH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAiB,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { createContext, useContext } from 'react';\n\n/**\n * Identifiers that can be used to target specific components in a composite.\n *\n * @experimental\n *\n * These identifiers are assigned as `data-ui-id` HTML attribute of the root element of the targeted component.\n *\n * This API is intended for end to end test automation. As such, they are not covered by the API\n * guarantee of the public API. This will remain perenially experimental and compatibility breaking changes\n * may be made at any point.\n *\n * @internal\n */\nexport interface _Identifiers {\n /** `data-ui-id` value for `SendBox` Component */\n sendboxTextField: string;\n /** `data-ui-id` value for `ParticipantButton` Component's People menu item */\n participantButtonPeopleMenuItem: string;\n /** `data-ui-id` value for `ParticipantItem` Component's Menu button */\n participantItemMenuButton: string;\n /** `data-ui-id` value for `ParticipantList` Component */\n participantList: string;\n /** `data-ui-id` value for `ParticipantList` Component's People Button */\n participantListPeopleButton: string;\n /** `data-ui-id` value for `ParticipantList` Component's Remove Participant Button */\n participantListRemoveParticipantButton: string;\n /** `data-ui-id` value for `MessageThread` components message content */\n messageContent: string;\n /** `data-ui-id` value for `MessageThread` components message timestamp */\n messageTimestamp: string;\n /** `data-ui-id` value for `TypingIndicator` Component */\n typingIndicator: string;\n /** `data-ui-id` value for `VideoGallery` Component */\n videoGallery: string;\n /** `data-ui-id` value for `VideoTile` Component */\n videoTile: string;\n /** `data-ui-id` value for overflow gallery component's left navigation button */\n overflowGalleryLeftNavButton: string;\n /** `data-ui-id` value for overflow gallery component's right navigation button */\n overflowGalleryRightNavButton: string;\n /** `data-ui-id` value for the video tiles in the horizontal gallery */\n horizontalGalleryVideoTile: string;\n /* @conditional-compile-remove(vertical-gallery) */\n /** `data-ui-id` value for `VerticalGallery` Component's children video tiles */\n verticalGalleryVideoTile: string;\n /* @conditional-compile-remove(vertical-gallery) */\n /** `data-ui-id` value for `VerticalGallery` Component's page counter */\n verticalGalleryPageCounter: string;\n}\n\nconst defaultIdentifiers: _Identifiers = {\n sendboxTextField: 'sendbox-textfield',\n participantButtonPeopleMenuItem: 'participant-button-people-menu-item',\n participantItemMenuButton: 'participant-item-menu-button',\n participantList: 'participant-list',\n participantListPeopleButton: 'participant-list-people-button',\n participantListRemoveParticipantButton: 'participant-list-remove-participant-button',\n messageContent: 'message-content',\n messageTimestamp: 'message-timestamp',\n typingIndicator: 'typing-indicator',\n videoGallery: 'video-gallery',\n videoTile: 'video-tile',\n overflowGalleryLeftNavButton: 'overflow-gallery-left-nav-button',\n overflowGalleryRightNavButton: 'overflow-gallery-right-nav-button',\n /* @conditional-compile-remove(vertical-gallery) */\n verticalGalleryVideoTile: 'vertical-gallery-video-tile',\n horizontalGalleryVideoTile: 'horizontal-gallery-video-tile',\n /* @conditional-compile-remove(vertical-gallery) */\n verticalGalleryPageCounter: 'vertical-gallery-page-counter'\n};\n\n/**\n * @private\n */\nexport const IdentifierContext = createContext<_Identifiers>(defaultIdentifiers);\n\n/**\n * Arguments to Context Provider for {@link _Identifiers}.\n *\n * @experimental\n *\n * See documentation for {@link _Identifiers}.\n *\n * @internal\n */\nexport interface _IdentifierProviderProps {\n identifiers?: _Identifiers;\n children: React.ReactNode;\n}\n\n/**\n * React Context provider for {@link _Identifiers}.\n *\n * @experimental\n *\n * See documentation for {@link _Identifiers}.\n *\n * @internal\n */\nexport const _IdentifierProvider = (props: _IdentifierProviderProps): JSX.Element => {\n const { identifiers, children } = props;\n return <IdentifierContext.Provider value={identifiers ?? defaultIdentifiers}>{children}</IdentifierContext.Provider>;\n};\n\n/**\n * @private\n */\nexport const useIdentifiers = (): _Identifiers => useContext(IdentifierContext);\n"]}
@@ -9,6 +9,7 @@ import { UnsupportedBrowserStrings } from '../components/UnsupportedBrowser';
9
9
  import { VideoTileStrings } from '../components/VideoTile';
10
10
  import { UnsupportedBrowserVersionStrings } from '../components/UnsupportedBrowserVersion';
11
11
  import { UnsupportedOperatingSystemStrings } from '../components/UnsupportedOperatingSystem';
12
+ import { VerticalGalleryStrings } from '../components/VerticalGallery';
12
13
  /**
13
14
  * Locale information for all components exported from this library.
14
15
  *
@@ -95,6 +96,10 @@ export interface ComponentStrings {
95
96
  BrowserPermissionDenied: BrowserPermissionDeniedStrings;
96
97
  /** Strings for BrowserPemissionDeniedIOS */
97
98
  BrowserPermissionDeniedIOS: BrowserPermissionDeniedIOSStrings;
99
+ /**
100
+ * Strings for the VerticalGallery.
101
+ */
102
+ VerticalGallery: VerticalGalleryStrings;
98
103
  }
99
104
  /**
100
105
  * Context for providing localized strings to components exported from this library.
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizationProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/localization/LocalizationProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA+BzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAqHnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAkB,sBAAsB,CAAC,CAAC;AAcpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAe,EAAE;IACpF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,OAAO,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA0B,CAAC;AACpF,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAoB,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { createContext, useContext } from 'react';\nimport {\n CameraButtonStrings,\n EndCallButtonStrings,\n ErrorBarStrings,\n MessageStatusIndicatorStrings,\n MessageThreadStrings,\n MicrophoneButtonStrings,\n DevicesButtonStrings,\n ParticipantsButtonStrings,\n ParticipantItemStrings,\n ScreenShareButtonStrings,\n SendBoxStrings,\n TypingIndicatorStrings,\n VideoGalleryStrings\n} from '../components';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\nimport { HoldButtonStrings } from '../components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { DialpadStrings } from '../components';\n/* @conditional-compile-remove(call-readiness) */\nimport { SitePermissionsStrings } from '../components/DevicePermissions/SitePermissionsScaffolding';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedStrings } from '../components/DevicePermissions/BrowserPermissionDenied';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedIOSStrings } from '../components/DevicePermissions/BrowserPermissionDeniedIOS';\n/* @conditional-compile-remove(call-readiness) */ /* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserStrings } from '../components/UnsupportedBrowser';\n/* @conditional-compile-remove(one-to-n-calling) */\n// @conditional-compile-remove(PSTN-calls)\nimport { VideoTileStrings } from '../components/VideoTile';\nimport { COMPONENT_LOCALE_EN_US } from './locales';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserVersionStrings } from '../components/UnsupportedBrowserVersion';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedOperatingSystemStrings } from '../components/UnsupportedOperatingSystem';\n\n/**\n * Locale information for all components exported from this library.\n *\n * @public\n */\nexport interface ComponentLocale {\n /** Strings for components */\n strings: ComponentStrings;\n /* @conditional-compile-remove(date-time-customization) */\n /**\n * Optional function to provide customized date format.\n * @beta\n */\n onDisplayDateTimeString?: (messageDate: Date) => string;\n}\n\n/**\n * Strings used by all components exported from this library.\n *\n * @public\n */\nexport interface ComponentStrings {\n /** Strings for MessageThread */\n messageThread: MessageThreadStrings;\n /** Strings for ParticipantItem */\n participantItem: ParticipantItemStrings;\n /** Strings for CameraButton */\n cameraButton: CameraButtonStrings;\n /** Strings for MicrophoneButton */\n microphoneButton: MicrophoneButtonStrings;\n /** Strings for EndCallButton */\n endCallButton: EndCallButtonStrings;\n /** Strings for DevicesButton */\n devicesButton: DevicesButtonStrings;\n /** Strings for ParticipantsButton */\n participantsButton: ParticipantsButtonStrings;\n /** Strings for ScreenShareButton */\n screenShareButton: ScreenShareButtonStrings;\n /** Strings for TypingIndicator */\n typingIndicator: TypingIndicatorStrings;\n /** Strings for SendBox */\n sendBox: SendBoxStrings;\n /** Strings for MessageStatusIndicator */\n messageStatusIndicator: MessageStatusIndicatorStrings;\n /** Strings for ErroBar */\n errorBar: ErrorBarStrings;\n /** Strings for VideoGallery */\n videoGallery: VideoGalleryStrings;\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n /** Strings for Dialpad */\n dialpad: DialpadStrings;\n /* @conditional-compile-remove(one-to-n-calling) */\n // @conditional-compile-remove(PSTN-calls)\n /** Strings for VideoTile */\n videoTile: VideoTileStrings;\n /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */\n /** Strings for HoldButton */\n holdButton: HoldButtonStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraAndMicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n MicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraAndMicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n MicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraAndMicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraAndMicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n MicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n MicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser UI */\n UnsupportedBrowser: UnsupportedBrowserStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedBrowserVersion: UnsupportedBrowserVersionStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedOperatingSystem: UnsupportedOperatingSystemStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDenied */\n BrowserPermissionDenied: BrowserPermissionDeniedStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDeniedIOS */\n BrowserPermissionDeniedIOS: BrowserPermissionDeniedIOSStrings;\n}\n\n/**\n * Context for providing localized strings to components exported from this library.\n *\n * @public\n */\nexport const LocaleContext = createContext<ComponentLocale>(COMPONENT_LOCALE_EN_US);\n\n/**\n * Props for {@link LocalizationProvider}.\n *\n * @public\n */\nexport type LocalizationProviderProps = {\n /** Locale context to provide components */\n locale: ComponentLocale;\n /** Children to provide locale context. */\n children: React.ReactNode;\n};\n\n/**\n * Provider to provide localized strings for this library's react components.\n *\n * @remarks Components will be provided localized strings in English (US) by default if this\n * provider is not used.\n *\n * @public\n */\nexport const LocalizationProvider = (props: LocalizationProviderProps): JSX.Element => {\n const { locale, children } = props;\n return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>;\n};\n\n/** React hook to access locale */\nexport const useLocale = (): ComponentLocale => useContext(LocaleContext);\n"]}
1
+ {"version":3,"file":"LocalizationProvider.js","sourceRoot":"","sources":["../../../../../../react-components/src/localization/LocalizationProvider.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AA+BzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AA4HnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAkB,sBAAsB,CAAC,CAAC;AAcpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAe,EAAE;IACpF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACnC,OAAO,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA0B,CAAC;AACpF,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAoB,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { createContext, useContext } from 'react';\nimport {\n CameraButtonStrings,\n EndCallButtonStrings,\n ErrorBarStrings,\n MessageStatusIndicatorStrings,\n MessageThreadStrings,\n MicrophoneButtonStrings,\n DevicesButtonStrings,\n ParticipantsButtonStrings,\n ParticipantItemStrings,\n ScreenShareButtonStrings,\n SendBoxStrings,\n TypingIndicatorStrings,\n VideoGalleryStrings\n} from '../components';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\nimport { HoldButtonStrings } from '../components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { DialpadStrings } from '../components';\n/* @conditional-compile-remove(call-readiness) */\nimport { SitePermissionsStrings } from '../components/DevicePermissions/SitePermissionsScaffolding';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedStrings } from '../components/DevicePermissions/BrowserPermissionDenied';\n/* @conditional-compile-remove(call-readiness) */\nimport { BrowserPermissionDeniedIOSStrings } from '../components/DevicePermissions/BrowserPermissionDeniedIOS';\n/* @conditional-compile-remove(call-readiness) */ /* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserStrings } from '../components/UnsupportedBrowser';\n/* @conditional-compile-remove(one-to-n-calling) */\n// @conditional-compile-remove(PSTN-calls)\nimport { VideoTileStrings } from '../components/VideoTile';\nimport { COMPONENT_LOCALE_EN_US } from './locales';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedBrowserVersionStrings } from '../components/UnsupportedBrowserVersion';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { UnsupportedOperatingSystemStrings } from '../components/UnsupportedOperatingSystem';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { VerticalGalleryStrings } from '../components/VerticalGallery';\n\n/**\n * Locale information for all components exported from this library.\n *\n * @public\n */\nexport interface ComponentLocale {\n /** Strings for components */\n strings: ComponentStrings;\n /* @conditional-compile-remove(date-time-customization) */\n /**\n * Optional function to provide customized date format.\n * @beta\n */\n onDisplayDateTimeString?: (messageDate: Date) => string;\n}\n\n/**\n * Strings used by all components exported from this library.\n *\n * @public\n */\nexport interface ComponentStrings {\n /** Strings for MessageThread */\n messageThread: MessageThreadStrings;\n /** Strings for ParticipantItem */\n participantItem: ParticipantItemStrings;\n /** Strings for CameraButton */\n cameraButton: CameraButtonStrings;\n /** Strings for MicrophoneButton */\n microphoneButton: MicrophoneButtonStrings;\n /** Strings for EndCallButton */\n endCallButton: EndCallButtonStrings;\n /** Strings for DevicesButton */\n devicesButton: DevicesButtonStrings;\n /** Strings for ParticipantsButton */\n participantsButton: ParticipantsButtonStrings;\n /** Strings for ScreenShareButton */\n screenShareButton: ScreenShareButtonStrings;\n /** Strings for TypingIndicator */\n typingIndicator: TypingIndicatorStrings;\n /** Strings for SendBox */\n sendBox: SendBoxStrings;\n /** Strings for MessageStatusIndicator */\n messageStatusIndicator: MessageStatusIndicatorStrings;\n /** Strings for ErroBar */\n errorBar: ErrorBarStrings;\n /** Strings for VideoGallery */\n videoGallery: VideoGalleryStrings;\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n /** Strings for Dialpad */\n dialpad: DialpadStrings;\n /* @conditional-compile-remove(one-to-n-calling) */\n // @conditional-compile-remove(PSTN-calls)\n /** Strings for VideoTile */\n videoTile: VideoTileStrings;\n /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */\n /** Strings for HoldButton */\n holdButton: HoldButtonStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraAndMicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n CameraSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission request prompt */\n MicrophoneSitePermissionsRequest: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraAndMicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n CameraSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission generic checking prompt */\n MicrophoneSitePermissionsCheck: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraAndMicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraAndMicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n CameraSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt */\n MicrophoneSitePermissionsDenied: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n CameraSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for a site's permission denied prompt for safari browsers*/\n MicrophoneSitePermissionsDeniedSafari: SitePermissionsStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser UI */\n UnsupportedBrowser: UnsupportedBrowserStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedBrowserVersion: UnsupportedBrowserVersionStrings;\n /* @conditional-compile-remove(unsupported-browser) */\n /** Strings for unsupported browser version UI */\n UnsupportedOperatingSystem: UnsupportedOperatingSystemStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDenied */\n BrowserPermissionDenied: BrowserPermissionDeniedStrings;\n /* @conditional-compile-remove(call-readiness) */\n /** Strings for BrowserPemissionDeniedIOS */\n BrowserPermissionDeniedIOS: BrowserPermissionDeniedIOSStrings;\n /* @conditional-compile-remove(vertical-gallery) */\n /**\n * Strings for the VerticalGallery.\n */\n VerticalGallery: VerticalGalleryStrings;\n}\n\n/**\n * Context for providing localized strings to components exported from this library.\n *\n * @public\n */\nexport const LocaleContext = createContext<ComponentLocale>(COMPONENT_LOCALE_EN_US);\n\n/**\n * Props for {@link LocalizationProvider}.\n *\n * @public\n */\nexport type LocalizationProviderProps = {\n /** Locale context to provide components */\n locale: ComponentLocale;\n /** Children to provide locale context. */\n children: React.ReactNode;\n};\n\n/**\n * Provider to provide localized strings for this library's react components.\n *\n * @remarks Components will be provided localized strings in English (US) by default if this\n * provider is not used.\n *\n * @public\n */\nexport const LocalizationProvider = (props: LocalizationProviderProps): JSX.Element => {\n const { locale, children } = props;\n return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>;\n};\n\n/** React hook to access locale */\nexport const useLocale = (): ComponentLocale => useContext(LocaleContext);\n"]}
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Kamera und Kameraoptionen deaktivieren",
54
54
  "offSplitButtonAriaLabel": "Kamera und Kameraoptionen aktivieren",
55
55
  "cameraActionTurnedOnAnnouncement": "Ihre Kamera wurde eingeschaltet.",
56
- "cameraActionTurnedOffAnnouncement": "Ihre Kamera wurde ausgeschaltet."
56
+ "cameraActionTurnedOffAnnouncement": "Ihre Kamera wurde ausgeschaltet.",
57
+ "onSplitButtonPrimaryActionCamera": "Kamera ausschalten",
58
+ "offSplitButtonPrimaryActionCamera": "Kamera einschalten",
59
+ "cameraPrimaryActionSplitButtonTitle": "Kamera verwenden"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Stumm schalten",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Mikrofon- und Audiooptionen stummschalten",
70
73
  "offSplitButtonAriaLabel": "Stummschaltung von Mikrofon- und Audiooptionen aufheben",
71
74
  "microphoneActionTurnedOnAnnouncement": "Ihr Mikrofon wurde eingeschaltet.",
72
- "microphoneActionTurnedOffAnnouncement": "Ihr Mikrofon wurde ausgeschaltet."
75
+ "microphoneActionTurnedOffAnnouncement": "Ihr Mikrofon wurde ausgeschaltet.",
76
+ "offSplitButtonMicrophonePrimaryAction": "Mikrofonstummschaltung aufheben",
77
+ "onSplitButtonMicrophonePrimaryAction": "Mikrofon stummschalten",
78
+ "micPrimaryActionSplitButtonTitle": "Mikrofon verwenden"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Geräte",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Schließen",
162
168
  "failedToJoinCallGeneric": "Fehler bei der Teilnahme am Anruf.",
163
169
  "failedToJoinCallInvalidMeetingLink": "Teilnahme an Besprechung nicht möglich. Ungültiger Link.",
164
- "startScreenSharingGeneric": "Beim Starten der Bildschirmfreigabe ist ein Problem aufgetreten."
170
+ "startScreenSharingGeneric": "Beim Starten der Bildschirmfreigabe ist ein Problem aufgetreten.",
171
+ "cameraFrozenForRemoteParticipants": "Benutzer im Anruf haben Probleme, Ihr Video zu sehen. Überprüfen Sie Ihre Geräte und Ihr Netzwerk."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "Sie teilen Ihren Bildschirm",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "Vorherige Seite",
322
+ "rightNavButtonAriaLabel": "Nächste Seite"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Turn off camera and camera options",
54
54
  "offSplitButtonAriaLabel": "Turn on camera and camera options",
55
55
  "cameraActionTurnedOnAnnouncement": "Your camera has been turned on",
56
- "cameraActionTurnedOffAnnouncement": "Your camera has been turned off"
56
+ "cameraActionTurnedOffAnnouncement": "Your camera has been turned off",
57
+ "onSplitButtonPrimaryActionCamera": "Turn off camera",
58
+ "offSplitButtonPrimaryActionCamera": "Turn on camera",
59
+ "cameraPrimaryActionSplitButtonTitle": "Use camera"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Mute",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Mute microphone and audio options",
70
73
  "offSplitButtonAriaLabel": "Unmute microphone and audio options",
71
74
  "microphoneActionTurnedOnAnnouncement": "Your microphone has been turned on",
72
- "microphoneActionTurnedOffAnnouncement": "Your microphone has been turned off"
75
+ "microphoneActionTurnedOffAnnouncement": "Your microphone has been turned off",
76
+ "offSplitButtonMicrophonePrimaryAction": "Unmute microphone",
77
+ "onSplitButtonMicrophonePrimaryAction": "Mute microphone",
78
+ "micPrimaryActionSplitButtonTitle": "Use microphone"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Devices",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Close",
162
168
  "failedToJoinCallGeneric": "Failed to join call.",
163
169
  "failedToJoinCallInvalidMeetingLink": "Unable to join Meeting. Invalid Link.",
164
- "startScreenSharingGeneric": "There was an issue starting screen share."
170
+ "startScreenSharingGeneric": "There was an issue starting screen share.",
171
+ "cameraFrozenForRemoteParticipants": "Users in the call are having issues seeing your video. Please check your devices and network."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "You are sharing your screen",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "previous page",
322
+ "rightNavButtonAriaLabel": "next page"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Turn off camera and camera options",
54
54
  "offSplitButtonAriaLabel": "Turn on camera and camera options",
55
55
  "cameraActionTurnedOnAnnouncement": "Your camera has been turned on",
56
- "cameraActionTurnedOffAnnouncement": "Your camera has been turned off"
56
+ "cameraActionTurnedOffAnnouncement": "Your camera has been turned off",
57
+ "onSplitButtonPrimaryActionCamera": "Turn off camera",
58
+ "offSplitButtonPrimaryActionCamera": "Turn on camera",
59
+ "cameraPrimaryActionSplitButtonTitle": "Use camera"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Mute",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Mute microphone and audio options",
70
73
  "offSplitButtonAriaLabel": "Unmute microphone and audio options",
71
74
  "microphoneActionTurnedOnAnnouncement": "Your microphone has been turned on",
72
- "microphoneActionTurnedOffAnnouncement": "Your microphone has been turned off"
75
+ "microphoneActionTurnedOffAnnouncement": "Your microphone has been turned off",
76
+ "offSplitButtonMicrophonePrimaryAction": "Unmute microphone",
77
+ "onSplitButtonMicrophonePrimaryAction": "Mute microphone",
78
+ "micPrimaryActionSplitButtonTitle": "Use microphone"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Devices",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Close",
162
168
  "failedToJoinCallGeneric": "Failed to join call.",
163
169
  "failedToJoinCallInvalidMeetingLink": "Unable to join Meeting. Invalid Link.",
164
- "startScreenSharingGeneric": "There was an issue starting screen share."
170
+ "startScreenSharingGeneric": "There was an issue starting screen share.",
171
+ "cameraFrozenForRemoteParticipants": "Users in the call are having issues seeing your video. Please check your devices and network."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "You are sharing your screen",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "previous page",
322
+ "rightNavButtonAriaLabel": "next page"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Desactivar la cámara y las opciones de cámara",
54
54
  "offSplitButtonAriaLabel": "Activar la cámara y las opciones de cámara",
55
55
  "cameraActionTurnedOnAnnouncement": "La cámara se ha activado",
56
- "cameraActionTurnedOffAnnouncement": "La cámara se ha desactivado"
56
+ "cameraActionTurnedOffAnnouncement": "La cámara se ha desactivado",
57
+ "onSplitButtonPrimaryActionCamera": "Desconectar la cámara",
58
+ "offSplitButtonPrimaryActionCamera": "Activar la cámara",
59
+ "cameraPrimaryActionSplitButtonTitle": "Usar cámara"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Silenciar",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Silenciar opciones de micrófono y audio",
70
73
  "offSplitButtonAriaLabel": "Reactivar el micrófono y las opciones de audio",
71
74
  "microphoneActionTurnedOnAnnouncement": "El micrófono se ha activado",
72
- "microphoneActionTurnedOffAnnouncement": "El micrófono se ha desactivado"
75
+ "microphoneActionTurnedOffAnnouncement": "El micrófono se ha desactivado",
76
+ "offSplitButtonMicrophonePrimaryAction": "Reactivar micrófono",
77
+ "onSplitButtonMicrophonePrimaryAction": "Silenciar micrófono",
78
+ "micPrimaryActionSplitButtonTitle": "Usar micrófono"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Dispositivos",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Cerrar",
162
168
  "failedToJoinCallGeneric": "No se pudo unir a la llamada.",
163
169
  "failedToJoinCallInvalidMeetingLink": "No se puede unir a la reunión. Vínculo no válido.",
164
- "startScreenSharingGeneric": "Hubo un problema al iniciar la pantalla compartida."
170
+ "startScreenSharingGeneric": "Hubo un problema al iniciar la pantalla compartida.",
171
+ "cameraFrozenForRemoteParticipants": "Los usuarios de la llamada tienen problemas para ver el vídeo. Compruebe los dispositivos y la red."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "Está compartiendo su pantalla",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "página anterior",
322
+ "rightNavButtonAriaLabel": "página siguiente"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Désactiver les options d’appareil photo et d’appareil photo",
54
54
  "offSplitButtonAriaLabel": "Activer les options d’appareil photo et d’appareil photo",
55
55
  "cameraActionTurnedOnAnnouncement": "Votre caméra a été activée",
56
- "cameraActionTurnedOffAnnouncement": "Votre caméra a été désactivée"
56
+ "cameraActionTurnedOffAnnouncement": "Votre caméra a été désactivée",
57
+ "onSplitButtonPrimaryActionCamera": "Désactiver l’appareil photo",
58
+ "offSplitButtonPrimaryActionCamera": "Activer la caméra",
59
+ "cameraPrimaryActionSplitButtonTitle": "Utiliser l’appareil photo"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Désactiver le son",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Désactiver le micro et les options audio",
70
73
  "offSplitButtonAriaLabel": "Activer le son du microphone et des options audio",
71
74
  "microphoneActionTurnedOnAnnouncement": "Votre micro a été activé",
72
- "microphoneActionTurnedOffAnnouncement": "Votre micro a été désactivé"
75
+ "microphoneActionTurnedOffAnnouncement": "Votre micro a été désactivé",
76
+ "offSplitButtonMicrophonePrimaryAction": "Activer le son du microphone",
77
+ "onSplitButtonMicrophonePrimaryAction": "Désactiver le microphone",
78
+ "micPrimaryActionSplitButtonTitle": "Utiliser le microphone"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Appareils",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Fermer",
162
168
  "failedToJoinCallGeneric": "Nous n’avons pas pu rejoindre l’appel.",
163
169
  "failedToJoinCallInvalidMeetingLink": "Impossible de rejoindre la réunion. Lien non valide.",
164
- "startScreenSharingGeneric": "Un problème est survenu durant le démarrage du partage d’écran."
170
+ "startScreenSharingGeneric": "Un problème est survenu durant le démarrage du partage d’écran.",
171
+ "cameraFrozenForRemoteParticipants": "Les utilisateurs de l’appel rencontrent des problèmes pour voir votre vidéo. Vérifiez vos appareils et votre réseau."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "Vous partagez votre écran.",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "page précédente",
322
+ "rightNavButtonAriaLabel": "page suivante"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "Disattiva fotocamera e le opzioni della fotocamera",
54
54
  "offSplitButtonAriaLabel": "Attiva fotocamera e le opzioni della fotocamera",
55
55
  "cameraActionTurnedOnAnnouncement": "La videocamera è stata attivata",
56
- "cameraActionTurnedOffAnnouncement": "La videocamera è stata disattivata"
56
+ "cameraActionTurnedOffAnnouncement": "La videocamera è stata disattivata",
57
+ "onSplitButtonPrimaryActionCamera": "Spegni la videocamera",
58
+ "offSplitButtonPrimaryActionCamera": "Accendi la videocamera",
59
+ "cameraPrimaryActionSplitButtonTitle": "Usa la fotocamera"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "Disattiva audio",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "Disattiva microfono e opzioni audio",
70
73
  "offSplitButtonAriaLabel": "Attiva microfono e opzioni audio",
71
74
  "microphoneActionTurnedOnAnnouncement": "Il microfono è stato attivato",
72
- "microphoneActionTurnedOffAnnouncement": "Il microfono è stato disattivato"
75
+ "microphoneActionTurnedOffAnnouncement": "Il microfono è stato disattivato",
76
+ "offSplitButtonMicrophonePrimaryAction": "Riattiva microfono",
77
+ "onSplitButtonMicrophonePrimaryAction": "Disattiva microfono",
78
+ "micPrimaryActionSplitButtonTitle": "Usa il microfono"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "Dispositivi",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "Chiudi",
162
168
  "failedToJoinCallGeneric": "Non è stato possibile partecipare alla chiamata.",
163
169
  "failedToJoinCallInvalidMeetingLink": "Impossibile partecipare alla riunione. Collegamento non valido.",
164
- "startScreenSharingGeneric": "Si è verificato un problema durante l'avvio della condivisione dello schermo."
170
+ "startScreenSharingGeneric": "Si è verificato un problema durante l'avvio della condivisione dello schermo.",
171
+ "cameraFrozenForRemoteParticipants": "Gli utenti della chiamata hanno problemi a visualizzare il video. Controllare i dispositivi e la rete."
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "Stai condividendo lo schermo",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "Pagina precedente",
322
+ "rightNavButtonAriaLabel": "Pagina successiva"
312
323
  }
313
324
  }
@@ -53,7 +53,10 @@
53
53
  "onSplitButtonAriaLabel": "カメラとカメラ オプションをオフにする",
54
54
  "offSplitButtonAriaLabel": "カメラとカメラ オプションをオンにする",
55
55
  "cameraActionTurnedOnAnnouncement": "カメラがオンになっています",
56
- "cameraActionTurnedOffAnnouncement": "カメラがオフになっています"
56
+ "cameraActionTurnedOffAnnouncement": "カメラがオフになっています",
57
+ "onSplitButtonPrimaryActionCamera": "カメラをオフにする",
58
+ "offSplitButtonPrimaryActionCamera": "カメラをオンにする",
59
+ "cameraPrimaryActionSplitButtonTitle": "カメラを使用する"
57
60
  },
58
61
  "microphoneButton": {
59
62
  "onLabel": "ミュート",
@@ -69,7 +72,10 @@
69
72
  "onSplitButtonAriaLabel": "マイクとオーディオのオプションをミュートにする",
70
73
  "offSplitButtonAriaLabel": "マイクとオーディオのオプションのミュートを解除する",
71
74
  "microphoneActionTurnedOnAnnouncement": "マイクがオンになっています",
72
- "microphoneActionTurnedOffAnnouncement": "マイクがオフになっています"
75
+ "microphoneActionTurnedOffAnnouncement": "マイクがオフになっています",
76
+ "offSplitButtonMicrophonePrimaryAction": "マイクのミュートを解除する",
77
+ "onSplitButtonMicrophonePrimaryAction": "マイクをミュートにする",
78
+ "micPrimaryActionSplitButtonTitle": "マイクを使用する"
73
79
  },
74
80
  "devicesButton": {
75
81
  "label": "デバイス",
@@ -161,7 +167,8 @@
161
167
  "dismissButtonAriaLabel": "閉じる",
162
168
  "failedToJoinCallGeneric": "通話に参加できませんでした",
163
169
  "failedToJoinCallInvalidMeetingLink": "会議に参加できません。リンクが無効です。",
164
- "startScreenSharingGeneric": "画面共有の開始中に問題が発生しました。"
170
+ "startScreenSharingGeneric": "画面共有の開始中に問題が発生しました。",
171
+ "cameraFrozenForRemoteParticipants": "通話のユーザーにビデオの表示で問題が発生しています。デバイスとネットワークを確認してください。"
165
172
  },
166
173
  "videoGallery": {
167
174
  "screenIsBeingSharedMessage": "画面を共有しています",
@@ -309,5 +316,9 @@
309
316
  "step2DigitText": "2",
310
317
  "step3DigitText": "3",
311
318
  "step4DigitText": "4"
319
+ },
320
+ "VerticalGallery": {
321
+ "leftNavButtonAriaLabel": "前のページ",
322
+ "rightNavButtonAriaLabel": "次のページ"
312
323
  }
313
324
  }