@azure/communication-react 1.3.1-alpha-202205310013.0 → 1.3.2-alpha-202207010015.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/CHANGELOG.json +1260 -0
  2. package/CHANGELOG.md +107 -1
  3. package/dist/communication-react.d.ts +409 -31
  4. package/dist/dist-cjs/communication-react/index.js +1674 -786
  5. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/index.d.ts +2 -0
  7. package/dist/dist-esm/acs-ui-common/src/index.d.ts.map +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/index.js +1 -0
  9. package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/logEvent.d.ts +16 -0
  11. package/dist/dist-esm/acs-ui-common/src/logEvent.d.ts.map +1 -0
  12. package/dist/dist-esm/acs-ui-common/src/logEvent.js +11 -0
  13. package/dist/dist-esm/acs-ui-common/src/logEvent.js.map +1 -0
  14. package/dist/dist-esm/acs-ui-common/src/safeStringify.d.ts.map +1 -1
  15. package/dist/dist-esm/acs-ui-common/src/safeStringify.js +17 -1
  16. package/dist/dist-esm/acs-ui-common/src/safeStringify.js.map +1 -1
  17. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +4 -0
  19. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +9 -1
  21. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  22. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.d.ts +12 -0
  23. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.d.ts.map +1 -1
  24. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +14 -2
  25. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
  26. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.d.ts.map +1 -1
  27. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +32 -13
  28. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
  29. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +2 -0
  30. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts.map +1 -1
  31. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +6 -2
  32. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  33. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +4 -1
  34. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts.map +1 -1
  35. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +22 -0
  36. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  37. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +4 -2
  38. package/dist/dist-esm/calling-component-bindings/src/index.d.ts.map +1 -1
  39. package/dist/dist-esm/calling-component-bindings/src/index.js +4 -2
  40. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  41. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.d.ts.map +1 -1
  42. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +34 -36
  43. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  44. package/dist/dist-esm/calling-component-bindings/src/utils/SelectorUtils.d.ts +6 -0
  45. package/dist/dist-esm/calling-component-bindings/src/utils/SelectorUtils.d.ts.map +1 -0
  46. package/dist/dist-esm/calling-component-bindings/src/{SelectorUtils.js → utils/SelectorUtils.js} +0 -0
  47. package/dist/dist-esm/calling-component-bindings/src/utils/SelectorUtils.js.map +1 -0
  48. package/dist/dist-esm/calling-component-bindings/src/{callUtils.d.ts → utils/callUtils.d.ts} +7 -1
  49. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.d.ts.map +1 -0
  50. package/dist/dist-esm/calling-component-bindings/src/{callUtils.js → utils/callUtils.js} +28 -0
  51. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -0
  52. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.d.ts +6 -0
  53. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.d.ts.map +1 -0
  54. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js +25 -0
  55. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -0
  56. package/dist/dist-esm/calling-component-bindings/src/{videoGalleryUtils.d.ts → utils/videoGalleryUtils.d.ts} +3 -5
  57. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts.map +1 -0
  58. package/dist/dist-esm/calling-component-bindings/src/{videoGalleryUtils.js → utils/videoGalleryUtils.js} +3 -1
  59. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -0
  60. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.d.ts.map +1 -1
  61. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +10 -3
  62. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  63. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts +17 -1
  64. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.d.ts.map +1 -1
  65. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js +22 -5
  66. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js.map +1 -1
  67. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +6 -1
  68. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts.map +1 -1
  69. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  70. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +1 -0
  71. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts.map +1 -1
  72. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +19 -0
  73. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  74. package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts.map +1 -1
  75. package/dist/dist-esm/calling-stateful-client/src/Converter.js +2 -0
  76. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  77. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts +22 -0
  78. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.d.ts.map +1 -0
  79. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js +49 -0
  80. package/dist/dist-esm/calling-stateful-client/src/IncomingCallDeclarative.js.map +1 -0
  81. package/dist/dist-esm/calling-stateful-client/src/Logger.d.ts +26 -0
  82. package/dist/dist-esm/calling-stateful-client/src/Logger.d.ts.map +1 -1
  83. package/dist/dist-esm/calling-stateful-client/src/Logger.js +30 -0
  84. package/dist/dist-esm/calling-stateful-client/src/Logger.js.map +1 -1
  85. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.d.ts +1 -0
  86. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.d.ts.map +1 -1
  87. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.js +8 -0
  88. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.js.map +1 -1
  89. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +13 -0
  90. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts.map +1 -1
  91. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  92. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.d.ts.map +1 -1
  93. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +133 -25
  94. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
  95. package/dist/dist-esm/calling-stateful-client/src/index.d.ts +2 -0
  96. package/dist/dist-esm/calling-stateful-client/src/index.d.ts.map +1 -1
  97. package/dist/dist-esm/communication-react/src/index.d.ts +7 -1
  98. package/dist/dist-esm/communication-react/src/index.d.ts.map +1 -1
  99. package/dist/dist-esm/communication-react/src/index.js +4 -0
  100. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  101. package/dist/dist-esm/react-components/src/components/CameraButton.d.ts +2 -2
  102. package/dist/dist-esm/react-components/src/components/CameraButton.d.ts.map +1 -1
  103. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionMenu.d.ts +1 -1
  104. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionMenu.d.ts.map +1 -1
  105. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.d.ts.map +1 -1
  106. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.js +1 -0
  107. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageActionsFlyout.js.map +1 -1
  108. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts.map +1 -1
  109. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +1 -1
  110. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  111. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts.map +1 -1
  112. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +16 -2
  113. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  114. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +33 -21
  115. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -1
  116. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +87 -30
  117. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  118. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +16 -3
  119. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts.map +1 -1
  120. package/dist/dist-esm/react-components/src/components/ErrorBar.js +22 -1
  121. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  122. package/dist/dist-esm/react-components/src/components/FileCard.d.ts +5 -0
  123. package/dist/dist-esm/react-components/src/components/FileCard.d.ts.map +1 -1
  124. package/dist/dist-esm/react-components/src/components/FileCard.js +44 -14
  125. package/dist/dist-esm/react-components/src/components/FileCard.js.map +1 -1
  126. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts +13 -0
  127. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts.map +1 -1
  128. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js +18 -1
  129. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  130. package/dist/dist-esm/react-components/src/components/FileUploadCards.d.ts +17 -0
  131. package/dist/dist-esm/react-components/src/components/FileUploadCards.d.ts.map +1 -1
  132. package/dist/dist-esm/react-components/src/components/FileUploadCards.js +19 -2
  133. package/dist/dist-esm/react-components/src/components/FileUploadCards.js.map +1 -1
  134. package/dist/dist-esm/react-components/src/components/HoldButton.d.ts +49 -0
  135. package/dist/dist-esm/react-components/src/components/HoldButton.d.ts.map +1 -0
  136. package/dist/dist-esm/react-components/src/components/HoldButton.js +25 -0
  137. package/dist/dist-esm/react-components/src/components/HoldButton.js.map +1 -0
  138. package/dist/dist-esm/react-components/src/components/MessageStatusIndicator.d.ts.map +1 -1
  139. package/dist/dist-esm/react-components/src/components/MessageStatusIndicator.js +15 -4
  140. package/dist/dist-esm/react-components/src/components/MessageStatusIndicator.js.map +1 -1
  141. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +3 -1
  142. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts.map +1 -1
  143. package/dist/dist-esm/react-components/src/components/MessageThread.js +15 -12
  144. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  145. package/dist/dist-esm/react-components/src/components/MicrophoneButton.d.ts +3 -3
  146. package/dist/dist-esm/react-components/src/components/MicrophoneButton.d.ts.map +1 -1
  147. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js +14 -6
  148. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js.map +1 -1
  149. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +5 -1
  150. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts.map +1 -1
  151. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +3 -2
  152. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  153. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +2 -0
  154. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts.map +1 -1
  155. package/dist/dist-esm/react-components/src/components/ParticipantList.js +5 -7
  156. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  157. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts +2 -0
  158. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts.map +1 -1
  159. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +8 -4
  160. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  161. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +1 -0
  162. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts.map +1 -1
  163. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +6 -3
  164. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  165. package/dist/dist-esm/react-components/src/components/SendBox.d.ts +12 -0
  166. package/dist/dist-esm/react-components/src/components/SendBox.d.ts.map +1 -1
  167. package/dist/dist-esm/react-components/src/components/SendBox.js +10 -5
  168. package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
  169. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.d.ts.map +1 -1
  170. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js +8 -5
  171. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js.map +1 -1
  172. package/dist/dist-esm/react-components/src/components/StreamMedia.d.ts +7 -0
  173. package/dist/dist-esm/react-components/src/components/StreamMedia.d.ts.map +1 -1
  174. package/dist/dist-esm/react-components/src/components/StreamMedia.js +7 -4
  175. package/dist/dist-esm/react-components/src/components/StreamMedia.js.map +1 -1
  176. package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js +4 -1
  177. package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js.map +1 -1
  178. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.d.ts +1 -0
  179. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.d.ts.map +1 -1
  180. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js +2 -2
  181. package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js.map +1 -1
  182. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.d.ts +2 -2
  183. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.d.ts.map +1 -1
  184. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js +18 -70
  185. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js.map +1 -1
  186. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +2 -0
  187. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts.map +1 -1
  188. package/dist/dist-esm/react-components/src/components/VideoGallery.js +6 -4
  189. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  190. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts.map +1 -1
  191. package/dist/dist-esm/react-components/src/components/VideoTile.js +1 -1
  192. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  193. package/dist/dist-esm/react-components/src/components/VoiceOverButton.d.ts +7 -0
  194. package/dist/dist-esm/react-components/src/components/VoiceOverButton.d.ts.map +1 -0
  195. package/dist/dist-esm/react-components/src/components/VoiceOverButton.js +32 -0
  196. package/dist/dist-esm/react-components/src/components/VoiceOverButton.js.map +1 -0
  197. package/dist/dist-esm/react-components/src/components/index.d.ts +6 -2
  198. package/dist/dist-esm/react-components/src/components/index.d.ts.map +1 -1
  199. package/dist/dist-esm/react-components/src/components/index.js +4 -1
  200. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  201. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.d.ts +0 -5
  202. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.d.ts.map +1 -1
  203. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js +0 -8
  204. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js.map +1 -1
  205. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts.map +1 -1
  206. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +4 -1
  207. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  208. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.d.ts +13 -1
  209. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.d.ts.map +1 -1
  210. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js +34 -0
  211. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js.map +1 -1
  212. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.d.ts +9 -0
  213. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.d.ts.map +1 -0
  214. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.js +26 -0
  215. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.js.map +1 -0
  216. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  217. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts.map +1 -1
  218. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  219. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +37 -6
  220. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +37 -6
  221. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +22 -4
  222. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +38 -7
  223. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +37 -6
  224. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +37 -6
  225. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +37 -6
  226. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +37 -6
  227. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +37 -6
  228. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +37 -6
  229. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +37 -6
  230. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +37 -6
  231. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +37 -6
  232. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +37 -6
  233. package/dist/dist-esm/react-components/src/theming/icons.d.ts +6 -0
  234. package/dist/dist-esm/react-components/src/theming/icons.d.ts.map +1 -1
  235. package/dist/dist-esm/react-components/src/theming/icons.js +12 -2
  236. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  237. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
  238. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts.map +1 -1
  239. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +12 -2
  240. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts.map +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +52 -3
  242. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  243. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +42 -2
  244. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts.map +1 -1
  245. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts.map +1 -1
  246. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  247. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  248. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts +1 -0
  249. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts.map +1 -1
  250. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +7 -18
  251. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  252. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.d.ts.map +1 -1
  253. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js +3 -3
  254. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js.map +1 -1
  255. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.d.ts.map +1 -1
  256. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +3 -2
  257. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  258. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts.map +1 -1
  259. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +2 -23
  260. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  261. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.d.ts.map +1 -1
  262. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +3 -3
  263. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
  264. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.d.ts +2 -3
  265. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.d.ts.map +1 -1
  266. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.js +2 -2
  267. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.js.map +1 -1
  268. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +9 -1
  269. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts.map +1 -1
  270. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js +40 -10
  271. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js.map +1 -1
  272. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +1 -0
  273. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts.map +1 -1
  274. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js +1 -1
  275. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js.map +1 -1
  276. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +10 -9
  277. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  278. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -1
  279. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts.map +1 -1
  280. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  281. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -1
  282. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  283. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.d.ts.map +1 -1
  284. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js +4 -4
  285. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js.map +1 -1
  286. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.d.ts.map +1 -1
  287. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.js +10 -1
  288. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.js.map +1 -1
  289. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts +40 -13
  290. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts.map +1 -1
  291. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +7 -0
  292. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts.map +1 -1
  293. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +7 -2
  294. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  295. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts.map +1 -1
  296. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +20 -3
  297. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  298. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.d.ts +67 -0
  299. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.d.ts.map +1 -0
  300. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js +68 -0
  301. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js.map +1 -0
  302. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/SidePaneHeader.js +1 -1
  303. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/SidePaneHeader.js.map +1 -1
  304. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +4 -4
  305. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts.map +1 -1
  306. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +11 -2
  307. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts.map +1 -1
  308. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +38 -2
  309. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  310. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +27 -3
  311. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts.map +1 -1
  312. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +7 -2
  313. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts.map +1 -1
  314. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +14 -2
  315. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  316. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.d.ts +1 -1
  317. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.d.ts.map +1 -1
  318. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +19 -1
  319. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  320. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts +1 -0
  321. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts.map +1 -1
  322. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts.map +1 -1
  323. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  324. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  325. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +1 -0
  326. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts.map +1 -1
  327. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js +2 -2
  328. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js.map +1 -1
  329. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts +4 -0
  330. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts.map +1 -1
  331. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.d.ts.map +1 -1
  332. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js +11 -1
  333. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js.map +1 -1
  334. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.d.ts +5 -0
  335. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.d.ts.map +1 -1
  336. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.js +7 -1
  337. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.js.map +1 -1
  338. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.d.ts.map +1 -1
  339. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js +32 -8
  340. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js.map +1 -1
  341. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.d.ts +4 -0
  342. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.d.ts.map +1 -1
  343. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.js +8 -2
  344. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.js.map +1 -1
  345. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.d.ts.map +1 -1
  346. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +8 -4
  347. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  348. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +10 -0
  349. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts.map +1 -1
  350. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  351. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.d.ts +6 -0
  352. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.d.ts.map +1 -0
  353. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.js +12 -0
  354. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.js.map +1 -0
  355. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.d.ts +6 -2
  356. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.d.ts.map +1 -1
  357. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.js +20 -4
  358. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.js.map +1 -1
  359. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +10 -5
  360. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +10 -5
  361. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +3 -2
  362. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +10 -5
  363. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +10 -5
  364. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +10 -5
  365. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +10 -5
  366. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +10 -5
  367. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +10 -5
  368. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +10 -5
  369. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +10 -5
  370. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +10 -5
  371. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +10 -5
  372. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +10 -5
  373. package/package.json +10 -10
  374. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.d.ts +0 -6
  375. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.d.ts.map +0 -1
  376. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.js.map +0 -1
  377. package/dist/dist-esm/calling-component-bindings/src/callUtils.d.ts.map +0 -1
  378. package/dist/dist-esm/calling-component-bindings/src/callUtils.js.map +0 -1
  379. package/dist/dist-esm/calling-component-bindings/src/videoGalleryUtils.d.ts.map +0 -1
  380. package/dist/dist-esm/calling-component-bindings/src/videoGalleryUtils.js.map +0 -1
  381. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.d.ts +0 -74
  382. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.d.ts.map +0 -1
  383. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.js +0 -85
  384. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.js.map +0 -1
  385. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.d.ts +0 -21
  386. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.d.ts.map +0 -1
  387. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.js +0 -59
  388. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.js.map +0 -1
@@ -191,7 +191,7 @@ const fromFlatCommunicationIdentifier = (id) => {
191
191
  // Copyright (c) Microsoft Corporation.
192
192
  // Licensed under the MIT license.
193
193
  // GENERATED FILE. DO NOT EDIT MANUALLY.
194
- var telemetryVersion = '1.3.1-alpha-202205310013.0';
194
+ var telemetryVersion = '1.3.2-alpha-202207010015.0';
195
195
 
196
196
  // Copyright (c) Microsoft Corporation.
197
197
  /**
@@ -253,7 +253,7 @@ const _formatString = (str, vars) => {
253
253
  *
254
254
  * @internal
255
255
  */
256
- const _safeJSONStringify = (value, replacer, space) => {
256
+ const _safeJSONStringify = (value, replacer = createSafeReplacer(), space) => {
257
257
  try {
258
258
  return JSON.stringify(value, replacer, space);
259
259
  }
@@ -262,6 +262,22 @@ const _safeJSONStringify = (value, replacer, space) => {
262
262
  return undefined;
263
263
  }
264
264
  };
265
+ // Log all visited refs to avoid circular ref
266
+ const createSafeReplacer = () => {
267
+ const visited = new Set();
268
+ return function replacer(key, value) {
269
+ if (typeof value !== 'object') {
270
+ return value;
271
+ }
272
+ if (visited.has(value)) {
273
+ return 'Visited-Ref';
274
+ }
275
+ else {
276
+ visited.add(value);
277
+ return value;
278
+ }
279
+ };
280
+ };
265
281
 
266
282
  // Copyright (c) Microsoft Corporation.
267
283
  // Licensed under the MIT license.
@@ -280,6 +296,15 @@ const _MAX_EVENT_LISTENERS = 50;
280
296
  */
281
297
  const _pxToRem = (px) => `${px / 16}rem`;
282
298
 
299
+ // Copyright (c) Microsoft Corporation.
300
+ /**
301
+ * @internal
302
+ * This is a log function to log structural data for easier parse in telemetry
303
+ */
304
+ const _logEvent = (logger, event) => {
305
+ logger[event.level](_safeJSONStringify(event));
306
+ };
307
+
283
308
  /**
284
309
  * @private
285
310
  */
@@ -295,7 +320,10 @@ const getDominantSpeakers = (state, props) => { var _a; return (_a = state.calls
295
320
  /**
296
321
  * @private
297
322
  */
298
- const getRemoteParticipants$1 = (state, props) => { var _a; return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.remoteParticipants; };
323
+ const getRemoteParticipants$1 = (state, props) => {
324
+ var _a;
325
+ return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.remoteParticipants;
326
+ };
299
327
  /**
300
328
  * @private
301
329
  */
@@ -328,6 +356,11 @@ const getLatestErrors$1 = (state) => state.latestErrors;
328
356
  * @private
329
357
  */
330
358
  const getDiagnostics = (state, props) => { var _a; return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.diagnostics; };
359
+ /* @conditional-compile-remove(PSTN-calls) */
360
+ /**
361
+ * @private
362
+ */
363
+ const getCallState = (state, props) => { var _a; return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.state; };
331
364
 
332
365
  // Copyright (c) Microsoft Corporation.
333
366
  // Licensed under the MIT license.
@@ -375,6 +408,32 @@ const disposeAllLocalPreviewViews = (callClient) => __awaiter$s(void 0, void 0,
375
408
  yield callClient.disposeView(undefined, undefined, view);
376
409
  }
377
410
  });
411
+ /**
412
+ * Update the users displayNames based on the type of user they are
413
+ *
414
+ * @internal
415
+ */
416
+ const _updateUserDisplayNames = (participants) => {
417
+ if (participants) {
418
+ return memoizedUpdateDisplayName((memoizedFn) => {
419
+ return Object.values(participants).map((p) => {
420
+ const pid = toFlatCommunicationIdentifier(p.identifier);
421
+ return memoizedFn(pid, p);
422
+ });
423
+ });
424
+ }
425
+ else {
426
+ return [];
427
+ }
428
+ };
429
+ const memoizedUpdateDisplayName = memoizeFnAll((participantId, participant) => {
430
+ if (communicationCommon.isPhoneNumberIdentifier(participant.identifier)) {
431
+ return Object.assign(Object.assign({}, participant), { displayName: participant.identifier.phoneNumber });
432
+ }
433
+ else {
434
+ return participant;
435
+ }
436
+ });
378
437
 
379
438
  // Copyright (c) Microsoft Corporation.
380
439
  /**
@@ -403,7 +462,7 @@ const cameraButtonSelector = reselect__namespace.createSelector([getLocalVideoSt
403
462
  const localVideoFromCall = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');
404
463
  const permission = deviceManager.deviceAccess ? deviceManager.deviceAccess.video : true;
405
464
  return {
406
- disabled: !deviceManager.selectedCamera || !permission,
465
+ disabled: !deviceManager.selectedCamera || !permission || !deviceManager.cameras.length,
407
466
  checked: localVideoStreams !== undefined && localVideoStreams.length > 0 ? !!localVideoFromCall : previewOn,
408
467
  cameras: deviceManager.cameras,
409
468
  selectedCamera: deviceManager.selectedCamera
@@ -434,6 +493,16 @@ const devicesButtonSelector = reselect__namespace.createSelector([getDeviceManag
434
493
  selectedCamera: deviceManager.selectedCamera
435
494
  };
436
495
  });
496
+ /* @conditional-compile-remove(PSTN-calls) */
497
+ /**
498
+ * Selector for the {@link HoldButton} component.
499
+ * @public
500
+ */
501
+ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (callState) => {
502
+ return {
503
+ checked: callState === 'LocalHold'
504
+ };
505
+ });
437
506
 
438
507
  // Copyright (c) Microsoft Corporation.
439
508
  // Licensed under the MIT license.
@@ -660,6 +729,8 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
660
729
  yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant));
661
730
  }
662
731
  });
732
+ /* @conditional-compile-remove(dialpad) */
733
+ const onSendDtmfTone = (dtmfTone) => __awaiter$r(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
663
734
  return {
664
735
  onHangUp,
665
736
  /* @conditional-compile-remove(PSTN-calls) */
@@ -680,7 +751,9 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
680
751
  onAddParticipant,
681
752
  onStartLocalVideo,
682
753
  onDisposeRemoteStreamView,
683
- onDisposeLocalStreamView
754
+ onDisposeLocalStreamView,
755
+ /* @conditional-compile-remove(dialpad) */
756
+ onSendDtmfTone
684
757
  };
685
758
  });
686
759
  /**
@@ -855,33 +928,33 @@ const typingIndicatorStringStyle = react.mergeStyles({
855
928
  wordBreak: 'break-word'
856
929
  });
857
930
 
858
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait."};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$d={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d};
931
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$d={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed Participant"};var dialpad$d={placeholderText:"Enter a number"};var HoldButton$e={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,HoldButton:HoldButton$e};
859
932
 
860
- var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait."};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$c={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",editedTag:"Edited",liveAuthorIntro:"{author} says",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Cycle camera"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c};
933
+ var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait."};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$c={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed Participant"};var dialpad$c={placeholderText:"Enter a number"};var HoldButton$d={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c,dialpad:dialpad$c,HoldButton:HoldButton$d};
861
934
 
862
- var participantItem$b={isMeText:"(Sie)",menuTitle:"Weitere Optionen",removeButtonLabel:"Entfernen",sharingIconLabel:"Teilen",mutedIconLabel:"Stumm geschaltet"};var typingIndicator$b={singleUser:"{user} schreibt ...",multipleUsers:"{users} schreiben ...",multipleUsersAbbreviateOne:"{users} und 1 andere Person schreiben ...",multipleUsersAbbreviateMany:"{users} und {numOthers} andere schreiben ...",delimiter:", "};var sendBox$b={placeholderText:"Nachricht eingeben",textTooLong:"Ihre Nachrichtenlänge überschreitet den maximalen Grenzwert.",sendButtonAriaLabel:"Nachricht senden",fileUploadsPendingError:"Wird hochgeladen... Bitte warten."};var messageStatusIndicator$b={deliveredAriaLabel:"Nachricht gesendet",deliveredTooltipText:"Gesendet",seenAriaLabel:"Nachricht von anderen gesehen",seenTooltipText:"Gesehen",readByTooltipText:"Gelesen von {messageThreadReadCount} von {remoteParticipantsCount}",sendingAriaLabel:"Nachricht wird gesendet",sendingTooltipText:"Wird gesendet",failedToSendAriaLabel:"Nachricht konnte nicht gesendet werden",failedToSendTooltipText:"Fehler beim Senden"};var endCallButton$b={label:"Verlassen",tooltipContent:"Anruf verlassen"};var cameraButton$b={onLabel:"Deaktivieren",offLabel:"Aktivieren",tooltipDisabledContent:"Kamera ist deaktiviert",tooltipOnContent:"Kamera ausschalten",tooltipOffContent:"Kamera einschalten",tooltipVideoLoadingContent:"Video wird geladen",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera auswählen"};var microphoneButton$b={onLabel:"Stumm schalten",offLabel:"Stummschaltung aufheben",tooltipDisabledContent:"Mikrofon ist deaktiviert",tooltipOnContent:"Mikrofon stummschalten",tooltipOffContent:"Mikrofonstummschaltung aufheben",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon auswählen",speakerMenuTitle:"Lautsprecher",speakerMenuTooltip:"Lautsprecher auswählen"};var devicesButton$b={label:"Geräte",tooltipContent:"Geräte verwalten",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera auswählen",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon auswählen",speakerMenuTitle:"Lautsprecher",speakerMenuTooltip:"Lautsprecher auswählen"};var participantsButton$b={label:"Personen",tooltipContent:"Teilnehmer anzeigen",menuHeader:"In diesem Anruf",participantsListButtonLabel:"{numParticipants} Personen",muteAllButtonLabel:"Alle stumm schalten",copyInviteLinkButtonLabel:"Einladungslink kopieren"};var screenShareButton$b={onLabel:"Präsentation beenden",offLabel:"Präsentieren",tooltipDisabledContent:"Präsentieren ist deaktiviert",tooltipOnContent:"Ihr Bildschirm wird präsentiert",tooltipOffContent:"Präsentieren Sie Ihren Bildschirm"};var messageThread$b={yesterday:"Gestern",sunday:"Sonntag",monday:"Montag",tuesday:"Dienstag",wednesday:"Mittwoch",thursday:"Donnerstag",friday:"Freitag",saturday:"Samstag",participantJoined:"ist dem Chat beigetreten.",participantLeft:"hat den Chat verlassen.",editMessage:"Bearbeiten",removeMessage:"Löschen",editedTag:"Bearbeitet",liveAuthorIntro:"{author} sagt",editBoxTextLimit:"Ihre Nachricht überschreitet das Limit von {limitNumber} Zeichen.",editBoxPlaceholderText:"Bearbeiten Sie Ihre Nachricht",newMessagesIndicator:"Neue Nachrichten",noDisplayNameSub:"Kein Name",editBoxCancelButton:"Abbrechen",editBoxSubmitButton:"Übermitteln",messageReadCount:"Gelesen von {messageReadByCount} von {remoteParticipantsCount}"};var errorBar$b={unableToReachChatService:"Sie sind offline.",accessDenied:"Auf die Chatdienste kann nicht zugegriffen werden. Überprüfen Sie die angegebenen Benutzeranmeldeinformationen.",userNotInChatThread:"Sie sind nicht mehr in diesem Chatthread vertreten.",sendMessageNotInChatThread:"Fehler beim Senden der Nachricht, weil Sie sich nicht mehr in diesem Chatthread befinden.",sendMessageGeneric:"Fehler beim Senden der Nachricht",callingNetworkFailure:"Problematische Anrufverbindung – Sie scheinen offline zu sein",startVideoGeneric:"Video konnte nicht gestartet werden",stopVideoGeneric:"Video konnte nicht beendet werden",muteGeneric:"Mikrofon konnte nicht stummgeschaltet werden",unmuteGeneric:"Stummschaltung des Mikrofons konnte nicht beendet werden",speakingWhileMuted:"Ihr Mikrofon ist stummgeschaltet",startScreenShareGeneric:"Bildschirmfreigabe konnte nicht gestartet werden",stopScreenShareGeneric:"Bildschirmfreigabe konnte nicht beendet werden",callNetworkQualityLow:"Die Netzwerkqualität ist niedrig.",callNoSpeakerFound:"Keine Lautsprecher oder Kopfhörer gefunden. Schließen Sie ein Audiogerät an, um den Anruf zu hören.",callNoMicrophoneFound:"Es wurden keine Mikrofone gefunden. Schließen Sie ein Audioeingabegerät an.",callMicrophoneAccessDenied:"Auf das Mikrofon kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",callMicrophoneMutedBySystem:"Sie werden von Ihrem System stummgeschaltet.",callMacOsMicrophoneAccessDenied:"Auf das Mikrofon kann nicht zugegriffen werden. Erteilen Sie die Mikrofonberechtigung in Ihren macOS-Datenschutzeinstellungen.",callLocalVideoFreeze:"Die Netzwerkbandbreite ist schlecht. Ihr Video wird möglicherweise für andere Personen während des Anrufs angehalten angezeigt.",callCameraAccessDenied:"Auf die Kamera kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",callCameraAlreadyInUse:"Auf die Kamera kann nicht zugegriffen werden. Sie wird möglicherweise bereits von einer anderen Anwendung verwendet.",callMacOsCameraAccessDenied:"MacOS blockiert den Zugriff auf Ihre Kamera. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser auf Ihre Kamera zugreifen kann.",callMacOsScreenShareAccessDenied:"MacOS blockiert die Bildschirmfreigabe. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser Ihren Bildschirm aufzeichnen kann."};var videoGallery$b={screenIsBeingSharedMessage:"Sie teilen Ihren Bildschirm",screenShareLoadingMessage:"Der Bildschirm von {participant} wird geladen",localVideoLabel:"Sie",localVideoCameraSwitcherLabel:"Fahrrad-/Motorrad-Kamera"};var de_DE$1 = {participantItem:participantItem$b,typingIndicator:typingIndicator$b,sendBox:sendBox$b,messageStatusIndicator:messageStatusIndicator$b,endCallButton:endCallButton$b,cameraButton:cameraButton$b,microphoneButton:microphoneButton$b,devicesButton:devicesButton$b,participantsButton:participantsButton$b,screenShareButton:screenShareButton$b,messageThread:messageThread$b,errorBar:errorBar$b,videoGallery:videoGallery$b};
935
+ var participantItem$b={isMeText:"(Sie)",menuTitle:"Weitere Optionen",removeButtonLabel:"Entfernen",sharingIconLabel:"Teilen",mutedIconLabel:"Stumm geschaltet",displayNamePlaceholder:"Unbenannter Teilnehmer"};var typingIndicator$b={singleUser:"{user} schreibt ...",multipleUsers:"{users} schreiben ...",multipleUsersAbbreviateOne:"{users} und 1 andere Person schreiben ...",multipleUsersAbbreviateMany:"{users} und {numOthers} andere schreiben ...",delimiter:", "};var sendBox$b={placeholderText:"Nachricht eingeben",textTooLong:"Ihre Nachrichtenlänge überschreitet den maximalen Grenzwert.",sendButtonAriaLabel:"Nachricht senden",fileUploadsPendingError:"Wird hochgeladen... Bitte warten."};var messageStatusIndicator$b={deliveredAriaLabel:"Nachricht gesendet",deliveredTooltipText:"Gesendet",seenAriaLabel:"Nachricht von anderen gesehen",seenTooltipText:"Gesehen",readByTooltipText:"Gelesen von {messageThreadReadCount} von {remoteParticipantsCount}",sendingAriaLabel:"Nachricht wird gesendet",sendingTooltipText:"Wird gesendet",failedToSendAriaLabel:"Nachricht konnte nicht gesendet werden",failedToSendTooltipText:"Fehler beim Senden"};var endCallButton$b={label:"Verlassen",tooltipContent:"Anruf verlassen"};var cameraButton$b={onLabel:"Deaktivieren",offLabel:"Aktivieren",tooltipDisabledContent:"Kamera ist deaktiviert",tooltipOnContent:"Kamera ausschalten",tooltipOffContent:"Kamera einschalten",tooltipVideoLoadingContent:"Video wird geladen",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera auswählen",cameraButtonSplitRoleDescription:"Unterteilte Schaltfläche",onSplitButtonAriaLabel:"Kamera und Kameraoptionen deaktivieren",offSplitButtonAriaLabel:"Kamera und Kameraoptionen aktivieren",cameraActionTurnedOnAnnouncement:"Ihre Kamera wurde eingeschaltet.",cameraActionTurnedOffAnnouncement:"Ihre Kamera wurde ausgeschaltet."};var microphoneButton$b={onLabel:"Stumm schalten",offLabel:"Stummschaltung aufheben",tooltipDisabledContent:"Mikrofon ist deaktiviert",tooltipOnContent:"Mikrofon stummschalten",tooltipOffContent:"Mikrofonstummschaltung aufheben",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon auswählen",speakerMenuTitle:"Lautsprecher",speakerMenuTooltip:"Lautsprecher auswählen",microphoneButtonSplitRoleDescription:"Unterteilte Schaltfläche",onSplitButtonAriaLabel:"Mikrofon- und Audiooptionen stummschalten",offSplitButtonAriaLabel:"Stummschaltung von Mikrofon- und Audiooptionen aufheben",microphoneActionTurnedOnAnnouncement:"Ihr Mikrofon wurde eingeschaltet.",microphoneActionTurnedOffAnnouncement:"Ihr Mikrofon wurde ausgeschaltet."};var devicesButton$b={label:"Geräte",tooltipContent:"Geräte verwalten",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera auswählen",audioDeviceMenuTitle:"Audiogerät",audioDeviceMenuTooltip:"Audiogerät auswählen",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon auswählen",speakerMenuTitle:"Lautsprecher",speakerMenuTooltip:"Lautsprecher auswählen"};var participantsButton$b={label:"Personen",tooltipContent:"Teilnehmer anzeigen",menuHeader:"In diesem Anruf",participantsListButtonLabel:"{numParticipants} Personen",muteAllButtonLabel:"Alle stumm schalten",copyInviteLinkButtonLabel:"Einladungslink kopieren"};var screenShareButton$b={onLabel:"Präsentation beenden",offLabel:"Präsentieren",tooltipDisabledContent:"Präsentieren ist deaktiviert",tooltipOnContent:"Ihr Bildschirm wird präsentiert",tooltipOffContent:"Präsentieren Sie Ihren Bildschirm"};var messageThread$b={yesterday:"Gestern",sunday:"Sonntag",monday:"Montag",tuesday:"Dienstag",wednesday:"Mittwoch",thursday:"Donnerstag",friday:"Freitag",saturday:"Samstag",participantJoined:"ist dem Chat beigetreten.",participantLeft:"hat den Chat verlassen.",editMessage:"Bearbeiten",removeMessage:"Löschen",resendMessage:"Erneut senden",failToSendTag:"Fehler beim Senden",editedTag:"Bearbeitet",liveAuthorIntro:"{author} sagt",editBoxTextLimit:"Ihre Nachricht überschreitet das Limit von {limitNumber} Zeichen.",editBoxPlaceholderText:"Bearbeiten Sie Ihre Nachricht",newMessagesIndicator:"Neue Nachrichten",noDisplayNameSub:"Kein Name",editBoxCancelButton:"Abbrechen",editBoxSubmitButton:"Übermitteln",messageReadCount:"Gelesen von {messageReadByCount} von {remoteParticipantsCount}",actionMenuMoreOptions:"Weitere Optionen"};var errorBar$b={unableToReachChatService:"Sie sind offline.",accessDenied:"Auf die Chatdienste kann nicht zugegriffen werden. Überprüfen Sie die angegebenen Benutzeranmeldeinformationen.",userNotInChatThread:"Sie sind nicht mehr in diesem Chatthread vertreten.",sendMessageNotInChatThread:"Fehler beim Senden der Nachricht, weil Sie sich nicht mehr in diesem Chatthread befinden.",sendMessageGeneric:"Fehler beim Senden der Nachricht",callingNetworkFailure:"Problematische Anrufverbindung – Sie scheinen offline zu sein",startVideoGeneric:"Video konnte nicht gestartet werden",stopVideoGeneric:"Video konnte nicht beendet werden",muteGeneric:"Mikrofon konnte nicht stummgeschaltet werden",unmuteGeneric:"Stummschaltung des Mikrofons konnte nicht beendet werden",speakingWhileMuted:"Ihr Mikrofon ist stummgeschaltet",startScreenShareGeneric:"Bildschirmfreigabe konnte nicht gestartet werden",stopScreenShareGeneric:"Bildschirmfreigabe konnte nicht beendet werden",callNetworkQualityLow:"Die Netzwerkqualität ist niedrig.",callNoSpeakerFound:"Keine Lautsprecher oder Kopfhörer gefunden. Schließen Sie ein Audiogerät an, um den Anruf zu hören.",callNoMicrophoneFound:"Es wurden keine Mikrofone gefunden. Schließen Sie ein Audioeingabegerät an.",callMicrophoneAccessDenied:"Auf das Mikrofon kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",callMicrophoneMutedBySystem:"Sie werden von Ihrem System stummgeschaltet.",callMacOsMicrophoneAccessDenied:"Auf das Mikrofon kann nicht zugegriffen werden. Erteilen Sie die Mikrofonberechtigung in Ihren macOS-Datenschutzeinstellungen.",callLocalVideoFreeze:"Die Netzwerkbandbreite ist schlecht. Ihr Video wird möglicherweise für andere Personen während des Anrufs angehalten angezeigt.",callCameraAccessDenied:"Auf die Kamera kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",callCameraAlreadyInUse:"Auf die Kamera kann nicht zugegriffen werden. Sie wird möglicherweise bereits von einer anderen Anwendung verwendet.",callMacOsCameraAccessDenied:"MacOS blockiert den Zugriff auf Ihre Kamera. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser auf Ihre Kamera zugreifen kann.",callMacOsScreenShareAccessDenied:"MacOS blockiert die Bildschirmfreigabe. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser Ihren Bildschirm aufzeichnen kann.",dismissButtonAriaLabel:"Schließen",failedToJoinCallGeneric:"Fehler bei der Teilnahme am Anruf.",failedToJoinCallInvalidMeetingLink:"Teilnahme an Besprechung nicht möglich. Ungültiger Link."};var videoGallery$b={screenIsBeingSharedMessage:"Sie teilen Ihren Bildschirm",screenShareLoadingMessage:"Der Bildschirm von {participant} wird geladen",localVideoLabel:"Sie",localVideoCameraSwitcherLabel:"Kamera wechseln",localVideoMovementLabel:"Verschiebbare lokale Videokachel",localVideoSelectedDescription:"{cameraName} ausgewählt",displayNamePlaceholder:"Unbenannter Teilnehmer"};var dialpad$b={placeholderText:"Eine Nummer eingeben"};var HoldButton$c={onLabel:"Fortsetzen",offLabel:"Halten",toolTipOnContent:"Anruf fortsetzen",toolTipOffContent:"Anruf halten"};var de_DE$1 = {participantItem:participantItem$b,typingIndicator:typingIndicator$b,sendBox:sendBox$b,messageStatusIndicator:messageStatusIndicator$b,endCallButton:endCallButton$b,cameraButton:cameraButton$b,microphoneButton:microphoneButton$b,devicesButton:devicesButton$b,participantsButton:participantsButton$b,screenShareButton:screenShareButton$b,messageThread:messageThread$b,errorBar:errorBar$b,videoGallery:videoGallery$b,dialpad:dialpad$b,HoldButton:HoldButton$c};
863
936
 
864
- var participantItem$a={isMeText:"(tú)",menuTitle:"Más opciones",removeButtonLabel:"Quitar",sharingIconLabel:"Compartiendo",mutedIconLabel:"Silenciado"};var typingIndicator$a={singleUser:"{user} está escribiendo...",multipleUsers:"{users} están escribiendo...",multipleUsersAbbreviateOne:"{users} y 1 usuario más están escribiendo...",multipleUsersAbbreviateMany:"{users} y {numOthers} usuarios más están escribiendo...",delimiter:", "};var sendBox$a={placeholderText:"Escribir un mensaje",textTooLong:"La longitud del mensaje supera el límite máximo.",sendButtonAriaLabel:"Enviar mensaje",fileUploadsPendingError:"Cargando... Espere."};var messageStatusIndicator$a={deliveredAriaLabel:"Mensaje enviado",deliveredTooltipText:"Enviado",seenAriaLabel:"Mensaje visto por otros usuarios",seenTooltipText:"Visto",readByTooltipText:"Leído por {messageThreadReadCount} de {remoteParticipantsCount}",sendingAriaLabel:"Envío de mensajes",sendingTooltipText:"Enviando",failedToSendAriaLabel:"Error al enviar el mensaje",failedToSendTooltipText:"Error al enviar"};var endCallButton$a={label:"Baja",tooltipContent:"Abandonar llamada"};var cameraButton$a={onLabel:"Desactivar",offLabel:"Activar",tooltipDisabledContent:"La cámara está deshabilitada",tooltipOnContent:"Desconectar la cámara",tooltipOffContent:"Activar la cámara",tooltipVideoLoadingContent:"El vídeo se está cargando",cameraMenuTitle:"Cámara",cameraMenuTooltip:"Elegir cámara"};var microphoneButton$a={onLabel:"Silenciar",offLabel:"Reactivar audio",tooltipDisabledContent:"El micrófono está deshabilitado",tooltipOnContent:"Silenciar micrófono",tooltipOffContent:"Reactivar micrófono",microphoneMenuTitle:"Micrófono",microphoneMenuTooltip:"Elegir micrófono",speakerMenuTitle:"Altavoz",speakerMenuTooltip:"Elegir altavoz"};var devicesButton$a={label:"Dispositivos",tooltipContent:"Administrar dispositivos",cameraMenuTitle:"Cámara",cameraMenuTooltip:"Elegir cámara",microphoneMenuTitle:"Micrófono",microphoneMenuTooltip:"Elegir micrófono",speakerMenuTitle:"Altavoz",speakerMenuTooltip:"Elegir altavoz"};var participantsButton$a={label:"Contactos",tooltipContent:"Mostrar participantes",menuHeader:"En esta llamada",participantsListButtonLabel:"{numParticipants} personas",muteAllButtonLabel:"Silenciar a todos",copyInviteLinkButtonLabel:"Copiar vínculo de invitación"};var screenShareButton$a={onLabel:"Dejar de presentar",offLabel:"Presentar",tooltipDisabledContent:"La presentación está deshabilitada",tooltipOnContent:"Presentando su pantalla",tooltipOffContent:"Presentar la pantalla"};var messageThread$a={yesterday:"Ayer",sunday:"Domingo",monday:"Lunes",tuesday:"Martes",wednesday:"Miércoles",thursday:"Jueves",friday:"Viernes",saturday:"Sábado",participantJoined:"se unió al chat.",participantLeft:"abandonó el chat.",editMessage:"Editar",removeMessage:"Eliminar",editedTag:"Editado",liveAuthorIntro:"{author} dice",editBoxTextLimit:"El mensaje supera el límite de {limitNumber} caracteres",editBoxPlaceholderText:"Editar el mensaje",newMessagesIndicator:"Mensajes nuevos",noDisplayNameSub:"Sin nombre",editBoxCancelButton:"Cancelar",editBoxSubmitButton:"Enviar",messageReadCount:"Leído por {messageReadByCount} de {remoteParticipantsCount}"};var errorBar$a={unableToReachChatService:"Sin conexión",accessDenied:"No se puede acceder a los servicios de chat. Compruebe las credenciales de usuario proporcionadas.",userNotInChatThread:"Ya no está en este hilo de chat",sendMessageNotInChatThread:"No se pudo enviar el mensaje porque ya no está en este hilo de chat",sendMessageGeneric:"Error al enviar el mensaje",callingNetworkFailure:"Problema al conectar la llamada; parece que no hay conexión",startVideoGeneric:"No se pudo iniciar el vídeo",stopVideoGeneric:"No se pudo detener el vídeo",muteGeneric:"No se pudo silenciar el micrófono",unmuteGeneric:"No se pudo reactivar el micrófono",speakingWhileMuted:"El micrófono está desactivado",startScreenShareGeneric:"No se pudo iniciar la pantalla compartida",stopScreenShareGeneric:"No se pudo detener la pantalla compartida",callNetworkQualityLow:"La calidad de la red es baja.",callNoSpeakerFound:"No se encontraron altavoces ni auriculares. Conecta un dispositivo de audio para escuchar la llamada.",callNoMicrophoneFound:"No se encontraron micrófonos. Conecta un dispositivo de entrada de audio.",callMicrophoneAccessDenied:"No se puede acceder al micrófono. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",callMicrophoneMutedBySystem:"Su sistema ha silenciado su audio.",callMacOsMicrophoneAccessDenied:"No se puede acceder al micrófono. Conceda permiso al micrófono en la configuración de privacidad de macOS.",callLocalVideoFreeze:"El ancho de banda de red es deficiente. Es posible que el vídeo aparezca pausado para otros usuarios en la llamada.",callCameraAccessDenied:"No se puede acceder a la cámara. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",callCameraAlreadyInUse:"No se puede acceder a la cámara. Puede que ya la esté usando otra aplicación.",callMacOsCameraAccessDenied:"MacOS está bloqueando el acceso a la cámara. Actualiza la configuración de privacidad para permitir que este explorador acceda a la cámara.",callMacOsScreenShareAccessDenied:"MacOS está bloqueando el uso compartido de la pantalla. Actualice la configuración de privacidad para permitir que este explorador grabe la pantalla."};var videoGallery$a={screenIsBeingSharedMessage:"Está compartiendo su pantalla",screenShareLoadingMessage:"Cargando la pantalla de {participant}",localVideoLabel:"Tú",localVideoCameraSwitcherLabel:"Cámara de ciclo"};var es_ES$1 = {participantItem:participantItem$a,typingIndicator:typingIndicator$a,sendBox:sendBox$a,messageStatusIndicator:messageStatusIndicator$a,endCallButton:endCallButton$a,cameraButton:cameraButton$a,microphoneButton:microphoneButton$a,devicesButton:devicesButton$a,participantsButton:participantsButton$a,screenShareButton:screenShareButton$a,messageThread:messageThread$a,errorBar:errorBar$a,videoGallery:videoGallery$a};
937
+ var participantItem$a={isMeText:"(tú)",menuTitle:"Más opciones",removeButtonLabel:"Quitar",sharingIconLabel:"Compartiendo",mutedIconLabel:"Silenciado",displayNamePlaceholder:"Participante sin nombre"};var typingIndicator$a={singleUser:"{user} está escribiendo...",multipleUsers:"{users} están escribiendo...",multipleUsersAbbreviateOne:"{users} y 1 usuario más están escribiendo...",multipleUsersAbbreviateMany:"{users} y {numOthers} usuarios más están escribiendo...",delimiter:", "};var sendBox$a={placeholderText:"Escribir un mensaje",textTooLong:"La longitud del mensaje supera el límite máximo.",sendButtonAriaLabel:"Enviar mensaje",fileUploadsPendingError:"Cargando... Espere."};var messageStatusIndicator$a={deliveredAriaLabel:"Mensaje enviado",deliveredTooltipText:"Enviado",seenAriaLabel:"Mensaje visto por otros usuarios",seenTooltipText:"Visto",readByTooltipText:"Leído por {messageThreadReadCount} de {remoteParticipantsCount}",sendingAriaLabel:"Envío de mensajes",sendingTooltipText:"Enviando",failedToSendAriaLabel:"Error al enviar el mensaje",failedToSendTooltipText:"Error al enviar"};var endCallButton$a={label:"Baja",tooltipContent:"Abandonar llamada"};var cameraButton$a={onLabel:"Desactivar",offLabel:"Activar",tooltipDisabledContent:"La cámara está deshabilitada",tooltipOnContent:"Desconectar la cámara",tooltipOffContent:"Activar la cámara",tooltipVideoLoadingContent:"El vídeo se está cargando",cameraMenuTitle:"Cámara",cameraMenuTooltip:"Elegir cámara",cameraButtonSplitRoleDescription:"Botón de expansión",onSplitButtonAriaLabel:"Desactivar la cámara y las opciones de cámara",offSplitButtonAriaLabel:"Activar la cámara y las opciones de cámara",cameraActionTurnedOnAnnouncement:"La cámara se ha activado",cameraActionTurnedOffAnnouncement:"La cámara se ha desactivado"};var microphoneButton$a={onLabel:"Silenciar",offLabel:"Reactivar audio",tooltipDisabledContent:"Micrófono deshabilitado",tooltipOnContent:"Silenciar micrófono",tooltipOffContent:"Reactivar micrófono",microphoneMenuTitle:"Micrófono",microphoneMenuTooltip:"Elegir micrófono",speakerMenuTitle:"Altavoz",speakerMenuTooltip:"Elegir altavoz",microphoneButtonSplitRoleDescription:"Botón de expansión",onSplitButtonAriaLabel:"Silenciar opciones de micrófono y audio",offSplitButtonAriaLabel:"Reactivar el micrófono y las opciones de audio",microphoneActionTurnedOnAnnouncement:"El micrófono se ha activado",microphoneActionTurnedOffAnnouncement:"El micrófono se ha desactivado"};var devicesButton$a={label:"Dispositivos",tooltipContent:"Administrar dispositivos",cameraMenuTitle:"Cámara",cameraMenuTooltip:"Elegir cámara",audioDeviceMenuTitle:"Dispositivo de audio",audioDeviceMenuTooltip:"Elegir dispositivo de audio",microphoneMenuTitle:"Micrófono",microphoneMenuTooltip:"Elegir micrófono",speakerMenuTitle:"Altavoz",speakerMenuTooltip:"Elegir altavoz"};var participantsButton$a={label:"Contactos",tooltipContent:"Mostrar participantes",menuHeader:"En esta llamada",participantsListButtonLabel:"{numParticipants} personas",muteAllButtonLabel:"Silenciar a todos",copyInviteLinkButtonLabel:"Copiar vínculo de invitación"};var screenShareButton$a={onLabel:"Dejar de presentar",offLabel:"Presentar",tooltipDisabledContent:"La presentación está deshabilitada",tooltipOnContent:"Presentando su pantalla",tooltipOffContent:"Presentar la pantalla"};var messageThread$a={yesterday:"Ayer",sunday:"Domingo",monday:"Lunes",tuesday:"Martes",wednesday:"Miércoles",thursday:"Jueves",friday:"Viernes",saturday:"Sábado",participantJoined:"se unió al chat.",participantLeft:"abandonó el chat.",editMessage:"Editar",removeMessage:"Eliminar",resendMessage:"Intente enviar de nuevo",failToSendTag:"Error al enviar",editedTag:"Editado",liveAuthorIntro:"{author} dice",editBoxTextLimit:"El mensaje supera el límite de {limitNumber} caracteres",editBoxPlaceholderText:"Editar el mensaje",newMessagesIndicator:"Mensajes nuevos",noDisplayNameSub:"Sin nombre",editBoxCancelButton:"Cancelar",editBoxSubmitButton:"Enviar",messageReadCount:"Leído por {messageReadByCount} de {remoteParticipantsCount}",actionMenuMoreOptions:"Más opciones"};var errorBar$a={unableToReachChatService:"Sin conexión",accessDenied:"No se puede acceder a los servicios de chat. Compruebe las credenciales de usuario proporcionadas.",userNotInChatThread:"Ya no está en este hilo de chat",sendMessageNotInChatThread:"No se pudo enviar el mensaje porque ya no está en este hilo de chat",sendMessageGeneric:"Error al enviar el mensaje",callingNetworkFailure:"Problema al conectar la llamada; parece que no hay conexión",startVideoGeneric:"No se pudo iniciar el vídeo",stopVideoGeneric:"No se pudo detener el vídeo",muteGeneric:"No se pudo silenciar el micrófono",unmuteGeneric:"No se pudo reactivar el micrófono",speakingWhileMuted:"El micrófono está desactivado",startScreenShareGeneric:"No se pudo iniciar la pantalla compartida",stopScreenShareGeneric:"No se pudo detener la pantalla compartida",callNetworkQualityLow:"La calidad de la red es baja.",callNoSpeakerFound:"No se encontraron altavoces ni auriculares. Conecta un dispositivo de audio para escuchar la llamada.",callNoMicrophoneFound:"No se encontraron micrófonos. Conecta un dispositivo de entrada de audio.",callMicrophoneAccessDenied:"No se puede acceder al micrófono. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",callMicrophoneMutedBySystem:"Su sistema ha silenciado su audio.",callMacOsMicrophoneAccessDenied:"No se puede acceder al micrófono. Conceda permiso al micrófono en la configuración de privacidad de macOS.",callLocalVideoFreeze:"El ancho de banda de red es deficiente. Es posible que el vídeo aparezca pausado para otros usuarios en la llamada.",callCameraAccessDenied:"No se puede acceder a la cámara. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",callCameraAlreadyInUse:"No se puede acceder a la cámara. Puede que ya la esté usando otra aplicación.",callMacOsCameraAccessDenied:"MacOS está bloqueando el acceso a la cámara. Actualiza la configuración de privacidad para permitir que este explorador acceda a la cámara.",callMacOsScreenShareAccessDenied:"MacOS está bloqueando el uso compartido de la pantalla. Actualice la configuración de privacidad para permitir que este explorador grabe la pantalla.",dismissButtonAriaLabel:"Cerrar",failedToJoinCallGeneric:"No se pudo unir a la llamada.",failedToJoinCallInvalidMeetingLink:"No se puede unir a la reunión. Vínculo no válido."};var videoGallery$a={screenIsBeingSharedMessage:"Está compartiendo su pantalla",screenShareLoadingMessage:"Cargando la pantalla de {participant}",localVideoLabel:"Tú",localVideoCameraSwitcherLabel:"Cambiar de cámara",localVideoMovementLabel:"Mosaico de vídeo local movible",localVideoSelectedDescription:"{cameraName} seleccionada",displayNamePlaceholder:"Participante sin nombre"};var dialpad$a={placeholderText:"Introducir un número"};var HoldButton$b={onLabel:"Reanudar",offLabel:"En espera",toolTipOnContent:"Reanudar llamada",toolTipOffContent:"Poner llamada en espera"};var es_ES$1 = {participantItem:participantItem$a,typingIndicator:typingIndicator$a,sendBox:sendBox$a,messageStatusIndicator:messageStatusIndicator$a,endCallButton:endCallButton$a,cameraButton:cameraButton$a,microphoneButton:microphoneButton$a,devicesButton:devicesButton$a,participantsButton:participantsButton$a,screenShareButton:screenShareButton$a,messageThread:messageThread$a,errorBar:errorBar$a,videoGallery:videoGallery$a,dialpad:dialpad$a,HoldButton:HoldButton$b};
865
938
 
866
- var participantItem$9={isMeText:"(vous)",menuTitle:"Plus d’options",removeButtonLabel:"Supprimer",sharingIconLabel:"Partage",mutedIconLabel:"Muet activé"};var typingIndicator$9={singleUser:"{user} en train d’écrire...",multipleUsers:"{users} sont en train d'écrire...",multipleUsersAbbreviateOne:"{users} et 1 autre en train d'écrire...",multipleUsersAbbreviateMany:"{users} et {numOthers} autres en train d’écrire...",delimiter:", "};var sendBox$9={placeholderText:"Saisir un message",textTooLong:"La longueur de votre message dépasse la limite maximale.",sendButtonAriaLabel:"Envoyer un message",fileUploadsPendingError:"Chargement en cours... Veuillez patienter."};var messageStatusIndicator$9={deliveredAriaLabel:"Message envoyé",deliveredTooltipText:"Envoyé",seenAriaLabel:"Message vu par d’autres personnes",seenTooltipText:"Vu",readByTooltipText:"Lu par {messageThreadReadCount} participants sur {remoteParticipantsCount}",sendingAriaLabel:"Envoi du message",sendingTooltipText:"Envoi",failedToSendAriaLabel:"Échec d'envoi du message",failedToSendTooltipText:"Échec de l'envoi"};var endCallButton$9={label:"Quitter",tooltipContent:"Quitter l’appel"};var cameraButton$9={onLabel:"Désactiver",offLabel:"Activer",tooltipDisabledContent:"La caméra est désactivée.",tooltipOnContent:"Désactiver la caméra",tooltipOffContent:"Activer la caméra",tooltipVideoLoadingContent:"Chargement de la vidéo",cameraMenuTitle:"Caméra",cameraMenuTooltip:"Choisissez l'appareil photo"};var microphoneButton$9={onLabel:"Désactiver le son",offLabel:"Réactiver le son",tooltipDisabledContent:"Le microphone est désactivé.",tooltipOnContent:"Désactiver le micro",tooltipOffContent:"Activer le micro",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choisissez le micro",speakerMenuTitle:"Haut-parleur",speakerMenuTooltip:"Choisissez le haut-parleur"};var devicesButton$9={label:"Appareils",tooltipContent:"Gérer les appareils",cameraMenuTitle:"Appareil photo",cameraMenuTooltip:"Choisir une caméra",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choisir le micro",speakerMenuTitle:"Haut-parleur",speakerMenuTooltip:"Choisir une enceinte"};var participantsButton$9={label:"Personnes",tooltipContent:"Afficher les participants",menuHeader:"Pendant cet appel",participantsListButtonLabel:"{numParticipants} contacts",muteAllButtonLabel:"Désactiver tous les micros",copyInviteLinkButtonLabel:"Copier le lien d'invitation"};var screenShareButton$9={onLabel:"Arrêter la présentation",offLabel:"Présenter",tooltipDisabledContent:"La présentation est désactivée.",tooltipOnContent:"Présentation de votre écran",tooltipOffContent:"Présenter votre écran"};var messageThread$9={yesterday:"Hier",sunday:"Dimanche",monday:"Lundi",tuesday:"Mardi",wednesday:"Mercredi",thursday:"Jeudi",friday:"Vendredi",saturday:"Samedi",participantJoined:"a rejoint la conversation.",participantLeft:"a quitté le conversation.",editMessage:"Modifier",removeMessage:"Supprimer",editedTag:"Modifié",liveAuthorIntro:"{author} dit",editBoxTextLimit:"Votre message dépasse la limite de {limitNumber} caractères",editBoxPlaceholderText:"Modifier votre message",newMessagesIndicator:"Nouveaux messages",noDisplayNameSub:"Sans nom",editBoxCancelButton:"Annuler",editBoxSubmitButton:"Envoyer",messageReadCount:"Lu par {messageReadByCount} participants sur {remoteParticipantsCount}"};var errorBar$9={unableToReachChatService:"Vous êtes hors connexion",accessDenied:"Impossible d’accéder aux services de conversation. Vérifiez les informations d’identification de l’utilisateur fournies",userNotInChatThread:"Vous n’est plus dans ce thread de conversation",sendMessageNotInChatThread:"Échec de l’envoi du message car vous n’êtes plus dans ce thread de conversation",sendMessageGeneric:"Échec de l’envoi du message",callingNetworkFailure:"Perturbation de l’appel de connexion : vous semblez être hors connexion",startVideoGeneric:"Échec du démarrage de la vidéo",stopVideoGeneric:"Échec de l’arrêt de la vidéo",muteGeneric:"Échec de la désactivation du son du microphone",unmuteGeneric:"Échec de l’activation du son du microphone",speakingWhileMuted:"Votre micro est désactivé",startScreenShareGeneric:"Échec du démarrage du partage d’écran",stopScreenShareGeneric:"Échec de l’arrêt du partage d’écran",callNetworkQualityLow:"La qualité de réseau est faible.",callNoSpeakerFound:"Aucun haut-parleur ou casque n’a été trouvé. Connectez un périphérique audio pour entendre l’appel.",callNoMicrophoneFound:"Aucun micro n’a été trouvé. Connectez un périphérique d’entrée audio.",callMicrophoneAccessDenied:"Impossible d’accéder au microphone. Cliquez sur le verrou dans la barre d’adresses pour accorder l’autorisation à cette page Web.",callMicrophoneMutedBySystem:"Votre micro est désactivé par votre système.",callMacOsMicrophoneAccessDenied:"Impossible d’accéder au microphone. Accordez l’autorisation de microphone dans vos paramètres de confidentialité macOS.",callLocalVideoFreeze:"La bande passante réseau est médiocre. Votre vidéo peut apparaître suspendue pour les autres participants à l’appel.",callCameraAccessDenied:"Impossible d’accéder à la caméra. Cliquez sur le verrou dans la barre d’adresses pour accorder l’autorisation à cette page Web.",callCameraAlreadyInUse:"Impossible d’accéder à la caméra. Il est peut-être déjà utilisé par une autre application.",callMacOsCameraAccessDenied:"MacOS bloque l’accès à votre caméra. Mettez à jour vos paramètres de confidentialité pour autoriser ce navigateur à accéder à votre caméra.",callMacOsScreenShareAccessDenied:"MacOS bloque le partage d’écran. Mettez à jour vos paramètres de confidentialité pour permettre à ce navigateur d’enregistrer votre écran."};var videoGallery$9={screenIsBeingSharedMessage:"Vous partagez votre écran.",screenShareLoadingMessage:"Chargement de l’écran de {participant}",localVideoLabel:"Vous",localVideoCameraSwitcherLabel:"Faire un cycle de caméra"};var fr_FR$1 = {participantItem:participantItem$9,typingIndicator:typingIndicator$9,sendBox:sendBox$9,messageStatusIndicator:messageStatusIndicator$9,endCallButton:endCallButton$9,cameraButton:cameraButton$9,microphoneButton:microphoneButton$9,devicesButton:devicesButton$9,participantsButton:participantsButton$9,screenShareButton:screenShareButton$9,messageThread:messageThread$9,errorBar:errorBar$9,videoGallery:videoGallery$9};
939
+ var participantItem$9={isMeText:"(vous)",menuTitle:"Plus d’options",removeButtonLabel:"Supprimer",sharingIconLabel:"Partage",mutedIconLabel:"Muet activé",displayNamePlaceholder:"Participant non identifié"};var typingIndicator$9={singleUser:"{user} en train d’écrire...",multipleUsers:"{users} sont en train d'écrire...",multipleUsersAbbreviateOne:"{users} et 1 autre en train d'écrire...",multipleUsersAbbreviateMany:"{users} et {numOthers} autres en train d’écrire...",delimiter:", "};var sendBox$9={placeholderText:"Saisir un message",textTooLong:"La longueur de votre message dépasse la limite maximale.",sendButtonAriaLabel:"Envoyer un message",fileUploadsPendingError:"Chargement en cours... Veuillez patienter."};var messageStatusIndicator$9={deliveredAriaLabel:"Message envoyé",deliveredTooltipText:"Envoyé",seenAriaLabel:"Message vu par d’autres personnes",seenTooltipText:"Vu",readByTooltipText:"Lu par {messageThreadReadCount} participants sur {remoteParticipantsCount}",sendingAriaLabel:"Envoi du message",sendingTooltipText:"Envoi",failedToSendAriaLabel:"Échec d'envoi du message",failedToSendTooltipText:"Échec de l'envoi"};var endCallButton$9={label:"Quitter",tooltipContent:"Quitter l’appel"};var cameraButton$9={onLabel:"Désactiver",offLabel:"Activer",tooltipDisabledContent:"La caméra est désactivée.",tooltipOnContent:"Désactiver la caméra",tooltipOffContent:"Activer la caméra",tooltipVideoLoadingContent:"Chargement de la vidéo",cameraMenuTitle:"Caméra",cameraMenuTooltip:"Choisissez l'appareil photo",cameraButtonSplitRoleDescription:"Bouton partagé",onSplitButtonAriaLabel:"Désactiver les options d’appareil photo et d’appareil photo",offSplitButtonAriaLabel:"Activer les options d’appareil photo et d’appareil photo",cameraActionTurnedOnAnnouncement:"Votre caméra a été activée",cameraActionTurnedOffAnnouncement:"Votre caméra a été désactivée"};var microphoneButton$9={onLabel:"Désactiver le son",offLabel:"Réactiver le son",tooltipDisabledContent:"Le microphone est désactivé.",tooltipOnContent:"Désactiver le micro",tooltipOffContent:"Activer le micro",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choisissez le micro",speakerMenuTitle:"Haut-parleur",speakerMenuTooltip:"Choisissez le haut-parleur",microphoneButtonSplitRoleDescription:"Bouton partagé",onSplitButtonAriaLabel:"Désactiver le micro et les options audio",offSplitButtonAriaLabel:"Activer le son du microphone et des options audio",microphoneActionTurnedOnAnnouncement:"Votre micro a été activé",microphoneActionTurnedOffAnnouncement:"Votre micro a été désactivé"};var devicesButton$9={label:"Appareils",tooltipContent:"Gérer les appareils",cameraMenuTitle:"Appareil photo",cameraMenuTooltip:"Choisir une caméra",audioDeviceMenuTitle:"Périphérique audio",audioDeviceMenuTooltip:"Choisir un périphérique audio",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choisir le micro",speakerMenuTitle:"Haut-parleur",speakerMenuTooltip:"Choisir une enceinte"};var participantsButton$9={label:"Personnes",tooltipContent:"Afficher les participants",menuHeader:"Pendant cet appel",participantsListButtonLabel:"{numParticipants} contacts",muteAllButtonLabel:"Désactiver tous les micros",copyInviteLinkButtonLabel:"Copier le lien d'invitation"};var screenShareButton$9={onLabel:"Arrêter la présentation",offLabel:"Présenter",tooltipDisabledContent:"La présentation est désactivée.",tooltipOnContent:"Présentation de votre écran",tooltipOffContent:"Présenter votre écran"};var messageThread$9={yesterday:"Hier",sunday:"Dimanche",monday:"Lundi",tuesday:"Mardi",wednesday:"Mercredi",thursday:"Jeudi",friday:"Vendredi",saturday:"Samedi",participantJoined:"a rejoint la conversation.",participantLeft:"a quitté le conversation.",editMessage:"Modifier",removeMessage:"Supprimer",resendMessage:"Réessayer l'envoi",failToSendTag:"Échec de l'envoi",editedTag:"Modifié",liveAuthorIntro:"{author} dit",editBoxTextLimit:"Votre message dépasse la limite de {limitNumber} caractères",editBoxPlaceholderText:"Modifier votre message",newMessagesIndicator:"Nouveaux messages",noDisplayNameSub:"Sans nom",editBoxCancelButton:"Annuler",editBoxSubmitButton:"Envoyer",messageReadCount:"Lu par {messageReadByCount} participants sur {remoteParticipantsCount}",actionMenuMoreOptions:"Plus d’options"};var errorBar$9={unableToReachChatService:"Vous êtes hors connexion",accessDenied:"Impossible d’accéder aux services de conversation. Vérifiez les informations d’identification de l’utilisateur fournies",userNotInChatThread:"Vous n’est plus dans ce thread de conversation",sendMessageNotInChatThread:"Échec de l’envoi du message car vous n’êtes plus dans ce thread de conversation",sendMessageGeneric:"Échec de l’envoi du message",callingNetworkFailure:"Perturbation de l’appel de connexion : vous semblez être hors connexion",startVideoGeneric:"Échec du démarrage de la vidéo",stopVideoGeneric:"Échec de l’arrêt de la vidéo",muteGeneric:"Échec de la désactivation du son du microphone",unmuteGeneric:"Échec de l’activation du son du microphone",speakingWhileMuted:"Votre micro est désactivé",startScreenShareGeneric:"Échec du démarrage du partage d’écran",stopScreenShareGeneric:"Échec de l’arrêt du partage d’écran",callNetworkQualityLow:"La qualité de réseau est faible.",callNoSpeakerFound:"Aucun haut-parleur ou casque n’a été trouvé. Connectez un périphérique audio pour entendre l’appel.",callNoMicrophoneFound:"Aucun micro n’a été trouvé. Connectez un périphérique d’entrée audio.",callMicrophoneAccessDenied:"Impossible d’accéder au microphone. Cliquez sur le verrou dans la barre d’adresses pour accorder l’autorisation à cette page Web.",callMicrophoneMutedBySystem:"Votre micro est désactivé par votre système.",callMacOsMicrophoneAccessDenied:"Impossible d’accéder au microphone. Accordez l’autorisation de microphone dans vos paramètres de confidentialité macOS.",callLocalVideoFreeze:"La bande passante réseau est médiocre. Votre vidéo peut apparaître suspendue pour les autres participants à l’appel.",callCameraAccessDenied:"Impossible d’accéder à la caméra. Cliquez sur le verrou dans la barre d’adresses pour accorder l’autorisation à cette page Web.",callCameraAlreadyInUse:"Impossible d’accéder à la caméra. Il est peut-être déjà utilisé par une autre application.",callMacOsCameraAccessDenied:"MacOS bloque l’accès à votre caméra. Mettez à jour vos paramètres de confidentialité pour autoriser ce navigateur à accéder à votre caméra.",callMacOsScreenShareAccessDenied:"MacOS bloque le partage d’écran. Mettez à jour vos paramètres de confidentialité pour permettre à ce navigateur d’enregistrer votre écran.",dismissButtonAriaLabel:"Fermer",failedToJoinCallGeneric:"Nous n’avons pas pu rejoindre l’appel.",failedToJoinCallInvalidMeetingLink:"Impossible de rejoindre la réunion. Lien non valide."};var videoGallery$9={screenIsBeingSharedMessage:"Vous partagez votre écran.",screenShareLoadingMessage:"Chargement de l’écran de {participant}",localVideoLabel:"Vous",localVideoCameraSwitcherLabel:"Changer de caméra",localVideoMovementLabel:"Vignette de vidéo locale déplaçable",localVideoSelectedDescription:"{cameraName} sélectionnée",displayNamePlaceholder:"Participant non identifié"};var dialpad$9={placeholderText:"Entrer un numéro"};var HoldButton$a={onLabel:"Reprendre",offLabel:"Mettre en attente",toolTipOnContent:"Reprendre l’appel",toolTipOffContent:"Mettre l’appel en attente"};var fr_FR$1 = {participantItem:participantItem$9,typingIndicator:typingIndicator$9,sendBox:sendBox$9,messageStatusIndicator:messageStatusIndicator$9,endCallButton:endCallButton$9,cameraButton:cameraButton$9,microphoneButton:microphoneButton$9,devicesButton:devicesButton$9,participantsButton:participantsButton$9,screenShareButton:screenShareButton$9,messageThread:messageThread$9,errorBar:errorBar$9,videoGallery:videoGallery$9,dialpad:dialpad$9,HoldButton:HoldButton$a};
867
940
 
868
- var participantItem$8={isMeText:"(tu)",menuTitle:"Altre opzioni",removeButtonLabel:"Rimuovi",sharingIconLabel:"Condivisione",mutedIconLabel:"Disattivato"};var typingIndicator$8={singleUser:"{user} sta scrivendo ...",multipleUsers:"{users} stanno scrivendo ...",multipleUsersAbbreviateOne:"{users} e 1 altro stanno scrivendo ...",multipleUsersAbbreviateMany:"{users} e {numOthers} altri stanno scrivendo ...",delimiter:", "};var sendBox$8={placeholderText:"Immetti un messaggio",textTooLong:"La lunghezza del messaggio supera il limite massimo.",sendButtonAriaLabel:"Invio messaggio",fileUploadsPendingError:"Caricamento in corso... Attendere."};var messageStatusIndicator$8={deliveredAriaLabel:"Il messaggio è stato inviato",deliveredTooltipText:"Inviato",seenAriaLabel:"Messaggio visualizzato da altri utenti",seenTooltipText:"Visualizzato",readByTooltipText:"Letto da {messageThreadReadCount} di {remoteParticipantsCount}",sendingAriaLabel:"Invio del messaggio",sendingTooltipText:"Invio in corso",failedToSendAriaLabel:"Invio messaggio non riuscito",failedToSendTooltipText:"Invio non riuscito"};var endCallButton$8={label:"Permesso",tooltipContent:"Abbandona chiamata"};var cameraButton$8={onLabel:"Disabilita",offLabel:"Abilita",tooltipDisabledContent:"La videocamera è disabilitata",tooltipOnContent:"Spegni la videocamera",tooltipOffContent:"Accendi la videocamera",tooltipVideoLoadingContent:"Il video è in corso di caricamento",cameraMenuTitle:"Fotocamera",cameraMenuTooltip:"Scegli la fotocamera"};var microphoneButton$8={onLabel:"Disattiva audio",offLabel:"Riattiva audio",tooltipDisabledContent:"Il microfono è disabilitato",tooltipOnContent:"Disattiva microfono",tooltipOffContent:"Riattiva microfono",microphoneMenuTitle:"Microfono",microphoneMenuTooltip:"Scegli il microfono",speakerMenuTitle:"Altoparlante",speakerMenuTooltip:"Scegli l’altoparlante"};var devicesButton$8={label:"Dispositivi",tooltipContent:"Gestisci dispositivi",cameraMenuTitle:"Fotocamera",cameraMenuTooltip:"Scegli la fotocamera",microphoneMenuTitle:"Microfono",microphoneMenuTooltip:"Scegli il microfono",speakerMenuTitle:"Altoparlante",speakerMenuTooltip:"Scegli l’altoparlante"};var participantsButton$8={label:"Persone",tooltipContent:"Mostra partecipanti",menuHeader:"In questa chiamata",participantsListButtonLabel:"{numParticipants} persone",muteAllButtonLabel:"Disattiva l'audio di tutti",copyInviteLinkButtonLabel:"Copia il collegamento dell’invito"};var screenShareButton$8={onLabel:"Interrompi presentazione",offLabel:"Presentazione",tooltipDisabledContent:"La presentazione è disabilitata.",tooltipOnContent:"Presentazione dello schermo",tooltipOffContent:"Presenta lo schermo"};var messageThread$8={yesterday:"Ieri",sunday:"Domenica",monday:"Lunedì",tuesday:"Martedì",wednesday:"Mercoledì",thursday:"Giovedì",friday:"Venerdì",saturday:"Sabato",participantJoined:"si è unito alla chat.",participantLeft:"ha abbandonato la chat.",editMessage:"Modifica",removeMessage:"Elimina",editedTag:"Modificato",liveAuthorIntro:"{author} dice",editBoxTextLimit:"Il messaggio ha superato il limite di caratteri {limitNumber}",editBoxPlaceholderText:"Modifica il messaggio",newMessagesIndicator:"Nuovi messaggi",noDisplayNameSub:"Nessun nome",editBoxCancelButton:"Annulla",editBoxSubmitButton:"Invia",messageReadCount:"Letto da {messageReadByCount} di {remoteParticipantsCount}"};var errorBar$8={unableToReachChatService:"Sei offline",accessDenied:"Non è possibile accedere ai servizi di chat. Controllare le credenziali utente specificate",userNotInChatThread:"Non fai più parte di questo thread di chat",sendMessageNotInChatThread:"Non è stato possibile inviare il messaggio perché non sei più in questo thread di chat",sendMessageGeneric:"Impossibile inviare il messaggio",callingNetworkFailure:"Problema di connessione della chiamata: sembra che tu sia offline",startVideoGeneric:"Non è stato possibile avviare il video",stopVideoGeneric:"Non è stato possibile arrestare il video",muteGeneric:"Non è stato possibile disattivare l'audio del microfono",unmuteGeneric:"Non è stato possibile riattivare l'audio del microfono",speakingWhileMuted:"Il microfono è disattivato",startScreenShareGeneric:"Non è stato possibile avviare la condivisione dello schermo",stopScreenShareGeneric:"Non è stato possibile arrestare la condivisione dello schermo",callNetworkQualityLow:"La qualità della rete è bassa.",callNoSpeakerFound:"Non sono stati trovati altoparlanti o cuffie. Connetti un dispositivo audio per ascoltare la chiamata.",callNoMicrophoneFound:"Nessun microfono trovato. Connetti un dispositivo di input audio.",callMicrophoneAccessDenied:"Impossibile accedere al microfono. Fare clic sul blocco nella barra degli indirizzi per concedere l'autorizzazione a questa pagina Web.",callMicrophoneMutedBySystem:"Il sistema disattiva l'audio.",callMacOsMicrophoneAccessDenied:"Impossibile accedere al microfono. Concedi l'autorizzazione al microfono nelle impostazioni di privacy di macOS.",callLocalVideoFreeze:"Larghezza di banda di rete insufficiente. Il video potrebbe essere sospeso per gli altri partecipanti alla chiamata.",callCameraAccessDenied:"Non è possibile accedere alla fotocamera. Fare clic sul blocco nella barra degli indirizzi per concedere l'autorizzazione a questa pagina Web.",callCameraAlreadyInUse:"Non è possibile accedere alla fotocamera. Potrebbe essere già in uso da un'altra applicazione.",callMacOsCameraAccessDenied:"MacOS sta bloccando l'accesso alla fotocamera. Aggiorna le impostazioni di privacy per consentire a questo browser di accedere alla fotocamera.",callMacOsScreenShareAccessDenied:"MacOS sta bloccando la condivisione dello schermo. Aggiorna le impostazioni di privacy per consentire a questo browser di registrare lo schermo."};var videoGallery$8={screenIsBeingSharedMessage:"Stai condividendo lo schermo",screenShareLoadingMessage:"Caricamento dello schermo di {participant}",localVideoLabel:"Tu",localVideoCameraSwitcherLabel:"Ciclo fotocamera"};var it_IT$1 = {participantItem:participantItem$8,typingIndicator:typingIndicator$8,sendBox:sendBox$8,messageStatusIndicator:messageStatusIndicator$8,endCallButton:endCallButton$8,cameraButton:cameraButton$8,microphoneButton:microphoneButton$8,devicesButton:devicesButton$8,participantsButton:participantsButton$8,screenShareButton:screenShareButton$8,messageThread:messageThread$8,errorBar:errorBar$8,videoGallery:videoGallery$8};
941
+ var participantItem$8={isMeText:"(tu)",menuTitle:"Altre opzioni",removeButtonLabel:"Rimuovi",sharingIconLabel:"Condivisione",mutedIconLabel:"Disattivato",displayNamePlaceholder:"Partecipante senza nome"};var typingIndicator$8={singleUser:"{user} sta scrivendo ...",multipleUsers:"{users} stanno scrivendo ...",multipleUsersAbbreviateOne:"{users} e 1 altro stanno scrivendo ...",multipleUsersAbbreviateMany:"{users} e {numOthers} altri stanno scrivendo ...",delimiter:", "};var sendBox$8={placeholderText:"Immetti un messaggio",textTooLong:"La lunghezza del messaggio supera il limite massimo.",sendButtonAriaLabel:"Invio messaggio",fileUploadsPendingError:"Caricamento in corso... Attendere."};var messageStatusIndicator$8={deliveredAriaLabel:"Il messaggio è stato inviato",deliveredTooltipText:"Inviato",seenAriaLabel:"Messaggio visualizzato da altri utenti",seenTooltipText:"Visualizzato",readByTooltipText:"Letto da {messageThreadReadCount} di {remoteParticipantsCount}",sendingAriaLabel:"Invio del messaggio",sendingTooltipText:"Invio in corso",failedToSendAriaLabel:"Invio messaggio non riuscito",failedToSendTooltipText:"Invio non riuscito"};var endCallButton$8={label:"Permesso",tooltipContent:"Abbandona chiamata"};var cameraButton$8={onLabel:"Disabilita",offLabel:"Abilita",tooltipDisabledContent:"La videocamera è disabilitata",tooltipOnContent:"Spegni la videocamera",tooltipOffContent:"Accendi la videocamera",tooltipVideoLoadingContent:"Il video è in corso di caricamento",cameraMenuTitle:"Fotocamera",cameraMenuTooltip:"Scegli la fotocamera",cameraButtonSplitRoleDescription:"Pulsante di menu combinato",onSplitButtonAriaLabel:"Disattiva fotocamera e le opzioni della fotocamera",offSplitButtonAriaLabel:"Attiva fotocamera e le opzioni della fotocamera",cameraActionTurnedOnAnnouncement:"La videocamera è stata attivata",cameraActionTurnedOffAnnouncement:"La videocamera è stata disattivata"};var microphoneButton$8={onLabel:"Disattiva audio",offLabel:"Riattiva audio",tooltipDisabledContent:"Il microfono è disabilitato",tooltipOnContent:"Disattiva microfono",tooltipOffContent:"Riattiva microfono",microphoneMenuTitle:"Microfono",microphoneMenuTooltip:"Scegli il microfono",speakerMenuTitle:"Altoparlante",speakerMenuTooltip:"Scegli l’altoparlante",microphoneButtonSplitRoleDescription:"Pulsante di menu combinato",onSplitButtonAriaLabel:"Disattiva microfono e opzioni audio",offSplitButtonAriaLabel:"Attiva microfono e opzioni audio",microphoneActionTurnedOnAnnouncement:"Il microfono è stato attivato",microphoneActionTurnedOffAnnouncement:"Il microfono è stato disattivato"};var devicesButton$8={label:"Dispositivi",tooltipContent:"Gestisci dispositivi",cameraMenuTitle:"Fotocamera",cameraMenuTooltip:"Scegli la fotocamera",audioDeviceMenuTitle:"Dispositivo audio",audioDeviceMenuTooltip:"Scegli dispositivo audio",microphoneMenuTitle:"Microfono",microphoneMenuTooltip:"Scegli il microfono",speakerMenuTitle:"Altoparlante",speakerMenuTooltip:"Scegli l’altoparlante"};var participantsButton$8={label:"Persone",tooltipContent:"Mostra partecipanti",menuHeader:"In questa chiamata",participantsListButtonLabel:"{numParticipants} persone",muteAllButtonLabel:"Disattiva l'audio di tutti",copyInviteLinkButtonLabel:"Copia il collegamento dell’invito"};var screenShareButton$8={onLabel:"Interrompi presentazione",offLabel:"Presentazione",tooltipDisabledContent:"La presentazione è disabilitata.",tooltipOnContent:"Presentazione dello schermo",tooltipOffContent:"Presenta lo schermo"};var messageThread$8={yesterday:"Ieri",sunday:"Domenica",monday:"Lunedì",tuesday:"Martedì",wednesday:"Mercoledì",thursday:"Giovedì",friday:"Venerdì",saturday:"Sabato",participantJoined:"si è unito alla chat.",participantLeft:"ha abbandonato la chat.",editMessage:"Modifica",removeMessage:"Elimina",resendMessage:"Riprova a inviare",failToSendTag:"Invio non riuscito",editedTag:"Modificato",liveAuthorIntro:"{author} dice",editBoxTextLimit:"Il messaggio ha superato il limite di caratteri {limitNumber}",editBoxPlaceholderText:"Modifica il messaggio",newMessagesIndicator:"Nuovi messaggi",noDisplayNameSub:"Nessun nome",editBoxCancelButton:"Annulla",editBoxSubmitButton:"Invia",messageReadCount:"Letto da {messageReadByCount} di {remoteParticipantsCount}",actionMenuMoreOptions:"Altre opzioni"};var errorBar$8={unableToReachChatService:"Sei offline",accessDenied:"Non è possibile accedere ai servizi di chat. Controllare le credenziali utente specificate",userNotInChatThread:"Non fai più parte di questo thread di chat",sendMessageNotInChatThread:"Non è stato possibile inviare il messaggio perché non sei più in questo thread di chat",sendMessageGeneric:"Impossibile inviare il messaggio",callingNetworkFailure:"Problema di connessione della chiamata: sembra che tu sia offline",startVideoGeneric:"Non è stato possibile avviare il video",stopVideoGeneric:"Non è stato possibile arrestare il video",muteGeneric:"Non è stato possibile disattivare l'audio del microfono",unmuteGeneric:"Non è stato possibile riattivare l'audio del microfono",speakingWhileMuted:"Il microfono è disattivato",startScreenShareGeneric:"Non è stato possibile avviare la condivisione dello schermo",stopScreenShareGeneric:"Non è stato possibile arrestare la condivisione dello schermo",callNetworkQualityLow:"La qualità della rete è bassa.",callNoSpeakerFound:"Non sono stati trovati altoparlanti o cuffie. Connetti un dispositivo audio per ascoltare la chiamata.",callNoMicrophoneFound:"Nessun microfono trovato. Connetti un dispositivo di input audio.",callMicrophoneAccessDenied:"Impossibile accedere al microfono. Fare clic sul blocco nella barra degli indirizzi per concedere l'autorizzazione a questa pagina Web.",callMicrophoneMutedBySystem:"Il sistema disattiva l'audio.",callMacOsMicrophoneAccessDenied:"Impossibile accedere al microfono. Concedi l'autorizzazione al microfono nelle impostazioni di privacy di macOS.",callLocalVideoFreeze:"Larghezza di banda di rete insufficiente. Il video potrebbe essere sospeso per gli altri partecipanti alla chiamata.",callCameraAccessDenied:"Non è possibile accedere alla fotocamera. Fare clic sul blocco nella barra degli indirizzi per concedere l'autorizzazione a questa pagina Web.",callCameraAlreadyInUse:"Non è possibile accedere alla fotocamera. Potrebbe essere già in uso da un'altra applicazione.",callMacOsCameraAccessDenied:"MacOS sta bloccando l'accesso alla fotocamera. Aggiorna le impostazioni di privacy per consentire a questo browser di accedere alla fotocamera.",callMacOsScreenShareAccessDenied:"MacOS sta bloccando la condivisione dello schermo. Aggiorna le impostazioni di privacy per consentire a questo browser di registrare lo schermo.",dismissButtonAriaLabel:"Chiudi",failedToJoinCallGeneric:"Non è stato possibile partecipare alla chiamata.",failedToJoinCallInvalidMeetingLink:"Impossibile partecipare alla riunione. Collegamento non valido."};var videoGallery$8={screenIsBeingSharedMessage:"Stai condividendo lo schermo",screenShareLoadingMessage:"Caricamento dello schermo di {participant}",localVideoLabel:"Tu",localVideoCameraSwitcherLabel:"Cambia videocamera",localVideoMovementLabel:"Riquadro video locale mobile",localVideoSelectedDescription:"{cameraName} selezionata",displayNamePlaceholder:"Partecipante senza nome"};var dialpad$8={placeholderText:"Inserisci un numero"};var HoldButton$9={onLabel:"Riprendi",offLabel:"Mantenere",toolTipOnContent:"Riprendi chiamata",toolTipOffContent:"Metti in attesa chiamata"};var it_IT$1 = {participantItem:participantItem$8,typingIndicator:typingIndicator$8,sendBox:sendBox$8,messageStatusIndicator:messageStatusIndicator$8,endCallButton:endCallButton$8,cameraButton:cameraButton$8,microphoneButton:microphoneButton$8,devicesButton:devicesButton$8,participantsButton:participantsButton$8,screenShareButton:screenShareButton$8,messageThread:messageThread$8,errorBar:errorBar$8,videoGallery:videoGallery$8,dialpad:dialpad$8,HoldButton:HoldButton$9};
869
942
 
870
- var participantItem$7={isMeText:"(自分)",menuTitle:"その他のオプション",removeButtonLabel:"削除",sharingIconLabel:"共有",mutedIconLabel:"ミュート状態"};var typingIndicator$7={singleUser:"{user} さんが入力しています...",multipleUsers:"{users} さんが入力しています...",multipleUsersAbbreviateOne:"{users} さんとその他 1 人が入力しています...",multipleUsersAbbreviateMany:"{users} さんと他 {numOthers} 人が入力しています...",delimiter:","};var sendBox$7={placeholderText:"メッセージを入力",textTooLong:"メッセージの長さが上限を超えています。",sendButtonAriaLabel:"メッセージの送信",fileUploadsPendingError:"アップロード中です... お待ちください。"};var messageStatusIndicator$7={deliveredAriaLabel:"メッセージを送信しました",deliveredTooltipText:"送信しました",seenAriaLabel:"他のユーザーが表示したメッセージ",seenTooltipText:"既読",readByTooltipText:"{remoteParticipantsCount} の {messageThreadReadCount} による読み取り",sendingAriaLabel:"メッセージを送信しています",sendingTooltipText:"送信中",failedToSendAriaLabel:"メッセージの送信に失敗しました",failedToSendTooltipText:"送信できませんでした"};var endCallButton$7={label:"退出",tooltipContent:"通話から退席"};var cameraButton$7={onLabel:"オフにする",offLabel:"オンにする",tooltipDisabledContent:"カメラが無効になっています",tooltipOnContent:"カメラをオフ",tooltipOffContent:"カメラをオンにする",tooltipVideoLoadingContent:"ビデオの読み込み中です",cameraMenuTitle:"カメラ",cameraMenuTooltip:"カメラの選択"};var microphoneButton$7={onLabel:"ミュート",offLabel:"ミュート解除",tooltipDisabledContent:"マイクが無効になっています",tooltipOnContent:"マイクをミュートにする",tooltipOffContent:"マイクのミュートを解除する",microphoneMenuTitle:"マイク",microphoneMenuTooltip:"マイクの選択",speakerMenuTitle:"スピーカー",speakerMenuTooltip:"スピーカーの選択"};var devicesButton$7={label:"デバイス",tooltipContent:"デバイスの管理",cameraMenuTitle:"カメラ",cameraMenuTooltip:"カメラの選択",microphoneMenuTitle:"マイク",microphoneMenuTooltip:"マイクの選択",speakerMenuTitle:"スピーカー",speakerMenuTooltip:"スピーカーの選択"};var participantsButton$7={label:"ユーザー",tooltipContent:"参加者を表示する",menuHeader:"この通話で",participantsListButtonLabel:"{numParticipants} 人",muteAllButtonLabel:"全員をミュート",copyInviteLinkButtonLabel:"招待用のリンクをコピー"};var screenShareButton$7={onLabel:"プレゼンテーションの停止",offLabel:"提示",tooltipDisabledContent:"プレゼンテーションは無効です",tooltipOnContent:"画面の表示",tooltipOffContent:"画面のプレゼンテーション"};var messageThread$7={yesterday:"昨日",sunday:"日曜日",monday:"月曜日",tuesday:"火曜日",wednesday:"水曜日",thursday:"木曜日",friday:"金曜日",saturday:"土曜日",participantJoined:"チャットに参加しました。",participantLeft:"チャットから退出しました。",editMessage:"編集",removeMessage:"削除",editedTag:"編集済み",liveAuthorIntro:"{author} さんの発言",editBoxTextLimit:"メッセージが{limitNumber}文字の制限を超えています",editBoxPlaceholderText:"メッセージを編集する",newMessagesIndicator:"新しいメッセージ",noDisplayNameSub:"名前がありません",editBoxCancelButton:"取り消し",editBoxSubmitButton:"送信",messageReadCount:"{remoteParticipantsCount} の {messageReadByCount} による読み取り"};var errorBar$7={unableToReachChatService:"オフラインです",accessDenied:"チャット サービスにアクセスできません- 指定されたユーザー資格情報をご確認ください",userNotInChatThread:"このチャット スレッドにはもう参加していません",sendMessageNotInChatThread:"このチャット スレッドに参加していないため、メッセージを送信できませんでした",sendMessageGeneric:"メッセージを送信できませんでした。",callingNetworkFailure:"通話の接続中に問題が発生しました。オフラインのようです。",startVideoGeneric:"ビデオを開始できませんでした",stopVideoGeneric:"ビデオを停止できませんでした",muteGeneric:"マイクをミュートできませんでした",unmuteGeneric:"マイクのミュートを解除できませんでした",speakingWhileMuted:"マイクがミュートになっています",startScreenShareGeneric:"画面の共有を開始できませんでした",stopScreenShareGeneric:"画面の共有を停止できませんでした",callNetworkQualityLow:"ネットワークの品質が低くなっています。",callNoSpeakerFound:"スピーカーまたはヘッドフォンが見つかりません。音声デバイスを接続して通話を聞きます。",callNoMicrophoneFound:"マイクが見つかりません。オーディオ入力デバイスを接続します。",callMicrophoneAccessDenied:"マイクにアクセスできません。アドレス バーのロックをクリックして、この Web ページにアクセス許可を付与します。",callMicrophoneMutedBySystem:"システムによってミュートになっています。",callMacOsMicrophoneAccessDenied:"マイクにアクセスできません。macOS のプライバシー設定でマイクへのアクセス許可を付与します。",callLocalVideoFreeze:"ネットワーク帯域幅が不十分です。通話中に他のユーザーのビデオが一時停止している可能性があります。",callCameraAccessDenied:"カメラにアクセスできません。アドレス バーのロックをクリックして、この Web ページにアクセス許可を付与します。",callCameraAlreadyInUse:"カメラにアクセスできません。別のアプリケーションによって既に使用されている可能性があります。",callMacOsCameraAccessDenied:"MacOS がカメラへのアクセスをブロックしています。プライバシー設定を更新して、このブラウザーがカメラにアクセスできるようにします。",callMacOsScreenShareAccessDenied:"MacOS は画面の共有をブロックしています。プライバシー設定を更新して、このブラウザーで画面を録画できるようにします。"};var videoGallery$7={screenIsBeingSharedMessage:"画面を共有しています",screenShareLoadingMessage:"{participant} の画面を読み込んでいます",localVideoLabel:"自分",localVideoCameraSwitcherLabel:"サイクル カメラ"};var ja_JP$1 = {participantItem:participantItem$7,typingIndicator:typingIndicator$7,sendBox:sendBox$7,messageStatusIndicator:messageStatusIndicator$7,endCallButton:endCallButton$7,cameraButton:cameraButton$7,microphoneButton:microphoneButton$7,devicesButton:devicesButton$7,participantsButton:participantsButton$7,screenShareButton:screenShareButton$7,messageThread:messageThread$7,errorBar:errorBar$7,videoGallery:videoGallery$7};
943
+ var participantItem$7={isMeText:"(自分)",menuTitle:"その他のオプション",removeButtonLabel:"削除",sharingIconLabel:"共有",mutedIconLabel:"ミュート状態",displayNamePlaceholder:"名前のない参加者"};var typingIndicator$7={singleUser:"{user} さんが入力しています...",multipleUsers:"{users} さんが入力しています...",multipleUsersAbbreviateOne:"{users} さんとその他 1 人が入力しています...",multipleUsersAbbreviateMany:"{users} さんと他 {numOthers} 人が入力しています...",delimiter:","};var sendBox$7={placeholderText:"メッセージを入力",textTooLong:"メッセージの長さが上限を超えています。",sendButtonAriaLabel:"メッセージの送信",fileUploadsPendingError:"アップロード中です... お待ちください。"};var messageStatusIndicator$7={deliveredAriaLabel:"メッセージを送信しました",deliveredTooltipText:"送信しました",seenAriaLabel:"他のユーザーが表示したメッセージ",seenTooltipText:"既読",readByTooltipText:"{remoteParticipantsCount} の {messageThreadReadCount} による読み取り",sendingAriaLabel:"メッセージを送信しています",sendingTooltipText:"送信中",failedToSendAriaLabel:"メッセージの送信に失敗しました",failedToSendTooltipText:"送信できませんでした"};var endCallButton$7={label:"退出",tooltipContent:"通話から退席"};var cameraButton$7={onLabel:"オフにする",offLabel:"オンにする",tooltipDisabledContent:"カメラが無効になっています",tooltipOnContent:"カメラをオフ",tooltipOffContent:"カメラをオンにする",tooltipVideoLoadingContent:"ビデオの読み込み中です",cameraMenuTitle:"カメラ",cameraMenuTooltip:"カメラの選択",cameraButtonSplitRoleDescription:"分割ボタン",onSplitButtonAriaLabel:"カメラとカメラ オプションをオフにする",offSplitButtonAriaLabel:"カメラとカメラ オプションをオンにする",cameraActionTurnedOnAnnouncement:"カメラがオンになっています",cameraActionTurnedOffAnnouncement:"カメラがオフになっています"};var microphoneButton$7={onLabel:"ミュート",offLabel:"ミュート解除",tooltipDisabledContent:"マイクが無効になっています",tooltipOnContent:"マイクをミュートにする",tooltipOffContent:"マイクのミュートを解除する",microphoneMenuTitle:"マイク",microphoneMenuTooltip:"マイクの選択",speakerMenuTitle:"スピーカー",speakerMenuTooltip:"スピーカーの選択",microphoneButtonSplitRoleDescription:"分割ボタン",onSplitButtonAriaLabel:"マイクとオーディオのオプションをミュートにする",offSplitButtonAriaLabel:"マイクとオーディオのオプションのミュートを解除する",microphoneActionTurnedOnAnnouncement:"マイクがオンになっています",microphoneActionTurnedOffAnnouncement:"マイクがオフになっています"};var devicesButton$7={label:"デバイス",tooltipContent:"デバイスの管理",cameraMenuTitle:"カメラ",cameraMenuTooltip:"カメラの選択",audioDeviceMenuTitle:"オーディオ デバイス",audioDeviceMenuTooltip:"オーディオ デバイスの選択",microphoneMenuTitle:"マイク",microphoneMenuTooltip:"マイクの選択",speakerMenuTitle:"スピーカー",speakerMenuTooltip:"スピーカーの選択"};var participantsButton$7={label:"ユーザー",tooltipContent:"参加者を表示する",menuHeader:"この通話で",participantsListButtonLabel:"{numParticipants} 人",muteAllButtonLabel:"全員をミュート",copyInviteLinkButtonLabel:"招待用のリンクをコピー"};var screenShareButton$7={onLabel:"プレゼンテーションの停止",offLabel:"提示",tooltipDisabledContent:"プレゼンテーションは無効です",tooltipOnContent:"画面の表示",tooltipOffContent:"画面のプレゼンテーション"};var messageThread$7={yesterday:"昨日",sunday:"日曜日",monday:"月曜日",tuesday:"火曜日",wednesday:"水曜日",thursday:"木曜日",friday:"金曜日",saturday:"土曜日",participantJoined:"チャットに参加しました。",participantLeft:"チャットから退出しました。",editMessage:"編集",removeMessage:"削除",resendMessage:"もう一度送信",failToSendTag:"送信できませんでした",editedTag:"編集済み",liveAuthorIntro:"{author} さんの発言",editBoxTextLimit:"メッセージが{limitNumber}文字の制限を超えています",editBoxPlaceholderText:"メッセージを編集する",newMessagesIndicator:"新しいメッセージ",noDisplayNameSub:"名前がありません",editBoxCancelButton:"取り消し",editBoxSubmitButton:"送信",messageReadCount:"{remoteParticipantsCount} の {messageReadByCount} による読み取り",actionMenuMoreOptions:"その他のオプション"};var errorBar$7={unableToReachChatService:"オフラインです",accessDenied:"チャット サービスにアクセスできません- 指定されたユーザー資格情報をご確認ください",userNotInChatThread:"このチャット スレッドにはもう参加していません",sendMessageNotInChatThread:"このチャット スレッドに参加していないため、メッセージを送信できませんでした",sendMessageGeneric:"メッセージを送信できませんでした。",callingNetworkFailure:"通話の接続中に問題が発生しました。オフラインのようです。",startVideoGeneric:"ビデオを開始できませんでした",stopVideoGeneric:"ビデオを停止できませんでした",muteGeneric:"マイクをミュートできませんでした",unmuteGeneric:"マイクのミュートを解除できませんでした",speakingWhileMuted:"マイクがミュートになっています",startScreenShareGeneric:"画面の共有を開始できませんでした",stopScreenShareGeneric:"画面の共有を停止できませんでした",callNetworkQualityLow:"ネットワークの品質が低くなっています。",callNoSpeakerFound:"スピーカーまたはヘッドフォンが見つかりません。音声デバイスを接続して通話を聞きます。",callNoMicrophoneFound:"マイクが見つかりません。オーディオ入力デバイスを接続します。",callMicrophoneAccessDenied:"マイクにアクセスできません。アドレス バーのロックをクリックして、この Web ページにアクセス許可を付与します。",callMicrophoneMutedBySystem:"システムによってミュートになっています。",callMacOsMicrophoneAccessDenied:"マイクにアクセスできません。macOS のプライバシー設定でマイクへのアクセス許可を付与します。",callLocalVideoFreeze:"ネットワーク帯域幅が不十分です。通話中に他のユーザーのビデオが一時停止している可能性があります。",callCameraAccessDenied:"カメラにアクセスできません。アドレス バーのロックをクリックして、この Web ページにアクセス許可を付与します。",callCameraAlreadyInUse:"カメラにアクセスできません。別のアプリケーションによって既に使用されている可能性があります。",callMacOsCameraAccessDenied:"MacOS がカメラへのアクセスをブロックしています。プライバシー設定を更新して、このブラウザーがカメラにアクセスできるようにします。",callMacOsScreenShareAccessDenied:"MacOS は画面の共有をブロックしています。プライバシー設定を更新して、このブラウザーで画面を録画できるようにします。",dismissButtonAriaLabel:"閉じる",failedToJoinCallGeneric:"通話に参加できませんでした",failedToJoinCallInvalidMeetingLink:"会議に参加できません。リンクが無効です。"};var videoGallery$7={screenIsBeingSharedMessage:"画面を共有しています",screenShareLoadingMessage:"{participant} の画面を読み込んでいます",localVideoLabel:"自分",localVideoCameraSwitcherLabel:"カメラを切り替え",localVideoMovementLabel:"移動可能なローカル ビデオ タイル",localVideoSelectedDescription:"{cameraName} が選択されました。",displayNamePlaceholder:"名前のない参加者"};var dialpad$7={placeholderText:"番号の入力"};var HoldButton$8={onLabel:"再開",offLabel:"保留",toolTipOnContent:"通話の再開",toolTipOffContent:"通話の保留"};var ja_JP$1 = {participantItem:participantItem$7,typingIndicator:typingIndicator$7,sendBox:sendBox$7,messageStatusIndicator:messageStatusIndicator$7,endCallButton:endCallButton$7,cameraButton:cameraButton$7,microphoneButton:microphoneButton$7,devicesButton:devicesButton$7,participantsButton:participantsButton$7,screenShareButton:screenShareButton$7,messageThread:messageThread$7,errorBar:errorBar$7,videoGallery:videoGallery$7,dialpad:dialpad$7,HoldButton:HoldButton$8};
871
944
 
872
- var participantItem$6={isMeText:"(나)",menuTitle:"추가 옵션",removeButtonLabel:"제거",sharingIconLabel:"공유 중",mutedIconLabel:"음소거됨"};var typingIndicator$6={singleUser:"{user} 님이 입력 중...",multipleUsers:"{users} 님이 입력하는 중...",multipleUsersAbbreviateOne:"{users} 님 외 1명이 입력 중...",multipleUsersAbbreviateMany:"{users} 님 외 {numOthers} 님이 입력하는 중...",delimiter:"닫는 렌즈형 흰색 괄호"};var sendBox$6={placeholderText:"메시지를 입력하세요",textTooLong:"메시지 길이가 최대 제한을 초과했습니다.",sendButtonAriaLabel:"메시지 보내기",fileUploadsPendingError:"업로드 중... 잠시만 기다려 주세요."};var messageStatusIndicator$6={deliveredAriaLabel:"메시지를 보냄",deliveredTooltipText:"보냄",seenAriaLabel:"다른 사용자가 본 메시지",seenTooltipText:"표시됨",readByTooltipText:"{messageThreadReadCount}/{remoteParticipantsCount}명이 읽음",sendingAriaLabel:"메시지를 보내는 중",sendingTooltipText:"보내는 중",failedToSendAriaLabel:"메시지를 보내지 못함",failedToSendTooltipText:"보내기 실패"};var endCallButton$6={label:"휴가",tooltipContent:"통화 종료"};var cameraButton$6={onLabel:"끄기",offLabel:"켜기",tooltipDisabledContent:"카메라가 비활성화되었습니다",tooltipOnContent:"카메라 끄기",tooltipOffContent:"카메라 켜기",tooltipVideoLoadingContent:"비디오를 로드하는 중입니다.",cameraMenuTitle:"카메라",cameraMenuTooltip:"카메라 선택"};var microphoneButton$6={onLabel:"음소거",offLabel:"음소거 해제",tooltipDisabledContent:"마이크가 비활성화되었습니다",tooltipOnContent:"마이크 음소거",tooltipOffContent:"마이크 음소거 해제",microphoneMenuTitle:"마이크",microphoneMenuTooltip:"마이크 선택",speakerMenuTitle:"발언자",speakerMenuTooltip:"스피커 선택"};var devicesButton$6={label:"장치",tooltipContent:"장치 관리",cameraMenuTitle:"카메라",cameraMenuTooltip:"카메라 선택",microphoneMenuTitle:"마이크",microphoneMenuTooltip:"마이크 선택",speakerMenuTitle:"발언자",speakerMenuTooltip:"스피커 선택"};var participantsButton$6={label:"사용자",tooltipContent:"프레젠테이션 표시",menuHeader:"이 통화에서",participantsListButtonLabel:"{numParticipants}명",muteAllButtonLabel:"모두 음소거",copyInviteLinkButtonLabel:"초대 링크 복사"};var screenShareButton$6={onLabel:"프레젠테이션 중지",offLabel:"프레젠테이션",tooltipDisabledContent:"프레젠테이션 사용 안 함",tooltipOnContent:"화면을 프레젠테이션하는 중",tooltipOffContent:"화면 프레젠테이션"};var messageThread$6={yesterday:"어제",sunday:"일요일",monday:"월요일",tuesday:"화요일",wednesday:"수요일",thursday:"목요일",friday:"금요일",saturday:"토요일",participantJoined:"채팅에 참여했습니다.",participantLeft:"이 채팅을 나갔습니다.",editMessage:"편집",removeMessage:"삭제",editedTag:"편집됨",liveAuthorIntro:"{author} 님이 말합니다.",editBoxTextLimit:"메시지가 {limitNumber} 문자 제한을 초과했습니다.",editBoxPlaceholderText:"메시지 편집",newMessagesIndicator:"새 메시지",noDisplayNameSub:"이름 없음",editBoxCancelButton:"취소",editBoxSubmitButton:"제출",messageReadCount:"{messageReadByCount}/{remoteParticipantsCount}명이 읽음"};var errorBar$6={unableToReachChatService:"오프라인 상태입니다.",accessDenied:"채팅 서비스에 액세스할 수 없습니다. 제공된 사용자 자격 증명을 확인하세요.",userNotInChatThread:"이 채팅 스레드에 더 이상 없습니다.",sendMessageNotInChatThread:"이 채팅 스레드에 더 이상 존재하지 않으므로 메시지를 보내지 못했습니다.",sendMessageGeneric:"메시지를 보내지 못했습니다",callingNetworkFailure:"통화 연결 중 - 오프라인 상태인 것 같습니다.",startVideoGeneric:"비디오를 시작하지 못함",stopVideoGeneric:"비디오를 중지하지 못함",muteGeneric:"마이크를 음소거하지 못함",unmuteGeneric:"마이크 음소거를 해제하지 못함",speakingWhileMuted:"마이크가 음소거됨",startScreenShareGeneric:"화면 공유를 시작하지 못함",stopScreenShareGeneric:"화면 공유를 중지하지 못함",callNetworkQualityLow:"네트워크 품질이 낮습니다.",callNoSpeakerFound:"스피커 또는 헤드폰을 찾을 수 없습니다. 오디오 장치를 연결하여 통화를 들을 수 있습니다.",callNoMicrophoneFound:"마이크를 찾을 수 없습니다. 오디오 입력 장치를 연결합니다.",callMicrophoneAccessDenied:"마이크에 액세스할 수 없습니다. 주소 표시줄에서 잠금을 클릭하여 이 웹 페이지에 권한을 부여합니다.",callMicrophoneMutedBySystem:"시스템에 의해 음소거되었습니다.",callMacOsMicrophoneAccessDenied:"마이크에 액세스할 수 없습니다. macOS 개인 정보 설정에서 마이크 권한을 부여합니다.",callLocalVideoFreeze:"네트워크 대역폭이 불량합니다. 통화 중에 다른 사람에 대해 비디오가 일시 중지된 것 같습니다.",callCameraAccessDenied:"카메라에 액세스할 수 없습니다. 주소 표시줄에서 잠금을 클릭하여 이 웹 페이지에 권한을 부여합니다.",callCameraAlreadyInUse:"카메라에 액세스할 수 없습니다. 다른 응용 프로그램에서 이미 사용 중일 수 있습니다.",callMacOsCameraAccessDenied:"MacOS에서 카메라에 대한 액세스를 차단하고 있습니다. 이 브라우저에서 카메라에 액세스할 수 있도록 개인 정보 설정을 업데이트합니다.",callMacOsScreenShareAccessDenied:"MacOS에서 화면 공유를 차단하고 있습니다. 이 브라우저에서 화면을 녹화할 수 있도록 개인 정보 설정을 업데이트합니다."};var videoGallery$6={screenIsBeingSharedMessage:"화면을 공유 중입니다.",screenShareLoadingMessage:"{participant} 님의 화면 로드 중",localVideoLabel:"나",localVideoCameraSwitcherLabel:"카메라 주기"};var ko_KR$1 = {participantItem:participantItem$6,typingIndicator:typingIndicator$6,sendBox:sendBox$6,messageStatusIndicator:messageStatusIndicator$6,endCallButton:endCallButton$6,cameraButton:cameraButton$6,microphoneButton:microphoneButton$6,devicesButton:devicesButton$6,participantsButton:participantsButton$6,screenShareButton:screenShareButton$6,messageThread:messageThread$6,errorBar:errorBar$6,videoGallery:videoGallery$6};
945
+ var participantItem$6={isMeText:"(나)",menuTitle:"추가 옵션",removeButtonLabel:"제거",sharingIconLabel:"공유 중",mutedIconLabel:"음소거됨",displayNamePlaceholder:"명명되지 않은 참가자"};var typingIndicator$6={singleUser:"{user} 님이 입력 중...",multipleUsers:"{users} 님이 입력하는 중...",multipleUsersAbbreviateOne:"{users} 님 외 1명이 입력 중...",multipleUsersAbbreviateMany:"{users} 님 외 {numOthers} 님이 입력하는 중...",delimiter:"닫는 렌즈형 흰색 괄호"};var sendBox$6={placeholderText:"메시지를 입력하세요",textTooLong:"메시지 길이가 최대 제한을 초과했습니다.",sendButtonAriaLabel:"메시지 보내기",fileUploadsPendingError:"업로드 중... 잠시만 기다려 주세요."};var messageStatusIndicator$6={deliveredAriaLabel:"메시지를 보냄",deliveredTooltipText:"보냄",seenAriaLabel:"다른 사용자가 본 메시지",seenTooltipText:"표시됨",readByTooltipText:"{messageThreadReadCount}/{remoteParticipantsCount}명이 읽음",sendingAriaLabel:"메시지를 보내는 중",sendingTooltipText:"보내는 중",failedToSendAriaLabel:"메시지를 보내지 못함",failedToSendTooltipText:"보내기 실패"};var endCallButton$6={label:"휴가",tooltipContent:"통화 종료"};var cameraButton$6={onLabel:"끄기",offLabel:"켜기",tooltipDisabledContent:"카메라가 비활성화되었습니다",tooltipOnContent:"카메라 끄기",tooltipOffContent:"카메라 켜기",tooltipVideoLoadingContent:"비디오를 로드하는 중입니다.",cameraMenuTitle:"카메라",cameraMenuTooltip:"카메라 선택",cameraButtonSplitRoleDescription:"분할 단추",onSplitButtonAriaLabel:"카메라 사용 안 함 및 카메라 옵션",offSplitButtonAriaLabel:"카메라 사용 및 카메라 옵션",cameraActionTurnedOnAnnouncement:"카메라가 켜져 있습니다.",cameraActionTurnedOffAnnouncement:"카메라가 꺼져 있습니다."};var microphoneButton$6={onLabel:"음소거",offLabel:"음소거 해제",tooltipDisabledContent:"마이크가 비활성화되었습니다",tooltipOnContent:"마이크 음소거",tooltipOffContent:"마이크 음소거 해제",microphoneMenuTitle:"마이크",microphoneMenuTooltip:"마이크 선택",speakerMenuTitle:"발언자",speakerMenuTooltip:"스피커 선택",microphoneButtonSplitRoleDescription:"분할 단추",onSplitButtonAriaLabel:"마이크 및 오디오 음소거 옵션",offSplitButtonAriaLabel:"마이크 및 오디오 음소거 해제 옵션",microphoneActionTurnedOnAnnouncement:"마이크가 켜져 있습니다.",microphoneActionTurnedOffAnnouncement:"마이크가 꺼져 있습니다."};var devicesButton$6={label:"장치",tooltipContent:"장치 관리",cameraMenuTitle:"카메라",cameraMenuTooltip:"카메라 선택",audioDeviceMenuTitle:"오디오 장치",audioDeviceMenuTooltip:"오디오 장치 선택",microphoneMenuTitle:"마이크",microphoneMenuTooltip:"마이크 선택",speakerMenuTitle:"발언자",speakerMenuTooltip:"스피커 선택"};var participantsButton$6={label:"사용자",tooltipContent:"프레젠테이션 표시",menuHeader:"이 통화에서",participantsListButtonLabel:"{numParticipants}명",muteAllButtonLabel:"모두 음소거",copyInviteLinkButtonLabel:"초대 링크 복사"};var screenShareButton$6={onLabel:"프레젠테이션 중지",offLabel:"프레젠테이션",tooltipDisabledContent:"프레젠테이션 사용 안 함",tooltipOnContent:"화면을 프레젠테이션하는 중",tooltipOffContent:"화면 프레젠테이션"};var messageThread$6={yesterday:"어제",sunday:"일요일",monday:"월요일",tuesday:"화요일",wednesday:"수요일",thursday:"목요일",friday:"금요일",saturday:"토요일",participantJoined:"채팅에 참여했습니다.",participantLeft:"이 채팅을 나갔습니다.",editMessage:"편집",removeMessage:"삭제",resendMessage:"전송 다시 시도",failToSendTag:"보내기 실패",editedTag:"편집됨",liveAuthorIntro:"{author} 님이 말합니다.",editBoxTextLimit:"메시지가 {limitNumber} 문자 제한을 초과했습니다.",editBoxPlaceholderText:"메시지 편집",newMessagesIndicator:"새 메시지",noDisplayNameSub:"이름 없음",editBoxCancelButton:"취소",editBoxSubmitButton:"제출",messageReadCount:"{messageReadByCount}/{remoteParticipantsCount}명이 읽음",actionMenuMoreOptions:"추가 옵션"};var errorBar$6={unableToReachChatService:"오프라인 상태입니다.",accessDenied:"채팅 서비스에 액세스할 수 없습니다. 제공된 사용자 자격 증명을 확인하세요.",userNotInChatThread:"이 채팅 스레드에 더 이상 없습니다.",sendMessageNotInChatThread:"이 채팅 스레드에 더 이상 존재하지 않으므로 메시지를 보내지 못했습니다.",sendMessageGeneric:"메시지를 보내지 못했습니다",callingNetworkFailure:"통화 연결 중 - 오프라인 상태인 것 같습니다.",startVideoGeneric:"비디오를 시작하지 못함",stopVideoGeneric:"비디오를 중지하지 못함",muteGeneric:"마이크를 음소거하지 못함",unmuteGeneric:"마이크 음소거를 해제하지 못함",speakingWhileMuted:"마이크가 음소거됨",startScreenShareGeneric:"화면 공유를 시작하지 못함",stopScreenShareGeneric:"화면 공유를 중지하지 못함",callNetworkQualityLow:"네트워크 품질이 낮습니다.",callNoSpeakerFound:"스피커 또는 헤드폰을 찾을 수 없습니다. 오디오 장치를 연결하여 통화를 들을 수 있습니다.",callNoMicrophoneFound:"마이크를 찾을 수 없습니다. 오디오 입력 장치를 연결합니다.",callMicrophoneAccessDenied:"마이크에 액세스할 수 없습니다. 주소 표시줄에서 잠금을 클릭하여 이 웹 페이지에 권한을 부여합니다.",callMicrophoneMutedBySystem:"시스템에 의해 음소거되었습니다.",callMacOsMicrophoneAccessDenied:"마이크에 액세스할 수 없습니다. macOS 개인 정보 설정에서 마이크 권한을 부여합니다.",callLocalVideoFreeze:"네트워크 대역폭이 불량합니다. 통화 중에 다른 사람에 대해 비디오가 일시 중지된 것 같습니다.",callCameraAccessDenied:"카메라에 액세스할 수 없습니다. 주소 표시줄에서 잠금을 클릭하여 이 웹 페이지에 권한을 부여합니다.",callCameraAlreadyInUse:"카메라에 액세스할 수 없습니다. 다른 응용 프로그램에서 이미 사용 중일 수 있습니다.",callMacOsCameraAccessDenied:"MacOS에서 카메라에 대한 액세스를 차단하고 있습니다. 이 브라우저에서 카메라에 액세스할 수 있도록 개인 정보 설정을 업데이트합니다.",callMacOsScreenShareAccessDenied:"MacOS에서 화면 공유를 차단하고 있습니다. 이 브라우저에서 화면을 녹화할 수 있도록 개인 정보 설정을 업데이트합니다.",dismissButtonAriaLabel:"닫기",failedToJoinCallGeneric:"통화에 참가하지 못했습니다.",failedToJoinCallInvalidMeetingLink:"모임에 참가할 수 없습니다. 잘못된 링크입니다."};var videoGallery$6={screenIsBeingSharedMessage:"화면을 공유 중입니다.",screenShareLoadingMessage:"{participant} 님의 화면 로드 중",localVideoLabel:"나",localVideoCameraSwitcherLabel:"카메라 전환",localVideoMovementLabel:"이동 가능한 로컬 비디오 타일",localVideoSelectedDescription:"{cameraName} 선택함",displayNamePlaceholder:"명명되지 않은 참가자"};var dialpad$6={placeholderText:"번호 입력"};var HoldButton$7={onLabel:"계속",offLabel:"보류",toolTipOnContent:"통화 계속하기",toolTipOffContent:"통화 대기"};var ko_KR$1 = {participantItem:participantItem$6,typingIndicator:typingIndicator$6,sendBox:sendBox$6,messageStatusIndicator:messageStatusIndicator$6,endCallButton:endCallButton$6,cameraButton:cameraButton$6,microphoneButton:microphoneButton$6,devicesButton:devicesButton$6,participantsButton:participantsButton$6,screenShareButton:screenShareButton$6,messageThread:messageThread$6,errorBar:errorBar$6,videoGallery:videoGallery$6,dialpad:dialpad$6,HoldButton:HoldButton$7};
873
946
 
874
- var participantItem$5={isMeText:"(jij)",menuTitle:"Meer opties",removeButtonLabel:"Verwijderen",sharingIconLabel:"Delen",mutedIconLabel:"Gedempt"};var typingIndicator$5={singleUser:"{user} typt ...",multipleUsers:"{users} typen ...",multipleUsersAbbreviateOne:"{users} en 1 andere persoon typen ...",multipleUsersAbbreviateMany:"{users} en {numOthers} anderen typen ...",delimiter:", "};var sendBox$5={placeholderText:"Een bericht invoeren",textTooLong:"De lengte van uw bericht overschrijdt de maximumlimiet.",sendButtonAriaLabel:"Bericht verzenden",fileUploadsPendingError:"Uploaden.... Een ogenblik geduld."};var messageStatusIndicator$5={deliveredAriaLabel:"Bericht verzonden",deliveredTooltipText:"Verzonden",seenAriaLabel:"Bericht gezien door anderen",seenTooltipText:"Gezien",readByTooltipText:"Gelezen door {messageThreadReadCount} van {remoteParticipantsCount}",sendingAriaLabel:"Bericht verzenden",sendingTooltipText:"Verzenden",failedToSendAriaLabel:"Het bericht is niet verzonden",failedToSendTooltipText:"Kan niet verzenden"};var endCallButton$5={label:"Verlaten",tooltipContent:"Gesprek verlaten"};var cameraButton$5={onLabel:"Uitschakelen",offLabel:"Inschakelen",tooltipDisabledContent:"Camera is uitgeschakeld",tooltipOnContent:"Camera uitschakelen",tooltipOffContent:"Camera inschakelen",tooltipVideoLoadingContent:"Video wordt geladen",cameraMenuTitle:"Camera",cameraMenuTooltip:"Camera kiezen"};var microphoneButton$5={onLabel:"Dempen",offLabel:"Dempen opheffen",tooltipDisabledContent:"Microfoon is uitgeschakeld",tooltipOnContent:"Microfoon uitschakelen",tooltipOffContent:"Microfoon inschakelen",microphoneMenuTitle:"Microfoon",microphoneMenuTooltip:"Microfoon kiezen",speakerMenuTitle:"Luidspreker",speakerMenuTooltip:"Luidspreker kiezen"};var devicesButton$5={label:"Apparaten",tooltipContent:"Apparaten beheren",cameraMenuTitle:"Camera",cameraMenuTooltip:"Camera kiezen",microphoneMenuTitle:"Microfoon",microphoneMenuTooltip:"Microfoon kiezen",speakerMenuTitle:"Spreker",speakerMenuTooltip:"Luidspreker kiezen"};var participantsButton$5={label:"Personen",tooltipContent:"Deelnemers weergeven",menuHeader:"In dit gesprek",participantsListButtonLabel:"{numParticipants} personen",muteAllButtonLabel:"Alles dempen",copyInviteLinkButtonLabel:"Uitnodigingskoppeling kopiëren"};var screenShareButton$5={onLabel:"Presenteren stoppen",offLabel:"Presenteren",tooltipDisabledContent:"Presenteren is uitgeschakeld",tooltipOnContent:"Uw scherm presenteren",tooltipOffContent:"Uw scherm presenteren"};var messageThread$5={yesterday:"Gisteren",sunday:"Zondag",monday:"Maandag",tuesday:"Dinsdag",wednesday:"Woensdag",thursday:"Donderdag",friday:"Vrijdag",saturday:"Zaterdag",participantJoined:"neemt nu deel aan de chat.",participantLeft:"heeft de chat verlaten.",editMessage:"Bewerken",removeMessage:"Verwijderen",editedTag:"Bewerkt",liveAuthorIntro:"{author} zegt",editBoxTextLimit:"Uw bericht heeft de limiet van {limitNumber} tekens overschreden",editBoxPlaceholderText:"Uw bericht bewerken",newMessagesIndicator:"Nieuwe berichten",noDisplayNameSub:"Geen naam",editBoxCancelButton:"Annuleren",editBoxSubmitButton:"Verzenden",messageReadCount:"Gelezen door {messageReadByCount} van {remoteParticipantsCount}"};var errorBar$5={unableToReachChatService:"U bent offline",accessDenied:"Kan geen toegang krijgen tot chatservices. Controleer de opgegeven gebruikersreferenties",userNotInChatThread:"U bent niet meer aanwezig in deze chatthread",sendMessageNotInChatThread:"Verzenden van bericht is mislukt omdat u zich niet meer in deze chatthread bevindt",sendMessageGeneric:"Kan bericht niet verzenden",callingNetworkFailure:"Er zijn problemen met het verbinden van een gesprek - Het lijkt erop dat u offline bent",startVideoGeneric:"Kan video niet starten",stopVideoGeneric:"Kan video niet stoppen",muteGeneric:"Kan microfoon niet dempen",unmuteGeneric:"Kan dempen van microfoon niet opheffen",speakingWhileMuted:"De microfoon is gedempt",startScreenShareGeneric:"Kan scherm delen niet starten",stopScreenShareGeneric:"Kan scherm delen niet stoppen",callNetworkQualityLow:"De netwerkkwaliteit is laag.",callNoSpeakerFound:"Geen luidsprekers of hoofdtelefoon gevonden. Sluit een audioapparaat aan om het gesprek te beluisteren.",callNoMicrophoneFound:"Geen microfoons gevonden. Sluit een audio-invoerapparaat aan.",callMicrophoneAccessDenied:"Kan geen toegang krijgen tot de microfoon. Klik op de vergrendeling in de adresbalk om toestemming te verlenen aan deze webpagina.",callMicrophoneMutedBySystem:"U bent gedempt door jouw systeem.",callMacOsMicrophoneAccessDenied:"Kan geen toegang krijgen tot de microfoon. Verleen microfoonmachtiging in de privacyinstellingen voor macOS.",callLocalVideoFreeze:"De netwerkbandbreedte is slecht. Je video wordt mogelijk onderbroken weergegeven voor anderen in het gesprek.",callCameraAccessDenied:"Kan geen toegang krijgen tot de camera. Klik op de vergrendeling in de adresbalk om toestemming te verlenen aan deze webpagina.",callCameraAlreadyInUse:"Kan geen toegang krijgen tot de camera. Het wordt mogelijk al gebruikt door een andere toepassing.",callMacOsCameraAccessDenied:"MacOS blokkeert de toegang tot jouw camera. Werk je privacyinstellingen bij, zodat deze browser toegang heeft tot jouw camera.",callMacOsScreenShareAccessDenied:"MacOS blokkeert scherm delen. Werk je privacyinstellingen bij, zodat deze browser jouw scherm kan opnemen."};var videoGallery$5={screenIsBeingSharedMessage:"U deelt uw scherm",screenShareLoadingMessage:"Scherm van {participant} laden",localVideoLabel:"U",localVideoCameraSwitcherLabel:"Camera wisselen"};var nl_NL$1 = {participantItem:participantItem$5,typingIndicator:typingIndicator$5,sendBox:sendBox$5,messageStatusIndicator:messageStatusIndicator$5,endCallButton:endCallButton$5,cameraButton:cameraButton$5,microphoneButton:microphoneButton$5,devicesButton:devicesButton$5,participantsButton:participantsButton$5,screenShareButton:screenShareButton$5,messageThread:messageThread$5,errorBar:errorBar$5,videoGallery:videoGallery$5};
947
+ var participantItem$5={isMeText:"(jij)",menuTitle:"Meer opties",removeButtonLabel:"Verwijderen",sharingIconLabel:"Delen",mutedIconLabel:"Gedempt",displayNamePlaceholder:"Naamloze deelnemer"};var typingIndicator$5={singleUser:"{user} typt ...",multipleUsers:"{users} typen ...",multipleUsersAbbreviateOne:"{users} en 1 andere persoon typen ...",multipleUsersAbbreviateMany:"{users} en {numOthers} anderen typen ...",delimiter:", "};var sendBox$5={placeholderText:"Een bericht invoeren",textTooLong:"De lengte van uw bericht overschrijdt de maximumlimiet.",sendButtonAriaLabel:"Bericht verzenden",fileUploadsPendingError:"Uploaden.... Een ogenblik geduld."};var messageStatusIndicator$5={deliveredAriaLabel:"Bericht verzonden",deliveredTooltipText:"Verzonden",seenAriaLabel:"Bericht gezien door anderen",seenTooltipText:"Gezien",readByTooltipText:"Gelezen door {messageThreadReadCount} van {remoteParticipantsCount}",sendingAriaLabel:"Bericht verzenden",sendingTooltipText:"Verzenden",failedToSendAriaLabel:"Het bericht is niet verzonden",failedToSendTooltipText:"Kan niet verzenden"};var endCallButton$5={label:"Verlaten",tooltipContent:"Gesprek verlaten"};var cameraButton$5={onLabel:"Uitschakelen",offLabel:"Inschakelen",tooltipDisabledContent:"Camera is uitgeschakeld",tooltipOnContent:"Camera uitschakelen",tooltipOffContent:"Camera inschakelen",tooltipVideoLoadingContent:"Video wordt geladen",cameraMenuTitle:"Camera",cameraMenuTooltip:"Camera kiezen",cameraButtonSplitRoleDescription:"Knop Splitsen",onSplitButtonAriaLabel:"Camera- en cameraopties uitschakelen",offSplitButtonAriaLabel:"Camera- en cameraopties inschakelen",cameraActionTurnedOnAnnouncement:"Uw camera is ingeschakeld",cameraActionTurnedOffAnnouncement:"Uw camera is uitgeschakeld"};var microphoneButton$5={onLabel:"Dempen",offLabel:"Dempen opheffen",tooltipDisabledContent:"Microfoon is uitgeschakeld",tooltipOnContent:"Microfoon uitschakelen",tooltipOffContent:"Microfoon inschakelen",microphoneMenuTitle:"Microfoon",microphoneMenuTooltip:"Microfoon kiezen",speakerMenuTitle:"Luidspreker",speakerMenuTooltip:"Luidspreker kiezen",microphoneButtonSplitRoleDescription:"Knop Splitsen",onSplitButtonAriaLabel:"Microfoon- en audioopties dempen",offSplitButtonAriaLabel:"Microfoon- en audioopties dempen opheffen",microphoneActionTurnedOnAnnouncement:"Uw microfoon is ingeschakeld",microphoneActionTurnedOffAnnouncement:"Uw microfoon is uitgeschakeld"};var devicesButton$5={label:"Apparaten",tooltipContent:"Apparaten beheren",cameraMenuTitle:"Camera",cameraMenuTooltip:"Camera kiezen",audioDeviceMenuTitle:"Audioapparaat",audioDeviceMenuTooltip:"Audioapparaat kiezen",microphoneMenuTitle:"Microfoon",microphoneMenuTooltip:"Microfoon kiezen",speakerMenuTitle:"Spreker",speakerMenuTooltip:"Luidspreker kiezen"};var participantsButton$5={label:"Personen",tooltipContent:"Deelnemers weergeven",menuHeader:"In dit gesprek",participantsListButtonLabel:"{numParticipants} personen",muteAllButtonLabel:"Alles dempen",copyInviteLinkButtonLabel:"Uitnodigingskoppeling kopiëren"};var screenShareButton$5={onLabel:"Presenteren stoppen",offLabel:"Presenteren",tooltipDisabledContent:"Presenteren is uitgeschakeld",tooltipOnContent:"Uw scherm presenteren",tooltipOffContent:"Uw scherm presenteren"};var messageThread$5={yesterday:"Gisteren",sunday:"Zondag",monday:"Maandag",tuesday:"Dinsdag",wednesday:"Woensdag",thursday:"Donderdag",friday:"Vrijdag",saturday:"Zaterdag",participantJoined:"neemt nu deel aan de chat.",participantLeft:"heeft de chat verlaten.",editMessage:"Bewerken",removeMessage:"Verwijderen",resendMessage:"Probeer opnieuw te verzenden",failToSendTag:"Verzenden mislukt",editedTag:"Bewerkt",liveAuthorIntro:"{author} zegt",editBoxTextLimit:"Uw bericht heeft de limiet van {limitNumber} tekens overschreden",editBoxPlaceholderText:"Uw bericht bewerken",newMessagesIndicator:"Nieuwe berichten",noDisplayNameSub:"Geen naam",editBoxCancelButton:"Annuleren",editBoxSubmitButton:"Verzenden",messageReadCount:"Gelezen door {messageReadByCount} van {remoteParticipantsCount}",actionMenuMoreOptions:"Meer opties"};var errorBar$5={unableToReachChatService:"U bent offline",accessDenied:"Kan geen toegang krijgen tot chatservices. Controleer de opgegeven gebruikersreferenties",userNotInChatThread:"U bent niet meer aanwezig in deze chatthread",sendMessageNotInChatThread:"Verzenden van bericht is mislukt omdat u zich niet meer in deze chatthread bevindt",sendMessageGeneric:"Kan bericht niet verzenden",callingNetworkFailure:"Er zijn problemen met het verbinden van een gesprek - Het lijkt erop dat u offline bent",startVideoGeneric:"Kan video niet starten",stopVideoGeneric:"Kan video niet stoppen",muteGeneric:"Kan microfoon niet dempen",unmuteGeneric:"Kan dempen van microfoon niet opheffen",speakingWhileMuted:"De microfoon is gedempt",startScreenShareGeneric:"Kan scherm delen niet starten",stopScreenShareGeneric:"Kan scherm delen niet stoppen",callNetworkQualityLow:"De netwerkkwaliteit is laag.",callNoSpeakerFound:"Geen luidsprekers of hoofdtelefoon gevonden. Sluit een audioapparaat aan om het gesprek te beluisteren.",callNoMicrophoneFound:"Geen microfoons gevonden. Sluit een audio-invoerapparaat aan.",callMicrophoneAccessDenied:"Kan geen toegang krijgen tot de microfoon. Klik op de vergrendeling in de adresbalk om toestemming te verlenen aan deze webpagina.",callMicrophoneMutedBySystem:"U bent gedempt door jouw systeem.",callMacOsMicrophoneAccessDenied:"Kan geen toegang krijgen tot de microfoon. Verleen microfoonmachtiging in de privacyinstellingen voor macOS.",callLocalVideoFreeze:"De netwerkbandbreedte is slecht. Je video wordt mogelijk onderbroken weergegeven voor anderen in het gesprek.",callCameraAccessDenied:"Kan geen toegang krijgen tot de camera. Klik op de vergrendeling in de adresbalk om toestemming te verlenen aan deze webpagina.",callCameraAlreadyInUse:"Kan geen toegang krijgen tot de camera. Het wordt mogelijk al gebruikt door een andere toepassing.",callMacOsCameraAccessDenied:"MacOS blokkeert de toegang tot jouw camera. Werk je privacyinstellingen bij, zodat deze browser toegang heeft tot jouw camera.",callMacOsScreenShareAccessDenied:"MacOS blokkeert scherm delen. Werk je privacyinstellingen bij, zodat deze browser jouw scherm kan opnemen.",dismissButtonAriaLabel:"Sluiten",failedToJoinCallGeneric:"Deelnemen aan gesprek mislukt.",failedToJoinCallInvalidMeetingLink:"Kan niet deelnemen aan vergadering. Ongeldige koppeling."};var videoGallery$5={screenIsBeingSharedMessage:"U deelt uw scherm",screenShareLoadingMessage:"Scherm van {participant} laden",localVideoLabel:"U",localVideoCameraSwitcherLabel:"Camera wisselen",localVideoMovementLabel:"Tegel voor verwisselbare lokale video",localVideoSelectedDescription:"{cameraName} geselecteerd",displayNamePlaceholder:"Naamloze deelnemer"};var dialpad$5={placeholderText:"Voer een nummer in"};var HoldButton$6={onLabel:"Hervatten",offLabel:"Pauze",toolTipOnContent:"Gesprek hervatten",toolTipOffContent:"Gesprek in wachtrij plaatsen"};var nl_NL$1 = {participantItem:participantItem$5,typingIndicator:typingIndicator$5,sendBox:sendBox$5,messageStatusIndicator:messageStatusIndicator$5,endCallButton:endCallButton$5,cameraButton:cameraButton$5,microphoneButton:microphoneButton$5,devicesButton:devicesButton$5,participantsButton:participantsButton$5,screenShareButton:screenShareButton$5,messageThread:messageThread$5,errorBar:errorBar$5,videoGallery:videoGallery$5,dialpad:dialpad$5,HoldButton:HoldButton$6};
875
948
 
876
- var participantItem$4={isMeText:"(você)",menuTitle:"Mais opções",removeButtonLabel:"Remover",sharingIconLabel:"Compartilhamento",mutedIconLabel:"Silenciado"};var typingIndicator$4={singleUser:"{user} está digitando ...",multipleUsers:"{users} estão digitando ...",multipleUsersAbbreviateOne:"{users} e 1 outro estão digitando...",multipleUsersAbbreviateMany:"{users} e {numOthers} outros estão digitando ...",delimiter:", "};var sendBox$4={placeholderText:"Inserir uma mensagem",textTooLong:"O comprimento da mensagem está acima do limite máximo.",sendButtonAriaLabel:"Enviar mensagem",fileUploadsPendingError:"Carregando... Aguarde."};var messageStatusIndicator$4={deliveredAriaLabel:"Mensagem enviada",deliveredTooltipText:"Enviado",seenAriaLabel:"Mensagem vista por outras pessoas",seenTooltipText:"Visto",readByTooltipText:"Lido por {messageThreadReadCount} de {remoteParticipantsCount}",sendingAriaLabel:"Envio de mensagem",sendingTooltipText:"Enviando",failedToSendAriaLabel:"Falha ao enviar mensagem",failedToSendTooltipText:"Falha ao enviar"};var endCallButton$4={label:"Sair",tooltipContent:"Sair da Chamada"};var cameraButton$4={onLabel:"Desabilitar",offLabel:"Habilitar",tooltipDisabledContent:"A câmera está desabilitada",tooltipOnContent:"Desabilitar a câmera",tooltipOffContent:"Ligar a câmera",tooltipVideoLoadingContent:"O vídeo está carregando",cameraMenuTitle:"Câmera",cameraMenuTooltip:"Escolher Câmera"};var microphoneButton$4={onLabel:"Mudo",offLabel:"Desativar mudo",tooltipDisabledContent:"O microfone está desabilitado",tooltipOnContent:"Ativar mudo do microfone",tooltipOffContent:"Desativar mudo do microfone",microphoneMenuTitle:"Microfone",microphoneMenuTooltip:"Escolher Microfone",speakerMenuTitle:"Alto-falante",speakerMenuTooltip:"Escolher Alto-falante"};var devicesButton$4={label:"Dispositivos",tooltipContent:"Gerenciar dispositivos",cameraMenuTitle:"Câmera",cameraMenuTooltip:"Escolher Câmera",microphoneMenuTitle:"Microfone",microphoneMenuTooltip:"Escolher Microfone",speakerMenuTitle:"Alto-falante",speakerMenuTooltip:"Escolher Alto-falante"};var participantsButton$4={label:"Pessoas",tooltipContent:"Mostrar Participantes",menuHeader:"Nesta chamada",participantsListButtonLabel:"{numParticipants} pessoas",muteAllButtonLabel:"Silenciar todos",copyInviteLinkButtonLabel:"Copiar o link de convite"};var screenShareButton$4={onLabel:"Interromper apresentação",offLabel:"Apresentação",tooltipDisabledContent:"A apresentação está desabilitada.",tooltipOnContent:"Apresentando sua tela",tooltipOffContent:"Apresentar sua tela"};var messageThread$4={yesterday:"Ontem",sunday:"Domingo",monday:"Segunda",tuesday:"Terça-feira",wednesday:"Quarta-feira",thursday:"quinta-feira",friday:"Sexta-feira",saturday:"Sábado",participantJoined:"ingressou no chat.",participantLeft:"saiu do chat.",editMessage:"Editar",removeMessage:"Excluir",editedTag:"Editado",liveAuthorIntro:"{author} disse",editBoxTextLimit:"Sua mensagem está acima do limite de {limitNumber} caracteres",editBoxPlaceholderText:"Edite sua mensagem",newMessagesIndicator:"Novas mensagens",noDisplayNameSub:"Sem nome",editBoxCancelButton:"Cancelar",editBoxSubmitButton:"Enviar",messageReadCount:"Lido por {messageReadByCount} de {remoteParticipantsCount}"};var errorBar$4={unableToReachChatService:"Você está offline",accessDenied:"Não é possível acessar os serviços de chat - verifique as credenciais do usuário fornecidas",userNotInChatThread:"Você não está mais neste tópico de chat",sendMessageNotInChatThread:"Falha ao enviar mensagem porque você não está mais neste thread de chat",sendMessageGeneric:"Falha ao enviar mensagem",callingNetworkFailure:"Chamada de conexão desabilitar - parece que você está offline",startVideoGeneric:"Falha ao iniciar o vídeo",stopVideoGeneric:"Falha ao interromper o vídeo",muteGeneric:"Falha ao ativar mudo do microfone",unmuteGeneric:"Falha ao desativar mudo do microfone",speakingWhileMuted:"O microfone está com o mudo ativado",startScreenShareGeneric:"Falha ao iniciar o compartilhamento de tela",stopScreenShareGeneric:"Falha ao interromper o compartilhamento de tela",callNetworkQualityLow:"A qualidade da rede é baixa.",callNoSpeakerFound:"Nenhum alto-falante ou fone de ouvido encontrado. Conecte um dispositivo de áudio para ouvir a chamada.",callNoMicrophoneFound:"Nenhum microfone encontrado. Conecte um dispositivo de entrada de áudio.",callMicrophoneAccessDenied:"Não é possível acessar o microfone. Clique no bloqueio na barra de endereços para conceder permissão a esta página da Web.",callMicrophoneMutedBySystem:"Você está com as notificações desativada pelo sistema.",callMacOsMicrophoneAccessDenied:"Não é possível acessar o microfone. Conceda permissão ao microfone nas configurações de privacidade do macOS.",callLocalVideoFreeze:"A largura de banda da rede é ruim. Seu vídeo pode aparecer em pausa para outras pessoas na chamada.",callCameraAccessDenied:"Não é possível acessar a câmera. Clique no bloqueio na barra de endereços para conceder permissão a esta página da Web.",callCameraAlreadyInUse:"Não é possível acessar a câmera. Talvez ele já esteja em uso por outro aplicativo.",callMacOsCameraAccessDenied:"O MacOS está bloqueando o acesso à sua câmera. Atualize suas configurações de privacidade para permitir que este navegador acesse sua câmera.",callMacOsScreenShareAccessDenied:"O MacOS está bloqueando o compartilhamento de tela. Atualize suas configurações de privacidade para permitir que este navegador grave sua tela."};var videoGallery$4={screenIsBeingSharedMessage:"Você está compartilhando sua tela",screenShareLoadingMessage:"Carregando a tela do {participant}",localVideoLabel:"Você",localVideoCameraSwitcherLabel:"Câmera de ciclo"};var pt_BR$1 = {participantItem:participantItem$4,typingIndicator:typingIndicator$4,sendBox:sendBox$4,messageStatusIndicator:messageStatusIndicator$4,endCallButton:endCallButton$4,cameraButton:cameraButton$4,microphoneButton:microphoneButton$4,devicesButton:devicesButton$4,participantsButton:participantsButton$4,screenShareButton:screenShareButton$4,messageThread:messageThread$4,errorBar:errorBar$4,videoGallery:videoGallery$4};
949
+ var participantItem$4={isMeText:"(você)",menuTitle:"Mais opções",removeButtonLabel:"Remover",sharingIconLabel:"Compartilhamento",mutedIconLabel:"Silenciado",displayNamePlaceholder:"Participante Sem Nome"};var typingIndicator$4={singleUser:"{user} está digitando ...",multipleUsers:"{users} estão digitando ...",multipleUsersAbbreviateOne:"{users} e 1 outro estão digitando...",multipleUsersAbbreviateMany:"{users} e {numOthers} outros estão digitando ...",delimiter:", "};var sendBox$4={placeholderText:"Inserir uma mensagem",textTooLong:"O comprimento da mensagem está acima do limite máximo.",sendButtonAriaLabel:"Enviar mensagem",fileUploadsPendingError:"Carregando... Aguarde."};var messageStatusIndicator$4={deliveredAriaLabel:"Mensagem enviada",deliveredTooltipText:"Enviado",seenAriaLabel:"Mensagem vista por outras pessoas",seenTooltipText:"Visto",readByTooltipText:"Lido por {messageThreadReadCount} de {remoteParticipantsCount}",sendingAriaLabel:"Envio de mensagem",sendingTooltipText:"Enviando",failedToSendAriaLabel:"Falha ao enviar mensagem",failedToSendTooltipText:"Falha ao enviar"};var endCallButton$4={label:"Sair",tooltipContent:"Sair da Chamada"};var cameraButton$4={onLabel:"Desabilitar",offLabel:"Habilitar",tooltipDisabledContent:"A câmera está desabilitada",tooltipOnContent:"Desabilitar a câmera",tooltipOffContent:"Ligar a câmera",tooltipVideoLoadingContent:"O vídeo está carregando",cameraMenuTitle:"Câmera",cameraMenuTooltip:"Escolher Câmera",cameraButtonSplitRoleDescription:"Botão de divisão",onSplitButtonAriaLabel:"Desabilitar a câmera e as opções da câmera",offSplitButtonAriaLabel:"Habilitar a câmera e as opções da câmera",cameraActionTurnedOnAnnouncement:"A câmera foi ligada",cameraActionTurnedOffAnnouncement:"A câmera foi desligada"};var microphoneButton$4={onLabel:"Mudo",offLabel:"Desativar mudo",tooltipDisabledContent:"O microfone está desabilitado",tooltipOnContent:"Ativar mudo do microfone",tooltipOffContent:"Desativar mudo do microfone",microphoneMenuTitle:"Microfone",microphoneMenuTooltip:"Escolher Microfone",speakerMenuTitle:"Alto-falante",speakerMenuTooltip:"Escolher Alto-falante",microphoneButtonSplitRoleDescription:"Botão de divisão",onSplitButtonAriaLabel:"Ativar mudo das opções de microfone e áudio",offSplitButtonAriaLabel:"Desativar mudo do microfone e opções de áudio",microphoneActionTurnedOnAnnouncement:"O microfone foi ligado",microphoneActionTurnedOffAnnouncement:"O microfone foi desligado"};var devicesButton$4={label:"Dispositivos",tooltipContent:"Gerenciar dispositivos",cameraMenuTitle:"Câmera",cameraMenuTooltip:"Escolher Câmera",audioDeviceMenuTitle:"Dispositivo de Áudio",audioDeviceMenuTooltip:"Escolher o Dispositivo de Áudio",microphoneMenuTitle:"Microfone",microphoneMenuTooltip:"Escolher Microfone",speakerMenuTitle:"Alto-falante",speakerMenuTooltip:"Escolher Alto-falante"};var participantsButton$4={label:"Pessoas",tooltipContent:"Mostrar Participantes",menuHeader:"Nesta chamada",participantsListButtonLabel:"{numParticipants} pessoas",muteAllButtonLabel:"Silenciar todos",copyInviteLinkButtonLabel:"Copiar o link de convite"};var screenShareButton$4={onLabel:"Interromper apresentação",offLabel:"Apresentação",tooltipDisabledContent:"A apresentação está desabilitada.",tooltipOnContent:"Apresentando sua tela",tooltipOffContent:"Apresentar sua tela"};var messageThread$4={yesterday:"Ontem",sunday:"Domingo",monday:"Segunda",tuesday:"Terça-feira",wednesday:"Quarta-feira",thursday:"quinta-feira",friday:"Sexta-feira",saturday:"Sábado",participantJoined:"ingressou no chat.",participantLeft:"saiu do chat.",editMessage:"Editar",removeMessage:"Excluir",resendMessage:"Tente enviar novamente",failToSendTag:"Falha ao enviar",editedTag:"Editado",liveAuthorIntro:"{author} disse",editBoxTextLimit:"Sua mensagem está acima do limite de {limitNumber} caracteres",editBoxPlaceholderText:"Edite sua mensagem",newMessagesIndicator:"Novas mensagens",noDisplayNameSub:"Sem nome",editBoxCancelButton:"Cancelar",editBoxSubmitButton:"Enviar",messageReadCount:"Lido por {messageReadByCount} de {remoteParticipantsCount}",actionMenuMoreOptions:"Mais opções"};var errorBar$4={unableToReachChatService:"Você está offline",accessDenied:"Não é possível acessar os serviços de chat - verifique as credenciais do usuário fornecidas",userNotInChatThread:"Você não está mais neste tópico de chat",sendMessageNotInChatThread:"Falha ao enviar mensagem porque você não está mais neste thread de chat",sendMessageGeneric:"Falha ao enviar mensagem",callingNetworkFailure:"Chamada de conexão desabilitar - parece que você está offline",startVideoGeneric:"Falha ao iniciar o vídeo",stopVideoGeneric:"Falha ao interromper o vídeo",muteGeneric:"Falha ao ativar mudo do microfone",unmuteGeneric:"Falha ao desativar mudo do microfone",speakingWhileMuted:"O microfone está com o mudo ativado",startScreenShareGeneric:"Falha ao iniciar o compartilhamento de tela",stopScreenShareGeneric:"Falha ao interromper o compartilhamento de tela",callNetworkQualityLow:"A qualidade da rede é baixa.",callNoSpeakerFound:"Nenhum alto-falante ou fone de ouvido encontrado. Conecte um dispositivo de áudio para ouvir a chamada.",callNoMicrophoneFound:"Nenhum microfone encontrado. Conecte um dispositivo de entrada de áudio.",callMicrophoneAccessDenied:"Não é possível acessar o microfone. Clique no bloqueio na barra de endereços para conceder permissão a esta página da Web.",callMicrophoneMutedBySystem:"Você está com as notificações desativada pelo sistema.",callMacOsMicrophoneAccessDenied:"Não é possível acessar o microfone. Conceda permissão ao microfone nas configurações de privacidade do macOS.",callLocalVideoFreeze:"A largura de banda da rede é ruim. Seu vídeo pode aparecer em pausa para outras pessoas na chamada.",callCameraAccessDenied:"Não é possível acessar a câmera. Clique no bloqueio na barra de endereços para conceder permissão a esta página da Web.",callCameraAlreadyInUse:"Não é possível acessar a câmera. Talvez ele já esteja em uso por outro aplicativo.",callMacOsCameraAccessDenied:"O MacOS está bloqueando o acesso à sua câmera. Atualize suas configurações de privacidade para permitir que este navegador acesse sua câmera.",callMacOsScreenShareAccessDenied:"O MacOS está bloqueando o compartilhamento de tela. Atualize suas configurações de privacidade para permitir que este navegador grave sua tela.",dismissButtonAriaLabel:"Fechar",failedToJoinCallGeneric:"Ocorreu um erro ao ingressar na chamada.",failedToJoinCallInvalidMeetingLink:"Não é possível ingressar na Reunião. Link Inválido."};var videoGallery$4={screenIsBeingSharedMessage:"Você está compartilhando sua tela",screenShareLoadingMessage:"Carregando a tela do {participant}",localVideoLabel:"Você",localVideoCameraSwitcherLabel:"Alternar câmera",localVideoMovementLabel:"Bloco de Vídeo Local Removível",localVideoSelectedDescription:"{cameraName} selecionado",displayNamePlaceholder:"Participante Sem Nome"};var dialpad$4={placeholderText:"Digite um número"};var HoldButton$5={onLabel:"Retomar",offLabel:"Retenção",toolTipOnContent:"Retomar chamada",toolTipOffContent:"Manter chamada em espera"};var pt_BR$1 = {participantItem:participantItem$4,typingIndicator:typingIndicator$4,sendBox:sendBox$4,messageStatusIndicator:messageStatusIndicator$4,endCallButton:endCallButton$4,cameraButton:cameraButton$4,microphoneButton:microphoneButton$4,devicesButton:devicesButton$4,participantsButton:participantsButton$4,screenShareButton:screenShareButton$4,messageThread:messageThread$4,errorBar:errorBar$4,videoGallery:videoGallery$4,dialpad:dialpad$4,HoldButton:HoldButton$5};
877
950
 
878
- var participantItem$3={isMeText:"(Вы)",menuTitle:"Дополнительные параметры",removeButtonLabel:"Удалить",sharingIconLabel:"Общий доступ",mutedIconLabel:"Микрофон отключен"};var typingIndicator$3={singleUser:"{user} вводит текст...",multipleUsers:"{users} вводят текст...",multipleUsersAbbreviateOne:"{users} и еще 1 вводят текст...",multipleUsersAbbreviateMany:"{users} и еще {numOthers} вводят текст...",delimiter:"; "};var sendBox$3={placeholderText:"Введите сообщение",textTooLong:"Длина сообщения превышает максимально допустимую.",sendButtonAriaLabel:"Отправить сообщение",fileUploadsPendingError:"Выполняется загрузка. Подождите..."};var messageStatusIndicator$3={deliveredAriaLabel:"Сообщение отправлено",deliveredTooltipText:"Отправлено",seenAriaLabel:"Сообщение просмотрено другими пользователями",seenTooltipText:"Просмотрено",readByTooltipText:"Прочитали: {messageThreadReadCount} из {remoteParticipantsCount}",sendingAriaLabel:"Отправка сообщения",sendingTooltipText:"Отправка",failedToSendAriaLabel:"Не удалось отправить сообщение",failedToSendTooltipText:"Не удалось отправить"};var endCallButton$3={label:"Выйти",tooltipContent:"Покинуть звонок"};var cameraButton$3={onLabel:"Отключить",offLabel:"Включить",tooltipDisabledContent:"Камера отключена",tooltipOnContent:"Выключить камеру",tooltipOffContent:"Включить камеру",tooltipVideoLoadingContent:"Видео загружается",cameraMenuTitle:"Камера",cameraMenuTooltip:"Выбор камеры"};var microphoneButton$3={onLabel:"Отключить звук",offLabel:"Включить звук",tooltipDisabledContent:"Микрофон отключен",tooltipOnContent:"Отключить микрофон",tooltipOffContent:"Включить микрофон",microphoneMenuTitle:"Микрофон",microphoneMenuTooltip:"Выбрать микрофон",speakerMenuTitle:"Динамик",speakerMenuTooltip:"Выбрать динамик"};var devicesButton$3={label:"Устройства",tooltipContent:"Управление устройствами",cameraMenuTitle:"Камера",cameraMenuTooltip:"Выбрать камеру",microphoneMenuTitle:"Микрофон",microphoneMenuTooltip:"Выбрать микрофон",speakerMenuTitle:"Динамик",speakerMenuTooltip:"Выбрать динамик"};var participantsButton$3={label:"Люди",tooltipContent:"Показать участников",menuHeader:"В этом звонке",participantsListButtonLabel:"Пользователей: {numParticipants}",muteAllButtonLabel:"Отключить все микрофоны",copyInviteLinkButtonLabel:"Копировать ссылку с приглашением"};var screenShareButton$3={onLabel:"Остановить демонстрацию",offLabel:"Демонстрировать",tooltipDisabledContent:"Демонстрация отключена",tooltipOnContent:"Демонстрация экрана",tooltipOffContent:"Демонстрировать экран"};var messageThread$3={yesterday:"Вчера",sunday:"Воскресенье",monday:"Понедельник",tuesday:"Вторник",wednesday:"Среда",thursday:"Четверг",friday:"Пятница",saturday:"Суббота",participantJoined:"присоединился к чату.",participantLeft:"покинул чат.",editMessage:"Изменить",removeMessage:"Удалить",editedTag:"Изменено",liveAuthorIntro:"{author} говорит",editBoxTextLimit:"Превышено предельное число символов в {limitNumber} сообщении",editBoxPlaceholderText:"Отредактируйте сообщение",newMessagesIndicator:"Новые сообщения",noDisplayNameSub:"Без имени",editBoxCancelButton:"Отмена",editBoxSubmitButton:"Отправить",messageReadCount:"Прочитали: {messageReadByCount} из {remoteParticipantsCount}"};var errorBar$3={unableToReachChatService:"Вы не в сети",accessDenied:"Не удалось получить доступ к службам чата. Проверьте предоставленные учетные данные пользователя",userNotInChatThread:"Вы больше не находитесь в цепочке этого чата",sendMessageNotInChatThread:"Не удалось отправить сообщение, так как вы больше не находитесь в цепочке этого чата",sendMessageGeneric:"Не удалось отправить сообщение",callingNetworkFailure:"Тревожное подключение вызова — кажется, вы не в сети",startVideoGeneric:"Не удалось запустить видео",stopVideoGeneric:"Не удалось остановить видео",muteGeneric:"Не удалось отключить микрофон",unmuteGeneric:"Не удалось включить микрофон",speakingWhileMuted:"Микрофон отключен",startScreenShareGeneric:"Не удалось начать демонстрацию экрана",stopScreenShareGeneric:"Не удалось остановить демонстрацию экрана",callNetworkQualityLow:"Качество работы сети: низкое.",callNoSpeakerFound:"Динамики и наушники не найдены. Подключите звуковое устройство, чтобы услышать звонок.",callNoMicrophoneFound:"Микрофоны не найдены. Подключение звукового устройства ввода.",callMicrophoneAccessDenied:"Не удается получить доступ к микрофону. Щелкните блокировку в адресной строке, чтобы предоставить разрешение на эту веб-страницу.",callMicrophoneMutedBySystem:"Система отключила ваш микрофон.",callMacOsMicrophoneAccessDenied:"Не удается получить доступ к микрофону. Предоставьте разрешение на доступ к микрофону в параметрах конфиденциальности macOS.",callLocalVideoFreeze:"Низкая пропускная способность сети. Ваше видео может отображаться как приостановленное для других участников вызова.",callCameraAccessDenied:"Не удается получить доступ к камере. Щелкните блокировку в адресной строке, чтобы предоставить разрешение на эту веб-страницу.",callCameraAlreadyInUse:"Не удается получить доступ к камере. Возможно, оно уже используется другим приложением.",callMacOsCameraAccessDenied:"MacOS блокирует доступ к камере. Обновите параметры конфиденциальности, чтобы разрешить этому браузеру доступ к камере.",callMacOsScreenShareAccessDenied:"MacOS блокирует демонстрацию экрана. Обновите параметры конфиденциальности, чтобы разрешить этому браузеру записывать ваш экран."};var videoGallery$3={screenIsBeingSharedMessage:"Вы демонстрируете свой экран",screenShareLoadingMessage:"Загрузка экрана пользователя {participant}",localVideoLabel:"Вы",localVideoCameraSwitcherLabel:"Циклически переключать камеру"};var ru_RU$1 = {participantItem:participantItem$3,typingIndicator:typingIndicator$3,sendBox:sendBox$3,messageStatusIndicator:messageStatusIndicator$3,endCallButton:endCallButton$3,cameraButton:cameraButton$3,microphoneButton:microphoneButton$3,devicesButton:devicesButton$3,participantsButton:participantsButton$3,screenShareButton:screenShareButton$3,messageThread:messageThread$3,errorBar:errorBar$3,videoGallery:videoGallery$3};
951
+ var participantItem$3={isMeText:"(Вы)",menuTitle:"Дополнительные параметры",removeButtonLabel:"Удалить",sharingIconLabel:"Общий доступ",mutedIconLabel:"Микрофон отключен",displayNamePlaceholder:"Участник без имени"};var typingIndicator$3={singleUser:"{user} вводит текст...",multipleUsers:"{users} вводят текст...",multipleUsersAbbreviateOne:"{users} и еще 1 вводят текст...",multipleUsersAbbreviateMany:"{users} и еще {numOthers} вводят текст...",delimiter:"; "};var sendBox$3={placeholderText:"Введите сообщение",textTooLong:"Длина сообщения превышает максимально допустимую.",sendButtonAriaLabel:"Отправить сообщение",fileUploadsPendingError:"Выполняется загрузка. Подождите..."};var messageStatusIndicator$3={deliveredAriaLabel:"Сообщение отправлено",deliveredTooltipText:"Отправлено",seenAriaLabel:"Сообщение просмотрено другими пользователями",seenTooltipText:"Просмотрено",readByTooltipText:"Прочитали: {messageThreadReadCount} из {remoteParticipantsCount}",sendingAriaLabel:"Отправка сообщения",sendingTooltipText:"Отправка",failedToSendAriaLabel:"Не удалось отправить сообщение",failedToSendTooltipText:"Не удалось отправить"};var endCallButton$3={label:"Выйти",tooltipContent:"Покинуть звонок"};var cameraButton$3={onLabel:"Отключить",offLabel:"Включить",tooltipDisabledContent:"Камера отключена",tooltipOnContent:"Выключить камеру",tooltipOffContent:"Включить камеру",tooltipVideoLoadingContent:"Видео загружается",cameraMenuTitle:"Камера",cameraMenuTooltip:"Выбор камеры",cameraButtonSplitRoleDescription:"Разворачивающаяся кнопка",onSplitButtonAriaLabel:"Отключить камеру и параметры камеры",offSplitButtonAriaLabel:"Включить камеру и параметры камеры",cameraActionTurnedOnAnnouncement:"Камера включена",cameraActionTurnedOffAnnouncement:"Камера отключена"};var microphoneButton$3={onLabel:"Отключить звук",offLabel:"Включить звук",tooltipDisabledContent:"Микрофон отключен",tooltipOnContent:"Отключить микрофон",tooltipOffContent:"Включить микрофон",microphoneMenuTitle:"Микрофон",microphoneMenuTooltip:"Выбрать микрофон",speakerMenuTitle:"Динамик",speakerMenuTooltip:"Выбрать динамик",microphoneButtonSplitRoleDescription:"Разворачивающаяся кнопка",onSplitButtonAriaLabel:"Отключить микрофон и параметры звука",offSplitButtonAriaLabel:"Включить микрофон и параметры звука",microphoneActionTurnedOnAnnouncement:"Ваш микрофон включен",microphoneActionTurnedOffAnnouncement:"Ваш микрофон отключен"};var devicesButton$3={label:"Устройства",tooltipContent:"Управление устройствами",cameraMenuTitle:"Камера",cameraMenuTooltip:"Выбрать камеру",audioDeviceMenuTitle:"Звуковое устройство",audioDeviceMenuTooltip:"Выберите звуковое устройство",microphoneMenuTitle:"Микрофон",microphoneMenuTooltip:"Выбрать микрофон",speakerMenuTitle:"Динамик",speakerMenuTooltip:"Выбрать динамик"};var participantsButton$3={label:"Люди",tooltipContent:"Показать участников",menuHeader:"В этом звонке",participantsListButtonLabel:"Пользователей: {numParticipants}",muteAllButtonLabel:"Отключить все микрофоны",copyInviteLinkButtonLabel:"Копировать ссылку с приглашением"};var screenShareButton$3={onLabel:"Остановить демонстрацию",offLabel:"Демонстрировать",tooltipDisabledContent:"Демонстрация отключена",tooltipOnContent:"Демонстрация экрана",tooltipOffContent:"Демонстрировать экран"};var messageThread$3={yesterday:"Вчера",sunday:"Воскресенье",monday:"Понедельник",tuesday:"Вторник",wednesday:"Среда",thursday:"Четверг",friday:"Пятница",saturday:"Суббота",participantJoined:"присоединился к чату.",participantLeft:"покинул чат.",editMessage:"Изменить",removeMessage:"Удалить",resendMessage:"Отправьте еще раз",failToSendTag:"Не удалось отправить",editedTag:"Изменено",liveAuthorIntro:"{author} говорит",editBoxTextLimit:"Превышено предельное число символов в {limitNumber} сообщении",editBoxPlaceholderText:"Отредактируйте сообщение",newMessagesIndicator:"Новые сообщения",noDisplayNameSub:"Без имени",editBoxCancelButton:"Отмена",editBoxSubmitButton:"Отправить",messageReadCount:"Прочитали: {messageReadByCount} из {remoteParticipantsCount}",actionMenuMoreOptions:"Дополнительные параметры"};var errorBar$3={unableToReachChatService:"Вы не в сети",accessDenied:"Не удалось получить доступ к службам чата. Проверьте предоставленные учетные данные пользователя",userNotInChatThread:"Вы больше не находитесь в цепочке этого чата",sendMessageNotInChatThread:"Не удалось отправить сообщение, так как вы больше не находитесь в цепочке этого чата",sendMessageGeneric:"Не удалось отправить сообщение",callingNetworkFailure:"Тревожное подключение вызова — кажется, вы не в сети",startVideoGeneric:"Не удалось запустить видео",stopVideoGeneric:"Не удалось остановить видео",muteGeneric:"Не удалось отключить микрофон",unmuteGeneric:"Не удалось включить микрофон",speakingWhileMuted:"Микрофон отключен",startScreenShareGeneric:"Не удалось начать демонстрацию экрана",stopScreenShareGeneric:"Не удалось остановить демонстрацию экрана",callNetworkQualityLow:"Качество работы сети: низкое.",callNoSpeakerFound:"Динамики и наушники не найдены. Подключите звуковое устройство, чтобы услышать звонок.",callNoMicrophoneFound:"Микрофоны не найдены. Подключение звукового устройства ввода.",callMicrophoneAccessDenied:"Не удается получить доступ к микрофону. Щелкните блокировку в адресной строке, чтобы предоставить разрешение на эту веб-страницу.",callMicrophoneMutedBySystem:"Система отключила ваш микрофон.",callMacOsMicrophoneAccessDenied:"Не удается получить доступ к микрофону. Предоставьте разрешение на доступ к микрофону в параметрах конфиденциальности macOS.",callLocalVideoFreeze:"Низкая пропускная способность сети. Ваше видео может отображаться как приостановленное для других участников вызова.",callCameraAccessDenied:"Не удается получить доступ к камере. Щелкните блокировку в адресной строке, чтобы предоставить разрешение на эту веб-страницу.",callCameraAlreadyInUse:"Не удается получить доступ к камере. Возможно, оно уже используется другим приложением.",callMacOsCameraAccessDenied:"MacOS блокирует доступ к камере. Обновите параметры конфиденциальности, чтобы разрешить этому браузеру доступ к камере.",callMacOsScreenShareAccessDenied:"MacOS блокирует демонстрацию экрана. Обновите параметры конфиденциальности, чтобы разрешить этому браузеру записывать ваш экран.",dismissButtonAriaLabel:"Закрыть",failedToJoinCallGeneric:"Не удалось присоединиться к звонку.",failedToJoinCallInvalidMeetingLink:"Не удалось присоединиться к собранию. Недопустимая ссылка."};var videoGallery$3={screenIsBeingSharedMessage:"Вы демонстрируете свой экран",screenShareLoadingMessage:"Загрузка экрана пользователя {participant}",localVideoLabel:"Вы",localVideoCameraSwitcherLabel:"Переключить камеру",localVideoMovementLabel:"Перемещаемая локальная плитка видео",localVideoSelectedDescription:"Выбрана камера {cameraName}",displayNamePlaceholder:"Участник без имени"};var dialpad$3={placeholderText:"Введите номер"};var HoldButton$4={onLabel:"Возобновить",offLabel:"Удержать",toolTipOnContent:"Возобновить звонок",toolTipOffContent:"Поставить звонок на удержание"};var ru_RU$1 = {participantItem:participantItem$3,typingIndicator:typingIndicator$3,sendBox:sendBox$3,messageStatusIndicator:messageStatusIndicator$3,endCallButton:endCallButton$3,cameraButton:cameraButton$3,microphoneButton:microphoneButton$3,devicesButton:devicesButton$3,participantsButton:participantsButton$3,screenShareButton:screenShareButton$3,messageThread:messageThread$3,errorBar:errorBar$3,videoGallery:videoGallery$3,dialpad:dialpad$3,HoldButton:HoldButton$4};
879
952
 
880
- var participantItem$2={isMeText:"(siz)",menuTitle:"Diğer Seçenekler",removeButtonLabel:"Kaldır",sharingIconLabel:"Paylaşım",mutedIconLabel:"Ses kapatıldı"};var typingIndicator$2={singleUser:"{user} yazıyor...",multipleUsers:"{users} yazıyor ...",multipleUsersAbbreviateOne:"{users} ve 1 kişi daha yazıyor...",multipleUsersAbbreviateMany:"{users} ve {numOthers} kişi daha yazıyor...",delimiter:", "};var sendBox$2={placeholderText:"Bir mesaj girin",textTooLong:"İletinizin uzunluğu üst sınırı aşıyor.",sendButtonAriaLabel:"İleti gönder",fileUploadsPendingError:"Karşıya yükleniyor... Lütfen bekleyin."};var messageStatusIndicator$2={deliveredAriaLabel:"İleti gönderildi",deliveredTooltipText:"Gönderilen",seenAriaLabel:"İleti başkaları tarafından görüldü",seenTooltipText:"Görüldü",readByTooltipText:"{messageThreadReadCount} / {remoteParticipantsCount} katılımcı tarafından okundu",sendingAriaLabel:"İleti gönderiliyor",sendingTooltipText:"Gönderiliyor",failedToSendAriaLabel:"İleti gönderilemedi",failedToSendTooltipText:"Gönderilemedi"};var endCallButton$2={label:"Ayrıl",tooltipContent:"Aramadan Ayrıl"};var cameraButton$2={onLabel:"Kapat",offLabel:"Aç",tooltipDisabledContent:"Kamera devre dışı",tooltipOnContent:"Kamerayı kapat",tooltipOffContent:"Kamerayı aç",tooltipVideoLoadingContent:"Video yükleniyor",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera Seç"};var microphoneButton$2={onLabel:"Sesi kapat",offLabel:"Sesi aç",tooltipDisabledContent:"Mikrofon devre dışı",tooltipOnContent:"Mikrofonun sesini kapat",tooltipOffContent:"Mikrofonun sesini aç",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon Seç",speakerMenuTitle:"Hoparlör",speakerMenuTooltip:"Hoparlör Seç"};var devicesButton$2={label:"Cihazlar",tooltipContent:"Cihazları yönet",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera Seç",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon Seç",speakerMenuTitle:"Hoparlör",speakerMenuTooltip:"Hoparlör Seç"};var participantsButton$2={label:"Kişiler",tooltipContent:"Katılımcıları Göster",menuHeader:"Bu aramada",participantsListButtonLabel:"{numParticipants} kişiler",muteAllButtonLabel:"Tümünün sesini kapat",copyInviteLinkButtonLabel:"Davet bağlantısını kopyala"};var screenShareButton$2={onLabel:"Sunumu Durdur",offLabel:"Sun",tooltipDisabledContent:"Sunu devre dışı bırakıldı.",tooltipOnContent:"Ekranınızı sunuluyor",tooltipOffContent:"Ekranınızı sunun"};var messageThread$2={yesterday:"Dün",sunday:"Pazar",monday:"Pazartesi",tuesday:"Salı",wednesday:"Çarşamba",thursday:"Perşembe",friday:"Cuma",saturday:"Cumartesi",participantJoined:"sohbete katıldı.",participantLeft:"sohbetten ayrıldı.",editMessage:"Düzenle",removeMessage:"Sil",editedTag:"Düzenlendi",liveAuthorIntro:"{author} şöyle diyor:",editBoxTextLimit:"İletiniz en fazla {limitNumber} aşıyor",editBoxPlaceholderText:"İletinizi düzenleyin",newMessagesIndicator:"Yeni iletiler",noDisplayNameSub:"Ad yok",editBoxCancelButton:"İptal",editBoxSubmitButton:"Gönder",messageReadCount:"{messageReadByCount} / {remoteParticipantsCount} katılımcı tarafından okundu"};var errorBar$2={unableToReachChatService:"Çevrimdışısınız",accessDenied:"Sohbet hizmetlerine erişilemedi. Lütfen sağlanan kullanıcı kimlik bilgilerini denetleyin",userNotInChatThread:"Artık bu sohbet yazışması içinde değilsiniz",sendMessageNotInChatThread:"Artık bu sohbet yazışması içinde olmadığınız için ileti gönderilemedi",sendMessageGeneric:"İleti gönderilemedi",callingNetworkFailure:"Arama bağlanırken sorun oluştu; çevrimdışı görünüyorsunuz",startVideoGeneric:"Video başlatılamadı",stopVideoGeneric:"Video durdurulamadı",muteGeneric:"Mikrofonun sesi kapatılamadı",unmuteGeneric:"Mikrofonun sesi açılamadı",speakingWhileMuted:"Mikrofonunuzun sesi kapalı",startScreenShareGeneric:"Ekran paylaşımı başlatılamadı",stopScreenShareGeneric:"Ekran paylaşımı durdurulamadı",callNetworkQualityLow:"Ağ kalitesi düşük.",callNoSpeakerFound:"Hoparlör veya kulaklık bulunamadı. Aramayı dinlemek için bir ses aygıtı bağlayın.",callNoMicrophoneFound:"Mikrofon bulunamadı. Ses giriş cihazı bağlan.",callMicrophoneAccessDenied:"Mikrofona erişemiyor. Bu web sayfası için izin vermek için adres çubuğundaki kilidi tıklatın.",callMicrophoneMutedBySystem:"Sisteminiz tarafından sessize alındınız.",callMacOsMicrophoneAccessDenied:"Mikrofona erişilemiyor. macOS gizlilik ayarlarınızda mikrofon izni verin.",callLocalVideoFreeze:"Ağ bant genişliği düşük. Görüntülü aramada başkaları için duraklatılmış görünüyor olabilir.",callCameraAccessDenied:"Kameraya erişemiyor. Bu web sayfası için izin vermek için adres çubuğundaki kilidi tıklatın.",callCameraAlreadyInUse:"Kameraya erişemiyor. Başka bir uygulama tarafından zaten kullanılıyor olabilir.",callMacOsCameraAccessDenied:"MacOS kameranıza erişimi engelliyor. Bu tarayıcının kameranıza erişmesine izin vermek için gizlilik ayarlarınızı güncelleştirin.",callMacOsScreenShareAccessDenied:"MacOS ekran paylaşımını engelliyor. Bu tarayıcının ekranınızı kaydetmesini izin vermek için gizlilik ayarlarınızı güncelleştirin."};var videoGallery$2={screenIsBeingSharedMessage:"Ekranınızı paylaşıyorsunuz.",screenShareLoadingMessage:"{participant} adlı katılımcının ekranını yükleme",localVideoLabel:"Siz",localVideoCameraSwitcherLabel:"Kamerayı değiştir"};var tr_TR$1 = {participantItem:participantItem$2,typingIndicator:typingIndicator$2,sendBox:sendBox$2,messageStatusIndicator:messageStatusIndicator$2,endCallButton:endCallButton$2,cameraButton:cameraButton$2,microphoneButton:microphoneButton$2,devicesButton:devicesButton$2,participantsButton:participantsButton$2,screenShareButton:screenShareButton$2,messageThread:messageThread$2,errorBar:errorBar$2,videoGallery:videoGallery$2};
953
+ var participantItem$2={isMeText:"(siz)",menuTitle:"Diğer Seçenekler",removeButtonLabel:"Kaldır",sharingIconLabel:"Paylaşım",mutedIconLabel:"Ses kapatıldı",displayNamePlaceholder:"Adsız Katılımcı"};var typingIndicator$2={singleUser:"{user} yazıyor...",multipleUsers:"{users} yazıyor ...",multipleUsersAbbreviateOne:"{users} ve 1 kişi daha yazıyor...",multipleUsersAbbreviateMany:"{users} ve {numOthers} kişi daha yazıyor...",delimiter:", "};var sendBox$2={placeholderText:"Bir mesaj girin",textTooLong:"İletinizin uzunluğu üst sınırı aşıyor.",sendButtonAriaLabel:"İleti gönder",fileUploadsPendingError:"Karşıya yükleniyor... Lütfen bekleyin."};var messageStatusIndicator$2={deliveredAriaLabel:"İleti gönderildi",deliveredTooltipText:"Gönderilen",seenAriaLabel:"İleti başkaları tarafından görüldü",seenTooltipText:"Görüldü",readByTooltipText:"{messageThreadReadCount} / {remoteParticipantsCount} katılımcı tarafından okundu",sendingAriaLabel:"İleti gönderiliyor",sendingTooltipText:"Gönderiliyor",failedToSendAriaLabel:"İleti gönderilemedi",failedToSendTooltipText:"Gönderilemedi"};var endCallButton$2={label:"Ayrıl",tooltipContent:"Aramadan Ayrıl"};var cameraButton$2={onLabel:"Kapat",offLabel:"Aç",tooltipDisabledContent:"Kamera devre dışı",tooltipOnContent:"Kamerayı kapat",tooltipOffContent:"Kamerayı aç",tooltipVideoLoadingContent:"Video yükleniyor",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera Seç",cameraButtonSplitRoleDescription:"Bölünmüş düğme",onSplitButtonAriaLabel:"Kamerayı ve kamera seçeneklerini devre dışı bırak",offSplitButtonAriaLabel:"Kamerayı ve kamera seçeneklerini etkinleştir",cameraActionTurnedOnAnnouncement:"Kameranız açıldı",cameraActionTurnedOffAnnouncement:"Kameranız kapatıldı"};var microphoneButton$2={onLabel:"Sesi kapat",offLabel:"Sesi aç",tooltipDisabledContent:"Mikrofon devre dışı",tooltipOnContent:"Mikrofonun sesini kapat",tooltipOffContent:"Mikrofonun sesini aç",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon Seç",speakerMenuTitle:"Hoparlör",speakerMenuTooltip:"Hoparlör Seç",microphoneButtonSplitRoleDescription:"Bölünmüş düğme",onSplitButtonAriaLabel:"Mikrofonun ve ses seçeneklerinin sesini kapat",offSplitButtonAriaLabel:"Mikrofonun ve ses seçeneklerinin sesini aç",microphoneActionTurnedOnAnnouncement:"Mikrofonunuz açıldı",microphoneActionTurnedOffAnnouncement:"Mikrofonunuz kapatıldı"};var devicesButton$2={label:"Cihazlar",tooltipContent:"Cihazları yönet",cameraMenuTitle:"Kamera",cameraMenuTooltip:"Kamera Seç",audioDeviceMenuTitle:"Ses Cihazı",audioDeviceMenuTooltip:"Ses Cihazı Seç",microphoneMenuTitle:"Mikrofon",microphoneMenuTooltip:"Mikrofon Seç",speakerMenuTitle:"Hoparlör",speakerMenuTooltip:"Hoparlör Seç"};var participantsButton$2={label:"Kişiler",tooltipContent:"Katılımcıları Göster",menuHeader:"Bu aramada",participantsListButtonLabel:"{numParticipants} kişiler",muteAllButtonLabel:"Tümünün sesini kapat",copyInviteLinkButtonLabel:"Davet bağlantısını kopyala"};var screenShareButton$2={onLabel:"Sunumu Durdur",offLabel:"Sun",tooltipDisabledContent:"Sunu devre dışı bırakıldı.",tooltipOnContent:"Ekranınızı sunuluyor",tooltipOffContent:"Ekranınızı sunun"};var messageThread$2={yesterday:"Dün",sunday:"Pazar",monday:"Pazartesi",tuesday:"Salı",wednesday:"Çarşamba",thursday:"Perşembe",friday:"Cuma",saturday:"Cumartesi",participantJoined:"sohbete katıldı.",participantLeft:"sohbetten ayrıldı.",editMessage:"Düzenle",removeMessage:"Sil",resendMessage:"Yeniden göndermeyi deneyin",failToSendTag:"Gönderilemedi",editedTag:"Düzenlendi",liveAuthorIntro:"{author} şöyle diyor:",editBoxTextLimit:"İletiniz en fazla {limitNumber} aşıyor",editBoxPlaceholderText:"İletinizi düzenleyin",newMessagesIndicator:"Yeni iletiler",noDisplayNameSub:"Ad yok",editBoxCancelButton:"İptal",editBoxSubmitButton:"Gönder",messageReadCount:"{messageReadByCount} / {remoteParticipantsCount} katılımcı tarafından okundu",actionMenuMoreOptions:"Diğer Seçenekler"};var errorBar$2={unableToReachChatService:"Çevrimdışısınız",accessDenied:"Sohbet hizmetlerine erişilemedi. Lütfen sağlanan kullanıcı kimlik bilgilerini denetleyin",userNotInChatThread:"Artık bu sohbet yazışması içinde değilsiniz",sendMessageNotInChatThread:"Artık bu sohbet yazışması içinde olmadığınız için ileti gönderilemedi",sendMessageGeneric:"İleti gönderilemedi",callingNetworkFailure:"Arama bağlanırken sorun oluştu; çevrimdışı görünüyorsunuz",startVideoGeneric:"Video başlatılamadı",stopVideoGeneric:"Video durdurulamadı",muteGeneric:"Mikrofonun sesi kapatılamadı",unmuteGeneric:"Mikrofonun sesi açılamadı",speakingWhileMuted:"Mikrofonunuzun sesi kapalı",startScreenShareGeneric:"Ekran paylaşımı başlatılamadı",stopScreenShareGeneric:"Ekran paylaşımı durdurulamadı",callNetworkQualityLow:"Ağ kalitesi düşük.",callNoSpeakerFound:"Hoparlör veya kulaklık bulunamadı. Aramayı dinlemek için bir ses aygıtı bağlayın.",callNoMicrophoneFound:"Mikrofon bulunamadı. Ses giriş cihazı bağlan.",callMicrophoneAccessDenied:"Mikrofona erişemiyor. Bu web sayfası için izin vermek için adres çubuğundaki kilidi tıklatın.",callMicrophoneMutedBySystem:"Sisteminiz tarafından sessize alındınız.",callMacOsMicrophoneAccessDenied:"Mikrofona erişilemiyor. macOS gizlilik ayarlarınızda mikrofon izni verin.",callLocalVideoFreeze:"Ağ bant genişliği düşük. Görüntülü aramada başkaları için duraklatılmış görünüyor olabilir.",callCameraAccessDenied:"Kameraya erişemiyor. Bu web sayfası için izin vermek için adres çubuğundaki kilidi tıklatın.",callCameraAlreadyInUse:"Kameraya erişemiyor. Başka bir uygulama tarafından zaten kullanılıyor olabilir.",callMacOsCameraAccessDenied:"MacOS kameranıza erişimi engelliyor. Bu tarayıcının kameranıza erişmesine izin vermek için gizlilik ayarlarınızı güncelleştirin.",callMacOsScreenShareAccessDenied:"MacOS ekran paylaşımını engelliyor. Bu tarayıcının ekranınızı kaydetmesini izin vermek için gizlilik ayarlarınızı güncelleştirin.",dismissButtonAriaLabel:"Kapat",failedToJoinCallGeneric:"Aramaya katılınamadı.",failedToJoinCallInvalidMeetingLink:"Toplantıya katılınamıyor. Geçersiz Bağlantı."};var videoGallery$2={screenIsBeingSharedMessage:"Ekranınızı paylaşıyorsunuz.",screenShareLoadingMessage:"{participant} adlı katılımcının ekranını yükleme",localVideoLabel:"Siz",localVideoCameraSwitcherLabel:"Kamerayı değiştir",localVideoMovementLabel:"Taşınabilir Yerel Video Kutucuğu",localVideoSelectedDescription:"{cameraName} seçildi",displayNamePlaceholder:"Adsız Katılımcı"};var dialpad$2={placeholderText:"Numara Girin"};var HoldButton$3={onLabel:"Devam et",offLabel:"Beklet",toolTipOnContent:"Görüşmeye devam etme",toolTipOffContent:"Aramayı bekletme"};var tr_TR$1 = {participantItem:participantItem$2,typingIndicator:typingIndicator$2,sendBox:sendBox$2,messageStatusIndicator:messageStatusIndicator$2,endCallButton:endCallButton$2,cameraButton:cameraButton$2,microphoneButton:microphoneButton$2,devicesButton:devicesButton$2,participantsButton:participantsButton$2,screenShareButton:screenShareButton$2,messageThread:messageThread$2,errorBar:errorBar$2,videoGallery:videoGallery$2,dialpad:dialpad$2,HoldButton:HoldButton$3};
881
954
 
882
- var participantItem$1={isMeText:"(我)",menuTitle:"更多选项",removeButtonLabel:"删除",sharingIconLabel:"共享",mutedIconLabel:"已静音"};var typingIndicator$1={singleUser:"{user} 正在键入...",multipleUsers:"{users} 正在键入...",multipleUsersAbbreviateOne:"{users} 和另外 1 人正在键入...",multipleUsersAbbreviateMany:"{users} 和其他 {numOthers} 人正在键入...",delimiter:"、 "};var sendBox$1={placeholderText:"输入消息",textTooLong:"你的消息长度超过了最大限制。",sendButtonAriaLabel:"发送消息",fileUploadsPendingError:"正在上载...请稍候。"};var messageStatusIndicator$1={deliveredAriaLabel:"已发送消息",deliveredTooltipText:"已发送",seenAriaLabel:"其他人已查看消息",seenTooltipText:"已查看",readByTooltipText:"{messageThreadReadCount}/{remoteParticipantsCount} 人已读",sendingAriaLabel:"消息发送",sendingTooltipText:"正在发送",failedToSendAriaLabel:"消息发送失败",failedToSendTooltipText:"发送失败"};var endCallButton$1={label:"退出",tooltipContent:"离开会议"};var cameraButton$1={onLabel:"关闭",offLabel:"打开",tooltipDisabledContent:"已禁用照相机",tooltipOnContent:"关闭摄像头",tooltipOffContent:"打开摄像头",tooltipVideoLoadingContent:"正在加载视频",cameraMenuTitle:"相机",cameraMenuTooltip:"选择“相机”"};var microphoneButton$1={onLabel:"静音",offLabel:"取消静音",tooltipDisabledContent:"已禁用麦克风",tooltipOnContent:"将麦克风静音",tooltipOffContent:"取消麦克风静音",microphoneMenuTitle:"麦克风",microphoneMenuTooltip:"选择“麦克风”",speakerMenuTitle:"扬声器",speakerMenuTooltip:"选择“扬声器”"};var devicesButton$1={label:"设备",tooltipContent:"管理设备",cameraMenuTitle:"相机",cameraMenuTooltip:"选择“相机”",microphoneMenuTitle:"麦克风",microphoneMenuTooltip:"选择麦克风",speakerMenuTitle:"免提",speakerMenuTooltip:"选择扬声器"};var participantsButton$1={label:"人员",tooltipContent:"显示参与者",menuHeader:"在此通话中",participantsListButtonLabel:"{numParticipants} 人",muteAllButtonLabel:"全部静音",copyInviteLinkButtonLabel:"复制邀请链接"};var screenShareButton$1={onLabel:"停止演示",offLabel:"演示",tooltipDisabledContent:"已禁用演示。",tooltipOnContent:"演示屏幕",tooltipOffContent:"演示您的屏幕"};var messageThread$1={yesterday:"昨天",sunday:"星期日",monday:"星期一",tuesday:"星期二",wednesday:"星期三",thursday:"星期四",friday:"星期五",saturday:"星期六",participantJoined:"已加入聊天。",participantLeft:"已退出聊天。",editMessage:"编辑",removeMessage:"删除",editedTag:"已编辑",liveAuthorIntro:"{author} 说",editBoxTextLimit:"你的消息超过了{limitNumber}个字符的限制",editBoxPlaceholderText:"编辑消息",newMessagesIndicator:"新消息",noDisplayNameSub:"无名称",editBoxCancelButton:"取消",editBoxSubmitButton:"提交",messageReadCount:"{messageReadByCount}/{remoteParticipantsCount} 人已读"};var errorBar$1={unableToReachChatService:"你已脱机",accessDenied:"无法访问聊天服务 - 请检查提供的用户凭据",userNotInChatThread:"你不再处于此聊天会话中",sendMessageNotInChatThread:"无法发送消息,因为你不再在此聊天会话中",sendMessageGeneric:"未能发送消息",callingNetworkFailure:"正在连接呼叫 - 你似乎处于脱机状态",startVideoGeneric:"无法启动视频",stopVideoGeneric:"无法停止视频",muteGeneric:"无法静音麦克风",unmuteGeneric:"无法取消麦克风静音",speakingWhileMuted:"你的麦克风已静音",startScreenShareGeneric:"无法启动屏幕共享",stopScreenShareGeneric:"无法停止屏幕共享",callNetworkQualityLow:"网络质量低。",callNoSpeakerFound:"找不到扬声器或耳机。连接音频设备以收听呼叫。",callNoMicrophoneFound:"找不到麦克风。连接音频输入设备。",callMicrophoneAccessDenied:"无法访问麦克风。单击地址栏中的锁定以授予对此网页的权限。",callMicrophoneMutedBySystem:"系统已将你设为静音。",callMacOsMicrophoneAccessDenied:"无法访问麦克风。在 macOS 隐私设置中授予麦克风权限。",callLocalVideoFreeze:"网络带宽较差。你的视频可能会在通话中为其他人暂停。",callCameraAccessDenied:"无法访问照相机。单击地址栏中的锁定以授予对此网页的权限。",callCameraAlreadyInUse:"无法访问照相机。它可能已被其他应用程序使用。",callMacOsCameraAccessDenied:"MacOS 正在阻止访问你的相机。更新你的隐私设置以允许此浏览器访问你的相机。",callMacOsScreenShareAccessDenied:"MacOS 正在阻止屏幕共享。更新你的隐私设置以允许此浏览器录制你的屏幕。"};var videoGallery$1={screenIsBeingSharedMessage:"你正在共享你的屏幕",screenShareLoadingMessage:"正在加载 {participant} 的屏幕",localVideoLabel:"你",localVideoCameraSwitcherLabel:"循环照相机"};var zh_CN$1 = {participantItem:participantItem$1,typingIndicator:typingIndicator$1,sendBox:sendBox$1,messageStatusIndicator:messageStatusIndicator$1,endCallButton:endCallButton$1,cameraButton:cameraButton$1,microphoneButton:microphoneButton$1,devicesButton:devicesButton$1,participantsButton:participantsButton$1,screenShareButton:screenShareButton$1,messageThread:messageThread$1,errorBar:errorBar$1,videoGallery:videoGallery$1};
955
+ var participantItem$1={isMeText:"(我)",menuTitle:"更多选项",removeButtonLabel:"删除",sharingIconLabel:"共享",mutedIconLabel:"已静音",displayNamePlaceholder:"未命名的参与者"};var typingIndicator$1={singleUser:"{user} 正在键入...",multipleUsers:"{users} 正在键入...",multipleUsersAbbreviateOne:"{users} 和另外 1 人正在键入...",multipleUsersAbbreviateMany:"{users} 和其他 {numOthers} 人正在键入...",delimiter:"、 "};var sendBox$1={placeholderText:"输入消息",textTooLong:"你的消息长度超过了最大限制。",sendButtonAriaLabel:"发送消息",fileUploadsPendingError:"正在上载...请稍候。"};var messageStatusIndicator$1={deliveredAriaLabel:"已发送消息",deliveredTooltipText:"已发送",seenAriaLabel:"其他人已查看消息",seenTooltipText:"已查看",readByTooltipText:"{messageThreadReadCount}/{remoteParticipantsCount} 人已读",sendingAriaLabel:"消息发送",sendingTooltipText:"正在发送",failedToSendAriaLabel:"消息发送失败",failedToSendTooltipText:"发送失败"};var endCallButton$1={label:"退出",tooltipContent:"离开会议"};var cameraButton$1={onLabel:"关闭",offLabel:"打开",tooltipDisabledContent:"已禁用照相机",tooltipOnContent:"关闭摄像头",tooltipOffContent:"打开摄像头",tooltipVideoLoadingContent:"正在加载视频",cameraMenuTitle:"相机",cameraMenuTooltip:"选择“相机”",cameraButtonSplitRoleDescription:"拆分按钮",onSplitButtonAriaLabel:"关闭照相机和照相机选项",offSplitButtonAriaLabel:"打开照相机和照相机选项",cameraActionTurnedOnAnnouncement:"你的相机已打开",cameraActionTurnedOffAnnouncement:"你的相机已关闭"};var microphoneButton$1={onLabel:"静音",offLabel:"取消静音",tooltipDisabledContent:"已禁用麦克风",tooltipOnContent:"将麦克风静音",tooltipOffContent:"取消麦克风静音",microphoneMenuTitle:"麦克风",microphoneMenuTooltip:"选择“麦克风”",speakerMenuTitle:"扬声器",speakerMenuTooltip:"选择“扬声器”",microphoneButtonSplitRoleDescription:"拆分按钮",onSplitButtonAriaLabel:"将麦克风和音频选项静音",offSplitButtonAriaLabel:"取消麦克风和音频选项的静音",microphoneActionTurnedOnAnnouncement:"你的麦克风已打开",microphoneActionTurnedOffAnnouncement:"你的麦克风已关闭"};var devicesButton$1={label:"设备",tooltipContent:"管理设备",cameraMenuTitle:"相机",cameraMenuTooltip:"选择“相机”",audioDeviceMenuTitle:"音频设备",audioDeviceMenuTooltip:"选择音频设备",microphoneMenuTitle:"麦克风",microphoneMenuTooltip:"选择麦克风",speakerMenuTitle:"免提",speakerMenuTooltip:"选择扬声器"};var participantsButton$1={label:"人员",tooltipContent:"显示参与者",menuHeader:"在此通话中",participantsListButtonLabel:"{numParticipants} 人",muteAllButtonLabel:"全部静音",copyInviteLinkButtonLabel:"复制邀请链接"};var screenShareButton$1={onLabel:"停止演示",offLabel:"演示",tooltipDisabledContent:"已禁用演示。",tooltipOnContent:"演示屏幕",tooltipOffContent:"演示您的屏幕"};var messageThread$1={yesterday:"昨天",sunday:"星期日",monday:"星期一",tuesday:"星期二",wednesday:"星期三",thursday:"星期四",friday:"星期五",saturday:"星期六",participantJoined:"已加入聊天。",participantLeft:"已退出聊天。",editMessage:"编辑",removeMessage:"删除",resendMessage:"尝试再次发送",failToSendTag:"发送失败",editedTag:"已编辑",liveAuthorIntro:"{author} 说",editBoxTextLimit:"你的消息超过了{limitNumber}个字符的限制",editBoxPlaceholderText:"编辑消息",newMessagesIndicator:"新消息",noDisplayNameSub:"无名称",editBoxCancelButton:"取消",editBoxSubmitButton:"提交",messageReadCount:"{messageReadByCount}/{remoteParticipantsCount} 人已读",actionMenuMoreOptions:"更多选项"};var errorBar$1={unableToReachChatService:"你已脱机",accessDenied:"无法访问聊天服务 - 请检查提供的用户凭据",userNotInChatThread:"你不再处于此聊天会话中",sendMessageNotInChatThread:"无法发送消息,因为你不再在此聊天会话中",sendMessageGeneric:"未能发送消息",callingNetworkFailure:"正在连接呼叫 - 你似乎处于脱机状态",startVideoGeneric:"无法启动视频",stopVideoGeneric:"无法停止视频",muteGeneric:"无法静音麦克风",unmuteGeneric:"无法取消麦克风静音",speakingWhileMuted:"你的麦克风已静音",startScreenShareGeneric:"无法启动屏幕共享",stopScreenShareGeneric:"无法停止屏幕共享",callNetworkQualityLow:"网络质量低。",callNoSpeakerFound:"找不到扬声器或耳机。连接音频设备以收听呼叫。",callNoMicrophoneFound:"找不到麦克风。连接音频输入设备。",callMicrophoneAccessDenied:"无法访问麦克风。单击地址栏中的锁定以授予对此网页的权限。",callMicrophoneMutedBySystem:"系统已将你设为静音。",callMacOsMicrophoneAccessDenied:"无法访问麦克风。在 macOS 隐私设置中授予麦克风权限。",callLocalVideoFreeze:"网络带宽较差。你的视频可能会在通话中为其他人暂停。",callCameraAccessDenied:"无法访问照相机。单击地址栏中的锁定以授予对此网页的权限。",callCameraAlreadyInUse:"无法访问照相机。它可能已被其他应用程序使用。",callMacOsCameraAccessDenied:"MacOS 正在阻止访问你的相机。更新你的隐私设置以允许此浏览器访问你的相机。",callMacOsScreenShareAccessDenied:"MacOS 正在阻止屏幕共享。更新你的隐私设置以允许此浏览器录制你的屏幕。",dismissButtonAriaLabel:"关闭",failedToJoinCallGeneric:"未能加入通话。",failedToJoinCallInvalidMeetingLink:"无法加入会议。无效的链接。"};var videoGallery$1={screenIsBeingSharedMessage:"你正在共享你的屏幕",screenShareLoadingMessage:"正在加载 {participant} 的屏幕",localVideoLabel:"你",localVideoCameraSwitcherLabel:"切换相机",localVideoMovementLabel:"可移动本地视频磁贴",localVideoSelectedDescription:"已选择 {cameraName}",displayNamePlaceholder:"未命名的参与者"};var dialpad$1={placeholderText:"输入号码"};var HoldButton$2={onLabel:"恢复",offLabel:"支持",toolTipOnContent:"继续呼叫",toolTipOffContent:"保持呼叫"};var zh_CN$1 = {participantItem:participantItem$1,typingIndicator:typingIndicator$1,sendBox:sendBox$1,messageStatusIndicator:messageStatusIndicator$1,endCallButton:endCallButton$1,cameraButton:cameraButton$1,microphoneButton:microphoneButton$1,devicesButton:devicesButton$1,participantsButton:participantsButton$1,screenShareButton:screenShareButton$1,messageThread:messageThread$1,errorBar:errorBar$1,videoGallery:videoGallery$1,dialpad:dialpad$1,HoldButton:HoldButton$2};
883
956
 
884
- var participantItem={isMeText:"(您)",menuTitle:"更多選項",removeButtonLabel:"移除",sharingIconLabel:"分享",mutedIconLabel:"已靜音"};var typingIndicator={singleUser:"{user} 正在輸入...",multipleUsers:"{users} 正在輸入...",multipleUsersAbbreviateOne:"{users} 和其他 1 人正在輸入...",multipleUsersAbbreviateMany:"{users} 和其他 {numOthers} 人正在輸入...",delimiter:", "};var sendBox={placeholderText:"輸入訊息",textTooLong:"您的訊息長度超過上限。",sendButtonAriaLabel:"傳送訊息",fileUploadsPendingError:"正在上傳... 請稍候。"};var messageStatusIndicator={deliveredAriaLabel:"訊息已傳送",deliveredTooltipText:"已傳送",seenAriaLabel:"其他人已看到訊息",seenTooltipText:"已讀",readByTooltipText:"讀取者為 {messageThreadReadCount} / {remoteParticipantsCount}",sendingAriaLabel:"正在傳送訊息",sendingTooltipText:"正在傳送",failedToSendAriaLabel:"無法傳送訊息",failedToSendTooltipText:"無法傳送"};var endCallButton={label:"離開",tooltipContent:"離開通話"};var cameraButton={onLabel:"關閉",offLabel:"開啟",tooltipDisabledContent:"相機已停用",tooltipOnContent:"關閉攝影機",tooltipOffContent:"開啟相機",tooltipVideoLoadingContent:"正在載入影片",cameraMenuTitle:"相機",cameraMenuTooltip:"選擇攝影機"};var microphoneButton={onLabel:"靜音",offLabel:"取消靜音",tooltipDisabledContent:"麥克風已停用",tooltipOnContent:"將麥克風設為靜音",tooltipOffContent:"取消麥克風靜音",microphoneMenuTitle:"麥克風",microphoneMenuTooltip:"選擇麥克風",speakerMenuTitle:"揚聲器",speakerMenuTooltip:"選擇揚聲器"};var devicesButton={label:"裝置",tooltipContent:"管理裝置",cameraMenuTitle:"攝影機",cameraMenuTooltip:"選擇攝影機",microphoneMenuTitle:"麥克風",microphoneMenuTooltip:"選擇麥克風",speakerMenuTitle:"演講者",speakerMenuTooltip:"選擇講者"};var participantsButton={label:"人員",tooltipContent:"顯示參與者",menuHeader:"在此通話中",participantsListButtonLabel:"{numParticipants} 人員",muteAllButtonLabel:"將所有人設為靜音",copyInviteLinkButtonLabel:"複製邀請連結"};var screenShareButton={onLabel:"停止簡報",offLabel:"存在",tooltipDisabledContent:"簡報已停用",tooltipOnContent:"展示您的螢幕",tooltipOffContent:"展示您的螢幕"};var messageThread={yesterday:"昨天",sunday:"星期日",monday:"星期一",tuesday:"星期二",wednesday:"星期三",thursday:"星期四",friday:"星期五",saturday:"星期六",participantJoined:"已加入聊天。",participantLeft:"已離開聊天。",editMessage:"編輯",removeMessage:"刪除",editedTag:"已編輯",liveAuthorIntro:"{author} 說",editBoxTextLimit:"您的訊息超過 {limitNumber} 個字元的限制",editBoxPlaceholderText:"編輯您的訊息",newMessagesIndicator:"新訊息",noDisplayNameSub:"沒有名稱",editBoxCancelButton:"取消",editBoxSubmitButton:"提交",messageReadCount:"讀取者為 {messageReadByCount} / {remoteParticipantsCount}"};var errorBar={unableToReachChatService:"您處於離線狀態",accessDenied:"無法存取聊天服務 - 請檢查提供的使用者認證",userNotInChatThread:"您已不在此聊天對話中",sendMessageNotInChatThread:"無法傳送訊息,因為您已不在此聊天對話中",sendMessageGeneric:"無法傳送訊息",callingNetworkFailure:"連線通話發生錯誤 - 您似乎已離線",startVideoGeneric:"無法啟動影片",stopVideoGeneric:"無法停止影片",muteGeneric:"無法將麥克風設為靜音",unmuteGeneric:"無法將麥克風取消靜音",speakingWhileMuted:"您的麥克風已設為靜音",startScreenShareGeneric:"無法開始螢幕畫面分享",stopScreenShareGeneric:"無法停止螢幕畫面分享",callNetworkQualityLow:"您的網路品質不佳。",callNoSpeakerFound:"找不到喇叭或耳機。請連接音訊裝置以聆聽通話。",callNoMicrophoneFound:"找不到麥克風。請連接音訊輸入裝置。",callMicrophoneAccessDenied:"無法存取麥克風。按一下網址列中的鎖定以授與此網頁的許可權。",callMicrophoneMutedBySystem:"系統已將您設為靜音。",callMacOsMicrophoneAccessDenied:"無法存取麥克風。請在您的 MacOS 隱私權設定中授與麥克風權限。",callLocalVideoFreeze:"網路頻寬不佳。通話中的其他人可能會暫停您的視訊。",callCameraAccessDenied:"無法存取相機。按一下網址列中的鎖定以授與此網頁的許可權。",callCameraAlreadyInUse:"無法存取相機。其他應用程式可能已在使用它。",callMacOsCameraAccessDenied:"MacOS 已封鎖您的相機存取權限。請更新您的隱私權設定,允許此瀏覽器存取您的相機。",callMacOsScreenShareAccessDenied:"MacOS 正在封鎖螢幕畫面分享。更新您的隱私權設定,以允許此瀏覽器錄製您的螢幕。"};var videoGallery={screenIsBeingSharedMessage:"您現在正在分享螢幕畫面。",screenShareLoadingMessage:"正在載入 {participant} 的螢幕畫面",localVideoLabel:"您",localVideoCameraSwitcherLabel:"迴圈相機"};var zh_TW$1 = {participantItem:participantItem,typingIndicator:typingIndicator,sendBox:sendBox,messageStatusIndicator:messageStatusIndicator,endCallButton:endCallButton,cameraButton:cameraButton,microphoneButton:microphoneButton,devicesButton:devicesButton,participantsButton:participantsButton,screenShareButton:screenShareButton,messageThread:messageThread,errorBar:errorBar,videoGallery:videoGallery};
957
+ var participantItem={isMeText:"(您)",menuTitle:"更多選項",removeButtonLabel:"移除",sharingIconLabel:"分享",mutedIconLabel:"已靜音",displayNamePlaceholder:"未命名的參與者"};var typingIndicator={singleUser:"{user} 正在輸入...",multipleUsers:"{users} 正在輸入...",multipleUsersAbbreviateOne:"{users} 和其他 1 人正在輸入...",multipleUsersAbbreviateMany:"{users} 和其他 {numOthers} 人正在輸入...",delimiter:", "};var sendBox={placeholderText:"輸入訊息",textTooLong:"您的訊息長度超過上限。",sendButtonAriaLabel:"傳送訊息",fileUploadsPendingError:"正在上傳... 請稍候。"};var messageStatusIndicator={deliveredAriaLabel:"訊息已傳送",deliveredTooltipText:"已傳送",seenAriaLabel:"其他人已看到訊息",seenTooltipText:"已讀",readByTooltipText:"讀取者為 {messageThreadReadCount} / {remoteParticipantsCount}",sendingAriaLabel:"正在傳送訊息",sendingTooltipText:"正在傳送",failedToSendAriaLabel:"無法傳送訊息",failedToSendTooltipText:"無法傳送"};var endCallButton={label:"離開",tooltipContent:"離開通話"};var cameraButton={onLabel:"關閉",offLabel:"開啟",tooltipDisabledContent:"相機已停用",tooltipOnContent:"關閉攝影機",tooltipOffContent:"開啟相機",tooltipVideoLoadingContent:"正在載入影片",cameraMenuTitle:"相機",cameraMenuTooltip:"選擇攝影機",cameraButtonSplitRoleDescription:"[分割] 按鈕",onSplitButtonAriaLabel:"關閉相機和相機選項",offSplitButtonAriaLabel:"開啟相機和相機選項",cameraActionTurnedOnAnnouncement:"您的相機已開啟",cameraActionTurnedOffAnnouncement:"您的相機已關閉"};var microphoneButton={onLabel:"靜音",offLabel:"取消靜音",tooltipDisabledContent:"麥克風已停用",tooltipOnContent:"將麥克風設為靜音",tooltipOffContent:"取消麥克風靜音",microphoneMenuTitle:"麥克風",microphoneMenuTooltip:"選擇麥克風",speakerMenuTitle:"揚聲器",speakerMenuTooltip:"選擇揚聲器",microphoneButtonSplitRoleDescription:"[分割] 按鈕",onSplitButtonAriaLabel:"將麥克風和音訊選項設為靜音",offSplitButtonAriaLabel:"將麥克風和音訊選項取消靜音",microphoneActionTurnedOnAnnouncement:"您的麥克風已開啟",microphoneActionTurnedOffAnnouncement:"您的麥克風已關閉"};var devicesButton={label:"裝置",tooltipContent:"管理裝置",cameraMenuTitle:"攝影機",cameraMenuTooltip:"選擇攝影機",audioDeviceMenuTitle:"音訊裝置",audioDeviceMenuTooltip:"選擇音訊裝置",microphoneMenuTitle:"麥克風",microphoneMenuTooltip:"選擇麥克風",speakerMenuTitle:"演講者",speakerMenuTooltip:"選擇講者"};var participantsButton={label:"人員",tooltipContent:"顯示參與者",menuHeader:"在此通話中",participantsListButtonLabel:"{numParticipants} 人員",muteAllButtonLabel:"將所有人設為靜音",copyInviteLinkButtonLabel:"複製邀請連結"};var screenShareButton={onLabel:"停止簡報",offLabel:"存在",tooltipDisabledContent:"簡報已停用",tooltipOnContent:"展示您的螢幕",tooltipOffContent:"展示您的螢幕"};var messageThread={yesterday:"昨天",sunday:"星期日",monday:"星期一",tuesday:"星期二",wednesday:"星期三",thursday:"星期四",friday:"星期五",saturday:"星期六",participantJoined:"已加入聊天。",participantLeft:"已離開聊天。",editMessage:"編輯",removeMessage:"刪除",resendMessage:"請嘗試再次傳送",failToSendTag:"無法傳送",editedTag:"已編輯",liveAuthorIntro:"{author} 說",editBoxTextLimit:"您的訊息超過 {limitNumber} 個字元的限制",editBoxPlaceholderText:"編輯您的訊息",newMessagesIndicator:"新訊息",noDisplayNameSub:"沒有名稱",editBoxCancelButton:"取消",editBoxSubmitButton:"提交",messageReadCount:"讀取者為 {messageReadByCount} / {remoteParticipantsCount}",actionMenuMoreOptions:"更多選項"};var errorBar={unableToReachChatService:"您處於離線狀態",accessDenied:"無法存取聊天服務 - 請檢查提供的使用者認證",userNotInChatThread:"您已不在此聊天對話中",sendMessageNotInChatThread:"無法傳送訊息,因為您已不在此聊天對話中",sendMessageGeneric:"無法傳送訊息",callingNetworkFailure:"連線通話發生錯誤 - 您似乎已離線",startVideoGeneric:"無法啟動影片",stopVideoGeneric:"無法停止影片",muteGeneric:"無法將麥克風設為靜音",unmuteGeneric:"無法將麥克風取消靜音",speakingWhileMuted:"您的麥克風已設為靜音",startScreenShareGeneric:"無法開始螢幕畫面分享",stopScreenShareGeneric:"無法停止螢幕畫面分享",callNetworkQualityLow:"您的網路品質不佳。",callNoSpeakerFound:"找不到喇叭或耳機。請連接音訊裝置以聆聽通話。",callNoMicrophoneFound:"找不到麥克風。請連接音訊輸入裝置。",callMicrophoneAccessDenied:"無法存取麥克風。按一下網址列中的鎖定以授與此網頁的許可權。",callMicrophoneMutedBySystem:"系統已將您設為靜音。",callMacOsMicrophoneAccessDenied:"無法存取麥克風。請在您的 MacOS 隱私權設定中授與麥克風權限。",callLocalVideoFreeze:"網路頻寬不佳。通話中的其他人可能會暫停您的視訊。",callCameraAccessDenied:"無法存取相機。按一下網址列中的鎖定以授與此網頁的許可權。",callCameraAlreadyInUse:"無法存取相機。其他應用程式可能已在使用它。",callMacOsCameraAccessDenied:"MacOS 已封鎖您的相機存取權限。請更新您的隱私權設定,允許此瀏覽器存取您的相機。",callMacOsScreenShareAccessDenied:"MacOS 正在封鎖螢幕畫面分享。更新您的隱私權設定,以允許此瀏覽器錄製您的螢幕。",dismissButtonAriaLabel:"關閉",failedToJoinCallGeneric:"無法加入通話。",failedToJoinCallInvalidMeetingLink:"無法加入會議。連結無效。"};var videoGallery={screenIsBeingSharedMessage:"您現在正在分享螢幕畫面。",screenShareLoadingMessage:"正在載入 {participant} 的螢幕畫面",localVideoLabel:"您",localVideoCameraSwitcherLabel:"切換相機",localVideoMovementLabel:"可移動的本機影片磚",localVideoSelectedDescription:"已選取 {cameraName}",displayNamePlaceholder:"未命名的參與者"};var dialpad={placeholderText:"輸入號碼"};var HoldButton$1={onLabel:"繼續",offLabel:"保留",toolTipOnContent:"繼續通話",toolTipOffContent:"保留通話"};var zh_TW$1 = {participantItem:participantItem,typingIndicator:typingIndicator,sendBox:sendBox,messageStatusIndicator:messageStatusIndicator,endCallButton:endCallButton,cameraButton:cameraButton,microphoneButton:microphoneButton,devicesButton:devicesButton,participantsButton:participantsButton,screenShareButton:screenShareButton,messageThread:messageThread,errorBar:errorBar,videoGallery:videoGallery,dialpad:dialpad,HoldButton:HoldButton$1};
885
958
 
886
959
  // Copyright (c) Microsoft Corporation.
887
960
  const createComponentStrings = (localizedStrings) => {
@@ -1231,7 +1304,22 @@ const ErrorBar = (props) => {
1231
1304
  // Without this behaviour, this `useEffect` block would cause a render loop.
1232
1305
  React.useEffect(() => setDismissedErrors(dropDismissalsForInactiveErrors(props.activeErrorMessages, dismissedErrors)), [props.activeErrorMessages, dismissedErrors]);
1233
1306
  const toShow = errorsToShow(props.activeErrorMessages, dismissedErrors);
1234
- return (React__default['default'].createElement(react.Stack, { "data-ui-id": "error-bar-stack" }, toShow.map((error) => (React__default['default'].createElement(react.MessageBar, Object.assign({}, props, { key: error.type, messageBarType: messageBarType(error.type), messageBarIconProps: messageBarIconProps(error.type), onDismiss: () => setDismissedErrors(dismissError(dismissedErrors, error)), dismissButtonAriaLabel: strings.dismissButtonAriaLabel }), strings[error.type])))));
1307
+ return (React__default['default'].createElement(react.Stack, { "data-ui-id": "error-bar-stack" }, toShow.map((error) => (React__default['default'].createElement(react.MessageBar, Object.assign({}, props, { styles: {
1308
+ innerText: {
1309
+ paddingTop: messageBarType(error.type) === 5 ? '0.15rem' : '0.1rem',
1310
+ lineHeight: 'none'
1311
+ },
1312
+ icon: {
1313
+ height: 0
1314
+ },
1315
+ content: {
1316
+ lineHeight: 'inherit'
1317
+ },
1318
+ dismissal: {
1319
+ height: 0,
1320
+ paddingTop: '0.8rem'
1321
+ }
1322
+ }, key: error.type, messageBarType: messageBarType(error.type), messageBarIconProps: messageBarIconProps(error.type), onDismiss: () => setDismissedErrors(dismissError(dismissedErrors, error)), dismissButtonAriaLabel: strings.dismissButtonAriaLabel, dismissIconProps: { iconName: 'ErrorBarClear' } }), strings[error.type])))));
1235
1323
  };
1236
1324
  // Always returns a new Array so that the state variable is updated, trigerring a render.
1237
1325
  const dismissError = (dismissedErrors, toDismiss) => {
@@ -1298,10 +1386,13 @@ const messageBarType = (errorType) => {
1298
1386
  case 'callNoMicrophoneFound':
1299
1387
  case 'callMicrophoneAccessDenied':
1300
1388
  case 'callMicrophoneMutedBySystem':
1389
+ case 'callMicrophoneUnmutedBySystem':
1301
1390
  case 'callMacOsMicrophoneAccessDenied':
1302
1391
  case 'callLocalVideoFreeze':
1303
1392
  case 'callCameraAccessDenied':
1304
1393
  case 'callCameraAlreadyInUse':
1394
+ case 'callVideoStoppedBySystem':
1395
+ case 'callVideoRecoveredBySystem':
1305
1396
  case 'callMacOsCameraAccessDenied':
1306
1397
  case 'callMacOsScreenShareAccessDenied':
1307
1398
  return react.MessageBarType.warning;
@@ -1319,10 +1410,13 @@ const customIconName = {
1319
1410
  callNoMicrophoneFound: 'ErrorBarCallNoMicrophoneFound',
1320
1411
  callMicrophoneAccessDenied: 'ErrorBarCallMicrophoneAccessDenied',
1321
1412
  callMicrophoneMutedBySystem: 'ErrorBarCallMicrophoneMutedBySystem',
1413
+ callMicrophoneUnmutedBySystem: 'ErrorBarCallMicrophoneUnmutedBySystem',
1322
1414
  callMacOsMicrophoneAccessDenied: 'ErrorBarCallMacOsMicrophoneAccessDenied',
1323
1415
  callLocalVideoFreeze: 'ErrorBarCallLocalVideoFreeze',
1324
1416
  callCameraAccessDenied: 'ErrorBarCallCameraAccessDenied',
1325
1417
  callCameraAlreadyInUse: 'ErrorBarCallCameraAlreadyInUse',
1418
+ callVideoStoppedBySystem: 'ErrorBarCallVideoStoppedBySystem',
1419
+ callVideoRecoveredBySystem: 'ErrorBarCallVideoRecoveredBySystem',
1326
1420
  callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied'
1327
1421
  };
1328
1422
 
@@ -1791,9 +1885,13 @@ const DEFAULT_COMPONENT_ICONS = {
1791
1885
  ErrorBarCallMacOsMicrophoneAccessDenied: React__default['default'].createElement(reactIcons.MicProhibited16Filled, null),
1792
1886
  ErrorBarCallMicrophoneAccessDenied: React__default['default'].createElement(reactIcons.MicProhibited16Filled, null),
1793
1887
  ErrorBarCallMicrophoneMutedBySystem: React__default['default'].createElement(reactIcons.MicOff16Filled, null),
1888
+ ErrorBarCallMicrophoneUnmutedBySystem: React__default['default'].createElement(reactIcons.MicOn16Filled, null),
1794
1889
  ErrorBarCallNetworkQualityLow: React__default['default'].createElement(WifiWarning16Filled, null),
1795
1890
  ErrorBarCallNoMicrophoneFound: React__default['default'].createElement(reactIcons.MicProhibited16Filled, null),
1796
1891
  ErrorBarCallNoSpeakerFound: React__default['default'].createElement(reactIcons.SpeakerMute16Filled, null),
1892
+ ErrorBarClear: React__default['default'].createElement(reactIcons.Dismiss16Regular, null),
1893
+ ErrorBarCallVideoRecoveredBySystem: React__default['default'].createElement(reactIcons.Video16Filled, null),
1894
+ ErrorBarCallVideoStoppedBySystem: React__default['default'].createElement(reactIcons.VideoProhibited16Filled, null),
1797
1895
  HorizontalGalleryLeftButton: React__default['default'].createElement(reactIcons.ChevronLeft20Regular, null),
1798
1896
  HorizontalGalleryRightButton: React__default['default'].createElement(reactIcons.ChevronRight20Regular, null),
1799
1897
  MessageDelivered: React__default['default'].createElement(reactIcons.CheckmarkCircle16Regular, null),
@@ -1810,6 +1908,10 @@ const DEFAULT_COMPONENT_ICONS = {
1810
1908
  ParticipantItemOptions: React__default['default'].createElement(reactIcons.MoreHorizontal20Regular, null),
1811
1909
  ParticipantItemOptionsHovered: React__default['default'].createElement(reactIcons.MoreHorizontal20Filled, null),
1812
1910
  ParticipantItemScreenShareStart: React__default['default'].createElement(reactIcons.ShareScreenStart20Filled, null),
1911
+ /* @conditional-compile-remove(PSTN-calls) */
1912
+ HoldCall: React__default['default'].createElement(reactIcons.Pause20Filled, null),
1913
+ /* @conditional-compile-remove(PSTN-calls) */
1914
+ ResumeCall: React__default['default'].createElement(reactIcons.Play20Filled, null),
1813
1915
  SendBoxSend: React__default['default'].createElement(reactIcons.Send20Regular, null),
1814
1916
  SendBoxSendHovered: React__default['default'].createElement(reactIcons.Send20Filled, null),
1815
1917
  VideoTileMicOff: React__default['default'].createElement(reactIcons.MicOff16Filled, null)
@@ -2001,6 +2103,81 @@ const InputBoxButton = (props) => {
2001
2103
  }, onRenderIcon: () => onRenderIcon(isHover) })));
2002
2104
  };
2003
2105
 
2106
+ // Copyright (c) Microsoft Corporation.
2107
+ /**
2108
+ * @private
2109
+ */
2110
+ const buttonStyle$1 = react.mergeStyles({
2111
+ color: 'grey',
2112
+ margin: '0',
2113
+ padding: '0',
2114
+ width: '1.0625rem',
2115
+ height: '1.0625rem',
2116
+ border: 'none',
2117
+ minWidth: '0',
2118
+ '&:hover': {
2119
+ backgroundColor: 'transparent'
2120
+ }
2121
+ });
2122
+ /**
2123
+ * @private
2124
+ */
2125
+ const iconWrapperStyle$1 = react.mergeStyles({
2126
+ position: 'absolute',
2127
+ pointerEvents: 'none'
2128
+ });
2129
+
2130
+ // Copyright (c) Microsoft Corporation.
2131
+ /**
2132
+ * @private
2133
+ */
2134
+ const VoiceOverButton = (props) => {
2135
+ const { onRenderIcon, onClick, ariaLabel, className, id, tooltipContent } = props;
2136
+ const [isHover, setIsHover] = React.useState(false);
2137
+ const mergedButtonStyle = react.mergeStyles(buttonStyle$1, className);
2138
+ const theme = useTheme();
2139
+ const calloutStyle = { root: { padding: 0 }, calloutMain: { padding: '0.5rem' } };
2140
+ // Place callout with no gap between it and the button.
2141
+ const calloutProps = {
2142
+ gapSpace: 0,
2143
+ styles: calloutStyle,
2144
+ backgroundColor: isDarkThemed(theme) ? theme.palette.neutralLighter : ''
2145
+ };
2146
+ return (React__default['default'].createElement(react.TooltipHost, { hostClassName: inputButtonTooltipStyle, content: tooltipContent, calloutProps: Object.assign({}, calloutProps) },
2147
+ React__default['default'].createElement(react.DefaultButton, { className: mergedButtonStyle, ariaLabel: ariaLabel, onClick: onClick, id: id, onMouseEnter: () => {
2148
+ setIsHover(true);
2149
+ }, onMouseLeave: () => {
2150
+ setIsHover(false);
2151
+ } }),
2152
+ React__default['default'].createElement("div", { className: iconWrapperStyle$1 }, onRenderIcon(isHover))));
2153
+ };
2154
+
2155
+ // Copyright (c) Microsoft Corporation.
2156
+ /**
2157
+ * @private
2158
+ * Announcer component to maker aria announcements on actions
2159
+ */
2160
+ const Announcer = (props) => {
2161
+ const { announcementString, ariaLive } = props;
2162
+ return React__default['default'].createElement(react.Stack, { "aria-label": announcementString, "aria-live": ariaLive, styles: announcerStyles });
2163
+ };
2164
+ /**
2165
+ * Styles to hide the announcer from view but still existing on the DOM tree it so that narration can happen.
2166
+ */
2167
+ const announcerStyles = {
2168
+ root: {
2169
+ position: 'absolute',
2170
+ width: '1px',
2171
+ height: '1px',
2172
+ padding: 0,
2173
+ margin: '-1px',
2174
+ overflow: 'hidden',
2175
+ clip: 'rect(0,0,0,0)',
2176
+ whiteSpace: 'nowrap',
2177
+ border: 0
2178
+ }
2179
+ };
2180
+
2004
2181
  // Copyright (c) Microsoft Corporation.
2005
2182
  /**
2006
2183
  * @private
@@ -2026,11 +2203,13 @@ const SendBoxErrorBar = (props) => {
2026
2203
  };
2027
2204
  }, [dismissAfterMs, onDismiss, error]);
2028
2205
  if (errorMessage) {
2029
- return (React__default['default'].createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, styles: {
2030
- iconContainer: {
2031
- display: 'none'
2032
- }
2033
- } }, errorMessage));
2206
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
2207
+ React__default['default'].createElement(Announcer, { announcementString: errorMessage, ariaLive: 'polite' }),
2208
+ React__default['default'].createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, styles: {
2209
+ iconContainer: {
2210
+ display: 'none'
2211
+ }
2212
+ } }, errorMessage)));
2034
2213
  }
2035
2214
  else {
2036
2215
  return React__default['default'].createElement(React__default['default'].Fragment, null);
@@ -2058,9 +2237,30 @@ const SendBoxErrors = (props) => {
2058
2237
  * A component for displaying a file card with file icon and progress bar.
2059
2238
  */
2060
2239
  const _FileCard = (props) => {
2240
+ var _a, _b, _c, _d;
2061
2241
  const { fileName, fileExtension, progress, actionIcon } = props;
2062
2242
  const theme = react.useTheme();
2243
+ /* @conditional-compile-remove(file-sharing) */
2244
+ const [announcerString, setAnnouncerString] = React.useState(undefined);
2245
+ /* @conditional-compile-remove(file-sharing) */
2246
+ const localeStrings = useLocale$1().strings.sendBox;
2247
+ /* @conditional-compile-remove(file-sharing) */
2248
+ const uploadStartedString = (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.uploading) !== null && _b !== void 0 ? _b : localeStrings.uploading;
2249
+ /* @conditional-compile-remove(file-sharing) */
2250
+ const uploadCompletedString = (_d = (_c = props.strings) === null || _c === void 0 ? void 0 : _c.uploadCompleted) !== null && _d !== void 0 ? _d : localeStrings.uploadCompleted;
2063
2251
  const showProgressIndicator = progress !== undefined && progress > 0 && progress < 1;
2252
+ /* @conditional-compile-remove(file-sharing) */
2253
+ React.useEffect(() => {
2254
+ if (showProgressIndicator) {
2255
+ setAnnouncerString(`${uploadStartedString} ${fileName}`);
2256
+ }
2257
+ else if (progress === 1) {
2258
+ setAnnouncerString(`${fileName} ${uploadCompletedString}`);
2259
+ }
2260
+ else {
2261
+ setAnnouncerString(undefined);
2262
+ }
2263
+ }, [progress, showProgressIndicator, fileName, uploadStartedString, uploadCompletedString]);
2064
2264
  const progressBarThicknessPx = 4;
2065
2265
  const containerClassName = react.mergeStyles({
2066
2266
  width: '12rem',
@@ -2099,20 +2299,23 @@ const _FileCard = (props) => {
2099
2299
  height: _pxToRem(progressBarThicknessPx)
2100
2300
  }
2101
2301
  };
2102
- return (React__default['default'].createElement(react.Stack, { className: containerClassName, onClick: () => {
2103
- props.actionHandler && props.actionHandler();
2104
- } },
2105
- React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center", className: fileInfoWrapperClassName },
2106
- React__default['default'].createElement(react.Stack, null,
2107
- React__default['default'].createElement(react.Icon, Object.assign({}, reactFileTypeIcons.getFileTypeIconProps({
2108
- extension: fileExtension,
2109
- size: 24,
2110
- imageFileType: 'svg'
2111
- })))),
2112
- React__default['default'].createElement(react.Stack, { className: fileNameContainerClassName },
2113
- React__default['default'].createElement(react.Text, { className: fileNameTextClassName }, fileName)),
2114
- React__default['default'].createElement(react.Stack, { verticalAlign: "center", className: actionIconClassName }, actionIcon && actionIcon)),
2115
- showProgressIndicator && React__default['default'].createElement(react.ProgressIndicator, { percentComplete: progress, styles: progressIndicatorStyles })));
2302
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
2303
+ /* @conditional-compile-remove(file-sharing) */
2304
+ React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
2305
+ React__default['default'].createElement(react.Stack, { className: containerClassName, onClick: () => {
2306
+ props.actionHandler && props.actionHandler();
2307
+ } },
2308
+ React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center", className: fileInfoWrapperClassName },
2309
+ React__default['default'].createElement(react.Stack, null,
2310
+ React__default['default'].createElement(react.Icon, Object.assign({ "data-ui-id": 'filetype-icon' }, reactFileTypeIcons.getFileTypeIconProps({
2311
+ extension: fileExtension,
2312
+ size: 24,
2313
+ imageFileType: 'svg'
2314
+ })))),
2315
+ React__default['default'].createElement(react.Stack, { className: fileNameContainerClassName },
2316
+ React__default['default'].createElement(react.Text, { className: fileNameTextClassName }, fileName)),
2317
+ React__default['default'].createElement(react.Stack, { verticalAlign: "center", className: actionIconClassName }, actionIcon && actionIcon)),
2318
+ showProgressIndicator && React__default['default'].createElement(react.ProgressIndicator, { percentComplete: progress, styles: progressIndicatorStyles }))));
2116
2319
  };
2117
2320
 
2118
2321
  // Copyright (c) Microsoft Corporation.
@@ -2176,17 +2379,29 @@ const actionIconStyle$1 = { height: '1rem' };
2176
2379
  * @internal
2177
2380
  */
2178
2381
  const _FileUploadCards = (props) => {
2382
+ var _a;
2179
2383
  const files = props.activeFileUploads;
2384
+ /* @conditional-compile-remove(file-sharing) */
2385
+ const localeStrings = useLocale$1().strings.sendBox;
2386
+ const removeFileButtonString = React.useMemo(() => () => {
2387
+ var _a, _b;
2388
+ /* @conditional-compile-remove(file-sharing) */
2389
+ return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeFile) !== null && _b !== void 0 ? _b : localeStrings.removeFile;
2390
+ }, [
2391
+ (_a = props.strings) === null || _a === void 0 ? void 0 : _a.removeFile,
2392
+ /* @conditional-compile-remove(file-sharing) */
2393
+ localeStrings.removeFile
2394
+ ]);
2180
2395
  if (!files || files.length === 0) {
2181
2396
  return React__default['default'].createElement(React__default['default'].Fragment, null);
2182
2397
  }
2183
2398
  return (React__default['default'].createElement(_FileCardGroup, null, files &&
2184
2399
  files
2185
2400
  .filter((file) => !file.error)
2186
- .map((file) => (React__default['default'].createElement(_FileCard, { fileName: file.filename, progress: file.progress, key: file.id, fileExtension: extension(file.filename), actionIcon: React__default['default'].createElement(react.IconButton, { className: iconButtonClassName },
2401
+ .map((file) => (React__default['default'].createElement(_FileCard, { fileName: file.filename, progress: file.progress, key: file.id, fileExtension: extension(file.filename), actionIcon: React__default['default'].createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: removeFileButtonString() },
2187
2402
  React__default['default'].createElement(react.Icon, { iconName: "CancelFileUpload", style: actionIconStyle$1 })), actionHandler: () => {
2188
2403
  props.onCancelFileUpload && props.onCancelFileUpload(file.id);
2189
- } })))));
2404
+ }, strings: props.strings })))));
2190
2405
  };
2191
2406
 
2192
2407
  // Copyright (c) Microsoft Corporation.
@@ -2273,13 +2488,17 @@ const SendBox = (props) => {
2273
2488
  }, [props.activeFileUploads, fileUploadsPendingError]);
2274
2489
  /* @conditional-compile-remove(file-sharing) */
2275
2490
  const onRenderFileUploads = React.useCallback(() => {
2276
- var _a;
2491
+ var _a, _b, _c, _d, _e, _f, _g;
2277
2492
  if (!((_a = props.activeFileUploads) === null || _a === void 0 ? void 0 : _a.filter((upload) => !upload.error).length)) {
2278
2493
  return null;
2279
2494
  }
2280
2495
  return props.onRenderFileUploads ? (props.onRenderFileUploads()) : (React__default['default'].createElement(react.Stack, { className: fileUploadCardsStyles },
2281
- React__default['default'].createElement(_FileUploadCards, { activeFileUploads: props.activeFileUploads, onCancelFileUpload: props.onCancelFileUpload })));
2282
- }, [props]);
2496
+ React__default['default'].createElement(_FileUploadCards, { activeFileUploads: props.activeFileUploads, onCancelFileUpload: props.onCancelFileUpload, strings: {
2497
+ removeFile: (_c = (_b = props.strings) === null || _b === void 0 ? void 0 : _b.removeFile) !== null && _c !== void 0 ? _c : localeStrings.removeFile,
2498
+ uploading: (_e = (_d = props.strings) === null || _d === void 0 ? void 0 : _d.uploading) !== null && _e !== void 0 ? _e : localeStrings.uploading,
2499
+ uploadCompleted: (_g = (_f = props.strings) === null || _f === void 0 ? void 0 : _f.uploadCompleted) !== null && _g !== void 0 ? _g : localeStrings.uploadCompleted
2500
+ } })));
2501
+ }, [props, localeStrings]);
2283
2502
  return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(sendBoxWrapperStyles) },
2284
2503
  /* @conditional-compile-remove(file-sharing) */
2285
2504
  React__default['default'].createElement(SendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
@@ -2293,7 +2512,7 @@ const SendBox = (props) => {
2293
2512
  }, onEnterKeyDown: () => {
2294
2513
  sendMessageOnClick();
2295
2514
  }, styles: mergedStyles, supportNewline: supportNewline, maxLength: MAXIMUM_LENGTH_OF_MESSAGE$1 },
2296
- React__default['default'].createElement(InputBoxButton, { onRenderIcon: onRenderSendIcon, onClick: (e) => {
2515
+ React__default['default'].createElement(VoiceOverButton, { onRenderIcon: onRenderSendIcon, onClick: (e) => {
2297
2516
  if (!textValueOverflow) {
2298
2517
  sendMessageOnClick();
2299
2518
  }
@@ -2369,13 +2588,17 @@ const MessageStatusIndicator = (props) => {
2369
2588
  };
2370
2589
  switch (status) {
2371
2590
  case 'failed':
2372
- return (React__default['default'].createElement(react.TooltipHost, { content: strings.failedToSendTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps) },
2591
+ return (React__default['default'].createElement(react.TooltipHost, { content: strings.failedToSendTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps), styles: hostStyles$1 },
2592
+ strings.failedToSendAriaLabel && (
2593
+ // live message is used here and in the following tooltips so that aria labels are announced on mobile
2594
+ React__default['default'].createElement(reactAriaLive.LiveMessage, { message: strings.failedToSendAriaLabel, "aria-live": "polite" })),
2373
2595
  React__default['default'].createElement(react.Icon, { role: "status", "data-ui-id": "chat-composite-message-status-icon", "aria-label": strings.failedToSendAriaLabel, iconName: "MessageFailed", className: react.mergeStyles(MessageStatusIndicatorErrorIconStyle, { color: theme.palette.redDark }, styles === null || styles === void 0 ? void 0 : styles.root) })));
2374
2596
  case 'sending':
2375
- return (React__default['default'].createElement(react.TooltipHost, { content: strings.sendingTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps) },
2597
+ return (React__default['default'].createElement(react.TooltipHost, { content: strings.sendingTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps), styles: hostStyles$1 },
2598
+ strings.sendingAriaLabel && React__default['default'].createElement(reactAriaLive.LiveMessage, { message: strings.sendingAriaLabel, "aria-live": "polite" }),
2376
2599
  React__default['default'].createElement(react.Icon, { role: "status", "data-ui-id": "chat-composite-message-status-icon", "aria-label": strings.sendingAriaLabel, iconName: "MessageSending", className: react.mergeStyles(MessageStatusIndicatorIconStyle, { color: theme.palette.themePrimary }, styles === null || styles === void 0 ? void 0 : styles.root) })));
2377
2600
  case 'seen':
2378
- return (React__default['default'].createElement(react.TooltipHost, { calloutProps: Object.assign({}, calloutProps), "data-ui-id": "chat-composite-message-tooltip", content:
2601
+ return (React__default['default'].createElement(react.TooltipHost, { calloutProps: Object.assign({}, calloutProps), "data-ui-id": "chat-composite-message-tooltip", styles: hostStyles$1, content:
2379
2602
  // when it's just 1 to 1 texting, we don't need to know who has read the message, just show message as 'seen'
2380
2603
  // when readcount is 0, we have a bug, show 'seen' to cover up as a fall back
2381
2604
  // when participant count is 0, we have a bug, show 'seen' to cover up as a fall back
@@ -2394,14 +2617,20 @@ const MessageStatusIndicator = (props) => {
2394
2617
  setIsTooltipToggled(!isTooltipToggled);
2395
2618
  }
2396
2619
  } },
2620
+ strings.seenAriaLabel && React__default['default'].createElement(reactAriaLive.LiveMessage, { message: strings.seenAriaLabel, "aria-live": "polite" }),
2397
2621
  React__default['default'].createElement(react.Icon, { "data-ui-id": "chat-composite-message-status-icon", role: "status", "aria-label": strings.seenAriaLabel, iconName: "MessageSeen", className: react.mergeStyles({ color: theme.palette.themePrimary }, styles === null || styles === void 0 ? void 0 : styles.root) })));
2398
2622
  case 'delivered':
2399
- return (React__default['default'].createElement(react.TooltipHost, { calloutProps: Object.assign({}, calloutProps), content: strings.deliveredTooltipText, "data-ui-id": "chat-composite-message-tooltip" },
2623
+ return (React__default['default'].createElement(react.TooltipHost, { calloutProps: Object.assign({}, calloutProps), content: strings.deliveredTooltipText, "data-ui-id": "chat-composite-message-tooltip", styles: hostStyles$1 },
2624
+ strings.deliveredAriaLabel && React__default['default'].createElement(reactAriaLive.LiveMessage, { message: strings.deliveredAriaLabel, "aria-live": "polite" }),
2400
2625
  React__default['default'].createElement(react.Icon, { role: "status", "data-ui-id": "chat-composite-message-status-icon", "aria-label": strings.deliveredAriaLabel, iconName: "MessageDelivered", className: react.mergeStyles(MessageStatusIndicatorIconStyle, { color: theme.palette.themePrimary }, styles === null || styles === void 0 ? void 0 : styles.root) })));
2401
2626
  default:
2402
2627
  return React__default['default'].createElement(React__default['default'].Fragment, null);
2403
2628
  }
2404
2629
  };
2630
+ // The TooltipHost root uses display: inline by default.
2631
+ // To prevent sizing issues or tooltip positioning issues, we override to inline-block.
2632
+ // For more details see "Icon Button with Tooltip" on https://developer.microsoft.com/en-us/fluentui#/controls/web/button
2633
+ const hostStyles$1 = { root: { display: 'inline-block' } };
2405
2634
 
2406
2635
  // Copyright (c) Microsoft Corporation.
2407
2636
  // Minimum chat bubble width. This matches the minimum chat bubble width from FluentUI
@@ -2443,7 +2672,10 @@ const chatStyle = {
2443
2672
  paddingBottom: '0.5rem',
2444
2673
  paddingTop: '0.8rem',
2445
2674
  border: 'none',
2446
- overflow: 'auto'
2675
+ overflow: 'auto',
2676
+ // `height: 100%` ensures that the Chat component covers 100% of it's parents height
2677
+ // to prevent intermittent scrollbars when gifs are present in the chat.
2678
+ height: '100%'
2447
2679
  };
2448
2680
  /**
2449
2681
  * @private
@@ -2907,6 +3139,7 @@ const ChatMessageActionFlyout = (props) => {
2907
3139
  hidePersonaDetails: true,
2908
3140
  size: react.PersonaSize.size24,
2909
3141
  text: person.displayName,
3142
+ showOverflowTooltip: false,
2910
3143
  styles: {
2911
3144
  root: {
2912
3145
  margin: '0.25rem'
@@ -3143,8 +3376,20 @@ const actionIconStyle = { height: '1rem' };
3143
3376
  * @internal
3144
3377
  */
3145
3378
  const _FileDownloadCards = (props) => {
3379
+ var _a;
3146
3380
  const { userId, fileMetadata } = props;
3147
3381
  const [showSpinner, setShowSpinner] = React.useState(false);
3382
+ /* @conditional-compile-remove(file-sharing) */
3383
+ const localeStrings = useLocale$1().strings.messageThread;
3384
+ const downloadFileButtonString = React.useMemo(() => () => {
3385
+ var _a, _b;
3386
+ /* @conditional-compile-remove(file-sharing) */
3387
+ return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
3388
+ }, [
3389
+ (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile,
3390
+ /* @conditional-compile-remove(file-sharing) */
3391
+ localeStrings.downloadFile
3392
+ ]);
3148
3393
  const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$q(void 0, void 0, void 0, function* () {
3149
3394
  if (!props.downloadHandler) {
3150
3395
  window.open(file.url, '_blank', 'noopener,noreferrer');
@@ -3171,7 +3416,7 @@ const _FileDownloadCards = (props) => {
3171
3416
  }
3172
3417
  return (React__default['default'].createElement("div", { style: fileDownloadCardsStyle, "data-ui-id": "file-download-card-group" },
3173
3418
  React__default['default'].createElement(_FileCardGroup, null, fileMetadata &&
3174
- fileMetadata.map((file) => (React__default['default'].createElement(_FileCard, { fileName: file.name, key: file.name, fileExtension: file.extension, actionIcon: showSpinner ? (React__default['default'].createElement(react.Spinner, { size: react.SpinnerSize.medium, "aria-live": 'polite', role: 'status' })) : (React__default['default'].createElement(react.IconButton, { className: iconButtonClassName },
3419
+ fileMetadata.map((file) => (React__default['default'].createElement(_FileCard, { fileName: file.name, key: file.name, fileExtension: file.extension, actionIcon: showSpinner ? (React__default['default'].createElement(react.Spinner, { size: react.SpinnerSize.medium, "aria-live": 'polite', role: 'status' })) : (React__default['default'].createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: downloadFileButtonString() },
3175
3420
  React__default['default'].createElement(DownloadIconTrampoline, null))), actionHandler: () => fileDownloadHandler(userId, file) }))))));
3176
3421
  };
3177
3422
  /**
@@ -3200,6 +3445,7 @@ const generateCustomizedTimestamp = (props, createdOn, locale) => {
3200
3445
  };
3201
3446
  /** @private */
3202
3447
  const MessageBubble = (props) => {
3448
+ var _a;
3203
3449
  const ids = useIdentifiers();
3204
3450
  const theme = useTheme();
3205
3451
  const locale = useLocale$1();
@@ -3222,7 +3468,7 @@ const MessageBubble = (props) => {
3222
3468
  const actionMenuProps = wasInteractionByTouch
3223
3469
  ? undefined
3224
3470
  : chatMessageActionMenuProps({
3225
- ariaLabel: strings.actionMenuMoreOptions,
3471
+ ariaLabel: (_a = strings.actionMenuMoreOptions) !== null && _a !== void 0 ? _a : '',
3226
3472
  enabled: chatActionsEnabled,
3227
3473
  menuButtonRef: messageActionButtonRef,
3228
3474
  // Force show the action button while the flyout is open (otherwise this will dismiss when the pointer is hovered over the flyout)
@@ -3238,7 +3484,20 @@ const MessageBubble = (props) => {
3238
3484
  // or not we need to set the target to undefined here to actually hide the action flyout
3239
3485
  setChatMessageActionFlyoutTarget(undefined);
3240
3486
  }, [setChatMessageActionFlyoutTarget]);
3241
- const defaultOnRenderFileDownloads = React.useCallback(() => (React__default['default'].createElement(_FileDownloadCards, { userId: userId, fileMetadata: message['attachedFilesMetadata'] || [], downloadHandler: fileDownloadHandler })), [message, fileDownloadHandler, userId]);
3487
+ const defaultOnRenderFileDownloads = React.useCallback(() => {
3488
+ var _a;
3489
+ return (React__default['default'].createElement(_FileDownloadCards, { userId: userId, fileMetadata: message['attachedFilesMetadata'] || [], downloadHandler: fileDownloadHandler,
3490
+ /* @conditional-compile-remove(file-sharing) */
3491
+ strings: { downloadFile: (_a = props.strings.downloadFile) !== null && _a !== void 0 ? _a : locale.strings.messageThread.downloadFile } }));
3492
+ }, [
3493
+ userId,
3494
+ message,
3495
+ /* @conditional-compile-remove(file-sharing) */
3496
+ props,
3497
+ /* @conditional-compile-remove(file-sharing) */
3498
+ locale,
3499
+ fileDownloadHandler
3500
+ ]);
3242
3501
  const chatMessage = (React__default['default'].createElement(React__default['default'].Fragment, null,
3243
3502
  React__default['default'].createElement("div", { ref: messageRef },
3244
3503
  React__default['default'].createElement(reactNorthstar.Chat.Message, { "data-ui-id": "chat-composite-message", className: react.mergeStyles(messageContainerStyle), styles: messageContainerStyle, content: React__default['default'].createElement("div", null,
@@ -3311,7 +3570,7 @@ const ChatMessageComponent = (props) => {
3311
3570
  else {
3312
3571
  return (React__default['default'].createElement(ChatMessageComponentAsMessageBubble, Object.assign({}, props, { onRemoveClick: onRemoveClick, onEditClick: onEditClick, onResendClick: onResendClick, onRenderAvatar: props.onRenderAvatar,
3313
3572
  /* @conditional-compile-remove(date-time-customization) */
3314
- onDisplayDateTimeString: props.onDisplayDateTimeString })));
3573
+ onDisplayDateTimeString: props.onDisplayDateTimeString, strings: props.strings })));
3315
3574
  }
3316
3575
  };
3317
3576
 
@@ -3527,7 +3786,8 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
3527
3786
  const personaOptions = {
3528
3787
  hidePersonaDetails: true,
3529
3788
  size: react.PersonaSize.size32,
3530
- text: message.senderDisplayName
3789
+ text: message.senderDisplayName,
3790
+ showOverflowTooltip: false
3531
3791
  };
3532
3792
  const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
3533
3793
  defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
@@ -3803,29 +4063,31 @@ const MessageThread = (props) => {
3803
4063
  setMessageReadBy(getParticipantsWhoHaveReadMessage(message, readReceiptsBySenderIdRef.current));
3804
4064
  }
3805
4065
  }, []);
4066
+ const localeStrings = useLocale$1().strings.messageThread;
4067
+ const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
3806
4068
  // To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp need to be regenerated)
3807
4069
  const defaultChatMessageRenderer = React.useCallback((messageProps) => {
3808
4070
  if (messageProps.message.messageType === 'chat') {
3809
- return (React__default['default'].createElement(ChatMessageComponent, Object.assign({}, messageProps, { onRenderFileDownloads: onRenderFileDownloads, message: messageProps.message, userId: props.userId, remoteParticipantsCount: participantCount ? participantCount - 1 : 0, inlineAcceptRejectEditButtons: !isNarrow, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus, messageStatus: messageProps.message.status, onActionButtonClick: onActionButtonClickMemo,
4071
+ return (React__default['default'].createElement(ChatMessageComponent, Object.assign({}, messageProps, { onRenderFileDownloads: onRenderFileDownloads,
4072
+ /* @conditional-compile-remove(file-sharing) */
4073
+ strings: strings, message: messageProps.message, userId: props.userId, remoteParticipantsCount: participantCount ? participantCount - 1 : 0, inlineAcceptRejectEditButtons: !isNarrow, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus, messageStatus: messageProps.message.status, onActionButtonClick: onActionButtonClickMemo,
3810
4074
  /* @conditional-compile-remove(date-time-customization) */
3811
4075
  onDisplayDateTimeString: onDisplayDateTimeString })));
3812
4076
  }
3813
4077
  return React__default['default'].createElement(React__default['default'].Fragment, null);
3814
4078
  }, [
3815
- // eslint-disable-next-line react-hooks/exhaustive-deps
3816
- new Date().toDateString(),
3817
- isNarrow,
3818
- participantCount,
3819
- onRenderAvatar,
3820
- onActionButtonClickMemo,
3821
4079
  onRenderFileDownloads,
4080
+ /* @conditional-compile-remove(file-sharing) */
4081
+ strings,
3822
4082
  props.userId,
4083
+ participantCount,
4084
+ isNarrow,
4085
+ onRenderAvatar,
3823
4086
  showMessageStatus,
4087
+ onActionButtonClickMemo,
3824
4088
  /* @conditional-compile-remove(date-time-customization) */
3825
4089
  onDisplayDateTimeString
3826
4090
  ]);
3827
- const localeStrings = useLocale$1().strings.messageThread;
3828
- const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
3829
4091
  const defaultStatusRenderer = React.useCallback((message, status, participantCount, readCount) => {
3830
4092
  const onToggleToolTip = (isToggled) => {
3831
4093
  if (isToggled && readReceiptsBySenderIdRef.current) {
@@ -3901,8 +4163,8 @@ const MessageThread = (props) => {
3901
4163
  }, [theme, styles === null || styles === void 0 ? void 0 : styles.chatContainer, messagesToDisplay]);
3902
4164
  return (React__default['default'].createElement(reactNorthstar.Ref, { innerRef: chatThreadRef },
3903
4165
  React__default['default'].createElement(react.Stack, { className: react.mergeStyles(messageThreadContainerStyle, styles === null || styles === void 0 ? void 0 : styles.root), grow: true },
3904
- React__default['default'].createElement(reactNorthstar.Ref, { innerRef: chatScrollDivRef }, chatBody),
3905
- existsNewChatMessage && !disableJumpToNewMessageButton && (React__default['default'].createElement("div", { className: react.mergeStyles(newMessageButtonContainerStyle, styles === null || styles === void 0 ? void 0 : styles.newMessageButtonContainer) }, onRenderJumpToNewMessageButton ? (onRenderJumpToNewMessageButton({ text: strings.newMessagesIndicator, onClick: scrollToBottom })) : (React__default['default'].createElement(DefaultJumpToNewMessageButton, { text: strings.newMessagesIndicator, onClick: scrollToBottom })))))));
4166
+ existsNewChatMessage && !disableJumpToNewMessageButton && (React__default['default'].createElement("div", { className: react.mergeStyles(newMessageButtonContainerStyle, styles === null || styles === void 0 ? void 0 : styles.newMessageButtonContainer) }, onRenderJumpToNewMessageButton ? (onRenderJumpToNewMessageButton({ text: strings.newMessagesIndicator, onClick: scrollToBottom })) : (React__default['default'].createElement(DefaultJumpToNewMessageButton, { text: strings.newMessagesIndicator, onClick: scrollToBottom })))),
4167
+ React__default['default'].createElement(reactNorthstar.Ref, { innerRef: chatScrollDivRef }, chatBody))));
3906
4168
  };
3907
4169
  const onRenderFileDownloadsTrampoline = (props) => {
3908
4170
  /* @conditional-compile-remove(file-sharing) */
@@ -3926,6 +4188,40 @@ const linkStyles = (theme) => {
3926
4188
  };
3927
4189
 
3928
4190
  // Copyright (c) Microsoft Corporation.
4191
+ /**
4192
+ * @private
4193
+ */
4194
+ const container = () => react.mergeStyles({
4195
+ position: 'relative',
4196
+ display: 'contents'
4197
+ });
4198
+ /**
4199
+ * @private
4200
+ */
4201
+ const loadingSpinnerContainer = () => react.mergeStyles({
4202
+ // Position centrally on top of content. Parent must have position: relative.
4203
+ position: 'absolute',
4204
+ top: '50%',
4205
+ bottom: '0',
4206
+ left: '50%',
4207
+ right: '0',
4208
+ transform: 'translate(-50%, -50%)'
4209
+ });
4210
+ /**
4211
+ * @private
4212
+ */
4213
+ const loadSpinnerStyles = {
4214
+ root: {
4215
+ height: '100%' // ensure height fills container
4216
+ },
4217
+ circle: {
4218
+ maxHeight: '5rem',
4219
+ height: '50%',
4220
+ width: 'unset',
4221
+ aspectRatio: '1 / 1',
4222
+ borderWidth: '0.25em'
4223
+ }
4224
+ };
3929
4225
  /**
3930
4226
  * @private
3931
4227
  */
@@ -3968,7 +4264,7 @@ const invertedVideoInPipStyle = (theme) => react.mergeStyles(mediaContainer(them
3968
4264
  const StreamMedia = (props) => {
3969
4265
  const containerEl = React.useRef(null);
3970
4266
  const theme = useTheme();
3971
- const { isMirrored, videoStreamElement, styles } = props;
4267
+ const { isMirrored, videoStreamElement, styles, loadingState = 'none' } = props;
3972
4268
  const [pipEnabled, setPipEnabled] = React.useState(false);
3973
4269
  React.useEffect(() => {
3974
4270
  const container = containerEl.current;
@@ -3994,7 +4290,10 @@ const StreamMedia = (props) => {
3994
4290
  setPipEnabled(false);
3995
4291
  };
3996
4292
  }, [videoStreamElement]);
3997
- return (React__default['default'].createElement("div", { className: react.mergeStyles(isMirrored && pipEnabled ? invertedVideoInPipStyle(theme) : mediaContainer(theme), styles === null || styles === void 0 ? void 0 : styles.root), ref: containerEl }));
4293
+ return (React__default['default'].createElement("div", { className: container() },
4294
+ React__default['default'].createElement("div", { className: react.mergeStyles(isMirrored && pipEnabled ? invertedVideoInPipStyle(theme) : mediaContainer(theme), styles === null || styles === void 0 ? void 0 : styles.root), ref: containerEl }),
4295
+ loadingState === 'loading' && (React__default['default'].createElement("div", { className: loadingSpinnerContainer() },
4296
+ React__default['default'].createElement(react.Spinner, { "data-ui-id": "stream-media-loading-spinner", styles: loadSpinnerStyles })))));
3998
4297
  };
3999
4298
 
4000
4299
  // Copyright (c) Microsoft Corporation.
@@ -4052,7 +4351,7 @@ const meContainerStyle = {
4052
4351
  */
4053
4352
  const ParticipantItem = (props) => {
4054
4353
  var _a, _b, _c, _d;
4055
- const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick } = props;
4354
+ const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip } = props;
4056
4355
  const [itemHovered, setItemHovered] = React.useState(false);
4057
4356
  const [menuHidden, setMenuHidden] = React.useState(true);
4058
4357
  const containerRef = React.useRef(null);
@@ -4065,7 +4364,8 @@ const ParticipantItem = (props) => {
4065
4364
  text: displayName,
4066
4365
  size: react.PersonaSize.size32,
4067
4366
  presence: presence,
4068
- initialsTextColor: 'white'
4367
+ initialsTextColor: 'white',
4368
+ showOverflowTooltip: showParticipantOverflowTooltip
4069
4369
  };
4070
4370
  const avatar = onRenderAvatar ? (onRenderAvatar(userId !== null && userId !== void 0 ? userId : '', avatarOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({ className: react.mergeStyles({
4071
4371
  // Prevents persona text from being vertically truncated if a global line height is less than 1.15.
@@ -4134,7 +4434,7 @@ const iconStyles$1 = react.mergeStyles({
4134
4434
  });
4135
4435
 
4136
4436
  // Copyright (c) Microsoft Corporation.
4137
- const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick) => {
4437
+ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip) => {
4138
4438
  const callingParticipant = participant;
4139
4439
  let presence = undefined;
4140
4440
  if (callingParticipant) {
@@ -4151,10 +4451,8 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
4151
4451
  callingParticipant.isScreenSharing && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$1, ariaLabel: strings.sharingIconLabel })),
4152
4452
  callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$1, ariaLabel: strings.mutedIconLabel }))))
4153
4453
  : () => null;
4154
- if (participant.displayName) {
4155
- return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: participant.displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant) }));
4156
- }
4157
- return null;
4454
+ const displayName = !participant.displayName ? strings.displayNamePlaceholder : participant.displayName;
4455
+ return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant), showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
4158
4456
  };
4159
4457
  const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4160
4458
  if (!excludeMe || !myUserId) {
@@ -4177,7 +4475,7 @@ const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4177
4475
  */
4178
4476
  const ParticipantList = (props) => {
4179
4477
  var _a, _b;
4180
- const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems } = props;
4478
+ const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
4181
4479
  const ids = useIdentifiers();
4182
4480
  const strings = useLocale$1().strings.participantItem;
4183
4481
  const displayedParticipants = React.useMemo(() => {
@@ -4206,7 +4504,7 @@ const ParticipantList = (props) => {
4206
4504
  const participantItemStyles = react.merge(participantListItemStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles);
4207
4505
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": ids.participantList, className: react.mergeStyles(participantListStyle$1, (_b = props.styles) === null || _b === void 0 ? void 0 : _b.root) }, displayedParticipants.map((participant) => onRenderParticipant
4208
4506
  ? onRenderParticipant(participant)
4209
- : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick))));
4507
+ : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip))));
4210
4508
  };
4211
4509
 
4212
4510
  /**
@@ -4261,162 +4559,32 @@ const participantsById = (participants) => {
4261
4559
 
4262
4560
  // Copyright (c) Microsoft Corporation.
4263
4561
  /**
4264
- * A custom React hook to manage the lifecycle of a cancellable async task
4265
- * cooperatively.
4562
+ * Helper hook to maintain the video stream lifecycle. This calls onCreateStreamView and onDisposeStreamView
4563
+ * appropriately based on react lifecycle events and prop changes.
4266
4564
  *
4267
- * This hook may be useful when a component needs to run some task
4268
- * asynchronously that may need to be later cancelled.
4565
+ * @remarks
4269
4566
  *
4270
- * - Task cancellation is cooperative. The triggered action must check for task
4271
- * cancellation at appropriate points and return early when cancelled.
4272
- * - There can be only one task in progress at any time. Triggering a second
4273
- * task cancels the previously triggered task, if it exists.
4567
+ * Notes on handling changes to scaling mode:
4274
4568
  *
4275
- * ## Example
4276
- * ```ts
4277
- * const [triggerFunc, cancelFunc] = useCancellableTask();
4278
- *
4279
- * useEffect(() => {
4280
- * // Some asynchronous task that needs to be triggered (but not waited upon).
4281
- * triggerFunc(async (cancellable: Cancellable) => {
4282
- * // Task cancellation is cooperative. The following blocking call is not
4283
- * // cancellable (it does not take the cancellable argument at all). So
4284
- * // any cancellation will only take effect once this call is await'ed.
4285
- * const costlyBlockingCallReturn = await costlyBlockingCall(someArg);
4286
- *
4287
- * // Cooperative cancellation.
4288
- * if (cancellable.cancelled) {
4289
- * return;
4290
- * }
4569
+ * Ideally we have access to the original StreamRenderView and can call view.updateScalingMode() and do not need to recreate the stream view.
4570
+ * However, to support backwards compat we cannot guarantee this. If we don't have access to the original StreamRenderView we need to dispose
4571
+ * the old view and create a new one.
4291
4572
  *
4292
- * // If not cancelled, continue. The most common scenario is setting some
4293
- * // state variable from the parent component.
4294
- * setCostlyValue(costlyBlockingCallReturn)
4295
- * });
4296
- *
4297
- * // There can be many reasons to cancel the task.
4298
- * // In this example, the task is canceled before the useEffect runs again.
4299
- * // Strictly speaking this is unnecessary because triggering another task
4300
- * // would automatically cancel previously triggered task.
4301
- * return () => {
4302
- * cancelFunc();
4303
- * }
4304
- * }, [someArg]);
4305
- * ```
4306
- */
4307
- const useCancellableTask = () => {
4308
- // Memoize all internal objects and returned values so that
4309
- // this hook returns referentially stable values on each render.
4310
- const cancelMarker = React.useMemo(() => {
4311
- return new CancelMarker();
4312
- }, []);
4313
- // Cancel any pending task when component unmounts.
4314
- React.useEffect(() => {
4315
- return cancelMarker.cancel;
4316
- },
4317
- // eslint-disable-next-line react-hooks/exhaustive-deps
4318
- []);
4319
- const response = React.useMemo(() => {
4320
- const trigger = (action) => {
4321
- const cancellable = cancelMarker.reset();
4322
- action(cancellable);
4323
- };
4324
- return [trigger, cancelMarker.cancel];
4325
- }, [cancelMarker]);
4326
- return response;
4327
- };
4328
- class CancelMarker {
4329
- constructor() {
4330
- this.cancellable = null;
4331
- this.cancel = () => {
4332
- if (this.cancellable) {
4333
- this.cancellable.cancelled = true;
4334
- this.cancellable = null;
4335
- }
4336
- };
4337
- this.reset = () => {
4338
- this.cancel();
4339
- this.cancellable = { cancelled: false };
4340
- return this.cancellable;
4341
- };
4342
- }
4343
- }
4344
-
4345
- // Copyright (c) Microsoft Corporation.
4346
- // Licensed under the MIT license.
4347
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4348
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4349
- return new (P || (P = Promise))(function (resolve, reject) {
4350
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4351
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4352
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4353
- step((generator = generator.apply(thisArg, _arguments || [])).next());
4354
- });
4355
- };
4356
- /**
4357
- * Helper hook to maintain the video stream lifecycle. This calls onCreateStreamView and onDisposeStreamView
4358
- * appropriately based on react lifecycle events and prop changes.
4359
- * This also handles calls to view.update* appropriately such as view.updateScalingMode().
4573
+ * Supporting both of these scenarios became too complex and fragile. When we introduce a breaking change this should be update to ensure that
4574
+ * onCreateStreamView _must_ return a view object with updateScalingMode and update logic in this hook to call view.updateScalingMode instead
4575
+ * of recreating the stream.
4576
+ *
4577
+ * @private
4360
4578
  */
4361
4579
  const useVideoStreamLifecycleMaintainer = (props) => {
4362
4580
  const { isMirrored, isScreenSharingOn, isStreamAvailable, onCreateStreamView, onDisposeStreamView, renderElementExists, scalingMode } = props;
4363
- // HANDLING CHANGES TO VIDEO VIEW OPTIONS
4364
- //
4365
- // When VideoViewOptions change two things may happen:
4366
- //
4367
- // 1. Just the scaling mode has changed and we have access to the original StreamRenderView
4368
- // - In this case we just need to call updateScalingMode on the view and do not need to recreate the stream view
4369
- // 2. isMirrored has changed, or scalingMode change and we don't have access to the original StreamRenderView
4370
- // - In this case we need to dispose the old view and create a new one
4371
- //
4372
- // For scenario 1, we hold onto a ref to the scalingMode that persists across renders. When VideoViewOptions.scalingMode
4373
- // differs from the persistent ref, we know to call updateScalingMode. We then subsequently update the ref to the new value for
4374
- // future renders.
4375
- //
4376
- // For scenario 2, we extract the VideoViewOptions.isMirrored to ensure any change to the isMirrored prop triggers the useEffect
4377
- // that recreates the stream view. We must also here add an extra check for when the scaling mode changes and we do not have
4378
- // access to the original StreamView (and hence cannot call updateScalingMode). When this happens we must also trigger the useEffect
4379
- // that recreates the stream view.
4380
- const [streamRendererResult, setStreamRendererResult] = React__default['default'].useState();
4381
- const scalingModeRef = React.useRef(scalingMode);
4382
- const hasScalingModeChanged = scalingModeRef.current !== scalingMode;
4383
- const updatingScalingModeDirectly = hasScalingModeChanged && !!streamRendererResult;
4384
- const [triggerRescale, cancelRescale] = useCancellableTask();
4385
- const [triggerCreateStreamView, cancelCreateStreamView] = useCancellableTask();
4386
- if (isStreamAvailable && renderElementExists && scalingMode && updatingScalingModeDirectly) {
4387
- triggerRescale((cancellable) => __awaiter$n(void 0, void 0, void 0, function* () {
4388
- streamRendererResult && (yield streamRendererResult.view.updateScalingMode(scalingMode));
4389
- if (cancellable.cancelled) {
4390
- return;
4391
- }
4392
- scalingModeRef.current = scalingMode;
4393
- }));
4394
- }
4395
- // scalingModeForUseEffect will trigger the useEffect to recreate the stream view only if the scaling mode has changed and
4396
- // we cannot call updateScalingMode on the view object directly. Otherwise it will be null to ensure the useEffect does not trigger
4397
- // when scaling mode changes.
4398
- const scalingModeForUseEffect = updatingScalingModeDirectly ? null : scalingMode;
4399
4581
  React.useEffect(() => {
4400
4582
  if (isStreamAvailable && !renderElementExists) {
4401
- triggerCreateStreamView((cancellable) => __awaiter$n(void 0, void 0, void 0, function* () {
4402
- const streamViewOptions = {
4403
- isMirrored: isMirrored,
4404
- scalingMode: scalingModeForUseEffect === null ? scalingModeRef.current : scalingModeForUseEffect
4405
- };
4406
- const streamRendererResult = yield (onCreateStreamView === null || onCreateStreamView === void 0 ? void 0 : onCreateStreamView(streamViewOptions));
4407
- // Avoid race condition where onDisposeStreamView is called before onCreateStreamView
4408
- // and setStreamRendererResult have completed
4409
- if (cancellable.cancelled) {
4410
- return;
4411
- }
4412
- streamRendererResult && setStreamRendererResult(streamRendererResult);
4413
- }));
4583
+ onCreateStreamView === null || onCreateStreamView === void 0 ? void 0 : onCreateStreamView({ isMirrored, scalingMode });
4414
4584
  }
4415
4585
  // Always clean up element to make tile up to date and be able to dispose correctly
4416
4586
  return () => {
4417
4587
  if (renderElementExists) {
4418
- cancelRescale();
4419
- cancelCreateStreamView();
4420
4588
  // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share
4421
4589
  if (!isScreenSharingOn) {
4422
4590
  onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();
@@ -4424,30 +4592,25 @@ const useVideoStreamLifecycleMaintainer = (props) => {
4424
4592
  }
4425
4593
  };
4426
4594
  }, [
4427
- cancelCreateStreamView,
4428
- cancelRescale,
4429
4595
  isMirrored,
4430
4596
  isScreenSharingOn,
4431
4597
  isStreamAvailable,
4432
4598
  onCreateStreamView,
4433
4599
  onDisposeStreamView,
4434
4600
  renderElementExists,
4435
- scalingModeForUseEffect,
4436
- triggerCreateStreamView
4601
+ scalingMode
4437
4602
  ]);
4438
4603
  // The execution order for above useEffect is onCreateRemoteStreamView =>(async time gap) RenderElement generated => element disposed => onDisposeRemoteStreamView
4439
4604
  // Element disposed could happen during async time gap, which still cause leaks for unused renderElement.
4440
4605
  // Need to do an entire cleanup when remoteTile gets disposed and make sure element gets correctly disposed
4441
4606
  React.useEffect(() => {
4442
4607
  return () => {
4443
- cancelRescale();
4444
- cancelCreateStreamView();
4445
4608
  // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share
4446
4609
  if (!isScreenSharingOn) {
4447
4610
  onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();
4448
4611
  }
4449
4612
  };
4450
- }, [cancelCreateStreamView, cancelRescale, isScreenSharingOn, onDisposeStreamView]);
4613
+ }, [isScreenSharingOn, onDisposeStreamView]);
4451
4614
  };
4452
4615
  /**
4453
4616
  * Extension of {@link useVideoStreamLifecycleMaintainer} specifically for local video streams
@@ -4597,7 +4760,7 @@ const DEFAULT_PERSONA_MIN_SIZE_PX = 32;
4597
4760
  const DefaultPlaceholder = (props) => {
4598
4761
  const { text, noVideoAvailableAriaLabel, coinSize, styles, hidePersonaDetails } = props;
4599
4762
  return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
4600
- React__default['default'].createElement(react.Persona, { styles: styles, coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '' })));
4763
+ React__default['default'].createElement(react.Persona, { styles: styles, coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: "white", "aria-label": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false })));
4601
4764
  };
4602
4765
  const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
4603
4766
  /**
@@ -4663,11 +4826,13 @@ const VideoTile = (props) => {
4663
4826
  * @internal
4664
4827
  */
4665
4828
  const _RemoteVideoTile = React__default['default'].memo((props) => {
4666
- const { isAvailable, isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
4829
+ const { isAvailable, isReceiving = true, // default to true to prevent any breaking change
4830
+ isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
4667
4831
  const remoteVideoStreamProps = React.useMemo(() => ({
4668
4832
  isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,
4669
4833
  isScreenSharingOn,
4670
4834
  isStreamAvailable: isAvailable,
4835
+ isStreamReceiving: isReceiving,
4671
4836
  onCreateRemoteStreamView,
4672
4837
  onDisposeRemoteStreamView,
4673
4838
  remoteParticipantId: userId,
@@ -4675,6 +4840,7 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
4675
4840
  scalingMode: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.scalingMode
4676
4841
  }), [
4677
4842
  isAvailable,
4843
+ isReceiving,
4678
4844
  isScreenSharingOn,
4679
4845
  onCreateRemoteStreamView,
4680
4846
  onDisposeRemoteStreamView,
@@ -4692,8 +4858,8 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
4692
4858
  // Returning `undefined` results in the placeholder with avatar being shown
4693
4859
  return undefined;
4694
4860
  }
4695
- return React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement });
4696
- }, [renderElement]);
4861
+ return React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving ? 'none' : 'loading' });
4862
+ }, [renderElement, isReceiving]);
4697
4863
  return (React__default['default'].createElement(VideoTile, { key: userId, userId: userId, renderElement: renderVideoStreamElement, displayName: displayName, onRenderPlaceholder: onRenderAvatar, isMuted: isMuted, isSpeaking: isSpeaking, showMuteIndicator: showMuteIndicator, showLabel: props.showLabel, personaMinSize: props.personaMinSize }));
4698
4864
  });
4699
4865
 
@@ -5084,7 +5250,10 @@ const LocalScreenShare = React__default['default'].memo((props) => {
5084
5250
  React__default['default'].createElement(react.Stack, { horizontal: true, verticalAlign: "center", className: screenSharingNotificationIconContainerStyle },
5085
5251
  React__default['default'].createElement(react.Icon, { iconName: "ControlButtonScreenShareStart", className: screenSharingNotificationIconStyle(theme) })),
5086
5252
  React__default['default'].createElement(react.Text, { className: screenSharingNotificationTextStyle, "aria-live": "polite" }, locale.strings.videoGallery.screenIsBeingSharedMessage))));
5087
- return (React__default['default'].createElement(VideoTile, { displayName: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName, isMuted: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.isMuted, onRenderPlaceholder: () => React__default['default'].createElement(React__default['default'].Fragment, null) }, localScreenSharingNotification));
5253
+ const displayName = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName)
5254
+ ? locale.strings.videoGallery.displayNamePlaceholder
5255
+ : localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName;
5256
+ return (React__default['default'].createElement(VideoTile, { displayName: displayName, isMuted: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.isMuted, onRenderPlaceholder: () => React__default['default'].createElement(React__default['default'].Fragment, null) }, localScreenSharingNotification));
5088
5257
  });
5089
5258
 
5090
5259
  // Copyright (c) Microsoft Corporation.
@@ -5103,7 +5272,7 @@ const loadingStyle = react.mergeStyles({
5103
5272
  * https://reactjs.org/docs/react-api.html#reactmemo
5104
5273
  */
5105
5274
  const RemoteScreenShare = React__default['default'].memo((props) => {
5106
- const { userId, displayName, isMuted, renderElement, onCreateRemoteStreamView, onDisposeRemoteStreamView } = props;
5275
+ const { userId, displayName, isMuted, renderElement, onCreateRemoteStreamView, onDisposeRemoteStreamView, isReceiving } = props;
5107
5276
  const locale = useLocale$1();
5108
5277
  if (!renderElement) {
5109
5278
  onCreateRemoteStreamView && onCreateRemoteStreamView(userId);
@@ -5119,7 +5288,7 @@ const RemoteScreenShare = React__default['default'].memo((props) => {
5119
5288
  participant: displayName
5120
5289
  })
5121
5290
  : '';
5122
- return (React__default['default'].createElement(VideoTile, { displayName: displayName, isMuted: isMuted, renderElement: renderElement ? React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement }) : undefined, onRenderPlaceholder: () => React__default['default'].createElement(LoadingSpinner, { loadingMessage: loadingMessage }) }));
5291
+ return (React__default['default'].createElement(VideoTile, { displayName: displayName, isMuted: isMuted, renderElement: renderElement ? (React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving ? 'none' : 'loading' })) : undefined, onRenderPlaceholder: () => React__default['default'].createElement(LoadingSpinner, { loadingMessage: loadingMessage }) }));
5123
5292
  });
5124
5293
  const LoadingSpinner = (props) => {
5125
5294
  return (React__default['default'].createElement(react.Stack, { verticalAlign: "center", className: loadingStyle },
@@ -5897,7 +6066,7 @@ const modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTil
5897
6066
  * @public
5898
6067
  */
5899
6068
  const VideoGallery = (props) => {
5900
- var _a, _b, _c;
6069
+ var _a, _b, _c, _d;
5901
6070
  const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps } = props;
5902
6071
  const ids = useIdentifiers();
5903
6072
  const theme = useTheme();
@@ -5948,8 +6117,9 @@ const VideoGallery = (props) => {
5948
6117
  const localVideoTileStyles = react.concatStyleSets(shouldFloatLocalVideo ? floatingLocalVideoTileStyle : {}, {
5949
6118
  root: { borderRadius: theme.effects.roundedCorner4 }
5950
6119
  }, styles === null || styles === void 0 ? void 0 : styles.localVideo);
6120
+ const initialsName = !localParticipant.displayName ? strings.displayNamePlaceholder : localParticipant.displayName;
5951
6121
  return (React__default['default'].createElement(react.Stack, { key: "local-video-tile-key", tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
5952
- React__default['default'].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: localParticipant.displayName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !(shouldFloatLocalVideo && isNarrow), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles })));
6122
+ React__default['default'].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !(shouldFloatLocalVideo && isNarrow), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles })));
5953
6123
  }, [
5954
6124
  isNarrow,
5955
6125
  localParticipant,
@@ -5966,12 +6136,13 @@ const VideoGallery = (props) => {
5966
6136
  strings.localVideoLabel,
5967
6137
  strings.localVideoMovementLabel,
5968
6138
  strings.localVideoSelectedDescription,
6139
+ strings.displayNamePlaceholder,
5969
6140
  styles === null || styles === void 0 ? void 0 : styles.localVideo,
5970
6141
  theme.effects.roundedCorner4
5971
6142
  ]);
5972
6143
  const defaultOnRenderVideoTile = React.useCallback((participant, isVideoParticipant) => {
5973
6144
  const remoteVideoStream = participant.videoStream;
5974
- return (React__default['default'].createElement(_RemoteVideoTile, Object.assign({ key: participant.userId }, participant, { onCreateRemoteStreamView: isVideoParticipant ? onCreateRemoteStreamView : undefined, onDisposeRemoteStreamView: isVideoParticipant ? onDisposeRemoteStreamView : undefined, isAvailable: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.isAvailable : false, renderElement: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.renderElement : undefined, remoteVideoViewOptions: isVideoParticipant ? remoteVideoViewOptions : undefined, onRenderAvatar: onRenderAvatar, showMuteIndicator: showMuteIndicator })));
6145
+ return (React__default['default'].createElement(_RemoteVideoTile, Object.assign({ key: participant.userId }, participant, { onCreateRemoteStreamView: isVideoParticipant ? onCreateRemoteStreamView : undefined, onDisposeRemoteStreamView: isVideoParticipant ? onDisposeRemoteStreamView : undefined, isAvailable: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.isAvailable : false, isReceiving: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.isReceiving : false, renderElement: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.renderElement : undefined, remoteVideoViewOptions: isVideoParticipant ? remoteVideoViewOptions : undefined, onRenderAvatar: onRenderAvatar, showMuteIndicator: showMuteIndicator })));
5975
6146
  }, [onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, onRenderAvatar, showMuteIndicator]);
5976
6147
  const videoTiles = onRenderRemoteVideoTile
5977
6148
  ? visibleVideoParticipants.current.map((participant) => onRenderRemoteVideoTile(participant))
@@ -6001,7 +6172,7 @@ const VideoGallery = (props) => {
6001
6172
  gridTiles.push(localVideoTile);
6002
6173
  }
6003
6174
  const localScreenShareStreamComponent = React__default['default'].createElement(LocalScreenShare, { localParticipant: localParticipant });
6004
- const remoteScreenShareComponent = screenShareParticipant && (React__default['default'].createElement(RemoteScreenShare, Object.assign({}, screenShareParticipant, { renderElement: (_c = screenShareParticipant.screenShareStream) === null || _c === void 0 ? void 0 : _c.renderElement, onCreateRemoteStreamView: onCreateRemoteStreamView, onDisposeRemoteStreamView: onDisposeRemoteStreamView })));
6175
+ const remoteScreenShareComponent = screenShareParticipant && (React__default['default'].createElement(RemoteScreenShare, Object.assign({}, screenShareParticipant, { renderElement: (_c = screenShareParticipant.screenShareStream) === null || _c === void 0 ? void 0 : _c.renderElement, onCreateRemoteStreamView: onCreateRemoteStreamView, onDisposeRemoteStreamView: onDisposeRemoteStreamView, isReceiving: (_d = screenShareParticipant.screenShareStream) === null || _d === void 0 ? void 0 : _d.isReceiving })));
6005
6176
  const horizontalGalleryPresent = horizontalGalleryTiles && horizontalGalleryTiles.length > 0;
6006
6177
  const layerHostId = reactHooks.useId('layerhost');
6007
6178
  return (React__default['default'].createElement("div", { "data-ui-id": ids.videoGallery, ref: containerRef, className: react.mergeStyles(videoGalleryOuterDivStyle, styles === null || styles === void 0 ? void 0 : styles.root) },
@@ -6162,14 +6333,6 @@ const participantsButtonMenuPropsStyle = {
6162
6333
  fontSize: '.75rem'
6163
6334
  }
6164
6335
  };
6165
- /**
6166
- * @private
6167
- */
6168
- const defaultParticipantListContainerStyle = {
6169
- root: {
6170
- maxHeight: '20rem'
6171
- }
6172
- };
6173
6336
  /**
6174
6337
  * Default styles for button flyout items
6175
6338
  *
@@ -6405,35 +6568,9 @@ const DevicesButton = (props) => {
6405
6568
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { menuProps: devicesButtonMenu, menuIconProps: { hidden: true }, onRenderIcon: onRenderIcon !== null && onRenderIcon !== void 0 ? onRenderIcon : onRenderOptionsIcon, strings: strings, labelKey: (_c = props.labelKey) !== null && _c !== void 0 ? _c : 'devicesButtonLabel' })));
6406
6569
  };
6407
6570
 
6408
- // Copyright (c) Microsoft Corporation.
6409
- /**
6410
- * @private
6411
- * Announcer component to maker aria announcements on actions
6412
- */
6413
- const Announcer = (props) => {
6414
- const { announcementString, ariaLive } = props;
6415
- return React__default['default'].createElement(react.Stack, { "aria-label": announcementString, "aria-live": ariaLive, styles: announcerStyles });
6416
- };
6417
- /**
6418
- * Styles to hide the announcer from view but still existing on the DOM tree it so that narration can happen.
6419
- */
6420
- const announcerStyles = {
6421
- root: {
6422
- position: 'absolute',
6423
- width: '1px',
6424
- height: '1px',
6425
- padding: 0,
6426
- margin: '-1px',
6427
- overflow: 'hidden',
6428
- clip: 'rect(0,0,0,0)',
6429
- whiteSpace: 'nowrap',
6430
- border: 0
6431
- }
6432
- };
6433
-
6434
6571
  // Copyright (c) Microsoft Corporation.
6435
6572
  // Licensed under the MIT license.
6436
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6573
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6437
6574
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6438
6575
  return new (P || (P = Promise))(function (resolve, reject) {
6439
6576
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6470,7 +6607,7 @@ const CameraButton = (props) => {
6470
6607
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
6471
6608
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
6472
6609
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
6473
- const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6610
+ const onToggleClick = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
6474
6611
  // Throttle click on camera, need to await onToggleCamera then allow another click
6475
6612
  if (onToggleCamera) {
6476
6613
  setWaitForCamera(true);
@@ -6602,7 +6739,7 @@ const lightThemeCallButtonStyles = {
6602
6739
 
6603
6740
  // Copyright (c) Microsoft Corporation.
6604
6741
  // Licensed under the MIT license.
6605
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6742
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6606
6743
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6607
6744
  return new (P || (P = Promise))(function (resolve, reject) {
6608
6745
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6619,23 +6756,31 @@ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments,
6619
6756
  * @public
6620
6757
  */
6621
6758
  const MicrophoneButton = (props) => {
6622
- var _a, _b, _c, _d, _e, _f, _g;
6759
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
6623
6760
  const { onToggleMicrophone } = props;
6624
6761
  const localeStrings = useLocale$1().strings.microphoneButton;
6625
6762
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6626
6763
  const [announcerString, setAnnouncerString] = React.useState(undefined);
6764
+ const isSplit = (_a = props.split) !== null && _a !== void 0 ? _a : props.enableDeviceSelectionMenu;
6765
+ // The button should be disabled when there are no mics. However if the button is a split button, if there are
6766
+ // no mics but there are speakers, then only the primary part of the button should be disabled to allow for
6767
+ // speaker change.
6768
+ const primaryDisabled = props.primaryDisabled || (isSplit && !((_b = props.microphones) === null || _b === void 0 ? void 0 : _b.length) ? true : undefined);
6769
+ const disabled = props.disabled ||
6770
+ (isSplit && !((_c = props.microphones) === null || _c === void 0 ? void 0 : _c.length) && !((_d = props.speakers) === null || _d === void 0 ? void 0 : _d.length)) ||
6771
+ (!isSplit && props.microphones && ((_e = props.microphones) === null || _e === void 0 ? void 0 : _e.length) === 0);
6627
6772
  const onRenderMicOnIcon = () => {
6628
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonMicOn" });
6773
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOn" });
6629
6774
  };
6630
6775
  const onRenderMicOffIcon = () => {
6631
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonMicOff" });
6776
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOff" });
6632
6777
  };
6633
6778
  const isMicOn = props.checked;
6634
6779
  const splitButtonAriaString = isMicOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;
6635
6780
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
6636
6781
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
6637
6782
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
6638
- const onToggleClick = React.useCallback(() => __awaiter$l(void 0, void 0, void 0, function* () {
6783
+ const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6639
6784
  if (onToggleMicrophone) {
6640
6785
  try {
6641
6786
  yield onToggleMicrophone();
@@ -6649,9 +6794,9 @@ const MicrophoneButton = (props) => {
6649
6794
  }), [isMicOn, onToggleMicrophone, toggleAnnouncerString]);
6650
6795
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
6651
6796
  React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
6652
- React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { onClick: props.onToggleMicrophone ? onToggleClick : props.onClick, onRenderOnIcon: (_a = props.onRenderOnIcon) !== null && _a !== void 0 ? _a : onRenderMicOnIcon, onRenderOffIcon: (_b = props.onRenderOffIcon) !== null && _b !== void 0 ? _b : onRenderMicOffIcon, strings: strings, labelKey: (_c = props.labelKey) !== null && _c !== void 0 ? _c : 'microphoneButtonLabel', menuProps: (_d = props.menuProps) !== null && _d !== void 0 ? _d : (props.enableDeviceSelectionMenu
6653
- ? generateDefaultDeviceMenuProps(Object.assign(Object.assign({}, props), { styles: (_e = props.styles) === null || _e === void 0 ? void 0 : _e.menuStyles }), strings)
6654
- : undefined), menuIconProps: ((_f = props.menuIconProps) !== null && _f !== void 0 ? _f : !props.enableDeviceSelectionMenu) ? { hidden: true } : undefined, split: (_g = props.split) !== null && _g !== void 0 ? _g : props.enableDeviceSelectionMenu, "aria-roledescription": props.enableDeviceSelectionMenu ? strings.microphoneButtonSplitRoleDescription : undefined, splitButtonAriaLabel: props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined }))));
6797
+ React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { onClick: props.onToggleMicrophone ? onToggleClick : props.onClick, onRenderOnIcon: (_f = props.onRenderOnIcon) !== null && _f !== void 0 ? _f : onRenderMicOnIcon, onRenderOffIcon: (_g = props.onRenderOffIcon) !== null && _g !== void 0 ? _g : onRenderMicOffIcon, strings: strings, labelKey: (_h = props.labelKey) !== null && _h !== void 0 ? _h : 'microphoneButtonLabel', menuProps: (_j = props.menuProps) !== null && _j !== void 0 ? _j : (props.enableDeviceSelectionMenu
6798
+ ? generateDefaultDeviceMenuProps(Object.assign(Object.assign({}, props), { styles: (_k = props.styles) === null || _k === void 0 ? void 0 : _k.menuStyles }), strings)
6799
+ : undefined), menuIconProps: ((_l = props.menuIconProps) !== null && _l !== void 0 ? _l : !props.enableDeviceSelectionMenu) ? { hidden: true } : undefined, split: (_m = props.split) !== null && _m !== void 0 ? _m : props.enableDeviceSelectionMenu, "aria-roledescription": props.enableDeviceSelectionMenu ? strings.microphoneButtonSplitRoleDescription : undefined, splitButtonAriaLabel: props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined, disabled: disabled, primaryDisabled: primaryDisabled }))));
6655
6800
  };
6656
6801
 
6657
6802
  // Copyright (c) Microsoft Corporation.
@@ -6668,7 +6813,7 @@ const MicrophoneButton = (props) => {
6668
6813
  */
6669
6814
  const ParticipantsButton = (props) => {
6670
6815
  var _a, _b, _c, _d;
6671
- const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems } = props;
6816
+ const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
6672
6817
  const onRenderPeopleIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonParticipants" }));
6673
6818
  const ids = useIdentifiers();
6674
6819
  const onMuteAllCallback = React.useCallback(() => {
@@ -6678,7 +6823,7 @@ const ParticipantsButton = (props) => {
6678
6823
  }, [onMuteAll]);
6679
6824
  const defaultParticipantList = React.useCallback(() => {
6680
6825
  var _a;
6681
- return (React__default['default'].createElement(ParticipantList, { participants: participants, myUserId: myUserId, excludeMe: excludeMe, onRenderParticipant: onRenderParticipant, onRenderAvatar: onRenderAvatar, onRemoveParticipant: onRemoveParticipant, onFetchParticipantMenuItems: onFetchParticipantMenuItems, styles: react.merge(defaultParticipantListContainerStyle, (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles) }));
6826
+ return (React__default['default'].createElement(ParticipantList, { participants: participants, myUserId: myUserId, excludeMe: excludeMe, onRenderParticipant: onRenderParticipant, onRenderAvatar: onRenderAvatar, onRemoveParticipant: onRemoveParticipant, onFetchParticipantMenuItems: onFetchParticipantMenuItems, styles: (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles, showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
6682
6827
  }, [
6683
6828
  excludeMe,
6684
6829
  myUserId,
@@ -6687,7 +6832,8 @@ const ParticipantsButton = (props) => {
6687
6832
  onRenderParticipant,
6688
6833
  participants,
6689
6834
  (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles,
6690
- onFetchParticipantMenuItems
6835
+ onFetchParticipantMenuItems,
6836
+ showParticipantOverflowTooltip
6691
6837
  ]);
6692
6838
  const onCopyCallback = React.useCallback(() => {
6693
6839
  if (callInvitationURL) {
@@ -6770,6 +6916,9 @@ const ParticipantsButton = (props) => {
6770
6916
  maxWidth: '100%'
6771
6917
  }
6772
6918
  },
6919
+ style: {
6920
+ maxHeight: '20rem'
6921
+ },
6773
6922
  // Disable dismiss on resize to work around a couple Fluent UI bugs
6774
6923
  // See reasoning in the props for the parent menu.
6775
6924
  preventDismissOnResize: true
@@ -6986,10 +7135,10 @@ const DrawerContentContainer = (props) => {
6986
7135
  const theme = react.useTheme();
6987
7136
  const backgroundColor = theme.palette.white;
6988
7137
  const borderRadius = theme.effects.roundedCorner4;
6989
- const rootStyles = react.mergeStyles(containerStyles$1(backgroundColor, borderRadius), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
7138
+ const rootStyles = react.mergeStyles(containerStyles$2(backgroundColor, borderRadius), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
6990
7139
  return React__default['default'].createElement(react.Stack, { className: rootStyles }, props.children);
6991
7140
  };
6992
- const containerStyles$1 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
7141
+ const containerStyles$2 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
6993
7142
 
6994
7143
  // Copyright (c) Microsoft Corporation.
6995
7144
  /**
@@ -7318,6 +7467,262 @@ function determineStates(previous, current) {
7318
7467
  }
7319
7468
  }
7320
7469
 
7470
+ // Copyright (c) Microsoft Corporation.
7471
+ // Licensed under the MIT license.
7472
+ /**
7473
+ * @private
7474
+ */
7475
+ const containerStyles$1 = (theme) => {
7476
+ return {
7477
+ maxWidth: '16rem',
7478
+ padding: '1.25rem',
7479
+ margin: '1.5rem',
7480
+ textAlign: 'center',
7481
+ background: `${theme.palette.white}`,
7482
+ borderRadius: '0.75rem'
7483
+ };
7484
+ };
7485
+ /**
7486
+ * @private
7487
+ */
7488
+ const buttonStyles = (theme) => ({
7489
+ root: {
7490
+ background: 'none',
7491
+ border: 'none',
7492
+ borderRadius: 0,
7493
+ width: '100%',
7494
+ padding: '1.875rem',
7495
+ minWidth: 0,
7496
+ minHeight: 0
7497
+ }
7498
+ });
7499
+ /**
7500
+ * @private
7501
+ */
7502
+ const primaryContentStyles = (theme) => {
7503
+ return {
7504
+ fontSize: '1.25rem',
7505
+ fontWeight: 600,
7506
+ color: `${theme.palette.neutralPrimary}`
7507
+ };
7508
+ };
7509
+ /**
7510
+ * @private
7511
+ */
7512
+ const textFieldStyles = (theme) => ({
7513
+ field: {
7514
+ padding: 0,
7515
+ textAlign: 'center',
7516
+ fontSize: '0.875rem'
7517
+ },
7518
+ root: {
7519
+ backgroundColor: `${theme.palette.neutralLighter}`,
7520
+ borderRadius: '0.125rem',
7521
+ marginBottom: '0.625rem'
7522
+ },
7523
+ fieldGroup: {
7524
+ border: 'none',
7525
+ backgroundColor: `${theme.palette.neutralLighter}`
7526
+ },
7527
+ errorMessage: {
7528
+ color: theme.semanticColors.errorText
7529
+ }
7530
+ });
7531
+ /**
7532
+ * @private
7533
+ */
7534
+ const secondaryContentStyles = (theme) => {
7535
+ return {
7536
+ fontSize: '0.625rem',
7537
+ color: `${theme.palette.neutralSecondary}`,
7538
+ fontWeight: 400,
7539
+ margin: '0.125rem',
7540
+ minHeight: '0.75rem'
7541
+ };
7542
+ };
7543
+
7544
+ // Copyright (c) Microsoft Corporation.
7545
+ // Licensed under the MIT license.
7546
+ /**
7547
+ * @private
7548
+ */
7549
+ const formatPhoneNumber = (value) => {
7550
+ // if input value is falsy eg if the user deletes the input, then just return
7551
+ if (!value) {
7552
+ return value;
7553
+ }
7554
+ // clean the input for any non-digit values.
7555
+ let phoneNumber = value.replace(/[^\d*#+]/g, '');
7556
+ // if phone number starts with 1, format like 1 (xxx)xxx-xxxx.
7557
+ // if phone number starts with +, we format like +x (xxx)xxx-xxxx.
7558
+ // For now we are only supporting NA phone number formatting with country code +x
7559
+ // first we chop off the countrycode then we add it on when returning
7560
+ let countryCodeNA = '';
7561
+ if (phoneNumber[0] === '1') {
7562
+ countryCodeNA = '1 ';
7563
+ phoneNumber = phoneNumber.slice(1, phoneNumber.length);
7564
+ }
7565
+ else if (phoneNumber[0] === '+') {
7566
+ countryCodeNA = phoneNumber.slice(0, 2) + ' ';
7567
+ phoneNumber = phoneNumber.slice(2, phoneNumber.length);
7568
+ }
7569
+ // phoneNumberLength is used to know when to apply our formatting for the phone number
7570
+ const phoneNumberLength = phoneNumber.length;
7571
+ // we need to return the value with no formatting if its less then four digits
7572
+ // this is to avoid weird behavior that occurs if you format the area code too early
7573
+ // if phoneNumberLength is greater than 10 we don't do any formatting
7574
+ if (phoneNumberLength < 4 || phoneNumberLength > 10) {
7575
+ // no formatting in this case, remove ' ' behind countrycode
7576
+ return countryCodeNA.replace(' ', '') + phoneNumber;
7577
+ }
7578
+ // if phoneNumberLength is greater than 4 and less the 7 we start to return
7579
+ // the formatted number
7580
+ if (phoneNumberLength < 7) {
7581
+ return `${countryCodeNA}(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;
7582
+ }
7583
+ // finally, if the phoneNumberLength is greater then seven, we add the last
7584
+ // bit of formatting and return it.
7585
+ return `${countryCodeNA}(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, phoneNumber.length)}`;
7586
+ };
7587
+
7588
+ // Copyright (c) Microsoft Corporation.
7589
+ /* @conditional-compile-remove(dialpad) */
7590
+ const DialpadButton = (props) => {
7591
+ var _a, _b, _c, _d;
7592
+ const theme = react.useTheme();
7593
+ return (React__default['default'].createElement(react.DefaultButton, { "data-test-id": `dialpad-button-${props.index}`, onClick: () => {
7594
+ props.onClick(props.primaryContent, props.index);
7595
+ }, styles: react.concatStyleSets(buttonStyles(), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.button) },
7596
+ React__default['default'].createElement(react.Stack, null,
7597
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(primaryContentStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.primaryContent) }, props.primaryContent),
7598
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(secondaryContentStyles(theme), (_c = props.styles) === null || _c === void 0 ? void 0 : _c.secondaryContent) }, (_d = props.secondaryContent) !== null && _d !== void 0 ? _d : ' '))));
7599
+ };
7600
+ /* @conditional-compile-remove(dialpad) */
7601
+ const dialPadButtonsDefault = [
7602
+ [
7603
+ { primaryContent: '1' },
7604
+ { primaryContent: '2', secondaryContent: 'ABC' },
7605
+ { primaryContent: '3', secondaryContent: 'DEF' }
7606
+ ],
7607
+ [
7608
+ { primaryContent: '4', secondaryContent: 'GHI' },
7609
+ { primaryContent: '5', secondaryContent: 'JKL' },
7610
+ { primaryContent: '6', secondaryContent: 'MNO' }
7611
+ ],
7612
+ [
7613
+ { primaryContent: '7', secondaryContent: 'PQRS' },
7614
+ { primaryContent: '8', secondaryContent: 'TUV' },
7615
+ { primaryContent: '9', secondaryContent: 'WXYZ' }
7616
+ ],
7617
+ [{ primaryContent: '*' }, { primaryContent: '0', secondaryContent: '+' }, { primaryContent: '#' }]
7618
+ ];
7619
+ /* @conditional-compile-remove(dialpad) */
7620
+ const DtmfTones = [
7621
+ 'Num1',
7622
+ 'Num2',
7623
+ 'Num3',
7624
+ 'Num4',
7625
+ 'Num5',
7626
+ 'Num6',
7627
+ 'Num7',
7628
+ 'Num8',
7629
+ 'Num9',
7630
+ 'Star',
7631
+ 'Num0',
7632
+ 'Pound'
7633
+ ];
7634
+ /* @conditional-compile-remove(dialpad) */
7635
+ const DialpadContainer = (props) => {
7636
+ var _a, _b;
7637
+ const theme = react.useTheme();
7638
+ const [textValue, setTextValue] = React.useState('');
7639
+ const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange } = props;
7640
+ const onClickDialpad = (input, index) => {
7641
+ setTextValue(textValue + input);
7642
+ if (onSendDtmfTone) {
7643
+ onSendDtmfTone(DtmfTones[index]);
7644
+ }
7645
+ if (onClickDialpadButton) {
7646
+ onClickDialpadButton(input, index);
7647
+ }
7648
+ if (onChange) {
7649
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(textValue + input) : formatPhoneNumber(textValue + input));
7650
+ }
7651
+ };
7652
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7653
+ const setText = (e) => {
7654
+ setTextValue(e.target.value);
7655
+ };
7656
+ // comment out the following line for now to disable customization for dialpad content
7657
+ // const dialpadButtonsContent = props.dialpadButtons ?? dialPadButtonsDefault;
7658
+ return (React__default['default'].createElement("div", { className: react.mergeStyles(containerStyles$1(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root), "data-test-id": "dialpadContainer" },
7659
+ React__default['default'].createElement(react.TextField, { styles: react.concatStyleSets(textFieldStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.textField), value: onDisplayDialpadInput ? onDisplayDialpadInput(textValue) : formatPhoneNumber(textValue),
7660
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7661
+ onChange: (e) => {
7662
+ setText(e);
7663
+ if (onChange) {
7664
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(e.target.value) : formatPhoneNumber(e.target.value));
7665
+ }
7666
+ }, placeholder: props.placeholderText, "data-test-id": "dialpad-input" }),
7667
+ React__default['default'].createElement(react.FocusZone, null, dialPadButtonsDefault.map((rows, rowIndex) => {
7668
+ return (React__default['default'].createElement(react.Stack, { horizontal: true, key: `row_${rowIndex}`, horizontalAlign: "stretch" }, rows.map((button, columnIndex) => (React__default['default'].createElement(DialpadButton, { key: `button_${columnIndex}`,
7669
+ /* row index = 0
7670
+ columnIndex: (0,1,2) => (0,1,2)
7671
+ row index = 1
7672
+ columnIndex: (0,1,2)=> (3,4,5)
7673
+ row index = 2
7674
+ columnIndex: (0,1,2)=> (6,7,8)
7675
+ row index = 3
7676
+ columnIndex: (0,1,2)=> (9,10,11)
7677
+ columnIndex + rowIndex*rows.length calculates the corresponding index for each button
7678
+ dialpad index:
7679
+ 0 1 2
7680
+ 3 4 5
7681
+ 6 7 8
7682
+ 9 10 11
7683
+ then use this index to locate the corresponding dtmf tones
7684
+ DtmfTones[index]
7685
+ */
7686
+ index: columnIndex + rowIndex * rows.length, primaryContent: button.primaryContent, secondaryContent: button.secondaryContent, styles: props.styles, onClick: onClickDialpad })))));
7687
+ }))));
7688
+ };
7689
+ /**
7690
+ * A component to allow users to enter phone number through clicking on dialpad/using keyboard
7691
+ * It will return empty component for stable builds
7692
+ *
7693
+ * @beta
7694
+ */
7695
+ const Dialpad = (props) => {
7696
+ /* @conditional-compile-remove(dialpad) */
7697
+ const localeStrings = useLocale$1().strings.dialpad;
7698
+ /* @conditional-compile-remove(dialpad) */
7699
+ const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
7700
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
7701
+ /* @conditional-compile-remove(dialpad) */
7702
+ React__default['default'].createElement(DialpadContainer, Object.assign({ placeholderText: strings.placeholderText }, props))));
7703
+ };
7704
+
7705
+ // Copyright (c) Microsoft Corporation.
7706
+ /**
7707
+ * a button to hold or resume a ongoing call.
7708
+ *
7709
+ * Can be used with {@link ControlBar}
7710
+ *
7711
+ * @param props - properties for the hold button.
7712
+ * @returns
7713
+ * @beta
7714
+ */
7715
+ const HoldButton = (props) => {
7716
+ const { onToggleHold, strings } = props;
7717
+ const onRenderHoldIcon = () => {
7718
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "HoldCall" });
7719
+ };
7720
+ const onRenderResumeIcon = () => {
7721
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ResumeCall" });
7722
+ };
7723
+ return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { strings: strings, onClick: onToggleHold !== null && onToggleHold !== void 0 ? onToggleHold : props.onClick, onRenderOnIcon: onRenderResumeIcon, onRenderOffIcon: onRenderHoldIcon })));
7724
+ };
7725
+
7321
7726
  // Copyright (c) Microsoft Corporation.
7322
7727
  // Licensed under the MIT license.
7323
7728
  /**
@@ -7385,6 +7790,8 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
7385
7790
  return {
7386
7791
  id: stream.id,
7387
7792
  isAvailable: stream.isAvailable,
7793
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
7794
+ isReceiving: stream.isReceiving,
7388
7795
  isMirrored: (_a = stream.view) === null || _a === void 0 ? void 0 : _a.isMirrored,
7389
7796
  renderElement: (_b = stream.view) === null || _b === void 0 ? void 0 : _b.target
7390
7797
  };
@@ -7412,6 +7819,7 @@ const videoGallerySelector = reselect.createSelector([
7412
7819
  const localVideoStream = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find((i) => i.mediaStreamType === 'Video');
7413
7820
  const dominantSpeakerIds = _dominantSpeakersWithFlatId(dominantSpeakers);
7414
7821
  dominantSpeakerIds === null || dominantSpeakerIds === void 0 ? void 0 : dominantSpeakerIds.forEach((speaker, idx) => (idx));
7822
+ const noRemoteParticipants = [];
7415
7823
  return {
7416
7824
  screenShareParticipant: screenShareRemoteParticipant
7417
7825
  ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.displayName)
@@ -7427,46 +7835,64 @@ const videoGallerySelector = reselect.createSelector([
7427
7835
  renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target
7428
7836
  }
7429
7837
  },
7430
- remoteParticipants: _videoGalleryRemoteParticipantsMemo(remoteParticipants),
7838
+ remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline$2(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)),
7431
7839
  dominantSpeakers: dominantSpeakerIds
7432
7840
  };
7433
7841
  });
7842
+ const updateUserDisplayNamesTrampoline$2 = (remoteParticipants) => {
7843
+ /* @conditional-compile-remove(PSTN-calls) */
7844
+ return _updateUserDisplayNames(remoteParticipants);
7845
+ };
7846
+
7847
+ // Copyright (c) Microsoft Corporation.
7848
+ /**
7849
+ * @private
7850
+ */
7851
+ const memoizedConvertAllremoteParticipants = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking) => {
7852
+ return convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking);
7853
+ });
7854
+ const convertRemoteParticipantToParticipantListParticipant = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking) => {
7855
+ const identifier = fromFlatCommunicationIdentifier(userId);
7856
+ return {
7857
+ userId,
7858
+ displayName,
7859
+ state,
7860
+ isMuted,
7861
+ isScreenSharing,
7862
+ isSpeaking,
7863
+ // ACS users can not remove Teams users.
7864
+ // Removing unknown types of users is undefined.
7865
+ isRemovable: communicationCommon.getIdentifierKind(identifier).kind === 'communicationUser' || communicationCommon.getIdentifierKind(identifier).kind === 'phoneNumber'
7866
+ };
7867
+ };
7434
7868
 
7435
7869
  // Copyright (c) Microsoft Corporation.
7436
7870
  const convertRemoteParticipantsToParticipantListParticipants = (remoteParticipants) => {
7437
- return (remoteParticipants
7438
- // temporarily hiding lobby participants in ACS clients till we can admit users through ACS clients
7439
- .filter((participant) => {
7440
- return participant.state !== 'InLobby';
7441
- })
7442
- .map((participant) => {
7443
- const isScreenSharing = Object.values(participant.videoStreams).some((videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable);
7444
- return {
7445
- userId: toFlatCommunicationIdentifier(participant.identifier),
7446
- displayName: participant.displayName,
7447
- state: participant.state,
7448
- isMuted: participant.isMuted,
7449
- isScreenSharing: isScreenSharing,
7450
- isSpeaking: participant.isSpeaking,
7451
- // ACS users can not remove Teams users.
7452
- // Removing phone numbers or unknown types of users is undefined.
7453
- isRemovable: communicationCommon.getIdentifierKind(participant.identifier).kind === 'communicationUser'
7454
- };
7455
- })
7456
- .sort((a, b) => {
7457
- var _a, _b;
7458
- const nameA = ((_a = a.displayName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
7459
- const nameB = ((_b = b.displayName) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
7460
- if (nameA < nameB) {
7461
- return -1;
7462
- }
7463
- else if (nameA > nameB) {
7464
- return 1;
7465
- }
7466
- else {
7467
- return 0;
7468
- }
7469
- }));
7871
+ return memoizedConvertAllremoteParticipants((memoizeFn) => {
7872
+ return (remoteParticipants
7873
+ // temporarily hiding lobby participants in ACS clients till we can admit users through ACS clients
7874
+ .filter((participant) => {
7875
+ return participant.state !== 'InLobby';
7876
+ })
7877
+ .map((participant) => {
7878
+ const isScreenSharing = Object.values(participant.videoStreams).some((videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable);
7879
+ return memoizeFn(toFlatCommunicationIdentifier(participant.identifier), participant.displayName, participant.state, participant.isMuted, isScreenSharing, participant.isSpeaking);
7880
+ })
7881
+ .sort((a, b) => {
7882
+ var _a, _b;
7883
+ const nameA = ((_a = a.displayName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
7884
+ const nameB = ((_b = b.displayName) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
7885
+ if (nameA < nameB) {
7886
+ return -1;
7887
+ }
7888
+ else if (nameA > nameB) {
7889
+ return 1;
7890
+ }
7891
+ else {
7892
+ return 0;
7893
+ }
7894
+ }));
7895
+ });
7470
7896
  };
7471
7897
  /**
7472
7898
  * Selects data that drives {@link ParticipantList} component.
@@ -7475,7 +7901,7 @@ const convertRemoteParticipantsToParticipantListParticipants = (remoteParticipan
7475
7901
  */
7476
7902
  const participantListSelector = reselect.createSelector([getIdentifier, getDisplayName$2, getRemoteParticipants$1, getIsScreenSharingOn, getIsMuted], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted) => {
7477
7903
  const participants = remoteParticipants
7478
- ? convertRemoteParticipantsToParticipantListParticipants(Object.values(remoteParticipants))
7904
+ ? convertRemoteParticipantsToParticipantListParticipants(updateUserDisplayNamesTrampoline$1(Object.values(remoteParticipants)))
7479
7905
  : [];
7480
7906
  participants.push({
7481
7907
  userId: userId,
@@ -7491,6 +7917,10 @@ const participantListSelector = reselect.createSelector([getIdentifier, getDispl
7491
7917
  myUserId: userId
7492
7918
  };
7493
7919
  });
7920
+ const updateUserDisplayNamesTrampoline$1 = (remoteParticipants) => {
7921
+ /* @conditional-compile-remove(PSTN-calls) */
7922
+ return _updateUserDisplayNames(remoteParticipants);
7923
+ };
7494
7924
 
7495
7925
  // Copyright (c) Microsoft Corporation.
7496
7926
  /**
@@ -7587,7 +8017,7 @@ const useSelector$4 = (selector, selectorProps) => {
7587
8017
  * @public
7588
8018
  */
7589
8019
  const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagnostics, getDeviceManager$1], (latestErrors, diagnostics, deviceManager) => {
7590
- var _a, _b, _c, _d, _e;
8020
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
7591
8021
  // The order in which the errors are returned is significant: The `ErrorBar` shows errors on the UI in that order.
7592
8022
  // There are several options for the ordering:
7593
8023
  // - Sorted by when the errors happened (latest first / oldest first).
@@ -7601,33 +8031,52 @@ const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagno
7601
8031
  ((_b = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _b === void 0 ? void 0 : _b.value) === communicationCalling.DiagnosticQuality.Poor) {
7602
8032
  activeErrorMessages.push({ type: 'callNetworkQualityLow' });
7603
8033
  }
7604
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) {
8034
+ if (((_c = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) === null || _c === void 0 ? void 0 : _c.value) === true) {
7605
8035
  activeErrorMessages.push({ type: 'callNoSpeakerFound' });
7606
8036
  }
7607
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noMicrophoneDevicesEnumerated) {
8037
+ if (((_d = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noMicrophoneDevicesEnumerated) === null || _d === void 0 ? void 0 : _d.value) === true) {
7608
8038
  activeErrorMessages.push({ type: 'callNoMicrophoneFound' });
7609
8039
  }
7610
- if (((_c = deviceManager.deviceAccess) === null || _c === void 0 ? void 0 : _c.audio) === false || (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneNotFunctioning)) {
8040
+ if (((_e = deviceManager.deviceAccess) === null || _e === void 0 ? void 0 : _e.audio) === false) {
7611
8041
  activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });
7612
8042
  }
7613
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneMuteUnexpectedly) {
7614
- activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });
7615
- }
7616
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphonePermissionDenied) {
8043
+ if (((_f = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphonePermissionDenied) === null || _f === void 0 ? void 0 : _f.value) === true) {
7617
8044
  activeErrorMessages.push({ type: 'callMacOsMicrophoneAccessDenied' });
7618
8045
  }
7619
- if (((_d = deviceManager.deviceAccess) === null || _d === void 0 ? void 0 : _d.video) === false) {
8046
+ const microphoneMuteUnexpectedlyDiagnostic = (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneMuteUnexpectedly) || (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneNotFunctioning);
8047
+ if (microphoneMuteUnexpectedlyDiagnostic) {
8048
+ if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
8049
+ // Inform the user that microphone stopped working and inform them to start microphone again
8050
+ activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });
8051
+ }
8052
+ else if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
8053
+ // Inform the user that microphone recovered
8054
+ activeErrorMessages.push({ type: 'callMicrophoneUnmutedBySystem' });
8055
+ }
8056
+ }
8057
+ const cameraStoppedUnexpectedlyDiagnostic = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraStoppedUnexpectedly;
8058
+ if (cameraStoppedUnexpectedlyDiagnostic) {
8059
+ if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
8060
+ // Inform the user that camera stopped working and inform them to start video again
8061
+ activeErrorMessages.push({ type: 'callVideoStoppedBySystem' });
8062
+ }
8063
+ else if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
8064
+ // Inform the user that camera recovered
8065
+ activeErrorMessages.push({ type: 'callVideoRecoveredBySystem' });
8066
+ }
8067
+ }
8068
+ if (((_g = deviceManager.deviceAccess) === null || _g === void 0 ? void 0 : _g.video) === false) {
7620
8069
  activeErrorMessages.push({ type: 'callCameraAccessDenied' });
7621
8070
  }
7622
8071
  else {
7623
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraFreeze) {
8072
+ if (((_h = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraFreeze) === null || _h === void 0 ? void 0 : _h.value) === true) {
7624
8073
  activeErrorMessages.push({ type: 'callCameraAlreadyInUse' });
7625
8074
  }
7626
8075
  }
7627
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraPermissionDenied) {
8076
+ if (((_j = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraPermissionDenied) === null || _j === void 0 ? void 0 : _j.value) === true) {
7628
8077
  activeErrorMessages.push({ type: 'callMacOsCameraAccessDenied' });
7629
8078
  }
7630
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) {
8079
+ if (((_k = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) === null || _k === void 0 ? void 0 : _k.value) === true) {
7631
8080
  activeErrorMessages.push({ type: 'callMacOsScreenShareAccessDenied' });
7632
8081
  }
7633
8082
  // Prefer to show errors with privacy implications.
@@ -7636,7 +8085,7 @@ const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagno
7636
8085
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopScreenSharing', 'stopScreenShareGeneric');
7637
8086
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'startVideoGeneric');
7638
8087
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.unmute', 'unmuteGeneric');
7639
- if (((_e = latestErrors['CallAgent.join']) === null || _e === void 0 ? void 0 : _e.message) === 'CallAgent.join: Invalid meeting link') {
8088
+ if (((_l = latestErrors['CallAgent.join']) === null || _l === void 0 ? void 0 : _l.message) === 'CallAgent.join: Invalid meeting link') {
7640
8089
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallInvalidMeetingLink');
7641
8090
  }
7642
8091
  else {
@@ -7669,9 +8118,18 @@ const emptySelector = () => ({});
7669
8118
  */
7670
8119
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
7671
8120
  const getSelector$1 = (component) => {
8121
+ /* @conditional-compile-remove(PSTN-calls) */
8122
+ if (component === HoldButton) {
8123
+ return findConditionalCompiledSelector(component);
8124
+ }
7672
8125
  return findSelector$1(component);
7673
8126
  };
7674
8127
  const findSelector$1 = (component) => {
8128
+ /* @conditional-compile-remove(dialpad) */
8129
+ // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector
8130
+ if (component === Dialpad) {
8131
+ return emptySelector;
8132
+ }
7675
8133
  switch (component) {
7676
8134
  case VideoGallery:
7677
8135
  return videoGallerySelector;
@@ -7694,10 +8152,17 @@ const findSelector$1 = (component) => {
7694
8152
  }
7695
8153
  return undefined;
7696
8154
  };
8155
+ /* @conditional-compile-remove(PSTN-calls) */
8156
+ const findConditionalCompiledSelector = (component) => {
8157
+ switch (component) {
8158
+ case HoldButton:
8159
+ return holdButtonSelector;
8160
+ }
8161
+ };
7697
8162
 
7698
8163
  // Copyright (c) Microsoft Corporation.
7699
8164
  // Licensed under the MIT license.
7700
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8165
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7701
8166
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7702
8167
  return new (P || (P = Promise))(function (resolve, reject) {
7703
8168
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7720,35 +8185,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
7720
8185
  let messageIterator = undefined;
7721
8186
  let readReceiptIterator = undefined;
7722
8187
  return {
7723
- onSendMessage: (content, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8188
+ onSendMessage: (content, options) => __awaiter$l(void 0, void 0, void 0, function* () {
7724
8189
  const sendMessageRequest = {
7725
8190
  content,
7726
8191
  senderDisplayName: chatClient.getState().displayName
7727
8192
  };
7728
8193
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
7729
8194
  }),
7730
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8195
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$l(void 0, void 0, void 0, function* () {
7731
8196
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
7732
8197
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
7733
8198
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
7734
8199
  }),
7735
- onDeleteMessage: (messageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8200
+ onDeleteMessage: (messageId) => __awaiter$l(void 0, void 0, void 0, function* () {
7736
8201
  yield chatThreadClient.deleteMessage(messageId);
7737
8202
  }),
7738
8203
  // This handler is designed for chatThread to consume
7739
- onMessageSeen: (chatMessageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8204
+ onMessageSeen: (chatMessageId) => __awaiter$l(void 0, void 0, void 0, function* () {
7740
8205
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
7741
8206
  }),
7742
- onTyping: () => __awaiter$k(void 0, void 0, void 0, function* () {
8207
+ onTyping: () => __awaiter$l(void 0, void 0, void 0, function* () {
7743
8208
  yield chatThreadClient.sendTypingNotification();
7744
8209
  }),
7745
- onRemoveParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
8210
+ onRemoveParticipant: (userId) => __awaiter$l(void 0, void 0, void 0, function* () {
7746
8211
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
7747
8212
  }),
7748
- updateThreadTopicName: (topicName) => __awaiter$k(void 0, void 0, void 0, function* () {
8213
+ updateThreadTopicName: (topicName) => __awaiter$l(void 0, void 0, void 0, function* () {
7749
8214
  yield chatThreadClient.updateTopic(topicName);
7750
8215
  }),
7751
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$k(void 0, void 0, void 0, function* () {
8216
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$l(void 0, void 0, void 0, function* () {
7752
8217
  var _a, _b, _c;
7753
8218
  if (messageIterator === undefined) {
7754
8219
  // Lazy definition so that errors in the method call are reported correctly.
@@ -8439,7 +8904,7 @@ const findSelector = (component) => {
8439
8904
 
8440
8905
  // Copyright (c) Microsoft Corporation.
8441
8906
  // Licensed under the MIT license.
8442
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8907
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8443
8908
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8444
8909
  return new (P || (P = Promise))(function (resolve, reject) {
8445
8910
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8488,10 +8953,10 @@ class ProxyDeviceManager {
8488
8953
  this.selectCamera = (videoDeviceInfo) => {
8489
8954
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
8490
8955
  };
8491
- this.videoDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8956
+ this.videoDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8492
8957
  this._context.setDeviceManagerCameras(dedupeById(yield this._deviceManager.getCameras()));
8493
8958
  });
8494
- this.audioDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8959
+ this.audioDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8495
8960
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
8496
8961
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
8497
8962
  });
@@ -8617,6 +9082,36 @@ class CallError extends Error {
8617
9082
  * @private
8618
9083
  */
8619
9084
  const callingStatefulLogger = logger.createClientLogger('communication-react:calling-stateful');
9085
+ /**
9086
+ * @private
9087
+ */
9088
+ var EventNames;
9089
+ (function (EventNames) {
9090
+ // Info
9091
+ EventNames["LOCAL_VIEW_RENDER_SUCCEED"] = "LOCAL_VIEW_RENDER_SUCCEED";
9092
+ EventNames["START_DISPOSE_LOCAL_STREAM"] = "START_DISPOSE_LOCAL_STREAM";
9093
+ EventNames["START_LOCAL_STREAM_RENDERING"] = "START_LOCAL_STREAM_RENDERING";
9094
+ EventNames["DISPOSING_REMOTE_RENDERER"] = "DISPOSING_REMOTE_RENDERER";
9095
+ EventNames["CREATING_REMOTE_VIEW"] = "CREATING_REMOTE_VIEW";
9096
+ EventNames["REMOTE_VIEW_RENDER_SUCCEED"] = "REMOTE_VIEW_RENDER_SUCCEED";
9097
+ // Warning
9098
+ EventNames["LOCAL_STREAM_ALREADY_RENDERED"] = "LOCAL_STREAM_ALREADY_RENDERED";
9099
+ EventNames["LOCAL_STREAM_STOPPING"] = "LOCAL_STREAM_STOPPING";
9100
+ EventNames["LOCAL_CREATED_STREAM_STOPPING"] = "LOCAL_CREATED_STREAM_STOPPING";
9101
+ EventNames["LOCAL_STREAM_RENDERING"] = "LOCAL_STREAM_RENDERING";
9102
+ EventNames["REMOTE_STREAM_ALREADY_RENDERED"] = "REMOTE_STREAM_ALREADY_RENDERED";
9103
+ EventNames["REMOTE_STREAM_RENDERING"] = "REMOTE_STREAM_RENDERING";
9104
+ EventNames["REMOTE_STREAM_STOPPING"] = "REMOTE_STREAM_STOPPING";
9105
+ // Error
9106
+ EventNames["LOCAL_STREAM_NOT_FOUND"] = "LOCAL_STREAM_NOT_FOUND";
9107
+ EventNames["LOCAL_RENDER_INFO_NOT_FOUND"] = "LOCAL_RENDER_INFO_NOT_FOUND";
9108
+ EventNames["REMOTE_STREAM_NOT_FOUND"] = "REMOTE_STREAM_NOT_FOUND";
9109
+ EventNames["REMOTE_DISPOSE_INFO_NOT_FOUND"] = "REMOTE_DISPOSE_INFO_NOT_FOUND";
9110
+ EventNames["REMOTE_RENDER_INFO_NOT_FOUND"] = "REMOTE_RENDER_INFO_NOT_FOUND";
9111
+ EventNames["REMOTE_RENDERER_NOT_FOUND"] = "REMOTE_RENDERER_NOT_FOUND";
9112
+ EventNames["CREATE_REMOTE_STREAM_FAIL"] = "CREATE_REMOTE_STREAM_FAIL";
9113
+ EventNames["CREATE_LOCAL_STREAM_FAIL"] = "CREATE_LOCAL_STREAM_FAIL";
9114
+ })(EventNames || (EventNames = {}));
8620
9115
 
8621
9116
  // Copyright (c) Microsoft Corporation.
8622
9117
  // Licensed under the MIT license.
@@ -8658,7 +9153,7 @@ class CallIdHistory {
8658
9153
 
8659
9154
  // Copyright (c) Microsoft Corporation.
8660
9155
  // Licensed under the MIT license.
8661
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9156
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8662
9157
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8663
9158
  return new (P || (P = Promise))(function (resolve, reject) {
8664
9159
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8949,6 +9444,8 @@ class CallContext$1 {
8949
9444
  const existingStream = participant.videoStreams[stream.id];
8950
9445
  if (existingStream) {
8951
9446
  existingStream.isAvailable = stream.isAvailable;
9447
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9448
+ existingStream.isReceiving = stream.isReceiving;
8952
9449
  existingStream.mediaStreamType = stream.mediaStreamType;
8953
9450
  }
8954
9451
  else {
@@ -8972,6 +9469,21 @@ class CallContext$1 {
8972
9469
  }
8973
9470
  });
8974
9471
  }
9472
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9473
+ setRemoteVideoStreamIsReceiving(callId, participantKey, streamId, isReceiving) {
9474
+ this.modifyState((draft) => {
9475
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
9476
+ if (call) {
9477
+ const participant = call.remoteParticipants[participantKey];
9478
+ if (participant) {
9479
+ const stream = participant.videoStreams[streamId];
9480
+ if (stream) {
9481
+ stream.isReceiving = isReceiving;
9482
+ }
9483
+ }
9484
+ }
9485
+ });
9486
+ }
8975
9487
  setRemoteVideoStreams(callId, participantKey, addRemoteVideoStream, removeRemoteVideoStream) {
8976
9488
  this.modifyState((draft) => {
8977
9489
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
@@ -8988,6 +9500,8 @@ class CallContext$1 {
8988
9500
  if (stream) {
8989
9501
  stream.mediaStreamType = newStream.mediaStreamType;
8990
9502
  stream.isAvailable = newStream.isAvailable;
9503
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9504
+ stream.isReceiving = newStream.isReceiving;
8991
9505
  }
8992
9506
  else {
8993
9507
  participant.videoStreams[newStream.id] = newStream;
@@ -9122,7 +9636,7 @@ class CallContext$1 {
9122
9636
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
9123
9637
  */
9124
9638
  withAsyncErrorTeedToState(action, target) {
9125
- return (...args) => __awaiter$i(this, void 0, void 0, function* () {
9639
+ return (...args) => __awaiter$j(this, void 0, void 0, function* () {
9126
9640
  try {
9127
9641
  return yield action(...args);
9128
9642
  }
@@ -9186,7 +9700,7 @@ const findOldestCallEnded = (calls) => {
9186
9700
 
9187
9701
  // Copyright (c) Microsoft Corporation.
9188
9702
  // Licensed under the MIT license.
9189
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9703
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9190
9704
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9191
9705
  return new (P || (P = Promise))(function (resolve, reject) {
9192
9706
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9206,63 +9720,63 @@ class ProxyCall {
9206
9720
  switch (prop) {
9207
9721
  case 'mute': {
9208
9722
  return this._context.withAsyncErrorTeedToState(function (...args) {
9209
- return __awaiter$h(this, void 0, void 0, function* () {
9723
+ return __awaiter$i(this, void 0, void 0, function* () {
9210
9724
  return yield target.mute(...args);
9211
9725
  });
9212
9726
  }, 'Call.mute');
9213
9727
  }
9214
9728
  case 'unmute': {
9215
9729
  return this._context.withAsyncErrorTeedToState(function (...args) {
9216
- return __awaiter$h(this, void 0, void 0, function* () {
9730
+ return __awaiter$i(this, void 0, void 0, function* () {
9217
9731
  return yield target.unmute(...args);
9218
9732
  });
9219
9733
  }, 'Call.unmute');
9220
9734
  }
9221
9735
  case 'startVideo': {
9222
9736
  return this._context.withAsyncErrorTeedToState(function (...args) {
9223
- return __awaiter$h(this, void 0, void 0, function* () {
9737
+ return __awaiter$i(this, void 0, void 0, function* () {
9224
9738
  return yield target.startVideo(...args);
9225
9739
  });
9226
9740
  }, 'Call.startVideo');
9227
9741
  }
9228
9742
  case 'stopVideo': {
9229
9743
  return this._context.withAsyncErrorTeedToState(function (...args) {
9230
- return __awaiter$h(this, void 0, void 0, function* () {
9744
+ return __awaiter$i(this, void 0, void 0, function* () {
9231
9745
  return yield target.stopVideo(...args);
9232
9746
  });
9233
9747
  }, 'Call.stopVideo');
9234
9748
  }
9235
9749
  case 'startScreenSharing': {
9236
9750
  return this._context.withAsyncErrorTeedToState(function (...args) {
9237
- return __awaiter$h(this, void 0, void 0, function* () {
9751
+ return __awaiter$i(this, void 0, void 0, function* () {
9238
9752
  return yield target.startScreenSharing(...args);
9239
9753
  });
9240
9754
  }, 'Call.startScreenSharing');
9241
9755
  }
9242
9756
  case 'stopScreenSharing': {
9243
9757
  return this._context.withAsyncErrorTeedToState(function (...args) {
9244
- return __awaiter$h(this, void 0, void 0, function* () {
9758
+ return __awaiter$i(this, void 0, void 0, function* () {
9245
9759
  return yield target.stopScreenSharing(...args);
9246
9760
  });
9247
9761
  }, 'Call.stopScreenSharing');
9248
9762
  }
9249
9763
  case 'hold': {
9250
9764
  return this._context.withAsyncErrorTeedToState(function (...args) {
9251
- return __awaiter$h(this, void 0, void 0, function* () {
9765
+ return __awaiter$i(this, void 0, void 0, function* () {
9252
9766
  return yield target.hold(...args);
9253
9767
  });
9254
9768
  }, 'Call.hold');
9255
9769
  }
9256
9770
  case 'resume': {
9257
9771
  return this._context.withAsyncErrorTeedToState(function (...args) {
9258
- return __awaiter$h(this, void 0, void 0, function* () {
9772
+ return __awaiter$i(this, void 0, void 0, function* () {
9259
9773
  return yield target.resume(...args);
9260
9774
  });
9261
9775
  }, 'Call.resume');
9262
9776
  }
9263
9777
  case 'addParticipant': {
9264
9778
  return this._context.withAsyncErrorTeedToState(function (...args) {
9265
- return __awaiter$h(this, void 0, void 0, function* () {
9779
+ return __awaiter$i(this, void 0, void 0, function* () {
9266
9780
  return yield target.addParticipant(...args);
9267
9781
  });
9268
9782
  }, 'Call.addParticipant');
@@ -9309,6 +9823,8 @@ function convertSdkRemoteStreamToDeclarativeRemoteStream(stream) {
9309
9823
  id: stream.id,
9310
9824
  mediaStreamType: stream.mediaStreamType,
9311
9825
  isAvailable: stream.isAvailable,
9826
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9827
+ isReceiving: stream.isReceiving,
9312
9828
  view: undefined
9313
9829
  };
9314
9830
  }
@@ -9398,10 +9914,14 @@ class RemoteVideoStreamSubscriber {
9398
9914
  constructor(callIdRef, participantKey, remoteVideoStream, context) {
9399
9915
  this.subscribe = () => {
9400
9916
  this._remoteVideoStream.on('isAvailableChanged', this.isAvailableChanged);
9917
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9918
+ this._remoteVideoStream.on('isReceivingChanged', this.isReceivingChanged);
9401
9919
  this.checkAndUpdateScreenShareState();
9402
9920
  };
9403
9921
  this.unsubscribe = () => {
9404
9922
  this._remoteVideoStream.off('isAvailableChanged', this.isAvailableChanged);
9923
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9924
+ this._remoteVideoStream.off('isReceivingChanged', this.isReceivingChanged);
9405
9925
  };
9406
9926
  this.includesActiveScreenShareStream = (streams) => {
9407
9927
  for (const stream of Object.values(streams)) {
@@ -9450,6 +9970,10 @@ class RemoteVideoStreamSubscriber {
9450
9970
  this._context.setRemoteVideoStreamIsAvailable(this._callIdRef.callId, this._participantKey, this._remoteVideoStream.id, this._remoteVideoStream.isAvailable);
9451
9971
  this.checkAndUpdateScreenShareState();
9452
9972
  };
9973
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9974
+ this.isReceivingChanged = () => {
9975
+ this._context.setRemoteVideoStreamIsReceiving(this._callIdRef.callId, this._participantKey, this._remoteVideoStream.id, this._remoteVideoStream.isReceiving);
9976
+ };
9453
9977
  this._callIdRef = callIdRef;
9454
9978
  this._participantKey = participantKey;
9455
9979
  this._remoteVideoStream = remoteVideoStream;
@@ -9460,7 +9984,7 @@ class RemoteVideoStreamSubscriber {
9460
9984
 
9461
9985
  // Copyright (c) Microsoft Corporation.
9462
9986
  // Licensed under the MIT license.
9463
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9987
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9464
9988
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9465
9989
  return new (P || (P = Promise))(function (resolve, reject) {
9466
9990
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9470,7 +9994,7 @@ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments,
9470
9994
  });
9471
9995
  };
9472
9996
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
9473
- return __awaiter$g(this, void 0, void 0, function* () {
9997
+ return __awaiter$h(this, void 0, void 0, function* () {
9474
9998
  // Render RemoteVideoStream that is part of a Call
9475
9999
  const streamId = stream.id;
9476
10000
  let participantKey;
@@ -9480,23 +10004,43 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9480
10004
  else {
9481
10005
  participantKey = toFlatCommunicationIdentifier(participantId);
9482
10006
  }
9483
- const streamLogInfo = `callId: ${callId}, participantKey: ${participantKey}, streamId: ${streamId}`;
9484
- callingStatefulLogger.info(`Start creating view for remote video. ${streamLogInfo}`);
10007
+ const streamLogInfo = { callId, participantKey, streamId };
10008
+ _logEvent(callingStatefulLogger, {
10009
+ name: EventNames.CREATING_REMOTE_VIEW,
10010
+ level: 'info',
10011
+ message: 'Start creating view for remote video.',
10012
+ data: streamLogInfo
10013
+ });
9485
10014
  const renderInfo = internalContext.getRemoteRenderInfoForParticipant(callId, participantKey, streamId);
9486
10015
  if (!renderInfo) {
9487
- callingStatefulLogger.error(`LocalVideoStream not found in state. ${streamLogInfo}`);
10016
+ _logEvent(callingStatefulLogger, {
10017
+ name: EventNames.REMOTE_STREAM_NOT_FOUND,
10018
+ level: 'error',
10019
+ message: 'RemoteVideoStream not found in state.',
10020
+ data: streamLogInfo
10021
+ });
9488
10022
  console.warn('RemoteVideoStream not found in state');
9489
10023
  return;
9490
10024
  }
9491
10025
  if (renderInfo.status === 'Rendered') {
9492
- callingStatefulLogger.warning(`RemoteVideoStream is already rendered. ${streamLogInfo}`);
10026
+ _logEvent(callingStatefulLogger, {
10027
+ name: EventNames.REMOTE_STREAM_ALREADY_RENDERED,
10028
+ level: 'warning',
10029
+ message: 'RemoteVideoStream is already rendered.',
10030
+ data: streamLogInfo
10031
+ });
9493
10032
  console.warn('RemoteVideoStream is already rendered');
9494
10033
  return;
9495
10034
  }
9496
10035
  if (renderInfo.status === 'Rendering') {
9497
10036
  // Do not log to console here as this is a very common situation due to UI rerenders while
9498
10037
  // the video rendering is in progress.
9499
- callingStatefulLogger.warning(`RemoteVideoStream is rendering. ${streamLogInfo}`);
10038
+ _logEvent(callingStatefulLogger, {
10039
+ name: EventNames.REMOTE_STREAM_RENDERING,
10040
+ level: 'warning',
10041
+ message: 'RemoteVideoStream is rendering.',
10042
+ data: streamLogInfo
10043
+ });
9500
10044
  return;
9501
10045
  }
9502
10046
  if (renderInfo.status === 'Stopping') {
@@ -9510,7 +10054,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9510
10054
  view = yield renderer.createView(options);
9511
10055
  }
9512
10056
  catch (e) {
9513
- callingStatefulLogger.error(`Failed to create view. Error: ${e}. ${streamLogInfo}`);
10057
+ _logEvent(callingStatefulLogger, {
10058
+ name: EventNames.CREATE_REMOTE_STREAM_FAIL,
10059
+ level: 'error',
10060
+ message: 'Failed to create remote view',
10061
+ data: streamLogInfo
10062
+ });
9514
10063
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'NotRendered', undefined);
9515
10064
  throw e;
9516
10065
  }
@@ -9518,7 +10067,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9518
10067
  if (!refreshedRenderInfo) {
9519
10068
  // RenderInfo was removed. This should not happen unless stream was removed from the call so dispose the renderer
9520
10069
  // and clean up state.
9521
- callingStatefulLogger.error(`Cannot find remote render info after create the view. ${streamLogInfo}`);
10070
+ _logEvent(callingStatefulLogger, {
10071
+ name: EventNames.REMOTE_RENDER_INFO_NOT_FOUND,
10072
+ level: 'error',
10073
+ message: '`Cannot find remote render info after create the view.',
10074
+ data: streamLogInfo
10075
+ });
9522
10076
  renderer.dispose();
9523
10077
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9524
10078
  return;
@@ -9529,7 +10083,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9529
10083
  renderer.dispose();
9530
10084
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, refreshedRenderInfo.stream, 'NotRendered', undefined);
9531
10085
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9532
- callingStatefulLogger.info(`Successfully render the remote view. ${streamLogInfo}`);
10086
+ _logEvent(callingStatefulLogger, {
10087
+ name: EventNames.REMOTE_VIEW_RENDER_SUCCEED,
10088
+ level: 'info',
10089
+ message: 'Successfully render the remote view.',
10090
+ data: streamLogInfo
10091
+ });
9533
10092
  return;
9534
10093
  }
9535
10094
  // Else the stream still exists and status is not telling us to stop rendering. Complete the render process by
@@ -9543,28 +10102,48 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9543
10102
  });
9544
10103
  }
9545
10104
  function createViewLocalVideo(context, internalContext, callId, options) {
9546
- return __awaiter$g(this, void 0, void 0, function* () {
9547
- callingStatefulLogger.info('Start creating view for local video');
10105
+ return __awaiter$h(this, void 0, void 0, function* () {
10106
+ _logEvent(callingStatefulLogger, {
10107
+ name: EventNames.START_LOCAL_STREAM_RENDERING,
10108
+ level: 'info',
10109
+ message: 'Start creating view for local video.'
10110
+ });
9548
10111
  // Render LocalVideoStream that is part of a Call
9549
10112
  const renderInfo = internalContext.getLocalRenderInfo(callId);
9550
10113
  if (!renderInfo) {
9551
- callingStatefulLogger.error('LocalVideoStream not found in state');
10114
+ _logEvent(callingStatefulLogger, {
10115
+ name: EventNames.LOCAL_STREAM_NOT_FOUND,
10116
+ level: 'error',
10117
+ message: 'LocalVideoStream not found in state.'
10118
+ });
9552
10119
  console.warn('LocalVideoStream not found in state');
9553
10120
  return;
9554
10121
  }
9555
10122
  if (renderInfo.status === 'Rendered') {
9556
- callingStatefulLogger.warning('LocalVideoStream is already rendered');
10123
+ _logEvent(callingStatefulLogger, {
10124
+ name: EventNames.LOCAL_STREAM_ALREADY_RENDERED,
10125
+ level: 'warning',
10126
+ message: 'LocalVideoStream is already rendered.'
10127
+ });
9557
10128
  console.warn('LocalVideoStream is already rendered');
9558
10129
  return;
9559
10130
  }
9560
10131
  if (renderInfo.status === 'Rendering') {
9561
10132
  // Do not log to console here as this is a very common situation due to UI rerenders while
9562
10133
  // the video rendering is in progress.
9563
- callingStatefulLogger.warning('LocalVideoStream is rendering.');
10134
+ _logEvent(callingStatefulLogger, {
10135
+ name: EventNames.LOCAL_STREAM_RENDERING,
10136
+ level: 'warning',
10137
+ message: 'LocalVideoStream is rendering.'
10138
+ });
9564
10139
  return;
9565
10140
  }
9566
10141
  if (renderInfo.status === 'Stopping') {
9567
- callingStatefulLogger.warning('LocalVideoStream is in the middle of stopping.');
10142
+ _logEvent(callingStatefulLogger, {
10143
+ name: EventNames.LOCAL_STREAM_STOPPING,
10144
+ level: 'warning',
10145
+ message: 'LocalVideoStream is in the middle of stopping.'
10146
+ });
9568
10147
  console.warn('LocalVideoStream is in the middle of stopping');
9569
10148
  return;
9570
10149
  }
@@ -9575,7 +10154,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9575
10154
  view = yield renderer.createView(options);
9576
10155
  }
9577
10156
  catch (e) {
9578
- callingStatefulLogger.error(`Failed to create view. Error: ${e}`);
10157
+ _logEvent(callingStatefulLogger, {
10158
+ name: EventNames.CREATE_LOCAL_STREAM_FAIL,
10159
+ level: 'error',
10160
+ message: 'Failed to create view.',
10161
+ data: {
10162
+ error: e
10163
+ }
10164
+ });
9579
10165
  internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'NotRendered', undefined);
9580
10166
  throw e;
9581
10167
  }
@@ -9585,7 +10171,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9585
10171
  if (!refreshedRenderInfo) {
9586
10172
  // RenderInfo was removed. This should not happen unless stream was removed from the call so dispose the renderer
9587
10173
  // and clean up the state.
9588
- callingStatefulLogger.error(`Cannot find local render info for the callId: ${callId}, after create the view. `);
10174
+ _logEvent(callingStatefulLogger, {
10175
+ name: EventNames.LOCAL_RENDER_INFO_NOT_FOUND,
10176
+ level: 'error',
10177
+ message: 'Cannot find local render info after create the view. ',
10178
+ data: {
10179
+ callId
10180
+ }
10181
+ });
9589
10182
  renderer.dispose();
9590
10183
  context.setLocalVideoStreamRendererView(callId, undefined);
9591
10184
  return;
@@ -9593,7 +10186,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9593
10186
  if (refreshedRenderInfo.status === 'Stopping') {
9594
10187
  // Stop render was called on this stream after we had started rendering. We will dispose this view and do not
9595
10188
  // put the view into the state.
9596
- callingStatefulLogger.warning(`Render info status is stopping, dispose renderer, callId: ${callId}}`);
10189
+ _logEvent(callingStatefulLogger, {
10190
+ name: EventNames.LOCAL_CREATED_STREAM_STOPPING,
10191
+ level: 'warning',
10192
+ message: 'Render info status is stopping, dispose renderer. ',
10193
+ data: {
10194
+ callId
10195
+ }
10196
+ });
9597
10197
  renderer.dispose();
9598
10198
  internalContext.setLocalRenderInfo(callId, refreshedRenderInfo.stream, 'NotRendered', undefined);
9599
10199
  context.setLocalVideoStreamRendererView(callId, undefined);
@@ -9603,7 +10203,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9603
10203
  // updating the state.
9604
10204
  internalContext.setLocalRenderInfo(callId, refreshedRenderInfo.stream, 'Rendered', renderer);
9605
10205
  context.setLocalVideoStreamRendererView(callId, convertFromSDKToDeclarativeVideoStreamRendererView(view));
9606
- callingStatefulLogger.info(`Successfully render the local view. callId: ${callId}`);
10206
+ _logEvent(callingStatefulLogger, {
10207
+ name: EventNames.LOCAL_VIEW_RENDER_SUCCEED,
10208
+ level: 'info',
10209
+ message: `Successfully render the local view.`,
10210
+ data: {
10211
+ callId
10212
+ }
10213
+ });
9607
10214
  return {
9608
10215
  renderer,
9609
10216
  view
@@ -9611,7 +10218,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9611
10218
  });
9612
10219
  }
9613
10220
  function createViewUnparentedVideo(context, internalContext, stream, options) {
9614
- return __awaiter$g(this, void 0, void 0, function* () {
10221
+ return __awaiter$h(this, void 0, void 0, function* () {
9615
10222
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
9616
10223
  if (renderInfo && renderInfo.status === 'Rendered') {
9617
10224
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -9678,30 +10285,55 @@ function disposeViewRemoteVideo(context, internalContext, callId, participantId,
9678
10285
  else {
9679
10286
  participantKey = toFlatCommunicationIdentifier(participantId);
9680
10287
  }
9681
- const streamLogInfo = `callId: ${callId}, participantKey: ${participantKey}, streamId: ${streamId}`;
9682
- callingStatefulLogger.info(`Start disposing remote stream. ${streamLogInfo}`);
10288
+ const streamLogInfo = { callId, participantKey, streamId };
10289
+ _logEvent(callingStatefulLogger, {
10290
+ name: EventNames.START_DISPOSE_LOCAL_STREAM,
10291
+ level: 'info',
10292
+ message: 'Start disposing remote stream.',
10293
+ data: streamLogInfo
10294
+ });
9683
10295
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9684
10296
  const renderInfo = internalContext.getRemoteRenderInfoForParticipant(callId, participantKey, streamId);
9685
10297
  if (!renderInfo) {
9686
- callingStatefulLogger.error(`Cannot find render info when disposing remote stream, ${streamLogInfo}`);
10298
+ _logEvent(callingStatefulLogger, {
10299
+ name: EventNames.REMOTE_DISPOSE_INFO_NOT_FOUND,
10300
+ level: 'error',
10301
+ message: 'Cannot find render info when disposing remote stream.',
10302
+ data: streamLogInfo
10303
+ });
9687
10304
  return;
9688
10305
  }
9689
10306
  // Sets the status and also renderer. I think we need to always set renderer to undefined since in all status when
9690
10307
  // cleaned up should have renderer as undefined. If the status is 'Rendered' and renderer is not defined it should
9691
10308
  // be cleaned up below so we can set it to undefined here.
9692
10309
  if (renderInfo.status === 'Rendering') {
9693
- callingStatefulLogger.warning(`Remote stream is still rendering. Changing status to stopping. ${streamLogInfo}`);
10310
+ _logEvent(callingStatefulLogger, {
10311
+ name: EventNames.REMOTE_STREAM_STOPPING,
10312
+ level: 'warning',
10313
+ message: 'Remote stream is still rendering. Changing status to stopping.',
10314
+ data: streamLogInfo
10315
+ });
9694
10316
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'Stopping', undefined);
9695
10317
  }
9696
10318
  else {
9697
10319
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'NotRendered', undefined);
9698
10320
  }
9699
10321
  if (renderInfo.renderer) {
9700
- callingStatefulLogger.info(`Disposing remote view renderer. ${streamLogInfo}`);
10322
+ _logEvent(callingStatefulLogger, {
10323
+ name: EventNames.DISPOSING_REMOTE_RENDERER,
10324
+ level: 'info',
10325
+ message: 'Disposing remote view renderer.',
10326
+ data: streamLogInfo
10327
+ });
9701
10328
  renderInfo.renderer.dispose();
9702
10329
  }
9703
10330
  else {
9704
- callingStatefulLogger.warning(`Cannot find remote view renderer. ${streamLogInfo}`);
10331
+ _logEvent(callingStatefulLogger, {
10332
+ name: EventNames.REMOTE_RENDERER_NOT_FOUND,
10333
+ level: 'warning',
10334
+ message: 'Cannot find remote view renderer.',
10335
+ data: streamLogInfo
10336
+ });
9705
10337
  }
9706
10338
  }
9707
10339
  function disposeViewLocalVideo(context, internalContext, callId) {
@@ -10146,22 +10778,71 @@ class CallSubscriber {
10146
10778
 
10147
10779
  // Copyright (c) Microsoft Corporation.
10148
10780
  // Licensed under the MIT license.
10781
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10782
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10783
+ return new (P || (P = Promise))(function (resolve, reject) {
10784
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10785
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10786
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10787
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10788
+ });
10789
+ };
10149
10790
  /**
10150
- * Keeps track of the listeners assigned to a particular incoming call because when we get an event from SDK, it doesn't
10151
- * tell us which incoming call it is for. If we keep track of this then we know which incoming call in the state that
10152
- * needs an update and also which property of that incoming call. Also we can use this when unregistering to a incoming
10153
- * call.
10791
+ * @private
10154
10792
  */
10155
- class IncomingCallSubscriber {
10156
- constructor(incomingCall,
10157
- // setIncomingCallEnded callback is used so parent can clean up IncomingCallSubscriber.
10158
- setIncomingCallEnded) {
10159
- this.subscribe = () => {
10160
- this._incomingCall.on('callEnded', this.callEnded);
10161
- };
10162
- this.unsubscribe = () => {
10163
- this._incomingCall.off('callEnded', this.callEnded);
10164
- };
10793
+ class ProxyIncomingCall {
10794
+ constructor(context) {
10795
+ this._context = context;
10796
+ }
10797
+ get(target, prop) {
10798
+ switch (prop) {
10799
+ case 'accept': {
10800
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10801
+ return __awaiter$g(this, void 0, void 0, function* () {
10802
+ return yield target.accept(...args);
10803
+ });
10804
+ }, 'IncomingCall.accept');
10805
+ }
10806
+ case 'reject': {
10807
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10808
+ return __awaiter$g(this, void 0, void 0, function* () {
10809
+ return yield target.reject(...args);
10810
+ });
10811
+ }, 'IncomingCall.reject');
10812
+ }
10813
+ default:
10814
+ return Reflect.get(target, prop);
10815
+ }
10816
+ }
10817
+ }
10818
+ /**
10819
+ * Creates a declarative Incoming Call by proxying IncomingCall using ProxyIncomingCall.
10820
+ * @param incomingCall - IncomingCall from SDK
10821
+ * @returns proxied IncomingCall
10822
+ */
10823
+ const incomingCallDeclaratify = (incomingCall, context) => {
10824
+ const proxyIncomingCall = new ProxyIncomingCall(context);
10825
+ return new Proxy(incomingCall, proxyIncomingCall);
10826
+ };
10827
+
10828
+ // Copyright (c) Microsoft Corporation.
10829
+ // Licensed under the MIT license.
10830
+ /**
10831
+ * Keeps track of the listeners assigned to a particular incoming call because when we get an event from SDK, it doesn't
10832
+ * tell us which incoming call it is for. If we keep track of this then we know which incoming call in the state that
10833
+ * needs an update and also which property of that incoming call. Also we can use this when unregistering to a incoming
10834
+ * call.
10835
+ */
10836
+ class IncomingCallSubscriber {
10837
+ constructor(incomingCall,
10838
+ // setIncomingCallEnded callback is used so parent can clean up IncomingCallSubscriber.
10839
+ setIncomingCallEnded) {
10840
+ this.subscribe = () => {
10841
+ this._incomingCall.on('callEnded', this.callEnded);
10842
+ };
10843
+ this.unsubscribe = () => {
10844
+ this._incomingCall.off('callEnded', this.callEnded);
10845
+ };
10165
10846
  this.callEnded = (event) => {
10166
10847
  this._setIncomingCallEnded(this._incomingCall.id, event.callEndReason);
10167
10848
  };
@@ -10201,6 +10882,7 @@ class ProxyCallAgent {
10201
10882
  incomingCallSubscriber.unsubscribe();
10202
10883
  }
10203
10884
  this._incomingCallSubscribers.clear();
10885
+ this._declarativeIncomingCalls.clear();
10204
10886
  for (const [_, declarativeCall] of this._declarativeCalls.entries()) {
10205
10887
  declarativeCall.unsubscribe();
10206
10888
  }
@@ -10241,14 +10923,16 @@ class ProxyCallAgent {
10241
10923
  incomingCallSubscriber.unsubscribe();
10242
10924
  this._incomingCallSubscribers.delete(incomingCallId);
10243
10925
  }
10926
+ this._declarativeIncomingCalls.delete(incomingCallId);
10244
10927
  this._context.setIncomingCallEnded(incomingCallId, callEndReason);
10245
10928
  };
10246
- this.incomingCall = (event) => {
10929
+ this.incomingCall = ({ incomingCall }) => {
10247
10930
  // Make sure to not subscribe to the incoming call if we are already subscribed to it.
10248
- if (!this._incomingCallSubscribers.has(event.incomingCall.id)) {
10249
- this._incomingCallSubscribers.set(event.incomingCall.id, new IncomingCallSubscriber(event.incomingCall, this.setIncomingCallEnded));
10931
+ if (!this._incomingCallSubscribers.has(incomingCall.id)) {
10932
+ this._incomingCallSubscribers.set(incomingCall.id, new IncomingCallSubscriber(incomingCall, this.setIncomingCallEnded));
10250
10933
  }
10251
- this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(event.incomingCall));
10934
+ this._declarativeIncomingCalls.set(incomingCall.id, incomingCallDeclaratify(incomingCall, this._context));
10935
+ this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(incomingCall));
10252
10936
  };
10253
10937
  this.addCall = (call) => {
10254
10938
  var _a;
@@ -10273,6 +10957,7 @@ class ProxyCallAgent {
10273
10957
  this._internalContext = internalContext;
10274
10958
  this._callSubscribers = new Map();
10275
10959
  this._incomingCallSubscribers = new Map();
10960
+ this._declarativeIncomingCalls = new Map();
10276
10961
  this._declarativeCalls = new Map();
10277
10962
  this._externalCallsUpdatedListeners = new Set();
10278
10963
  this.subscribe();
@@ -10327,6 +11012,18 @@ class ProxyCallAgent {
10327
11012
  });
10328
11013
  };
10329
11014
  }
11015
+ /**
11016
+ * This attribute is a special case and doesn't exist on the CallAgent interface.
11017
+ * We need this to be able to return a declarative incoming call object using the call agent.
11018
+ * In a standard headless SDK usage, the right way to get an incoming call is to use the `incomingCall` event.
11019
+ * However, using the declarative layer, the ideal usage would be to:
11020
+ * 1. subscribe to the `onStateChange` event
11021
+ * 2. Get the incoming call from the new state and it's ID
11022
+ * 3. Use `callAgent.incomingCalls` and filter an incoming call ID to get a declarative incoming call object
11023
+ */
11024
+ case 'incomingCalls': {
11025
+ return this._declarativeIncomingCalls;
11026
+ }
10330
11027
  default:
10331
11028
  return Reflect.get(target, prop);
10332
11029
  }
@@ -11672,6 +12369,191 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
11672
12369
  */
11673
12370
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
11674
12371
 
12372
+ var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButtonLabel:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12373
+
12374
+ var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$c={chatListHeader:"In this chat"};var callWithChat$c={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButton:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
12375
+
12376
+ var call$b={cameraLabel:"Kamera",cameraPermissionDenied:"Ihr Browser blockiert den Zugriff auf Ihre Kamera.",cameraTurnedOff:"Ihre Kamera ist deaktiviert.",close:"Schließen",complianceBannerNowOnlyRecording:"Sie zeichnen nun nur diese Besprechung auf.",complianceBannerNowOnlyTranscription:"Sie transkribieren diese Besprechung jetzt nur noch.",complianceBannerRecordingAndTranscriptionSaved:"Aufzeichnung und Transkription werden gespeichert.",complianceBannerRecordingAndTranscriptionStarted:"Die Aufzeichnung und Transkription haben begonnen.",complianceBannerRecordingAndTranscriptionStopped:"Die Aufzeichnung und Transkription wurden beendet.",complianceBannerRecordingSaving:"Aufzeichnung wird gespeichert.",complianceBannerRecordingStarted:"Die Aufzeichnung wurde gestartet.",complianceBannerRecordingStopped:"Aufzeichnung wurde beendet.",complianceBannerTranscriptionStarted:"Die Transkription hat begonnen.",complianceBannerTranscriptionConsent:"Durch Ihre Teilnahme stimmen Sie zu, dass diese Besprechung transkribiert wird.",complianceBannerTranscriptionSaving:"Die Transkription wird gespeichert.",complianceBannerTranscriptionStopped:"Die Transkription wurde beendet.",configurationPageTitle:"Einen Anruf beginnen",defaultPlaceHolder:"Option auswählen",failedToJoinCallDueToNoNetworkMoreDetails:"Der Anruf wurde aufgrund eines Netzwerkproblems getrennt. Überprüfen Sie Ihre Verbindung, und treten Sie erneut bei.",failedToJoinCallDueToNoNetworkTitle:"Anruf unterbrochen",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Ihnen wurde keine Teilnahme am Anruf gewährt. Wenn dies ein Fehler war, treten Sie dem Anruf erneut bei.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Aus Wartebereich entlassen",learnMore:"Weitere Informationen",leftCallMoreDetails:"Wenn dies ein Fehler war, nehmen Sie erneut am Anruf teil.",leftCallTitle:"Sie haben den Anruf verlassen",lobbyScreenConnectingToCallTitle:"Teilnehmen am Anruf",lobbyScreenWaitingToBeAdmittedTitle:"Warten auf die Zulassung",microphonePermissionDenied:"Ihr Browser blockiert den Zugriff auf Ihr Mikrofon.",mutedMessage:"Sie sind stummgeschaltet.",networkReconnectMoreDetails:"Offensichtlich ist etwas schief gegangen. Wir versuchen, Sie wieder mit dem Anruf zu verbinden.",networkReconnectTitle:"Einen Augenblick bitte",privacyPolicy:"Datenschutzrichtlinie",rejoinCallButtonLabel:"Am Anruf erneut teilnehmen",removedFromCallMoreDetails:"Ein anderer Teilnehmer hat Sie aus dem Anruf entfernt.",removedFromCallTitle:"Sie wurden entfernt",soundLabel:"Sound",startCallButtonLabel:"Anruf beginnen",microphoneToggleInLobbyNotAllowed:"Stummschalten oder Aufheben der Stummschaltung im Wartebereich nicht zulässig."};var chat$b={chatListHeader:"In diesem Chat"};var callWithChat$b={peopleButtonLabel:"Personen",peopleButtonTooltipOpen:"Teilnehmende anzeigen",peopleButtonTooltipClose:"Teilnehmende ausblenden",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Chat anzeigen ({unreadMessagesCount} ungelesen)",chatButtonTooltipOpen:"Chat anzeigen",chatButtonTooltipClose:"Chat ausblenden",moreDrawerAudioDeviceMenuTitle:"Audiogerät",moreDrawerMicrophoneMenuTitle:"Mikrofon",moreDrawerSpeakerMenuTitle:"Lautsprecher",moreDrawerButtonLabel:"Weitere Optionen",moreDrawerButtonTooltip:"Weitere Optionen",peoplePaneTitle:"Personen",peoplePaneSubTitle:"In diesem Anruf",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Neue Nachricht",pictureInPictureTileAriaLabel:"Videofeeds. Klicken Sie hier, um zum Anrufbildschirm zurückzukehren.",removeMenuLabel:"Entfernen",copyInviteLinkButtonLabel:"Einladungslink kopieren",dismissSidePaneButton:"Schließen",returnToCallButtonAriaDescription:"Zurück zum Anruf",returnToCallButtonAriaLabel:"Zurück"};var de_DE = {call:call$b,chat:chat$b,callWithChat:callWithChat$b};
12377
+
12378
+ var call$a={cameraLabel:"Cámara",cameraPermissionDenied:"El explorador está bloqueando el acceso a la cámara",cameraTurnedOff:"La cámara está apagada",close:"Cerrar",complianceBannerNowOnlyRecording:"Solo está grabando esta reunión.",complianceBannerNowOnlyTranscription:"Solo está transcribiendo esta reunión.",complianceBannerRecordingAndTranscriptionSaved:"Se están guardando la grabación y la transcripción.",complianceBannerRecordingAndTranscriptionStarted:"Se han iniciado la grabación y la transcripción.",complianceBannerRecordingAndTranscriptionStopped:"Se han detenido la grabación y la transcripción.",complianceBannerRecordingSaving:"La grabación se está guardando.",complianceBannerRecordingStarted:"Se ha iniciado la grabación.",complianceBannerRecordingStopped:"La grabación se ha detenido.",complianceBannerTranscriptionStarted:"La transcripción se ha iniciado.",complianceBannerTranscriptionConsent:"Al unirse, da su consentimiento para que se transcriba esta reunión.",complianceBannerTranscriptionSaving:"Se está guardando la transcripción.",complianceBannerTranscriptionStopped:"La transcripción se ha detenido.",configurationPageTitle:"Iniciar una llamada",defaultPlaceHolder:"Seleccionar una opción",failedToJoinCallDueToNoNetworkMoreDetails:"Se desconectó la llamada debido a un problema de red. Compruebe la conexión y únase de nuevo.",failedToJoinCallDueToNoNetworkTitle:"Llamada desconectada",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"No se te concedió la entrada a la llamada. Si se trata de un error, vuelve a unirte.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Rechazado de la sala de espera",learnMore:"Más información",leftCallMoreDetails:"Si se trata de un error, vuelve a unirte a la llamada.",leftCallTitle:"Has abandonado la llamada",lobbyScreenConnectingToCallTitle:"Uniéndose a la llamada",lobbyScreenWaitingToBeAdmittedTitle:"Esperando a ser admitido",microphonePermissionDenied:"El explorador está bloqueando el acceso al micrófono",mutedMessage:"Estás silenciado",networkReconnectMoreDetails:"Parece que hubo un problema. Estamos intentando reconectar la llamada.",networkReconnectTitle:"Espere",privacyPolicy:"Directiva de privacidad",rejoinCallButtonLabel:"Volver a unirse a la llamada",removedFromCallMoreDetails:"Otro participante te ha eliminado de la llamada.",removedFromCallTitle:"Fuiste eliminado",soundLabel:"Sonido",startCallButtonLabel:"Iniciar llamada",microphoneToggleInLobbyNotAllowed:"No se puede silenciar ni reactivar el audio mientras se está en la sala de espera."};var chat$a={chatListHeader:"En este chat"};var callWithChat$a={peopleButtonLabel:"Contactos",peopleButtonTooltipOpen:"Mostrar participantes",peopleButtonTooltipClose:"Ocultar participantes",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Mostrar chat ({unreadMessagesCount} no leídos)",chatButtonTooltipOpen:"Mostrar chat",chatButtonTooltipClose:"Ocultar chat",moreDrawerAudioDeviceMenuTitle:"Dispositivo de audio",moreDrawerMicrophoneMenuTitle:"Micrófono",moreDrawerSpeakerMenuTitle:"Altavoz",moreDrawerButtonLabel:"Más opciones",moreDrawerButtonTooltip:"Más opciones",peoplePaneTitle:"Contactos",peoplePaneSubTitle:"En esta llamada",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nuevo mensaje",pictureInPictureTileAriaLabel:"Fuentes de vídeo. Hacer clic para volver a la pantalla de la llamada.",removeMenuLabel:"Quitar",copyInviteLinkButtonLabel:"Copiar vínculo de invitación",dismissSidePaneButton:"Cerrar",returnToCallButtonAriaDescription:"Volver a llamada",returnToCallButtonAriaLabel:"Volver"};var es_ES = {call:call$a,chat:chat$a,callWithChat:callWithChat$a};
12379
+
12380
+ var call$9={cameraLabel:"Appareil photo",cameraPermissionDenied:"Votre navigateur bloque l’accès à votre caméra",cameraTurnedOff:"Votre caméra est désactivée",close:"Fermer",complianceBannerNowOnlyRecording:"Vous n’enregistrez désormais que cette réunion.",complianceBannerNowOnlyTranscription:"À présent, vous ne transcrivez que cette réunion.",complianceBannerRecordingAndTranscriptionSaved:"Sauvegarde en cours de l’enregistrement et de la transcription.",complianceBannerRecordingAndTranscriptionStarted:"Démarrage de l’enregistrement et de la transcription.",complianceBannerRecordingAndTranscriptionStopped:"L’enregistrement et la transcription ont pris fin.",complianceBannerRecordingSaving:"Sauvegarde en cours de l'enregistrement.",complianceBannerRecordingStarted:"L’enregistrement a démarré.",complianceBannerRecordingStopped:"L’enregistrement a pris fin.",complianceBannerTranscriptionStarted:"Démarrage de la transcription.",complianceBannerTranscriptionConsent:"En participant, vous autorisez la transcription de cette réunion.",complianceBannerTranscriptionSaving:"Sauvegarde en cours de la transcription.",complianceBannerTranscriptionStopped:"La transcription a pris fin.",configurationPageTitle:"Lancer un appel",defaultPlaceHolder:"Sélectionnez une option",failedToJoinCallDueToNoNetworkMoreDetails:"L’appel a été déconnecté en raison d’un problème réseau. Vérifiez votre connexion et rejoignez-la à nouveau.",failedToJoinCallDueToNoNetworkTitle:"Appel déconnecté",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Vous n’avez pas reçu d’entrée dans l’appel. S’il s’agissait d’une erreur, rejoignez à nouveau l’appel.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Rejeté de la salle d’attente",learnMore:"En savoir plus",leftCallMoreDetails:"S’il s’agissait d’une erreur, rejoignez à nouveau l’appel.",leftCallTitle:"Vous avez quitté l’appel.",lobbyScreenConnectingToCallTitle:"Connexion à l'appel",lobbyScreenWaitingToBeAdmittedTitle:"En attente d’admission",microphonePermissionDenied:"Votre navigateur bloque l’accès à votre micro",mutedMessage:"Le son de votre micro est désactivé.",networkReconnectMoreDetails:"On dirait qu'une erreur est survenue. Nous tentons de vous reconnecter à l’appel.",networkReconnectTitle:"Patience",privacyPolicy:"Politique de confidentialité",rejoinCallButtonLabel:"Rejoindre l’appel à nouveau.",removedFromCallMoreDetails:"Un autre participant vous a supprimé de l’appel.",removedFromCallTitle:"Vous avez été supprimé.",soundLabel:"Son",startCallButtonLabel:"Lancer l'appel",microphoneToggleInLobbyNotAllowed:"Impossible de désactiver ou d’activer le son dans la salle d’attente."};var chat$9={chatListHeader:"Dans cette conversation"};var callWithChat$9={peopleButtonLabel:"Personnes",peopleButtonTooltipOpen:"Afficher les participants",peopleButtonTooltipClose:"Masquer les participants",chatButtonLabel:"Clavardage",chatButtonTooltipClosedWithMessageCount:"Afficher la conversation ({unreadMessagesCount} non lu)",chatButtonTooltipOpen:"Afficher la conversation",chatButtonTooltipClose:"Masquer la conversation",moreDrawerAudioDeviceMenuTitle:"Périphérique audio",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Haut-parleur",moreDrawerButtonLabel:"Autres options",moreDrawerButtonTooltip:"Autres options",peoplePaneTitle:"Personnes",peoplePaneSubTitle:"Pendant cet appel",chatPaneTitle:"Clavardage",chatButtonNewMessageNotificationLabel:"Nouveau message",pictureInPictureTileAriaLabel:"Flux vidéo. Cliquez pour revenir à l’écran d’appel.",removeMenuLabel:"Supprimer",copyInviteLinkButtonLabel:"Copier le lien d'invitation",dismissSidePaneButton:"Fermer",returnToCallButtonAriaDescription:"Revenir à l’appel",returnToCallButtonAriaLabel:"Précédent"};var fr_FR = {call:call$9,chat:chat$9,callWithChat:callWithChat$9};
12381
+
12382
+ var call$8={cameraLabel:"Fotocamera",cameraPermissionDenied:"Il browser blocca l'accesso alla fotocamera",cameraTurnedOff:"La videocamera è disabilitata",close:"Chiudi",complianceBannerNowOnlyRecording:"È in corso la registrazione solo di questa riunione.",complianceBannerNowOnlyTranscription:"È in corso la trascrizione solo di questa riunione.",complianceBannerRecordingAndTranscriptionSaved:"È in corso il salvataggio della registrazione e della trascrizione.",complianceBannerRecordingAndTranscriptionStarted:"Registrazione e trascrizione avviate.",complianceBannerRecordingAndTranscriptionStopped:"Registrazione e trascrizione interrotte.",complianceBannerRecordingSaving:"Salvataggio della registrazione in corso.",complianceBannerRecordingStarted:"Registrazione avviata.",complianceBannerRecordingStopped:"Registrazione arrestata.",complianceBannerTranscriptionStarted:"Trascrizione avviata.",complianceBannerTranscriptionConsent:"Partecipando, fornisci il consenso per la trascrizione di questa riunione.",complianceBannerTranscriptionSaving:"È in corso il salvataggio della trascrizione.",complianceBannerTranscriptionStopped:"Trascrizione interrotta.",configurationPageTitle:"Avvia una chiamata",defaultPlaceHolder:"Seleziona un'opzione",failedToJoinCallDueToNoNetworkMoreDetails:"La chiamata è stata disconnessa a causa di un problema di rete. Controlla la connessione e partecipa di nuovo.",failedToJoinCallDueToNoNetworkTitle:"Chiamata interrotta",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Non ti è stato concesso l’accesso alla chiamata. Se si è trattato di un errore, partecipa di nuovo alla chiamata.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Ignorato dalla sala di attesa",learnMore:"Ulteriori informazioni",leftCallMoreDetails:"Se si è trattato di un errore, partecipa di nuovo alla chiamata.",leftCallTitle:"Hai abbandonato la chiamata",lobbyScreenConnectingToCallTitle:"Partecipazione alla chiamata",lobbyScreenWaitingToBeAdmittedTitle:"In attesa di essere ammessi",microphonePermissionDenied:"Il browser blocca l'accesso al microfono",mutedMessage:"L'audio è disattivato.",networkReconnectMoreDetails:"Sembra si sia verificato un errore. Stiamo cercando di ristabilire la connessione alla chiamata.",networkReconnectTitle:"Attendi",privacyPolicy:"Informativa sulla privacy",rejoinCallButtonLabel:"Partecipa alla chiamata",removedFromCallMoreDetails:"Un altro partecipante ti ha rimosso dalla chiamata.",removedFromCallTitle:"Sei stato rimosso",soundLabel:"Suono",startCallButtonLabel:"Avvia chiamata",microphoneToggleInLobbyNotAllowed:"Impossibile attivare o disattivare l'audio nella sala di attesa."};var chat$8={chatListHeader:"In questa chat"};var callWithChat$8={peopleButtonLabel:"Persone",peopleButtonTooltipOpen:"Mostra partecipanti",peopleButtonTooltipClose:"Nascondi partecipanti",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Mostra chat ({unreadMessagesCount} non letto)",chatButtonTooltipOpen:"Mostra chat",chatButtonTooltipClose:"Nascondi chat",moreDrawerAudioDeviceMenuTitle:"Dispositivo audio",moreDrawerMicrophoneMenuTitle:"Microfono",moreDrawerSpeakerMenuTitle:"Altoparlante",moreDrawerButtonLabel:"Altre opzioni",moreDrawerButtonTooltip:"Altre opzioni",peoplePaneTitle:"Persone",peoplePaneSubTitle:"In questa chiamata",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nuovo messaggio",pictureInPictureTileAriaLabel:"Feed video. Fare clic per tornare alla schermata della chiamata.",removeMenuLabel:"Rimuovi",copyInviteLinkButtonLabel:"Copia il collegamento dell’invito",dismissSidePaneButton:"Chiudi",returnToCallButtonAriaDescription:"Torna alla chiamata",returnToCallButtonAriaLabel:"Indietro"};var it_IT = {call:call$8,chat:chat$8,callWithChat:callWithChat$8};
12383
+
12384
+ var call$7={cameraLabel:"カメラ",cameraPermissionDenied:"お使いのブラウザーがカメラへのアクセスをブロックしています",cameraTurnedOff:"カメラはオフになっています",close:"閉じる",complianceBannerNowOnlyRecording:"今はこの会議の録画のみを行っています。",complianceBannerNowOnlyTranscription:"この会議のトランスクリプトを作成しています。",complianceBannerRecordingAndTranscriptionSaved:"レコーディングとトランスクリプトを保存されました。",complianceBannerRecordingAndTranscriptionStarted:"レコーディングとトランスクリプトが開始されました。",complianceBannerRecordingAndTranscriptionStopped:"レコーディングとトランスクリプトを停止しました。",complianceBannerRecordingSaving:"レコーディングを保存しています。",complianceBannerRecordingStarted:"レコーディングを開始しました。",complianceBannerRecordingStopped:"レコーディングを停止しました。",complianceBannerTranscriptionStarted:"トランスクリプトが開始しました。",complianceBannerTranscriptionConsent:"参加すると、この会議のトランスクリプトの作成に同意したことになります。",complianceBannerTranscriptionSaving:"トランスクリプトを保存されました。",complianceBannerTranscriptionStopped:"トランスクリプトが停止しました。",configurationPageTitle:"通話を開始",defaultPlaceHolder:"オプションを選択する",failedToJoinCallDueToNoNetworkMoreDetails:"ネットワークの問題により、通話が切断されました。接続を確認して、もう一度参加してください。",failedToJoinCallDueToNoNetworkTitle:"通話が切断されました",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"通話のエントリが許可されませんでした。これが間違いだった場合は、通話に再参加してください。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"ロビーから消去しました",learnMore:"詳細情報",leftCallMoreDetails:"これが間違いだった場合は、通話に再度参加してください。",leftCallTitle:"通話を終了しました",lobbyScreenConnectingToCallTitle:"通話に参加中",lobbyScreenWaitingToBeAdmittedTitle:"承認待機中",microphonePermissionDenied:"お使いのブラウザーがマイクへのアクセスをブロックしています",mutedMessage:"ミュートになっています",networkReconnectMoreDetails:"問題が発生したようです。通話に戻ろうとしています。",networkReconnectTitle:"お待ちください",privacyPolicy:"プライバシー ポリシー",rejoinCallButtonLabel:"通話に再度参加",removedFromCallMoreDetails:"別の参加者があなたを通話から削除しました。",removedFromCallTitle:"削除されました",soundLabel:"音声",startCallButtonLabel:"通話を開始",microphoneToggleInLobbyNotAllowed:"ロビーにいる間はミュートまたはミュート解除できません。"};var chat$7={chatListHeader:"このチャット内"};var callWithChat$7={peopleButtonLabel:"ユーザー",peopleButtonTooltipOpen:"参加者を表示",peopleButtonTooltipClose:"参加者を非表示",chatButtonLabel:"チャット",chatButtonTooltipClosedWithMessageCount:"チャットを表示する ({unreadMessagesCount} 件の未読)",chatButtonTooltipOpen:"チャットを表示",chatButtonTooltipClose:"チャットを非表示",moreDrawerAudioDeviceMenuTitle:"オーディオ デバイス",moreDrawerMicrophoneMenuTitle:"マイク",moreDrawerSpeakerMenuTitle:"スピーカー",moreDrawerButtonLabel:"その他のオプション",moreDrawerButtonTooltip:"その他のオプション",peoplePaneTitle:"ユーザー",peoplePaneSubTitle:"この通話で",chatPaneTitle:"チャット",chatButtonNewMessageNotificationLabel:"新規メッセージ",pictureInPictureTileAriaLabel:"ビデオ フィード。 クリックすると通話画面に戻ります。",removeMenuLabel:"削除",copyInviteLinkButtonLabel:"招待用のリンクをコピー",dismissSidePaneButton:"閉じる",returnToCallButtonAriaDescription:"通話に戻る",returnToCallButtonAriaLabel:"戻る"};var ja_JP = {call:call$7,chat:chat$7,callWithChat:callWithChat$7};
12385
+
12386
+ var call$6={cameraLabel:"카메라",cameraPermissionDenied:"브라우저에서 카메라에 대한 액세스를 차단하고 있습니다.",cameraTurnedOff:"카메라가 꺼져 있음",close:"닫기",complianceBannerNowOnlyRecording:"이제 이 모임의 녹음/녹화만 진행합니다.",complianceBannerNowOnlyTranscription:"이제 이 모임의 전사만 진행합니다.",complianceBannerRecordingAndTranscriptionSaved:"녹음/녹화와 전사를 저장하는 중입니다.",complianceBannerRecordingAndTranscriptionStarted:"녹음/녹화와 전사를 시작했습니다.",complianceBannerRecordingAndTranscriptionStopped:"녹음/녹화와 전사를 중단했습니다.",complianceBannerRecordingSaving:"녹음/녹화를 저장하는 중입니다.",complianceBannerRecordingStarted:"녹음/녹화를 시작했습니다.",complianceBannerRecordingStopped:"녹음/녹화를 중단했습니다.",complianceBannerTranscriptionStarted:"전사를 시작했습니다.",complianceBannerTranscriptionConsent:"참가하면 이 모임이 전사되는 것에 동의하게 됩니다.",complianceBannerTranscriptionSaving:"전사를 저장하는 중입니다.",complianceBannerTranscriptionStopped:"전사를 중단했습니다.",configurationPageTitle:"통화 시작",defaultPlaceHolder:"옵션 선택",failedToJoinCallDueToNoNetworkMoreDetails:"네트워크 문제로 인해 통화 연결이 끊어졌습니다. 연결을 확인하고 다시 참가하세요.",failedToJoinCallDueToNoNetworkTitle:"통화 연결 끊김",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"통화에 참가할 수 있는 권한이 없습니다. 실수라면 통화에 다시 참가하세요.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"대기실에서 해제됐습니다.",learnMore:"자세한 정보",leftCallMoreDetails:"실수라면 통화에 다시 참가하세요.",leftCallTitle:"통화를 종료했습니다.",lobbyScreenConnectingToCallTitle:"통화에 참가",lobbyScreenWaitingToBeAdmittedTitle:"승인을 기다리는 중",microphonePermissionDenied:"브라우저에서 마이크에 대한 액세스를 차단하고 있습니다.",mutedMessage:"음소거 되었습니다.",networkReconnectMoreDetails:"문제가 발생한 것 같습니다. 통화에 다시 연결하려고 합니다.",networkReconnectTitle:"잠시만",privacyPolicy:"개인 정보 취급 방침",rejoinCallButtonLabel:"통화 다시 참가",removedFromCallMoreDetails:"다른 참가자가 귀하를 통화에서 제거했습니다.",removedFromCallTitle:"통화에서 제거됐습니다.",soundLabel:"소리",startCallButtonLabel:"통화 시작",microphoneToggleInLobbyNotAllowed:"대기실에 있는 동안에는 음소거하거나 음소거를 해제할 수 없습니다."};var chat$6={chatListHeader:"채팅 참가자"};var callWithChat$6={peopleButtonLabel:"사용자",peopleButtonTooltipOpen:"참가자 표시",peopleButtonTooltipClose:"참가자 숨기기",chatButtonLabel:"채팅",chatButtonTooltipClosedWithMessageCount:"채팅 표시({unreadMessagesCount} 읽지 않음)",chatButtonTooltipOpen:"채팅 표시",chatButtonTooltipClose:"채팅 숨기기",moreDrawerAudioDeviceMenuTitle:"오디오 장치",moreDrawerMicrophoneMenuTitle:"마이크",moreDrawerSpeakerMenuTitle:"발화자",moreDrawerButtonLabel:"기타 옵션",moreDrawerButtonTooltip:"기타 옵션",peoplePaneTitle:"사용자",peoplePaneSubTitle:"이 통화에서",chatPaneTitle:"채팅",chatButtonNewMessageNotificationLabel:"새 메시지",pictureInPictureTileAriaLabel:"비디오 피드입니다. 클릭하면 통화 화면으로 돌아갑니다.",removeMenuLabel:"제거",copyInviteLinkButtonLabel:"초대 링크 복사",dismissSidePaneButton:"닫기",returnToCallButtonAriaDescription:"통화로 돌아가기",returnToCallButtonAriaLabel:"뒤로"};var ko_KR = {call:call$6,chat:chat$6,callWithChat:callWithChat$6};
12387
+
12388
+ var call$5={cameraLabel:"Camera",cameraPermissionDenied:"Uw browser blokkeert de toegang tot uw camera",cameraTurnedOff:"Camera is uitgeschakeld",close:"Sluiten",complianceBannerNowOnlyRecording:"U bent nu alleen deze vergadering aan het opnemen.",complianceBannerNowOnlyTranscription:"U bent nu alleen deze vergadering aan het transcriberen.",complianceBannerRecordingAndTranscriptionSaved:"Opname en transcriptie worden opgeslagen.",complianceBannerRecordingAndTranscriptionStarted:"Opname en transcriptie zijn gestart.",complianceBannerRecordingAndTranscriptionStopped:"Opname en transcriptie zijn gestopt.",complianceBannerRecordingSaving:"De opname wordt opgeslagen.",complianceBannerRecordingStarted:"De opname is gestart.",complianceBannerRecordingStopped:"De opname is gestopt.",complianceBannerTranscriptionStarted:"Transcriptie is gestart.",complianceBannerTranscriptionConsent:"Door deel te nemen, geeft u toestemming voor het transcriberen van deze vergadering.",complianceBannerTranscriptionSaving:"Transcriptie wordt opgeslagen.",complianceBannerTranscriptionStopped:"Transcriptie is gestopt.",configurationPageTitle:"Een oproep starten",defaultPlaceHolder:"Een optie selecteren",failedToJoinCallDueToNoNetworkMoreDetails:"De verbinding is verbroken vanwege een netwerkprobleem. Controleer de verbinding en neem opnieuw deel.",failedToJoinCallDueToNoNetworkTitle:"Verbinding verbroken",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"U hebt geen toegang gekregen in het gesprek. Als dit een fout is, neemt u opnieuw deel aan het gesprek.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Verwijderd uit lobby",learnMore:"Meer informatie",leftCallMoreDetails:"Als dit een vergissing was, neemt u opnieuw deel aan het gesprek.",leftCallTitle:"U hebt het gesprek verlaten",lobbyScreenConnectingToCallTitle:"Deelnemen aan oproep",lobbyScreenWaitingToBeAdmittedTitle:"Wachten om te worden toegelaten",microphonePermissionDenied:"Uw browser blokkeert de toegang tot uw microfoon",mutedMessage:"Uw geluid is gedempt",networkReconnectMoreDetails:"Er is iets misgegaan. We proberen terug te gaan naar het gesprek.",networkReconnectTitle:"Wacht even",privacyPolicy:"Privacybeleid",rejoinCallButtonLabel:"Opnieuw deelnemen aan gesprek",removedFromCallMoreDetails:"Een andere deelnemer heeft u uit het gesprek verwijderd.",removedFromCallTitle:"U bent verwijderd",soundLabel:"Geluid",startCallButtonLabel:"Gesprek starten",microphoneToggleInLobbyNotAllowed:"Kan niet dempen of dempen opheffen in de lobby."};var chat$5={chatListHeader:"In deze chat"};var callWithChat$5={peopleButtonLabel:"Personen",peopleButtonTooltipOpen:"Deelnemers weergeven",peopleButtonTooltipClose:"Deelnemers verbergen",chatButtonLabel:"Chatten",chatButtonTooltipClosedWithMessageCount:"Chat weergeven ({unreadMessagesCount} ongelezen)",chatButtonTooltipOpen:"Chat weergeven",chatButtonTooltipClose:"Chat verbergen",moreDrawerAudioDeviceMenuTitle:"Audioapparaat",moreDrawerMicrophoneMenuTitle:"Microfoon",moreDrawerSpeakerMenuTitle:"Luidspreker",moreDrawerButtonLabel:"Meer opties",moreDrawerButtonTooltip:"Meer opties",peoplePaneTitle:"Personen",peoplePaneSubTitle:"In dit gesprek",chatPaneTitle:"Chatten",chatButtonNewMessageNotificationLabel:"Nieuw bericht",pictureInPictureTileAriaLabel:"Videofeeds. Klik om terug te keren naar het oproepscherm.",removeMenuLabel:"Verwijderen",copyInviteLinkButtonLabel:"Uitnodigingskoppeling kopiëren",dismissSidePaneButton:"Sluiten",returnToCallButtonAriaDescription:"Terug naar gesprek",returnToCallButtonAriaLabel:"Terug"};var nl_NL = {call:call$5,chat:chat$5,callWithChat:callWithChat$5};
12389
+
12390
+ var call$4={cameraLabel:"Câmera",cameraPermissionDenied:"Seu navegador está bloqueando o acesso à câmera",cameraTurnedOff:"Sua câmera está desativada",close:"Fechar",complianceBannerNowOnlyRecording:"Você agora está apenas gravando esta reunião.",complianceBannerNowOnlyTranscription:"Você agora está apenas transcrevendo esta reunião.",complianceBannerRecordingAndTranscriptionSaved:"A gravação e a transcrição estão sendo salvas.",complianceBannerRecordingAndTranscriptionStarted:"A gravação e a transcrição foram iniciadas.",complianceBannerRecordingAndTranscriptionStopped:"A gravação e a transcrição foram interrompidas.",complianceBannerRecordingSaving:"A gravação está sendo salva.",complianceBannerRecordingStarted:"A gravação foi iniciada.",complianceBannerRecordingStopped:"A gravação foi interrompida.",complianceBannerTranscriptionStarted:"A transcrição foi iniciada.",complianceBannerTranscriptionConsent:"Ao ingressar, você está dando consentimento para que esta reunião seja transcrita.",complianceBannerTranscriptionSaving:"A transcrição está sendo salva.",complianceBannerTranscriptionStopped:"A transcrição foi interrompida.",configurationPageTitle:"Iniciar uma chamada",defaultPlaceHolder:"Selecionar uma opção",failedToJoinCallDueToNoNetworkMoreDetails:"A chamada foi desconectada devido a um problema de rede. Verifique sua conexão e ingresse novamente.",failedToJoinCallDueToNoNetworkTitle:"Chamada desconectada",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Você não recebeu entrada na chamada. Se isso foi um erro, ingresse novamente na chamada.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Ignorado do lobby",learnMore:"Saber mais",leftCallMoreDetails:"Se isso foi um erro, ingresse novamente na chamada.",leftCallTitle:"Você saiu da chamada",lobbyScreenConnectingToCallTitle:"Ingressando na chamada",lobbyScreenWaitingToBeAdmittedTitle:"Esperando para ser admitido",microphonePermissionDenied:"Seu navegador está bloqueando o acesso ao microfone",mutedMessage:"Você está com o mudo ativado",networkReconnectMoreDetails:"Parece que algo deu errado. Estamos tentando retornar à chamada.",networkReconnectTitle:"Em espera",privacyPolicy:"Política de privacidade",rejoinCallButtonLabel:"Reingressar na chamada",removedFromCallMoreDetails:"Outro participante removeu você da chamada.",removedFromCallTitle:"Você foi removido",soundLabel:"Som",startCallButtonLabel:"Iniciar chamada",microphoneToggleInLobbyNotAllowed:"Não é possível ativar ou desativar mudo enquanto estiver no lobby."};var chat$4={chatListHeader:"Neste chat"};var callWithChat$4={peopleButtonLabel:"Pessoas",peopleButtonTooltipOpen:"Mostrar Participantes",peopleButtonTooltipClose:"Ocultar participantes",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Mostrar chat ({unreadMessagesCount} não lido)",chatButtonTooltipOpen:"Mostrar chat",chatButtonTooltipClose:"Ocultar chat",moreDrawerAudioDeviceMenuTitle:"Dispositivo de Áudio",moreDrawerMicrophoneMenuTitle:"Microfone",moreDrawerSpeakerMenuTitle:"Alto-falante",moreDrawerButtonLabel:"Mais opções",moreDrawerButtonTooltip:"Mais opções",peoplePaneTitle:"Pessoas",peoplePaneSubTitle:"Nesta chamada",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nova mensagem",pictureInPictureTileAriaLabel:"Feeds de vídeo. Clique para retornar à tela de chamada.",removeMenuLabel:"Remover",copyInviteLinkButtonLabel:"Copiar o link de convite",dismissSidePaneButton:"Fechar",returnToCallButtonAriaDescription:"Retornar à Chamada",returnToCallButtonAriaLabel:"Voltar"};var pt_BR = {call:call$4,chat:chat$4,callWithChat:callWithChat$4};
12391
+
12392
+ var call$3={cameraLabel:"Камера",cameraPermissionDenied:"Браузер блокирует доступ к вашей камере",cameraTurnedOff:"Камера выключена",close:"Закрыть",complianceBannerNowOnlyRecording:"Сейчас для этого собрания ведется только запись.",complianceBannerNowOnlyTranscription:"Сейчас для этого собрания ведется только транскрибирование.",complianceBannerRecordingAndTranscriptionSaved:"Сохранение записи и транскрибирования.",complianceBannerRecordingAndTranscriptionStarted:"Начата запись и транскрибирование.",complianceBannerRecordingAndTranscriptionStopped:"Запись и транскрибирование остановлены.",complianceBannerRecordingSaving:"Сохранение записи.",complianceBannerRecordingStarted:"Запись начата.",complianceBannerRecordingStopped:"Запись остановлена.",complianceBannerTranscriptionStarted:"Транскрибирование запущено.",complianceBannerTranscriptionConsent:"Присоединяясь, вы даете согласие на транскрибирование этого собрания.",complianceBannerTranscriptionSaving:"Сохранение транскрибирования.",complianceBannerTranscriptionStopped:"Транскрибирование остановлено.",configurationPageTitle:"Позвонить",defaultPlaceHolder:"Выберите один из вариантов",failedToJoinCallDueToNoNetworkMoreDetails:"Звонок был отключен из-за проблемы с сетью. Проверьте подключение и присоединитесь еще раз.",failedToJoinCallDueToNoNetworkTitle:"Вызов прерван",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Вам не предоставили доступ к беседе. Если это произошло по ошибке, заново присоединитесь к беседе.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Вы были удалены из \"зала ожидания\"",learnMore:"Подробнее",leftCallMoreDetails:"Если это произошло по ошибке, заново присоединитесь к беседе.",leftCallTitle:"Вы покинули беседу",lobbyScreenConnectingToCallTitle:"Подключение к звонку",lobbyScreenWaitingToBeAdmittedTitle:"Ожидание допуска",microphonePermissionDenied:"Браузер блокирует доступ к вашему микрофону",mutedMessage:"Ваш звук отключен",networkReconnectMoreDetails:"Похоже, что-то пошло не так. Мы пытаемся вернуться к звонку.",networkReconnectTitle:"Подождите",privacyPolicy:"Политика конфиденциальности",rejoinCallButtonLabel:"Повторно присоединиться к звонку",removedFromCallMoreDetails:"Другой участник удалил вас из беседы.",removedFromCallTitle:"Вы были удалены",soundLabel:"Звук",startCallButtonLabel:"Начать звонок",microphoneToggleInLobbyNotAllowed:"Невозможно отключить или включить звук, находясь в \"зале ожидания\"."};var chat$3={chatListHeader:"В этом чате"};var callWithChat$3={peopleButtonLabel:"Люди",peopleButtonTooltipOpen:"Показать участников",peopleButtonTooltipClose:"Скрыть участников",chatButtonLabel:"Чат",chatButtonTooltipClosedWithMessageCount:"Показать чат (непрочитано: {unreadMessagesCount})",chatButtonTooltipOpen:"Показать чат",chatButtonTooltipClose:"Скрыть чат",moreDrawerAudioDeviceMenuTitle:"Звуковое устройство",moreDrawerMicrophoneMenuTitle:"Микрофон",moreDrawerSpeakerMenuTitle:"Динамик",moreDrawerButtonLabel:"Дополнительные параметры",moreDrawerButtonTooltip:"Дополнительные параметры",peoplePaneTitle:"Люди",peoplePaneSubTitle:"В этом звонке",chatPaneTitle:"Чат",chatButtonNewMessageNotificationLabel:"Новое сообщение",pictureInPictureTileAriaLabel:"Ленты видео. Щелкните, чтобы вернуться на экран вызова.",removeMenuLabel:"Удалить",copyInviteLinkButtonLabel:"Копировать ссылку с приглашением",dismissSidePaneButton:"Закрыть",returnToCallButtonAriaDescription:"Вернуться к звонку",returnToCallButtonAriaLabel:"Назад"};var ru_RU = {call:call$3,chat:chat$3,callWithChat:callWithChat$3};
12393
+
12394
+ var call$2={cameraLabel:"Kamera",cameraPermissionDenied:"Tarayıcınız kameranıza erişimi engelliyor",cameraTurnedOff:"Kameranız kapatıldı",close:"Kapat",complianceBannerNowOnlyRecording:"Şu anda yalnızca bu toplantıyı kaydediyorsunuz.",complianceBannerNowOnlyTranscription:"Şu anda yalnızca bu toplantının dökümünü oluşturuyorsunuz.",complianceBannerRecordingAndTranscriptionSaved:"Kayıt ve döküm kaydediliyor.",complianceBannerRecordingAndTranscriptionStarted:"Kayıt ve döküm başlatıldı.",complianceBannerRecordingAndTranscriptionStopped:"Kayıt ve döküm durduruldu.",complianceBannerRecordingSaving:"Kayıt kaydediliyor.",complianceBannerRecordingStarted:"Kayıt başladı.",complianceBannerRecordingStopped:"Kayıt durduruldu.",complianceBannerTranscriptionStarted:"Döküm başlatıldı.",complianceBannerTranscriptionConsent:"Katılarak bu toplantının dökümünün çıkarılmasına onay verirsiniz.",complianceBannerTranscriptionSaving:"Döküm kaydediliyor.",complianceBannerTranscriptionStopped:"Döküm durduruldu.",configurationPageTitle:"Arama başlatın",defaultPlaceHolder:"Bir seçenek belirleyin",failedToJoinCallDueToNoNetworkMoreDetails:"Bir ağ sorunu nedeniyle arama bağlantısı kesildi. Bağlantınızı kontrol edin ve yeniden katılın.",failedToJoinCallDueToNoNetworkTitle:"Arama kesildi",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Aramaya katılmanıza izin verilmedi. Bu işlem yanlışlıkla yapıldıysa aramaya yeniden katılın.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Lobiden çıkarıldı",learnMore:"Daha fazla bilgi edinin",leftCallMoreDetails:"Bu bir hataysa aramaya yeniden katılın.",leftCallTitle:"Aramadan ayrıldınız",lobbyScreenConnectingToCallTitle:"Aramaya katılıyorsunuz",lobbyScreenWaitingToBeAdmittedTitle:"Kabul edilmeyi bekliyor",microphonePermissionDenied:"Tarayıcınız mikrofonunuza erişimi engelliyor",mutedMessage:"Sesiniz kapatıldı",networkReconnectMoreDetails:"Bir sorun oluştu gibi görünüyor. Çağrıya geri alınmaya çalışılıyor.",networkReconnectTitle:"Bekleyin",privacyPolicy:"Gizlilik ilkesi",rejoinCallButtonLabel:"Çağrıya yeniden katıl",removedFromCallMoreDetails:"Başka bir katılımcı sizi aramadan çıkardı.",removedFromCallTitle:"Çıkarıldınız",soundLabel:"Ses",startCallButtonLabel:"Arama başlat",microphoneToggleInLobbyNotAllowed:"Lobideyken sesi kapatılamaz veya açılamaz."};var chat$2={chatListHeader:"Bu sohbette"};var callWithChat$2={peopleButtonLabel:"Kişiler",peopleButtonTooltipOpen:"Katılımcıları göster",peopleButtonTooltipClose:"Katılımcıları gizle",chatButtonLabel:"Sohbet",chatButtonTooltipClosedWithMessageCount:"Sohbeti göster ({unreadMessagesCount} okunmamış)",chatButtonTooltipOpen:"Sohbeti göster",chatButtonTooltipClose:"Sohbeti gizle",moreDrawerAudioDeviceMenuTitle:"Ses Cihazı",moreDrawerMicrophoneMenuTitle:"Mikrofon",moreDrawerSpeakerMenuTitle:"Hoparlör",moreDrawerButtonLabel:"Diğer seçenekler",moreDrawerButtonTooltip:"Diğer seçenekler",peoplePaneTitle:"Kişiler",peoplePaneSubTitle:"Bu aramada",chatPaneTitle:"Sohbet",chatButtonNewMessageNotificationLabel:"Yeni İleti",pictureInPictureTileAriaLabel:"Video Akışları. Çağrı ekranına dönmek için tıklayın.",removeMenuLabel:"Kaldır",copyInviteLinkButtonLabel:"Davet bağlantısını kopyala",dismissSidePaneButton:"Kapat",returnToCallButtonAriaDescription:"Aramaya Dön",returnToCallButtonAriaLabel:"Geri"};var tr_TR = {call:call$2,chat:chat$2,callWithChat:callWithChat$2};
12395
+
12396
+ var call$1={cameraLabel:"照相机",cameraPermissionDenied:"你的浏览器正在阻止对相机的访问",cameraTurnedOff:"你的相机已关闭",close:"关闭",complianceBannerNowOnlyRecording:"现在仅录制此会议。",complianceBannerNowOnlyTranscription:"现在仅听录此会议。",complianceBannerRecordingAndTranscriptionSaved:"正在保存录制和听录。",complianceBannerRecordingAndTranscriptionStarted:"录制和听录已开始。",complianceBannerRecordingAndTranscriptionStopped:"录制和听录已停止。",complianceBannerRecordingSaving:"正在保存录制。",complianceBannerRecordingStarted:"录制已开始。",complianceBannerRecordingStopped:"录制已停止。",complianceBannerTranscriptionStarted:"听录已开始。",complianceBannerTranscriptionConsent:"加入即表示你同意转录此会议。",complianceBannerTranscriptionSaving:"正在保存听录。",complianceBannerTranscriptionStopped:"听录已停止。",configurationPageTitle:"开始通话",defaultPlaceHolder:"选择一个选项",failedToJoinCallDueToNoNetworkMoreDetails:"由于网络问题,呼叫已断开连接。请检查你的连接,然后重新加入。",failedToJoinCallDueToNoNetworkTitle:"通话已断开",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"未在通话中向你授予条目。如果这是一个错误,请重新加入呼叫。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"已从大厅中关闭",learnMore:"了解详细信息",leftCallMoreDetails:"如果这是一个错误,请重新加入呼叫。",leftCallTitle:"你已离开通话",lobbyScreenConnectingToCallTitle:"加入通话",lobbyScreenWaitingToBeAdmittedTitle:"正在等待被拒绝",microphonePermissionDenied:"你的浏览器正在阻止对麦克风的访问",mutedMessage:"你已静音",networkReconnectMoreDetails:"似乎出现了问题。我们正在努力恢复通话。",networkReconnectTitle:"稍等",privacyPolicy:"隐私策略",rejoinCallButtonLabel:"重新加入呼叫",removedFromCallMoreDetails:"另一名参与者已将你从通话中删除。",removedFromCallTitle:"你已被删除",soundLabel:"声音",startCallButtonLabel:"开始通话",microphoneToggleInLobbyNotAllowed:"在大厅中时无法静音或取消静音。"};var chat$1={chatListHeader:"在此聊天中"};var callWithChat$1={peopleButtonLabel:"人员",peopleButtonTooltipOpen:"显示参与者",peopleButtonTooltipClose:"隐藏参与者",chatButtonLabel:"聊天",chatButtonTooltipClosedWithMessageCount:"显示聊天({unreadMessagesCount} 条未读)",chatButtonTooltipOpen:"显示聊天",chatButtonTooltipClose:"隐藏聊天",moreDrawerAudioDeviceMenuTitle:"音频设备",moreDrawerMicrophoneMenuTitle:"麦克风",moreDrawerSpeakerMenuTitle:"扬声器",moreDrawerButtonLabel:"更多选项",moreDrawerButtonTooltip:"更多选项",peoplePaneTitle:"人员",peoplePaneSubTitle:"在此通话中",chatPaneTitle:"聊天",chatButtonNewMessageNotificationLabel:"新建消息",pictureInPictureTileAriaLabel:"视频源。单击以返回到通话屏幕。",removeMenuLabel:"删除",copyInviteLinkButtonLabel:"复制邀请链接",dismissSidePaneButton:"关闭",returnToCallButtonAriaDescription:"返回通话",returnToCallButtonAriaLabel:"返回"};var zh_CN = {call:call$1,chat:chat$1,callWithChat:callWithChat$1};
12397
+
12398
+ var call={cameraLabel:"相機",cameraPermissionDenied:"您的瀏覽器禁止存取您的相機",cameraTurnedOff:"您的相機已關閉",close:"關閉",complianceBannerNowOnlyRecording:"您現在只會錄製此會議。",complianceBannerNowOnlyTranscription:"您現在只會轉錄此會議。",complianceBannerRecordingAndTranscriptionSaved:"正在儲存錄製和轉錄。",complianceBannerRecordingAndTranscriptionStarted:"已開始錄製並進行轉錄。",complianceBannerRecordingAndTranscriptionStopped:"已停止錄製與轉錄。",complianceBannerRecordingSaving:"正在儲存錄製內容。",complianceBannerRecordingStarted:"已開始錄製。",complianceBannerRecordingStopped:"已停止錄製。",complianceBannerTranscriptionStarted:"已開始轉錄。",complianceBannerTranscriptionConsent:"一旦加入,即表示您同意轉譯此會議。",complianceBannerTranscriptionSaving:"正在儲存轉錄。",complianceBannerTranscriptionStopped:"已停止轉錄。",configurationPageTitle:"開始通話",defaultPlaceHolder:"選取選項",failedToJoinCallDueToNoNetworkMoreDetails:"由於網路問題,通話已中斷連線。檢查您的連線並再次加入。",failedToJoinCallDueToNoNetworkTitle:"通話已斷線",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"您未被授予加入通話的權限。如果有誤,請重新加入通話。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"已從大廳關閉",learnMore:"深入了解",leftCallMoreDetails:"如果有誤,請重新加入通話。",leftCallTitle:"您已離開通話",lobbyScreenConnectingToCallTitle:"正在加入通話",lobbyScreenWaitingToBeAdmittedTitle:"正在等候認可",microphonePermissionDenied:"您的瀏覽器禁止存取您的麥克風",mutedMessage:"您已設為靜音",networkReconnectMoreDetails:"似乎發生錯誤。我們正在嘗試讓您返回通話。",networkReconnectTitle:"請稍候",privacyPolicy:"隱私權原則",rejoinCallButtonLabel:"重新加入通話",removedFromCallMoreDetails:"另一名參與者已將您自通話中移除。",removedFromCallTitle:"您已遭移除",soundLabel:"音效",startCallButtonLabel:"開始通話",microphoneToggleInLobbyNotAllowed:"無法在大廳中靜音或取消靜音。"};var chat={chatListHeader:"在此聊天中"};var callWithChat={peopleButtonLabel:"人員",peopleButtonTooltipOpen:"顯示參與者",peopleButtonTooltipClose:"隱藏參與者",chatButtonLabel:"聊天",chatButtonTooltipClosedWithMessageCount:"顯示聊天 ({unreadMessagesCount} 個未讀取)",chatButtonTooltipOpen:"顯示聊天",chatButtonTooltipClose:"隱藏聊天",moreDrawerAudioDeviceMenuTitle:"音訊裝置",moreDrawerMicrophoneMenuTitle:"麥克風",moreDrawerSpeakerMenuTitle:"揚聲器",moreDrawerButtonLabel:"更多選項",moreDrawerButtonTooltip:"更多選項",peoplePaneTitle:"人員",peoplePaneSubTitle:"在此通話中",chatPaneTitle:"聊天",chatButtonNewMessageNotificationLabel:"新訊息",pictureInPictureTileAriaLabel:"影片摘要。按一下以返回通話畫面。",removeMenuLabel:"移除",copyInviteLinkButtonLabel:"複製邀請連結",dismissSidePaneButton:"關閉",returnToCallButtonAriaDescription:"返回通話",returnToCallButtonAriaLabel:"返回"};var zh_TW = {call:call,chat:chat,callWithChat:callWithChat};
12399
+
12400
+ // Copyright (c) Microsoft Corporation.
12401
+ const createCompositeStrings = (localizedStrings) => {
12402
+ const strings = Object.assign({}, en_US);
12403
+ Object.keys(localizedStrings).forEach((key) => {
12404
+ strings[key] = Object.assign(Object.assign({}, strings[key]), localizedStrings[key]);
12405
+ });
12406
+ return strings;
12407
+ };
12408
+ /**
12409
+ * Locale for English (US)
12410
+ *
12411
+ * @public
12412
+ */
12413
+ const COMPOSITE_LOCALE_EN_US = {
12414
+ component: COMPONENT_LOCALE_EN_US,
12415
+ strings: en_US
12416
+ };
12417
+ /**
12418
+ * Locale for English (British)
12419
+ *
12420
+ * @public
12421
+ */
12422
+ const COMPOSITE_LOCALE_EN_GB = {
12423
+ component: COMPONENT_LOCALE_EN_GB,
12424
+ strings: createCompositeStrings(en_GB)
12425
+ };
12426
+ /**
12427
+ * Locale for German (Germany)
12428
+ *
12429
+ * @public
12430
+ */
12431
+ const COMPOSITE_LOCALE_DE_DE = {
12432
+ component: COMPONENT_LOCALE_DE_DE,
12433
+ strings: createCompositeStrings(de_DE)
12434
+ };
12435
+ /**
12436
+ * Locale for Spanish (Spain)
12437
+ *
12438
+ * @public
12439
+ */
12440
+ const COMPOSITE_LOCALE_ES_ES = {
12441
+ component: COMPONENT_LOCALE_ES_ES,
12442
+ strings: createCompositeStrings(es_ES)
12443
+ };
12444
+ /**
12445
+ * Locale for French (France)
12446
+ *
12447
+ * @public
12448
+ */
12449
+ const COMPOSITE_LOCALE_FR_FR = {
12450
+ component: COMPONENT_LOCALE_FR_FR,
12451
+ strings: createCompositeStrings(fr_FR)
12452
+ };
12453
+ /**
12454
+ * Locale for Italian (Italy)
12455
+ *
12456
+ * @public
12457
+ */
12458
+ const COMPOSITE_LOCALE_IT_IT = {
12459
+ component: COMPONENT_LOCALE_IT_IT,
12460
+ strings: createCompositeStrings(it_IT)
12461
+ };
12462
+ /**
12463
+ * Locale for Japanese (Japan)
12464
+ *
12465
+ * @public
12466
+ */
12467
+ const COMPOSITE_LOCALE_JA_JP = {
12468
+ component: COMPONENT_LOCALE_JA_JP,
12469
+ strings: createCompositeStrings(ja_JP)
12470
+ };
12471
+ /**
12472
+ * Locale for Korean (South Korea)
12473
+ *
12474
+ * @public
12475
+ */
12476
+ const COMPOSITE_LOCALE_KO_KR = {
12477
+ component: COMPONENT_LOCALE_KO_KR,
12478
+ strings: createCompositeStrings(ko_KR)
12479
+ };
12480
+ /**
12481
+ * Locale for Dutch (Netherlands)
12482
+ *
12483
+ * @public
12484
+ */
12485
+ const COMPOSITE_LOCALE_NL_NL = {
12486
+ component: COMPONENT_LOCALE_NL_NL,
12487
+ strings: createCompositeStrings(nl_NL)
12488
+ };
12489
+ /**
12490
+ * Locale for Portuguese (Brazil)
12491
+ *
12492
+ * @public
12493
+ */
12494
+ const COMPOSITE_LOCALE_PT_BR = {
12495
+ component: COMPONENT_LOCALE_PT_BR,
12496
+ strings: createCompositeStrings(pt_BR)
12497
+ };
12498
+ /**
12499
+ * Locale for Russian (Russia)
12500
+ *
12501
+ * @public
12502
+ */
12503
+ const COMPOSITE_LOCALE_RU_RU = {
12504
+ component: COMPONENT_LOCALE_RU_RU,
12505
+ strings: createCompositeStrings(ru_RU)
12506
+ };
12507
+ /**
12508
+ * Locale for Turkish (Turkey)
12509
+ *
12510
+ * @public
12511
+ */
12512
+ const COMPOSITE_LOCALE_TR_TR = {
12513
+ component: COMPONENT_LOCALE_TR_TR,
12514
+ strings: createCompositeStrings(tr_TR)
12515
+ };
12516
+ /**
12517
+ * Locale for Chinese (Mainland China)
12518
+ *
12519
+ * @public
12520
+ */
12521
+ const COMPOSITE_LOCALE_ZH_CN = {
12522
+ component: COMPONENT_LOCALE_ZH_CN,
12523
+ strings: createCompositeStrings(zh_CN)
12524
+ };
12525
+ /**
12526
+ * Locale for Chinese (Taiwan)
12527
+ *
12528
+ * @public
12529
+ */
12530
+ const COMPOSITE_LOCALE_ZH_TW = {
12531
+ component: COMPONENT_LOCALE_ZH_TW,
12532
+ strings: createCompositeStrings(zh_TW)
12533
+ };
12534
+
12535
+ // Copyright (c) Microsoft Corporation.
12536
+ /**
12537
+ * Context for providing localized strings to components
12538
+ *
12539
+ * @private
12540
+ */
12541
+ const LocaleContext = React.createContext(COMPOSITE_LOCALE_EN_US);
12542
+ /**
12543
+ * Provider to provide localized strings for this library's composites.
12544
+ *
12545
+ * @private
12546
+ */
12547
+ const LocalizationProvider = (props) => {
12548
+ const { locale, children } = props;
12549
+ return (React__default['default'].createElement(LocaleContext.Provider, { value: locale },
12550
+ React__default['default'].createElement(LocalizationProvider$1, { locale: locale.component }, children)));
12551
+ };
12552
+ /**
12553
+ * @private
12554
+ */
12555
+ const useLocale = () => React.useContext(LocaleContext);
12556
+
11675
12557
  // Copyright (c) Microsoft Corporation.
11676
12558
  /**
11677
12559
  * @internal
@@ -11698,12 +12580,18 @@ const FileUploadButton = (props) => {
11698
12580
  background: 'transparent'
11699
12581
  }
11700
12582
  });
12583
+ /* @conditional-compile-remove(file-sharing) */
12584
+ const uploadFileButtonString = useLocale().strings.chat.uploadFile;
12585
+ const uploadFileButtonStringTrampoline = () => {
12586
+ // @conditional-compile-remove(file-sharing)
12587
+ return uploadFileButtonString;
12588
+ };
11701
12589
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
11702
12590
  React__default['default'].createElement(react.Stack, { verticalAlign: "center", horizontalAlign: "center", className: fileUploadButtonClassName, onClick: () => {
11703
12591
  var _a;
11704
12592
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
11705
12593
  } },
11706
- React__default['default'].createElement(react.IconButton, { className: iconButtonClassName },
12594
+ React__default['default'].createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: uploadFileButtonStringTrampoline() },
11707
12595
  React__default['default'].createElement(SendBoxAttachFileIconTrampoline, null))),
11708
12596
  React__default['default'].createElement("input", { ref: inputRef, hidden: true, multiple: multiple, accept: accept, type: "file", onClick: (e) => {
11709
12597
  // To ensure that `onChange` is fired even if the same file is picked again.
@@ -12291,251 +13179,78 @@ beforeDispose) => {
12291
13179
  React.useEffect(() => {
12292
13180
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
12293
13181
  return;
12294
- }
12295
- (() => __awaiter$9(void 0, void 0, void 0, function* () {
12296
- if (adapterRef.current) {
12297
- // Dispose the old adapter when a new one is created.
12298
- //
12299
- // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of
12300
- // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter
12301
- // creation.
12302
- if (beforeDisposeRef.current) {
12303
- yield beforeDisposeRef.current(adapterRef.current);
12304
- }
12305
- adapterRef.current.dispose();
12306
- adapterRef.current = undefined;
12307
- }
12308
- let newAdapter = yield createAzureCommunicationChatAdapter({
12309
- credential,
12310
- displayName,
12311
- endpoint,
12312
- threadId,
12313
- userId
12314
- });
12315
- if (afterCreateRef.current) {
12316
- newAdapter = yield afterCreateRef.current(newAdapter);
12317
- }
12318
- adapterRef.current = newAdapter;
12319
- setAdapter(newAdapter);
12320
- }))();
12321
- },
12322
- // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.
12323
- [adapterRef, afterCreateRef, beforeDisposeRef, credential, displayName, endpoint, threadId, userId]);
12324
- // Dispose any existing adapter when the component unmounts.
12325
- React.useEffect(() => {
12326
- return () => {
12327
- (() => __awaiter$9(void 0, void 0, void 0, function* () {
12328
- if (adapterRef.current) {
12329
- if (beforeDisposeRef.current) {
12330
- yield beforeDisposeRef.current(adapterRef.current);
12331
- }
12332
- adapterRef.current.dispose();
12333
- adapterRef.current = undefined;
12334
- }
12335
- }))();
12336
- };
12337
- }, []);
12338
- return adapter;
12339
- };
12340
- /**
12341
- * Create a {@link ChatAdapter} using the provided {@link StatefulChatClient}.
12342
- *
12343
- * Useful if you want to keep a reference to {@link StatefulChatClient}.
12344
- * Consider using {@link createAzureCommunicationChatAdapter} for a simpler API.
12345
- *
12346
- * @public
12347
- */
12348
- const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$9(void 0, void 0, void 0, function* () {
12349
- return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
12350
- });
12351
- const isChatError = (e) => {
12352
- return e['target'] !== undefined && e['innerError'] !== undefined;
12353
- };
12354
-
12355
- var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$d={chatListHeader:"In this chat"};var callWithChat$d={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButton:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12356
-
12357
- var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$c={chatListHeader:"In this chat"};var callWithChat$c={peopleButtonLabel:"People",peopleButtonTooltipContentOpen:"Show Participants",peopleButtonTooltipContentClose:"Hide Participants",chatButtonLabel:"Chat",chatButtonTooltipContentOpen:"Show Chat",chatButtonTooltipContentClose:"Hide Chat",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
12358
-
12359
- var call$b={cameraLabel:"Kamera",cameraPermissionDenied:"Ihr Browser blockiert den Zugriff auf Ihre Kamera.",cameraTurnedOff:"Ihre Kamera ist deaktiviert.",close:"Schließen",complianceBannerNowOnlyRecording:"Sie zeichnen nun nur diese Besprechung auf.",complianceBannerNowOnlyTranscription:"Sie transkribieren diese Besprechung jetzt nur noch.",complianceBannerRecordingAndTranscriptionSaved:"Aufzeichnung und Transkription werden gespeichert.",complianceBannerRecordingAndTranscriptionStarted:"Die Aufzeichnung und Transkription haben begonnen.",complianceBannerRecordingAndTranscriptionStopped:"Die Aufzeichnung und Transkription wurden beendet.",complianceBannerRecordingSaving:"Aufzeichnung wird gespeichert.",complianceBannerRecordingStarted:"Die Aufzeichnung wurde gestartet.",complianceBannerRecordingStopped:"Aufzeichnung wurde beendet.",complianceBannerTranscriptionStarted:"Die Transkription hat begonnen.",complianceBannerTranscriptionConsent:"Durch Ihre Teilnahme stimmen Sie zu, dass diese Besprechung transkribiert wird.",complianceBannerTranscriptionSaving:"Die Transkription wird gespeichert.",complianceBannerTranscriptionStopped:"Die Transkription wurde beendet.",configurationPageTitle:"Einen Anruf beginnen",defaultPlaceHolder:"Option auswählen",failedToJoinCallDueToNoNetworkMoreDetails:"Der Anruf wurde aufgrund eines Netzwerkproblems getrennt. Überprüfen Sie Ihre Verbindung, und treten Sie erneut bei.",failedToJoinCallDueToNoNetworkTitle:"Anruf unterbrochen",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Ihnen wurde keine Teilnahme am Anruf gewährt. Wenn dies ein Fehler war, treten Sie dem Anruf erneut bei.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Aus Wartebereich entlassen",learnMore:"Weitere Informationen",leftCallMoreDetails:"Wenn dies ein Fehler war, nehmen Sie erneut am Anruf teil.",leftCallTitle:"Sie haben den Anruf verlassen",lobbyScreenConnectingToCallTitle:"Teilnehmen am Anruf",lobbyScreenWaitingToBeAdmittedTitle:"Warten auf die Zulassung",microphonePermissionDenied:"Ihr Browser blockiert den Zugriff auf Ihr Mikrofon.",mutedMessage:"Sie sind stummgeschaltet.",networkReconnectMoreDetails:"Offensichtlich ist etwas schief gegangen. Wir versuchen, Sie wieder mit dem Anruf zu verbinden.",networkReconnectTitle:"Einen Augenblick bitte",privacyPolicy:"Datenschutzrichtlinie",rejoinCallButtonLabel:"Am Anruf erneut teilnehmen",removedFromCallMoreDetails:"Ein anderer Teilnehmer hat Sie aus dem Anruf entfernt.",removedFromCallTitle:"Sie wurden entfernt",soundLabel:"Sound",startCallButtonLabel:"Anruf beginnen",microphoneToggleInLobbyNotAllowed:"Stummschalten oder Aufheben der Stummschaltung im Wartebereich nicht zulässig."};var chat$b={chatListHeader:"In diesem Chat"};var callWithChat$b={peopleButtonLabel:"Personen",peopleButtonTooltipContentOpen:"Teilnehmer anzeigen",peopleButtonTooltipContentClose:"Teilnehmer ausblenden",chatButtonLabel:"Chat",chatButtonTooltipContentOpen:"Chat anzeigen",chatButtonTooltipContentClose:"Chat ausblenden",moreDrawerMicrophoneMenuTitle:"Mikrofon",moreDrawerSpeakerMenuTitle:"Lautsprecher",moreDrawerButtonLabel:"Weitere Optionen",moreDrawerButtonTooltip:"Weitere Optionen",peoplePaneTitle:"Personen",peoplePaneSubTitle:"In diesem Anruf",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Neue Nachricht",pictureInPictureTileAriaLabel:"Videofeeds. Klicken Sie hier, um zum Anrufbildschirm zurückzukehren.",removeMenuLabel:"Entfernen",copyInviteLinkButtonLabel:"Einladungslink kopieren"};var de_DE = {call:call$b,chat:chat$b,callWithChat:callWithChat$b};
12360
-
12361
- var call$a={cameraLabel:"Cámara",cameraPermissionDenied:"El explorador está bloqueando el acceso a la cámara",cameraTurnedOff:"La cámara está apagada",close:"Cerrar",complianceBannerNowOnlyRecording:"Solo está grabando esta reunión.",complianceBannerNowOnlyTranscription:"Solo está transcribiendo esta reunión.",complianceBannerRecordingAndTranscriptionSaved:"Se están guardando la grabación y la transcripción.",complianceBannerRecordingAndTranscriptionStarted:"Se han iniciado la grabación y la transcripción.",complianceBannerRecordingAndTranscriptionStopped:"Se han detenido la grabación y la transcripción.",complianceBannerRecordingSaving:"La grabación se está guardando.",complianceBannerRecordingStarted:"Se ha iniciado la grabación.",complianceBannerRecordingStopped:"La grabación se ha detenido.",complianceBannerTranscriptionStarted:"La transcripción se ha iniciado.",complianceBannerTranscriptionConsent:"Al unirse, da su consentimiento para que se transcriba esta reunión.",complianceBannerTranscriptionSaving:"Se está guardando la transcripción.",complianceBannerTranscriptionStopped:"La transcripción se ha detenido.",configurationPageTitle:"Iniciar una llamada",defaultPlaceHolder:"Seleccionar una opción",failedToJoinCallDueToNoNetworkMoreDetails:"Se desconectó la llamada debido a un problema de red. Compruebe la conexión y únase de nuevo.",failedToJoinCallDueToNoNetworkTitle:"Llamada desconectada",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"No se te concedió la entrada a la llamada. Si se trata de un error, vuelve a unirte.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Rechazado de la sala de espera",learnMore:"Más información",leftCallMoreDetails:"Si se trata de un error, vuelve a unirte a la llamada.",leftCallTitle:"Has abandonado la llamada",lobbyScreenConnectingToCallTitle:"Uniéndose a la llamada",lobbyScreenWaitingToBeAdmittedTitle:"Esperando a ser admitido",microphonePermissionDenied:"El explorador está bloqueando el acceso al micrófono",mutedMessage:"Estás silenciado",networkReconnectMoreDetails:"Parece que hubo un problema. Estamos intentando reconectar la llamada.",networkReconnectTitle:"Espere",privacyPolicy:"Directiva de privacidad",rejoinCallButtonLabel:"Volver a unirse a la llamada",removedFromCallMoreDetails:"Otro participante te ha eliminado de la llamada.",removedFromCallTitle:"Fuiste eliminado",soundLabel:"Sonido",startCallButtonLabel:"Iniciar llamada",microphoneToggleInLobbyNotAllowed:"No se puede silenciar ni reactivar el audio mientras se está en la sala de espera."};var chat$a={chatListHeader:"En este chat"};var callWithChat$a={peopleButtonLabel:"Contactos",peopleButtonTooltipContentOpen:"Mostrar participantes",peopleButtonTooltipContentClose:"Ocultar participantes",chatButtonLabel:"Chat",chatButtonTooltipContentOpen:"Mostrar chat",chatButtonTooltipContentClose:"Ocultar chat",moreDrawerMicrophoneMenuTitle:"Micrófono",moreDrawerSpeakerMenuTitle:"Altavoz",moreDrawerButtonLabel:"Más opciones",moreDrawerButtonTooltip:"Más opciones",peoplePaneTitle:"Contactos",peoplePaneSubTitle:"En esta llamada",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nuevo mensaje",pictureInPictureTileAriaLabel:"Fuentes de vídeo. Hacer clic para volver a la pantalla de la llamada.",removeMenuLabel:"Quitar",copyInviteLinkButtonLabel:"Copiar vínculo de invitación"};var es_ES = {call:call$a,chat:chat$a,callWithChat:callWithChat$a};
12362
-
12363
- var call$9={cameraLabel:"Appareil photo",cameraPermissionDenied:"Votre navigateur bloque l’accès à votre caméra",cameraTurnedOff:"Votre caméra est désactivée",close:"Fermer",complianceBannerNowOnlyRecording:"Vous n’enregistrez désormais que cette réunion.",complianceBannerNowOnlyTranscription:"À présent, vous ne transcrivez que cette réunion.",complianceBannerRecordingAndTranscriptionSaved:"Sauvegarde en cours de l’enregistrement et de la transcription.",complianceBannerRecordingAndTranscriptionStarted:"Démarrage de l’enregistrement et de la transcription.",complianceBannerRecordingAndTranscriptionStopped:"L’enregistrement et la transcription ont pris fin.",complianceBannerRecordingSaving:"Sauvegarde en cours de l'enregistrement.",complianceBannerRecordingStarted:"L’enregistrement a démarré.",complianceBannerRecordingStopped:"L’enregistrement a pris fin.",complianceBannerTranscriptionStarted:"Démarrage de la transcription.",complianceBannerTranscriptionConsent:"En participant, vous autorisez la transcription de cette réunion.",complianceBannerTranscriptionSaving:"Sauvegarde en cours de la transcription.",complianceBannerTranscriptionStopped:"La transcription a pris fin.",configurationPageTitle:"Lancer un appel",defaultPlaceHolder:"Sélectionnez une option",failedToJoinCallDueToNoNetworkMoreDetails:"L’appel a été déconnecté en raison d’un problème réseau. Vérifiez votre connexion et rejoignez-la à nouveau.",failedToJoinCallDueToNoNetworkTitle:"Appel déconnecté",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Vous n’avez pas reçu d’entrée dans l’appel. S’il s’agissait d’une erreur, rejoignez à nouveau l’appel.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Rejeté de la salle d’attente",learnMore:"En savoir plus",leftCallMoreDetails:"S’il s’agissait d’une erreur, rejoignez à nouveau l’appel.",leftCallTitle:"Vous avez quitté l’appel.",lobbyScreenConnectingToCallTitle:"Connexion à l'appel",lobbyScreenWaitingToBeAdmittedTitle:"En attente d’admission",microphonePermissionDenied:"Votre navigateur bloque l’accès à votre micro",mutedMessage:"Le son de votre micro est désactivé.",networkReconnectMoreDetails:"On dirait qu'une erreur est survenue. Nous tentons de vous reconnecter à l’appel.",networkReconnectTitle:"Patience",privacyPolicy:"Politique de confidentialité",rejoinCallButtonLabel:"Rejoindre l’appel à nouveau.",removedFromCallMoreDetails:"Un autre participant vous a supprimé de l’appel.",removedFromCallTitle:"Vous avez été supprimé.",soundLabel:"Son",startCallButtonLabel:"Lancer l'appel",microphoneToggleInLobbyNotAllowed:"Impossible de désactiver ou d’activer le son dans la salle d’attente."};var chat$9={chatListHeader:"Dans cette conversation"};var callWithChat$9={peopleButtonLabel:"Personnes",peopleButtonTooltipContentOpen:"Afficher les participants",peopleButtonTooltipContentClose:"Masquer les participants",chatButtonLabel:"Clavardage",chatButtonTooltipContentOpen:"Afficher la conversation",chatButtonTooltipContentClose:"Masquer la conversation",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Haut-parleur",moreDrawerButtonLabel:"Autres options",moreDrawerButtonTooltip:"Autres options",peoplePaneTitle:"Personnes",peoplePaneSubTitle:"Pendant cet appel",chatPaneTitle:"Clavardage",chatButtonNewMessageNotificationLabel:"Nouveau message",pictureInPictureTileAriaLabel:"Flux vidéo. Cliquez pour revenir à l’écran d’appel.",removeMenuLabel:"Supprimer",copyInviteLinkButtonLabel:"Copier le lien d'invitation"};var fr_FR = {call:call$9,chat:chat$9,callWithChat:callWithChat$9};
12364
-
12365
- var call$8={cameraLabel:"Fotocamera",cameraPermissionDenied:"Il browser blocca l'accesso alla fotocamera",cameraTurnedOff:"La videocamera è disabilitata",close:"Chiudi",complianceBannerNowOnlyRecording:"È in corso la registrazione solo di questa riunione.",complianceBannerNowOnlyTranscription:"È in corso la trascrizione solo di questa riunione.",complianceBannerRecordingAndTranscriptionSaved:"È in corso il salvataggio della registrazione e della trascrizione.",complianceBannerRecordingAndTranscriptionStarted:"Registrazione e trascrizione avviate.",complianceBannerRecordingAndTranscriptionStopped:"Registrazione e trascrizione interrotte.",complianceBannerRecordingSaving:"Salvataggio della registrazione in corso.",complianceBannerRecordingStarted:"Registrazione avviata.",complianceBannerRecordingStopped:"Registrazione arrestata.",complianceBannerTranscriptionStarted:"Trascrizione avviata.",complianceBannerTranscriptionConsent:"Partecipando, fornisci il consenso per la trascrizione di questa riunione.",complianceBannerTranscriptionSaving:"È in corso il salvataggio della trascrizione.",complianceBannerTranscriptionStopped:"Trascrizione interrotta.",configurationPageTitle:"Avvia una chiamata",defaultPlaceHolder:"Seleziona un'opzione",failedToJoinCallDueToNoNetworkMoreDetails:"La chiamata è stata disconnessa a causa di un problema di rete. Controlla la connessione e partecipa di nuovo.",failedToJoinCallDueToNoNetworkTitle:"Chiamata interrotta",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Non ti è stato concesso l’accesso alla chiamata. Se si è trattato di un errore, partecipa di nuovo alla chiamata.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Ignorato dalla sala di attesa",learnMore:"Ulteriori informazioni",leftCallMoreDetails:"Se si è trattato di un errore, partecipa di nuovo alla chiamata.",leftCallTitle:"Hai abbandonato la chiamata",lobbyScreenConnectingToCallTitle:"Partecipazione alla chiamata",lobbyScreenWaitingToBeAdmittedTitle:"In attesa di essere ammessi",microphonePermissionDenied:"Il browser blocca l'accesso al microfono",mutedMessage:"L'audio è disattivato.",networkReconnectMoreDetails:"Sembra si sia verificato un errore. Stiamo cercando di ristabilire la connessione alla chiamata.",networkReconnectTitle:"Attendi",privacyPolicy:"Informativa sulla privacy",rejoinCallButtonLabel:"Partecipa alla chiamata",removedFromCallMoreDetails:"Un altro partecipante ti ha rimosso dalla chiamata.",removedFromCallTitle:"Sei stato rimosso",soundLabel:"Suono",startCallButtonLabel:"Avvia chiamata",microphoneToggleInLobbyNotAllowed:"Impossibile attivare o disattivare l'audio nella sala di attesa."};var chat$8={chatListHeader:"In questa chat"};var callWithChat$8={peopleButtonLabel:"Persone",peopleButtonTooltipContentOpen:"Mostra partecipanti",peopleButtonTooltipContentClose:"Nascondi partecipanti",chatButtonLabel:"Chat",chatButtonTooltipContentOpen:"Mostra chat",chatButtonTooltipContentClose:"Nascondi chat",moreDrawerMicrophoneMenuTitle:"Microfono",moreDrawerSpeakerMenuTitle:"Altoparlante",moreDrawerButtonLabel:"Altre opzioni",moreDrawerButtonTooltip:"Altre opzioni",peoplePaneTitle:"Persone",peoplePaneSubTitle:"In questa chiamata",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nuovo messaggio",pictureInPictureTileAriaLabel:"Feed video. Fare clic per tornare alla schermata della chiamata.",removeMenuLabel:"Rimuovi",copyInviteLinkButtonLabel:"Copia il collegamento dell’invito"};var it_IT = {call:call$8,chat:chat$8,callWithChat:callWithChat$8};
12366
-
12367
- var call$7={cameraLabel:"カメラ",cameraPermissionDenied:"お使いのブラウザーがカメラへのアクセスをブロックしています",cameraTurnedOff:"カメラはオフになっています",close:"閉じる",complianceBannerNowOnlyRecording:"今はこの会議の録画のみを行っています。",complianceBannerNowOnlyTranscription:"この会議のトランスクリプトを作成しています。",complianceBannerRecordingAndTranscriptionSaved:"レコーディングとトランスクリプトを保存されました。",complianceBannerRecordingAndTranscriptionStarted:"レコーディングとトランスクリプトが開始されました。",complianceBannerRecordingAndTranscriptionStopped:"レコーディングとトランスクリプトを停止しました。",complianceBannerRecordingSaving:"レコーディングを保存しています。",complianceBannerRecordingStarted:"レコーディングを開始しました。",complianceBannerRecordingStopped:"レコーディングを停止しました。",complianceBannerTranscriptionStarted:"トランスクリプトが開始しました。",complianceBannerTranscriptionConsent:"参加すると、この会議のトランスクリプトの作成に同意したことになります。",complianceBannerTranscriptionSaving:"トランスクリプトを保存されました。",complianceBannerTranscriptionStopped:"トランスクリプトが停止しました。",configurationPageTitle:"通話を開始",defaultPlaceHolder:"オプションを選択する",failedToJoinCallDueToNoNetworkMoreDetails:"ネットワークの問題により、通話が切断されました。接続を確認して、もう一度参加してください。",failedToJoinCallDueToNoNetworkTitle:"通話が切断されました",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"通話のエントリが許可されませんでした。これが間違いだった場合は、通話に再参加してください。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"ロビーから消去しました",learnMore:"詳細情報",leftCallMoreDetails:"これが間違いだった場合は、通話に再度参加してください。",leftCallTitle:"通話を終了しました",lobbyScreenConnectingToCallTitle:"通話に参加中",lobbyScreenWaitingToBeAdmittedTitle:"承認待機中",microphonePermissionDenied:"お使いのブラウザーがマイクへのアクセスをブロックしています",mutedMessage:"ミュートになっています",networkReconnectMoreDetails:"問題が発生したようです。通話に戻ろうとしています。",networkReconnectTitle:"お待ちください",privacyPolicy:"プライバシー ポリシー",rejoinCallButtonLabel:"通話に再度参加",removedFromCallMoreDetails:"別の参加者があなたを通話から削除しました。",removedFromCallTitle:"削除されました",soundLabel:"音声",startCallButtonLabel:"通話を開始",microphoneToggleInLobbyNotAllowed:"ロビーにいる間はミュートまたはミュート解除できません。"};var chat$7={chatListHeader:"このチャット内"};var callWithChat$7={peopleButtonLabel:"ユーザー",peopleButtonTooltipContentOpen:"参加者を表示",peopleButtonTooltipContentClose:"参加者を非表示",chatButtonLabel:"チャット",chatButtonTooltipContentOpen:"チャットを表示",chatButtonTooltipContentClose:"チャットを非表示",moreDrawerMicrophoneMenuTitle:"マイク",moreDrawerSpeakerMenuTitle:"スピーカー",moreDrawerButtonLabel:"その他のオプション",moreDrawerButtonTooltip:"その他のオプション",peoplePaneTitle:"ユーザー",peoplePaneSubTitle:"この通話で",chatPaneTitle:"チャット",chatButtonNewMessageNotificationLabel:"新規メッセージ",pictureInPictureTileAriaLabel:"ビデオ フィード。 クリックすると通話画面に戻ります。",removeMenuLabel:"削除",copyInviteLinkButtonLabel:"招待用のリンクをコピー"};var ja_JP = {call:call$7,chat:chat$7,callWithChat:callWithChat$7};
12368
-
12369
- var call$6={cameraLabel:"카메라",cameraPermissionDenied:"브라우저에서 카메라에 대한 액세스를 차단하고 있습니다.",cameraTurnedOff:"카메라가 꺼져 있음",close:"닫기",complianceBannerNowOnlyRecording:"이제 이 모임의 녹음/녹화만 진행합니다.",complianceBannerNowOnlyTranscription:"이제 이 모임의 전사만 진행합니다.",complianceBannerRecordingAndTranscriptionSaved:"녹음/녹화와 전사를 저장하는 중입니다.",complianceBannerRecordingAndTranscriptionStarted:"녹음/녹화와 전사를 시작했습니다.",complianceBannerRecordingAndTranscriptionStopped:"녹음/녹화와 전사를 중단했습니다.",complianceBannerRecordingSaving:"녹음/녹화를 저장하는 중입니다.",complianceBannerRecordingStarted:"녹음/녹화를 시작했습니다.",complianceBannerRecordingStopped:"녹음/녹화를 중단했습니다.",complianceBannerTranscriptionStarted:"전사를 시작했습니다.",complianceBannerTranscriptionConsent:"참가하면 이 모임이 전사되는 것에 동의하게 됩니다.",complianceBannerTranscriptionSaving:"전사를 저장하는 중입니다.",complianceBannerTranscriptionStopped:"전사를 중단했습니다.",configurationPageTitle:"통화 시작",defaultPlaceHolder:"옵션 선택",failedToJoinCallDueToNoNetworkMoreDetails:"네트워크 문제로 인해 통화 연결이 끊어졌습니다. 연결을 확인하고 다시 참가하세요.",failedToJoinCallDueToNoNetworkTitle:"통화 연결 끊김",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"통화에 참가할 수 있는 권한이 없습니다. 실수라면 통화에 다시 참가하세요.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"대기실에서 해제됐습니다.",learnMore:"자세한 정보",leftCallMoreDetails:"실수라면 통화에 다시 참가하세요.",leftCallTitle:"통화를 종료했습니다.",lobbyScreenConnectingToCallTitle:"통화에 참가",lobbyScreenWaitingToBeAdmittedTitle:"승인을 기다리는 중",microphonePermissionDenied:"브라우저에서 마이크에 대한 액세스를 차단하고 있습니다.",mutedMessage:"음소거 되었습니다.",networkReconnectMoreDetails:"문제가 발생한 것 같습니다. 통화에 다시 연결하려고 합니다.",networkReconnectTitle:"잠시만",privacyPolicy:"개인 정보 취급 방침",rejoinCallButtonLabel:"통화 다시 참가",removedFromCallMoreDetails:"다른 참가자가 귀하를 통화에서 제거했습니다.",removedFromCallTitle:"통화에서 제거됐습니다.",soundLabel:"소리",startCallButtonLabel:"통화 시작",microphoneToggleInLobbyNotAllowed:"대기실에 있는 동안에는 음소거하거나 음소거를 해제할 수 없습니다."};var chat$6={chatListHeader:"채팅 참가자"};var callWithChat$6={peopleButtonLabel:"사용자",peopleButtonTooltipContentOpen:"프레젠테이션 표시",peopleButtonTooltipContentClose:"참가자 숨기기",chatButtonLabel:"채팅",chatButtonTooltipContentOpen:"채팅 표시",chatButtonTooltipContentClose:"채팅 숨기기",moreDrawerMicrophoneMenuTitle:"마이크",moreDrawerSpeakerMenuTitle:"발화자",moreDrawerButtonLabel:"기타 옵션",moreDrawerButtonTooltip:"기타 옵션",peoplePaneTitle:"사용자",peoplePaneSubTitle:"이 통화에서",chatPaneTitle:"채팅",chatButtonNewMessageNotificationLabel:"새 메시지",pictureInPictureTileAriaLabel:"비디오 피드입니다. 클릭하면 통화 화면으로 돌아갑니다.",removeMenuLabel:"제거",copyInviteLinkButtonLabel:"초대 링크 복사"};var ko_KR = {call:call$6,chat:chat$6,callWithChat:callWithChat$6};
12370
-
12371
- var call$5={cameraLabel:"Camera",cameraPermissionDenied:"Uw browser blokkeert de toegang tot uw camera",cameraTurnedOff:"Camera is uitgeschakeld",close:"Sluiten",complianceBannerNowOnlyRecording:"U bent nu alleen deze vergadering aan het opnemen.",complianceBannerNowOnlyTranscription:"U bent nu alleen deze vergadering aan het transcriberen.",complianceBannerRecordingAndTranscriptionSaved:"Opname en transcriptie worden opgeslagen.",complianceBannerRecordingAndTranscriptionStarted:"Opname en transcriptie zijn gestart.",complianceBannerRecordingAndTranscriptionStopped:"Opname en transcriptie zijn gestopt.",complianceBannerRecordingSaving:"De opname wordt opgeslagen.",complianceBannerRecordingStarted:"De opname is gestart.",complianceBannerRecordingStopped:"De opname is gestopt.",complianceBannerTranscriptionStarted:"Transcriptie is gestart.",complianceBannerTranscriptionConsent:"Door deel te nemen, geeft u toestemming voor het transcriberen van deze vergadering.",complianceBannerTranscriptionSaving:"Transcriptie wordt opgeslagen.",complianceBannerTranscriptionStopped:"Transcriptie is gestopt.",configurationPageTitle:"Een oproep starten",defaultPlaceHolder:"Een optie selecteren",failedToJoinCallDueToNoNetworkMoreDetails:"De verbinding is verbroken vanwege een netwerkprobleem. Controleer de verbinding en neem opnieuw deel.",failedToJoinCallDueToNoNetworkTitle:"Verbinding verbroken",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"U hebt geen toegang gekregen in het gesprek. Als dit een fout is, neemt u opnieuw deel aan het gesprek.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Verwijderd uit lobby",learnMore:"Meer informatie",leftCallMoreDetails:"Als dit een vergissing was, neemt u opnieuw deel aan het gesprek.",leftCallTitle:"U hebt het gesprek verlaten",lobbyScreenConnectingToCallTitle:"Deelnemen aan oproep",lobbyScreenWaitingToBeAdmittedTitle:"Wachten om te worden toegelaten",microphonePermissionDenied:"Uw browser blokkeert de toegang tot uw microfoon",mutedMessage:"Uw geluid is gedempt",networkReconnectMoreDetails:"Er is iets misgegaan. We proberen terug te gaan naar het gesprek.",networkReconnectTitle:"Wacht even",privacyPolicy:"Privacybeleid",rejoinCallButtonLabel:"Opnieuw deelnemen aan gesprek",removedFromCallMoreDetails:"Een andere deelnemer heeft u uit het gesprek verwijderd.",removedFromCallTitle:"U bent verwijderd",soundLabel:"Geluid",startCallButtonLabel:"Gesprek starten",microphoneToggleInLobbyNotAllowed:"Kan niet dempen of dempen opheffen in de lobby."};var chat$5={chatListHeader:"In deze chat"};var callWithChat$5={peopleButtonLabel:"Personen",peopleButtonTooltipContentOpen:"Deelnemers weergeven",peopleButtonTooltipContentClose:"Deelnemers verbergen",chatButtonLabel:"Chatten",chatButtonTooltipContentOpen:"Chat weergeven",chatButtonTooltipContentClose:"Chat verbergen",moreDrawerMicrophoneMenuTitle:"Microfoon",moreDrawerSpeakerMenuTitle:"Luidspreker",moreDrawerButtonLabel:"Meer opties",moreDrawerButtonTooltip:"Meer opties",peoplePaneTitle:"Personen",peoplePaneSubTitle:"In dit gesprek",chatPaneTitle:"Chatten",chatButtonNewMessageNotificationLabel:"Nieuw bericht",pictureInPictureTileAriaLabel:"Videofeeds. Klik om terug te keren naar het oproepscherm.",removeMenuLabel:"Verwijderen",copyInviteLinkButtonLabel:"Uitnodigingskoppeling kopiëren"};var nl_NL = {call:call$5,chat:chat$5,callWithChat:callWithChat$5};
12372
-
12373
- var call$4={cameraLabel:"Câmera",cameraPermissionDenied:"Seu navegador está bloqueando o acesso à câmera",cameraTurnedOff:"Sua câmera está desativada",close:"Fechar",complianceBannerNowOnlyRecording:"Você agora está apenas gravando esta reunião.",complianceBannerNowOnlyTranscription:"Você agora está apenas transcrevendo esta reunião.",complianceBannerRecordingAndTranscriptionSaved:"A gravação e a transcrição estão sendo salvas.",complianceBannerRecordingAndTranscriptionStarted:"A gravação e a transcrição foram iniciadas.",complianceBannerRecordingAndTranscriptionStopped:"A gravação e a transcrição foram interrompidas.",complianceBannerRecordingSaving:"A gravação está sendo salva.",complianceBannerRecordingStarted:"A gravação foi iniciada.",complianceBannerRecordingStopped:"A gravação foi interrompida.",complianceBannerTranscriptionStarted:"A transcrição foi iniciada.",complianceBannerTranscriptionConsent:"Ao ingressar, você está dando consentimento para que esta reunião seja transcrita.",complianceBannerTranscriptionSaving:"A transcrição está sendo salva.",complianceBannerTranscriptionStopped:"A transcrição foi interrompida.",configurationPageTitle:"Iniciar uma chamada",defaultPlaceHolder:"Selecionar uma opção",failedToJoinCallDueToNoNetworkMoreDetails:"A chamada foi desconectada devido a um problema de rede. Verifique sua conexão e ingresse novamente.",failedToJoinCallDueToNoNetworkTitle:"Chamada desconectada",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Você não recebeu entrada na chamada. Se isso foi um erro, ingresse novamente na chamada.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Ignorado do lobby",learnMore:"Saber mais",leftCallMoreDetails:"Se isso foi um erro, ingresse novamente na chamada.",leftCallTitle:"Você saiu da chamada",lobbyScreenConnectingToCallTitle:"Ingressando na chamada",lobbyScreenWaitingToBeAdmittedTitle:"Esperando para ser admitido",microphonePermissionDenied:"Seu navegador está bloqueando o acesso ao microfone",mutedMessage:"Você está com o mudo ativado",networkReconnectMoreDetails:"Parece que algo deu errado. Estamos tentando retornar à chamada.",networkReconnectTitle:"Em espera",privacyPolicy:"Política de privacidade",rejoinCallButtonLabel:"Reingressar na chamada",removedFromCallMoreDetails:"Outro participante removeu você da chamada.",removedFromCallTitle:"Você foi removido",soundLabel:"Som",startCallButtonLabel:"Iniciar chamada",microphoneToggleInLobbyNotAllowed:"Não é possível ativar ou desativar mudo enquanto estiver no lobby."};var chat$4={chatListHeader:"Neste chat"};var callWithChat$4={peopleButtonLabel:"Pessoas",peopleButtonTooltipContentOpen:"Mostrar Participantes",peopleButtonTooltipContentClose:"Ocultar participantes",chatButtonLabel:"Chat",chatButtonTooltipContentOpen:"Mostrar Chat",chatButtonTooltipContentClose:"Ocultar Chat",moreDrawerMicrophoneMenuTitle:"Microfone",moreDrawerSpeakerMenuTitle:"Alto-falante",moreDrawerButtonLabel:"Mais opções",moreDrawerButtonTooltip:"Mais opções",peoplePaneTitle:"Pessoas",peoplePaneSubTitle:"Nesta chamada",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"Nova mensagem",pictureInPictureTileAriaLabel:"Feeds de vídeo. Clique para retornar à tela de chamada.",removeMenuLabel:"Remover",copyInviteLinkButtonLabel:"Copiar o link de convite"};var pt_BR = {call:call$4,chat:chat$4,callWithChat:callWithChat$4};
12374
-
12375
- var call$3={cameraLabel:"Камера",cameraPermissionDenied:"Браузер блокирует доступ к вашей камере",cameraTurnedOff:"Камера выключена",close:"Закрыть",complianceBannerNowOnlyRecording:"Сейчас для этого собрания ведется только запись.",complianceBannerNowOnlyTranscription:"Сейчас для этого собрания ведется только транскрибирование.",complianceBannerRecordingAndTranscriptionSaved:"Сохранение записи и транскрибирования.",complianceBannerRecordingAndTranscriptionStarted:"Начата запись и транскрибирование.",complianceBannerRecordingAndTranscriptionStopped:"Запись и транскрибирование остановлены.",complianceBannerRecordingSaving:"Сохранение записи.",complianceBannerRecordingStarted:"Запись начата.",complianceBannerRecordingStopped:"Запись остановлена.",complianceBannerTranscriptionStarted:"Транскрибирование запущено.",complianceBannerTranscriptionConsent:"Присоединяясь, вы даете согласие на транскрибирование этого собрания.",complianceBannerTranscriptionSaving:"Сохранение транскрибирования.",complianceBannerTranscriptionStopped:"Транскрибирование остановлено.",configurationPageTitle:"Позвонить",defaultPlaceHolder:"Выберите один из вариантов",failedToJoinCallDueToNoNetworkMoreDetails:"Звонок был отключен из-за проблемы с сетью. Проверьте подключение и присоединитесь еще раз.",failedToJoinCallDueToNoNetworkTitle:"Вызов прерван",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Вам не предоставили доступ к беседе. Если это произошло по ошибке, заново присоединитесь к беседе.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Вы были удалены из \"зала ожидания\"",learnMore:"Подробнее",leftCallMoreDetails:"Если это произошло по ошибке, заново присоединитесь к беседе.",leftCallTitle:"Вы покинули беседу",lobbyScreenConnectingToCallTitle:"Подключение к звонку",lobbyScreenWaitingToBeAdmittedTitle:"Ожидание допуска",microphonePermissionDenied:"Браузер блокирует доступ к вашему микрофону",mutedMessage:"Ваш звук отключен",networkReconnectMoreDetails:"Похоже, что-то пошло не так. Мы пытаемся вернуться к звонку.",networkReconnectTitle:"Подождите",privacyPolicy:"Политика конфиденциальности",rejoinCallButtonLabel:"Повторно присоединиться к звонку",removedFromCallMoreDetails:"Другой участник удалил вас из беседы.",removedFromCallTitle:"Вы были удалены",soundLabel:"Звук",startCallButtonLabel:"Начать звонок",microphoneToggleInLobbyNotAllowed:"Невозможно отключить или включить звук, находясь в \"зале ожидания\"."};var chat$3={chatListHeader:"В этом чате"};var callWithChat$3={peopleButtonLabel:"Люди",peopleButtonTooltipContentOpen:"Показать участников",peopleButtonTooltipContentClose:"Скрыть участников",chatButtonLabel:"Чат",chatButtonTooltipContentOpen:"Показать чат",chatButtonTooltipContentClose:"Скрыть чат",moreDrawerMicrophoneMenuTitle:"Микрофон",moreDrawerSpeakerMenuTitle:"Динамик",moreDrawerButtonLabel:"Дополнительные параметры",moreDrawerButtonTooltip:"Дополнительные параметры",peoplePaneTitle:"Люди",peoplePaneSubTitle:"В этом звонке",chatPaneTitle:"Чат",chatButtonNewMessageNotificationLabel:"Новое сообщение",pictureInPictureTileAriaLabel:"Ленты видео. Щелкните, чтобы вернуться на экран вызова.",removeMenuLabel:"Удалить",copyInviteLinkButtonLabel:"Копировать ссылку с приглашением"};var ru_RU = {call:call$3,chat:chat$3,callWithChat:callWithChat$3};
12376
-
12377
- var call$2={cameraLabel:"Kamera",cameraPermissionDenied:"Tarayıcınız kameranıza erişimi engelliyor",cameraTurnedOff:"Kameranız kapatıldı",close:"Kapat",complianceBannerNowOnlyRecording:"Şu anda yalnızca bu toplantıyı kaydediyorsunuz.",complianceBannerNowOnlyTranscription:"Şu anda yalnızca bu toplantının dökümünü oluşturuyorsunuz.",complianceBannerRecordingAndTranscriptionSaved:"Kayıt ve döküm kaydediliyor.",complianceBannerRecordingAndTranscriptionStarted:"Kayıt ve döküm başlatıldı.",complianceBannerRecordingAndTranscriptionStopped:"Kayıt ve döküm durduruldu.",complianceBannerRecordingSaving:"Kayıt kaydediliyor.",complianceBannerRecordingStarted:"Kayıt başladı.",complianceBannerRecordingStopped:"Kayıt durduruldu.",complianceBannerTranscriptionStarted:"Döküm başlatıldı.",complianceBannerTranscriptionConsent:"Katılarak bu toplantının dökümünün çıkarılmasına onay verirsiniz.",complianceBannerTranscriptionSaving:"Döküm kaydediliyor.",complianceBannerTranscriptionStopped:"Döküm durduruldu.",configurationPageTitle:"Arama başlatın",defaultPlaceHolder:"Bir seçenek belirleyin",failedToJoinCallDueToNoNetworkMoreDetails:"Bir ağ sorunu nedeniyle arama bağlantısı kesildi. Bağlantınızı kontrol edin ve yeniden katılın.",failedToJoinCallDueToNoNetworkTitle:"Arama kesildi",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"Aramaya katılmanıza izin verilmedi. Bu işlem yanlışlıkla yapıldıysa aramaya yeniden katılın.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Lobiden çıkarıldı",learnMore:"Daha fazla bilgi edinin",leftCallMoreDetails:"Bu bir hataysa aramaya yeniden katılın.",leftCallTitle:"Aramadan ayrıldınız",lobbyScreenConnectingToCallTitle:"Aramaya katılıyorsunuz",lobbyScreenWaitingToBeAdmittedTitle:"Kabul edilmeyi bekliyor",microphonePermissionDenied:"Tarayıcınız mikrofonunuza erişimi engelliyor",mutedMessage:"Sesiniz kapatıldı",networkReconnectMoreDetails:"Bir sorun oluştu gibi görünüyor. Çağrıya geri alınmaya çalışılıyor.",networkReconnectTitle:"Bekleyin",privacyPolicy:"Gizlilik ilkesi",rejoinCallButtonLabel:"Çağrıya yeniden katıl",removedFromCallMoreDetails:"Başka bir katılımcı sizi aramadan çıkardı.",removedFromCallTitle:"Çıkarıldınız",soundLabel:"Ses",startCallButtonLabel:"Arama başlat",microphoneToggleInLobbyNotAllowed:"Lobideyken sesi kapatılamaz veya açılamaz."};var chat$2={chatListHeader:"Bu sohbette"};var callWithChat$2={peopleButtonLabel:"Kişiler",peopleButtonTooltipContentOpen:"Katılımcıları Göster",peopleButtonTooltipContentClose:"Katılımcıları Gizle",chatButtonLabel:"Sohbet",chatButtonTooltipContentOpen:"Sohbeti Göster",chatButtonTooltipContentClose:"Sohbeti Gizle",moreDrawerMicrophoneMenuTitle:"Mikrofon",moreDrawerSpeakerMenuTitle:"Hoparlör",moreDrawerButtonLabel:"Diğer seçenekler",moreDrawerButtonTooltip:"Diğer seçenekler",peoplePaneTitle:"Kişiler",peoplePaneSubTitle:"Bu aramada",chatPaneTitle:"Sohbet",chatButtonNewMessageNotificationLabel:"Yeni İleti",pictureInPictureTileAriaLabel:"Video Akışları. Çağrı ekranına dönmek için tıklayın.",removeMenuLabel:"Kaldır",copyInviteLinkButtonLabel:"Davet bağlantısını kopyala"};var tr_TR = {call:call$2,chat:chat$2,callWithChat:callWithChat$2};
12378
-
12379
- var call$1={cameraLabel:"照相机",cameraPermissionDenied:"你的浏览器正在阻止对相机的访问",cameraTurnedOff:"你的相机已关闭",close:"关闭",complianceBannerNowOnlyRecording:"现在仅录制此会议。",complianceBannerNowOnlyTranscription:"现在仅听录此会议。",complianceBannerRecordingAndTranscriptionSaved:"正在保存录制和听录。",complianceBannerRecordingAndTranscriptionStarted:"录制和听录已开始。",complianceBannerRecordingAndTranscriptionStopped:"录制和听录已停止。",complianceBannerRecordingSaving:"正在保存录制。",complianceBannerRecordingStarted:"录制已开始。",complianceBannerRecordingStopped:"录制已停止。",complianceBannerTranscriptionStarted:"听录已开始。",complianceBannerTranscriptionConsent:"加入即表示你同意转录此会议。",complianceBannerTranscriptionSaving:"正在保存听录。",complianceBannerTranscriptionStopped:"听录已停止。",configurationPageTitle:"开始通话",defaultPlaceHolder:"选择一个选项",failedToJoinCallDueToNoNetworkMoreDetails:"由于网络问题,呼叫已断开连接。请检查你的连接,然后重新加入。",failedToJoinCallDueToNoNetworkTitle:"通话已断开",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"未在通话中向你授予条目。如果这是一个错误,请重新加入呼叫。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"已从大厅中关闭",learnMore:"了解详细信息",leftCallMoreDetails:"如果这是一个错误,请重新加入呼叫。",leftCallTitle:"你已离开通话",lobbyScreenConnectingToCallTitle:"加入通话",lobbyScreenWaitingToBeAdmittedTitle:"正在等待被拒绝",microphonePermissionDenied:"你的浏览器正在阻止对麦克风的访问",mutedMessage:"你已静音",networkReconnectMoreDetails:"似乎出现了问题。我们正在努力恢复通话。",networkReconnectTitle:"稍等",privacyPolicy:"隐私策略",rejoinCallButtonLabel:"重新加入呼叫",removedFromCallMoreDetails:"另一名参与者已将你从通话中删除。",removedFromCallTitle:"你已被删除",soundLabel:"声音",startCallButtonLabel:"开始通话",microphoneToggleInLobbyNotAllowed:"在大厅中时无法静音或取消静音。"};var chat$1={chatListHeader:"在此聊天中"};var callWithChat$1={peopleButtonLabel:"人员",peopleButtonTooltipContentOpen:"显示参与者",peopleButtonTooltipContentClose:"隐藏参与者",chatButtonLabel:"聊天",chatButtonTooltipContentOpen:"显示聊天",chatButtonTooltipContentClose:"隐藏聊天",moreDrawerMicrophoneMenuTitle:"麦克风",moreDrawerSpeakerMenuTitle:"扬声器",moreDrawerButtonLabel:"更多选项",moreDrawerButtonTooltip:"更多选项",peoplePaneTitle:"人员",peoplePaneSubTitle:"在此通话中",chatPaneTitle:"聊天",chatButtonNewMessageNotificationLabel:"新建消息",pictureInPictureTileAriaLabel:"视频源。单击以返回到通话屏幕。",removeMenuLabel:"删除",copyInviteLinkButtonLabel:"复制邀请链接"};var zh_CN = {call:call$1,chat:chat$1,callWithChat:callWithChat$1};
12380
-
12381
- var call={cameraLabel:"相機",cameraPermissionDenied:"您的瀏覽器禁止存取您的相機",cameraTurnedOff:"您的相機已關閉",close:"關閉",complianceBannerNowOnlyRecording:"您現在只會錄製此會議。",complianceBannerNowOnlyTranscription:"您現在只會轉錄此會議。",complianceBannerRecordingAndTranscriptionSaved:"正在儲存錄製和轉錄。",complianceBannerRecordingAndTranscriptionStarted:"已開始錄製並進行轉錄。",complianceBannerRecordingAndTranscriptionStopped:"已停止錄製與轉錄。",complianceBannerRecordingSaving:"正在儲存錄製內容。",complianceBannerRecordingStarted:"已開始錄製。",complianceBannerRecordingStopped:"已停止錄製。",complianceBannerTranscriptionStarted:"已開始轉錄。",complianceBannerTranscriptionConsent:"一旦加入,即表示您同意轉譯此會議。",complianceBannerTranscriptionSaving:"正在儲存轉錄。",complianceBannerTranscriptionStopped:"已停止轉錄。",configurationPageTitle:"開始通話",defaultPlaceHolder:"選取選項",failedToJoinCallDueToNoNetworkMoreDetails:"由於網路問題,通話已中斷連線。檢查您的連線並再次加入。",failedToJoinCallDueToNoNetworkTitle:"通話已斷線",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"您未被授予加入通話的權限。如果有誤,請重新加入通話。",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"已從大廳關閉",learnMore:"深入了解",leftCallMoreDetails:"如果有誤,請重新加入通話。",leftCallTitle:"您已離開通話",lobbyScreenConnectingToCallTitle:"正在加入通話",lobbyScreenWaitingToBeAdmittedTitle:"正在等候認可",microphonePermissionDenied:"您的瀏覽器禁止存取您的麥克風",mutedMessage:"您已設為靜音",networkReconnectMoreDetails:"似乎發生錯誤。我們正在嘗試讓您返回通話。",networkReconnectTitle:"請稍候",privacyPolicy:"隱私權原則",rejoinCallButtonLabel:"重新加入通話",removedFromCallMoreDetails:"另一名參與者已將您自通話中移除。",removedFromCallTitle:"您已遭移除",soundLabel:"音效",startCallButtonLabel:"開始通話",microphoneToggleInLobbyNotAllowed:"無法在大廳中靜音或取消靜音。"};var chat={chatListHeader:"在此聊天中"};var callWithChat={peopleButtonLabel:"人員",peopleButtonTooltipContentOpen:"顯示參與者",peopleButtonTooltipContentClose:"隱藏參與者",chatButtonLabel:"聊天",chatButtonTooltipContentOpen:"顯示聊天",chatButtonTooltipContentClose:"隱藏聊天",moreDrawerMicrophoneMenuTitle:"麥克風",moreDrawerSpeakerMenuTitle:"揚聲器",moreDrawerButtonLabel:"更多選項",moreDrawerButtonTooltip:"更多選項",peoplePaneTitle:"人員",peoplePaneSubTitle:"在此通話中",chatPaneTitle:"聊天",chatButtonNewMessageNotificationLabel:"新訊息",pictureInPictureTileAriaLabel:"影片摘要。按一下以返回通話畫面。",removeMenuLabel:"移除",copyInviteLinkButtonLabel:"複製邀請連結"};var zh_TW = {call:call,chat:chat,callWithChat:callWithChat};
12382
-
12383
- // Copyright (c) Microsoft Corporation.
12384
- const createCompositeStrings = (localizedStrings) => {
12385
- const strings = Object.assign({}, en_US);
12386
- Object.keys(localizedStrings).forEach((key) => {
12387
- strings[key] = Object.assign(Object.assign({}, strings[key]), localizedStrings[key]);
12388
- });
12389
- return strings;
12390
- };
12391
- /**
12392
- * Locale for English (US)
12393
- *
12394
- * @public
12395
- */
12396
- const COMPOSITE_LOCALE_EN_US = {
12397
- component: COMPONENT_LOCALE_EN_US,
12398
- strings: en_US
12399
- };
12400
- /**
12401
- * Locale for English (British)
12402
- *
12403
- * @public
12404
- */
12405
- const COMPOSITE_LOCALE_EN_GB = {
12406
- component: COMPONENT_LOCALE_EN_GB,
12407
- strings: createCompositeStrings(en_GB)
12408
- };
12409
- /**
12410
- * Locale for German (Germany)
12411
- *
12412
- * @public
12413
- */
12414
- const COMPOSITE_LOCALE_DE_DE = {
12415
- component: COMPONENT_LOCALE_DE_DE,
12416
- strings: createCompositeStrings(de_DE)
12417
- };
12418
- /**
12419
- * Locale for Spanish (Spain)
12420
- *
12421
- * @public
12422
- */
12423
- const COMPOSITE_LOCALE_ES_ES = {
12424
- component: COMPONENT_LOCALE_ES_ES,
12425
- strings: createCompositeStrings(es_ES)
12426
- };
12427
- /**
12428
- * Locale for French (France)
12429
- *
12430
- * @public
12431
- */
12432
- const COMPOSITE_LOCALE_FR_FR = {
12433
- component: COMPONENT_LOCALE_FR_FR,
12434
- strings: createCompositeStrings(fr_FR)
12435
- };
12436
- /**
12437
- * Locale for Italian (Italy)
12438
- *
12439
- * @public
12440
- */
12441
- const COMPOSITE_LOCALE_IT_IT = {
12442
- component: COMPONENT_LOCALE_IT_IT,
12443
- strings: createCompositeStrings(it_IT)
12444
- };
12445
- /**
12446
- * Locale for Japanese (Japan)
12447
- *
12448
- * @public
12449
- */
12450
- const COMPOSITE_LOCALE_JA_JP = {
12451
- component: COMPONENT_LOCALE_JA_JP,
12452
- strings: createCompositeStrings(ja_JP)
12453
- };
12454
- /**
12455
- * Locale for Korean (South Korea)
12456
- *
12457
- * @public
12458
- */
12459
- const COMPOSITE_LOCALE_KO_KR = {
12460
- component: COMPONENT_LOCALE_KO_KR,
12461
- strings: createCompositeStrings(ko_KR)
12462
- };
12463
- /**
12464
- * Locale for Dutch (Netherlands)
12465
- *
12466
- * @public
12467
- */
12468
- const COMPOSITE_LOCALE_NL_NL = {
12469
- component: COMPONENT_LOCALE_NL_NL,
12470
- strings: createCompositeStrings(nl_NL)
12471
- };
12472
- /**
12473
- * Locale for Portuguese (Brazil)
12474
- *
12475
- * @public
12476
- */
12477
- const COMPOSITE_LOCALE_PT_BR = {
12478
- component: COMPONENT_LOCALE_PT_BR,
12479
- strings: createCompositeStrings(pt_BR)
12480
- };
12481
- /**
12482
- * Locale for Russian (Russia)
12483
- *
12484
- * @public
12485
- */
12486
- const COMPOSITE_LOCALE_RU_RU = {
12487
- component: COMPONENT_LOCALE_RU_RU,
12488
- strings: createCompositeStrings(ru_RU)
12489
- };
12490
- /**
12491
- * Locale for Turkish (Turkey)
12492
- *
12493
- * @public
12494
- */
12495
- const COMPOSITE_LOCALE_TR_TR = {
12496
- component: COMPONENT_LOCALE_TR_TR,
12497
- strings: createCompositeStrings(tr_TR)
13182
+ }
13183
+ (() => __awaiter$9(void 0, void 0, void 0, function* () {
13184
+ if (adapterRef.current) {
13185
+ // Dispose the old adapter when a new one is created.
13186
+ //
13187
+ // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of
13188
+ // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter
13189
+ // creation.
13190
+ if (beforeDisposeRef.current) {
13191
+ yield beforeDisposeRef.current(adapterRef.current);
13192
+ }
13193
+ adapterRef.current.dispose();
13194
+ adapterRef.current = undefined;
13195
+ }
13196
+ let newAdapter = yield createAzureCommunicationChatAdapter({
13197
+ credential,
13198
+ displayName,
13199
+ endpoint,
13200
+ threadId,
13201
+ userId
13202
+ });
13203
+ if (afterCreateRef.current) {
13204
+ newAdapter = yield afterCreateRef.current(newAdapter);
13205
+ }
13206
+ adapterRef.current = newAdapter;
13207
+ setAdapter(newAdapter);
13208
+ }))();
13209
+ },
13210
+ // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.
13211
+ [adapterRef, afterCreateRef, beforeDisposeRef, credential, displayName, endpoint, threadId, userId]);
13212
+ // Dispose any existing adapter when the component unmounts.
13213
+ React.useEffect(() => {
13214
+ return () => {
13215
+ (() => __awaiter$9(void 0, void 0, void 0, function* () {
13216
+ if (adapterRef.current) {
13217
+ if (beforeDisposeRef.current) {
13218
+ yield beforeDisposeRef.current(adapterRef.current);
13219
+ }
13220
+ adapterRef.current.dispose();
13221
+ adapterRef.current = undefined;
13222
+ }
13223
+ }))();
13224
+ };
13225
+ }, []);
13226
+ return adapter;
12498
13227
  };
12499
13228
  /**
12500
- * Locale for Chinese (Mainland China)
13229
+ * Create a {@link ChatAdapter} using the provided {@link StatefulChatClient}.
12501
13230
  *
12502
- * @public
12503
- */
12504
- const COMPOSITE_LOCALE_ZH_CN = {
12505
- component: COMPONENT_LOCALE_ZH_CN,
12506
- strings: createCompositeStrings(zh_CN)
12507
- };
12508
- /**
12509
- * Locale for Chinese (Taiwan)
13231
+ * Useful if you want to keep a reference to {@link StatefulChatClient}.
13232
+ * Consider using {@link createAzureCommunicationChatAdapter} for a simpler API.
12510
13233
  *
12511
13234
  * @public
12512
13235
  */
12513
- const COMPOSITE_LOCALE_ZH_TW = {
12514
- component: COMPONENT_LOCALE_ZH_TW,
12515
- strings: createCompositeStrings(zh_TW)
13236
+ const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$9(void 0, void 0, void 0, function* () {
13237
+ return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
13238
+ });
13239
+ const isChatError = (e) => {
13240
+ return e['target'] !== undefined && e['innerError'] !== undefined;
12516
13241
  };
12517
13242
 
12518
13243
  // Copyright (c) Microsoft Corporation.
13244
+ // Licensed under the MIT license.
12519
13245
  /**
12520
- * Context for providing localized strings to components
12521
- *
12522
- * @private
12523
- */
12524
- const LocaleContext = React.createContext(COMPOSITE_LOCALE_EN_US);
12525
- /**
12526
- * Provider to provide localized strings for this library's composites.
12527
- *
12528
13246
  * @private
12529
13247
  */
12530
- const LocalizationProvider = (props) => {
12531
- const { locale, children } = props;
12532
- return (React__default['default'].createElement(LocaleContext.Provider, { value: locale },
12533
- React__default['default'].createElement(LocalizationProvider$1, { locale: locale.component }, children)));
13248
+ const globalLayerHostStyle = {
13249
+ position: 'fixed',
13250
+ zIndex: 1000000,
13251
+ inset: '0px',
13252
+ visibility: 'hidden'
12534
13253
  };
12535
- /**
12536
- * @private
12537
- */
12538
- const useLocale = () => React.useContext(LocaleContext);
12539
13254
 
12540
13255
  // Copyright (c) Microsoft Corporation.
12541
13256
  /**
@@ -12548,6 +13263,7 @@ const useLocale = () => React.useContext(LocaleContext);
12548
13263
  */
12549
13264
  const BaseProvider = (props) => {
12550
13265
  const { fluentTheme, rtl, locale } = props;
13266
+ const globalLayerHostId = reactHooks.useId('composite-global-hostId');
12551
13267
  /**
12552
13268
  * Pass only the children if we previously registered icons, and have previously wrapped the children in
12553
13269
  * FluentThemeProvider and LocalizationProvider
@@ -12561,9 +13277,12 @@ const BaseProvider = (props) => {
12561
13277
  * to ensure all icons render correctly.
12562
13278
  */
12563
13279
  react.registerIcons({ icons: Object.assign(Object.assign({}, DEFAULT_COMPOSITE_ICONS), props.icons) });
13280
+ // we use Customizer to override default LayerHost injected to <body />
13281
+ // which stop polluting global dom tree and increase compatibility with react-full-screen
12564
13282
  const CompositeElement = (React__default['default'].createElement(FluentThemeProvider, { fluentTheme: fluentTheme, rtl: rtl },
12565
13283
  React__default['default'].createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" }),
12566
- props.children));
13284
+ React__default['default'].createElement(react.Customizer, { scopedSettings: { Layer: { hostId: globalLayerHostId } } }, props.children),
13285
+ React__default['default'].createElement(react.LayerHost, { id: globalLayerHostId, className: react.mergeStyles(globalLayerHostStyle) })));
12567
13286
  const localizedElement = locale ? LocalizationProvider({ locale, children: CompositeElement }) : CompositeElement;
12568
13287
  return React__default['default'].createElement(BaseContext.Provider, { value: true }, localizedElement);
12569
13288
  };
@@ -12598,6 +13317,11 @@ const useAdapter$1 = () => {
12598
13317
 
12599
13318
  // Copyright (c) Microsoft Corporation.
12600
13319
  const MESSAGE_THREAD_WIDTH = '41.25rem';
13320
+ /**
13321
+ * @private
13322
+ * z-index to ensure that chat container has lower z-index than participant pane
13323
+ */
13324
+ const CHAT_CONTAINER_ZINDEX = 1;
12601
13325
  /**
12602
13326
  * @private
12603
13327
  */
@@ -12641,7 +13365,8 @@ const chatArea = react.mergeStyles({
12641
13365
  const chatWrapper = react.mergeStyles({
12642
13366
  height: '100%',
12643
13367
  width: '100%',
12644
- overflow: 'hidden'
13368
+ overflow: 'hidden',
13369
+ zIndex: CHAT_CONTAINER_ZINDEX
12645
13370
  });
12646
13371
  /**
12647
13372
  * @private
@@ -12698,44 +13423,30 @@ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments,
12698
13423
  });
12699
13424
  };
12700
13425
  /**
12701
- * Hook to override the avatar persona data of the users
12702
- * - Calls {@link AvatarPersonaDataCallback} on each render for provided `userIds`
12703
- * - Returns an array of the same length as `userIds`. Entries in the array may be undefined if there is no data to return.
13426
+ * An Avatar component made using the `Persona` component.
13427
+ * It allows you to specify a `userId` and a `dataProvider` to retrieve the `AvatarPersonaData`.
13428
+ * Read more about `Persona` component at https://developer.microsoft.com/fluentui#/controls/web/persona
13429
+ *
12704
13430
  * @private
12705
13431
  */
12706
- const useCustomAvatarPersonaData = (userIds, callback) => {
12707
- const [data, setData] = React__default['default'].useState(Array(userIds.length).fill(undefined));
13432
+ const AvatarPersona = (props) => {
13433
+ var _a, _b, _c, _d, _e, _f;
13434
+ const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
13435
+ const [data, setData] = React.useState();
12708
13436
  React.useEffect(() => {
12709
13437
  (() => __awaiter$8(void 0, void 0, void 0, function* () {
12710
- const newData = yield Promise.all(userIds.map((userId) => __awaiter$8(void 0, void 0, void 0, function* () {
12711
- if (!userId || !callback) {
12712
- return undefined;
13438
+ if (dataProvider && userId) {
13439
+ const newData = yield dataProvider(userId);
13440
+ if (avatarDeepDifferenceCheck(data, newData)) {
13441
+ setData(newData);
12713
13442
  }
12714
- return yield callback(userId);
12715
- })));
12716
- if (shouldUpdate(data, newData)) {
12717
- setData(newData);
12718
13443
  }
12719
13444
  }))();
12720
- });
12721
- return data;
12722
- };
12723
- /**
12724
- * Function to determine if there is new user avatar data in current render pass.
12725
- * @param currentData current set set of avatar persona data present from the custom settings from the previous render
12726
- * @param newData new set of avatar persona data after a run of {@link useCustomAvatarPersonData}
12727
- * @returns Boolean whether there is new avatar persona data present.
12728
- * @private
12729
- */
12730
- const shouldUpdate = (currentData, newData) => {
12731
- if (currentData.length !== newData.length) {
12732
- return true;
12733
- }
12734
- return currentData.some((data, i) => avatarDeepDifferenceCheck(data, newData[i]));
13445
+ }, [data, dataProvider, userId]);
13446
+ return (React__default['default'].createElement(react.Persona, Object.assign({}, props, { text: (_a = data === null || data === void 0 ? void 0 : data.text) !== null && _a !== void 0 ? _a : text, imageUrl: (_b = data === null || data === void 0 ? void 0 : data.imageUrl) !== null && _b !== void 0 ? _b : imageUrl, imageInitials: (_c = data === null || data === void 0 ? void 0 : data.imageInitials) !== null && _c !== void 0 ? _c : imageInitials, initialsColor: (_d = data === null || data === void 0 ? void 0 : data.initialsColor) !== null && _d !== void 0 ? _d : initialsColor, initialsTextColor: (_f = (_e = data === null || data === void 0 ? void 0 : data.initialsTextColor) !== null && _e !== void 0 ? _e : initialsTextColor) !== null && _f !== void 0 ? _f : 'white',
13447
+ // default disable tooltip unless specified
13448
+ showOverflowTooltip: showOverflowTooltip !== null && showOverflowTooltip !== void 0 ? showOverflowTooltip : false })));
12735
13449
  };
12736
- /**
12737
- * @private
12738
- */
12739
13450
  const avatarDeepDifferenceCheck = (currentData, newData) => {
12740
13451
  return ((currentData === null || currentData === void 0 ? void 0 : currentData.text) !== (newData === null || newData === void 0 ? void 0 : newData.text) ||
12741
13452
  (currentData === null || currentData === void 0 ? void 0 : currentData.imageUrl) !== (newData === null || newData === void 0 ? void 0 : newData.imageUrl) ||
@@ -12744,24 +13455,6 @@ const avatarDeepDifferenceCheck = (currentData, newData) => {
12744
13455
  (currentData === null || currentData === void 0 ? void 0 : currentData.initialsTextColor) !== (newData === null || newData === void 0 ? void 0 : newData.initialsTextColor));
12745
13456
  };
12746
13457
 
12747
- // Copyright (c) Microsoft Corporation.
12748
- /**
12749
- * An Avatar component made using the `Persona` component.
12750
- * It allows you to specify a `userId` and a `dataProvider` to retrieve the `AvatarPersonaData`.
12751
- * Read more about `Persona` component at https://developer.microsoft.com/fluentui#/controls/web/persona
12752
- *
12753
- * @private
12754
- */
12755
- const AvatarPersona = (props) => {
12756
- var _a, _b, _c, _d, _e, _f;
12757
- const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor } = props;
12758
- const userIds = React.useMemo(() => {
12759
- return [userId];
12760
- }, [userId]);
12761
- const [data] = useCustomAvatarPersonaData(userIds, dataProvider);
12762
- return (React__default['default'].createElement(react.Persona, Object.assign({}, props, { text: (_a = data === null || data === void 0 ? void 0 : data.text) !== null && _a !== void 0 ? _a : text, imageUrl: (_b = data === null || data === void 0 ? void 0 : data.imageUrl) !== null && _b !== void 0 ? _b : imageUrl, imageInitials: (_c = data === null || data === void 0 ? void 0 : data.imageInitials) !== null && _c !== void 0 ? _c : imageInitials, initialsColor: (_d = data === null || data === void 0 ? void 0 : data.initialsColor) !== null && _d !== void 0 ? _d : initialsColor, initialsTextColor: (_f = (_e = data === null || data === void 0 ? void 0 : data.initialsTextColor) !== null && _e !== void 0 ? _e : initialsTextColor) !== null && _f !== void 0 ? _f : 'white' })));
12763
- };
12764
-
12765
13458
  // Copyright (c) Microsoft Corporation.
12766
13459
  /**
12767
13460
  * @private
@@ -12949,11 +13642,16 @@ const peoplePaneContainerTokens = {
12949
13642
  /**
12950
13643
  * @private
12951
13644
  */
12952
- const participantListWrapper = react.mergeStyles({
13645
+ const participantListWrapper = (theme) => react.mergeStyles({
12953
13646
  width: '20rem',
12954
- // max width at 50% of view so the People Pane is not squeezing the Message Pane to almost nothing when on small screen or high zoom in
12955
- maxWidth: '50vw',
12956
- height: '100%'
13647
+ maxWidth: '50%',
13648
+ height: '100%',
13649
+ position: 'absolute',
13650
+ right: '0',
13651
+ boxShadow: theme.effects.elevation16,
13652
+ background: theme.semanticColors.bodyBackground,
13653
+ // zIndex to set the participant pane above the chat container
13654
+ zIndex: CHAT_CONTAINER_ZINDEX + 1
12957
13655
  });
12958
13656
  /**
12959
13657
  * @private
@@ -12995,13 +13693,25 @@ const participantListMobileStyle = {
12995
13693
  }
12996
13694
  }
12997
13695
  };
13696
+ /**
13697
+ * @private
13698
+ */
13699
+ const displayNameStyles = {
13700
+ root: {
13701
+ padding: '0.5rem',
13702
+ textOverflow: 'ellipsis',
13703
+ overflow: 'hidden'
13704
+ }
13705
+ };
12998
13706
 
12999
13707
  // Copyright (c) Microsoft Corporation.
13000
13708
  /**
13001
13709
  * @private
13002
13710
  */
13003
13711
  const ParticipantContainer = (props) => {
13004
- return (React__default['default'].createElement(react.Stack, { className: participantListWrapper },
13712
+ const theme = react.useTheme();
13713
+ const participantListWrapperClassName = React.useMemo(() => participantListWrapper(theme), [theme]);
13714
+ return (React__default['default'].createElement(react.Stack, { className: participantListWrapperClassName },
13005
13715
  React__default['default'].createElement(ParticipantListWithHeading, Object.assign({}, props))));
13006
13716
  };
13007
13717
  /**
@@ -13020,7 +13730,9 @@ const ParticipantListWithHeading = (props) => {
13020
13730
  return (React__default['default'].createElement(react.Stack, { className: participantListStack },
13021
13731
  React__default['default'].createElement(react.Stack.Item, { styles: subheadingStyleThemed }, title),
13022
13732
  React__default['default'].createElement(react.FocusZone, { className: participantListContainerStyle },
13023
- React__default['default'].createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React__default['default'].createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { dataProvider: onFetchAvatarPersonaData }))), onFetchParticipantMenuItems: onFetchParticipantMenuItems })))));
13733
+ React__default['default'].createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React__default['default'].createElement(React__default['default'].Fragment, null,
13734
+ React__default['default'].createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { hidePersonaDetails: !!(options === null || options === void 0 ? void 0 : options.text) }, { dataProvider: onFetchAvatarPersonaData })),
13735
+ (options === null || options === void 0 ? void 0 : options.text) && (React__default['default'].createElement(react.Text, { nowrap: true, styles: displayNameStyles }, options === null || options === void 0 ? void 0 : options.text)))), onFetchParticipantMenuItems: onFetchParticipantMenuItems, showParticipantOverflowTooltip: !props.isMobile })))));
13024
13736
  };
13025
13737
 
13026
13738
  // Copyright (c) Microsoft Corporation.
@@ -13028,11 +13740,11 @@ const ParticipantListWithHeading = (props) => {
13028
13740
  * @private
13029
13741
  */
13030
13742
  const ChatScreenPeoplePane = (props) => {
13031
- const { onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
13743
+ const { onFetchAvatarPersonaData, onFetchParticipantMenuItems, isMobile } = props;
13032
13744
  const locale = useLocale();
13033
13745
  const chatListHeader = locale.strings.chat.chatListHeader;
13034
13746
  const participantListProps = usePropsFor$2(ParticipantList);
13035
- return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems }));
13747
+ return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, isMobile: isMobile }));
13036
13748
  };
13037
13749
 
13038
13750
  /**
@@ -13152,7 +13864,7 @@ const ChatScreen = (props) => {
13152
13864
  onCancelFileUpload: adapter.cancelFileUpload }))),
13153
13865
  formFactor !== 'mobile' && React__default['default'].createElement(AttachFileButton, null)))),
13154
13866
  /* @conditional-compile-remove(chat-composite-participant-pane) */
13155
- (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems })))));
13867
+ (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, isMobile: formFactor === 'mobile' })))));
13156
13868
  };
13157
13869
 
13158
13870
  // Copyright (c) Microsoft Corporation.
@@ -13427,11 +14139,12 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13427
14139
  }),
13428
14140
  /* @conditional-compile-remove(PSTN-calls) */
13429
14141
  onToggleHold: () => __awaiter$7(void 0, void 0, void 0, function* () {
13430
- // not implemented for composites yet
14142
+ var _a;
14143
+ return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
13431
14144
  }),
13432
14145
  /* @conditional-compile-remove(PSTN-calls) */
13433
- onAddParticipant: () => __awaiter$7(void 0, void 0, void 0, function* () {
13434
- // not implemented for composites yet
14146
+ onAddParticipant: (participant, options) => __awaiter$7(void 0, void 0, void 0, function* () {
14147
+ return yield adapter.addParticipant(participant, options);
13435
14148
  }),
13436
14149
  onRemoveParticipant: (userId) => __awaiter$7(void 0, void 0, void 0, function* () {
13437
14150
  yield adapter.removeParticipant(userId);
@@ -13445,9 +14158,9 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13445
14158
  onSelectSpeaker: (deviceInfo) => __awaiter$7(void 0, void 0, void 0, function* () {
13446
14159
  yield adapter.setSpeaker(deviceInfo);
13447
14160
  }),
13448
- onStartCall: (participants) => {
14161
+ onStartCall: (participants, options) => {
13449
14162
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
13450
- return adapter.startCall(rawIds);
14163
+ return adapter.startCall(rawIds, options);
13451
14164
  },
13452
14165
  onStartScreenShare: () => __awaiter$7(void 0, void 0, void 0, function* () {
13453
14166
  yield adapter.startScreenShare();
@@ -13459,12 +14172,12 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13459
14172
  isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
13460
14173
  }),
13461
14174
  onToggleMicrophone: () => __awaiter$7(void 0, void 0, void 0, function* () {
13462
- var _a;
13463
- return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.isMuted) ? yield adapter.unmute() : yield adapter.mute();
14175
+ var _b;
14176
+ return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isMuted) ? yield adapter.unmute() : yield adapter.mute();
13464
14177
  }),
13465
14178
  onToggleScreenShare: () => __awaiter$7(void 0, void 0, void 0, function* () {
13466
- var _b;
13467
- return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isScreenSharingOn)
14179
+ var _c;
14180
+ return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isScreenSharingOn)
13468
14181
  ? yield adapter.stopScreenShare()
13469
14182
  : yield adapter.startScreenShare();
13470
14183
  }),
@@ -13597,16 +14310,13 @@ const Camera = (props) => {
13597
14310
 
13598
14311
  // Copyright (c) Microsoft Corporation.
13599
14312
  /** @private */
13600
- const generateCustomButtons = (onFetchCustomButtonProps, displayType) => {
14313
+ const generateCustomControlBarButtonStrings = (text) => {
14314
+ return { label: text };
14315
+ };
14316
+ /** @private */
14317
+ const generateCustomControlBarButtons = (onFetchCustomButtonProps, displayType) => {
13601
14318
  const response = {
13602
- first: undefined,
13603
- afterCameraButton: undefined,
13604
- afterEndCallButton: undefined,
13605
- afterMicrophoneButton: undefined,
13606
- afterDevicesButton: undefined,
13607
- afterParticipantsButton: undefined,
13608
- afterScreenShareButton: undefined,
13609
- last: undefined
14319
+ primary: undefined
13610
14320
  };
13611
14321
  if (!onFetchCustomButtonProps) {
13612
14322
  return response;
@@ -13615,10 +14325,19 @@ const generateCustomButtons = (onFetchCustomButtonProps, displayType) => {
13615
14325
  for (const key in response) {
13616
14326
  response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
13617
14327
  .filter((buttonProps) => buttonProps.placement === key)
13618
- .map((buttonProps, i) => (React__default['default'].createElement(ControlBarButton, Object.assign({}, buttonProps, { key: `${buttonProps.placement}_${i}` }))))));
14328
+ .map((buttonProps, i) => (React__default['default'].createElement(ControlBarButton, { onClick: buttonProps.onItemClick, showLabel: buttonProps.showLabel, strings: generateCustomControlBarButtonStrings(buttonProps.text), styles: buttonProps.styles, key: `${buttonProps.placement}_${i}`,
14329
+ // set default icon if not provided
14330
+ onRenderIcon: () => { var _a; return React__default['default'].createElement(react.Icon, { iconName: (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : 'ControlButtonOptions' }); }, disabled: buttonProps.disabled })))));
13619
14331
  }
13620
14332
  return response;
13621
14333
  };
14334
+ /* @conditional-compile-remove(control-bar-button-injection) */
14335
+ /** @private */
14336
+ const onFetchCustomButtonPropsTrampoline$1 = (options) => {
14337
+ let response = undefined;
14338
+ response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;
14339
+ return response;
14340
+ };
13622
14341
 
13623
14342
  // Copyright (c) Microsoft Corporation.
13624
14343
  /** @private */
@@ -13750,7 +14469,7 @@ const Participants = (props) => {
13750
14469
  var _a;
13751
14470
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
13752
14471
  }, [props.increaseFlyoutItemSize, props.styles]);
13753
- return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$1(props.option), styles: participantsButtonStyles })));
14472
+ return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$1(props.option), styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile })));
13754
14473
  };
13755
14474
  const isDisabled$1 = (option) => {
13756
14475
  if (option === undefined || option === true || option === false) {
@@ -13779,7 +14498,8 @@ const isDisabled = (option) => {
13779
14498
  */
13780
14499
  const CallControls = (props) => {
13781
14500
  const options = React.useMemo(() => (typeof props.options === 'boolean' ? {} : props.options), [props.options]);
13782
- const customButtons = React.useMemo(() => generateCustomButtons(onFetchCustomButtonPropsTrampoline(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);
14501
+ /* @conditional-compile-remove(control-bar-button-injection) */
14502
+ const customButtons = React.useMemo(() => generateCustomControlBarButtons(onFetchCustomButtonPropsTrampoline$1(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);
13783
14503
  // when props.options is false then we want to hide the whole control bar.
13784
14504
  if (props.options === false) {
13785
14505
  return React__default['default'].createElement(React__default['default'].Fragment, null);
@@ -13787,28 +14507,15 @@ const CallControls = (props) => {
13787
14507
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
13788
14508
  React__default['default'].createElement(react.Stack.Item, null,
13789
14509
  React__default['default'].createElement(ControlBar, { layout: "horizontal" },
13790
- customButtons['first'],
13791
14510
  isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
13792
- customButtons['afterMicrophoneButton'],
13793
14511
  isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
13794
- customButtons['afterCameraButton'],
13795
14512
  isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType })),
13796
- customButtons['afterScreenShareButton'],
13797
- isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize })),
13798
- customButtons['afterParticipantsButton'],
14513
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile })),
13799
14514
  isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize })),
13800
- customButtons['afterDevicesButton'],
13801
- isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
13802
- customButtons['afterEndCallButton'],
13803
- customButtons['last']))));
14515
+ customButtons['primary'],
14516
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType })))));
13804
14517
  };
13805
14518
  const isEnabled$2 = (option) => option !== false;
13806
- const onFetchCustomButtonPropsTrampoline = (options) => {
13807
- let response = undefined;
13808
- /* @conditional-compile-remove(control-bar-button-injection) */
13809
- response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;
13810
- return response;
13811
- };
13812
14519
 
13813
14520
  // Copyright (c) Microsoft Corporation.
13814
14521
  // Licensed under the MIT license.
@@ -13951,7 +14658,7 @@ const CallArrangement = (props) => {
13951
14658
  !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
13952
14659
  React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true }, props.onRenderGalleryContent && (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles }, props.onRenderGalleryContent()))),
13953
14660
  ((_a = props.callControlProps) === null || _a === void 0 ? void 0 : _a.options) !== false && (React__default['default'].createElement(react.Stack.Item, { className: callControlsContainerStyles },
13954
- React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight })))))));
14661
+ React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView })))))));
13955
14662
  };
13956
14663
 
13957
14664
  // Copyright (c) Microsoft Corporation.
@@ -13991,13 +14698,12 @@ const MediaGallery = (props) => {
13991
14698
  const cameraSwitcherProps = React.useMemo(() => {
13992
14699
  return Object.assign(Object.assign({}, cameraSwitcherCallback), cameraSwitcherCameras);
13993
14700
  }, [cameraSwitcherCallback, cameraSwitcherCameras]);
13994
- const remoteParticipants = useRemoteParticipantsWithCustomDisplayNames(videoGalleryProps.remoteParticipants, props.onFetchAvatarPersonaData);
13995
14701
  const onRenderAvatar = React.useCallback((userId, options) => (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
13996
14702
  React__default['default'].createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData })))), [props.onFetchAvatarPersonaData]);
13997
14703
  useLocalVideoStartTrigger(!!props.isVideoStreamOn);
13998
14704
  const VideoGalleryMemoized = React.useMemo(() => {
13999
- return (React__default['default'].createElement(VideoGallery, Object.assign({}, videoGalleryProps, { remoteParticipants: remoteParticipants, localVideoViewOptions: localVideoViewOptions$3, remoteVideoViewOptions: remoteVideoViewOptions$1, styles: VideoGalleryStyles, layout: "floatingLocalVideo", showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: onRenderAvatar })));
14000
- }, [videoGalleryProps, props.isMobile, onRenderAvatar, remoteParticipants, cameraSwitcherProps]);
14705
+ return (React__default['default'].createElement(VideoGallery, Object.assign({}, videoGalleryProps, { localVideoViewOptions: localVideoViewOptions$3, remoteVideoViewOptions: remoteVideoViewOptions$1, styles: VideoGalleryStyles, layout: "floatingLocalVideo", showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: onRenderAvatar })));
14706
+ }, [videoGalleryProps, props.isMobile, onRenderAvatar, cameraSwitcherProps]);
14001
14707
  return VideoGalleryMemoized;
14002
14708
  };
14003
14709
  /**
@@ -14026,25 +14732,6 @@ const useLocalVideoStartTrigger = (isLocalVideoAvailable, shouldTransition) => {
14026
14732
  }
14027
14733
  }, [shouldTransition, isButtonStatusSynced, isPreviewCameraOn, isLocalVideoAvailable, mediaGalleryHandlers]);
14028
14734
  };
14029
- /**
14030
- * Hook to fetch new participant avatar and video gallery displayName information if it is present.
14031
- * @param onFetchAvatarPersonaData
14032
- */
14033
- const useRemoteParticipantsWithCustomDisplayNames = (remoteParticipants, onFetchAvatarPersonaData) => {
14034
- const userIds = React.useMemo(() => {
14035
- return remoteParticipants.map((p) => p.userId);
14036
- }, [remoteParticipants]);
14037
- const avatarPersonaData = useCustomAvatarPersonaData(userIds, onFetchAvatarPersonaData);
14038
- const newParticipants = remoteParticipants.map((p, i) => {
14039
- var _a;
14040
- const newName = (_a = avatarPersonaData[i]) === null || _a === void 0 ? void 0 : _a.text;
14041
- if (!newName) {
14042
- return p;
14043
- }
14044
- return Object.assign(Object.assign({}, p), { displayName: newName });
14045
- });
14046
- return newParticipants;
14047
- };
14048
14735
 
14049
14736
  // Copyright (c) Microsoft Corporation.
14050
14737
  // Licensed under the MIT license.
@@ -14164,11 +14851,11 @@ const NetworkReconnectTile = (props) => {
14164
14851
  // This tile may be shown at the beginning of a call.
14165
14852
  // So we need to transition local video to the call.
14166
14853
  useLocalVideoStartTrigger(!!props.localParticipantVideoStream.isAvailable);
14167
- return (React__default['default'].createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "center", verticalAlign: "center", className: react.mergeStyles(containerStyle$1) },
14854
+ return (React__default['default'].createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "center", verticalAlign: "center", className: react.mergeStyles(containerStyle$1), "aria-atomic": true },
14168
14855
  React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(titleContainerStyle) },
14169
14856
  React__default['default'].createElement(CallCompositeIcon, { iconName: "NetworkReconnectIcon", className: react.mergeStyles(titleStyle$1) }),
14170
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle$1(palette, isVideoReady)), "aria-live": 'polite' }, strings.networkReconnectTitle)),
14171
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle$1(palette, isVideoReady)), "aria-live": 'polite' }, strings.networkReconnectMoreDetails)) }, handlers)));
14857
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle$1(palette, isVideoReady)), "aria-live": 'assertive' }, strings.networkReconnectTitle)),
14858
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle$1(palette, isVideoReady)), "aria-live": 'assertive' }, strings.networkReconnectMoreDetails)) }, handlers)));
14172
14859
  };
14173
14860
 
14174
14861
  // Copyright (c) Microsoft Corporation.
@@ -14480,9 +15167,9 @@ const buttonWithIconStyles = {
14480
15167
  * @private
14481
15168
  */
14482
15169
  const StartCallButton = (props) => {
14483
- const { isDisabled, onClickHandler, rejoinCall } = props;
15170
+ const { rejoinCall } = props;
14484
15171
  const locale = useLocale();
14485
- return (React__default['default'].createElement(react.PrimaryButton, { "data-ui-id": "call-composite-start-call-button", disabled: isDisabled, className: react.mergeStyles(buttonStyle, props.className), styles: buttonWithIconStyles, text: rejoinCall ? locale.strings.call.rejoinCallButtonLabel : locale.strings.call.startCallButtonLabel, onClick: onClickHandler, onRenderIcon: () => React__default['default'].createElement(reactIcons.Video20Filled, { className: videoCameraIconStyle }) }));
15172
+ return (React__default['default'].createElement(react.PrimaryButton, Object.assign({}, props, { "data-ui-id": "call-composite-start-call-button", className: react.mergeStyles(buttonStyle, props.className), styles: buttonWithIconStyles, text: rejoinCall ? locale.strings.call.rejoinCallButtonLabel : locale.strings.call.startCallButtonLabel, onRenderIcon: () => React__default['default'].createElement(reactIcons.Video20Filled, { className: videoCameraIconStyle }) })));
14486
15173
  };
14487
15174
 
14488
15175
  // Copyright (c) Microsoft Corporation.
@@ -14712,7 +15399,7 @@ const ConfigurationPage = (props) => {
14712
15399
  callDescription),
14713
15400
  React__default['default'].createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { cameraPermissionGranted: cameraPermissionGranted, microphonePermissionGranted: microphonePermissionGranted })))),
14714
15401
  React__default['default'].createElement(react.Stack, { styles: mobileView ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
14715
- React__default['default'].createElement(StartCallButton, { className: mobileView ? startCallButtonStyleMobile : undefined, onClickHandler: startCallHandler, isDisabled: !microphonePermissionGranted }))))));
15402
+ React__default['default'].createElement(StartCallButton, { className: mobileView ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: !microphonePermissionGranted }))))));
14716
15403
  };
14717
15404
 
14718
15405
  // Copyright (c) Microsoft Corporation.
@@ -14761,13 +15448,13 @@ const moreDetailsStyles = {
14761
15448
  */
14762
15449
  function NoticePage(props) {
14763
15450
  const adapter = useAdapter();
14764
- return (React__default['default'].createElement(react.Stack, { verticalFill: true, verticalAlign: "center", horizontalAlign: "center", "data-ui-id": props.dataUiId },
15451
+ return (React__default['default'].createElement(react.Stack, { verticalFill: true, verticalAlign: "center", horizontalAlign: "center", "data-ui-id": props.dataUiId, "aria-atomic": true },
14765
15452
  React__default['default'].createElement(react.Stack, { className: react.mergeStyles(containerStyle), tokens: containerItemGap },
14766
15453
  props.iconName && React__default['default'].createElement(CallCompositeIcon, { iconName: props.iconName }),
14767
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyles) }, props.title),
14768
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyles) }, props.moreDetails),
15454
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, props.title),
15455
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyles), "aria-live": "assertive" }, props.moreDetails),
14769
15456
  React__default['default'].createElement(react.Stack, { styles: rejoinCallButtonContainerStyles },
14770
- React__default['default'].createElement(StartCallButton, { onClickHandler: () => adapter.joinCall(), isDisabled: false, rejoinCall: true })))));
15457
+ React__default['default'].createElement(StartCallButton, { onClick: () => adapter.joinCall(), disabled: false, rejoinCall: true, autoFocus: true })))));
14771
15458
  }
14772
15459
 
14773
15460
  // Copyright (c) Microsoft Corporation.
@@ -14808,10 +15495,10 @@ const LobbyTile = (props) => {
14808
15495
  const isVideoReady = (_a = videoStream === null || videoStream === void 0 ? void 0 : videoStream.isAvailable) !== null && _a !== void 0 ? _a : false;
14809
15496
  const palette = useTheme().palette;
14810
15497
  const handlers = useHandlers();
14811
- return (React__default['default'].createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: props.overlayProps ? (React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "center", verticalAlign: "center", className: react.mergeStyles(overlayContainerStyle) },
15498
+ return (React__default['default'].createElement(ExpandedLocalVideoTile, Object.assign({ localParticipantVideoStream: props.localParticipantVideoStream, overlayContent: props.overlayProps ? (React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "center", verticalAlign: "center", className: react.mergeStyles(overlayContainerStyle), "aria-atomic": true },
14812
15499
  React__default['default'].createElement(react.Stack.Item, { className: react.mergeStyles(titleStyle(palette, isVideoReady)) }, props.overlayProps.overlayIcon),
14813
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle(palette, isVideoReady)), "aria-live": 'polite' }, props.overlayProps.title),
14814
- props.overlayProps.moreDetails && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle(palette, isVideoReady)) }, props.overlayProps.moreDetails)))) : undefined }, handlers)));
15500
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle(palette, isVideoReady)), "aria-live": "assertive" }, props.overlayProps.title),
15501
+ props.overlayProps.moreDetails && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle(palette, isVideoReady)), "aria-live": "assertive" }, props.overlayProps.moreDetails)))) : undefined }, handlers)));
14815
15502
  };
14816
15503
 
14817
15504
  // Copyright (c) Microsoft Corporation.
@@ -15130,6 +15817,7 @@ class AzureCommunicationCallAdapter {
15130
15817
  };
15131
15818
  this.handlers = createDefaultCallingHandlers(callClient, callAgent, deviceManager, undefined);
15132
15819
  this.onClientStateChange = onStateChange;
15820
+ this.subscribeDeviceManagerEvents();
15133
15821
  this.callClient.onStateChange(onStateChange);
15134
15822
  }
15135
15823
  get call() {
@@ -15139,6 +15827,15 @@ class AzureCommunicationCallAdapter {
15139
15827
  this.resetDiagnosticsForwarder(newCall);
15140
15828
  this._call = newCall;
15141
15829
  }
15830
+ // TODO: update this to include the 'selectedCameraChanged' when calling adds it to the device manager
15831
+ subscribeDeviceManagerEvents() {
15832
+ this.deviceManager.on('selectedMicrophoneChanged', () => {
15833
+ this.emitter.emit('selectedMicrophoneChanged');
15834
+ });
15835
+ this.deviceManager.on('selectedSpeakerChanged', () => {
15836
+ this.emitter.emit('selectedSpeakerChanged');
15837
+ });
15838
+ }
15142
15839
  bindPublicMethods() {
15143
15840
  this.onStateChange.bind(this);
15144
15841
  this.offStateChange.bind(this);
@@ -15166,6 +15863,12 @@ class AzureCommunicationCallAdapter {
15166
15863
  this.on.bind(this);
15167
15864
  this.off.bind(this);
15168
15865
  this.processNewCall.bind(this);
15866
+ /* @conditional-compile-remove(PSTN-calls) */
15867
+ this.addParticipant.bind(this);
15868
+ /* @conditional-compile-remove(PSTN-calls) */
15869
+ this.holdCall.bind(this);
15870
+ /* @conditional-compile-remove(PSTN-calls) */
15871
+ this.resumeCall.bind(this);
15169
15872
  }
15170
15873
  dispose() {
15171
15874
  this.resetDiagnosticsForwarder();
@@ -15345,8 +16048,7 @@ class AzureCommunicationCallAdapter {
15345
16048
  }));
15346
16049
  });
15347
16050
  }
15348
- //TODO: a better way to expose option parameter
15349
- startCall(participants) {
16051
+ startCall(participants, options) {
15350
16052
  var _a, _b;
15351
16053
  if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
15352
16054
  throw new Error('You are already in the call.');
@@ -15355,9 +16057,18 @@ class AzureCommunicationCallAdapter {
15355
16057
  // FIXME: `onStartCall` does not allow a Teams user.
15356
16058
  // Need some way to return an error if a Teams user is provided.
15357
16059
  const backendId = fromFlatCommunicationIdentifier(participant);
16060
+ if (communicationCommon.isPhoneNumberIdentifier(backendId)) {
16061
+ if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {
16062
+ throw new Error('unable to start call, PSTN user present with no alternativeCallerID.');
16063
+ }
16064
+ return backendId;
16065
+ }
16066
+ else if (communicationCommon.isCommunicationUserIdentifier(backendId)) {
16067
+ return backendId;
16068
+ }
15358
16069
  return backendId;
15359
16070
  });
15360
- const call = this.handlers.onStartCall(idsToAdd);
16071
+ const call = this.handlers.onStartCall(idsToAdd, options);
15361
16072
  if (!call) {
15362
16073
  throw new Error('Unable to start call.');
15363
16074
  }
@@ -15377,6 +16088,30 @@ class AzureCommunicationCallAdapter {
15377
16088
  this.handlers.onRemoveParticipant(userId);
15378
16089
  });
15379
16090
  }
16091
+ /* @conditional-compile-remove(PSTN-calls) */
16092
+ addParticipant(participant, options) {
16093
+ return __awaiter$4(this, void 0, void 0, function* () {
16094
+ this.handlers.onAddParticipant(participant, options);
16095
+ });
16096
+ }
16097
+ /* @conditional-compile-remove(PSTN-calls) */
16098
+ holdCall() {
16099
+ var _a;
16100
+ return __awaiter$4(this, void 0, void 0, function* () {
16101
+ if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) !== 'LocalHold') {
16102
+ this.handlers.onToggleHold();
16103
+ }
16104
+ });
16105
+ }
16106
+ /* @conditional-compile-remove(PSTN-calls) */
16107
+ resumeCall() {
16108
+ var _a;
16109
+ return __awaiter$4(this, void 0, void 0, function* () {
16110
+ if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold') {
16111
+ this.handlers.onToggleHold();
16112
+ }
16113
+ });
16114
+ }
15380
16115
  getState() {
15381
16116
  return this.context.getState();
15382
16117
  }
@@ -15760,6 +16495,68 @@ const MoreButton = (props) => {
15760
16495
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { labelKey: 'optionsButtonLabelKey', showLabel: false, onRenderOnIcon: icon, onRenderOffIcon: icon, onClick: props.onClick, "data-ui-id": 'call-with-chat-composite-more-button' })));
15761
16496
  };
15762
16497
 
16498
+ // Copyright (c) Microsoft Corporation.
16499
+ /**
16500
+ * Max number of Custom Buttons in primary and secondary ControlBar
16501
+ * Does not include existing buttons in the controlBar.
16502
+ *
16503
+ * @private
16504
+ */
16505
+ const CUSTOM_BUTTON_OPTIONS = {
16506
+ MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS: 3,
16507
+ MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS: 1,
16508
+ MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS: 2
16509
+ };
16510
+ /** @private */
16511
+ const generateCustomCallWithChatControlBarButton = (onFetchCustomButtonProps, displayType) => {
16512
+ const response = {
16513
+ primary: undefined,
16514
+ secondary: undefined,
16515
+ overflow: undefined
16516
+ };
16517
+ if (!onFetchCustomButtonProps) {
16518
+ return response;
16519
+ }
16520
+ const allButtonProps = onFetchCustomButtonProps.map((f) => f({ displayType }));
16521
+ for (const key in response) {
16522
+ response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
16523
+ .filter((buttonProps) => buttonProps.placement === key)
16524
+ .map((buttonProps, i) => (React__default['default'].createElement(ControlBarButton, { onClick: buttonProps.onItemClick, showLabel: buttonProps.showLabel, strings: generateCustomControlBarButtonStrings(buttonProps.text), styles: buttonProps.styles, key: `${buttonProps.placement}_${i}`, onRenderIcon: () => { var _a; return React__default['default'].createElement(react.Icon, { iconName: (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : 'ControlButtonOptions' }); }, disabled: buttonProps.disabled })))));
16525
+ }
16526
+ return response;
16527
+ };
16528
+ /** @private */
16529
+ const generateCustomCallWithChatDrawerButtons = (onFetchCustomButtonProps, displayType) => {
16530
+ const response = {
16531
+ primary: undefined,
16532
+ secondary: undefined,
16533
+ overflow: undefined
16534
+ };
16535
+ if (!onFetchCustomButtonProps) {
16536
+ return response;
16537
+ }
16538
+ const allButtonProps = onFetchCustomButtonProps.map((f) => f({ displayType }));
16539
+ for (const key in response) {
16540
+ response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
16541
+ .filter((buttonProps) => buttonProps.placement === key)
16542
+ .map((buttonProps, i) => ({
16543
+ itemKey: `${buttonProps.placement}_${i}`,
16544
+ text: buttonProps.text,
16545
+ onItemClick: buttonProps.onItemClick,
16546
+ iconProps: { iconName: buttonProps.iconName },
16547
+ disabled: buttonProps.disabled
16548
+ }))));
16549
+ }
16550
+ return response;
16551
+ };
16552
+ /* @conditional-compile-remove(control-bar-button-injection) */
16553
+ /** @private */
16554
+ const onFetchCustomButtonPropsTrampoline = (options) => {
16555
+ let response = undefined;
16556
+ response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;
16557
+ return response;
16558
+ };
16559
+
15763
16560
  // Copyright (c) Microsoft Corporation.
15764
16561
  const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) => {
15765
16562
  if (callWithChatControls === false) {
@@ -15781,6 +16578,7 @@ const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) =>
15781
16578
  * @private
15782
16579
  */
15783
16580
  const CallWithChatControlBar = (props) => {
16581
+ var _a, _b;
15784
16582
  const theme = react.useTheme();
15785
16583
  const callWithChatStrings = useCallWithChatCompositeStrings();
15786
16584
  const options = inferCallWithChatControlOptions$1(props.mobileView, props.callControls);
@@ -15802,6 +16600,8 @@ const CallWithChatControlBar = (props) => {
15802
16600
  const screenShareButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined), [props.mobileView, theme]);
15803
16601
  const commonButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined), [props.mobileView, theme]);
15804
16602
  const endCallButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined), [props.mobileView, theme]);
16603
+ /* @conditional-compile-remove(control-bar-button-injection) */
16604
+ const customButtons = React.useMemo(() => generateCustomCallWithChatControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);
15805
16605
  // when options is false then we want to hide the whole control bar.
15806
16606
  if (options === false) {
15807
16607
  return React__default['default'].createElement(React__default['default'].Fragment, null);
@@ -15816,11 +16616,23 @@ const CallWithChatControlBar = (props) => {
15816
16616
  isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView })),
15817
16617
  isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView })),
15818
16618
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
15819
- isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles })),
16619
+ isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles })),
16620
+ /* @conditional-compile-remove(control-bar-button-injection) */
16621
+ (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
16622
+ _a.props.children.slice(0, props.mobileView
16623
+ ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
16624
+ : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
16625
+ return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.strings.label, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
16626
+ }),
15820
16627
  props.mobileView && (React__default['default'].createElement(MoreButton, { "data-ui-id": "call-with-chat-composite-more-button", strings: moreButtonStrings, onClick: props.onMoreButtonClicked, disabled: props.disableButtonsForLobbyPage })),
15821
16628
  React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles })))))),
15822
- !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
15823
- isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: true, onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage, strings: peopleButtonStrings, styles: commonButtonStyles })),
16629
+ !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
16630
+ /* @conditional-compile-remove(control-bar-button-injection) */
16631
+ (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :
16632
+ _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
16633
+ return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.key, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
16634
+ }),
16635
+ isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage, strings: peopleButtonStrings, styles: commonButtonStyles })),
15824
16636
  isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
15825
16637
  };
15826
16638
  const desktopButtonContainerStyle = {
@@ -16017,8 +16829,8 @@ class CallWithChatBackedCallAdapter {
16017
16829
  return this.callWithChatAdapter.joinCall(microphoneOn);
16018
16830
  };
16019
16831
  this.leaveCall = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.leaveCall(); });
16020
- this.startCall = (participants) => {
16021
- return this.callWithChatAdapter.startCall(participants);
16832
+ this.startCall = (participants, options) => {
16833
+ return this.callWithChatAdapter.startCall(participants, options);
16022
16834
  };
16023
16835
  this.setCamera = (sourceId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setCamera(sourceId, options); });
16024
16836
  this.setMicrophone = (sourceId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setMicrophone(sourceId); });
@@ -16036,6 +16848,18 @@ class CallWithChatBackedCallAdapter {
16036
16848
  this.removeParticipant = (userId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.removeParticipant(userId); });
16037
16849
  this.createStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.createStreamView(remoteUserId, options); });
16038
16850
  this.disposeStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.disposeStreamView(remoteUserId, options); });
16851
+ /* @conditional-compile-remove(PSTN-calls) */
16852
+ this.holdCall = () => __awaiter$3(this, void 0, void 0, function* () {
16853
+ yield this.callWithChatAdapter.holdCall();
16854
+ });
16855
+ /* @conditional-compile-remove(PSTN-calls) */
16856
+ this.resumeCall = () => __awaiter$3(this, void 0, void 0, function* () {
16857
+ yield this.callWithChatAdapter.resumeCall();
16858
+ });
16859
+ /* @conditional-compile-remove(PSTN-calls) */
16860
+ this.addParticipant = (participant, options) => __awaiter$3(this, void 0, void 0, function* () {
16861
+ yield this.callWithChatAdapter.addParticipant(participant, options);
16862
+ });
16039
16863
  this.callWithChatAdapter = callWithChatAdapter;
16040
16864
  }
16041
16865
  }
@@ -16182,7 +17006,7 @@ const inferCallWithChatControlOptions = (callWithChatControls) => {
16182
17006
  };
16183
17007
  /** @private */
16184
17008
  const MoreDrawer = (props) => {
16185
- var _a, _b;
17009
+ var _a, _b, _c, _d, _e;
16186
17010
  const drawerMenuItems = [];
16187
17011
  const { speakers, onSelectSpeaker } = props;
16188
17012
  const onSpeakerItemClick = React.useCallback((_ev, itemKey) => {
@@ -16253,6 +17077,20 @@ const MoreDrawer = (props) => {
16253
17077
  onItemClick: props.onPeopleButtonClicked
16254
17078
  });
16255
17079
  }
17080
+ /* @conditional-compile-remove(control-bar-button-injection) */
17081
+ const customDrawerButtons = React.useMemo(() => generateCustomCallWithChatDrawerButtons(onFetchCustomButtonPropsTrampoline(drawerSelectionOptions !== false ? drawerSelectionOptions : undefined), drawerSelectionOptions !== false ? drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.displayType : undefined), [drawerSelectionOptions]);
17082
+ /* @conditional-compile-remove(control-bar-button-injection) */
17083
+ (_c = customDrawerButtons['overflow']) === null || _c === void 0 ? void 0 : _c.props.children.forEach((element) => {
17084
+ drawerMenuItems.push(element);
17085
+ });
17086
+ /* @conditional-compile-remove(control-bar-button-injection) */
17087
+ (_d = customDrawerButtons['primary']) === null || _d === void 0 ? void 0 : _d.props.children.slice(CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS).forEach((element) => {
17088
+ drawerMenuItems.push(element);
17089
+ });
17090
+ /* @conditional-compile-remove(control-bar-button-injection) */
17091
+ (_e = customDrawerButtons['secondary']) === null || _e === void 0 ? void 0 : _e.props.children.forEach((element) => {
17092
+ drawerMenuItems.push(element);
17093
+ });
16256
17094
  return React__default['default'].createElement(_DrawerMenu, { items: drawerMenuItems, onLightDismiss: props.onLightDismiss });
16257
17095
  };
16258
17096
  const isDeviceSelected = (speaker, selectedSpeaker) => !!selectedSpeaker && speaker.id === selectedSpeaker.id;
@@ -16301,7 +17139,7 @@ const SidePaneHeader = (props) => {
16301
17139
  const callWithChatStrings = useCallWithChatCompositeStrings();
16302
17140
  return (React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", styles: sidePaneHeaderContainerStyles },
16303
17141
  React__default['default'].createElement(react.Stack.Item, { styles: sidePaneHeaderStyles }, props.headingText),
16304
- React__default['default'].createElement(react.CommandBarButton, { ariaLabel: callWithChatStrings.dismissSidePaneButton, styles: sidePaneCloseButtonStyles, iconProps: { iconName: 'cancel' }, onClick: props.onClose })));
17142
+ React__default['default'].createElement(react.CommandBarButton, { ariaLabel: callWithChatStrings.dismissSidePaneButtonLabel, styles: sidePaneCloseButtonStyles, iconProps: { iconName: 'cancel' }, onClick: props.onClose })));
16305
17143
  };
16306
17144
 
16307
17145
  // Copyright (c) Microsoft Corporation.
@@ -16332,7 +17170,7 @@ const LocalAndRemotePIP = (props) => {
16332
17170
  onDisposeLocalStreamView
16333
17171
  ]);
16334
17172
  const remoteVideoTileProps = React.useMemo(() => {
16335
- var _a, _b;
17173
+ var _a, _b, _c;
16336
17174
  return !dominantRemoteParticipant
16337
17175
  ? undefined
16338
17176
  : {
@@ -16343,7 +17181,8 @@ const LocalAndRemotePIP = (props) => {
16343
17181
  showLabel: false,
16344
17182
  showMuteIndicator: false,
16345
17183
  isAvailable: (_a = dominantRemoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable,
16346
- renderElement: (_b = dominantRemoteParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement,
17184
+ isReceiving: (_b = dominantRemoteParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.isReceiving,
17185
+ renderElement: (_c = dominantRemoteParticipant.videoStream) === null || _c === void 0 ? void 0 : _c.renderElement,
16347
17186
  userId: dominantRemoteParticipant.userId,
16348
17187
  key: dominantRemoteParticipant.userId
16349
17188
  };
@@ -16390,7 +17229,9 @@ const dominantRemoteParticipantSelector = reselect__namespace.createSelector([ge
16390
17229
  const dominantRemoteParticipant = remoteParticipants && Object.keys(remoteParticipants).length > 0
16391
17230
  ? findDominantRemoteParticipant(remoteParticipants, dominantSpeakers !== null && dominantSpeakers !== void 0 ? dominantSpeakers : [])
16392
17231
  : undefined;
16393
- return dominantRemoteParticipant ? _videoGalleryRemoteParticipantsMemo(dominantRemoteParticipant)[0] : undefined;
17232
+ return dominantRemoteParticipant
17233
+ ? _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline(Object.values(dominantRemoteParticipant)))[0]
17234
+ : undefined;
16394
17235
  });
16395
17236
  const findDominantRemoteParticipant = (remoteParticipants, dominantSpeakerIds) => {
16396
17237
  let dominantRemoteParticipantId = dominantSpeakerIds[0];
@@ -16402,6 +17243,10 @@ const findDominantRemoteParticipant = (remoteParticipants, dominantSpeakerIds) =
16402
17243
  }
16403
17244
  return { dominantRemoteParticipantId: remoteParticipants[dominantRemoteParticipantId] };
16404
17245
  };
17246
+ const updateUserDisplayNamesTrampoline = (remoteParticipants) => {
17247
+ /* @conditional-compile-remove(PSTN-calls) */
17248
+ return _updateUserDisplayNames(remoteParticipants);
17249
+ };
16405
17250
 
16406
17251
  // Copyright (c) Microsoft Corporation.
16407
17252
  /**
@@ -16890,11 +17735,16 @@ const CallWithChatScreen = (props) => {
16890
17735
  setShowDrawer(false);
16891
17736
  togglePeople();
16892
17737
  }, [togglePeople]);
17738
+ const callCompositeContainerCSS = React.useMemo(() => {
17739
+ return { display: isMobileWithActivePane ? 'none' : 'flex' };
17740
+ }, [isMobileWithActivePane]);
16893
17741
  return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles) },
16894
17742
  React__default['default'].createElement(react.Stack, { verticalFill: true, grow: true, styles: compositeOuterContainerStyles, id: compositeParentDivId },
16895
17743
  React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
16896
- !isMobileWithActivePane && (React__default['default'].createElement(react.Stack.Item, { grow: true, styles: callCompositeContainerStyles },
16897
- React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme })))),
17744
+ React__default['default'].createElement(react.Stack.Item, { grow: true, styles: callCompositeContainerStyles,
17745
+ // Perf: Instead of removing the video gallery from DOM, we hide it to prevent re-renders.
17746
+ style: callCompositeContainerCSS },
17747
+ React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
16898
17748
  chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
16899
17749
  /* @conditional-compile-remove(file-sharing) */
16900
17750
  fileSharing: props.fileSharing, rtl: props.rtl }))),
@@ -17109,6 +17959,12 @@ class AzureCommunicationCallWithChatAdapter {
17109
17959
  this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
17110
17960
  /* @conditional-compile-remove(file-sharing) */
17111
17961
  this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
17962
+ /* @conditional-compile-remove(PSTN-calls) */
17963
+ this.holdCall.bind(this);
17964
+ /* @conditional-compile-remove(PSTN-calls) */
17965
+ this.resumeCall.bind(this);
17966
+ /* @conditional-compile-remove(PSTN-calls) */
17967
+ this.addParticipant.bind(this);
17112
17968
  }
17113
17969
  /** Join existing Call. */
17114
17970
  joinCall(microphoneOn) {
@@ -17122,8 +17978,8 @@ class AzureCommunicationCallWithChatAdapter {
17122
17978
  });
17123
17979
  }
17124
17980
  /** Start a new Call. */
17125
- startCall(participants) {
17126
- return this.callAdapter.startCall(participants);
17981
+ startCall(participants, options) {
17982
+ return this.callAdapter.startCall(participants, options);
17127
17983
  }
17128
17984
  /**
17129
17985
  * Subscribe to state change events.
@@ -17315,6 +18171,24 @@ class AzureCommunicationCallWithChatAdapter {
17315
18171
  updateFileUploadMetadata(id, metadata) {
17316
18172
  this.chatAdapter.updateFileUploadMetadata(id, metadata);
17317
18173
  }
18174
+ /* @conditional-compile-remove(PSTN-calls) */
18175
+ holdCall() {
18176
+ return __awaiter(this, void 0, void 0, function* () {
18177
+ return yield this.callAdapter.holdCall();
18178
+ });
18179
+ }
18180
+ /* @conditional-compile-remove(PSTN-calls) */
18181
+ resumeCall() {
18182
+ return __awaiter(this, void 0, void 0, function* () {
18183
+ return yield this.callAdapter.resumeCall();
18184
+ });
18185
+ }
18186
+ /* @conditional-compile-remove(PSTN-calls) */
18187
+ addParticipant(participant, options) {
18188
+ return __awaiter(this, void 0, void 0, function* () {
18189
+ return yield this.callAdapter.addParticipant(participant, options);
18190
+ });
18191
+ }
17318
18192
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17319
18193
  on(event, listener) {
17320
18194
  switch (event) {
@@ -17342,6 +18216,12 @@ class AzureCommunicationCallWithChatAdapter {
17342
18216
  case 'isSpeakingChanged':
17343
18217
  this.callAdapter.on('isSpeakingChanged', listener);
17344
18218
  break;
18219
+ case 'selectedMicrophoneChanged':
18220
+ this.callAdapter.on('selectedMicrophoneChanged', listener);
18221
+ break;
18222
+ case 'selectedSpeakerChanged':
18223
+ this.callAdapter.on('selectedSpeakerChanged', listener);
18224
+ break;
17345
18225
  case 'messageReceived':
17346
18226
  this.chatAdapter.on('messageReceived', listener);
17347
18227
  break;
@@ -17394,6 +18274,12 @@ class AzureCommunicationCallWithChatAdapter {
17394
18274
  case 'isSpeakingChanged':
17395
18275
  this.callAdapter.off('isSpeakingChanged', listener);
17396
18276
  break;
18277
+ case 'selectedMicrophoneChanged':
18278
+ this.callAdapter.off('selectedMicrophoneChanged', listener);
18279
+ break;
18280
+ case 'selectedSpeakerChanged':
18281
+ this.callAdapter.off('selectedSpeakerChanged', listener);
18282
+ break;
17397
18283
  case 'messageReceived':
17398
18284
  this.chatAdapter.off('messageReceived', listener);
17399
18285
  break;
@@ -17663,10 +18549,12 @@ exports.ControlBarButton = ControlBarButton;
17663
18549
  exports.DEFAULT_COMPONENT_ICONS = DEFAULT_COMPONENT_ICONS;
17664
18550
  exports.DEFAULT_COMPOSITE_ICONS = DEFAULT_COMPOSITE_ICONS;
17665
18551
  exports.DevicesButton = DevicesButton;
18552
+ exports.Dialpad = Dialpad;
17666
18553
  exports.EndCallButton = EndCallButton;
17667
18554
  exports.ErrorBar = ErrorBar;
17668
18555
  exports.FluentThemeProvider = FluentThemeProvider;
17669
18556
  exports.GridLayout = GridLayout;
18557
+ exports.HoldButton = HoldButton;
17670
18558
  exports.LocalizationProvider = LocalizationProvider$1;
17671
18559
  exports.MessageStatusIndicator = MessageStatusIndicator;
17672
18560
  exports.MessageThread = MessageThread;