@azure/communication-react 1.3.1-alpha-202205310013.0 → 1.3.2-alpha-202206290013.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 (380) hide show
  1. package/CHANGELOG.json +957 -0
  2. package/CHANGELOG.md +65 -1
  3. package/dist/communication-react.d.ts +405 -31
  4. package/dist/dist-cjs/communication-react/index.js +1655 -762
  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 +4 -3
  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/StreamMedia.styles.d.ts +13 -1
  202. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.d.ts.map +1 -1
  203. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js +34 -0
  204. package/dist/dist-esm/react-components/src/components/styles/StreamMedia.styles.js.map +1 -1
  205. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.d.ts +9 -0
  206. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.d.ts.map +1 -0
  207. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.js +26 -0
  208. package/dist/dist-esm/react-components/src/components/styles/VoiceOverButton.style.js.map +1 -0
  209. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  210. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts.map +1 -1
  211. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  212. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +37 -6
  213. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +37 -6
  214. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +22 -4
  215. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +38 -7
  216. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +37 -6
  217. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +37 -6
  218. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +37 -6
  219. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +37 -6
  220. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +37 -6
  221. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +37 -6
  222. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +37 -6
  223. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +37 -6
  224. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +37 -6
  225. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +37 -6
  226. package/dist/dist-esm/react-components/src/theming/icons.d.ts +6 -0
  227. package/dist/dist-esm/react-components/src/theming/icons.d.ts.map +1 -1
  228. package/dist/dist-esm/react-components/src/theming/icons.js +12 -2
  229. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  230. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
  231. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts.map +1 -1
  232. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +12 -2
  233. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts.map +1 -1
  234. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +52 -3
  235. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  236. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +42 -2
  237. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts.map +1 -1
  238. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts.map +1 -1
  239. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +1 -1
  240. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts +1 -0
  242. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts.map +1 -1
  243. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +7 -18
  244. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  245. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.d.ts.map +1 -1
  246. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js +3 -3
  247. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js.map +1 -1
  248. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.d.ts.map +1 -1
  249. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +3 -2
  250. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  251. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts.map +1 -1
  252. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +2 -23
  253. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  254. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.d.ts.map +1 -1
  255. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +3 -3
  256. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
  257. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.d.ts +2 -3
  258. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.d.ts.map +1 -1
  259. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.js +2 -2
  260. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/StartCallButton.js.map +1 -1
  261. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +9 -1
  262. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts.map +1 -1
  263. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js +39 -10
  264. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js.map +1 -1
  265. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +1 -0
  266. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts.map +1 -1
  267. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js +1 -1
  268. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js.map +1 -1
  269. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +10 -9
  270. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  271. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -1
  272. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts.map +1 -1
  273. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  274. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -1
  275. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  276. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.d.ts.map +1 -1
  277. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js +4 -4
  278. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js.map +1 -1
  279. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.d.ts.map +1 -1
  280. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.js +10 -1
  281. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/dominantRemoteParticipantSelector.js.map +1 -1
  282. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts +41 -13
  283. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts.map +1 -1
  284. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +7 -0
  285. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts.map +1 -1
  286. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +7 -2
  287. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  288. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts.map +1 -1
  289. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +20 -3
  290. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  291. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.d.ts +68 -0
  292. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.d.ts.map +1 -0
  293. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js +70 -0
  294. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js.map +1 -0
  295. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/SidePaneHeader.js +1 -1
  296. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/SidePaneHeader.js.map +1 -1
  297. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +4 -4
  298. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts.map +1 -1
  299. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +11 -2
  300. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts.map +1 -1
  301. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +38 -2
  302. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  303. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +27 -3
  304. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts.map +1 -1
  305. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +7 -2
  306. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts.map +1 -1
  307. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +14 -2
  308. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  309. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.d.ts +1 -1
  310. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.d.ts.map +1 -1
  311. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +19 -1
  312. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  313. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts +1 -0
  314. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts.map +1 -1
  315. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts.map +1 -1
  316. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  317. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  318. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +1 -0
  319. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts.map +1 -1
  320. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js +2 -2
  321. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js.map +1 -1
  322. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts +4 -0
  323. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts.map +1 -1
  324. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.d.ts.map +1 -1
  325. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js +11 -1
  326. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/FileUploadButton.js.map +1 -1
  327. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.d.ts +5 -0
  328. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.d.ts.map +1 -1
  329. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.js +7 -1
  330. package/dist/dist-esm/react-composites/src/composites/ChatComposite/styles/Chat.styles.js.map +1 -1
  331. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.d.ts.map +1 -1
  332. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js +32 -8
  333. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js.map +1 -1
  334. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.d.ts.map +1 -1
  335. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.js +8 -2
  336. package/dist/dist-esm/react-composites/src/composites/common/BaseComposite.js.map +1 -1
  337. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.d.ts.map +1 -1
  338. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +8 -4
  339. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  340. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +10 -0
  341. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts.map +1 -1
  342. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  343. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.d.ts +6 -0
  344. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.d.ts.map +1 -0
  345. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.js +12 -0
  346. package/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.js.map +1 -0
  347. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.d.ts +6 -2
  348. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.d.ts.map +1 -1
  349. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.js +20 -4
  350. package/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.js.map +1 -1
  351. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +10 -5
  352. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +10 -5
  353. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +3 -2
  354. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +10 -5
  355. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +10 -5
  356. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +10 -5
  357. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +10 -5
  358. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +10 -5
  359. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +10 -5
  360. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +10 -5
  361. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +10 -5
  362. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +10 -5
  363. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +10 -5
  364. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +10 -5
  365. package/package.json +10 -10
  366. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.d.ts +0 -6
  367. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.d.ts.map +0 -1
  368. package/dist/dist-esm/calling-component-bindings/src/SelectorUtils.js.map +0 -1
  369. package/dist/dist-esm/calling-component-bindings/src/callUtils.d.ts.map +0 -1
  370. package/dist/dist-esm/calling-component-bindings/src/callUtils.js.map +0 -1
  371. package/dist/dist-esm/calling-component-bindings/src/videoGalleryUtils.d.ts.map +0 -1
  372. package/dist/dist-esm/calling-component-bindings/src/videoGalleryUtils.js.map +0 -1
  373. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.d.ts +0 -74
  374. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.d.ts.map +0 -1
  375. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.js +0 -85
  376. package/dist/dist-esm/react-components/src/components/utils/useCancellableTask.js.map +0 -1
  377. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.d.ts +0 -21
  378. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.d.ts.map +0 -1
  379. package/dist/dist-esm/react-composites/src/composites/common/CustomDataModelUtils.js +0 -59
  380. 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-202206290013.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({}, 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
@@ -2907,6 +3136,7 @@ const ChatMessageActionFlyout = (props) => {
2907
3136
  hidePersonaDetails: true,
2908
3137
  size: react.PersonaSize.size24,
2909
3138
  text: person.displayName,
3139
+ showOverflowTooltip: false,
2910
3140
  styles: {
2911
3141
  root: {
2912
3142
  margin: '0.25rem'
@@ -3143,8 +3373,20 @@ const actionIconStyle = { height: '1rem' };
3143
3373
  * @internal
3144
3374
  */
3145
3375
  const _FileDownloadCards = (props) => {
3376
+ var _a;
3146
3377
  const { userId, fileMetadata } = props;
3147
3378
  const [showSpinner, setShowSpinner] = React.useState(false);
3379
+ /* @conditional-compile-remove(file-sharing) */
3380
+ const localeStrings = useLocale$1().strings.messageThread;
3381
+ const downloadFileButtonString = React.useMemo(() => () => {
3382
+ var _a, _b;
3383
+ /* @conditional-compile-remove(file-sharing) */
3384
+ return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
3385
+ }, [
3386
+ (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile,
3387
+ /* @conditional-compile-remove(file-sharing) */
3388
+ localeStrings.downloadFile
3389
+ ]);
3148
3390
  const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$q(void 0, void 0, void 0, function* () {
3149
3391
  if (!props.downloadHandler) {
3150
3392
  window.open(file.url, '_blank', 'noopener,noreferrer');
@@ -3171,7 +3413,7 @@ const _FileDownloadCards = (props) => {
3171
3413
  }
3172
3414
  return (React__default['default'].createElement("div", { style: fileDownloadCardsStyle, "data-ui-id": "file-download-card-group" },
3173
3415
  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 },
3416
+ 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
3417
  React__default['default'].createElement(DownloadIconTrampoline, null))), actionHandler: () => fileDownloadHandler(userId, file) }))))));
3176
3418
  };
3177
3419
  /**
@@ -3200,6 +3442,7 @@ const generateCustomizedTimestamp = (props, createdOn, locale) => {
3200
3442
  };
3201
3443
  /** @private */
3202
3444
  const MessageBubble = (props) => {
3445
+ var _a;
3203
3446
  const ids = useIdentifiers();
3204
3447
  const theme = useTheme();
3205
3448
  const locale = useLocale$1();
@@ -3222,7 +3465,7 @@ const MessageBubble = (props) => {
3222
3465
  const actionMenuProps = wasInteractionByTouch
3223
3466
  ? undefined
3224
3467
  : chatMessageActionMenuProps({
3225
- ariaLabel: strings.actionMenuMoreOptions,
3468
+ ariaLabel: (_a = strings.actionMenuMoreOptions) !== null && _a !== void 0 ? _a : '',
3226
3469
  enabled: chatActionsEnabled,
3227
3470
  menuButtonRef: messageActionButtonRef,
3228
3471
  // Force show the action button while the flyout is open (otherwise this will dismiss when the pointer is hovered over the flyout)
@@ -3238,7 +3481,20 @@ const MessageBubble = (props) => {
3238
3481
  // or not we need to set the target to undefined here to actually hide the action flyout
3239
3482
  setChatMessageActionFlyoutTarget(undefined);
3240
3483
  }, [setChatMessageActionFlyoutTarget]);
3241
- const defaultOnRenderFileDownloads = React.useCallback(() => (React__default['default'].createElement(_FileDownloadCards, { userId: userId, fileMetadata: message['attachedFilesMetadata'] || [], downloadHandler: fileDownloadHandler })), [message, fileDownloadHandler, userId]);
3484
+ const defaultOnRenderFileDownloads = React.useCallback(() => {
3485
+ var _a;
3486
+ return (React__default['default'].createElement(_FileDownloadCards, { userId: userId, fileMetadata: message['attachedFilesMetadata'] || [], downloadHandler: fileDownloadHandler,
3487
+ /* @conditional-compile-remove(file-sharing) */
3488
+ strings: { downloadFile: (_a = props.strings.downloadFile) !== null && _a !== void 0 ? _a : locale.strings.messageThread.downloadFile } }));
3489
+ }, [
3490
+ userId,
3491
+ message,
3492
+ /* @conditional-compile-remove(file-sharing) */
3493
+ props,
3494
+ /* @conditional-compile-remove(file-sharing) */
3495
+ locale,
3496
+ fileDownloadHandler
3497
+ ]);
3242
3498
  const chatMessage = (React__default['default'].createElement(React__default['default'].Fragment, null,
3243
3499
  React__default['default'].createElement("div", { ref: messageRef },
3244
3500
  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 +3567,7 @@ const ChatMessageComponent = (props) => {
3311
3567
  else {
3312
3568
  return (React__default['default'].createElement(ChatMessageComponentAsMessageBubble, Object.assign({}, props, { onRemoveClick: onRemoveClick, onEditClick: onEditClick, onResendClick: onResendClick, onRenderAvatar: props.onRenderAvatar,
3313
3569
  /* @conditional-compile-remove(date-time-customization) */
3314
- onDisplayDateTimeString: props.onDisplayDateTimeString })));
3570
+ onDisplayDateTimeString: props.onDisplayDateTimeString, strings: props.strings })));
3315
3571
  }
3316
3572
  };
3317
3573
 
@@ -3527,7 +3783,8 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
3527
3783
  const personaOptions = {
3528
3784
  hidePersonaDetails: true,
3529
3785
  size: react.PersonaSize.size32,
3530
- text: message.senderDisplayName
3786
+ text: message.senderDisplayName,
3787
+ showOverflowTooltip: false
3531
3788
  };
3532
3789
  const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
3533
3790
  defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
@@ -3803,29 +4060,31 @@ const MessageThread = (props) => {
3803
4060
  setMessageReadBy(getParticipantsWhoHaveReadMessage(message, readReceiptsBySenderIdRef.current));
3804
4061
  }
3805
4062
  }, []);
4063
+ const localeStrings = useLocale$1().strings.messageThread;
4064
+ const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
3806
4065
  // To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp need to be regenerated)
3807
4066
  const defaultChatMessageRenderer = React.useCallback((messageProps) => {
3808
4067
  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,
4068
+ return (React__default['default'].createElement(ChatMessageComponent, Object.assign({}, messageProps, { onRenderFileDownloads: onRenderFileDownloads,
4069
+ /* @conditional-compile-remove(file-sharing) */
4070
+ 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
4071
  /* @conditional-compile-remove(date-time-customization) */
3811
4072
  onDisplayDateTimeString: onDisplayDateTimeString })));
3812
4073
  }
3813
4074
  return React__default['default'].createElement(React__default['default'].Fragment, null);
3814
4075
  }, [
3815
- // eslint-disable-next-line react-hooks/exhaustive-deps
3816
- new Date().toDateString(),
3817
- isNarrow,
3818
- participantCount,
3819
- onRenderAvatar,
3820
- onActionButtonClickMemo,
3821
4076
  onRenderFileDownloads,
4077
+ /* @conditional-compile-remove(file-sharing) */
4078
+ strings,
3822
4079
  props.userId,
4080
+ participantCount,
4081
+ isNarrow,
4082
+ onRenderAvatar,
3823
4083
  showMessageStatus,
4084
+ onActionButtonClickMemo,
3824
4085
  /* @conditional-compile-remove(date-time-customization) */
3825
4086
  onDisplayDateTimeString
3826
4087
  ]);
3827
- const localeStrings = useLocale$1().strings.messageThread;
3828
- const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
3829
4088
  const defaultStatusRenderer = React.useCallback((message, status, participantCount, readCount) => {
3830
4089
  const onToggleToolTip = (isToggled) => {
3831
4090
  if (isToggled && readReceiptsBySenderIdRef.current) {
@@ -3901,8 +4160,8 @@ const MessageThread = (props) => {
3901
4160
  }, [theme, styles === null || styles === void 0 ? void 0 : styles.chatContainer, messagesToDisplay]);
3902
4161
  return (React__default['default'].createElement(reactNorthstar.Ref, { innerRef: chatThreadRef },
3903
4162
  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 })))))));
4163
+ 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 })))),
4164
+ React__default['default'].createElement(reactNorthstar.Ref, { innerRef: chatScrollDivRef }, chatBody))));
3906
4165
  };
3907
4166
  const onRenderFileDownloadsTrampoline = (props) => {
3908
4167
  /* @conditional-compile-remove(file-sharing) */
@@ -3926,6 +4185,40 @@ const linkStyles = (theme) => {
3926
4185
  };
3927
4186
 
3928
4187
  // Copyright (c) Microsoft Corporation.
4188
+ /**
4189
+ * @private
4190
+ */
4191
+ const container = () => react.mergeStyles({
4192
+ position: 'relative',
4193
+ display: 'contents'
4194
+ });
4195
+ /**
4196
+ * @private
4197
+ */
4198
+ const loadingSpinnerContainer = () => react.mergeStyles({
4199
+ // Position centrally on top of content. Parent must have position: relative.
4200
+ position: 'absolute',
4201
+ top: '50%',
4202
+ bottom: '0',
4203
+ left: '50%',
4204
+ right: '0',
4205
+ transform: 'translate(-50%, -50%)'
4206
+ });
4207
+ /**
4208
+ * @private
4209
+ */
4210
+ const loadSpinnerStyles = {
4211
+ root: {
4212
+ height: '100%' // ensure height fills container
4213
+ },
4214
+ circle: {
4215
+ maxHeight: '5rem',
4216
+ height: '50%',
4217
+ width: 'unset',
4218
+ aspectRatio: '1 / 1',
4219
+ borderWidth: '0.25em'
4220
+ }
4221
+ };
3929
4222
  /**
3930
4223
  * @private
3931
4224
  */
@@ -3968,7 +4261,7 @@ const invertedVideoInPipStyle = (theme) => react.mergeStyles(mediaContainer(them
3968
4261
  const StreamMedia = (props) => {
3969
4262
  const containerEl = React.useRef(null);
3970
4263
  const theme = useTheme();
3971
- const { isMirrored, videoStreamElement, styles } = props;
4264
+ const { isMirrored, videoStreamElement, styles, loadingState = 'none' } = props;
3972
4265
  const [pipEnabled, setPipEnabled] = React.useState(false);
3973
4266
  React.useEffect(() => {
3974
4267
  const container = containerEl.current;
@@ -3994,7 +4287,10 @@ const StreamMedia = (props) => {
3994
4287
  setPipEnabled(false);
3995
4288
  };
3996
4289
  }, [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 }));
4290
+ return (React__default['default'].createElement("div", { className: container() },
4291
+ 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 }),
4292
+ loadingState === 'loading' && (React__default['default'].createElement("div", { className: loadingSpinnerContainer() },
4293
+ React__default['default'].createElement(react.Spinner, { "data-ui-id": "stream-media-loading-spinner", styles: loadSpinnerStyles })))));
3998
4294
  };
3999
4295
 
4000
4296
  // Copyright (c) Microsoft Corporation.
@@ -4052,7 +4348,7 @@ const meContainerStyle = {
4052
4348
  */
4053
4349
  const ParticipantItem = (props) => {
4054
4350
  var _a, _b, _c, _d;
4055
- const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick } = props;
4351
+ const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip } = props;
4056
4352
  const [itemHovered, setItemHovered] = React.useState(false);
4057
4353
  const [menuHidden, setMenuHidden] = React.useState(true);
4058
4354
  const containerRef = React.useRef(null);
@@ -4065,7 +4361,8 @@ const ParticipantItem = (props) => {
4065
4361
  text: displayName,
4066
4362
  size: react.PersonaSize.size32,
4067
4363
  presence: presence,
4068
- initialsTextColor: 'white'
4364
+ initialsTextColor: 'white',
4365
+ showOverflowTooltip: showParticipantOverflowTooltip
4069
4366
  };
4070
4367
  const avatar = onRenderAvatar ? (onRenderAvatar(userId !== null && userId !== void 0 ? userId : '', avatarOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({ className: react.mergeStyles({
4071
4368
  // Prevents persona text from being vertically truncated if a global line height is less than 1.15.
@@ -4134,7 +4431,7 @@ const iconStyles$1 = react.mergeStyles({
4134
4431
  });
4135
4432
 
4136
4433
  // Copyright (c) Microsoft Corporation.
4137
- const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick) => {
4434
+ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip) => {
4138
4435
  const callingParticipant = participant;
4139
4436
  let presence = undefined;
4140
4437
  if (callingParticipant) {
@@ -4151,10 +4448,8 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
4151
4448
  callingParticipant.isScreenSharing && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$1, ariaLabel: strings.sharingIconLabel })),
4152
4449
  callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$1, ariaLabel: strings.mutedIconLabel }))))
4153
4450
  : () => 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;
4451
+ const displayName = !participant.displayName ? strings.displayNamePlaceholder : participant.displayName;
4452
+ 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
4453
  };
4159
4454
  const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4160
4455
  if (!excludeMe || !myUserId) {
@@ -4177,7 +4472,7 @@ const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
4177
4472
  */
4178
4473
  const ParticipantList = (props) => {
4179
4474
  var _a, _b;
4180
- const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems } = props;
4475
+ const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
4181
4476
  const ids = useIdentifiers();
4182
4477
  const strings = useLocale$1().strings.participantItem;
4183
4478
  const displayedParticipants = React.useMemo(() => {
@@ -4206,7 +4501,7 @@ const ParticipantList = (props) => {
4206
4501
  const participantItemStyles = react.merge(participantListItemStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles);
4207
4502
  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
4503
  ? onRenderParticipant(participant)
4209
- : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick))));
4504
+ : onRenderParticipantDefault(participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip))));
4210
4505
  };
4211
4506
 
4212
4507
  /**
@@ -4261,162 +4556,32 @@ const participantsById = (participants) => {
4261
4556
 
4262
4557
  // Copyright (c) Microsoft Corporation.
4263
4558
  /**
4264
- * A custom React hook to manage the lifecycle of a cancellable async task
4265
- * cooperatively.
4559
+ * Helper hook to maintain the video stream lifecycle. This calls onCreateStreamView and onDisposeStreamView
4560
+ * appropriately based on react lifecycle events and prop changes.
4266
4561
  *
4267
- * This hook may be useful when a component needs to run some task
4268
- * asynchronously that may need to be later cancelled.
4562
+ * @remarks
4269
4563
  *
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.
4564
+ * Notes on handling changes to scaling mode:
4274
4565
  *
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
- * }
4566
+ * Ideally we have access to the original StreamRenderView and can call view.updateScalingMode() and do not need to recreate the stream view.
4567
+ * However, to support backwards compat we cannot guarantee this. If we don't have access to the original StreamRenderView we need to dispose
4568
+ * the old view and create a new one.
4291
4569
  *
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().
4570
+ * Supporting both of these scenarios became too complex and fragile. When we introduce a breaking change this should be update to ensure that
4571
+ * onCreateStreamView _must_ return a view object with updateScalingMode and update logic in this hook to call view.updateScalingMode instead
4572
+ * of recreating the stream.
4573
+ *
4574
+ * @private
4360
4575
  */
4361
4576
  const useVideoStreamLifecycleMaintainer = (props) => {
4362
4577
  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
4578
  React.useEffect(() => {
4400
4579
  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
- }));
4580
+ onCreateStreamView === null || onCreateStreamView === void 0 ? void 0 : onCreateStreamView({ isMirrored, scalingMode });
4414
4581
  }
4415
4582
  // Always clean up element to make tile up to date and be able to dispose correctly
4416
4583
  return () => {
4417
4584
  if (renderElementExists) {
4418
- cancelRescale();
4419
- cancelCreateStreamView();
4420
4585
  // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share
4421
4586
  if (!isScreenSharingOn) {
4422
4587
  onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();
@@ -4424,30 +4589,25 @@ const useVideoStreamLifecycleMaintainer = (props) => {
4424
4589
  }
4425
4590
  };
4426
4591
  }, [
4427
- cancelCreateStreamView,
4428
- cancelRescale,
4429
4592
  isMirrored,
4430
4593
  isScreenSharingOn,
4431
4594
  isStreamAvailable,
4432
4595
  onCreateStreamView,
4433
4596
  onDisposeStreamView,
4434
4597
  renderElementExists,
4435
- scalingModeForUseEffect,
4436
- triggerCreateStreamView
4598
+ scalingMode
4437
4599
  ]);
4438
4600
  // The execution order for above useEffect is onCreateRemoteStreamView =>(async time gap) RenderElement generated => element disposed => onDisposeRemoteStreamView
4439
4601
  // Element disposed could happen during async time gap, which still cause leaks for unused renderElement.
4440
4602
  // Need to do an entire cleanup when remoteTile gets disposed and make sure element gets correctly disposed
4441
4603
  React.useEffect(() => {
4442
4604
  return () => {
4443
- cancelRescale();
4444
- cancelCreateStreamView();
4445
4605
  // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share
4446
4606
  if (!isScreenSharingOn) {
4447
4607
  onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();
4448
4608
  }
4449
4609
  };
4450
- }, [cancelCreateStreamView, cancelRescale, isScreenSharingOn, onDisposeStreamView]);
4610
+ }, [isScreenSharingOn, onDisposeStreamView]);
4451
4611
  };
4452
4612
  /**
4453
4613
  * Extension of {@link useVideoStreamLifecycleMaintainer} specifically for local video streams
@@ -4597,7 +4757,7 @@ const DEFAULT_PERSONA_MIN_SIZE_PX = 32;
4597
4757
  const DefaultPlaceholder = (props) => {
4598
4758
  const { text, noVideoAvailableAriaLabel, coinSize, styles, hidePersonaDetails } = props;
4599
4759
  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 : '' })));
4760
+ 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
4761
  };
4602
4762
  const defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };
4603
4763
  /**
@@ -4663,11 +4823,13 @@ const VideoTile = (props) => {
4663
4823
  * @internal
4664
4824
  */
4665
4825
  const _RemoteVideoTile = React__default['default'].memo((props) => {
4666
- const { isAvailable, isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
4826
+ const { isAvailable, isReceiving = true, // default to true to prevent any breaking change
4827
+ isMuted, isSpeaking, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, displayName, onRenderAvatar, showMuteIndicator } = props;
4667
4828
  const remoteVideoStreamProps = React.useMemo(() => ({
4668
4829
  isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,
4669
4830
  isScreenSharingOn,
4670
4831
  isStreamAvailable: isAvailable,
4832
+ isStreamReceiving: isReceiving,
4671
4833
  onCreateRemoteStreamView,
4672
4834
  onDisposeRemoteStreamView,
4673
4835
  remoteParticipantId: userId,
@@ -4675,6 +4837,7 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
4675
4837
  scalingMode: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.scalingMode
4676
4838
  }), [
4677
4839
  isAvailable,
4840
+ isReceiving,
4678
4841
  isScreenSharingOn,
4679
4842
  onCreateRemoteStreamView,
4680
4843
  onDisposeRemoteStreamView,
@@ -4692,8 +4855,8 @@ const _RemoteVideoTile = React__default['default'].memo((props) => {
4692
4855
  // Returning `undefined` results in the placeholder with avatar being shown
4693
4856
  return undefined;
4694
4857
  }
4695
- return React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement });
4696
- }, [renderElement]);
4858
+ return React__default['default'].createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving ? 'none' : 'loading' });
4859
+ }, [renderElement, isReceiving]);
4697
4860
  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
4861
  });
4699
4862
 
@@ -5084,7 +5247,10 @@ const LocalScreenShare = React__default['default'].memo((props) => {
5084
5247
  React__default['default'].createElement(react.Stack, { horizontal: true, verticalAlign: "center", className: screenSharingNotificationIconContainerStyle },
5085
5248
  React__default['default'].createElement(react.Icon, { iconName: "ControlButtonScreenShareStart", className: screenSharingNotificationIconStyle(theme) })),
5086
5249
  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));
5250
+ const displayName = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName)
5251
+ ? locale.strings.videoGallery.displayNamePlaceholder
5252
+ : localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName;
5253
+ 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
5254
  });
5089
5255
 
5090
5256
  // Copyright (c) Microsoft Corporation.
@@ -5103,7 +5269,7 @@ const loadingStyle = react.mergeStyles({
5103
5269
  * https://reactjs.org/docs/react-api.html#reactmemo
5104
5270
  */
5105
5271
  const RemoteScreenShare = React__default['default'].memo((props) => {
5106
- const { userId, displayName, isMuted, renderElement, onCreateRemoteStreamView, onDisposeRemoteStreamView } = props;
5272
+ const { userId, displayName, isMuted, renderElement, onCreateRemoteStreamView, onDisposeRemoteStreamView, isReceiving } = props;
5107
5273
  const locale = useLocale$1();
5108
5274
  if (!renderElement) {
5109
5275
  onCreateRemoteStreamView && onCreateRemoteStreamView(userId);
@@ -5119,7 +5285,7 @@ const RemoteScreenShare = React__default['default'].memo((props) => {
5119
5285
  participant: displayName
5120
5286
  })
5121
5287
  : '';
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 }) }));
5288
+ 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
5289
  });
5124
5290
  const LoadingSpinner = (props) => {
5125
5291
  return (React__default['default'].createElement(react.Stack, { verticalAlign: "center", className: loadingStyle },
@@ -5897,7 +6063,7 @@ const modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTil
5897
6063
  * @public
5898
6064
  */
5899
6065
  const VideoGallery = (props) => {
5900
- var _a, _b, _c;
6066
+ var _a, _b, _c, _d;
5901
6067
  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
6068
  const ids = useIdentifiers();
5903
6069
  const theme = useTheme();
@@ -5948,8 +6114,9 @@ const VideoGallery = (props) => {
5948
6114
  const localVideoTileStyles = react.concatStyleSets(shouldFloatLocalVideo ? floatingLocalVideoTileStyle : {}, {
5949
6115
  root: { borderRadius: theme.effects.roundedCorner4 }
5950
6116
  }, styles === null || styles === void 0 ? void 0 : styles.localVideo);
6117
+ const initialsName = !localParticipant.displayName ? strings.displayNamePlaceholder : localParticipant.displayName;
5951
6118
  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 })));
6119
+ 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
6120
  }, [
5954
6121
  isNarrow,
5955
6122
  localParticipant,
@@ -5966,12 +6133,13 @@ const VideoGallery = (props) => {
5966
6133
  strings.localVideoLabel,
5967
6134
  strings.localVideoMovementLabel,
5968
6135
  strings.localVideoSelectedDescription,
6136
+ strings.displayNamePlaceholder,
5969
6137
  styles === null || styles === void 0 ? void 0 : styles.localVideo,
5970
6138
  theme.effects.roundedCorner4
5971
6139
  ]);
5972
6140
  const defaultOnRenderVideoTile = React.useCallback((participant, isVideoParticipant) => {
5973
6141
  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 })));
6142
+ 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
6143
  }, [onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, onRenderAvatar, showMuteIndicator]);
5976
6144
  const videoTiles = onRenderRemoteVideoTile
5977
6145
  ? visibleVideoParticipants.current.map((participant) => onRenderRemoteVideoTile(participant))
@@ -6001,7 +6169,7 @@ const VideoGallery = (props) => {
6001
6169
  gridTiles.push(localVideoTile);
6002
6170
  }
6003
6171
  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 })));
6172
+ 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
6173
  const horizontalGalleryPresent = horizontalGalleryTiles && horizontalGalleryTiles.length > 0;
6006
6174
  const layerHostId = reactHooks.useId('layerhost');
6007
6175
  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) },
@@ -6405,35 +6573,9 @@ const DevicesButton = (props) => {
6405
6573
  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
6574
  };
6407
6575
 
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
6576
  // Copyright (c) Microsoft Corporation.
6435
6577
  // Licensed under the MIT license.
6436
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6578
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6437
6579
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6438
6580
  return new (P || (P = Promise))(function (resolve, reject) {
6439
6581
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6470,7 +6612,7 @@ const CameraButton = (props) => {
6470
6612
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
6471
6613
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
6472
6614
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
6473
- const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6615
+ const onToggleClick = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
6474
6616
  // Throttle click on camera, need to await onToggleCamera then allow another click
6475
6617
  if (onToggleCamera) {
6476
6618
  setWaitForCamera(true);
@@ -6602,7 +6744,7 @@ const lightThemeCallButtonStyles = {
6602
6744
 
6603
6745
  // Copyright (c) Microsoft Corporation.
6604
6746
  // Licensed under the MIT license.
6605
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6747
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6606
6748
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6607
6749
  return new (P || (P = Promise))(function (resolve, reject) {
6608
6750
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6619,23 +6761,31 @@ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments,
6619
6761
  * @public
6620
6762
  */
6621
6763
  const MicrophoneButton = (props) => {
6622
- var _a, _b, _c, _d, _e, _f, _g;
6764
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
6623
6765
  const { onToggleMicrophone } = props;
6624
6766
  const localeStrings = useLocale$1().strings.microphoneButton;
6625
6767
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6626
6768
  const [announcerString, setAnnouncerString] = React.useState(undefined);
6769
+ const isSplit = (_a = props.split) !== null && _a !== void 0 ? _a : props.enableDeviceSelectionMenu;
6770
+ // The button should be disabled when there are no mics. However if the button is a split button, if there are
6771
+ // no mics but there are speakers, then only the primary part of the button should be disabled to allow for
6772
+ // speaker change.
6773
+ const primaryDisabled = props.primaryDisabled || (isSplit && !((_b = props.microphones) === null || _b === void 0 ? void 0 : _b.length) ? true : undefined);
6774
+ const disabled = props.disabled ||
6775
+ (isSplit && !((_c = props.microphones) === null || _c === void 0 ? void 0 : _c.length) && !((_d = props.speakers) === null || _d === void 0 ? void 0 : _d.length)) ||
6776
+ (!isSplit && props.microphones && ((_e = props.microphones) === null || _e === void 0 ? void 0 : _e.length) === 0);
6627
6777
  const onRenderMicOnIcon = () => {
6628
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonMicOn" });
6778
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOn" });
6629
6779
  };
6630
6780
  const onRenderMicOffIcon = () => {
6631
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonMicOff" });
6781
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOff" });
6632
6782
  };
6633
6783
  const isMicOn = props.checked;
6634
6784
  const splitButtonAriaString = isMicOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;
6635
6785
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
6636
6786
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
6637
6787
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
6638
- const onToggleClick = React.useCallback(() => __awaiter$l(void 0, void 0, void 0, function* () {
6788
+ const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
6639
6789
  if (onToggleMicrophone) {
6640
6790
  try {
6641
6791
  yield onToggleMicrophone();
@@ -6649,9 +6799,9 @@ const MicrophoneButton = (props) => {
6649
6799
  }), [isMicOn, onToggleMicrophone, toggleAnnouncerString]);
6650
6800
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
6651
6801
  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 }))));
6802
+ 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
6803
+ ? generateDefaultDeviceMenuProps(Object.assign(Object.assign({}, props), { styles: (_k = props.styles) === null || _k === void 0 ? void 0 : _k.menuStyles }), strings)
6804
+ : 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
6805
  };
6656
6806
 
6657
6807
  // Copyright (c) Microsoft Corporation.
@@ -6668,7 +6818,7 @@ const MicrophoneButton = (props) => {
6668
6818
  */
6669
6819
  const ParticipantsButton = (props) => {
6670
6820
  var _a, _b, _c, _d;
6671
- const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems } = props;
6821
+ const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
6672
6822
  const onRenderPeopleIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonParticipants" }));
6673
6823
  const ids = useIdentifiers();
6674
6824
  const onMuteAllCallback = React.useCallback(() => {
@@ -6678,7 +6828,7 @@ const ParticipantsButton = (props) => {
6678
6828
  }, [onMuteAll]);
6679
6829
  const defaultParticipantList = React.useCallback(() => {
6680
6830
  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) }));
6831
+ 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), showParticipantOverflowTooltip: showParticipantOverflowTooltip }));
6682
6832
  }, [
6683
6833
  excludeMe,
6684
6834
  myUserId,
@@ -6687,7 +6837,8 @@ const ParticipantsButton = (props) => {
6687
6837
  onRenderParticipant,
6688
6838
  participants,
6689
6839
  (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles,
6690
- onFetchParticipantMenuItems
6840
+ onFetchParticipantMenuItems,
6841
+ showParticipantOverflowTooltip
6691
6842
  ]);
6692
6843
  const onCopyCallback = React.useCallback(() => {
6693
6844
  if (callInvitationURL) {
@@ -6986,10 +7137,10 @@ const DrawerContentContainer = (props) => {
6986
7137
  const theme = react.useTheme();
6987
7138
  const backgroundColor = theme.palette.white;
6988
7139
  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);
7140
+ const rootStyles = react.mergeStyles(containerStyles$2(backgroundColor, borderRadius), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root);
6990
7141
  return React__default['default'].createElement(react.Stack, { className: rootStyles }, props.children);
6991
7142
  };
6992
- const containerStyles$1 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
7143
+ const containerStyles$2 = (backgroundColor, borderRadius) => (Object.assign({ background: backgroundColor, borderTopRightRadius: borderRadius, borderTopLeftRadius: borderRadius }, react.AnimationStyles.slideUpIn10));
6993
7144
 
6994
7145
  // Copyright (c) Microsoft Corporation.
6995
7146
  /**
@@ -7318,6 +7469,262 @@ function determineStates(previous, current) {
7318
7469
  }
7319
7470
  }
7320
7471
 
7472
+ // Copyright (c) Microsoft Corporation.
7473
+ // Licensed under the MIT license.
7474
+ /**
7475
+ * @private
7476
+ */
7477
+ const containerStyles$1 = (theme) => {
7478
+ return {
7479
+ maxWidth: '16rem',
7480
+ padding: '1.25rem',
7481
+ margin: '1.5rem',
7482
+ textAlign: 'center',
7483
+ background: `${theme.palette.white}`,
7484
+ borderRadius: '0.75rem'
7485
+ };
7486
+ };
7487
+ /**
7488
+ * @private
7489
+ */
7490
+ const buttonStyles = (theme) => ({
7491
+ root: {
7492
+ background: 'none',
7493
+ border: 'none',
7494
+ borderRadius: 0,
7495
+ width: '100%',
7496
+ padding: '1.875rem',
7497
+ minWidth: 0,
7498
+ minHeight: 0
7499
+ }
7500
+ });
7501
+ /**
7502
+ * @private
7503
+ */
7504
+ const primaryContentStyles = (theme) => {
7505
+ return {
7506
+ fontSize: '1.25rem',
7507
+ fontWeight: 600,
7508
+ color: `${theme.palette.neutralPrimary}`
7509
+ };
7510
+ };
7511
+ /**
7512
+ * @private
7513
+ */
7514
+ const textFieldStyles = (theme) => ({
7515
+ field: {
7516
+ padding: 0,
7517
+ textAlign: 'center',
7518
+ fontSize: '0.875rem'
7519
+ },
7520
+ root: {
7521
+ backgroundColor: `${theme.palette.neutralLighter}`,
7522
+ borderRadius: '0.125rem',
7523
+ marginBottom: '0.625rem'
7524
+ },
7525
+ fieldGroup: {
7526
+ border: 'none',
7527
+ backgroundColor: `${theme.palette.neutralLighter}`
7528
+ },
7529
+ errorMessage: {
7530
+ color: theme.semanticColors.errorText
7531
+ }
7532
+ });
7533
+ /**
7534
+ * @private
7535
+ */
7536
+ const secondaryContentStyles = (theme) => {
7537
+ return {
7538
+ fontSize: '0.625rem',
7539
+ color: `${theme.palette.neutralSecondary}`,
7540
+ fontWeight: 400,
7541
+ margin: '0.125rem',
7542
+ minHeight: '0.75rem'
7543
+ };
7544
+ };
7545
+
7546
+ // Copyright (c) Microsoft Corporation.
7547
+ // Licensed under the MIT license.
7548
+ /**
7549
+ * @private
7550
+ */
7551
+ const formatPhoneNumber = (value) => {
7552
+ // if input value is falsy eg if the user deletes the input, then just return
7553
+ if (!value) {
7554
+ return value;
7555
+ }
7556
+ // clean the input for any non-digit values.
7557
+ let phoneNumber = value.replace(/[^\d*#+]/g, '');
7558
+ // if phone number starts with 1, format like 1 (xxx)xxx-xxxx.
7559
+ // if phone number starts with +, we format like +x (xxx)xxx-xxxx.
7560
+ // For now we are only supporting NA phone number formatting with country code +x
7561
+ // first we chop off the countrycode then we add it on when returning
7562
+ let countryCodeNA = '';
7563
+ if (phoneNumber[0] === '1') {
7564
+ countryCodeNA = '1 ';
7565
+ phoneNumber = phoneNumber.slice(1, phoneNumber.length);
7566
+ }
7567
+ else if (phoneNumber[0] === '+') {
7568
+ countryCodeNA = phoneNumber.slice(0, 2) + ' ';
7569
+ phoneNumber = phoneNumber.slice(2, phoneNumber.length);
7570
+ }
7571
+ // phoneNumberLength is used to know when to apply our formatting for the phone number
7572
+ const phoneNumberLength = phoneNumber.length;
7573
+ // we need to return the value with no formatting if its less then four digits
7574
+ // this is to avoid weird behavior that occurs if you format the area code too early
7575
+ // if phoneNumberLength is greater than 10 we don't do any formatting
7576
+ if (phoneNumberLength < 4 || phoneNumberLength > 10) {
7577
+ // no formatting in this case, remove ' ' behind countrycode
7578
+ return countryCodeNA.replace(' ', '') + phoneNumber;
7579
+ }
7580
+ // if phoneNumberLength is greater than 4 and less the 7 we start to return
7581
+ // the formatted number
7582
+ if (phoneNumberLength < 7) {
7583
+ return `${countryCodeNA}(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;
7584
+ }
7585
+ // finally, if the phoneNumberLength is greater then seven, we add the last
7586
+ // bit of formatting and return it.
7587
+ return `${countryCodeNA}(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, phoneNumber.length)}`;
7588
+ };
7589
+
7590
+ // Copyright (c) Microsoft Corporation.
7591
+ /* @conditional-compile-remove(dialpad) */
7592
+ const DialpadButton = (props) => {
7593
+ var _a, _b, _c, _d;
7594
+ const theme = react.useTheme();
7595
+ return (React__default['default'].createElement(react.DefaultButton, { "data-test-id": `dialpad-button-${props.index}`, onClick: () => {
7596
+ props.onClick(props.primaryContent, props.index);
7597
+ }, styles: react.concatStyleSets(buttonStyles(), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.button) },
7598
+ React__default['default'].createElement(react.Stack, null,
7599
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(primaryContentStyles(theme), (_b = props.styles) === null || _b === void 0 ? void 0 : _b.primaryContent) }, props.primaryContent),
7600
+ 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 : ' '))));
7601
+ };
7602
+ /* @conditional-compile-remove(dialpad) */
7603
+ const dialPadButtonsDefault = [
7604
+ [
7605
+ { primaryContent: '1' },
7606
+ { primaryContent: '2', secondaryContent: 'ABC' },
7607
+ { primaryContent: '3', secondaryContent: 'DEF' }
7608
+ ],
7609
+ [
7610
+ { primaryContent: '4', secondaryContent: 'GHI' },
7611
+ { primaryContent: '5', secondaryContent: 'JKL' },
7612
+ { primaryContent: '6', secondaryContent: 'MNO' }
7613
+ ],
7614
+ [
7615
+ { primaryContent: '7', secondaryContent: 'PQRS' },
7616
+ { primaryContent: '8', secondaryContent: 'TUV' },
7617
+ { primaryContent: '9', secondaryContent: 'WXYZ' }
7618
+ ],
7619
+ [{ primaryContent: '*' }, { primaryContent: '0', secondaryContent: '+' }, { primaryContent: '#' }]
7620
+ ];
7621
+ /* @conditional-compile-remove(dialpad) */
7622
+ const DtmfTones = [
7623
+ 'Num1',
7624
+ 'Num2',
7625
+ 'Num3',
7626
+ 'Num4',
7627
+ 'Num5',
7628
+ 'Num6',
7629
+ 'Num7',
7630
+ 'Num8',
7631
+ 'Num9',
7632
+ 'Star',
7633
+ 'Num0',
7634
+ 'Pound'
7635
+ ];
7636
+ /* @conditional-compile-remove(dialpad) */
7637
+ const DialpadContainer = (props) => {
7638
+ var _a, _b;
7639
+ const theme = react.useTheme();
7640
+ const [textValue, setTextValue] = React.useState('');
7641
+ const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange } = props;
7642
+ const onClickDialpad = (input, index) => {
7643
+ setTextValue(textValue + input);
7644
+ if (onSendDtmfTone) {
7645
+ onSendDtmfTone(DtmfTones[index]);
7646
+ }
7647
+ if (onClickDialpadButton) {
7648
+ onClickDialpadButton(input, index);
7649
+ }
7650
+ if (onChange) {
7651
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(textValue + input) : formatPhoneNumber(textValue + input));
7652
+ }
7653
+ };
7654
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7655
+ const setText = (e) => {
7656
+ setTextValue(e.target.value);
7657
+ };
7658
+ // comment out the following line for now to disable customization for dialpad content
7659
+ // const dialpadButtonsContent = props.dialpadButtons ?? dialPadButtonsDefault;
7660
+ 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" },
7661
+ 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),
7662
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7663
+ onChange: (e) => {
7664
+ setText(e);
7665
+ if (onChange) {
7666
+ onChange(onDisplayDialpadInput ? onDisplayDialpadInput(e.target.value) : formatPhoneNumber(e.target.value));
7667
+ }
7668
+ }, placeholder: props.placeholderText, "data-test-id": "dialpad-input" }),
7669
+ React__default['default'].createElement(react.FocusZone, null, dialPadButtonsDefault.map((rows, rowIndex) => {
7670
+ 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}`,
7671
+ /* row index = 0
7672
+ columnIndex: (0,1,2) => (0,1,2)
7673
+ row index = 1
7674
+ columnIndex: (0,1,2)=> (3,4,5)
7675
+ row index = 2
7676
+ columnIndex: (0,1,2)=> (6,7,8)
7677
+ row index = 3
7678
+ columnIndex: (0,1,2)=> (9,10,11)
7679
+ columnIndex + rowIndex*rows.length calculates the corresponding index for each button
7680
+ dialpad index:
7681
+ 0 1 2
7682
+ 3 4 5
7683
+ 6 7 8
7684
+ 9 10 11
7685
+ then use this index to locate the corresponding dtmf tones
7686
+ DtmfTones[index]
7687
+ */
7688
+ index: columnIndex + rowIndex * rows.length, primaryContent: button.primaryContent, secondaryContent: button.secondaryContent, styles: props.styles, onClick: onClickDialpad })))));
7689
+ }))));
7690
+ };
7691
+ /**
7692
+ * A component to allow users to enter phone number through clicking on dialpad/using keyboard
7693
+ * It will return empty component for stable builds
7694
+ *
7695
+ * @beta
7696
+ */
7697
+ const Dialpad = (props) => {
7698
+ /* @conditional-compile-remove(dialpad) */
7699
+ const localeStrings = useLocale$1().strings.dialpad;
7700
+ /* @conditional-compile-remove(dialpad) */
7701
+ const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
7702
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
7703
+ /* @conditional-compile-remove(dialpad) */
7704
+ React__default['default'].createElement(DialpadContainer, Object.assign({ placeholderText: strings.placeholderText }, props))));
7705
+ };
7706
+
7707
+ // Copyright (c) Microsoft Corporation.
7708
+ /**
7709
+ * a button to hold or resume a ongoing call.
7710
+ *
7711
+ * Can be used with {@link ControlBar}
7712
+ *
7713
+ * @param props - properties for the hold button.
7714
+ * @returns
7715
+ * @beta
7716
+ */
7717
+ const HoldButton = (props) => {
7718
+ const { onToggleHold, strings } = props;
7719
+ const onRenderHoldIcon = () => {
7720
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "HoldCall" });
7721
+ };
7722
+ const onRenderResumeIcon = () => {
7723
+ return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ResumeCall" });
7724
+ };
7725
+ return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { strings: strings, onClick: onToggleHold !== null && onToggleHold !== void 0 ? onToggleHold : props.onClick, onRenderOnIcon: onRenderResumeIcon, onRenderOffIcon: onRenderHoldIcon })));
7726
+ };
7727
+
7321
7728
  // Copyright (c) Microsoft Corporation.
7322
7729
  // Licensed under the MIT license.
7323
7730
  /**
@@ -7385,6 +7792,8 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
7385
7792
  return {
7386
7793
  id: stream.id,
7387
7794
  isAvailable: stream.isAvailable,
7795
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
7796
+ isReceiving: stream.isReceiving,
7388
7797
  isMirrored: (_a = stream.view) === null || _a === void 0 ? void 0 : _a.isMirrored,
7389
7798
  renderElement: (_b = stream.view) === null || _b === void 0 ? void 0 : _b.target
7390
7799
  };
@@ -7412,6 +7821,7 @@ const videoGallerySelector = reselect.createSelector([
7412
7821
  const localVideoStream = localVideoStreams === null || localVideoStreams === void 0 ? void 0 : localVideoStreams.find((i) => i.mediaStreamType === 'Video');
7413
7822
  const dominantSpeakerIds = _dominantSpeakersWithFlatId(dominantSpeakers);
7414
7823
  dominantSpeakerIds === null || dominantSpeakerIds === void 0 ? void 0 : dominantSpeakerIds.forEach((speaker, idx) => (idx));
7824
+ const noRemoteParticipants = [];
7415
7825
  return {
7416
7826
  screenShareParticipant: screenShareRemoteParticipant
7417
7827
  ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.displayName)
@@ -7427,46 +7837,64 @@ const videoGallerySelector = reselect.createSelector([
7427
7837
  renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target
7428
7838
  }
7429
7839
  },
7430
- remoteParticipants: _videoGalleryRemoteParticipantsMemo(remoteParticipants),
7840
+ remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline$2(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)),
7431
7841
  dominantSpeakers: dominantSpeakerIds
7432
7842
  };
7433
7843
  });
7844
+ const updateUserDisplayNamesTrampoline$2 = (remoteParticipants) => {
7845
+ /* @conditional-compile-remove(PSTN-calls) */
7846
+ return _updateUserDisplayNames(remoteParticipants);
7847
+ };
7848
+
7849
+ // Copyright (c) Microsoft Corporation.
7850
+ /**
7851
+ * @private
7852
+ */
7853
+ const memoizedConvertAllremoteParticipants = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking) => {
7854
+ return convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking);
7855
+ });
7856
+ const convertRemoteParticipantToParticipantListParticipant = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking) => {
7857
+ const identifier = fromFlatCommunicationIdentifier(userId);
7858
+ return {
7859
+ userId,
7860
+ displayName,
7861
+ state,
7862
+ isMuted,
7863
+ isScreenSharing,
7864
+ isSpeaking,
7865
+ // ACS users can not remove Teams users.
7866
+ // Removing unknown types of users is undefined.
7867
+ isRemovable: communicationCommon.getIdentifierKind(identifier).kind === 'communicationUser' || communicationCommon.getIdentifierKind(identifier).kind === 'phoneNumber'
7868
+ };
7869
+ };
7434
7870
 
7435
7871
  // Copyright (c) Microsoft Corporation.
7436
7872
  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
- }));
7873
+ return memoizedConvertAllremoteParticipants((memoizeFn) => {
7874
+ return (remoteParticipants
7875
+ // temporarily hiding lobby participants in ACS clients till we can admit users through ACS clients
7876
+ .filter((participant) => {
7877
+ return participant.state !== 'InLobby';
7878
+ })
7879
+ .map((participant) => {
7880
+ const isScreenSharing = Object.values(participant.videoStreams).some((videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable);
7881
+ return memoizeFn(toFlatCommunicationIdentifier(participant.identifier), participant.displayName, participant.state, participant.isMuted, isScreenSharing, participant.isSpeaking);
7882
+ })
7883
+ .sort((a, b) => {
7884
+ var _a, _b;
7885
+ const nameA = ((_a = a.displayName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
7886
+ const nameB = ((_b = b.displayName) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || '';
7887
+ if (nameA < nameB) {
7888
+ return -1;
7889
+ }
7890
+ else if (nameA > nameB) {
7891
+ return 1;
7892
+ }
7893
+ else {
7894
+ return 0;
7895
+ }
7896
+ }));
7897
+ });
7470
7898
  };
7471
7899
  /**
7472
7900
  * Selects data that drives {@link ParticipantList} component.
@@ -7475,7 +7903,7 @@ const convertRemoteParticipantsToParticipantListParticipants = (remoteParticipan
7475
7903
  */
7476
7904
  const participantListSelector = reselect.createSelector([getIdentifier, getDisplayName$2, getRemoteParticipants$1, getIsScreenSharingOn, getIsMuted], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted) => {
7477
7905
  const participants = remoteParticipants
7478
- ? convertRemoteParticipantsToParticipantListParticipants(Object.values(remoteParticipants))
7906
+ ? convertRemoteParticipantsToParticipantListParticipants(updateUserDisplayNamesTrampoline$1(Object.values(remoteParticipants)))
7479
7907
  : [];
7480
7908
  participants.push({
7481
7909
  userId: userId,
@@ -7491,6 +7919,10 @@ const participantListSelector = reselect.createSelector([getIdentifier, getDispl
7491
7919
  myUserId: userId
7492
7920
  };
7493
7921
  });
7922
+ const updateUserDisplayNamesTrampoline$1 = (remoteParticipants) => {
7923
+ /* @conditional-compile-remove(PSTN-calls) */
7924
+ return _updateUserDisplayNames(remoteParticipants);
7925
+ };
7494
7926
 
7495
7927
  // Copyright (c) Microsoft Corporation.
7496
7928
  /**
@@ -7587,7 +8019,7 @@ const useSelector$4 = (selector, selectorProps) => {
7587
8019
  * @public
7588
8020
  */
7589
8021
  const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagnostics, getDeviceManager$1], (latestErrors, diagnostics, deviceManager) => {
7590
- var _a, _b, _c, _d, _e;
8022
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
7591
8023
  // The order in which the errors are returned is significant: The `ErrorBar` shows errors on the UI in that order.
7592
8024
  // There are several options for the ordering:
7593
8025
  // - Sorted by when the errors happened (latest first / oldest first).
@@ -7601,33 +8033,52 @@ const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagno
7601
8033
  ((_b = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.network.latest.networkReceiveQuality) === null || _b === void 0 ? void 0 : _b.value) === communicationCalling.DiagnosticQuality.Poor) {
7602
8034
  activeErrorMessages.push({ type: 'callNetworkQualityLow' });
7603
8035
  }
7604
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) {
8036
+ if (((_c = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noSpeakerDevicesEnumerated) === null || _c === void 0 ? void 0 : _c.value) === true) {
7605
8037
  activeErrorMessages.push({ type: 'callNoSpeakerFound' });
7606
8038
  }
7607
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noMicrophoneDevicesEnumerated) {
8039
+ if (((_d = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.noMicrophoneDevicesEnumerated) === null || _d === void 0 ? void 0 : _d.value) === true) {
7608
8040
  activeErrorMessages.push({ type: 'callNoMicrophoneFound' });
7609
8041
  }
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)) {
8042
+ if (((_e = deviceManager.deviceAccess) === null || _e === void 0 ? void 0 : _e.audio) === false) {
7611
8043
  activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });
7612
8044
  }
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) {
8045
+ if (((_f = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphonePermissionDenied) === null || _f === void 0 ? void 0 : _f.value) === true) {
7617
8046
  activeErrorMessages.push({ type: 'callMacOsMicrophoneAccessDenied' });
7618
8047
  }
7619
- if (((_d = deviceManager.deviceAccess) === null || _d === void 0 ? void 0 : _d.video) === false) {
8048
+ const microphoneMuteUnexpectedlyDiagnostic = (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneMuteUnexpectedly) || (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.microphoneNotFunctioning);
8049
+ if (microphoneMuteUnexpectedlyDiagnostic) {
8050
+ if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
8051
+ // Inform the user that microphone stopped working and inform them to start microphone again
8052
+ activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });
8053
+ }
8054
+ else if (microphoneMuteUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
8055
+ // Inform the user that microphone recovered
8056
+ activeErrorMessages.push({ type: 'callMicrophoneUnmutedBySystem' });
8057
+ }
8058
+ }
8059
+ const cameraStoppedUnexpectedlyDiagnostic = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraStoppedUnexpectedly;
8060
+ if (cameraStoppedUnexpectedlyDiagnostic) {
8061
+ if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Bad) {
8062
+ // Inform the user that camera stopped working and inform them to start video again
8063
+ activeErrorMessages.push({ type: 'callVideoStoppedBySystem' });
8064
+ }
8065
+ else if (cameraStoppedUnexpectedlyDiagnostic.value === communicationCalling.DiagnosticQuality.Good) {
8066
+ // Inform the user that camera recovered
8067
+ activeErrorMessages.push({ type: 'callVideoRecoveredBySystem' });
8068
+ }
8069
+ }
8070
+ if (((_g = deviceManager.deviceAccess) === null || _g === void 0 ? void 0 : _g.video) === false) {
7620
8071
  activeErrorMessages.push({ type: 'callCameraAccessDenied' });
7621
8072
  }
7622
8073
  else {
7623
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraFreeze) {
8074
+ if (((_h = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraFreeze) === null || _h === void 0 ? void 0 : _h.value) === true) {
7624
8075
  activeErrorMessages.push({ type: 'callCameraAlreadyInUse' });
7625
8076
  }
7626
8077
  }
7627
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraPermissionDenied) {
8078
+ if (((_j = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.cameraPermissionDenied) === null || _j === void 0 ? void 0 : _j.value) === true) {
7628
8079
  activeErrorMessages.push({ type: 'callMacOsCameraAccessDenied' });
7629
8080
  }
7630
- if (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) {
8081
+ if (((_k = diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.media.latest.screenshareRecordingDisabled) === null || _k === void 0 ? void 0 : _k.value) === true) {
7631
8082
  activeErrorMessages.push({ type: 'callMacOsScreenShareAccessDenied' });
7632
8083
  }
7633
8084
  // Prefer to show errors with privacy implications.
@@ -7636,7 +8087,7 @@ const errorBarSelector$1 = reselect.createSelector([getLatestErrors$1, getDiagno
7636
8087
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopScreenSharing', 'stopScreenShareGeneric');
7637
8088
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'startVideoGeneric');
7638
8089
  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') {
8090
+ if (((_l = latestErrors['CallAgent.join']) === null || _l === void 0 ? void 0 : _l.message) === 'CallAgent.join: Invalid meeting link') {
7640
8091
  appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallInvalidMeetingLink');
7641
8092
  }
7642
8093
  else {
@@ -7669,9 +8120,18 @@ const emptySelector = () => ({});
7669
8120
  */
7670
8121
  // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
7671
8122
  const getSelector$1 = (component) => {
8123
+ /* @conditional-compile-remove(PSTN-calls) */
8124
+ if (component === HoldButton) {
8125
+ return findConditionalCompiledSelector(component);
8126
+ }
7672
8127
  return findSelector$1(component);
7673
8128
  };
7674
8129
  const findSelector$1 = (component) => {
8130
+ /* @conditional-compile-remove(dialpad) */
8131
+ // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector
8132
+ if (component === Dialpad) {
8133
+ return emptySelector;
8134
+ }
7675
8135
  switch (component) {
7676
8136
  case VideoGallery:
7677
8137
  return videoGallerySelector;
@@ -7694,10 +8154,17 @@ const findSelector$1 = (component) => {
7694
8154
  }
7695
8155
  return undefined;
7696
8156
  };
8157
+ /* @conditional-compile-remove(PSTN-calls) */
8158
+ const findConditionalCompiledSelector = (component) => {
8159
+ switch (component) {
8160
+ case HoldButton:
8161
+ return holdButtonSelector;
8162
+ }
8163
+ };
7697
8164
 
7698
8165
  // Copyright (c) Microsoft Corporation.
7699
8166
  // Licensed under the MIT license.
7700
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8167
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7701
8168
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7702
8169
  return new (P || (P = Promise))(function (resolve, reject) {
7703
8170
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7720,35 +8187,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
7720
8187
  let messageIterator = undefined;
7721
8188
  let readReceiptIterator = undefined;
7722
8189
  return {
7723
- onSendMessage: (content, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8190
+ onSendMessage: (content, options) => __awaiter$l(void 0, void 0, void 0, function* () {
7724
8191
  const sendMessageRequest = {
7725
8192
  content,
7726
8193
  senderDisplayName: chatClient.getState().displayName
7727
8194
  };
7728
8195
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
7729
8196
  }),
7730
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$k(void 0, void 0, void 0, function* () {
8197
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$l(void 0, void 0, void 0, function* () {
7731
8198
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
7732
8199
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
7733
8200
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
7734
8201
  }),
7735
- onDeleteMessage: (messageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8202
+ onDeleteMessage: (messageId) => __awaiter$l(void 0, void 0, void 0, function* () {
7736
8203
  yield chatThreadClient.deleteMessage(messageId);
7737
8204
  }),
7738
8205
  // This handler is designed for chatThread to consume
7739
- onMessageSeen: (chatMessageId) => __awaiter$k(void 0, void 0, void 0, function* () {
8206
+ onMessageSeen: (chatMessageId) => __awaiter$l(void 0, void 0, void 0, function* () {
7740
8207
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
7741
8208
  }),
7742
- onTyping: () => __awaiter$k(void 0, void 0, void 0, function* () {
8209
+ onTyping: () => __awaiter$l(void 0, void 0, void 0, function* () {
7743
8210
  yield chatThreadClient.sendTypingNotification();
7744
8211
  }),
7745
- onRemoveParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
8212
+ onRemoveParticipant: (userId) => __awaiter$l(void 0, void 0, void 0, function* () {
7746
8213
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
7747
8214
  }),
7748
- updateThreadTopicName: (topicName) => __awaiter$k(void 0, void 0, void 0, function* () {
8215
+ updateThreadTopicName: (topicName) => __awaiter$l(void 0, void 0, void 0, function* () {
7749
8216
  yield chatThreadClient.updateTopic(topicName);
7750
8217
  }),
7751
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$k(void 0, void 0, void 0, function* () {
8218
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$l(void 0, void 0, void 0, function* () {
7752
8219
  var _a, _b, _c;
7753
8220
  if (messageIterator === undefined) {
7754
8221
  // Lazy definition so that errors in the method call are reported correctly.
@@ -8439,7 +8906,7 @@ const findSelector = (component) => {
8439
8906
 
8440
8907
  // Copyright (c) Microsoft Corporation.
8441
8908
  // Licensed under the MIT license.
8442
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8909
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8443
8910
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8444
8911
  return new (P || (P = Promise))(function (resolve, reject) {
8445
8912
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8488,10 +8955,10 @@ class ProxyDeviceManager {
8488
8955
  this.selectCamera = (videoDeviceInfo) => {
8489
8956
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
8490
8957
  };
8491
- this.videoDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8958
+ this.videoDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8492
8959
  this._context.setDeviceManagerCameras(dedupeById(yield this._deviceManager.getCameras()));
8493
8960
  });
8494
- this.audioDevicesUpdated = () => __awaiter$j(this, void 0, void 0, function* () {
8961
+ this.audioDevicesUpdated = () => __awaiter$k(this, void 0, void 0, function* () {
8495
8962
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
8496
8963
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
8497
8964
  });
@@ -8617,6 +9084,36 @@ class CallError extends Error {
8617
9084
  * @private
8618
9085
  */
8619
9086
  const callingStatefulLogger = logger.createClientLogger('communication-react:calling-stateful');
9087
+ /**
9088
+ * @private
9089
+ */
9090
+ var EventNames;
9091
+ (function (EventNames) {
9092
+ // Info
9093
+ EventNames["LOCAL_VIEW_RENDER_SUCCEED"] = "LOCAL_VIEW_RENDER_SUCCEED";
9094
+ EventNames["START_DISPOSE_LOCAL_STREAM"] = "START_DISPOSE_LOCAL_STREAM";
9095
+ EventNames["START_LOCAL_STREAM_RENDERING"] = "START_LOCAL_STREAM_RENDERING";
9096
+ EventNames["DISPOSING_REMOTE_RENDERER"] = "DISPOSING_REMOTE_RENDERER";
9097
+ EventNames["CREATING_REMOTE_VIEW"] = "CREATING_REMOTE_VIEW";
9098
+ EventNames["REMOTE_VIEW_RENDER_SUCCEED"] = "REMOTE_VIEW_RENDER_SUCCEED";
9099
+ // Warning
9100
+ EventNames["LOCAL_STREAM_ALREADY_RENDERED"] = "LOCAL_STREAM_ALREADY_RENDERED";
9101
+ EventNames["LOCAL_STREAM_STOPPING"] = "LOCAL_STREAM_STOPPING";
9102
+ EventNames["LOCAL_CREATED_STREAM_STOPPING"] = "LOCAL_CREATED_STREAM_STOPPING";
9103
+ EventNames["LOCAL_STREAM_RENDERING"] = "LOCAL_STREAM_RENDERING";
9104
+ EventNames["REMOTE_STREAM_ALREADY_RENDERED"] = "REMOTE_STREAM_ALREADY_RENDERED";
9105
+ EventNames["REMOTE_STREAM_RENDERING"] = "REMOTE_STREAM_RENDERING";
9106
+ EventNames["REMOTE_STREAM_STOPPING"] = "REMOTE_STREAM_STOPPING";
9107
+ // Error
9108
+ EventNames["LOCAL_STREAM_NOT_FOUND"] = "LOCAL_STREAM_NOT_FOUND";
9109
+ EventNames["LOCAL_RENDER_INFO_NOT_FOUND"] = "LOCAL_RENDER_INFO_NOT_FOUND";
9110
+ EventNames["REMOTE_STREAM_NOT_FOUND"] = "REMOTE_STREAM_NOT_FOUND";
9111
+ EventNames["REMOTE_DISPOSE_INFO_NOT_FOUND"] = "REMOTE_DISPOSE_INFO_NOT_FOUND";
9112
+ EventNames["REMOTE_RENDER_INFO_NOT_FOUND"] = "REMOTE_RENDER_INFO_NOT_FOUND";
9113
+ EventNames["REMOTE_RENDERER_NOT_FOUND"] = "REMOTE_RENDERER_NOT_FOUND";
9114
+ EventNames["CREATE_REMOTE_STREAM_FAIL"] = "CREATE_REMOTE_STREAM_FAIL";
9115
+ EventNames["CREATE_LOCAL_STREAM_FAIL"] = "CREATE_LOCAL_STREAM_FAIL";
9116
+ })(EventNames || (EventNames = {}));
8620
9117
 
8621
9118
  // Copyright (c) Microsoft Corporation.
8622
9119
  // Licensed under the MIT license.
@@ -8658,7 +9155,7 @@ class CallIdHistory {
8658
9155
 
8659
9156
  // Copyright (c) Microsoft Corporation.
8660
9157
  // Licensed under the MIT license.
8661
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9158
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8662
9159
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8663
9160
  return new (P || (P = Promise))(function (resolve, reject) {
8664
9161
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8949,6 +9446,8 @@ class CallContext$1 {
8949
9446
  const existingStream = participant.videoStreams[stream.id];
8950
9447
  if (existingStream) {
8951
9448
  existingStream.isAvailable = stream.isAvailable;
9449
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9450
+ existingStream.isReceiving = stream.isReceiving;
8952
9451
  existingStream.mediaStreamType = stream.mediaStreamType;
8953
9452
  }
8954
9453
  else {
@@ -8972,6 +9471,21 @@ class CallContext$1 {
8972
9471
  }
8973
9472
  });
8974
9473
  }
9474
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9475
+ setRemoteVideoStreamIsReceiving(callId, participantKey, streamId, isReceiving) {
9476
+ this.modifyState((draft) => {
9477
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
9478
+ if (call) {
9479
+ const participant = call.remoteParticipants[participantKey];
9480
+ if (participant) {
9481
+ const stream = participant.videoStreams[streamId];
9482
+ if (stream) {
9483
+ stream.isReceiving = isReceiving;
9484
+ }
9485
+ }
9486
+ }
9487
+ });
9488
+ }
8975
9489
  setRemoteVideoStreams(callId, participantKey, addRemoteVideoStream, removeRemoteVideoStream) {
8976
9490
  this.modifyState((draft) => {
8977
9491
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
@@ -8988,6 +9502,8 @@ class CallContext$1 {
8988
9502
  if (stream) {
8989
9503
  stream.mediaStreamType = newStream.mediaStreamType;
8990
9504
  stream.isAvailable = newStream.isAvailable;
9505
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9506
+ stream.isReceiving = newStream.isReceiving;
8991
9507
  }
8992
9508
  else {
8993
9509
  participant.videoStreams[newStream.id] = newStream;
@@ -9122,7 +9638,7 @@ class CallContext$1 {
9122
9638
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
9123
9639
  */
9124
9640
  withAsyncErrorTeedToState(action, target) {
9125
- return (...args) => __awaiter$i(this, void 0, void 0, function* () {
9641
+ return (...args) => __awaiter$j(this, void 0, void 0, function* () {
9126
9642
  try {
9127
9643
  return yield action(...args);
9128
9644
  }
@@ -9186,7 +9702,7 @@ const findOldestCallEnded = (calls) => {
9186
9702
 
9187
9703
  // Copyright (c) Microsoft Corporation.
9188
9704
  // Licensed under the MIT license.
9189
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9705
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9190
9706
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9191
9707
  return new (P || (P = Promise))(function (resolve, reject) {
9192
9708
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9206,63 +9722,63 @@ class ProxyCall {
9206
9722
  switch (prop) {
9207
9723
  case 'mute': {
9208
9724
  return this._context.withAsyncErrorTeedToState(function (...args) {
9209
- return __awaiter$h(this, void 0, void 0, function* () {
9725
+ return __awaiter$i(this, void 0, void 0, function* () {
9210
9726
  return yield target.mute(...args);
9211
9727
  });
9212
9728
  }, 'Call.mute');
9213
9729
  }
9214
9730
  case 'unmute': {
9215
9731
  return this._context.withAsyncErrorTeedToState(function (...args) {
9216
- return __awaiter$h(this, void 0, void 0, function* () {
9732
+ return __awaiter$i(this, void 0, void 0, function* () {
9217
9733
  return yield target.unmute(...args);
9218
9734
  });
9219
9735
  }, 'Call.unmute');
9220
9736
  }
9221
9737
  case 'startVideo': {
9222
9738
  return this._context.withAsyncErrorTeedToState(function (...args) {
9223
- return __awaiter$h(this, void 0, void 0, function* () {
9739
+ return __awaiter$i(this, void 0, void 0, function* () {
9224
9740
  return yield target.startVideo(...args);
9225
9741
  });
9226
9742
  }, 'Call.startVideo');
9227
9743
  }
9228
9744
  case 'stopVideo': {
9229
9745
  return this._context.withAsyncErrorTeedToState(function (...args) {
9230
- return __awaiter$h(this, void 0, void 0, function* () {
9746
+ return __awaiter$i(this, void 0, void 0, function* () {
9231
9747
  return yield target.stopVideo(...args);
9232
9748
  });
9233
9749
  }, 'Call.stopVideo');
9234
9750
  }
9235
9751
  case 'startScreenSharing': {
9236
9752
  return this._context.withAsyncErrorTeedToState(function (...args) {
9237
- return __awaiter$h(this, void 0, void 0, function* () {
9753
+ return __awaiter$i(this, void 0, void 0, function* () {
9238
9754
  return yield target.startScreenSharing(...args);
9239
9755
  });
9240
9756
  }, 'Call.startScreenSharing');
9241
9757
  }
9242
9758
  case 'stopScreenSharing': {
9243
9759
  return this._context.withAsyncErrorTeedToState(function (...args) {
9244
- return __awaiter$h(this, void 0, void 0, function* () {
9760
+ return __awaiter$i(this, void 0, void 0, function* () {
9245
9761
  return yield target.stopScreenSharing(...args);
9246
9762
  });
9247
9763
  }, 'Call.stopScreenSharing');
9248
9764
  }
9249
9765
  case 'hold': {
9250
9766
  return this._context.withAsyncErrorTeedToState(function (...args) {
9251
- return __awaiter$h(this, void 0, void 0, function* () {
9767
+ return __awaiter$i(this, void 0, void 0, function* () {
9252
9768
  return yield target.hold(...args);
9253
9769
  });
9254
9770
  }, 'Call.hold');
9255
9771
  }
9256
9772
  case 'resume': {
9257
9773
  return this._context.withAsyncErrorTeedToState(function (...args) {
9258
- return __awaiter$h(this, void 0, void 0, function* () {
9774
+ return __awaiter$i(this, void 0, void 0, function* () {
9259
9775
  return yield target.resume(...args);
9260
9776
  });
9261
9777
  }, 'Call.resume');
9262
9778
  }
9263
9779
  case 'addParticipant': {
9264
9780
  return this._context.withAsyncErrorTeedToState(function (...args) {
9265
- return __awaiter$h(this, void 0, void 0, function* () {
9781
+ return __awaiter$i(this, void 0, void 0, function* () {
9266
9782
  return yield target.addParticipant(...args);
9267
9783
  });
9268
9784
  }, 'Call.addParticipant');
@@ -9309,6 +9825,8 @@ function convertSdkRemoteStreamToDeclarativeRemoteStream(stream) {
9309
9825
  id: stream.id,
9310
9826
  mediaStreamType: stream.mediaStreamType,
9311
9827
  isAvailable: stream.isAvailable,
9828
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9829
+ isReceiving: stream.isReceiving,
9312
9830
  view: undefined
9313
9831
  };
9314
9832
  }
@@ -9398,10 +9916,14 @@ class RemoteVideoStreamSubscriber {
9398
9916
  constructor(callIdRef, participantKey, remoteVideoStream, context) {
9399
9917
  this.subscribe = () => {
9400
9918
  this._remoteVideoStream.on('isAvailableChanged', this.isAvailableChanged);
9919
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9920
+ this._remoteVideoStream.on('isReceivingChanged', this.isReceivingChanged);
9401
9921
  this.checkAndUpdateScreenShareState();
9402
9922
  };
9403
9923
  this.unsubscribe = () => {
9404
9924
  this._remoteVideoStream.off('isAvailableChanged', this.isAvailableChanged);
9925
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9926
+ this._remoteVideoStream.off('isReceivingChanged', this.isReceivingChanged);
9405
9927
  };
9406
9928
  this.includesActiveScreenShareStream = (streams) => {
9407
9929
  for (const stream of Object.values(streams)) {
@@ -9450,6 +9972,10 @@ class RemoteVideoStreamSubscriber {
9450
9972
  this._context.setRemoteVideoStreamIsAvailable(this._callIdRef.callId, this._participantKey, this._remoteVideoStream.id, this._remoteVideoStream.isAvailable);
9451
9973
  this.checkAndUpdateScreenShareState();
9452
9974
  };
9975
+ /* @conditional-compile-remove(video-stream-is-receiving-flag) */
9976
+ this.isReceivingChanged = () => {
9977
+ this._context.setRemoteVideoStreamIsReceiving(this._callIdRef.callId, this._participantKey, this._remoteVideoStream.id, this._remoteVideoStream.isReceiving);
9978
+ };
9453
9979
  this._callIdRef = callIdRef;
9454
9980
  this._participantKey = participantKey;
9455
9981
  this._remoteVideoStream = remoteVideoStream;
@@ -9460,7 +9986,7 @@ class RemoteVideoStreamSubscriber {
9460
9986
 
9461
9987
  // Copyright (c) Microsoft Corporation.
9462
9988
  // Licensed under the MIT license.
9463
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9989
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9464
9990
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9465
9991
  return new (P || (P = Promise))(function (resolve, reject) {
9466
9992
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9470,7 +9996,7 @@ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments,
9470
9996
  });
9471
9997
  };
9472
9998
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
9473
- return __awaiter$g(this, void 0, void 0, function* () {
9999
+ return __awaiter$h(this, void 0, void 0, function* () {
9474
10000
  // Render RemoteVideoStream that is part of a Call
9475
10001
  const streamId = stream.id;
9476
10002
  let participantKey;
@@ -9480,23 +10006,43 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9480
10006
  else {
9481
10007
  participantKey = toFlatCommunicationIdentifier(participantId);
9482
10008
  }
9483
- const streamLogInfo = `callId: ${callId}, participantKey: ${participantKey}, streamId: ${streamId}`;
9484
- callingStatefulLogger.info(`Start creating view for remote video. ${streamLogInfo}`);
10009
+ const streamLogInfo = { callId, participantKey, streamId };
10010
+ _logEvent(callingStatefulLogger, {
10011
+ name: EventNames.CREATING_REMOTE_VIEW,
10012
+ level: 'info',
10013
+ message: 'Start creating view for remote video.',
10014
+ data: streamLogInfo
10015
+ });
9485
10016
  const renderInfo = internalContext.getRemoteRenderInfoForParticipant(callId, participantKey, streamId);
9486
10017
  if (!renderInfo) {
9487
- callingStatefulLogger.error(`LocalVideoStream not found in state. ${streamLogInfo}`);
10018
+ _logEvent(callingStatefulLogger, {
10019
+ name: EventNames.REMOTE_STREAM_NOT_FOUND,
10020
+ level: 'error',
10021
+ message: 'RemoteVideoStream not found in state.',
10022
+ data: streamLogInfo
10023
+ });
9488
10024
  console.warn('RemoteVideoStream not found in state');
9489
10025
  return;
9490
10026
  }
9491
10027
  if (renderInfo.status === 'Rendered') {
9492
- callingStatefulLogger.warning(`RemoteVideoStream is already rendered. ${streamLogInfo}`);
10028
+ _logEvent(callingStatefulLogger, {
10029
+ name: EventNames.REMOTE_STREAM_ALREADY_RENDERED,
10030
+ level: 'warning',
10031
+ message: 'RemoteVideoStream is already rendered.',
10032
+ data: streamLogInfo
10033
+ });
9493
10034
  console.warn('RemoteVideoStream is already rendered');
9494
10035
  return;
9495
10036
  }
9496
10037
  if (renderInfo.status === 'Rendering') {
9497
10038
  // Do not log to console here as this is a very common situation due to UI rerenders while
9498
10039
  // the video rendering is in progress.
9499
- callingStatefulLogger.warning(`RemoteVideoStream is rendering. ${streamLogInfo}`);
10040
+ _logEvent(callingStatefulLogger, {
10041
+ name: EventNames.REMOTE_STREAM_RENDERING,
10042
+ level: 'warning',
10043
+ message: 'RemoteVideoStream is rendering.',
10044
+ data: streamLogInfo
10045
+ });
9500
10046
  return;
9501
10047
  }
9502
10048
  if (renderInfo.status === 'Stopping') {
@@ -9510,7 +10056,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9510
10056
  view = yield renderer.createView(options);
9511
10057
  }
9512
10058
  catch (e) {
9513
- callingStatefulLogger.error(`Failed to create view. Error: ${e}. ${streamLogInfo}`);
10059
+ _logEvent(callingStatefulLogger, {
10060
+ name: EventNames.CREATE_REMOTE_STREAM_FAIL,
10061
+ level: 'error',
10062
+ message: 'Failed to create remote view',
10063
+ data: streamLogInfo
10064
+ });
9514
10065
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'NotRendered', undefined);
9515
10066
  throw e;
9516
10067
  }
@@ -9518,7 +10069,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9518
10069
  if (!refreshedRenderInfo) {
9519
10070
  // RenderInfo was removed. This should not happen unless stream was removed from the call so dispose the renderer
9520
10071
  // and clean up state.
9521
- callingStatefulLogger.error(`Cannot find remote render info after create the view. ${streamLogInfo}`);
10072
+ _logEvent(callingStatefulLogger, {
10073
+ name: EventNames.REMOTE_RENDER_INFO_NOT_FOUND,
10074
+ level: 'error',
10075
+ message: '`Cannot find remote render info after create the view.',
10076
+ data: streamLogInfo
10077
+ });
9522
10078
  renderer.dispose();
9523
10079
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9524
10080
  return;
@@ -9529,7 +10085,12 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9529
10085
  renderer.dispose();
9530
10086
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, refreshedRenderInfo.stream, 'NotRendered', undefined);
9531
10087
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9532
- callingStatefulLogger.info(`Successfully render the remote view. ${streamLogInfo}`);
10088
+ _logEvent(callingStatefulLogger, {
10089
+ name: EventNames.REMOTE_VIEW_RENDER_SUCCEED,
10090
+ level: 'info',
10091
+ message: 'Successfully render the remote view.',
10092
+ data: streamLogInfo
10093
+ });
9533
10094
  return;
9534
10095
  }
9535
10096
  // Else the stream still exists and status is not telling us to stop rendering. Complete the render process by
@@ -9543,28 +10104,48 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
9543
10104
  });
9544
10105
  }
9545
10106
  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');
10107
+ return __awaiter$h(this, void 0, void 0, function* () {
10108
+ _logEvent(callingStatefulLogger, {
10109
+ name: EventNames.START_LOCAL_STREAM_RENDERING,
10110
+ level: 'info',
10111
+ message: 'Start creating view for local video.'
10112
+ });
9548
10113
  // Render LocalVideoStream that is part of a Call
9549
10114
  const renderInfo = internalContext.getLocalRenderInfo(callId);
9550
10115
  if (!renderInfo) {
9551
- callingStatefulLogger.error('LocalVideoStream not found in state');
10116
+ _logEvent(callingStatefulLogger, {
10117
+ name: EventNames.LOCAL_STREAM_NOT_FOUND,
10118
+ level: 'error',
10119
+ message: 'LocalVideoStream not found in state.'
10120
+ });
9552
10121
  console.warn('LocalVideoStream not found in state');
9553
10122
  return;
9554
10123
  }
9555
10124
  if (renderInfo.status === 'Rendered') {
9556
- callingStatefulLogger.warning('LocalVideoStream is already rendered');
10125
+ _logEvent(callingStatefulLogger, {
10126
+ name: EventNames.LOCAL_STREAM_ALREADY_RENDERED,
10127
+ level: 'warning',
10128
+ message: 'LocalVideoStream is already rendered.'
10129
+ });
9557
10130
  console.warn('LocalVideoStream is already rendered');
9558
10131
  return;
9559
10132
  }
9560
10133
  if (renderInfo.status === 'Rendering') {
9561
10134
  // Do not log to console here as this is a very common situation due to UI rerenders while
9562
10135
  // the video rendering is in progress.
9563
- callingStatefulLogger.warning('LocalVideoStream is rendering.');
10136
+ _logEvent(callingStatefulLogger, {
10137
+ name: EventNames.LOCAL_STREAM_RENDERING,
10138
+ level: 'warning',
10139
+ message: 'LocalVideoStream is rendering.'
10140
+ });
9564
10141
  return;
9565
10142
  }
9566
10143
  if (renderInfo.status === 'Stopping') {
9567
- callingStatefulLogger.warning('LocalVideoStream is in the middle of stopping.');
10144
+ _logEvent(callingStatefulLogger, {
10145
+ name: EventNames.LOCAL_STREAM_STOPPING,
10146
+ level: 'warning',
10147
+ message: 'LocalVideoStream is in the middle of stopping.'
10148
+ });
9568
10149
  console.warn('LocalVideoStream is in the middle of stopping');
9569
10150
  return;
9570
10151
  }
@@ -9575,7 +10156,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9575
10156
  view = yield renderer.createView(options);
9576
10157
  }
9577
10158
  catch (e) {
9578
- callingStatefulLogger.error(`Failed to create view. Error: ${e}`);
10159
+ _logEvent(callingStatefulLogger, {
10160
+ name: EventNames.CREATE_LOCAL_STREAM_FAIL,
10161
+ level: 'error',
10162
+ message: 'Failed to create view.',
10163
+ data: {
10164
+ error: e
10165
+ }
10166
+ });
9579
10167
  internalContext.setLocalRenderInfo(callId, renderInfo.stream, 'NotRendered', undefined);
9580
10168
  throw e;
9581
10169
  }
@@ -9585,7 +10173,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9585
10173
  if (!refreshedRenderInfo) {
9586
10174
  // RenderInfo was removed. This should not happen unless stream was removed from the call so dispose the renderer
9587
10175
  // and clean up the state.
9588
- callingStatefulLogger.error(`Cannot find local render info for the callId: ${callId}, after create the view. `);
10176
+ _logEvent(callingStatefulLogger, {
10177
+ name: EventNames.LOCAL_RENDER_INFO_NOT_FOUND,
10178
+ level: 'error',
10179
+ message: 'Cannot find local render info after create the view. ',
10180
+ data: {
10181
+ callId
10182
+ }
10183
+ });
9589
10184
  renderer.dispose();
9590
10185
  context.setLocalVideoStreamRendererView(callId, undefined);
9591
10186
  return;
@@ -9593,7 +10188,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9593
10188
  if (refreshedRenderInfo.status === 'Stopping') {
9594
10189
  // Stop render was called on this stream after we had started rendering. We will dispose this view and do not
9595
10190
  // put the view into the state.
9596
- callingStatefulLogger.warning(`Render info status is stopping, dispose renderer, callId: ${callId}}`);
10191
+ _logEvent(callingStatefulLogger, {
10192
+ name: EventNames.LOCAL_CREATED_STREAM_STOPPING,
10193
+ level: 'warning',
10194
+ message: 'Render info status is stopping, dispose renderer. ',
10195
+ data: {
10196
+ callId
10197
+ }
10198
+ });
9597
10199
  renderer.dispose();
9598
10200
  internalContext.setLocalRenderInfo(callId, refreshedRenderInfo.stream, 'NotRendered', undefined);
9599
10201
  context.setLocalVideoStreamRendererView(callId, undefined);
@@ -9603,7 +10205,14 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9603
10205
  // updating the state.
9604
10206
  internalContext.setLocalRenderInfo(callId, refreshedRenderInfo.stream, 'Rendered', renderer);
9605
10207
  context.setLocalVideoStreamRendererView(callId, convertFromSDKToDeclarativeVideoStreamRendererView(view));
9606
- callingStatefulLogger.info(`Successfully render the local view. callId: ${callId}`);
10208
+ _logEvent(callingStatefulLogger, {
10209
+ name: EventNames.LOCAL_VIEW_RENDER_SUCCEED,
10210
+ level: 'info',
10211
+ message: `Successfully render the local view.`,
10212
+ data: {
10213
+ callId
10214
+ }
10215
+ });
9607
10216
  return {
9608
10217
  renderer,
9609
10218
  view
@@ -9611,7 +10220,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
9611
10220
  });
9612
10221
  }
9613
10222
  function createViewUnparentedVideo(context, internalContext, stream, options) {
9614
- return __awaiter$g(this, void 0, void 0, function* () {
10223
+ return __awaiter$h(this, void 0, void 0, function* () {
9615
10224
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
9616
10225
  if (renderInfo && renderInfo.status === 'Rendered') {
9617
10226
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -9678,30 +10287,55 @@ function disposeViewRemoteVideo(context, internalContext, callId, participantId,
9678
10287
  else {
9679
10288
  participantKey = toFlatCommunicationIdentifier(participantId);
9680
10289
  }
9681
- const streamLogInfo = `callId: ${callId}, participantKey: ${participantKey}, streamId: ${streamId}`;
9682
- callingStatefulLogger.info(`Start disposing remote stream. ${streamLogInfo}`);
10290
+ const streamLogInfo = { callId, participantKey, streamId };
10291
+ _logEvent(callingStatefulLogger, {
10292
+ name: EventNames.START_DISPOSE_LOCAL_STREAM,
10293
+ level: 'info',
10294
+ message: 'Start disposing remote stream.',
10295
+ data: streamLogInfo
10296
+ });
9683
10297
  context.setRemoteVideoStreamRendererView(callId, participantKey, streamId, undefined);
9684
10298
  const renderInfo = internalContext.getRemoteRenderInfoForParticipant(callId, participantKey, streamId);
9685
10299
  if (!renderInfo) {
9686
- callingStatefulLogger.error(`Cannot find render info when disposing remote stream, ${streamLogInfo}`);
10300
+ _logEvent(callingStatefulLogger, {
10301
+ name: EventNames.REMOTE_DISPOSE_INFO_NOT_FOUND,
10302
+ level: 'error',
10303
+ message: 'Cannot find render info when disposing remote stream.',
10304
+ data: streamLogInfo
10305
+ });
9687
10306
  return;
9688
10307
  }
9689
10308
  // Sets the status and also renderer. I think we need to always set renderer to undefined since in all status when
9690
10309
  // cleaned up should have renderer as undefined. If the status is 'Rendered' and renderer is not defined it should
9691
10310
  // be cleaned up below so we can set it to undefined here.
9692
10311
  if (renderInfo.status === 'Rendering') {
9693
- callingStatefulLogger.warning(`Remote stream is still rendering. Changing status to stopping. ${streamLogInfo}`);
10312
+ _logEvent(callingStatefulLogger, {
10313
+ name: EventNames.REMOTE_STREAM_STOPPING,
10314
+ level: 'warning',
10315
+ message: 'Remote stream is still rendering. Changing status to stopping.',
10316
+ data: streamLogInfo
10317
+ });
9694
10318
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'Stopping', undefined);
9695
10319
  }
9696
10320
  else {
9697
10321
  internalContext.setRemoteRenderInfo(callId, participantKey, streamId, renderInfo.stream, 'NotRendered', undefined);
9698
10322
  }
9699
10323
  if (renderInfo.renderer) {
9700
- callingStatefulLogger.info(`Disposing remote view renderer. ${streamLogInfo}`);
10324
+ _logEvent(callingStatefulLogger, {
10325
+ name: EventNames.DISPOSING_REMOTE_RENDERER,
10326
+ level: 'info',
10327
+ message: 'Disposing remote view renderer.',
10328
+ data: streamLogInfo
10329
+ });
9701
10330
  renderInfo.renderer.dispose();
9702
10331
  }
9703
10332
  else {
9704
- callingStatefulLogger.warning(`Cannot find remote view renderer. ${streamLogInfo}`);
10333
+ _logEvent(callingStatefulLogger, {
10334
+ name: EventNames.REMOTE_RENDERER_NOT_FOUND,
10335
+ level: 'warning',
10336
+ message: 'Cannot find remote view renderer.',
10337
+ data: streamLogInfo
10338
+ });
9705
10339
  }
9706
10340
  }
9707
10341
  function disposeViewLocalVideo(context, internalContext, callId) {
@@ -10144,6 +10778,55 @@ class CallSubscriber {
10144
10778
  }
10145
10779
  }
10146
10780
 
10781
+ // Copyright (c) Microsoft Corporation.
10782
+ // Licensed under the MIT license.
10783
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10784
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10785
+ return new (P || (P = Promise))(function (resolve, reject) {
10786
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10787
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10788
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10789
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10790
+ });
10791
+ };
10792
+ /**
10793
+ * @private
10794
+ */
10795
+ class ProxyIncomingCall {
10796
+ constructor(context) {
10797
+ this._context = context;
10798
+ }
10799
+ get(target, prop) {
10800
+ switch (prop) {
10801
+ case 'accept': {
10802
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10803
+ return __awaiter$g(this, void 0, void 0, function* () {
10804
+ return yield target.accept(...args);
10805
+ });
10806
+ }, 'IncomingCall.accept');
10807
+ }
10808
+ case 'reject': {
10809
+ return this._context.withAsyncErrorTeedToState(function (...args) {
10810
+ return __awaiter$g(this, void 0, void 0, function* () {
10811
+ return yield target.reject(...args);
10812
+ });
10813
+ }, 'IncomingCall.reject');
10814
+ }
10815
+ default:
10816
+ return Reflect.get(target, prop);
10817
+ }
10818
+ }
10819
+ }
10820
+ /**
10821
+ * Creates a declarative Incoming Call by proxying IncomingCall using ProxyIncomingCall.
10822
+ * @param incomingCall - IncomingCall from SDK
10823
+ * @returns proxied IncomingCall
10824
+ */
10825
+ const incomingCallDeclaratify = (incomingCall, context) => {
10826
+ const proxyIncomingCall = new ProxyIncomingCall(context);
10827
+ return new Proxy(incomingCall, proxyIncomingCall);
10828
+ };
10829
+
10147
10830
  // Copyright (c) Microsoft Corporation.
10148
10831
  // Licensed under the MIT license.
10149
10832
  /**
@@ -10201,6 +10884,7 @@ class ProxyCallAgent {
10201
10884
  incomingCallSubscriber.unsubscribe();
10202
10885
  }
10203
10886
  this._incomingCallSubscribers.clear();
10887
+ this._declarativeIncomingCalls.clear();
10204
10888
  for (const [_, declarativeCall] of this._declarativeCalls.entries()) {
10205
10889
  declarativeCall.unsubscribe();
10206
10890
  }
@@ -10241,14 +10925,16 @@ class ProxyCallAgent {
10241
10925
  incomingCallSubscriber.unsubscribe();
10242
10926
  this._incomingCallSubscribers.delete(incomingCallId);
10243
10927
  }
10928
+ this._declarativeIncomingCalls.delete(incomingCallId);
10244
10929
  this._context.setIncomingCallEnded(incomingCallId, callEndReason);
10245
10930
  };
10246
- this.incomingCall = (event) => {
10931
+ this.incomingCall = ({ incomingCall }) => {
10247
10932
  // 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));
10933
+ if (!this._incomingCallSubscribers.has(incomingCall.id)) {
10934
+ this._incomingCallSubscribers.set(incomingCall.id, new IncomingCallSubscriber(incomingCall, this.setIncomingCallEnded));
10250
10935
  }
10251
- this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(event.incomingCall));
10936
+ this._declarativeIncomingCalls.set(incomingCall.id, incomingCallDeclaratify(incomingCall, this._context));
10937
+ this._context.setIncomingCall(convertSdkIncomingCallToDeclarativeIncomingCall(incomingCall));
10252
10938
  };
10253
10939
  this.addCall = (call) => {
10254
10940
  var _a;
@@ -10273,6 +10959,7 @@ class ProxyCallAgent {
10273
10959
  this._internalContext = internalContext;
10274
10960
  this._callSubscribers = new Map();
10275
10961
  this._incomingCallSubscribers = new Map();
10962
+ this._declarativeIncomingCalls = new Map();
10276
10963
  this._declarativeCalls = new Map();
10277
10964
  this._externalCallsUpdatedListeners = new Set();
10278
10965
  this.subscribe();
@@ -10327,6 +11014,18 @@ class ProxyCallAgent {
10327
11014
  });
10328
11015
  };
10329
11016
  }
11017
+ /**
11018
+ * This attribute is a special case and doesn't exist on the CallAgent interface.
11019
+ * We need this to be able to return a declarative incoming call object using the call agent.
11020
+ * In a standard headless SDK usage, the right way to get an incoming call is to use the `incomingCall` event.
11021
+ * However, using the declarative layer, the ideal usage would be to:
11022
+ * 1. subscribe to the `onStateChange` event
11023
+ * 2. Get the incoming call from the new state and it's ID
11024
+ * 3. Use `callAgent.incomingCalls` and filter an incoming call ID to get a declarative incoming call object
11025
+ */
11026
+ case 'incomingCalls': {
11027
+ return this._declarativeIncomingCalls;
11028
+ }
10330
11029
  default:
10331
11030
  return Reflect.get(target, prop);
10332
11031
  }
@@ -11672,6 +12371,191 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
11672
12371
  */
11673
12372
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
11674
12373
 
12374
+ 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};
12375
+
12376
+ 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};
12377
+
12378
+ 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};
12379
+
12380
+ 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};
12381
+
12382
+ 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};
12383
+
12384
+ 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};
12385
+
12386
+ 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};
12387
+
12388
+ 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};
12389
+
12390
+ 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};
12391
+
12392
+ 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};
12393
+
12394
+ 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};
12395
+
12396
+ 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};
12397
+
12398
+ 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};
12399
+
12400
+ 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};
12401
+
12402
+ // Copyright (c) Microsoft Corporation.
12403
+ const createCompositeStrings = (localizedStrings) => {
12404
+ const strings = Object.assign({}, en_US);
12405
+ Object.keys(localizedStrings).forEach((key) => {
12406
+ strings[key] = Object.assign(Object.assign({}, strings[key]), localizedStrings[key]);
12407
+ });
12408
+ return strings;
12409
+ };
12410
+ /**
12411
+ * Locale for English (US)
12412
+ *
12413
+ * @public
12414
+ */
12415
+ const COMPOSITE_LOCALE_EN_US = {
12416
+ component: COMPONENT_LOCALE_EN_US,
12417
+ strings: en_US
12418
+ };
12419
+ /**
12420
+ * Locale for English (British)
12421
+ *
12422
+ * @public
12423
+ */
12424
+ const COMPOSITE_LOCALE_EN_GB = {
12425
+ component: COMPONENT_LOCALE_EN_GB,
12426
+ strings: createCompositeStrings(en_GB)
12427
+ };
12428
+ /**
12429
+ * Locale for German (Germany)
12430
+ *
12431
+ * @public
12432
+ */
12433
+ const COMPOSITE_LOCALE_DE_DE = {
12434
+ component: COMPONENT_LOCALE_DE_DE,
12435
+ strings: createCompositeStrings(de_DE)
12436
+ };
12437
+ /**
12438
+ * Locale for Spanish (Spain)
12439
+ *
12440
+ * @public
12441
+ */
12442
+ const COMPOSITE_LOCALE_ES_ES = {
12443
+ component: COMPONENT_LOCALE_ES_ES,
12444
+ strings: createCompositeStrings(es_ES)
12445
+ };
12446
+ /**
12447
+ * Locale for French (France)
12448
+ *
12449
+ * @public
12450
+ */
12451
+ const COMPOSITE_LOCALE_FR_FR = {
12452
+ component: COMPONENT_LOCALE_FR_FR,
12453
+ strings: createCompositeStrings(fr_FR)
12454
+ };
12455
+ /**
12456
+ * Locale for Italian (Italy)
12457
+ *
12458
+ * @public
12459
+ */
12460
+ const COMPOSITE_LOCALE_IT_IT = {
12461
+ component: COMPONENT_LOCALE_IT_IT,
12462
+ strings: createCompositeStrings(it_IT)
12463
+ };
12464
+ /**
12465
+ * Locale for Japanese (Japan)
12466
+ *
12467
+ * @public
12468
+ */
12469
+ const COMPOSITE_LOCALE_JA_JP = {
12470
+ component: COMPONENT_LOCALE_JA_JP,
12471
+ strings: createCompositeStrings(ja_JP)
12472
+ };
12473
+ /**
12474
+ * Locale for Korean (South Korea)
12475
+ *
12476
+ * @public
12477
+ */
12478
+ const COMPOSITE_LOCALE_KO_KR = {
12479
+ component: COMPONENT_LOCALE_KO_KR,
12480
+ strings: createCompositeStrings(ko_KR)
12481
+ };
12482
+ /**
12483
+ * Locale for Dutch (Netherlands)
12484
+ *
12485
+ * @public
12486
+ */
12487
+ const COMPOSITE_LOCALE_NL_NL = {
12488
+ component: COMPONENT_LOCALE_NL_NL,
12489
+ strings: createCompositeStrings(nl_NL)
12490
+ };
12491
+ /**
12492
+ * Locale for Portuguese (Brazil)
12493
+ *
12494
+ * @public
12495
+ */
12496
+ const COMPOSITE_LOCALE_PT_BR = {
12497
+ component: COMPONENT_LOCALE_PT_BR,
12498
+ strings: createCompositeStrings(pt_BR)
12499
+ };
12500
+ /**
12501
+ * Locale for Russian (Russia)
12502
+ *
12503
+ * @public
12504
+ */
12505
+ const COMPOSITE_LOCALE_RU_RU = {
12506
+ component: COMPONENT_LOCALE_RU_RU,
12507
+ strings: createCompositeStrings(ru_RU)
12508
+ };
12509
+ /**
12510
+ * Locale for Turkish (Turkey)
12511
+ *
12512
+ * @public
12513
+ */
12514
+ const COMPOSITE_LOCALE_TR_TR = {
12515
+ component: COMPONENT_LOCALE_TR_TR,
12516
+ strings: createCompositeStrings(tr_TR)
12517
+ };
12518
+ /**
12519
+ * Locale for Chinese (Mainland China)
12520
+ *
12521
+ * @public
12522
+ */
12523
+ const COMPOSITE_LOCALE_ZH_CN = {
12524
+ component: COMPONENT_LOCALE_ZH_CN,
12525
+ strings: createCompositeStrings(zh_CN)
12526
+ };
12527
+ /**
12528
+ * Locale for Chinese (Taiwan)
12529
+ *
12530
+ * @public
12531
+ */
12532
+ const COMPOSITE_LOCALE_ZH_TW = {
12533
+ component: COMPONENT_LOCALE_ZH_TW,
12534
+ strings: createCompositeStrings(zh_TW)
12535
+ };
12536
+
12537
+ // Copyright (c) Microsoft Corporation.
12538
+ /**
12539
+ * Context for providing localized strings to components
12540
+ *
12541
+ * @private
12542
+ */
12543
+ const LocaleContext = React.createContext(COMPOSITE_LOCALE_EN_US);
12544
+ /**
12545
+ * Provider to provide localized strings for this library's composites.
12546
+ *
12547
+ * @private
12548
+ */
12549
+ const LocalizationProvider = (props) => {
12550
+ const { locale, children } = props;
12551
+ return (React__default['default'].createElement(LocaleContext.Provider, { value: locale },
12552
+ React__default['default'].createElement(LocalizationProvider$1, { locale: locale.component }, children)));
12553
+ };
12554
+ /**
12555
+ * @private
12556
+ */
12557
+ const useLocale = () => React.useContext(LocaleContext);
12558
+
11675
12559
  // Copyright (c) Microsoft Corporation.
11676
12560
  /**
11677
12561
  * @internal
@@ -11698,12 +12582,18 @@ const FileUploadButton = (props) => {
11698
12582
  background: 'transparent'
11699
12583
  }
11700
12584
  });
12585
+ /* @conditional-compile-remove(file-sharing) */
12586
+ const uploadFileButtonString = useLocale().strings.chat.uploadFile;
12587
+ const uploadFileButtonStringTrampoline = () => {
12588
+ // @conditional-compile-remove(file-sharing)
12589
+ return uploadFileButtonString;
12590
+ };
11701
12591
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
11702
12592
  React__default['default'].createElement(react.Stack, { verticalAlign: "center", horizontalAlign: "center", className: fileUploadButtonClassName, onClick: () => {
11703
12593
  var _a;
11704
12594
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click();
11705
12595
  } },
11706
- React__default['default'].createElement(react.IconButton, { className: iconButtonClassName },
12596
+ React__default['default'].createElement(react.IconButton, { className: iconButtonClassName, ariaLabel: uploadFileButtonStringTrampoline() },
11707
12597
  React__default['default'].createElement(SendBoxAttachFileIconTrampoline, null))),
11708
12598
  React__default['default'].createElement("input", { ref: inputRef, hidden: true, multiple: multiple, accept: accept, type: "file", onClick: (e) => {
11709
12599
  // To ensure that `onChange` is fired even if the same file is picked again.
@@ -12292,250 +13182,77 @@ beforeDispose) => {
12292
13182
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
12293
13183
  return;
12294
13184
  }
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)
13185
+ (() => __awaiter$9(void 0, void 0, void 0, function* () {
13186
+ if (adapterRef.current) {
13187
+ // Dispose the old adapter when a new one is created.
13188
+ //
13189
+ // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of
13190
+ // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter
13191
+ // creation.
13192
+ if (beforeDisposeRef.current) {
13193
+ yield beforeDisposeRef.current(adapterRef.current);
13194
+ }
13195
+ adapterRef.current.dispose();
13196
+ adapterRef.current = undefined;
13197
+ }
13198
+ let newAdapter = yield createAzureCommunicationChatAdapter({
13199
+ credential,
13200
+ displayName,
13201
+ endpoint,
13202
+ threadId,
13203
+ userId
13204
+ });
13205
+ if (afterCreateRef.current) {
13206
+ newAdapter = yield afterCreateRef.current(newAdapter);
13207
+ }
13208
+ adapterRef.current = newAdapter;
13209
+ setAdapter(newAdapter);
13210
+ }))();
13211
+ },
13212
+ // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.
13213
+ [adapterRef, afterCreateRef, beforeDisposeRef, credential, displayName, endpoint, threadId, userId]);
13214
+ // Dispose any existing adapter when the component unmounts.
13215
+ React.useEffect(() => {
13216
+ return () => {
13217
+ (() => __awaiter$9(void 0, void 0, void 0, function* () {
13218
+ if (adapterRef.current) {
13219
+ if (beforeDisposeRef.current) {
13220
+ yield beforeDisposeRef.current(adapterRef.current);
13221
+ }
13222
+ adapterRef.current.dispose();
13223
+ adapterRef.current = undefined;
13224
+ }
13225
+ }))();
13226
+ };
13227
+ }, []);
13228
+ return adapter;
12498
13229
  };
12499
13230
  /**
12500
- * Locale for Chinese (Mainland China)
13231
+ * Create a {@link ChatAdapter} using the provided {@link StatefulChatClient}.
12501
13232
  *
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)
13233
+ * Useful if you want to keep a reference to {@link StatefulChatClient}.
13234
+ * Consider using {@link createAzureCommunicationChatAdapter} for a simpler API.
12510
13235
  *
12511
13236
  * @public
12512
13237
  */
12513
- const COMPOSITE_LOCALE_ZH_TW = {
12514
- component: COMPONENT_LOCALE_ZH_TW,
12515
- strings: createCompositeStrings(zh_TW)
13238
+ const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$9(void 0, void 0, void 0, function* () {
13239
+ return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
13240
+ });
13241
+ const isChatError = (e) => {
13242
+ return e['target'] !== undefined && e['innerError'] !== undefined;
12516
13243
  };
12517
13244
 
12518
13245
  // Copyright (c) Microsoft Corporation.
13246
+ // Licensed under the MIT license.
12519
13247
  /**
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
13248
  * @private
12529
13249
  */
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)));
13250
+ const globalLayerHostStyle = {
13251
+ position: 'fixed',
13252
+ zIndex: 1000000,
13253
+ inset: '0px',
13254
+ visibility: 'hidden'
12534
13255
  };
12535
- /**
12536
- * @private
12537
- */
12538
- const useLocale = () => React.useContext(LocaleContext);
12539
13256
 
12540
13257
  // Copyright (c) Microsoft Corporation.
12541
13258
  /**
@@ -12548,6 +13265,7 @@ const useLocale = () => React.useContext(LocaleContext);
12548
13265
  */
12549
13266
  const BaseProvider = (props) => {
12550
13267
  const { fluentTheme, rtl, locale } = props;
13268
+ const globalLayerHostId = reactHooks.useId('composite-global-hostId');
12551
13269
  /**
12552
13270
  * Pass only the children if we previously registered icons, and have previously wrapped the children in
12553
13271
  * FluentThemeProvider and LocalizationProvider
@@ -12561,9 +13279,12 @@ const BaseProvider = (props) => {
12561
13279
  * to ensure all icons render correctly.
12562
13280
  */
12563
13281
  react.registerIcons({ icons: Object.assign(Object.assign({}, DEFAULT_COMPOSITE_ICONS), props.icons) });
13282
+ // we use Customizer to override default LayerHost injected to <body />
13283
+ // which stop polluting global dom tree and increase compatibility with react-full-screen
12564
13284
  const CompositeElement = (React__default['default'].createElement(FluentThemeProvider, { fluentTheme: fluentTheme, rtl: rtl },
12565
13285
  React__default['default'].createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" }),
12566
- props.children));
13286
+ React__default['default'].createElement(react.Customizer, { scopedSettings: { Layer: { hostId: globalLayerHostId } } }, props.children),
13287
+ React__default['default'].createElement(react.LayerHost, { id: globalLayerHostId, className: react.mergeStyles(globalLayerHostStyle) })));
12567
13288
  const localizedElement = locale ? LocalizationProvider({ locale, children: CompositeElement }) : CompositeElement;
12568
13289
  return React__default['default'].createElement(BaseContext.Provider, { value: true }, localizedElement);
12569
13290
  };
@@ -12598,6 +13319,11 @@ const useAdapter$1 = () => {
12598
13319
 
12599
13320
  // Copyright (c) Microsoft Corporation.
12600
13321
  const MESSAGE_THREAD_WIDTH = '41.25rem';
13322
+ /**
13323
+ * @private
13324
+ * z-index to ensure that chat container has lower z-index than participant pane
13325
+ */
13326
+ const CHAT_CONTAINER_ZINDEX = 1;
12601
13327
  /**
12602
13328
  * @private
12603
13329
  */
@@ -12641,7 +13367,8 @@ const chatArea = react.mergeStyles({
12641
13367
  const chatWrapper = react.mergeStyles({
12642
13368
  height: '100%',
12643
13369
  width: '100%',
12644
- overflow: 'hidden'
13370
+ overflow: 'hidden',
13371
+ zIndex: CHAT_CONTAINER_ZINDEX
12645
13372
  });
12646
13373
  /**
12647
13374
  * @private
@@ -12698,44 +13425,30 @@ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments,
12698
13425
  });
12699
13426
  };
12700
13427
  /**
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.
13428
+ * An Avatar component made using the `Persona` component.
13429
+ * It allows you to specify a `userId` and a `dataProvider` to retrieve the `AvatarPersonaData`.
13430
+ * Read more about `Persona` component at https://developer.microsoft.com/fluentui#/controls/web/persona
13431
+ *
12704
13432
  * @private
12705
13433
  */
12706
- const useCustomAvatarPersonaData = (userIds, callback) => {
12707
- const [data, setData] = React__default['default'].useState(Array(userIds.length).fill(undefined));
13434
+ const AvatarPersona = (props) => {
13435
+ var _a, _b, _c, _d, _e, _f;
13436
+ const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
13437
+ const [data, setData] = React.useState();
12708
13438
  React.useEffect(() => {
12709
13439
  (() => __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;
13440
+ if (dataProvider && userId) {
13441
+ const newData = yield dataProvider(userId);
13442
+ if (avatarDeepDifferenceCheck(data, newData)) {
13443
+ setData(newData);
12713
13444
  }
12714
- return yield callback(userId);
12715
- })));
12716
- if (shouldUpdate(data, newData)) {
12717
- setData(newData);
12718
13445
  }
12719
13446
  }))();
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]));
13447
+ }, [data, dataProvider, userId]);
13448
+ 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',
13449
+ // default disable tooltip unless specified
13450
+ showOverflowTooltip: showOverflowTooltip !== null && showOverflowTooltip !== void 0 ? showOverflowTooltip : false })));
12735
13451
  };
12736
- /**
12737
- * @private
12738
- */
12739
13452
  const avatarDeepDifferenceCheck = (currentData, newData) => {
12740
13453
  return ((currentData === null || currentData === void 0 ? void 0 : currentData.text) !== (newData === null || newData === void 0 ? void 0 : newData.text) ||
12741
13454
  (currentData === null || currentData === void 0 ? void 0 : currentData.imageUrl) !== (newData === null || newData === void 0 ? void 0 : newData.imageUrl) ||
@@ -12744,24 +13457,6 @@ const avatarDeepDifferenceCheck = (currentData, newData) => {
12744
13457
  (currentData === null || currentData === void 0 ? void 0 : currentData.initialsTextColor) !== (newData === null || newData === void 0 ? void 0 : newData.initialsTextColor));
12745
13458
  };
12746
13459
 
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
13460
  // Copyright (c) Microsoft Corporation.
12766
13461
  /**
12767
13462
  * @private
@@ -12949,11 +13644,16 @@ const peoplePaneContainerTokens = {
12949
13644
  /**
12950
13645
  * @private
12951
13646
  */
12952
- const participantListWrapper = react.mergeStyles({
13647
+ const participantListWrapper = (theme) => react.mergeStyles({
12953
13648
  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%'
13649
+ maxWidth: '50%',
13650
+ height: '100%',
13651
+ position: 'absolute',
13652
+ right: '0',
13653
+ boxShadow: theme.effects.elevation16,
13654
+ background: theme.semanticColors.bodyBackground,
13655
+ // zIndex to set the participant pane above the chat container
13656
+ zIndex: CHAT_CONTAINER_ZINDEX + 1
12957
13657
  });
12958
13658
  /**
12959
13659
  * @private
@@ -12995,13 +13695,25 @@ const participantListMobileStyle = {
12995
13695
  }
12996
13696
  }
12997
13697
  };
13698
+ /**
13699
+ * @private
13700
+ */
13701
+ const displayNameStyles = {
13702
+ root: {
13703
+ padding: '0.5rem',
13704
+ textOverflow: 'ellipsis',
13705
+ overflow: 'hidden'
13706
+ }
13707
+ };
12998
13708
 
12999
13709
  // Copyright (c) Microsoft Corporation.
13000
13710
  /**
13001
13711
  * @private
13002
13712
  */
13003
13713
  const ParticipantContainer = (props) => {
13004
- return (React__default['default'].createElement(react.Stack, { className: participantListWrapper },
13714
+ const theme = react.useTheme();
13715
+ const participantListWrapperClassName = React.useMemo(() => participantListWrapper(theme), [theme]);
13716
+ return (React__default['default'].createElement(react.Stack, { className: participantListWrapperClassName },
13005
13717
  React__default['default'].createElement(ParticipantListWithHeading, Object.assign({}, props))));
13006
13718
  };
13007
13719
  /**
@@ -13020,7 +13732,9 @@ const ParticipantListWithHeading = (props) => {
13020
13732
  return (React__default['default'].createElement(react.Stack, { className: participantListStack },
13021
13733
  React__default['default'].createElement(react.Stack.Item, { styles: subheadingStyleThemed }, title),
13022
13734
  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 })))));
13735
+ 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,
13736
+ 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 })),
13737
+ (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
13738
  };
13025
13739
 
13026
13740
  // Copyright (c) Microsoft Corporation.
@@ -13028,11 +13742,11 @@ const ParticipantListWithHeading = (props) => {
13028
13742
  * @private
13029
13743
  */
13030
13744
  const ChatScreenPeoplePane = (props) => {
13031
- const { onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
13745
+ const { onFetchAvatarPersonaData, onFetchParticipantMenuItems, isMobile } = props;
13032
13746
  const locale = useLocale();
13033
13747
  const chatListHeader = locale.strings.chat.chatListHeader;
13034
13748
  const participantListProps = usePropsFor$2(ParticipantList);
13035
- return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems }));
13749
+ return (React__default['default'].createElement(ParticipantContainer, { participantListProps: participantListProps, title: chatListHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, isMobile: isMobile }));
13036
13750
  };
13037
13751
 
13038
13752
  /**
@@ -13152,7 +13866,7 @@ const ChatScreen = (props) => {
13152
13866
  onCancelFileUpload: adapter.cancelFileUpload }))),
13153
13867
  formFactor !== 'mobile' && React__default['default'].createElement(AttachFileButton, null)))),
13154
13868
  /* @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 })))));
13869
+ (options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, isMobile: formFactor === 'mobile' })))));
13156
13870
  };
13157
13871
 
13158
13872
  // Copyright (c) Microsoft Corporation.
@@ -13427,11 +14141,12 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13427
14141
  }),
13428
14142
  /* @conditional-compile-remove(PSTN-calls) */
13429
14143
  onToggleHold: () => __awaiter$7(void 0, void 0, void 0, function* () {
13430
- // not implemented for composites yet
14144
+ var _a;
14145
+ return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
13431
14146
  }),
13432
14147
  /* @conditional-compile-remove(PSTN-calls) */
13433
- onAddParticipant: () => __awaiter$7(void 0, void 0, void 0, function* () {
13434
- // not implemented for composites yet
14148
+ onAddParticipant: (participant, options) => __awaiter$7(void 0, void 0, void 0, function* () {
14149
+ return yield adapter.addParticipant(participant, options);
13435
14150
  }),
13436
14151
  onRemoveParticipant: (userId) => __awaiter$7(void 0, void 0, void 0, function* () {
13437
14152
  yield adapter.removeParticipant(userId);
@@ -13445,9 +14160,9 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13445
14160
  onSelectSpeaker: (deviceInfo) => __awaiter$7(void 0, void 0, void 0, function* () {
13446
14161
  yield adapter.setSpeaker(deviceInfo);
13447
14162
  }),
13448
- onStartCall: (participants) => {
14163
+ onStartCall: (participants, options) => {
13449
14164
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
13450
- return adapter.startCall(rawIds);
14165
+ return adapter.startCall(rawIds, options);
13451
14166
  },
13452
14167
  onStartScreenShare: () => __awaiter$7(void 0, void 0, void 0, function* () {
13453
14168
  yield adapter.startScreenShare();
@@ -13459,12 +14174,12 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
13459
14174
  isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
13460
14175
  }),
13461
14176
  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();
14177
+ var _b;
14178
+ return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isMuted) ? yield adapter.unmute() : yield adapter.mute();
13464
14179
  }),
13465
14180
  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)
14181
+ var _c;
14182
+ return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isScreenSharingOn)
13468
14183
  ? yield adapter.stopScreenShare()
13469
14184
  : yield adapter.startScreenShare();
13470
14185
  }),
@@ -13597,16 +14312,13 @@ const Camera = (props) => {
13597
14312
 
13598
14313
  // Copyright (c) Microsoft Corporation.
13599
14314
  /** @private */
13600
- const generateCustomButtons = (onFetchCustomButtonProps, displayType) => {
14315
+ const generateCustomControlBarButtonStrings = (text) => {
14316
+ return { label: text };
14317
+ };
14318
+ /** @private */
14319
+ const generateCustomControlBarButtons = (onFetchCustomButtonProps, displayType) => {
13601
14320
  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
14321
+ primary: undefined
13610
14322
  };
13611
14323
  if (!onFetchCustomButtonProps) {
13612
14324
  return response;
@@ -13615,10 +14327,19 @@ const generateCustomButtons = (onFetchCustomButtonProps, displayType) => {
13615
14327
  for (const key in response) {
13616
14328
  response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
13617
14329
  .filter((buttonProps) => buttonProps.placement === key)
13618
- .map((buttonProps, i) => (React__default['default'].createElement(ControlBarButton, Object.assign({}, buttonProps, { key: `${buttonProps.placement}_${i}` }))))));
14330
+ .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}`,
14331
+ // set default icon if not provided
14332
+ onRenderIcon: () => { var _a; return React__default['default'].createElement(CallCompositeIcon, { iconName: (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : 'ControlButtonOptions' }); }, disabled: buttonProps.disabled })))));
13619
14333
  }
13620
14334
  return response;
13621
14335
  };
14336
+ /* @conditional-compile-remove(control-bar-button-injection) */
14337
+ /** @private */
14338
+ const onFetchCustomButtonPropsTrampoline$1 = (options) => {
14339
+ let response = undefined;
14340
+ response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;
14341
+ return response;
14342
+ };
13622
14343
 
13623
14344
  // Copyright (c) Microsoft Corporation.
13624
14345
  /** @private */
@@ -13750,7 +14471,7 @@ const Participants = (props) => {
13750
14471
  var _a;
13751
14472
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
13752
14473
  }, [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 })));
14474
+ 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
14475
  };
13755
14476
  const isDisabled$1 = (option) => {
13756
14477
  if (option === undefined || option === true || option === false) {
@@ -13779,7 +14500,8 @@ const isDisabled = (option) => {
13779
14500
  */
13780
14501
  const CallControls = (props) => {
13781
14502
  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]);
14503
+ /* @conditional-compile-remove(control-bar-button-injection) */
14504
+ const customButtons = React.useMemo(() => generateCustomControlBarButtons(onFetchCustomButtonPropsTrampoline$1(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);
13783
14505
  // when props.options is false then we want to hide the whole control bar.
13784
14506
  if (props.options === false) {
13785
14507
  return React__default['default'].createElement(React__default['default'].Fragment, null);
@@ -13787,28 +14509,15 @@ const CallControls = (props) => {
13787
14509
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
13788
14510
  React__default['default'].createElement(react.Stack.Item, null,
13789
14511
  React__default['default'].createElement(ControlBar, { layout: "horizontal" },
13790
- customButtons['first'],
13791
14512
  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
14513
  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
14514
  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'],
14515
+ 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
14516
  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']))));
14517
+ customButtons['primary'],
14518
+ 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
14519
  };
13805
14520
  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
14521
 
13813
14522
  // Copyright (c) Microsoft Corporation.
13814
14523
  // Licensed under the MIT license.
@@ -13951,7 +14660,7 @@ const CallArrangement = (props) => {
13951
14660
  !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
13952
14661
  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
14662
  ((_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 })))))));
14663
+ React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView })))))));
13955
14664
  };
13956
14665
 
13957
14666
  // Copyright (c) Microsoft Corporation.
@@ -13991,13 +14700,12 @@ const MediaGallery = (props) => {
13991
14700
  const cameraSwitcherProps = React.useMemo(() => {
13992
14701
  return Object.assign(Object.assign({}, cameraSwitcherCallback), cameraSwitcherCameras);
13993
14702
  }, [cameraSwitcherCallback, cameraSwitcherCameras]);
13994
- const remoteParticipants = useRemoteParticipantsWithCustomDisplayNames(videoGalleryProps.remoteParticipants, props.onFetchAvatarPersonaData);
13995
14703
  const onRenderAvatar = React.useCallback((userId, options) => (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ position: 'absolute', height: '100%', width: '100%' }) },
13996
14704
  React__default['default'].createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData })))), [props.onFetchAvatarPersonaData]);
13997
14705
  useLocalVideoStartTrigger(!!props.isVideoStreamOn);
13998
14706
  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]);
14707
+ 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 })));
14708
+ }, [videoGalleryProps, props.isMobile, onRenderAvatar, cameraSwitcherProps]);
14001
14709
  return VideoGalleryMemoized;
14002
14710
  };
14003
14711
  /**
@@ -14026,25 +14734,6 @@ const useLocalVideoStartTrigger = (isLocalVideoAvailable, shouldTransition) => {
14026
14734
  }
14027
14735
  }, [shouldTransition, isButtonStatusSynced, isPreviewCameraOn, isLocalVideoAvailable, mediaGalleryHandlers]);
14028
14736
  };
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
14737
 
14049
14738
  // Copyright (c) Microsoft Corporation.
14050
14739
  // Licensed under the MIT license.
@@ -14164,11 +14853,11 @@ const NetworkReconnectTile = (props) => {
14164
14853
  // This tile may be shown at the beginning of a call.
14165
14854
  // So we need to transition local video to the call.
14166
14855
  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) },
14856
+ 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
14857
  React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(titleContainerStyle) },
14169
14858
  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)));
14859
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle$1(palette, isVideoReady)), "aria-live": 'assertive' }, strings.networkReconnectTitle)),
14860
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle$1(palette, isVideoReady)), "aria-live": 'assertive' }, strings.networkReconnectMoreDetails)) }, handlers)));
14172
14861
  };
14173
14862
 
14174
14863
  // Copyright (c) Microsoft Corporation.
@@ -14480,9 +15169,9 @@ const buttonWithIconStyles = {
14480
15169
  * @private
14481
15170
  */
14482
15171
  const StartCallButton = (props) => {
14483
- const { isDisabled, onClickHandler, rejoinCall } = props;
15172
+ const { rejoinCall } = props;
14484
15173
  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 }) }));
15174
+ 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
15175
  };
14487
15176
 
14488
15177
  // Copyright (c) Microsoft Corporation.
@@ -14712,7 +15401,7 @@ const ConfigurationPage = (props) => {
14712
15401
  callDescription),
14713
15402
  React__default['default'].createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { cameraPermissionGranted: cameraPermissionGranted, microphonePermissionGranted: microphonePermissionGranted })))),
14714
15403
  React__default['default'].createElement(react.Stack, { styles: mobileView ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
14715
- React__default['default'].createElement(StartCallButton, { className: mobileView ? startCallButtonStyleMobile : undefined, onClickHandler: startCallHandler, isDisabled: !microphonePermissionGranted }))))));
15404
+ React__default['default'].createElement(StartCallButton, { className: mobileView ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: !microphonePermissionGranted }))))));
14716
15405
  };
14717
15406
 
14718
15407
  // Copyright (c) Microsoft Corporation.
@@ -14761,13 +15450,13 @@ const moreDetailsStyles = {
14761
15450
  */
14762
15451
  function NoticePage(props) {
14763
15452
  const adapter = useAdapter();
14764
- return (React__default['default'].createElement(react.Stack, { verticalFill: true, verticalAlign: "center", horizontalAlign: "center", "data-ui-id": props.dataUiId },
15453
+ return (React__default['default'].createElement(react.Stack, { verticalFill: true, verticalAlign: "center", horizontalAlign: "center", "data-ui-id": props.dataUiId, "aria-atomic": true },
14765
15454
  React__default['default'].createElement(react.Stack, { className: react.mergeStyles(containerStyle), tokens: containerItemGap },
14766
15455
  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),
15456
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyles), "aria-live": "assertive" }, props.title),
15457
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyles), "aria-live": "assertive" }, props.moreDetails),
14769
15458
  React__default['default'].createElement(react.Stack, { styles: rejoinCallButtonContainerStyles },
14770
- React__default['default'].createElement(StartCallButton, { onClickHandler: () => adapter.joinCall(), isDisabled: false, rejoinCall: true })))));
15459
+ React__default['default'].createElement(StartCallButton, { onClick: () => adapter.joinCall(), disabled: false, rejoinCall: true, autoFocus: true })))));
14771
15460
  }
14772
15461
 
14773
15462
  // Copyright (c) Microsoft Corporation.
@@ -14808,10 +15497,10 @@ const LobbyTile = (props) => {
14808
15497
  const isVideoReady = (_a = videoStream === null || videoStream === void 0 ? void 0 : videoStream.isAvailable) !== null && _a !== void 0 ? _a : false;
14809
15498
  const palette = useTheme().palette;
14810
15499
  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) },
15500
+ 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
15501
  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)));
15502
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(titleStyle(palette, isVideoReady)), "aria-live": "assertive" }, props.overlayProps.title),
15503
+ props.overlayProps.moreDetails && (React__default['default'].createElement(react.Text, { className: react.mergeStyles(moreDetailsStyle(palette, isVideoReady)), "aria-live": "assertive" }, props.overlayProps.moreDetails)))) : undefined }, handlers)));
14815
15504
  };
14816
15505
 
14817
15506
  // Copyright (c) Microsoft Corporation.
@@ -15130,6 +15819,7 @@ class AzureCommunicationCallAdapter {
15130
15819
  };
15131
15820
  this.handlers = createDefaultCallingHandlers(callClient, callAgent, deviceManager, undefined);
15132
15821
  this.onClientStateChange = onStateChange;
15822
+ this.subscribeDeviceManagerEvents();
15133
15823
  this.callClient.onStateChange(onStateChange);
15134
15824
  }
15135
15825
  get call() {
@@ -15139,6 +15829,15 @@ class AzureCommunicationCallAdapter {
15139
15829
  this.resetDiagnosticsForwarder(newCall);
15140
15830
  this._call = newCall;
15141
15831
  }
15832
+ // TODO: update this to include the 'selectedCameraChanged' when calling adds it to the device manager
15833
+ subscribeDeviceManagerEvents() {
15834
+ this.deviceManager.on('selectedMicrophoneChanged', () => {
15835
+ this.emitter.emit('selectedMicrophoneChanged');
15836
+ });
15837
+ this.deviceManager.on('selectedSpeakerChanged', () => {
15838
+ this.emitter.emit('selectedSpeakerChanged');
15839
+ });
15840
+ }
15142
15841
  bindPublicMethods() {
15143
15842
  this.onStateChange.bind(this);
15144
15843
  this.offStateChange.bind(this);
@@ -15166,6 +15865,12 @@ class AzureCommunicationCallAdapter {
15166
15865
  this.on.bind(this);
15167
15866
  this.off.bind(this);
15168
15867
  this.processNewCall.bind(this);
15868
+ /* @conditional-compile-remove(PSTN-calls) */
15869
+ this.addParticipant.bind(this);
15870
+ /* @conditional-compile-remove(PSTN-calls) */
15871
+ this.holdCall.bind(this);
15872
+ /* @conditional-compile-remove(PSTN-calls) */
15873
+ this.resumeCall.bind(this);
15169
15874
  }
15170
15875
  dispose() {
15171
15876
  this.resetDiagnosticsForwarder();
@@ -15345,8 +16050,7 @@ class AzureCommunicationCallAdapter {
15345
16050
  }));
15346
16051
  });
15347
16052
  }
15348
- //TODO: a better way to expose option parameter
15349
- startCall(participants) {
16053
+ startCall(participants, options) {
15350
16054
  var _a, _b;
15351
16055
  if (_isInCall((_b = (_a = this.getState().call) === null || _a === void 0 ? void 0 : _a.state) !== null && _b !== void 0 ? _b : 'None')) {
15352
16056
  throw new Error('You are already in the call.');
@@ -15355,9 +16059,18 @@ class AzureCommunicationCallAdapter {
15355
16059
  // FIXME: `onStartCall` does not allow a Teams user.
15356
16060
  // Need some way to return an error if a Teams user is provided.
15357
16061
  const backendId = fromFlatCommunicationIdentifier(participant);
16062
+ if (communicationCommon.isPhoneNumberIdentifier(backendId)) {
16063
+ if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {
16064
+ throw new Error('unable to start call, PSTN user present with no alternativeCallerID.');
16065
+ }
16066
+ return backendId;
16067
+ }
16068
+ else if (communicationCommon.isCommunicationUserIdentifier(backendId)) {
16069
+ return backendId;
16070
+ }
15358
16071
  return backendId;
15359
16072
  });
15360
- const call = this.handlers.onStartCall(idsToAdd);
16073
+ const call = this.handlers.onStartCall(idsToAdd, options);
15361
16074
  if (!call) {
15362
16075
  throw new Error('Unable to start call.');
15363
16076
  }
@@ -15377,6 +16090,30 @@ class AzureCommunicationCallAdapter {
15377
16090
  this.handlers.onRemoveParticipant(userId);
15378
16091
  });
15379
16092
  }
16093
+ /* @conditional-compile-remove(PSTN-calls) */
16094
+ addParticipant(participant, options) {
16095
+ return __awaiter$4(this, void 0, void 0, function* () {
16096
+ this.handlers.onAddParticipant(participant, options);
16097
+ });
16098
+ }
16099
+ /* @conditional-compile-remove(PSTN-calls) */
16100
+ holdCall() {
16101
+ var _a;
16102
+ return __awaiter$4(this, void 0, void 0, function* () {
16103
+ if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) !== 'LocalHold') {
16104
+ this.handlers.onToggleHold();
16105
+ }
16106
+ });
16107
+ }
16108
+ /* @conditional-compile-remove(PSTN-calls) */
16109
+ resumeCall() {
16110
+ var _a;
16111
+ return __awaiter$4(this, void 0, void 0, function* () {
16112
+ if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold') {
16113
+ this.handlers.onToggleHold();
16114
+ }
16115
+ });
16116
+ }
15380
16117
  getState() {
15381
16118
  return this.context.getState();
15382
16119
  }
@@ -15760,6 +16497,71 @@ const MoreButton = (props) => {
15760
16497
  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
16498
  };
15762
16499
 
16500
+ // Copyright (c) Microsoft Corporation.
16501
+ /**
16502
+ * Max number of Custom Buttons in primary and secondary ControlBar
16503
+ * Does not include existing buttons in the controlBar.
16504
+ *
16505
+ * @private
16506
+ */
16507
+ const CUSTOM_BUTTON_OPTIONS = {
16508
+ MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS: 3,
16509
+ MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS: 1,
16510
+ MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS: 2
16511
+ };
16512
+ /** @private */
16513
+ const generateCustomCallWithChatControlBarButton = (onFetchCustomButtonProps, displayType) => {
16514
+ const response = {
16515
+ primary: undefined,
16516
+ secondary: undefined,
16517
+ overflow: undefined
16518
+ };
16519
+ if (!onFetchCustomButtonProps) {
16520
+ return response;
16521
+ }
16522
+ const allButtonProps = onFetchCustomButtonProps.map((f) => f({ displayType }));
16523
+ for (const key in response) {
16524
+ response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
16525
+ .filter((buttonProps) => buttonProps.placement === key)
16526
+ .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: () => {
16527
+ var _a;
16528
+ return (React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : 'ControlButtonOptions' }));
16529
+ }, disabled: buttonProps.disabled })))));
16530
+ }
16531
+ return response;
16532
+ };
16533
+ /** @private */
16534
+ const generateCustomCallWithChatDrawerButtons = (onFetchCustomButtonProps, displayType) => {
16535
+ const response = {
16536
+ primary: undefined,
16537
+ secondary: undefined,
16538
+ overflow: undefined
16539
+ };
16540
+ if (!onFetchCustomButtonProps) {
16541
+ return response;
16542
+ }
16543
+ const allButtonProps = onFetchCustomButtonProps.map((f) => f({ displayType }));
16544
+ for (const key in response) {
16545
+ response[key] = (React__default['default'].createElement(React__default['default'].Fragment, null, allButtonProps
16546
+ .filter((buttonProps) => buttonProps.placement === key)
16547
+ .map((buttonProps, i) => ({
16548
+ itemKey: `${buttonProps.placement}_${i}`,
16549
+ text: buttonProps.text,
16550
+ onItemClick: buttonProps.onItemClick,
16551
+ iconProps: { iconName: buttonProps.iconName },
16552
+ disabled: buttonProps.disabled
16553
+ }))));
16554
+ }
16555
+ return response;
16556
+ };
16557
+ /* @conditional-compile-remove(control-bar-button-injection) */
16558
+ /** @private */
16559
+ const onFetchCustomButtonPropsTrampoline = (options) => {
16560
+ let response = undefined;
16561
+ response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;
16562
+ return response;
16563
+ };
16564
+
15763
16565
  // Copyright (c) Microsoft Corporation.
15764
16566
  const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) => {
15765
16567
  if (callWithChatControls === false) {
@@ -15781,6 +16583,7 @@ const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) =>
15781
16583
  * @private
15782
16584
  */
15783
16585
  const CallWithChatControlBar = (props) => {
16586
+ var _a, _b;
15784
16587
  const theme = react.useTheme();
15785
16588
  const callWithChatStrings = useCallWithChatCompositeStrings();
15786
16589
  const options = inferCallWithChatControlOptions$1(props.mobileView, props.callControls);
@@ -15802,6 +16605,8 @@ const CallWithChatControlBar = (props) => {
15802
16605
  const screenShareButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined), [props.mobileView, theme]);
15803
16606
  const commonButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined), [props.mobileView, theme]);
15804
16607
  const endCallButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined), [props.mobileView, theme]);
16608
+ /* @conditional-compile-remove(control-bar-button-injection) */
16609
+ const customButtons = React.useMemo(() => generateCustomCallWithChatControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);
15805
16610
  // when options is false then we want to hide the whole control bar.
15806
16611
  if (options === false) {
15807
16612
  return React__default['default'].createElement(React__default['default'].Fragment, null);
@@ -15816,11 +16621,23 @@ const CallWithChatControlBar = (props) => {
15816
16621
  isEnabled$1(options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView })),
15817
16622
  isEnabled$1(options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView })),
15818
16623
  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 })),
16624
+ isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles })),
16625
+ /* @conditional-compile-remove(control-bar-button-injection) */
16626
+ (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
16627
+ _a.props.children.slice(0, props.mobileView
16628
+ ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
16629
+ : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
16630
+ 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' })));
16631
+ }),
15820
16632
  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
16633
  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 })),
16634
+ !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
16635
+ /* @conditional-compile-remove(control-bar-button-injection) */
16636
+ (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :
16637
+ _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
16638
+ return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.key, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
16639
+ }),
16640
+ 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
16641
  isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton))));
15825
16642
  };
15826
16643
  const desktopButtonContainerStyle = {
@@ -16017,8 +16834,8 @@ class CallWithChatBackedCallAdapter {
16017
16834
  return this.callWithChatAdapter.joinCall(microphoneOn);
16018
16835
  };
16019
16836
  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);
16837
+ this.startCall = (participants, options) => {
16838
+ return this.callWithChatAdapter.startCall(participants, options);
16022
16839
  };
16023
16840
  this.setCamera = (sourceId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setCamera(sourceId, options); });
16024
16841
  this.setMicrophone = (sourceId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setMicrophone(sourceId); });
@@ -16036,6 +16853,18 @@ class CallWithChatBackedCallAdapter {
16036
16853
  this.removeParticipant = (userId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.removeParticipant(userId); });
16037
16854
  this.createStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.createStreamView(remoteUserId, options); });
16038
16855
  this.disposeStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.disposeStreamView(remoteUserId, options); });
16856
+ /* @conditional-compile-remove(PSTN-calls) */
16857
+ this.holdCall = () => __awaiter$3(this, void 0, void 0, function* () {
16858
+ yield this.callWithChatAdapter.holdCall();
16859
+ });
16860
+ /* @conditional-compile-remove(PSTN-calls) */
16861
+ this.resumeCall = () => __awaiter$3(this, void 0, void 0, function* () {
16862
+ yield this.callWithChatAdapter.resumeCall();
16863
+ });
16864
+ /* @conditional-compile-remove(PSTN-calls) */
16865
+ this.addParticipant = (participant, options) => __awaiter$3(this, void 0, void 0, function* () {
16866
+ yield this.callWithChatAdapter.addParticipant(participant, options);
16867
+ });
16039
16868
  this.callWithChatAdapter = callWithChatAdapter;
16040
16869
  }
16041
16870
  }
@@ -16182,7 +17011,7 @@ const inferCallWithChatControlOptions = (callWithChatControls) => {
16182
17011
  };
16183
17012
  /** @private */
16184
17013
  const MoreDrawer = (props) => {
16185
- var _a, _b;
17014
+ var _a, _b, _c, _d, _e;
16186
17015
  const drawerMenuItems = [];
16187
17016
  const { speakers, onSelectSpeaker } = props;
16188
17017
  const onSpeakerItemClick = React.useCallback((_ev, itemKey) => {
@@ -16253,6 +17082,20 @@ const MoreDrawer = (props) => {
16253
17082
  onItemClick: props.onPeopleButtonClicked
16254
17083
  });
16255
17084
  }
17085
+ /* @conditional-compile-remove(control-bar-button-injection) */
17086
+ const customDrawerButtons = React.useMemo(() => generateCustomCallWithChatDrawerButtons(onFetchCustomButtonPropsTrampoline(drawerSelectionOptions !== false ? drawerSelectionOptions : undefined), drawerSelectionOptions !== false ? drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.displayType : undefined), [drawerSelectionOptions]);
17087
+ /* @conditional-compile-remove(control-bar-button-injection) */
17088
+ (_c = customDrawerButtons['overflow']) === null || _c === void 0 ? void 0 : _c.props.children.forEach((element) => {
17089
+ drawerMenuItems.push(element);
17090
+ });
17091
+ /* @conditional-compile-remove(control-bar-button-injection) */
17092
+ (_d = customDrawerButtons['primary']) === null || _d === void 0 ? void 0 : _d.props.children.slice(CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS).forEach((element) => {
17093
+ drawerMenuItems.push(element);
17094
+ });
17095
+ /* @conditional-compile-remove(control-bar-button-injection) */
17096
+ (_e = customDrawerButtons['secondary']) === null || _e === void 0 ? void 0 : _e.props.children.forEach((element) => {
17097
+ drawerMenuItems.push(element);
17098
+ });
16256
17099
  return React__default['default'].createElement(_DrawerMenu, { items: drawerMenuItems, onLightDismiss: props.onLightDismiss });
16257
17100
  };
16258
17101
  const isDeviceSelected = (speaker, selectedSpeaker) => !!selectedSpeaker && speaker.id === selectedSpeaker.id;
@@ -16301,7 +17144,7 @@ const SidePaneHeader = (props) => {
16301
17144
  const callWithChatStrings = useCallWithChatCompositeStrings();
16302
17145
  return (React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", styles: sidePaneHeaderContainerStyles },
16303
17146
  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 })));
17147
+ React__default['default'].createElement(react.CommandBarButton, { ariaLabel: callWithChatStrings.dismissSidePaneButtonLabel, styles: sidePaneCloseButtonStyles, iconProps: { iconName: 'cancel' }, onClick: props.onClose })));
16305
17148
  };
16306
17149
 
16307
17150
  // Copyright (c) Microsoft Corporation.
@@ -16332,7 +17175,7 @@ const LocalAndRemotePIP = (props) => {
16332
17175
  onDisposeLocalStreamView
16333
17176
  ]);
16334
17177
  const remoteVideoTileProps = React.useMemo(() => {
16335
- var _a, _b;
17178
+ var _a, _b, _c;
16336
17179
  return !dominantRemoteParticipant
16337
17180
  ? undefined
16338
17181
  : {
@@ -16343,7 +17186,8 @@ const LocalAndRemotePIP = (props) => {
16343
17186
  showLabel: false,
16344
17187
  showMuteIndicator: false,
16345
17188
  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,
17189
+ isReceiving: (_b = dominantRemoteParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.isReceiving,
17190
+ renderElement: (_c = dominantRemoteParticipant.videoStream) === null || _c === void 0 ? void 0 : _c.renderElement,
16347
17191
  userId: dominantRemoteParticipant.userId,
16348
17192
  key: dominantRemoteParticipant.userId
16349
17193
  };
@@ -16390,7 +17234,9 @@ const dominantRemoteParticipantSelector = reselect__namespace.createSelector([ge
16390
17234
  const dominantRemoteParticipant = remoteParticipants && Object.keys(remoteParticipants).length > 0
16391
17235
  ? findDominantRemoteParticipant(remoteParticipants, dominantSpeakers !== null && dominantSpeakers !== void 0 ? dominantSpeakers : [])
16392
17236
  : undefined;
16393
- return dominantRemoteParticipant ? _videoGalleryRemoteParticipantsMemo(dominantRemoteParticipant)[0] : undefined;
17237
+ return dominantRemoteParticipant
17238
+ ? _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline(Object.values(dominantRemoteParticipant)))[0]
17239
+ : undefined;
16394
17240
  });
16395
17241
  const findDominantRemoteParticipant = (remoteParticipants, dominantSpeakerIds) => {
16396
17242
  let dominantRemoteParticipantId = dominantSpeakerIds[0];
@@ -16402,6 +17248,10 @@ const findDominantRemoteParticipant = (remoteParticipants, dominantSpeakerIds) =
16402
17248
  }
16403
17249
  return { dominantRemoteParticipantId: remoteParticipants[dominantRemoteParticipantId] };
16404
17250
  };
17251
+ const updateUserDisplayNamesTrampoline = (remoteParticipants) => {
17252
+ /* @conditional-compile-remove(PSTN-calls) */
17253
+ return _updateUserDisplayNames(remoteParticipants);
17254
+ };
16405
17255
 
16406
17256
  // Copyright (c) Microsoft Corporation.
16407
17257
  /**
@@ -16890,11 +17740,16 @@ const CallWithChatScreen = (props) => {
16890
17740
  setShowDrawer(false);
16891
17741
  togglePeople();
16892
17742
  }, [togglePeople]);
17743
+ const callCompositeContainerCSS = React.useMemo(() => {
17744
+ return { display: isMobileWithActivePane ? 'none' : 'flex' };
17745
+ }, [isMobileWithActivePane]);
16893
17746
  return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles) },
16894
17747
  React__default['default'].createElement(react.Stack, { verticalFill: true, grow: true, styles: compositeOuterContainerStyles, id: compositeParentDivId },
16895
17748
  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 })))),
17749
+ React__default['default'].createElement(react.Stack.Item, { grow: true, styles: callCompositeContainerStyles,
17750
+ // Perf: Instead of removing the video gallery from DOM, we hide it to prevent re-renders.
17751
+ style: callCompositeContainerCSS },
17752
+ React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
16898
17753
  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
17754
  /* @conditional-compile-remove(file-sharing) */
16900
17755
  fileSharing: props.fileSharing, rtl: props.rtl }))),
@@ -17109,6 +17964,12 @@ class AzureCommunicationCallWithChatAdapter {
17109
17964
  this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
17110
17965
  /* @conditional-compile-remove(file-sharing) */
17111
17966
  this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
17967
+ /* @conditional-compile-remove(PSTN-calls) */
17968
+ this.holdCall.bind(this);
17969
+ /* @conditional-compile-remove(PSTN-calls) */
17970
+ this.resumeCall.bind(this);
17971
+ /* @conditional-compile-remove(PSTN-calls) */
17972
+ this.addParticipant.bind(this);
17112
17973
  }
17113
17974
  /** Join existing Call. */
17114
17975
  joinCall(microphoneOn) {
@@ -17122,8 +17983,8 @@ class AzureCommunicationCallWithChatAdapter {
17122
17983
  });
17123
17984
  }
17124
17985
  /** Start a new Call. */
17125
- startCall(participants) {
17126
- return this.callAdapter.startCall(participants);
17986
+ startCall(participants, options) {
17987
+ return this.callAdapter.startCall(participants, options);
17127
17988
  }
17128
17989
  /**
17129
17990
  * Subscribe to state change events.
@@ -17315,6 +18176,24 @@ class AzureCommunicationCallWithChatAdapter {
17315
18176
  updateFileUploadMetadata(id, metadata) {
17316
18177
  this.chatAdapter.updateFileUploadMetadata(id, metadata);
17317
18178
  }
18179
+ /* @conditional-compile-remove(PSTN-calls) */
18180
+ holdCall() {
18181
+ return __awaiter(this, void 0, void 0, function* () {
18182
+ return yield this.callAdapter.holdCall();
18183
+ });
18184
+ }
18185
+ /* @conditional-compile-remove(PSTN-calls) */
18186
+ resumeCall() {
18187
+ return __awaiter(this, void 0, void 0, function* () {
18188
+ return yield this.callAdapter.resumeCall();
18189
+ });
18190
+ }
18191
+ /* @conditional-compile-remove(PSTN-calls) */
18192
+ addParticipant(participant, options) {
18193
+ return __awaiter(this, void 0, void 0, function* () {
18194
+ return yield this.callAdapter.addParticipant(participant, options);
18195
+ });
18196
+ }
17318
18197
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17319
18198
  on(event, listener) {
17320
18199
  switch (event) {
@@ -17342,6 +18221,12 @@ class AzureCommunicationCallWithChatAdapter {
17342
18221
  case 'isSpeakingChanged':
17343
18222
  this.callAdapter.on('isSpeakingChanged', listener);
17344
18223
  break;
18224
+ case 'selectedMicrophoneChanged':
18225
+ this.callAdapter.on('selectedMicrophoneChanged', listener);
18226
+ break;
18227
+ case 'selectedSpeakerChanged':
18228
+ this.callAdapter.on('selectedSpeakerChanged', listener);
18229
+ break;
17345
18230
  case 'messageReceived':
17346
18231
  this.chatAdapter.on('messageReceived', listener);
17347
18232
  break;
@@ -17394,6 +18279,12 @@ class AzureCommunicationCallWithChatAdapter {
17394
18279
  case 'isSpeakingChanged':
17395
18280
  this.callAdapter.off('isSpeakingChanged', listener);
17396
18281
  break;
18282
+ case 'selectedMicrophoneChanged':
18283
+ this.callAdapter.off('selectedMicrophoneChanged', listener);
18284
+ break;
18285
+ case 'selectedSpeakerChanged':
18286
+ this.callAdapter.off('selectedSpeakerChanged', listener);
18287
+ break;
17397
18288
  case 'messageReceived':
17398
18289
  this.chatAdapter.off('messageReceived', listener);
17399
18290
  break;
@@ -17663,10 +18554,12 @@ exports.ControlBarButton = ControlBarButton;
17663
18554
  exports.DEFAULT_COMPONENT_ICONS = DEFAULT_COMPONENT_ICONS;
17664
18555
  exports.DEFAULT_COMPOSITE_ICONS = DEFAULT_COMPOSITE_ICONS;
17665
18556
  exports.DevicesButton = DevicesButton;
18557
+ exports.Dialpad = Dialpad;
17666
18558
  exports.EndCallButton = EndCallButton;
17667
18559
  exports.ErrorBar = ErrorBar;
17668
18560
  exports.FluentThemeProvider = FluentThemeProvider;
17669
18561
  exports.GridLayout = GridLayout;
18562
+ exports.HoldButton = HoldButton;
17670
18563
  exports.LocalizationProvider = LocalizationProvider$1;
17671
18564
  exports.MessageStatusIndicator = MessageStatusIndicator;
17672
18565
  exports.MessageThread = MessageThread;