@azure/communication-react 1.5.1-beta.2 → 1.5.1-beta.4

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 (330) hide show
  1. package/CHANGELOG.beta.md +56 -1
  2. package/CHANGELOG.json +494 -0
  3. package/README.md +1 -1
  4. package/dist/communication-react.d.ts +476 -254
  5. package/dist/dist-cjs/communication-react/index.js +5974 -4543
  6. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +13 -0
  10. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +36 -0
  11. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.d.ts +49 -0
  13. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js +53 -0
  14. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js.map +1 -0
  15. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +12 -4
  16. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +22 -32
  17. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +3 -1
  19. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +3 -0
  21. package/dist/dist-esm/calling-component-bindings/src/index.js +2 -0
  22. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  23. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +68 -22
  24. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  25. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +8 -3
  26. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +81 -30
  27. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  28. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +57 -0
  29. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  30. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +2 -1
  31. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +19 -21
  32. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  33. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.d.ts +18 -0
  34. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js +38 -0
  35. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js.map +1 -0
  36. package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts +6 -0
  37. package/dist/dist-esm/calling-stateful-client/src/Converter.js +17 -1
  38. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  39. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.d.ts +0 -9
  40. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js +3 -6
  41. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js.map +1 -1
  42. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.d.ts +0 -1
  43. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js +2 -25
  44. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js.map +1 -1
  45. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.d.ts +7 -0
  46. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +10 -0
  47. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
  48. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -1
  49. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  50. package/dist/dist-esm/calling-stateful-client/src/index.d.ts +1 -0
  51. package/dist/dist-esm/calling-stateful-client/src/index.js +2 -0
  52. package/dist/dist-esm/calling-stateful-client/src/index.js.map +1 -1
  53. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +58 -4
  54. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  55. package/dist/dist-esm/chat-component-bindings/src/utils/constants.d.ts +4 -0
  56. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js +4 -0
  57. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js.map +1 -1
  58. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +32 -26
  59. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
  60. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js +5 -1
  61. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js.map +1 -1
  62. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js +6 -1
  63. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js.map +1 -1
  64. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.d.ts +1 -0
  65. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.js.map +1 -1
  66. package/dist/dist-esm/communication-react/src/index.d.ts +7 -2
  67. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/CameraButton.d.ts +0 -4
  69. package/dist/dist-esm/react-components/src/components/CameraButton.js +0 -14
  70. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  71. package/dist/dist-esm/react-components/src/components/Caption.d.ts +21 -0
  72. package/dist/dist-esm/react-components/src/components/Caption.js +33 -0
  73. package/dist/dist-esm/react-components/src/components/Caption.js.map +1 -0
  74. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +1 -0
  75. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +32 -30
  76. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  77. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.d.ts +37 -0
  78. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js +88 -0
  79. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js.map +1 -0
  80. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +16 -1
  81. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +19 -16
  82. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  83. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.d.ts +1 -1
  84. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js +4 -2
  85. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsEditBox.js.map +1 -1
  86. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts +11 -1
  87. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +38 -20
  88. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  89. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +14 -2
  90. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +96 -11
  91. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  92. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.d.ts +2 -0
  93. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js +1 -0
  94. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js.map +1 -1
  95. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts +13 -0
  96. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js +5 -1
  97. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  98. package/dist/dist-esm/react-components/src/components/GridLayout.js +1 -1
  99. package/dist/dist-esm/react-components/src/components/GridLayout.js.map +1 -1
  100. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +36 -4
  101. package/dist/dist-esm/react-components/src/components/MessageThread.js +88 -42
  102. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  103. package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js +1 -1
  104. package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js.map +1 -1
  105. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js +10 -2
  106. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js.map +1 -1
  107. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.d.ts +70 -0
  108. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js +52 -0
  109. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js.map +1 -0
  110. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +1 -1
  111. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -1
  112. package/dist/dist-esm/react-components/src/components/index.d.ts +4 -1
  113. package/dist/dist-esm/react-components/src/components/index.js +7 -0
  114. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  115. package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +33 -0
  116. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +60 -0
  117. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -0
  118. package/dist/dist-esm/react-components/src/components/styles/CaptionsSettingsModal.styles.d.ts +34 -0
  119. package/dist/dist-esm/react-components/src/components/styles/CaptionsSettingsModal.styles.js +86 -0
  120. package/dist/dist-esm/react-components/src/components/styles/CaptionsSettingsModal.styles.js.map +1 -0
  121. package/dist/dist-esm/react-components/src/components/styles/Common.style.d.ts +14 -0
  122. package/dist/dist-esm/react-components/src/components/styles/Common.style.js +16 -0
  123. package/dist/dist-esm/react-components/src/components/styles/Common.style.js.map +1 -0
  124. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +5 -0
  125. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +28 -0
  126. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  127. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +1 -0
  128. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  129. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +6 -4
  130. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js +1 -1
  131. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
  132. package/dist/dist-esm/react-components/src/components/utils.d.ts +4 -0
  133. package/dist/dist-esm/react-components/src/components/utils.js +4 -0
  134. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  135. package/dist/dist-esm/react-components/src/index.d.ts +2 -0
  136. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  137. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +3 -1
  138. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +3 -1
  139. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +5 -2
  140. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +3 -1
  141. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +3 -1
  142. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +3 -1
  143. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +3 -1
  144. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +3 -1
  145. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +3 -1
  146. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +3 -1
  147. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +3 -1
  148. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +3 -1
  149. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +3 -1
  150. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +3 -1
  151. package/dist/dist-esm/react-components/src/permissions/PermissionsProvider.d.ts +1 -1
  152. package/dist/dist-esm/react-components/src/permissions/PermissionsProvider.js.map +1 -1
  153. package/dist/dist-esm/react-components/src/theming/icons.d.ts +5 -1
  154. package/dist/dist-esm/react-components/src/theming/icons.js +18 -4
  155. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  156. package/dist/dist-esm/react-components/src/types/CaptionsAvailableLanguageStrings.d.ts +48 -0
  157. package/dist/dist-esm/react-components/src/types/CaptionsAvailableLanguageStrings.js +4 -0
  158. package/dist/dist-esm/react-components/src/types/CaptionsAvailableLanguageStrings.js.map +1 -0
  159. package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +21 -1
  160. package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
  161. package/dist/dist-esm/react-components/src/types/index.d.ts +1 -0
  162. package/dist/dist-esm/react-components/src/types/index.js +1 -0
  163. package/dist/dist-esm/react-components/src/types/index.js.map +1 -1
  164. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +2 -9
  165. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  166. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +65 -0
  167. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  168. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +13 -4
  169. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +67 -30
  170. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  171. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +43 -32
  172. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  173. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +1 -0
  174. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  175. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +95 -19
  176. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  177. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -1
  178. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  179. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js +3 -3
  180. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js.map +1 -1
  181. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.d.ts +5 -6
  182. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js +1 -3
  183. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js.map +1 -1
  184. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +9 -3
  185. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js +3 -1
  186. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js.map +1 -1
  187. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.d.ts +1 -1
  188. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js.map +1 -1
  189. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +1 -1
  190. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
  191. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.d.ts +1 -1
  192. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js.map +1 -1
  193. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +1 -1
  194. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js.map +1 -1
  195. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/ScreenShare.d.ts +1 -1
  196. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/ScreenShare.js.map +1 -1
  197. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +13 -9
  198. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  199. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +3 -3
  200. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  201. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.d.ts +17 -0
  202. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +41 -0
  203. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  204. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.d.ts +5 -1
  205. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +20 -0
  206. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
  207. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallControls.styles.js.map +1 -1
  208. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LobbyTile.styles.js +4 -4
  209. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LobbyTile.styles.js.map +1 -1
  210. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.d.ts +20 -0
  211. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.js +21 -1
  212. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/LocalPreview.styles.js.map +1 -1
  213. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts +5 -87
  214. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.js.map +1 -1
  215. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  216. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +15 -75
  217. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +11 -15
  218. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  219. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +12 -0
  220. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  221. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +17 -5
  222. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +51 -17
  223. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  224. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +24 -14
  225. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  226. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +5 -4
  227. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +15 -9
  228. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  229. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +4 -0
  230. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +6 -0
  231. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
  232. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/parseTeamsUrl.js +4 -0
  233. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/parseTeamsUrl.js.map +1 -1
  234. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts +1 -1
  235. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.js.map +1 -1
  236. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -1
  237. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  238. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +19 -2
  239. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +68 -6
  240. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +4 -0
  242. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  243. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +1 -0
  244. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
  245. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.d.ts +6 -0
  246. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +60 -0
  247. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -0
  248. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.d.ts +12 -0
  249. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js +107 -0
  250. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js.map +1 -0
  251. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.d.ts +7 -0
  252. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.js +38 -0
  253. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.js.map +1 -0
  254. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +30 -0
  255. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +286 -0
  256. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -0
  257. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common/ControlBar}/CustomButton.d.ts +19 -16
  258. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common/ControlBar}/CustomButton.js +4 -4
  259. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js.map +1 -0
  260. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite/components → common/ControlBar}/DesktopMoreButton.d.ts +4 -2
  261. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +193 -0
  262. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -0
  263. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common/ControlBar}/PeopleButton.d.ts +1 -1
  264. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common/ControlBar}/PeopleButton.js +3 -3
  265. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.js.map +1 -0
  266. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite/components → common/Drawer}/MoreDrawer.d.ts +15 -2
  267. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite/components → common/Drawer}/MoreDrawer.js +109 -5
  268. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -0
  269. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.styles.d.ts +6 -0
  270. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.styles.js +24 -0
  271. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.styles.js.map +1 -0
  272. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common/Drawer}/PreparedMoreDrawer.d.ts +3 -2
  273. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js +26 -0
  274. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +1 -0
  275. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.d.ts +20 -0
  276. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.js +55 -0
  277. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.js.map +1 -0
  278. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.styles.d.ts +7 -0
  279. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.styles.js +25 -0
  280. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageDrawer.styles.js.map +1 -0
  281. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.js +1 -1
  282. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.js.map +1 -1
  283. package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +9 -0
  284. package/dist/dist-esm/react-composites/src/composites/common/constants.js +11 -0
  285. package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -0
  286. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +7 -2
  287. package/dist/dist-esm/react-composites/src/composites/common/icons.js +4 -10
  288. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  289. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +165 -0
  290. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js +4 -0
  291. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -0
  292. package/dist/dist-esm/react-composites/src/composites/common/utils.d.ts +4 -0
  293. package/dist/dist-esm/react-composites/src/composites/common/utils.js +4 -0
  294. package/dist/dist-esm/react-composites/src/composites/common/utils.js.map +1 -1
  295. package/dist/dist-esm/react-composites/src/composites/index.d.ts +3 -0
  296. package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
  297. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +66 -1
  298. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +66 -1
  299. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +66 -1
  300. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +66 -1
  301. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +66 -1
  302. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +66 -1
  303. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +66 -1
  304. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +66 -1
  305. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +66 -1
  306. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +66 -1
  307. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +66 -1
  308. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +66 -1
  309. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +66 -1
  310. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +66 -1
  311. package/package.json +14 -15
  312. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.d.ts +0 -29
  313. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.js +0 -54
  314. package/dist/dist-esm/calling-stateful-client/src/LocalVideoStreamVideoEffectsSubscriber.js.map +0 -1
  315. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +0 -13
  316. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +0 -35
  317. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +0 -1
  318. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts +0 -28
  319. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +0 -194
  320. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +0 -1
  321. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js.map +0 -1
  322. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PeopleButton.js.map +0 -1
  323. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.js +0 -22
  324. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.js.map +0 -1
  325. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js +0 -86
  326. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js.map +0 -1
  327. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +0 -1
  328. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +0 -11
  329. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +0 -19
  330. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +0 -1
@@ -52,6 +52,18 @@ export interface CallWithChatCompositeStrings {
52
52
  * Only used with `mobileView` set to `true`.
53
53
  */
54
54
  moreDrawerSpeakerMenuTitle: string;
55
+ /**
56
+ * Title for the captions sub-menu in more button drawer.
57
+ *
58
+ * Only used with `mobileView` set to `true`.
59
+ */
60
+ moreDrawerCaptionsMenuTitle: string;
61
+ /**
62
+ * Title for the spoken language sub-menu in more button drawer.
63
+ *
64
+ * Only used with `mobileView` set to `true`.
65
+ */
66
+ moreDrawerSpokenLanguageMenuTitle: string;
55
67
  /**
56
68
  * {@Link CallWithChatComposite} control bar More button label
57
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Strings.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallWithChatComposite/Strings.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Strings used by the {@link CallWithChatComposite} directly.\n *\n * This strings are in addition to those used by the components from the component library.\n *\n * @public\n */\nexport interface CallWithChatCompositeStrings {\n /**\n * {@link CallWithChatComposite} control bar People button label\n */\n peopleButtonLabel: string;\n /**\n * {@link CallWithChatComposite} control bar People button ToolTipContent\n */\n peopleButtonTooltipOpen: string;\n /**\n * {@link CallWithChatComposite} control bar People button ToolTipContent\n */\n peopleButtonTooltipClose: string;\n /**\n * {@link CallWithChatComposite} control bar Chat button label.\n */\n chatButtonLabel: string;\n /**\n * {@Link CallWithChatComposite} control bar Chat button ToolTipContent.\n */\n chatButtonTooltipOpen: string;\n /**\n * {@Link CallWithChatComposite} control bar Chat button ToolTipContent.\n */\n chatButtonTooltipClose: string;\n /**\n * {@link CallWithChatComposite} control bar Chat button enhanced tooltip string.\n */\n chatButtonTooltipClosedWithMessageCount: string;\n /**\n * Title for the audio device selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true` and when no speakers are available.\n */\n moreDrawerAudioDeviceMenuTitle?: string;\n /**\n * Title for the microphone selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true` and when speakers are available.\n */\n moreDrawerMicrophoneMenuTitle: string;\n /**\n * Title for the speaker selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true`.\n */\n moreDrawerSpeakerMenuTitle: string;\n /**\n * {@Link CallWithChatComposite} control bar More button label\n */\n moreDrawerButtonLabel: string;\n /**\n * {@Link CallWithChatComposite} control bar More button tooltip content\n */\n moreDrawerButtonTooltip: string;\n /**\n * Side pane People section Title.\n */\n peoplePaneTitle: string;\n /**\n * Side pane People section subheader.\n */\n peoplePaneSubTitle: string;\n /**\n * Side pane Chat screen title.\n */\n chatPaneTitle: string;\n /**\n * New Message label for chat button with notification icon component.\n */\n chatButtonNewMessageNotificationLabel: string;\n /**\n * Aria label for the picture in picture in picture tile that.\n * This feature currently only shows on mobileView when the chat or people pane is expanded.\n * @remarks\n * This component displays the local and most-dominant remote participant and when clicked\n * returns the user to the call screen.\n */\n pictureInPictureTileAriaLabel: string;\n /**\n * Label for menu item to remove participant\n */\n removeMenuLabel: string;\n /**\n * Label for button to copy invite link\n */\n copyInviteLinkButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for button to open dialpad\n */\n openDialpadButtonLabel: string;\n /**\n * Label for SidePaneHeader dismiss button\n */\n dismissSidePaneButtonLabel?: string;\n /**\n * Aria Description string for return to call button\n */\n returnToCallButtonAriaDescription?: string;\n /**\n * Aria label string for return to call back button\n */\n returnToCallButtonAriaLabel?: string;\n\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for add people dropdown\n */\n peoplePaneAddPeopleButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for button to start a call\n */\n dialpadStartCallButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Title for dialpad Modal\n */\n dialpadModalTitle: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Aria Label for dialpad Modal\n */\n dialpadModalAriaLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Aria Label for dialpad Modal close button\n */\n dialpadCloseModalButtonAriaLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Placeholder text for dtmf dialpad\n */\n dtmfDialpadPlaceholderText: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for the button to open dtmf dialpad\n */\n openDtmfDialpadLabel: string;\n /**\n * aria label for when the invite link has been actioned\n */\n copyInviteLinkActionedAriaLabel: string;\n}\n"]}
1
+ {"version":3,"file":"Strings.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallWithChatComposite/Strings.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Strings used by the {@link CallWithChatComposite} directly.\n *\n * This strings are in addition to those used by the components from the component library.\n *\n * @public\n */\nexport interface CallWithChatCompositeStrings {\n /**\n * {@link CallWithChatComposite} control bar People button label\n */\n peopleButtonLabel: string;\n /**\n * {@link CallWithChatComposite} control bar People button ToolTipContent\n */\n peopleButtonTooltipOpen: string;\n /**\n * {@link CallWithChatComposite} control bar People button ToolTipContent\n */\n peopleButtonTooltipClose: string;\n /**\n * {@link CallWithChatComposite} control bar Chat button label.\n */\n chatButtonLabel: string;\n /**\n * {@Link CallWithChatComposite} control bar Chat button ToolTipContent.\n */\n chatButtonTooltipOpen: string;\n /**\n * {@Link CallWithChatComposite} control bar Chat button ToolTipContent.\n */\n chatButtonTooltipClose: string;\n /**\n * {@link CallWithChatComposite} control bar Chat button enhanced tooltip string.\n */\n chatButtonTooltipClosedWithMessageCount: string;\n /**\n * Title for the audio device selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true` and when no speakers are available.\n */\n moreDrawerAudioDeviceMenuTitle?: string;\n /**\n * Title for the microphone selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true` and when speakers are available.\n */\n moreDrawerMicrophoneMenuTitle: string;\n /**\n * Title for the speaker selection sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true`.\n */\n moreDrawerSpeakerMenuTitle: string;\n /* @conditional-compile-remove(close-captions) */\n /**\n * Title for the captions sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true`.\n */\n moreDrawerCaptionsMenuTitle: string;\n /* @conditional-compile-remove(close-captions) */\n /**\n * Title for the spoken language sub-menu in more button drawer.\n *\n * Only used with `mobileView` set to `true`.\n */\n moreDrawerSpokenLanguageMenuTitle: string;\n /**\n * {@Link CallWithChatComposite} control bar More button label\n */\n moreDrawerButtonLabel: string;\n /**\n * {@Link CallWithChatComposite} control bar More button tooltip content\n */\n moreDrawerButtonTooltip: string;\n /**\n * Side pane People section Title.\n */\n peoplePaneTitle: string;\n /**\n * Side pane People section subheader.\n */\n peoplePaneSubTitle: string;\n /**\n * Side pane Chat screen title.\n */\n chatPaneTitle: string;\n /**\n * New Message label for chat button with notification icon component.\n */\n chatButtonNewMessageNotificationLabel: string;\n /**\n * Aria label for the picture in picture in picture tile that.\n * This feature currently only shows on mobileView when the chat or people pane is expanded.\n * @remarks\n * This component displays the local and most-dominant remote participant and when clicked\n * returns the user to the call screen.\n */\n pictureInPictureTileAriaLabel: string;\n /**\n * Label for menu item to remove participant\n */\n removeMenuLabel: string;\n /**\n * Label for button to copy invite link\n */\n copyInviteLinkButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for button to open dialpad\n */\n openDialpadButtonLabel: string;\n /**\n * Label for SidePaneHeader dismiss button\n */\n dismissSidePaneButtonLabel?: string;\n /**\n * Aria Description string for return to call button\n */\n returnToCallButtonAriaDescription?: string;\n /**\n * Aria label string for return to call back button\n */\n returnToCallButtonAriaLabel?: string;\n\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for add people dropdown\n */\n peoplePaneAddPeopleButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for button to start a call\n */\n dialpadStartCallButtonLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Title for dialpad Modal\n */\n dialpadModalTitle: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Aria Label for dialpad Modal\n */\n dialpadModalAriaLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Aria Label for dialpad Modal close button\n */\n dialpadCloseModalButtonAriaLabel: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Placeholder text for dtmf dialpad\n */\n dtmfDialpadPlaceholderText: string;\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * Label for the button to open dtmf dialpad\n */\n openDtmfDialpadLabel: string;\n /**\n * aria label for when the invite link has been actioned\n */\n copyInviteLinkActionedAriaLabel: string;\n}\n"]}
@@ -1,12 +1,15 @@
1
1
  import { AudioDeviceInfo, Call, CallAgent, GroupCallLocator, PermissionConstraints, PropertyChangedEvent, TeamsMeetingLinkLocator, StartCallOptions, VideoDeviceInfo } from '@azure/communication-calling';
2
+ import { StartCaptionsOptions } from '@azure/communication-calling';
2
3
  import { AddPhoneNumberOptions, DtmfTone } from '@azure/communication-calling';
3
4
  import { CreateVideoStreamViewResult, VideoStreamOptions } from "../../../../../react-components/src";
5
+ import { AttachmentDownloadResult } from "../../../../../react-components/src";
4
6
  import { FileMetadata } from "../../../../../react-components/src";
5
7
  import { ParticipantsJoinedListener, ParticipantsLeftListener, IsMutedChangedListener, CallIdChangedListener, IsLocalScreenSharingActiveChangedListener, DisplayNameChangedListener, IsSpeakingChangedListener, CallAdapter, CallEndedListener } from '../../CallComposite';
6
8
  import { MessageReceivedListener, MessageReadListener, ChatAdapter, ParticipantsRemovedListener, ParticipantsAddedListener } from '../../ChatComposite';
7
9
  import { FileUploadManager } from '../../ChatComposite';
8
10
  import { CallWithChatAdapter } from './CallWithChatAdapter';
9
11
  import { CallWithChatAdapterState } from '../state/CallWithChatAdapterState';
12
+ import { AzureCommunicationChatAdapterOptions } from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';
10
13
  import { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';
11
14
  import { CommunicationIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';
12
15
  import { AdapterError } from '../../common/adapters';
@@ -16,7 +19,7 @@ import { StatefulCallClient } from "../../../../../calling-stateful-client/src";
16
19
  import { StatefulChatClient } from "../../../../../chat-stateful-client/src";
17
20
  import { ChatThreadClient } from '@azure/communication-chat';
18
21
  import { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';
19
- import { BackgroundBlurConfig, BackgroundReplacementConfig } from '@azure/communication-calling-effects';
22
+ import { IsCaptionsActiveChangedListener, CaptionsReceivedListener } from '../../CallComposite/adapter/CallAdapter';
20
23
  /**
21
24
  * CallWithChat adapter backed by Azure Communication Services.
22
25
  * Created for easy use with the {@link CallWithChatComposite}.
@@ -100,15 +103,19 @@ export declare class AzureCommunicationCallWithChatAdapter implements CallWithCh
100
103
  updateFileUploadProgress: (id: string, progress: number) => void;
101
104
  updateFileUploadErrorMessage: (id: string, errorMessage: string) => void;
102
105
  updateFileUploadMetadata: (id: string, metadata: FileMetadata) => void;
106
+ downloadAttachments(options: {
107
+ attachmentUrls: string[];
108
+ }): Promise<AttachmentDownloadResult[]>;
103
109
  holdCall(): Promise<void>;
104
110
  resumeCall(): Promise<void>;
105
111
  addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
106
112
  addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
107
113
  sendDtmfTone(dtmfTone: DtmfTone): Promise<void>;
108
114
  allowUnsupportedBrowserVersion(): void;
109
- blurVideoBackground(backgroundBlurConfig?: BackgroundBlurConfig): Promise<void>;
110
- replaceVideoBackground(backgroundReplacementConfig: BackgroundReplacementConfig): Promise<void>;
111
- stopVideoBackgroundEffect(): Promise<void>;
115
+ startCaptions(options?: StartCaptionsOptions): Promise<void>;
116
+ stopCaptions(): Promise<void>;
117
+ setCaptionLanguage(language: string): Promise<void>;
118
+ setSpokenLanguage(language: string): Promise<void>;
112
119
  on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;
113
120
  on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;
114
121
  on(event: 'callEnded', listener: CallEndedListener): void;
@@ -126,6 +133,8 @@ export declare class AzureCommunicationCallWithChatAdapter implements CallWithCh
126
133
  on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
127
134
  on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
128
135
  on(event: 'chatError', listener: (e: AdapterError) => void): void;
136
+ on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
137
+ on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
129
138
  off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;
130
139
  off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;
131
140
  off(event: 'callEnded', listener: CallEndedListener): void;
@@ -143,6 +152,8 @@ export declare class AzureCommunicationCallWithChatAdapter implements CallWithCh
143
152
  off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;
144
153
  off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;
145
154
  off(event: 'chatError', listener: (e: AdapterError) => void): void;
155
+ off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
156
+ off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
146
157
  }
147
158
  /**
148
159
  * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread.
@@ -202,6 +213,7 @@ export declare type AzureCommunicationCallWithChatAdapterFromClientArgs = {
202
213
  callClient: StatefulCallClient;
203
214
  chatClient: StatefulChatClient;
204
215
  chatThreadClient: ChatThreadClient;
216
+ options?: AzureCommunicationChatAdapterOptions;
205
217
  };
206
218
  /**
207
219
  * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}.
@@ -211,7 +223,7 @@ export declare type AzureCommunicationCallWithChatAdapterFromClientArgs = {
211
223
  *
212
224
  * @public
213
225
  */
214
- export declare const createAzureCommunicationCallWithChatAdapterFromClients: ({ callClient, callAgent, callLocator, chatClient, chatThreadClient }: AzureCommunicationCallWithChatAdapterFromClientArgs) => Promise<CallWithChatAdapter>;
226
+ export declare const createAzureCommunicationCallWithChatAdapterFromClients: ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, options }: AzureCommunicationCallWithChatAdapterFromClientArgs) => Promise<CallWithChatAdapter>;
215
227
  /**
216
228
  * Create a {@link CallWithChatAdapter} from the underlying adapters.
217
229
  *
@@ -145,6 +145,8 @@ export class AzureCommunicationCallWithChatAdapter {
145
145
  this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);
146
146
  /* @conditional-compile-remove(file-sharing) */
147
147
  this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);
148
+ /* @conditional-compile-remove(teams-inline-images) */
149
+ this.downloadAttachments = this.downloadAttachments.bind(this);
148
150
  /* @conditional-compile-remove(PSTN-calls) */
149
151
  this.holdCall.bind(this);
150
152
  /* @conditional-compile-remove(PSTN-calls) */
@@ -155,12 +157,12 @@ export class AzureCommunicationCallWithChatAdapter {
155
157
  this.sendDtmfTone.bind(this);
156
158
  /* @conditional-compile-remove(unsupported-browser) */
157
159
  this.allowUnsupportedBrowserVersion.bind(this);
158
- /* @conditional-compile-remove(video-background-effects) */
159
- this.blurVideoBackground.bind(this);
160
- /* @conditional-compile-remove(video-background-effects) */
161
- this.replaceVideoBackground.bind(this);
162
- /* @conditional-compile-remove(video-background-effects) */
163
- this.stopVideoBackgroundEffect.bind(this);
160
+ /* @conditional-compile-remove(close-captions) */ {
161
+ this.startCaptions.bind(this);
162
+ this.stopCaptions.bind(this);
163
+ this.setSpokenLanguage.bind(this);
164
+ this.setCaptionLanguage.bind(this);
165
+ }
164
166
  }
165
167
  /** Join existing Call. */
166
168
  joinCall(microphoneOn) {
@@ -344,6 +346,12 @@ export class AzureCommunicationCallWithChatAdapter {
344
346
  return yield this.chatAdapter.deleteMessage(messageId);
345
347
  });
346
348
  }
349
+ /* @conditional-compile-remove(teams-inline-images) */
350
+ downloadAttachments(options) {
351
+ return __awaiter(this, void 0, void 0, function* () {
352
+ return yield this.chatAdapter.downloadAttachments(options);
353
+ });
354
+ }
347
355
  /* @conditional-compile-remove(PSTN-calls) */
348
356
  holdCall() {
349
357
  return __awaiter(this, void 0, void 0, function* () {
@@ -377,22 +385,28 @@ export class AzureCommunicationCallWithChatAdapter {
377
385
  allowUnsupportedBrowserVersion() {
378
386
  return this.callAdapter.allowUnsupportedBrowserVersion();
379
387
  }
380
- /* @conditional-compile-remove(video-background-effects) */
381
- blurVideoBackground(backgroundBlurConfig) {
388
+ /* @conditional-compile-remove(close-captions) */
389
+ startCaptions(options) {
382
390
  return __awaiter(this, void 0, void 0, function* () {
383
- yield this.callAdapter.blurVideoBackground(backgroundBlurConfig);
391
+ yield this.callAdapter.startCaptions(options);
384
392
  });
385
393
  }
386
- /* @conditional-compile-remove(video-background-effects) */
387
- replaceVideoBackground(backgroundReplacementConfig) {
394
+ /* @conditional-compile-remove(close-captions) */
395
+ stopCaptions() {
388
396
  return __awaiter(this, void 0, void 0, function* () {
389
- yield this.callAdapter.replaceVideoBackground(backgroundReplacementConfig);
397
+ yield this.callAdapter.stopCaptions();
390
398
  });
391
399
  }
392
- /* @conditional-compile-remove(video-background-effects) */
393
- stopVideoBackgroundEffect() {
400
+ /* @conditional-compile-remove(close-captions) */
401
+ setCaptionLanguage(language) {
394
402
  return __awaiter(this, void 0, void 0, function* () {
395
- return yield this.callAdapter.stopVideoBackgroundEffect();
403
+ yield this.callAdapter.setCaptionLanguage(language);
404
+ });
405
+ }
406
+ /* @conditional-compile-remove(close-captions) */
407
+ setSpokenLanguage(language) {
408
+ return __awaiter(this, void 0, void 0, function* () {
409
+ yield this.callAdapter.setSpokenLanguage(language);
396
410
  });
397
411
  }
398
412
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -428,6 +442,14 @@ export class AzureCommunicationCallWithChatAdapter {
428
442
  case 'selectedSpeakerChanged':
429
443
  this.callAdapter.on('selectedSpeakerChanged', listener);
430
444
  break;
445
+ /* @conditional-compile-remove(close-captions) */
446
+ case 'captionsReceived':
447
+ this.callAdapter.on('captionsReceived', listener);
448
+ break;
449
+ /* @conditional-compile-remove(close-captions) */
450
+ case 'isCaptionsActiveChanged':
451
+ this.callAdapter.on('isCaptionsActiveChanged', listener);
452
+ break;
431
453
  case 'messageReceived':
432
454
  this.chatAdapter.on('messageReceived', listener);
433
455
  break;
@@ -486,6 +508,14 @@ export class AzureCommunicationCallWithChatAdapter {
486
508
  case 'selectedSpeakerChanged':
487
509
  this.callAdapter.off('selectedSpeakerChanged', listener);
488
510
  break;
511
+ /* @conditional-compile-remove(close-captions) */
512
+ case 'captionsReceived':
513
+ this.callAdapter.off('captionsReceived', listener);
514
+ break;
515
+ /* @conditional-compile-remove(close-captions) */
516
+ case 'isCaptionsActiveChanged':
517
+ this.callAdapter.off('isCaptionsActiveChanged', listener);
518
+ break;
489
519
  case 'messageReceived':
490
520
  this.chatAdapter.off('messageReceived', listener);
491
521
  break;
@@ -662,9 +692,13 @@ beforeDispose) => {
662
692
  *
663
693
  * @public
664
694
  */
665
- export const createAzureCommunicationCallWithChatAdapterFromClients = ({ callClient, callAgent, callLocator, chatClient, chatThreadClient }) => __awaiter(void 0, void 0, void 0, function* () {
695
+ export const createAzureCommunicationCallWithChatAdapterFromClients = ({ callClient, callAgent, callLocator, chatClient, chatThreadClient,
696
+ /* @conditional-compile-remove(teams-inline-images) */
697
+ options }) => __awaiter(void 0, void 0, void 0, function* () {
666
698
  const createCallAdapterPromise = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator);
667
- const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);
699
+ const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient,
700
+ /* @conditional-compile-remove(teams-inline-images) */
701
+ options);
668
702
  const [callAdapter, chatAdapter] = yield Promise.all([createCallAdapterPromise, createChatAdapterPromise]);
669
703
  return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);
670
704
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AzureCommunicationCallWithChatAdapter.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/* eslint-disable @typescript-eslint/no-unused-vars */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n\nimport {\n AudioDeviceInfo,\n Call,\n CallAgent,\n GroupCallLocator,\n PermissionConstraints,\n PropertyChangedEvent,\n TeamsMeetingLinkLocator,\n StartCallOptions,\n VideoDeviceInfo\n} from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions, DtmfTone } from '@azure/communication-calling';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing) */\nimport { FileMetadata } from '@internal/react-components';\nimport {\n ParticipantsJoinedListener,\n ParticipantsLeftListener,\n IsMutedChangedListener,\n CallIdChangedListener,\n IsLocalScreenSharingActiveChangedListener,\n DisplayNameChangedListener,\n IsSpeakingChangedListener,\n CallAdapter,\n CallAdapterState,\n createAzureCommunicationCallAdapter,\n CallEndedListener\n} from '../../CallComposite';\nimport {\n MessageReceivedListener,\n MessageReadListener,\n ChatAdapter,\n ChatAdapterState,\n ParticipantsRemovedListener,\n ParticipantsAddedListener\n} from '../../ChatComposite';\n/* @conditional-compile-remove(file-sharing) */\nimport { FileUploadManager } from '../../ChatComposite';\nimport { CallWithChatAdapter, CallWithChatEvent } from './CallWithChatAdapter';\nimport {\n callWithChatAdapterStateFromBackingStates,\n CallWithChatAdapterState,\n mergeCallAdapterStateIntoCallWithChatAdapterState,\n mergeChatAdapterStateIntoCallWithChatAdapterState\n} from '../state/CallWithChatAdapterState';\nimport {\n createAzureCommunicationChatAdapter,\n createAzureCommunicationChatAdapterFromClient\n} from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';\nimport { EventEmitter } from 'events';\nimport { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(PSTN-calls) */\nimport {\n CommunicationIdentifier,\n isCommunicationUserIdentifier,\n PhoneNumberIdentifier\n} from '@azure/communication-common';\nimport { getChatThreadFromTeamsLink } from './parseTeamsUrl';\nimport { AdapterError } from '../../common/adapters';\n\n/* @conditional-compile-remove(teams-adhoc-call) */\nimport { CallParticipantsLocator } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\n\nimport {\n CallAdapterLocator,\n createAzureCommunicationCallAdapterFromClient\n} from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { StatefulCallClient } from '@internal/calling-stateful-client';\nimport { StatefulChatClient } from '@internal/chat-stateful-client';\nimport { ChatThreadClient } from '@azure/communication-chat';\nimport { useEffect, useRef, useState } from 'react';\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(rooms) */\nimport { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\n/* @conditional-compile-remove(video-background-effects) */\nimport { BackgroundBlurConfig, BackgroundReplacementConfig } from '@azure/communication-calling-effects';\n\ntype CallWithChatAdapterStateChangedHandler = (newState: CallWithChatAdapterState) => void;\n\n/** Context of Call with Chat, which is a centralized context for all state updates */\nclass CallWithChatContext {\n private emitter = new EventEmitter();\n private state: CallWithChatAdapterState;\n\n constructor(clientState: CallWithChatAdapterState, maxListeners = 50) {\n this.state = clientState;\n this.emitter.setMaxListeners(maxListeners);\n }\n\n public onStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.on('stateChanged', handler);\n }\n\n public offStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.off('stateChanged', handler);\n }\n\n public setState(state: CallWithChatAdapterState): void {\n this.state = state;\n this.emitter.emit('stateChanged', this.state);\n }\n\n public getState(): CallWithChatAdapterState {\n return this.state;\n }\n\n public updateClientState(clientState: CallWithChatAdapterState): void {\n this.setState(clientState);\n }\n\n public updateClientStateWithChatState(chatAdapterState: ChatAdapterState): void {\n this.updateClientState(mergeChatAdapterStateIntoCallWithChatAdapterState(this.state, chatAdapterState));\n }\n\n public updateClientStateWithCallState(callAdapterState: CallAdapterState): void {\n this.updateClientState(mergeCallAdapterStateIntoCallWithChatAdapterState(this.state, callAdapterState));\n }\n}\n\n/**\n * CallWithChat adapter backed by Azure Communication Services.\n * Created for easy use with the {@link CallWithChatComposite}.\n */\nexport class AzureCommunicationCallWithChatAdapter implements CallWithChatAdapter {\n private callAdapter: CallAdapter;\n private chatAdapter: ChatAdapter;\n private context: CallWithChatContext;\n private onChatStateChange: (newChatAdapterState: ChatAdapterState) => void;\n private onCallStateChange: (newChatAdapterState: CallAdapterState) => void;\n\n constructor(callAdapter: CallAdapter, chatAdapter: ChatAdapter) {\n this.bindPublicMethods();\n this.callAdapter = callAdapter;\n this.chatAdapter = chatAdapter;\n this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter));\n\n const onChatStateChange = (newChatAdapterState: ChatAdapterState): void => {\n this.context.updateClientStateWithChatState(newChatAdapterState);\n };\n this.chatAdapter.onStateChange(onChatStateChange);\n this.onChatStateChange = onChatStateChange;\n\n const onCallStateChange = (newCallAdapterState: CallAdapterState): void => {\n this.context.updateClientStateWithCallState(newCallAdapterState);\n };\n this.callAdapter.onStateChange(onCallStateChange);\n this.onCallStateChange = onCallStateChange;\n }\n\n private bindPublicMethods(): void {\n this.joinCall.bind(this);\n this.leaveCall.bind(this);\n this.startCall.bind(this);\n this.onStateChange.bind(this);\n this.offStateChange.bind(this);\n this.getState.bind(this);\n this.dispose.bind(this);\n this.setCamera.bind(this);\n this.setMicrophone.bind(this);\n this.setSpeaker.bind(this);\n this.askDevicePermission.bind(this);\n this.queryCameras.bind(this);\n this.queryMicrophones.bind(this);\n this.querySpeakers.bind(this);\n this.startCamera.bind(this);\n this.stopCamera.bind(this);\n this.mute.bind(this);\n this.unmute.bind(this);\n this.startScreenShare.bind(this);\n this.stopScreenShare.bind(this);\n this.removeParticipant.bind(this);\n this.createStreamView.bind(this);\n this.disposeStreamView.bind(this);\n this.fetchInitialData.bind(this);\n this.sendMessage.bind(this);\n this.sendReadReceipt.bind(this);\n this.sendTypingIndicator.bind(this);\n this.loadPreviousChatMessages.bind(this);\n this.updateMessage.bind(this);\n this.deleteMessage.bind(this);\n this.on.bind(this);\n this.off.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.clearFileUploads = this.clearFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.cancelFileUpload = this.cancelFileUpload.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.holdCall.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.resumeCall.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.addParticipant.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.sendDtmfTone.bind(this);\n /* @conditional-compile-remove(unsupported-browser) */\n this.allowUnsupportedBrowserVersion.bind(this);\n /* @conditional-compile-remove(video-background-effects) */\n this.blurVideoBackground.bind(this);\n /* @conditional-compile-remove(video-background-effects) */\n this.replaceVideoBackground.bind(this);\n /* @conditional-compile-remove(video-background-effects) */\n this.stopVideoBackgroundEffect.bind(this);\n }\n\n /** Join existing Call. */\n public joinCall(microphoneOn?: boolean): Call | undefined {\n return this.callAdapter.joinCall(microphoneOn);\n }\n /** Leave current Call. */\n public async leaveCall(forEveryone?: boolean): Promise<void> {\n // Only remove self from the GroupCall. Contoso must manage access to Chat.\n await this.callAdapter.leaveCall(forEveryone);\n }\n /** Start a new Call. */\n public startCall(\n participants: string[] | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier[],\n options?: StartCallOptions\n ): Call | undefined {\n let communicationParticipants = participants;\n /* @conditional-compile-remove(PSTN-calls) */\n communicationParticipants = participants.map(_toCommunicationIdentifier);\n return this.callAdapter.startCall(communicationParticipants, options);\n }\n /**\n * Subscribe to state change events.\n * @param handler - handler to be called when the state changes. This is passed the new state.\n */\n public onStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.onStateChange(handler);\n }\n /**\n * Unsubscribe to state change events.\n * @param handler - handler to be no longer called when state changes.\n */\n public offStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.offStateChange(handler);\n }\n /** Get current Call and Chat state. */\n public getState(): CallWithChatAdapterState {\n return this.context.getState();\n }\n /** Dispose of the current CallWithChatAdapter. */\n public dispose(): void {\n this.chatAdapter.offStateChange(this.onChatStateChange);\n this.callAdapter.offStateChange(this.onCallStateChange);\n\n this.chatAdapter.dispose();\n this.callAdapter.dispose();\n }\n /** Remove a participant from the Call only. */\n public async removeParticipant(\n userId: string | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier\n ): Promise<void> {\n let participant = userId;\n /* @conditional-compile-remove(PSTN-calls) */\n participant = _toCommunicationIdentifier(userId);\n await this.callAdapter.removeParticipant(participant);\n }\n public async setCamera(device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.setCamera(device, options);\n }\n /** Set the microphone to be used in the Call. */\n public async setMicrophone(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setMicrophone(device);\n }\n /** Set the speaker to be used in the Call. */\n public async setSpeaker(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setSpeaker(device);\n }\n public async askDevicePermission(constraints: PermissionConstraints): Promise<void> {\n await this.callAdapter.askDevicePermission(constraints);\n }\n /** Query for available cameras. */\n public async queryCameras(): Promise<VideoDeviceInfo[]> {\n return await this.callAdapter.queryCameras();\n }\n /** Query for available microphones. */\n public async queryMicrophones(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.queryMicrophones();\n }\n /** Query for available speakers. */\n public async querySpeakers(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.querySpeakers();\n }\n /** Start the camera for the user in the Call. */\n public async startCamera(options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.startCamera(options);\n }\n /** Stop the camera for the user in the Call. */\n public async stopCamera(): Promise<void> {\n await this.callAdapter.stopCamera();\n }\n /** Mute the user in the Call. */\n public async mute(): Promise<void> {\n await this.callAdapter.mute();\n }\n /** Unmute the user in the Call. */\n public async unmute(): Promise<void> {\n await this.callAdapter.unmute();\n }\n /** Trigger the user to start screen share. */\n public async startScreenShare(): Promise<void> {\n await this.callAdapter.startScreenShare();\n }\n /** Stop the current active screen share. */\n public async stopScreenShare(): Promise<void> {\n await this.callAdapter.stopScreenShare();\n }\n /** Create a stream view for a remote participants video feed. */\n public async createStreamView(\n remoteUserId?: string,\n options?: VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> {\n return await this.callAdapter.createStreamView(remoteUserId, options);\n }\n /** Dispose of a created stream view of a remote participants video feed. */\n public async disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.disposeStreamView(remoteUserId, options);\n }\n /** Fetch initial Call and Chat data such as chat messages. */\n public async fetchInitialData(): Promise<void> {\n await this.chatAdapter.fetchInitialData();\n }\n /** Send a chat message. */\n public async sendMessage(content: string): Promise<void> {\n await this.chatAdapter.sendMessage(content);\n }\n /** Send a chat read receipt. */\n public async sendReadReceipt(chatMessageId: string): Promise<void> {\n await this.chatAdapter.sendReadReceipt(chatMessageId);\n }\n /** Send an isTyping indicator. */\n public async sendTypingIndicator(): Promise<void> {\n await this.chatAdapter.sendTypingIndicator();\n }\n /** Load previous Chat messages. */\n public async loadPreviousChatMessages(messagesToLoad: number): Promise<boolean> {\n return await this.chatAdapter.loadPreviousChatMessages(messagesToLoad);\n }\n /** Update an existing message. */\n public async updateMessage(messageId: string, content: string, metadata?: Record<string, string>): Promise<void> {\n return await this.chatAdapter.updateMessage(messageId, content, metadata);\n }\n /** Delete an existing message. */\n public async deleteMessage(messageId: string): Promise<void> {\n return await this.chatAdapter.deleteMessage(messageId);\n }\n /* @conditional-compile-remove(file-sharing) */\n public registerActiveFileUploads = (files: File[]): FileUploadManager[] => {\n return this.chatAdapter.registerActiveFileUploads(files);\n };\n /* @conditional-compile-remove(file-sharing) */\n public registerCompletedFileUploads = (metadata: FileMetadata[]): FileUploadManager[] => {\n return this.chatAdapter.registerCompletedFileUploads(metadata);\n };\n /* @conditional-compile-remove(file-sharing) */\n public clearFileUploads = (): void => {\n this.chatAdapter.clearFileUploads();\n };\n /* @conditional-compile-remove(file-sharing) */\n public cancelFileUpload = (id: string): void => {\n this.chatAdapter.cancelFileUpload(id);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadProgress = (id: string, progress: number): void => {\n this.chatAdapter.updateFileUploadProgress(id, progress);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadErrorMessage = (id: string, errorMessage: string): void => {\n this.chatAdapter.updateFileUploadErrorMessage(id, errorMessage);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadMetadata = (id: string, metadata: FileMetadata): void => {\n this.chatAdapter.updateFileUploadMetadata(id, metadata);\n };\n /* @conditional-compile-remove(PSTN-calls) */\n public async holdCall(): Promise<void> {\n return await this.callAdapter.holdCall();\n }\n /* @conditional-compile-remove(PSTN-calls) */\n public async resumeCall(): Promise<void> {\n return await this.callAdapter.resumeCall();\n }\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(\n participant: PhoneNumberIdentifier | CommunicationUserIdentifier,\n options?: AddPhoneNumberOptions\n ): Promise<void> {\n if (isCommunicationUserIdentifier(participant)) {\n return await this.callAdapter.addParticipant(participant);\n } else {\n return await this.callAdapter.addParticipant(participant, options);\n }\n }\n\n /* @conditional-compile-remove(PSTN-calls) */\n public async sendDtmfTone(dtmfTone: DtmfTone): Promise<void> {\n return await this.callAdapter.sendDtmfTone(dtmfTone);\n }\n\n /* @conditional-compile-remove(unsupported-browser) */\n public allowUnsupportedBrowserVersion(): void {\n return this.callAdapter.allowUnsupportedBrowserVersion();\n }\n\n /* @conditional-compile-remove(video-background-effects) */\n public async blurVideoBackground(backgroundBlurConfig?: BackgroundBlurConfig): Promise<void> {\n await this.callAdapter.blurVideoBackground(backgroundBlurConfig);\n }\n /* @conditional-compile-remove(video-background-effects) */\n public async replaceVideoBackground(backgroundReplacementConfig: BackgroundReplacementConfig): Promise<void> {\n await this.callAdapter.replaceVideoBackground(backgroundReplacementConfig);\n }\n\n /* @conditional-compile-remove(video-background-effects) */\n public async stopVideoBackgroundEffect(): Promise<void> {\n return await this.callAdapter.stopVideoBackgroundEffect();\n }\n\n on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n on(event: 'callEnded', listener: CallEndedListener): void;\n on(event: 'callError', listener: (e: AdapterError) => void): void;\n on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n on(event: 'callIdChanged', listener: CallIdChangedListener): void;\n on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n on(event: 'messageReceived', listener: MessageReceivedListener): void;\n on(event: 'messageSent', listener: MessageReceivedListener): void;\n on(event: 'messageRead', listener: MessageReadListener): void;\n on(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n on(event: 'chatError', listener: (e: AdapterError) => void): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event: CallWithChatEvent, listener: any): void {\n switch (event) {\n case 'callParticipantsJoined':\n this.callAdapter.on('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.on('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.on('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.on('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.on('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.on('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.on('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.on('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.on('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.on('selectedSpeakerChanged', listener);\n break;\n case 'messageReceived':\n this.chatAdapter.on('messageReceived', listener);\n break;\n case 'messageSent':\n this.chatAdapter.on('messageSent', listener);\n break;\n case 'messageRead':\n this.chatAdapter.on('messageRead', listener);\n break;\n case 'chatParticipantsAdded':\n this.chatAdapter.on('participantsAdded', listener);\n break;\n case 'chatParticipantsRemoved':\n this.chatAdapter.on('participantsRemoved', listener);\n break;\n case 'callError':\n this.callAdapter.on('error', listener);\n break;\n case 'chatError':\n this.chatAdapter.on('error', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n\n off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n off(event: 'callEnded', listener: CallEndedListener): void;\n off(event: 'callError', listener: (e: AdapterError) => void): void;\n off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n off(event: 'callIdChanged', listener: CallIdChangedListener): void;\n off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n off(event: 'messageReceived', listener: MessageReceivedListener): void;\n off(event: 'messageSent', listener: MessageReceivedListener): void;\n off(event: 'messageRead', listener: MessageReadListener): void;\n off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n off(event: 'chatError', listener: (e: AdapterError) => void): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event: CallWithChatEvent, listener: any): void {\n switch (event) {\n case 'callParticipantsJoined':\n this.callAdapter.off('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.off('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.off('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.off('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.off('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.off('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.off('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.off('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.off('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.off('selectedSpeakerChanged', listener);\n break;\n case 'messageReceived':\n this.chatAdapter.off('messageReceived', listener);\n break;\n case 'messageSent':\n this.chatAdapter.off('messageSent', listener);\n break;\n case 'messageRead':\n this.chatAdapter.off('messageRead', listener);\n break;\n case 'chatParticipantsAdded':\n this.chatAdapter.off('participantsAdded', listener);\n break;\n case 'chatParticipantsRemoved':\n this.chatAdapter.off('participantsRemoved', listener);\n break;\n case 'callError':\n this.callAdapter.off('error', listener);\n break;\n case 'chatError':\n this.chatAdapter.off('error', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread.\n *\n * @public\n */\nexport interface CallAndChatLocator {\n /** Locator used by {@link createAzureCommunicationCallWithChatAdapter} to locate the call to join */\n callLocator: GroupCallLocator | /* @conditional-compile-remove(teams-adhoc-call) */ CallParticipantsLocator;\n /** Chat thread ID used by {@link createAzureCommunicationCallWithChatAdapter} to locate the chat thread to join */\n chatThreadId: string;\n}\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapter}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterArgs = {\n endpoint: string;\n userId: CommunicationUserIdentifier;\n displayName: string;\n credential: CommunicationTokenCredential;\n locator: CallAndChatLocator | TeamsMeetingLinkLocator;\n /* @conditional-compile-remove(PSTN-calls) */\n alternateCallerId?: string;\n /* @conditional-compile-remove(rooms) */\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a CallWithChatAdapter backed by Azure Communication services\n * to plug into the {@link CallWithChatComposite}.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapter = async ({\n userId,\n displayName,\n credential,\n endpoint,\n locator,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterArgs): Promise<CallWithChatAdapter> => {\n const callAdapterLocator = isTeamsMeetingLinkLocator(locator) ? locator : locator.callLocator;\n const createCallAdapterPromise = createAzureCommunicationCallAdapter({\n userId,\n displayName,\n credential,\n locator: callAdapterLocator,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ options: callAdapterOptions\n });\n\n const threadId = isTeamsMeetingLinkLocator(locator)\n ? getChatThreadFromTeamsLink(locator.meetingLink)\n : locator.chatThreadId;\n const createChatAdapterPromise = createAzureCommunicationChatAdapter({\n endpoint,\n userId,\n displayName,\n credential,\n threadId\n });\n\n const [callAdapter, chatAdapter] = await Promise.all([createCallAdapterPromise, createChatAdapterPromise]);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * A custom React hook to simplify the creation of {@link CallWithChatAdapter}.\n *\n * Similar to {@link createAzureCommunicationCallWithChatAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useAzureCommunicationCallWithChatAdapter = (\n /**\n * Arguments to be passed to {@link createAzureCommunicationCallWithChatAdapter}.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n */\n args: Partial<AzureCommunicationCallWithChatAdapterArgs>,\n /**\n * Optional callback to modify the adapter once it is created.\n *\n * If set, must return the modified adapter.\n */\n afterCreate?: (adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>,\n /**\n * Optional callback called before the adapter is disposed.\n *\n * This is useful for clean up tasks, e.g., leaving any ongoing calls.\n */\n beforeDispose?: (adapter: CallWithChatAdapter) => Promise<void>\n): CallWithChatAdapter | undefined => {\n const {\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n } = args;\n\n // State update needed to rerender the parent component when a new adapter is created.\n const [adapter, setAdapter] = useState<CallWithChatAdapter | undefined>(undefined);\n // Ref needed for cleanup to access the old adapter created asynchronously.\n const adapterRef = useRef<CallWithChatAdapter | undefined>(undefined);\n\n const afterCreateRef = useRef<((adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>) | undefined>(\n undefined\n );\n const beforeDisposeRef = useRef<((adapter: CallWithChatAdapter) => Promise<void>) | undefined>(undefined);\n // These refs are updated on *each* render, so that the latest values\n // are used in the `useEffect` closures below.\n // Using a Ref ensures that new values for the callbacks do not trigger the\n // useEffect blocks, and a new adapter creation / distruction is not triggered.\n afterCreateRef.current = afterCreate;\n beforeDisposeRef.current = beforeDispose;\n\n useEffect(\n () => {\n if (!credential || !displayName || !endpoint || !locator || !userId) {\n return;\n }\n (async () => {\n if (adapterRef.current) {\n // Dispose the old adapter when a new one is created.\n //\n // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of\n // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter\n // creation.\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n\n let newAdapter = await createAzureCommunicationCallWithChatAdapter({\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n });\n if (afterCreateRef.current) {\n newAdapter = await afterCreateRef.current(newAdapter);\n }\n adapterRef.current = newAdapter;\n setAdapter(newAdapter);\n })();\n },\n // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.\n [\n adapterRef,\n afterCreateRef,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n beforeDisposeRef,\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n ]\n );\n\n // Dispose any existing adapter when the component unmounts.\n useEffect(() => {\n return () => {\n (async () => {\n if (adapterRef.current) {\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n })();\n };\n }, []);\n\n return adapter;\n};\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapterFromClient}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterFromClientArgs = {\n callLocator: CallAdapterLocator | TeamsMeetingLinkLocator;\n callAgent: CallAgent;\n callClient: StatefulCallClient;\n chatClient: StatefulChatClient;\n chatThreadClient: ChatThreadClient;\n};\n\n/**\n * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulChatClient} and {@link StatefulCallClient}.\n * Consider using {@link createAzureCommunicationCallWithChatAdapter} for a simpler API.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapterFromClients = async ({\n callClient,\n callAgent,\n callLocator,\n chatClient,\n chatThreadClient\n}: AzureCommunicationCallWithChatAdapterFromClientArgs): Promise<CallWithChatAdapter> => {\n const createCallAdapterPromise = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator);\n\n const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);\n const [callAdapter, chatAdapter] = await Promise.all([createCallAdapterPromise, createChatAdapterPromise]);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * Create a {@link CallWithChatAdapter} from the underlying adapters.\n *\n * This is an internal factory function used by browser tests to inject fake adapters for call and chat.\n *\n * @internal\n */\nexport const _createAzureCommunicationCallWithChatAdapterFromAdapters = (\n callAdapter: CallAdapter,\n chatAdapter: ChatAdapter\n): CallWithChatAdapter => new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n\nconst isTeamsMeetingLinkLocator = (\n locator: CallAndChatLocator | TeamsMeetingLinkLocator\n): locator is TeamsMeetingLinkLocator => {\n return 'meetingLink' in locator;\n};\n\"../../../../../react-components/src\"\"../../../../../calling-stateful-client/src\"\"../../../../../chat-stateful-client/src\"\"../../../../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"AzureCommunicationCallWithChatAdapter.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;AAyBlC,OAAO,EAUL,mCAAmC,EAEpC,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,yCAAyC,EAEzC,iDAAiD,EACjD,iDAAiD,EAClD,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mCAAmC,EACnC,6CAA6C,EAC9C,MAAM,2DAA2D,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,6CAA6C;AAC7C,OAAO,EAEL,6BAA6B,EAE9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAM7D,OAAO,EAEL,6CAA6C,EAC9C,MAAM,2DAA2D,CAAC;AAInE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,yCAAgC;AAQrE,sFAAsF;AACtF,MAAM,mBAAmB;IAIvB,YAAY,WAAqC,EAAE,YAAY,GAAG,EAAE;QAH5D,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAInC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAEM,aAAa,CAAC,OAA+C;QAClE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,cAAc,CAAC,OAA+C;QACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEM,QAAQ,CAAC,KAA+B;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,iBAAiB,CAAC,WAAqC;QAC5D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAEM,8BAA8B,CAAC,gBAAkC;QACtE,IAAI,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1G,CAAC;IAEM,8BAA8B,CAAC,gBAAkC;QACtE,IAAI,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1G,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,qCAAqC;IAOhD,YAAY,WAAwB,EAAE,WAAwB;QAqO9D,+CAA+C;QACxC,8BAAyB,GAAG,CAAC,KAAa,EAAuB,EAAE;YACxE,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,+CAA+C;QACxC,iCAA4B,GAAG,CAAC,QAAwB,EAAuB,EAAE;YACtF,OAAO,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC;QACF,+CAA+C;QACxC,qBAAgB,GAAG,GAAS,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC,CAAC;QACF,+CAA+C;QACxC,qBAAgB,GAAG,CAAC,EAAU,EAAQ,EAAE;YAC7C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,+CAA+C;QACxC,6BAAwB,GAAG,CAAC,EAAU,EAAE,QAAgB,EAAQ,EAAE;YACvE,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAC;QACF,+CAA+C;QACxC,iCAA4B,GAAG,CAAC,EAAU,EAAE,YAAoB,EAAQ,EAAE;YAC/E,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC,CAAC;QACF,+CAA+C;QACxC,6BAAwB,GAAG,CAAC,EAAU,EAAE,QAAsB,EAAQ,EAAE;YAC7E,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAC;QA/PA,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,yCAAyC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5G,MAAM,iBAAiB,GAAG,CAAC,mBAAqC,EAAQ,EAAE;YACxE,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,MAAM,iBAAiB,GAAG,CAAC,mBAAqC,EAAQ,EAAE;YACxE,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,+CAA+C;QAC/C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,+CAA+C;QAC/C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,+CAA+C;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,+CAA+C;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,+CAA+C;QAC/C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,+CAA+C;QAC/C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,+CAA+C;QAC/C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,sDAAsD;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,6CAA6C;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,6CAA6C;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,6CAA6C;QAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,6CAA6C;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,sDAAsD;QACtD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,iDAAiD,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpC;IACH,CAAC;IAED,0BAA0B;IACnB,QAAQ,CAAC,YAAsB;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,0BAA0B;IACb,SAAS,CAAC,WAAqB;;YAC1C,2EAA2E;YAC3E,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;KAAA;IACD,wBAAwB;IACjB,SAAS,CACd,YAAgG,EAChG,OAA0B;QAE1B,IAAI,yBAAyB,GAAG,YAAY,CAAC;QAC7C,6CAA6C;QAC7C,yBAAyB,GAAG,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IACD;;;OAGG;IACI,aAAa,CAAC,OAAkD;QACrE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACD;;;OAGG;IACI,cAAc,CAAC,OAAkD;QACtE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,uCAAuC;IAChC,QAAQ;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IACD,kDAAkD;IAC3C,OAAO;QACZ,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAExD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,+CAA+C;IAClC,iBAAiB,CAC5B,MAAsF;;YAEtF,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,6CAA6C;YAC7C,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;KAAA;IACY,SAAS,CAAC,MAAuB,EAAE,OAA4B;;YAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IACD,iDAAiD;IACpC,aAAa,CAAC,MAAuB;;YAChD,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;KAAA;IACD,8CAA8C;IACjC,UAAU,CAAC,MAAuB;;YAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;KAAA;IACY,mBAAmB,CAAC,WAAkC;;YACjE,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;KAAA;IACD,mCAAmC;IACtB,YAAY;;YACvB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAC/C,CAAC;KAAA;IACD,uCAAuC;IAC1B,gBAAgB;;YAC3B,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC;KAAA;IACD,oCAAoC;IACvB,aAAa;;YACxB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAChD,CAAC;KAAA;IACD,iDAAiD;IACpC,WAAW,CAAC,OAA4B;;YACnD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;KAAA;IACD,gDAAgD;IACnC,UAAU;;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC;KAAA;IACD,iCAAiC;IACpB,IAAI;;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;KAAA;IACD,mCAAmC;IACtB,MAAM;;YACjB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC;KAAA;IACD,8CAA8C;IACjC,gBAAgB;;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC;KAAA;IACD,4CAA4C;IAC/B,eAAe;;YAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAC3C,CAAC;KAAA;IACD,iEAAiE;IACpD,gBAAgB,CAC3B,YAAqB,EACrB,OAA4B;;YAE5B,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;KAAA;IACD,4EAA4E;IAC/D,iBAAiB,CAAC,YAAqB,EAAE,OAA4B;;YAChF,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;KAAA;IACD,8DAA8D;IACjD,gBAAgB;;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAC5C,CAAC;KAAA;IACD,2BAA2B;IACd,WAAW,CAAC,OAAe;;YACtC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;KAAA;IACD,gCAAgC;IACnB,eAAe,CAAC,aAAqB;;YAChD,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACxD,CAAC;KAAA;IACD,kCAAkC;IACrB,mBAAmB;;YAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC/C,CAAC;KAAA;IACD,mCAAmC;IACtB,wBAAwB,CAAC,cAAsB;;YAC1D,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC;KAAA;IACD,kCAAkC;IACrB,aAAa,CAAC,SAAiB,EAAE,OAAe,EAAE,QAAiC;;YAC9F,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC;KAAA;IACD,kCAAkC;IACrB,aAAa,CAAC,SAAiB;;YAC1C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;KAAA;IA6BD,sDAAsD;IAChD,mBAAmB,CAAC,OAAqC;;YAC7D,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;KAAA;IACD,6CAA6C;IAChC,QAAQ;;YACnB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC;KAAA;IACD,6CAA6C;IAChC,UAAU;;YACrB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC7C,CAAC;KAAA;IAKD,6CAA6C;IAChC,cAAc,CACzB,WAAgE,EAChE,OAA+B;;YAE/B,IAAI,6BAA6B,CAAC,WAAW,CAAC,EAAE;gBAC9C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;aAC3D;iBAAM;gBACL,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;aACpE;QACH,CAAC;KAAA;IAED,6CAA6C;IAChC,YAAY,CAAC,QAAkB;;YAC1C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;KAAA;IAED,sDAAsD;IAC/C,8BAA8B;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,8BAA8B,EAAE,CAAC;IAC3D,CAAC;IAED,iDAAiD;IACpC,aAAa,CAAC,OAA8B;;YACvD,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;KAAA;IAED,iDAAiD;IACpC,YAAY;;YACvB,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACxC,CAAC;KAAA;IAED,iDAAiD;IACpC,kBAAkB,CAAC,QAAgB;;YAC9C,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;KAAA;IAED,iDAAiD;IACpC,iBAAiB,CAAC,QAAgB;;YAC7C,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;KAAA;IAwBD,8DAA8D;IAC9D,EAAE,CAAC,KAAwB,EAAE,QAAa;QACxC,QAAQ,KAAK,EAAE;YACb,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,sBAAsB;gBACzB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,mCAAmC;gBACtC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC;gBACnE,MAAM;YACR,KAAK,oBAAoB;gBACvB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,mBAAmB;gBACtB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,2BAA2B;gBAC9B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;gBAC3D,MAAM;YACR,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,iDAAiD;YACjD,KAAK,kBAAkB;gBACrB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM;YACR,iDAAiD;YACjD,KAAK,yBAAyB;gBAC5B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,iBAAiB;gBACpB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,yBAAyB;gBAC5B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACvC,MAAM;YAER;gBACE,MAAM,wDAAwD,KAAK,EAAE,CAAC;SACzE;IACH,CAAC;IAwBD,8DAA8D;IAC9D,GAAG,CAAC,KAAwB,EAAE,QAAa;QACzC,QAAQ,KAAgB,EAAE;YACxB,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,sBAAsB;gBACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,mCAAmC;gBACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,oBAAoB;gBACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,mBAAmB;gBACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,2BAA2B;gBAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;gBACzD,MAAM;YACR,iDAAiD;YACjD,KAAK,kBAAkB;gBACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM;YACR,iDAAiD;YACjD,KAAK,yBAAyB;gBAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,iBAAiB;gBACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,yBAAyB;gBAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACxC,MAAM;YACR;gBACE,MAAM,wDAAwD,KAAK,EAAE,CAAC;SACzE;IACH,CAAC;CACF;AA+BD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,CAAO,EAChE,MAAM,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO;AACP,6CAA6C,CAAC,iBAAiB;AAC/D,wCAAwC,CAAC,kBAAkB,EACjB,EAAgC,EAAE;IAC5E,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9F,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;QACnE,MAAM;QACN,WAAW;QACX,UAAU;QACV,OAAO,EAAE,kBAAkB;QAC3B,6CAA6C,CAAC,iBAAiB;QAC/D,wCAAwC,CAAC,OAAO,EAAE,kBAAkB;KACrE,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC;QACjD,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACzB,MAAM,wBAAwB,GAAG,mCAAmC,CAAC;QACnE,QAAQ;QACR,MAAM;QACN,WAAW;QACX,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC3G,OAAO,IAAI,qCAAqC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7E,CAAC,CAAA,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG;AACtD;;;;;GAKG;AACH,IAAwD;AACxD;;;;GAIG;AACH,WAA4E;AAC5E;;;;GAIG;AACH,aAA+D,EAC9B,EAAE;IACnC,MAAM,EACJ,UAAU,EACV,WAAW,EACX,QAAQ,EACR,OAAO,EACP,MAAM;IACN,6CAA6C,CAAC,iBAAiB;IAC/D,wCAAwC,CAAC,kBAAkB,EAC5D,GAAG,IAAI,CAAC;IAET,sFAAsF;IACtF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAkC,SAAS,CAAC,CAAC;IACnF,2EAA2E;IAC3E,MAAM,UAAU,GAAG,MAAM,CAAkC,SAAS,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,MAAM,CAC3B,SAAS,CACV,CAAC;IACF,MAAM,gBAAgB,GAAG,MAAM,CAAgE,SAAS,CAAC,CAAC;IAC1G,qEAAqE;IACrE,8CAA8C;IAC9C,2EAA2E;IAC3E,+EAA+E;IAC/E,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IACrC,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAC;IAEzC,SAAS,CACP,GAAG,EAAE;QACH,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE;YACnE,OAAO;SACR;QACD,CAAC,GAAS,EAAE;YACV,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,qDAAqD;gBACrD,EAAE;gBACF,yGAAyG;gBACzG,oGAAoG;gBACpG,YAAY;gBACZ,IAAI,gBAAgB,CAAC,OAAO,EAAE;oBAC5B,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBACpD;gBACD,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7B,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;aAChC;YAED,IAAI,UAAU,GAAG,MAAM,2CAA2C,CAAC;gBACjE,UAAU;gBACV,WAAW;gBACX,QAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,6CAA6C,CAAC,iBAAiB;gBAC/D,wCAAwC,CAAC,kBAAkB;aAC5D,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC1B,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aACvD;YACD,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;YAChC,UAAU,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC,CAAA,CAAC,EAAE,CAAC;IACP,CAAC;IACD,0FAA0F;IAC1F;QACE,UAAU;QACV,cAAc;QACd,6CAA6C,CAAC,iBAAiB;QAC/D,gBAAgB;QAChB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,OAAO;QACP,MAAM;QACN,wCAAwC,CAAC,kBAAkB;KAC5D,CACF,CAAC;IAEF,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,CAAC,GAAS,EAAE;gBACV,IAAI,UAAU,CAAC,OAAO,EAAE;oBACtB,IAAI,gBAAgB,CAAC,OAAO,EAAE;wBAC5B,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;qBACpD;oBACD,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC7B,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;iBAChC;YACH,CAAC,CAAA,CAAC,EAAE,CAAC;QACP,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAiBF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sDAAsD,GAAG,CAAO,EAC3E,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB;AAChB,sDAAsD;AACtD,OAAO,EAC6C,EAAgC,EAAE;IACtF,MAAM,wBAAwB,GAAG,6CAA6C,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACnH,MAAM,wBAAwB,GAAG,6CAA6C,CAC5E,UAAU,EACV,gBAAgB;IAChB,sDAAsD;IACtD,OAAO,CACR,CAAC;IACF,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC3G,OAAO,IAAI,qCAAqC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7E,CAAC,CAAA,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wDAAwD,GAAG,CACtE,WAAwB,EACxB,WAAwB,EACH,EAAE,CAAC,IAAI,qCAAqC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE9F,MAAM,yBAAyB,GAAG,CAChC,OAAqD,EACjB,EAAE;IACtC,OAAO,aAAa,IAAI,OAAO,CAAC;AAClC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/* eslint-disable @typescript-eslint/no-unused-vars */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n\nimport {\n AudioDeviceInfo,\n Call,\n CallAgent,\n GroupCallLocator,\n PermissionConstraints,\n PropertyChangedEvent,\n TeamsMeetingLinkLocator,\n StartCallOptions,\n VideoDeviceInfo\n} from '@azure/communication-calling';\n/* @conditional-compile-remove(close-captions) */\nimport { StartCaptionsOptions } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions, DtmfTone } from '@azure/communication-calling';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\n/* @conditional-compile-remove(teams-inline-images) */\nimport { AttachmentDownloadResult } from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing) */\nimport { FileMetadata } from '@internal/react-components';\nimport {\n ParticipantsJoinedListener,\n ParticipantsLeftListener,\n IsMutedChangedListener,\n CallIdChangedListener,\n IsLocalScreenSharingActiveChangedListener,\n DisplayNameChangedListener,\n IsSpeakingChangedListener,\n CallAdapter,\n CallAdapterState,\n createAzureCommunicationCallAdapter,\n CallEndedListener\n} from '../../CallComposite';\nimport {\n MessageReceivedListener,\n MessageReadListener,\n ChatAdapter,\n ChatAdapterState,\n ParticipantsRemovedListener,\n ParticipantsAddedListener\n} from '../../ChatComposite';\n/* @conditional-compile-remove(file-sharing) */\nimport { FileUploadManager } from '../../ChatComposite';\nimport { CallWithChatAdapter, CallWithChatEvent } from './CallWithChatAdapter';\nimport {\n callWithChatAdapterStateFromBackingStates,\n CallWithChatAdapterState,\n mergeCallAdapterStateIntoCallWithChatAdapterState,\n mergeChatAdapterStateIntoCallWithChatAdapterState\n} from '../state/CallWithChatAdapterState';\nimport {\n createAzureCommunicationChatAdapter,\n createAzureCommunicationChatAdapterFromClient\n} from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';\n/* @conditional-compile-remove(teams-inline-images) */\nimport { AzureCommunicationChatAdapterOptions } from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';\nimport { EventEmitter } from 'events';\nimport { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(PSTN-calls) */\nimport {\n CommunicationIdentifier,\n isCommunicationUserIdentifier,\n PhoneNumberIdentifier\n} from '@azure/communication-common';\nimport { getChatThreadFromTeamsLink } from './parseTeamsUrl';\nimport { AdapterError } from '../../common/adapters';\n\n/* @conditional-compile-remove(teams-adhoc-call) */\nimport { CallParticipantsLocator } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\n\nimport {\n CallAdapterLocator,\n createAzureCommunicationCallAdapterFromClient\n} from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { StatefulCallClient } from '@internal/calling-stateful-client';\nimport { StatefulChatClient } from '@internal/chat-stateful-client';\nimport { ChatThreadClient } from '@azure/communication-chat';\nimport { useEffect, useRef, useState } from 'react';\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(rooms) */\nimport { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\n/* @conditional-compile-remove(close-captions) */\nimport { IsCaptionsActiveChangedListener, CaptionsReceivedListener } from '../../CallComposite/adapter/CallAdapter';\n\ntype CallWithChatAdapterStateChangedHandler = (newState: CallWithChatAdapterState) => void;\n\n/** Context of Call with Chat, which is a centralized context for all state updates */\nclass CallWithChatContext {\n private emitter = new EventEmitter();\n private state: CallWithChatAdapterState;\n\n constructor(clientState: CallWithChatAdapterState, maxListeners = 50) {\n this.state = clientState;\n this.emitter.setMaxListeners(maxListeners);\n }\n\n public onStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.on('stateChanged', handler);\n }\n\n public offStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.off('stateChanged', handler);\n }\n\n public setState(state: CallWithChatAdapterState): void {\n this.state = state;\n this.emitter.emit('stateChanged', this.state);\n }\n\n public getState(): CallWithChatAdapterState {\n return this.state;\n }\n\n public updateClientState(clientState: CallWithChatAdapterState): void {\n this.setState(clientState);\n }\n\n public updateClientStateWithChatState(chatAdapterState: ChatAdapterState): void {\n this.updateClientState(mergeChatAdapterStateIntoCallWithChatAdapterState(this.state, chatAdapterState));\n }\n\n public updateClientStateWithCallState(callAdapterState: CallAdapterState): void {\n this.updateClientState(mergeCallAdapterStateIntoCallWithChatAdapterState(this.state, callAdapterState));\n }\n}\n\n/**\n * CallWithChat adapter backed by Azure Communication Services.\n * Created for easy use with the {@link CallWithChatComposite}.\n */\nexport class AzureCommunicationCallWithChatAdapter implements CallWithChatAdapter {\n private callAdapter: CallAdapter;\n private chatAdapter: ChatAdapter;\n private context: CallWithChatContext;\n private onChatStateChange: (newChatAdapterState: ChatAdapterState) => void;\n private onCallStateChange: (newChatAdapterState: CallAdapterState) => void;\n\n constructor(callAdapter: CallAdapter, chatAdapter: ChatAdapter) {\n this.bindPublicMethods();\n this.callAdapter = callAdapter;\n this.chatAdapter = chatAdapter;\n this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter, chatAdapter));\n\n const onChatStateChange = (newChatAdapterState: ChatAdapterState): void => {\n this.context.updateClientStateWithChatState(newChatAdapterState);\n };\n this.chatAdapter.onStateChange(onChatStateChange);\n this.onChatStateChange = onChatStateChange;\n\n const onCallStateChange = (newCallAdapterState: CallAdapterState): void => {\n this.context.updateClientStateWithCallState(newCallAdapterState);\n };\n this.callAdapter.onStateChange(onCallStateChange);\n this.onCallStateChange = onCallStateChange;\n }\n\n private bindPublicMethods(): void {\n this.joinCall.bind(this);\n this.leaveCall.bind(this);\n this.startCall.bind(this);\n this.onStateChange.bind(this);\n this.offStateChange.bind(this);\n this.getState.bind(this);\n this.dispose.bind(this);\n this.setCamera.bind(this);\n this.setMicrophone.bind(this);\n this.setSpeaker.bind(this);\n this.askDevicePermission.bind(this);\n this.queryCameras.bind(this);\n this.queryMicrophones.bind(this);\n this.querySpeakers.bind(this);\n this.startCamera.bind(this);\n this.stopCamera.bind(this);\n this.mute.bind(this);\n this.unmute.bind(this);\n this.startScreenShare.bind(this);\n this.stopScreenShare.bind(this);\n this.removeParticipant.bind(this);\n this.createStreamView.bind(this);\n this.disposeStreamView.bind(this);\n this.fetchInitialData.bind(this);\n this.sendMessage.bind(this);\n this.sendReadReceipt.bind(this);\n this.sendTypingIndicator.bind(this);\n this.loadPreviousChatMessages.bind(this);\n this.updateMessage.bind(this);\n this.deleteMessage.bind(this);\n this.on.bind(this);\n this.off.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.registerActiveFileUploads = this.registerActiveFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.registerCompletedFileUploads = this.registerCompletedFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.clearFileUploads = this.clearFileUploads.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.cancelFileUpload = this.cancelFileUpload.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadProgress = this.updateFileUploadProgress.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadErrorMessage = this.updateFileUploadErrorMessage.bind(this);\n /* @conditional-compile-remove(file-sharing) */\n this.updateFileUploadMetadata = this.updateFileUploadMetadata.bind(this);\n /* @conditional-compile-remove(teams-inline-images) */\n this.downloadAttachments = this.downloadAttachments.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.holdCall.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.resumeCall.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.addParticipant.bind(this);\n /* @conditional-compile-remove(PSTN-calls) */\n this.sendDtmfTone.bind(this);\n /* @conditional-compile-remove(unsupported-browser) */\n this.allowUnsupportedBrowserVersion.bind(this);\n /* @conditional-compile-remove(close-captions) */ {\n this.startCaptions.bind(this);\n this.stopCaptions.bind(this);\n this.setSpokenLanguage.bind(this);\n this.setCaptionLanguage.bind(this);\n }\n }\n\n /** Join existing Call. */\n public joinCall(microphoneOn?: boolean): Call | undefined {\n return this.callAdapter.joinCall(microphoneOn);\n }\n /** Leave current Call. */\n public async leaveCall(forEveryone?: boolean): Promise<void> {\n // Only remove self from the GroupCall. Contoso must manage access to Chat.\n await this.callAdapter.leaveCall(forEveryone);\n }\n /** Start a new Call. */\n public startCall(\n participants: string[] | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier[],\n options?: StartCallOptions\n ): Call | undefined {\n let communicationParticipants = participants;\n /* @conditional-compile-remove(PSTN-calls) */\n communicationParticipants = participants.map(_toCommunicationIdentifier);\n return this.callAdapter.startCall(communicationParticipants, options);\n }\n /**\n * Subscribe to state change events.\n * @param handler - handler to be called when the state changes. This is passed the new state.\n */\n public onStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.onStateChange(handler);\n }\n /**\n * Unsubscribe to state change events.\n * @param handler - handler to be no longer called when state changes.\n */\n public offStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.offStateChange(handler);\n }\n /** Get current Call and Chat state. */\n public getState(): CallWithChatAdapterState {\n return this.context.getState();\n }\n /** Dispose of the current CallWithChatAdapter. */\n public dispose(): void {\n this.chatAdapter.offStateChange(this.onChatStateChange);\n this.callAdapter.offStateChange(this.onCallStateChange);\n\n this.chatAdapter.dispose();\n this.callAdapter.dispose();\n }\n /** Remove a participant from the Call only. */\n public async removeParticipant(\n userId: string | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier\n ): Promise<void> {\n let participant = userId;\n /* @conditional-compile-remove(PSTN-calls) */\n participant = _toCommunicationIdentifier(userId);\n await this.callAdapter.removeParticipant(participant);\n }\n public async setCamera(device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.setCamera(device, options);\n }\n /** Set the microphone to be used in the Call. */\n public async setMicrophone(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setMicrophone(device);\n }\n /** Set the speaker to be used in the Call. */\n public async setSpeaker(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setSpeaker(device);\n }\n public async askDevicePermission(constraints: PermissionConstraints): Promise<void> {\n await this.callAdapter.askDevicePermission(constraints);\n }\n /** Query for available cameras. */\n public async queryCameras(): Promise<VideoDeviceInfo[]> {\n return await this.callAdapter.queryCameras();\n }\n /** Query for available microphones. */\n public async queryMicrophones(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.queryMicrophones();\n }\n /** Query for available speakers. */\n public async querySpeakers(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.querySpeakers();\n }\n /** Start the camera for the user in the Call. */\n public async startCamera(options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.startCamera(options);\n }\n /** Stop the camera for the user in the Call. */\n public async stopCamera(): Promise<void> {\n await this.callAdapter.stopCamera();\n }\n /** Mute the user in the Call. */\n public async mute(): Promise<void> {\n await this.callAdapter.mute();\n }\n /** Unmute the user in the Call. */\n public async unmute(): Promise<void> {\n await this.callAdapter.unmute();\n }\n /** Trigger the user to start screen share. */\n public async startScreenShare(): Promise<void> {\n await this.callAdapter.startScreenShare();\n }\n /** Stop the current active screen share. */\n public async stopScreenShare(): Promise<void> {\n await this.callAdapter.stopScreenShare();\n }\n /** Create a stream view for a remote participants video feed. */\n public async createStreamView(\n remoteUserId?: string,\n options?: VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> {\n return await this.callAdapter.createStreamView(remoteUserId, options);\n }\n /** Dispose of a created stream view of a remote participants video feed. */\n public async disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.disposeStreamView(remoteUserId, options);\n }\n /** Fetch initial Call and Chat data such as chat messages. */\n public async fetchInitialData(): Promise<void> {\n await this.chatAdapter.fetchInitialData();\n }\n /** Send a chat message. */\n public async sendMessage(content: string): Promise<void> {\n await this.chatAdapter.sendMessage(content);\n }\n /** Send a chat read receipt. */\n public async sendReadReceipt(chatMessageId: string): Promise<void> {\n await this.chatAdapter.sendReadReceipt(chatMessageId);\n }\n /** Send an isTyping indicator. */\n public async sendTypingIndicator(): Promise<void> {\n await this.chatAdapter.sendTypingIndicator();\n }\n /** Load previous Chat messages. */\n public async loadPreviousChatMessages(messagesToLoad: number): Promise<boolean> {\n return await this.chatAdapter.loadPreviousChatMessages(messagesToLoad);\n }\n /** Update an existing message. */\n public async updateMessage(messageId: string, content: string, metadata?: Record<string, string>): Promise<void> {\n return await this.chatAdapter.updateMessage(messageId, content, metadata);\n }\n /** Delete an existing message. */\n public async deleteMessage(messageId: string): Promise<void> {\n return await this.chatAdapter.deleteMessage(messageId);\n }\n /* @conditional-compile-remove(file-sharing) */\n public registerActiveFileUploads = (files: File[]): FileUploadManager[] => {\n return this.chatAdapter.registerActiveFileUploads(files);\n };\n /* @conditional-compile-remove(file-sharing) */\n public registerCompletedFileUploads = (metadata: FileMetadata[]): FileUploadManager[] => {\n return this.chatAdapter.registerCompletedFileUploads(metadata);\n };\n /* @conditional-compile-remove(file-sharing) */\n public clearFileUploads = (): void => {\n this.chatAdapter.clearFileUploads();\n };\n /* @conditional-compile-remove(file-sharing) */\n public cancelFileUpload = (id: string): void => {\n this.chatAdapter.cancelFileUpload(id);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadProgress = (id: string, progress: number): void => {\n this.chatAdapter.updateFileUploadProgress(id, progress);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadErrorMessage = (id: string, errorMessage: string): void => {\n this.chatAdapter.updateFileUploadErrorMessage(id, errorMessage);\n };\n /* @conditional-compile-remove(file-sharing) */\n public updateFileUploadMetadata = (id: string, metadata: FileMetadata): void => {\n this.chatAdapter.updateFileUploadMetadata(id, metadata);\n };\n /* @conditional-compile-remove(teams-inline-images) */\n async downloadAttachments(options: { attachmentUrls: string[] }): Promise<AttachmentDownloadResult[]> {\n return await this.chatAdapter.downloadAttachments(options);\n }\n /* @conditional-compile-remove(PSTN-calls) */\n public async holdCall(): Promise<void> {\n return await this.callAdapter.holdCall();\n }\n /* @conditional-compile-remove(PSTN-calls) */\n public async resumeCall(): Promise<void> {\n return await this.callAdapter.resumeCall();\n }\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n public async addParticipant(\n participant: PhoneNumberIdentifier | CommunicationUserIdentifier,\n options?: AddPhoneNumberOptions\n ): Promise<void> {\n if (isCommunicationUserIdentifier(participant)) {\n return await this.callAdapter.addParticipant(participant);\n } else {\n return await this.callAdapter.addParticipant(participant, options);\n }\n }\n\n /* @conditional-compile-remove(PSTN-calls) */\n public async sendDtmfTone(dtmfTone: DtmfTone): Promise<void> {\n return await this.callAdapter.sendDtmfTone(dtmfTone);\n }\n\n /* @conditional-compile-remove(unsupported-browser) */\n public allowUnsupportedBrowserVersion(): void {\n return this.callAdapter.allowUnsupportedBrowserVersion();\n }\n\n /* @conditional-compile-remove(close-captions) */\n public async startCaptions(options?: StartCaptionsOptions): Promise<void> {\n await this.callAdapter.startCaptions(options);\n }\n\n /* @conditional-compile-remove(close-captions) */\n public async stopCaptions(): Promise<void> {\n await this.callAdapter.stopCaptions();\n }\n\n /* @conditional-compile-remove(close-captions) */\n public async setCaptionLanguage(language: string): Promise<void> {\n await this.callAdapter.setCaptionLanguage(language);\n }\n\n /* @conditional-compile-remove(close-captions) */\n public async setSpokenLanguage(language: string): Promise<void> {\n await this.callAdapter.setSpokenLanguage(language);\n }\n\n on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n on(event: 'callEnded', listener: CallEndedListener): void;\n on(event: 'callError', listener: (e: AdapterError) => void): void;\n on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n on(event: 'callIdChanged', listener: CallIdChangedListener): void;\n on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n on(event: 'messageReceived', listener: MessageReceivedListener): void;\n on(event: 'messageSent', listener: MessageReceivedListener): void;\n on(event: 'messageRead', listener: MessageReadListener): void;\n on(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n on(event: 'chatError', listener: (e: AdapterError) => void): void;\n /* @conditional-compile-remove(close-captions) */\n on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n /* @conditional-compile-remove(close-captions) */\n on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event: CallWithChatEvent, listener: any): void {\n switch (event) {\n case 'callParticipantsJoined':\n this.callAdapter.on('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.on('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.on('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.on('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.on('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.on('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.on('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.on('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.on('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.on('selectedSpeakerChanged', listener);\n break;\n /* @conditional-compile-remove(close-captions) */\n case 'captionsReceived':\n this.callAdapter.on('captionsReceived', listener);\n break;\n /* @conditional-compile-remove(close-captions) */\n case 'isCaptionsActiveChanged':\n this.callAdapter.on('isCaptionsActiveChanged', listener);\n break;\n case 'messageReceived':\n this.chatAdapter.on('messageReceived', listener);\n break;\n case 'messageSent':\n this.chatAdapter.on('messageSent', listener);\n break;\n case 'messageRead':\n this.chatAdapter.on('messageRead', listener);\n break;\n case 'chatParticipantsAdded':\n this.chatAdapter.on('participantsAdded', listener);\n break;\n case 'chatParticipantsRemoved':\n this.chatAdapter.on('participantsRemoved', listener);\n break;\n case 'callError':\n this.callAdapter.on('error', listener);\n break;\n case 'chatError':\n this.chatAdapter.on('error', listener);\n break;\n\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n\n off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n off(event: 'callEnded', listener: CallEndedListener): void;\n off(event: 'callError', listener: (e: AdapterError) => void): void;\n off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n off(event: 'callIdChanged', listener: CallIdChangedListener): void;\n off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n off(event: 'messageReceived', listener: MessageReceivedListener): void;\n off(event: 'messageSent', listener: MessageReceivedListener): void;\n off(event: 'messageRead', listener: MessageReadListener): void;\n off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n off(event: 'chatError', listener: (e: AdapterError) => void): void;\n /* @conditional-compile-remove(close-captions) */\n off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n /* @conditional-compile-remove(close-captions) */\n off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event: CallWithChatEvent, listener: any): void {\n switch (event as unknown) {\n case 'callParticipantsJoined':\n this.callAdapter.off('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.off('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.off('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.off('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.off('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.off('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.off('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.off('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.off('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.off('selectedSpeakerChanged', listener);\n break;\n /* @conditional-compile-remove(close-captions) */\n case 'captionsReceived':\n this.callAdapter.off('captionsReceived', listener);\n break;\n /* @conditional-compile-remove(close-captions) */\n case 'isCaptionsActiveChanged':\n this.callAdapter.off('isCaptionsActiveChanged', listener);\n break;\n case 'messageReceived':\n this.chatAdapter.off('messageReceived', listener);\n break;\n case 'messageSent':\n this.chatAdapter.off('messageSent', listener);\n break;\n case 'messageRead':\n this.chatAdapter.off('messageRead', listener);\n break;\n case 'chatParticipantsAdded':\n this.chatAdapter.off('participantsAdded', listener);\n break;\n case 'chatParticipantsRemoved':\n this.chatAdapter.off('participantsRemoved', listener);\n break;\n case 'callError':\n this.callAdapter.off('error', listener);\n break;\n case 'chatError':\n this.chatAdapter.off('error', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread.\n *\n * @public\n */\nexport interface CallAndChatLocator {\n /** Locator used by {@link createAzureCommunicationCallWithChatAdapter} to locate the call to join */\n callLocator: GroupCallLocator | /* @conditional-compile-remove(teams-adhoc-call) */ CallParticipantsLocator;\n /** Chat thread ID used by {@link createAzureCommunicationCallWithChatAdapter} to locate the chat thread to join */\n chatThreadId: string;\n}\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapter}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterArgs = {\n endpoint: string;\n userId: CommunicationUserIdentifier;\n displayName: string;\n credential: CommunicationTokenCredential;\n locator: CallAndChatLocator | TeamsMeetingLinkLocator;\n /* @conditional-compile-remove(PSTN-calls) */\n alternateCallerId?: string;\n /* @conditional-compile-remove(rooms) */\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a CallWithChatAdapter backed by Azure Communication services\n * to plug into the {@link CallWithChatComposite}.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapter = async ({\n userId,\n displayName,\n credential,\n endpoint,\n locator,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterArgs): Promise<CallWithChatAdapter> => {\n const callAdapterLocator = isTeamsMeetingLinkLocator(locator) ? locator : locator.callLocator;\n const createCallAdapterPromise = createAzureCommunicationCallAdapter({\n userId,\n displayName,\n credential,\n locator: callAdapterLocator,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ options: callAdapterOptions\n });\n\n const threadId = isTeamsMeetingLinkLocator(locator)\n ? getChatThreadFromTeamsLink(locator.meetingLink)\n : locator.chatThreadId;\n const createChatAdapterPromise = createAzureCommunicationChatAdapter({\n endpoint,\n userId,\n displayName,\n credential,\n threadId\n });\n\n const [callAdapter, chatAdapter] = await Promise.all([createCallAdapterPromise, createChatAdapterPromise]);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * A custom React hook to simplify the creation of {@link CallWithChatAdapter}.\n *\n * Similar to {@link createAzureCommunicationCallWithChatAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useAzureCommunicationCallWithChatAdapter = (\n /**\n * Arguments to be passed to {@link createAzureCommunicationCallWithChatAdapter}.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n */\n args: Partial<AzureCommunicationCallWithChatAdapterArgs>,\n /**\n * Optional callback to modify the adapter once it is created.\n *\n * If set, must return the modified adapter.\n */\n afterCreate?: (adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>,\n /**\n * Optional callback called before the adapter is disposed.\n *\n * This is useful for clean up tasks, e.g., leaving any ongoing calls.\n */\n beforeDispose?: (adapter: CallWithChatAdapter) => Promise<void>\n): CallWithChatAdapter | undefined => {\n const {\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n } = args;\n\n // State update needed to rerender the parent component when a new adapter is created.\n const [adapter, setAdapter] = useState<CallWithChatAdapter | undefined>(undefined);\n // Ref needed for cleanup to access the old adapter created asynchronously.\n const adapterRef = useRef<CallWithChatAdapter | undefined>(undefined);\n\n const afterCreateRef = useRef<((adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>) | undefined>(\n undefined\n );\n const beforeDisposeRef = useRef<((adapter: CallWithChatAdapter) => Promise<void>) | undefined>(undefined);\n // These refs are updated on *each* render, so that the latest values\n // are used in the `useEffect` closures below.\n // Using a Ref ensures that new values for the callbacks do not trigger the\n // useEffect blocks, and a new adapter creation / distruction is not triggered.\n afterCreateRef.current = afterCreate;\n beforeDisposeRef.current = beforeDispose;\n\n useEffect(\n () => {\n if (!credential || !displayName || !endpoint || !locator || !userId) {\n return;\n }\n (async () => {\n if (adapterRef.current) {\n // Dispose the old adapter when a new one is created.\n //\n // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of\n // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter\n // creation.\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n\n let newAdapter = await createAzureCommunicationCallWithChatAdapter({\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n });\n if (afterCreateRef.current) {\n newAdapter = await afterCreateRef.current(newAdapter);\n }\n adapterRef.current = newAdapter;\n setAdapter(newAdapter);\n })();\n },\n // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.\n [\n adapterRef,\n afterCreateRef,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,\n beforeDisposeRef,\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n /* @conditional-compile-remove(rooms) */ callAdapterOptions\n ]\n );\n\n // Dispose any existing adapter when the component unmounts.\n useEffect(() => {\n return () => {\n (async () => {\n if (adapterRef.current) {\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n })();\n };\n }, []);\n\n return adapter;\n};\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapterFromClient}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterFromClientArgs = {\n callLocator: CallAdapterLocator | TeamsMeetingLinkLocator;\n callAgent: CallAgent;\n callClient: StatefulCallClient;\n chatClient: StatefulChatClient;\n chatThreadClient: ChatThreadClient;\n /* @conditional-compile-remove(teams-inline-images) */\n options?: AzureCommunicationChatAdapterOptions;\n};\n\n/**\n * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulChatClient} and {@link StatefulCallClient}.\n * Consider using {@link createAzureCommunicationCallWithChatAdapter} for a simpler API.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapterFromClients = async ({\n callClient,\n callAgent,\n callLocator,\n chatClient,\n chatThreadClient,\n /* @conditional-compile-remove(teams-inline-images) */\n options\n}: AzureCommunicationCallWithChatAdapterFromClientArgs): Promise<CallWithChatAdapter> => {\n const createCallAdapterPromise = createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator);\n const createChatAdapterPromise = createAzureCommunicationChatAdapterFromClient(\n chatClient,\n chatThreadClient,\n /* @conditional-compile-remove(teams-inline-images) */\n options\n );\n const [callAdapter, chatAdapter] = await Promise.all([createCallAdapterPromise, createChatAdapterPromise]);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * Create a {@link CallWithChatAdapter} from the underlying adapters.\n *\n * This is an internal factory function used by browser tests to inject fake adapters for call and chat.\n *\n * @internal\n */\nexport const _createAzureCommunicationCallWithChatAdapterFromAdapters = (\n callAdapter: CallAdapter,\n chatAdapter: ChatAdapter\n): CallWithChatAdapter => new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n\nconst isTeamsMeetingLinkLocator = (\n locator: CallAndChatLocator | TeamsMeetingLinkLocator\n): locator is TeamsMeetingLinkLocator => {\n return 'meetingLink' in locator;\n};\n\"../../../../../react-components/src\"\"../../../../../calling-stateful-client/src\"\"../../../../../chat-stateful-client/src\"\"../../../../../acs-ui-common/src\""]}
@@ -3,14 +3,16 @@ import { MessageReadListener, MessageReceivedListener, MessageSentListener, Part
3
3
  import { CallWithChatAdapterState } from '../state/CallWithChatAdapterState';
4
4
  import type { AdapterError, AdapterState, Disposable } from '../../common/adapters';
5
5
  import { AudioDeviceInfo, Call, PermissionConstraints, PropertyChangedEvent, StartCallOptions, VideoDeviceInfo } from '@azure/communication-calling';
6
+ import { StartCaptionsOptions } from '@azure/communication-calling';
6
7
  import { AddPhoneNumberOptions, DtmfTone } from '@azure/communication-calling';
7
8
  import { CreateVideoStreamViewResult, VideoStreamOptions } from "../../../../../react-components/src";
8
9
  import { SendMessageOptions } from '@azure/communication-chat';
10
+ import { AttachmentDownloadResult } from "../../../../../react-components/src";
9
11
  import { FileMetadata } from "../../../../../react-components/src";
10
12
  import { FileUploadManager } from '../../ChatComposite';
11
13
  import { CommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';
12
14
  import { CommunicationIdentifier } from '@azure/communication-common';
13
- import { BackgroundBlurConfig, BackgroundReplacementConfig } from '@azure/communication-calling-effects';
15
+ import { CaptionsReceivedListener, IsCaptionsActiveChangedListener } from '../../CallComposite/adapter/CallAdapter';
14
16
  /**
15
17
  * Functionality for managing the current call with chat.
16
18
  * @public
@@ -256,6 +258,9 @@ export interface CallWithChatAdapterManagement {
256
258
  updateFileUploadErrorMessage: (id: string, errorMessage: string) => void;
257
259
  /** @beta */
258
260
  updateFileUploadMetadata: (id: string, metadata: FileMetadata) => void;
261
+ downloadAttachments: (options: {
262
+ attachmentUrls: string[];
263
+ }) => Promise<AttachmentDownloadResult[]>;
259
264
  /**
260
265
  * Puts the Call in a Localhold.
261
266
  *
@@ -286,23 +291,24 @@ export interface CallWithChatAdapterManagement {
286
291
  */
287
292
  allowUnsupportedBrowserVersion(): void;
288
293
  /**
289
- * Start the blur video background effect.
290
- *
291
- * @beta
294
+ * Function to Start captions
295
+ * @param options - options for start captions
292
296
  */
293
- blurVideoBackground(backgroundBlurConfig?: BackgroundBlurConfig): Promise<void>;
297
+ startCaptions(options?: StartCaptionsOptions): Promise<void>;
294
298
  /**
295
- * Start the video background replacement effect.
296
- *
297
- * @beta
299
+ * Function to set caption language
300
+ * @param language - language set for caption
298
301
  */
299
- replaceVideoBackground(backgroundReplacementConfig: BackgroundReplacementConfig): Promise<void>;
302
+ setCaptionLanguage(language: string): Promise<void>;
300
303
  /**
301
- * Stop the video background effect.
302
- *
303
- * @beta
304
+ * Function to set spoken language
305
+ * @param language - spoken language
306
+ */
307
+ setSpokenLanguage(language: string): Promise<void>;
308
+ /**
309
+ * Funtion to stop captions
304
310
  */
305
- stopVideoBackgroundEffect(): Promise<void>;
311
+ stopCaptions(): Promise<void>;
306
312
  }
307
313
  /**
308
314
  * Call and Chat events that can be subscribed to in the {@link CallWithChatAdapter}.
@@ -320,6 +326,8 @@ export interface CallWithChatAdapterSubscriptions {
320
326
  on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
321
327
  on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
322
328
  on(event: 'callError', listener: (e: AdapterError) => void): void;
329
+ on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
330
+ on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
323
331
  off(event: 'callEnded', listener: CallEndedListener): void;
324
332
  off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
325
333
  off(event: 'callIdChanged', listener: CallIdChangedListener): void;
@@ -331,6 +339,8 @@ export interface CallWithChatAdapterSubscriptions {
331
339
  off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
332
340
  off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
333
341
  off(event: 'callError', listener: (e: AdapterError) => void): void;
342
+ off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
343
+ off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
334
344
  on(event: 'messageReceived', listener: MessageReceivedListener): void;
335
345
  on(event: 'messageSent', listener: MessageSentListener): void;
336
346
  on(event: 'messageRead', listener: MessageReadListener): void;
@@ -356,5 +366,5 @@ export interface CallWithChatAdapter extends CallWithChatAdapterManagement, Adap
356
366
  *
357
367
  * @public
358
368
  */
359
- export declare type CallWithChatEvent = 'callError' | 'chatError' | 'callEnded' | 'isMutedChanged' | 'callIdChanged' | 'isLocalScreenSharingActiveChanged' | 'displayNameChanged' | 'isSpeakingChanged' | 'callParticipantsJoined' | 'callParticipantsLeft' | 'selectedMicrophoneChanged' | 'selectedSpeakerChanged' | 'messageReceived' | 'messageSent' | 'messageRead' | 'chatParticipantsAdded' | 'chatParticipantsRemoved';
369
+ export declare type CallWithChatEvent = 'callError' | 'chatError' | 'callEnded' | 'isMutedChanged' | 'callIdChanged' | 'isLocalScreenSharingActiveChanged' | 'displayNameChanged' | 'isSpeakingChanged' | 'callParticipantsJoined' | 'callParticipantsLeft' | 'selectedMicrophoneChanged' | 'selectedSpeakerChanged' | /* @conditional-compile-remove(close-captions) */ 'isCaptionsActiveChanged' | /* @conditional-compile-remove(close-captions) */ 'captionsReceived' | 'messageReceived' | 'messageSent' | 'messageRead' | 'chatParticipantsAdded' | 'chatParticipantsRemoved';
360
370
  //# sourceMappingURL=CallWithChatAdapter.d.ts.map