@azure/communication-react 1.5.1-alpha-202304040013 → 1.5.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/CHANGELOG.beta.md +76 -1
  2. package/CHANGELOG.json +621 -0
  3. package/dist/communication-react.d.ts +160 -192
  4. package/dist/dist-cjs/communication-react/index.js +1615 -2195
  5. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  8. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +2 -29
  9. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  10. package/dist/dist-esm/chat-component-bindings/src/utils/constants.d.ts +0 -4
  11. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js +0 -4
  12. package/dist/dist-esm/chat-component-bindings/src/utils/constants.js.map +1 -1
  13. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +26 -32
  14. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
  15. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js +1 -6
  16. package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js.map +1 -1
  17. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.d.ts +0 -1
  18. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.js.map +1 -1
  19. package/dist/dist-esm/communication-react/src/index.d.ts +0 -2
  20. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +29 -31
  22. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +1 -2
  24. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +13 -11
  25. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts +1 -2
  27. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +20 -34
  28. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +2 -11
  30. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +9 -47
  31. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/FileDownloadCards.d.ts +0 -7
  33. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js +1 -5
  34. package/dist/dist-esm/react-components/src/components/FileDownloadCards.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +3 -10
  36. package/dist/dist-esm/react-components/src/components/MessageThread.js +36 -57
  37. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/index.d.ts +0 -1
  39. package/dist/dist-esm/react-components/src/components/index.js +0 -1
  40. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.d.ts +13 -0
  42. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js +35 -0
  43. package/dist/dist-esm/react-components/src/components/styles/CaptionsBanner.style.js.map +1 -0
  44. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +0 -5
  45. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +0 -28
  46. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +4 -6
  48. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js +1 -1
  49. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
  50. package/dist/dist-esm/react-components/src/index.d.ts +0 -1
  51. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  52. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +116 -11
  53. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +115 -10
  54. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +1 -3
  55. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +115 -10
  56. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +116 -11
  57. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +115 -10
  58. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +115 -10
  59. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +115 -10
  60. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +115 -10
  61. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +116 -11
  62. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +115 -10
  63. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +116 -11
  64. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +115 -10
  65. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +115 -10
  66. package/dist/dist-esm/react-components/src/theming/icons.d.ts +0 -1
  67. package/dist/dist-esm/react-components/src/theming/icons.js +0 -8
  68. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  69. package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +1 -20
  70. package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +0 -20
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +1 -7
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +2 -14
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +0 -8
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +20 -93
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.d.ts +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Camera.js.map +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.d.ts +3 -9
  83. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js +1 -3
  84. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Custom.js.map +1 -1
  85. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.d.ts +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js.map +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
  89. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.d.ts +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.d.ts +1 -1
  92. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Participants.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/ScreenShare.d.ts +1 -1
  94. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/ScreenShare.js.map +1 -1
  95. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +2 -2
  96. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -19
  98. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  99. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.d.ts +1 -5
  100. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +0 -20
  101. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
  102. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts +87 -5
  103. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.js.map +1 -1
  104. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  105. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +75 -15
  106. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +5 -7
  107. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  108. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts +28 -0
  109. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +194 -0
  110. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -0
  111. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite}/CustomButton.d.ts +16 -19
  112. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite}/CustomButton.js +4 -4
  113. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CustomButton.js.map +1 -0
  114. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite}/PeopleButton.d.ts +1 -1
  115. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite}/PeopleButton.js +3 -3
  116. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PeopleButton.js.map +1 -0
  117. package/dist/dist-esm/react-composites/src/composites/{common/Drawer → CallWithChatComposite}/PreparedMoreDrawer.d.ts +2 -2
  118. package/dist/dist-esm/react-composites/src/composites/{common/Drawer → CallWithChatComposite}/PreparedMoreDrawer.js +5 -5
  119. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.js.map +1 -0
  120. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +0 -2
  121. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +1 -7
  122. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  123. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +0 -10
  124. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  125. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +0 -2
  126. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +1 -7
  127. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  128. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite/components}/DesktopMoreButton.d.ts +2 -2
  129. package/dist/dist-esm/react-composites/src/composites/{common/ControlBar → CallWithChatComposite/components}/DesktopMoreButton.js +3 -3
  130. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js.map +1 -0
  131. package/dist/dist-esm/react-composites/src/composites/{common/Drawer → CallWithChatComposite/components}/MoreDrawer.d.ts +2 -2
  132. package/dist/dist-esm/react-composites/src/composites/{common/Drawer → CallWithChatComposite/components}/MoreDrawer.js +5 -4
  133. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -0
  134. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.d.ts +1 -1
  135. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.js.map +1 -1
  136. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +0 -3
  137. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +2 -6
  138. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  139. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +0 -1
  140. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +0 -11
  141. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  142. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.d.ts +1 -4
  143. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js +1 -29
  144. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationFileUploadAdapter.js.map +1 -1
  145. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +0 -2
  146. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +3 -88
  147. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
  148. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -7
  149. package/dist/dist-esm/react-composites/src/composites/common/icons.js +1 -7
  150. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  151. package/dist/dist-esm/react-composites/src/composites/index.d.ts +0 -3
  152. package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
  153. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +17 -3
  154. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +17 -3
  155. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +0 -5
  156. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +17 -3
  157. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +17 -3
  158. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +17 -3
  159. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +17 -3
  160. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +17 -3
  161. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +17 -3
  162. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +17 -3
  163. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +17 -3
  164. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +17 -3
  165. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +17 -3
  166. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +17 -3
  167. package/package.json +10 -10
  168. package/dist/dist-esm/react-components/src/components/Caption.d.ts +0 -21
  169. package/dist/dist-esm/react-components/src/components/Caption.js +0 -32
  170. package/dist/dist-esm/react-components/src/components/Caption.js.map +0 -1
  171. package/dist/dist-esm/react-components/src/components/styles/Captions.style.d.ts +0 -21
  172. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +0 -41
  173. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +0 -1
  174. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +0 -30
  175. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +0 -253
  176. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +0 -1
  177. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js.map +0 -1
  178. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +0 -1
  179. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.js.map +0 -1
  180. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +0 -1
  181. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +0 -1
  182. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +0 -165
  183. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js +0 -4
  184. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +0 -1
@@ -1,8 +1,7 @@
1
1
  import { IContextualMenuItem } from '@fluentui/react';
2
- import { ControlBarButton, _DrawerMenuItemProps } from "../../../../../react-components/src";
3
- import { CustomCallControlButtonCallbackArgs, CustomControlButtonProps } from '../types/CommonCallControlOptions';
4
- import { CallControlDisplayType } from '../types/CommonCallControlOptions';
5
- import { CommonCallControlOptions } from '../types/CommonCallControlOptions';
2
+ import { ControlBarButton, _DrawerMenuItemProps } from "../../../../react-components/src";
3
+ import { CallControlDisplayType, CustomCallControlButtonCallbackArgs, CustomControlButtonProps } from '../CallComposite/types/CallControlOptions';
4
+ import { CallWithChatControlOptions } from './CallWithChatComposite';
6
5
  /**
7
6
  * Max number of Custom Buttons in primary and secondary ControlBar
8
7
  * Does not include existing buttons in the controlBar.
@@ -16,22 +15,22 @@ export declare const CUSTOM_BUTTON_OPTIONS: {
16
15
  };
17
16
  /** @private */
18
17
  export declare type CustomButtons = {
19
- [key in CustomCallControlButtonPlacement]: typeof ControlBarButton[] | undefined;
18
+ [key in CustomCallWithChatControlButtonPlacement]: typeof ControlBarButton[] | undefined;
20
19
  };
21
20
  /** @private */
22
- export declare const generateCustomCallControlBarButton: (onFetchCustomButtonProps?: CustomCallControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomButtons;
21
+ export declare const generateCustomCallWithChatControlBarButton: (onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomButtons;
23
22
  /** @private */
24
23
  export declare type CustomDrawerButtons = {
25
- [key in CustomCallControlButtonPlacement]: _DrawerMenuItemProps[];
24
+ [key in CustomCallWithChatControlButtonPlacement]: _DrawerMenuItemProps[];
26
25
  };
27
26
  /** @private */
28
- export declare const generateCustomCallDrawerButtons: (onFetchCustomButtonProps?: CustomCallControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomDrawerButtons;
27
+ export declare const generateCustomCallWithChatDrawerButtons: (onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomDrawerButtons;
29
28
  /** @private */
30
29
  export declare type CustomDesktopOverflowButtons = {
31
- [key in CustomCallControlButtonPlacement]: IContextualMenuItem[];
30
+ [key in CustomCallWithChatControlButtonPlacement]: IContextualMenuItem[];
32
31
  };
33
32
  /** @private */
34
- export declare const generateCustomCallDesktopOverflowButtons: (onFetchCustomButtonProps?: CustomCallControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomDesktopOverflowButtons;
33
+ export declare const generateCustomCallWithChatDesktopOverflowButtons: (onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[] | undefined, displayType?: CallControlDisplayType | undefined) => CustomDesktopOverflowButtons;
35
34
  /** @private */
36
35
  export declare const drawerMenuItemToContextualMenuItem: (item: _DrawerMenuItemProps) => IContextualMenuItem;
37
36
  /**
@@ -42,9 +41,9 @@ export declare const drawerMenuItemToContextualMenuItem: (item: _DrawerMenuItemP
42
41
  * Performance tip: This callback is only called when either the callback or its arguments change.
43
42
  * @beta
44
43
  */
45
- export declare type CustomCallControlButtonCallback = (args: CustomCallControlButtonCallbackArgs) => CustomCallControlButtonProps;
44
+ export declare type CustomCallWithChatControlButtonCallback = (args: CustomCallControlButtonCallbackArgs) => CustomCallWithChatControlButtonProps;
46
45
  /**
47
- * Placement for a custom button injected in the {@link CommonCallControlBar}.
46
+ * Placement for a custom button injected in the {@link CallWithChatControlBar}.
48
47
  *
49
48
  * 'primary': Place the button(s) on the right end of the center control bar but before the EndCallButton (left end in rtl mode).
50
49
  * 'overflow': Place the buttons(s) on the end of the overflow Menu.
@@ -54,24 +53,22 @@ export declare type CustomCallControlButtonCallback = (args: CustomCallControlBu
54
53
  * E.g., if two buttons are placed in 'secondary', they'll both appear on the left end (right end in rtl mode)
55
54
  * in the order provided.
56
55
  *
57
- * Only 'primary' placement works when legacy call control is enabled in call composite
58
- *
59
56
  * @beta
60
57
  */
61
- export declare type CustomCallControlButtonPlacement = 'primary' | 'overflow' | 'secondary';
58
+ export declare type CustomCallWithChatControlButtonPlacement = 'primary' | 'overflow' | 'secondary';
62
59
  /**
63
- * Response from {@link CustomCallControlButtonCallback}.
60
+ * Response from {@link CustomCallWithChatControlButtonCallback}.
64
61
  *
65
62
  * Includes the icon and placement prop necessary to indicate where to place the
66
63
  * {@link ControlBarButton} and a {@link DrawerMenuItem}
67
64
  *
68
65
  * @beta
69
66
  */
70
- export interface CustomCallControlButtonProps extends CustomControlButtonProps {
67
+ export interface CustomCallWithChatControlButtonProps extends CustomControlButtonProps {
71
68
  /**
72
69
  * Where to place the custom button relative to other buttons.
73
70
  */
74
- placement: CustomCallControlButtonPlacement;
71
+ placement: CustomCallWithChatControlButtonPlacement;
75
72
  /**
76
73
  * Icon to render. Icon is a non-default icon name that needs to be registered as a
77
74
  * custom icon using registerIcons through fluentui. Examples include icons from the fluentui library
@@ -79,5 +76,5 @@ export interface CustomCallControlButtonProps extends CustomControlButtonProps {
79
76
  iconName?: string;
80
77
  }
81
78
  /** @private */
82
- export declare const onFetchCustomButtonPropsTrampoline: (options?: CommonCallControlOptions | undefined) => CustomCallControlButtonCallback[] | undefined;
79
+ export declare const onFetchCustomButtonPropsTrampoline: (options?: CallWithChatControlOptions | undefined) => CustomCallWithChatControlButtonCallback[] | undefined;
83
80
  //# sourceMappingURL=CustomButton.d.ts.map
@@ -2,7 +2,7 @@
2
2
  // Licensed under the MIT license.
3
3
  // eslint-disable-next-line no-restricted-imports
4
4
  import { Icon, mergeStyleSets } from '@fluentui/react';
5
- import { ControlBarButton } from "../../../../../react-components/src";
5
+ import { ControlBarButton } from "../../../../react-components/src";
6
6
  import React from 'react';
7
7
  /**
8
8
  * Max number of Custom Buttons in primary and secondary ControlBar
@@ -16,7 +16,7 @@ export const CUSTOM_BUTTON_OPTIONS = {
16
16
  MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS: 2
17
17
  };
18
18
  /** @private */
19
- export const generateCustomCallControlBarButton = (onFetchCustomButtonProps, displayType) => {
19
+ export const generateCustomCallWithChatControlBarButton = (onFetchCustomButtonProps, displayType) => {
20
20
  const allButtonProps = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map((callback) => callback({ displayType }));
21
21
  return {
22
22
  primary: generateCustomControlBarButtons('primary', allButtonProps),
@@ -43,7 +43,7 @@ const generateCustomDrawerButtons = (placement, customButtons) => customButtons
43
43
  .map((buttonProps, i) => (Object.assign(Object.assign({}, buttonProps), { disabled: buttonProps.disabled, iconProps: { iconName: buttonProps.iconName }, id: buttonProps.id, itemKey: buttonProps.key ? '' + buttonProps.key : `${buttonProps.placement}_${i}`, onItemClick: buttonProps.onItemClick, text: buttonProps.text })))
44
44
  : [];
45
45
  /** @private */
46
- export const generateCustomCallDrawerButtons = (onFetchCustomButtonProps, displayType) => {
46
+ export const generateCustomCallWithChatDrawerButtons = (onFetchCustomButtonProps, displayType) => {
47
47
  const customButtons = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map((callback) => callback({ displayType }));
48
48
  return {
49
49
  primary: generateCustomDrawerButtons('primary', customButtons),
@@ -52,7 +52,7 @@ export const generateCustomCallDrawerButtons = (onFetchCustomButtonProps, displa
52
52
  };
53
53
  };
54
54
  /** @private */
55
- export const generateCustomCallDesktopOverflowButtons = (onFetchCustomButtonProps, displayType) => {
55
+ export const generateCustomCallWithChatDesktopOverflowButtons = (onFetchCustomButtonProps, displayType) => {
56
56
  const customButtons = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map((callback) => callback({ displayType }));
57
57
  return {
58
58
  primary: generateCustomDrawerButtons('primary', customButtons).map(drawerMenuItemToContextualMenuItem),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomButton.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallWithChatComposite/CustomButton.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n// eslint-disable-next-line no-restricted-imports\nimport { Icon, IContextualMenuItem, mergeStyleSets } from '@fluentui/react';\nimport { ControlBarButton, _DrawerMenuItemProps } from '@internal/react-components';\nimport React from 'react';\nimport {\n CallControlDisplayType,\n CustomCallControlButtonCallbackArgs,\n CustomControlButtonProps\n} from '../CallComposite/types/CallControlOptions';\n/* @conditional-compile-remove(control-bar-button-injection) */\nimport { CallWithChatControlOptions } from './CallWithChatComposite';\n\n/**\n * Max number of Custom Buttons in primary and secondary ControlBar\n * Does not include existing buttons in the controlBar.\n *\n * @private\n */\nexport const CUSTOM_BUTTON_OPTIONS = {\n MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS: 3,\n MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS: 1,\n MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS: 2\n};\n\n/** @private */\nexport type CustomButtons = {\n [key in CustomCallWithChatControlButtonPlacement]: typeof ControlBarButton[] | undefined;\n};\n\n/** @private */\nexport const generateCustomCallWithChatControlBarButton = (\n onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[],\n displayType?: CallControlDisplayType\n): CustomButtons => {\n const allButtonProps = onFetchCustomButtonProps?.map((callback) => callback({ displayType }));\n\n return {\n primary: generateCustomControlBarButtons('primary', allButtonProps),\n secondary: generateCustomControlBarButtons('secondary', allButtonProps),\n overflow: generateCustomControlBarButtons('overflow', allButtonProps)\n };\n};\n\n/** @private */\nconst generateCustomControlBarButtons = (\n placement: CustomCallWithChatControlButtonPlacement,\n customButtons?: CustomCallWithChatControlButtonProps[]\n): typeof ControlBarButton[] =>\n customButtons\n ? customButtons\n .filter((buttonProps) => buttonProps.placement === placement)\n .map((buttonProps, i) => (internalProps) => (\n <ControlBarButton\n ariaDescription={buttonProps.ariaDescription ?? internalProps.ariaDescription}\n ariaLabel={buttonProps.ariaLabel ?? internalProps.ariaLabel}\n disabled={buttonProps.disabled ?? internalProps.disabled}\n id={buttonProps.id ?? internalProps.id}\n key={buttonProps.key ?? `${buttonProps.placement}_${i}`}\n onClick={buttonProps.onItemClick ?? internalProps.onClick}\n onRenderIcon={() => (\n <Icon iconName={buttonProps.iconName ?? internalProps.iconProps?.iconName ?? 'ControlButtonOptions'} />\n )}\n showLabel={buttonProps.showLabel ?? internalProps.showLabel}\n text={buttonProps.text ?? internalProps.text}\n styles={mergeStyleSets(internalProps.styles, buttonProps.styles)}\n />\n ))\n : [];\n\n/** @private */\nconst generateCustomDrawerButtons = (\n placement: CustomCallWithChatControlButtonPlacement,\n customButtons?: CustomCallWithChatControlButtonProps[]\n): _DrawerMenuItemProps[] =>\n customButtons\n ? customButtons\n .filter((buttonProps) => buttonProps.placement === placement)\n .map(\n (buttonProps, i): _DrawerMenuItemProps => ({\n ...buttonProps,\n disabled: buttonProps.disabled,\n iconProps: { iconName: buttonProps.iconName },\n id: buttonProps.id,\n itemKey: buttonProps.key ? '' + buttonProps.key : `${buttonProps.placement}_${i}`,\n onItemClick: buttonProps.onItemClick,\n text: buttonProps.text\n })\n )\n : [];\n\n/** @private */\nexport type CustomDrawerButtons = {\n [key in CustomCallWithChatControlButtonPlacement]: _DrawerMenuItemProps[];\n};\n\n/** @private */\nexport const generateCustomCallWithChatDrawerButtons = (\n onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[],\n displayType?: CallControlDisplayType\n): CustomDrawerButtons => {\n const customButtons = onFetchCustomButtonProps?.map((callback) => callback({ displayType }));\n return {\n primary: generateCustomDrawerButtons('primary', customButtons),\n secondary: generateCustomDrawerButtons('secondary', customButtons),\n overflow: generateCustomDrawerButtons('overflow', customButtons)\n };\n};\n\n/** @private */\nexport type CustomDesktopOverflowButtons = {\n [key in CustomCallWithChatControlButtonPlacement]: IContextualMenuItem[];\n};\n\n/** @private */\nexport const generateCustomCallWithChatDesktopOverflowButtons = (\n onFetchCustomButtonProps?: CustomCallWithChatControlButtonCallback[],\n displayType?: CallControlDisplayType\n): CustomDesktopOverflowButtons => {\n const customButtons = onFetchCustomButtonProps?.map((callback) => callback({ displayType }));\n return {\n primary: generateCustomDrawerButtons('primary', customButtons).map(drawerMenuItemToContextualMenuItem),\n secondary: generateCustomDrawerButtons('secondary', customButtons).map(drawerMenuItemToContextualMenuItem),\n overflow: generateCustomDrawerButtons('overflow', customButtons).map(drawerMenuItemToContextualMenuItem)\n };\n};\n\n/** @private */\nexport const drawerMenuItemToContextualMenuItem = (item: _DrawerMenuItemProps): IContextualMenuItem => ({\n ...item,\n key: item.itemKey,\n onClick: item.onItemClick\n ? (ev) => {\n item.onItemClick?.(ev);\n }\n : undefined,\n subMenuProps: item.subMenuProps\n ? {\n items: item.subMenuProps.map(drawerMenuItemToContextualMenuItem)\n }\n : undefined\n});\n\n/**\n * A callback that returns the props to render a custom {@link ControlBarButton} and {@link DrawerMenuItem}.\n *\n * The response indicates where the custom button should be placed.\n *\n * Performance tip: This callback is only called when either the callback or its arguments change.\n * @beta\n */\nexport type CustomCallWithChatControlButtonCallback = (\n args: CustomCallControlButtonCallbackArgs\n) => CustomCallWithChatControlButtonProps;\n\n/**\n * Placement for a custom button injected in the {@link CallWithChatControlBar}.\n *\n * 'primary': Place the button(s) on the right end of the center control bar but before the EndCallButton (left end in rtl mode).\n * 'overflow': Place the buttons(s) on the end of the overflow Menu.\n * 'secondary': Place the button(s) on the left end of the side control bar (right in rtl mode).\n *\n * Multiple buttons assigned the same placement are appended in order.\n * E.g., if two buttons are placed in 'secondary', they'll both appear on the left end (right end in rtl mode)\n * in the order provided.\n *\n * @beta\n */\nexport type CustomCallWithChatControlButtonPlacement = 'primary' | 'overflow' | 'secondary';\n\n/**\n * Response from {@link CustomCallWithChatControlButtonCallback}.\n *\n * Includes the icon and placement prop necessary to indicate where to place the\n * {@link ControlBarButton} and a {@link DrawerMenuItem}\n *\n * @beta\n */\nexport interface CustomCallWithChatControlButtonProps extends CustomControlButtonProps {\n /**\n * Where to place the custom button relative to other buttons.\n */\n placement: CustomCallWithChatControlButtonPlacement;\n /**\n * Icon to render. Icon is a non-default icon name that needs to be registered as a\n * custom icon using registerIcons through fluentui. Examples include icons from the fluentui library\n */\n iconName?: string;\n}\n\n/* @conditional-compile-remove(control-bar-button-injection) */\n/** @private */\nexport const onFetchCustomButtonPropsTrampoline = (\n options?: CallWithChatControlOptions\n): CustomCallWithChatControlButtonCallback[] | undefined => {\n let response: CustomCallWithChatControlButtonCallback[] | undefined = undefined;\n response = options?.onFetchCustomButtonProps;\n return response;\n};\n\"../../../../react-components/src\""]}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ControlBarButtonProps } from "../../../../../react-components/src";
2
+ import { ControlBarButtonProps } from "../../../../react-components/src";
3
3
  /**
4
4
  * @private
5
5
  */
@@ -1,10 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  import React, { useMemo } from 'react';
4
- import { ControlBarButton, useTheme } from "../../../../../react-components/src";
4
+ import { ControlBarButton, useTheme } from "../../../../react-components/src";
5
5
  import { concatStyleSets } from '@fluentui/react';
6
- import { CallCompositeIcon } from '../icons';
7
- const icon = () => React.createElement(CallCompositeIcon, { iconName: 'ControlBarPeopleButton' });
6
+ import { CallWithChatCompositeIcon } from '../common/icons';
7
+ const icon = () => React.createElement(CallWithChatCompositeIcon, { iconName: 'ControlBarPeopleButton' });
8
8
  /**
9
9
  * @private
10
10
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeopleButton.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallWithChatComposite/PeopleButton.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAiD,QAAQ,EAAE,yCAAmC;AACvH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,IAAI,GAAG,GAAgB,EAAE,CAAC,oBAAC,yBAAyB,IAAC,QAAQ,EAAE,wBAAwB,GAAI,CAAC;AAElG;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA4B,EAAe,EAAE;IACxE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,MAAM,GAA2B,OAAO,CAC5C,GAAG,EAAE;;QACH,OAAA,eAAe,CACb;YACE,WAAW,EAAE;gBACX,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;aACvC;SACF,EACD,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CACnB,CAAA;KAAA,EACH,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAC3C,CAAC;IAEF,OAAO,CACL,oBAAC,gBAAgB,oBACX,KAAK,IACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,sBAAsB,EAChC,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,EACtC,eAAe,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,EACxC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,IACd,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useMemo } from 'react';\nimport { ControlBarButton, ControlBarButtonProps, ControlBarButtonStyles, useTheme } from '@internal/react-components';\nimport { concatStyleSets } from '@fluentui/react';\nimport { CallWithChatCompositeIcon } from '../common/icons';\n\nconst icon = (): JSX.Element => <CallWithChatCompositeIcon iconName={'ControlBarPeopleButton'} />;\n\n/**\n * @private\n */\nexport const PeopleButton = (props: ControlBarButtonProps): JSX.Element => {\n const { strings, onRenderOnIcon, onRenderOffIcon, onClick } = props;\n const theme = useTheme();\n const styles: ControlBarButtonStyles = useMemo(\n () =>\n concatStyleSets(\n {\n rootChecked: {\n background: theme.palette.neutralLight\n }\n },\n props.styles ?? {}\n ),\n [props.styles, theme.palette.neutralLight]\n );\n\n return (\n <ControlBarButton\n {...props}\n strings={strings}\n labelKey={'peopleButtonLabelKey'}\n onRenderOnIcon={onRenderOnIcon ?? icon}\n onRenderOffIcon={onRenderOffIcon ?? icon}\n onClick={onClick}\n styles={styles}\n />\n );\n};\n\"../../../../react-components/src\""]}
@@ -1,10 +1,10 @@
1
1
  /// <reference types="react" />
2
- import { CommonCallControlOptions } from '../types/CommonCallControlOptions';
2
+ import { CallWithChatControlOptions } from './CallWithChatComposite';
3
3
  /** @private */
4
4
  export interface PreparedMoreDrawerProps {
5
5
  onLightDismiss: () => void;
6
6
  onPeopleButtonClicked: () => void;
7
- callControls?: boolean | CommonCallControlOptions;
7
+ callControls?: boolean | CallWithChatControlOptions;
8
8
  onClickShowDialpad?: () => void;
9
9
  disableButtonsForHoldScreen?: boolean;
10
10
  }
@@ -1,11 +1,11 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  import React, { useMemo } from 'react';
4
- import { useCallWithChatCompositeStrings } from '../../CallWithChatComposite/hooks/useCallWithChatCompositeStrings';
5
- import { MoreDrawer } from './MoreDrawer';
6
- import { moreDrawerSelector } from '../../CallWithChatComposite/selectors/moreDrawerSelector';
7
- import { useSelector } from '../../CallComposite/hooks/useSelector';
8
- import { useHandlers } from '../../CallComposite/hooks/useHandlers';
4
+ import { useCallWithChatCompositeStrings } from './hooks/useCallWithChatCompositeStrings';
5
+ import { MoreDrawer } from './components/MoreDrawer';
6
+ import { moreDrawerSelector } from './selectors/moreDrawerSelector';
7
+ import { useSelector } from '../CallComposite/hooks/useSelector';
8
+ import { useHandlers } from '../CallComposite/hooks/useHandlers';
9
9
  /** @private */
10
10
  export const PreparedMoreDrawer = (props) => {
11
11
  const strings = useCallWithChatCompositeStrings();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreparedMoreDrawer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/CallWithChatComposite/PreparedMoreDrawer.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAqB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAajE,eAAe;AACf,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAe,EAAE;IAChF,MAAM,OAAO,GAAG,+BAA+B,EAAE,CAAC;IAClD,MAAM,iBAAiB,GAAsB,OAAO,CAClD,GAAG,EAAE,CAAC,CAAC;QACL,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,oBAAoB,EAAE,OAAO,CAAC,8BAA8B;QAC5D,mBAAmB,EAAE,OAAO,CAAC,6BAA6B;QAC1D,gBAAgB,EAAE,OAAO,CAAC,0BAA0B;KACrD,CAAC,EACF,CAAC,OAAO,CAAC,CACV,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,oBAAC,UAAU,oBAAK,KAAK,EAAM,WAAW,EAAM,YAAY,IAAE,OAAO,EAAE,iBAAiB,IAAI,CAAC;AAClG,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport React, { useMemo } from 'react';\nimport { useCallWithChatCompositeStrings } from './hooks/useCallWithChatCompositeStrings';\nimport { MoreDrawer, MoreDrawerStrings } from './components/MoreDrawer';\nimport { moreDrawerSelector } from './selectors/moreDrawerSelector';\nimport { useSelector } from '../CallComposite/hooks/useSelector';\nimport { useHandlers } from '../CallComposite/hooks/useHandlers';\nimport { CallWithChatControlOptions } from './CallWithChatComposite';\n\n/** @private */\nexport interface PreparedMoreDrawerProps {\n onLightDismiss: () => void;\n onPeopleButtonClicked: () => void;\n callControls?: boolean | CallWithChatControlOptions;\n /* @conditional-compile-remove(PSTN-calls) */\n onClickShowDialpad?: () => void;\n disableButtonsForHoldScreen?: boolean;\n}\n\n/** @private */\nexport const PreparedMoreDrawer = (props: PreparedMoreDrawerProps): JSX.Element => {\n const strings = useCallWithChatCompositeStrings();\n const moreDrawerStrings: MoreDrawerStrings = useMemo(\n () => ({\n peopleButtonLabel: strings.peopleButtonLabel,\n audioDeviceMenuTitle: strings.moreDrawerAudioDeviceMenuTitle,\n microphoneMenuTitle: strings.moreDrawerMicrophoneMenuTitle,\n speakerMenuTitle: strings.moreDrawerSpeakerMenuTitle\n }),\n [strings]\n );\n const deviceProps = useSelector(moreDrawerSelector);\n const callHandlers = useHandlers(MoreDrawer);\n return <MoreDrawer {...props} {...deviceProps} {...callHandlers} strings={moreDrawerStrings} />;\n};\n"]}
@@ -17,7 +17,6 @@ import { StatefulChatClient } from "../../../../../chat-stateful-client/src";
17
17
  import { ChatThreadClient } from '@azure/communication-chat';
18
18
  import { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';
19
19
  import { BackgroundBlurConfig, BackgroundReplacementConfig } from '@azure/communication-calling-effects';
20
- import { VideoBackgroundImage } from '../../CallComposite';
21
20
  /**
22
21
  * CallWithChat adapter backed by Azure Communication Services.
23
22
  * Created for easy use with the {@link CallWithChatComposite}.
@@ -110,7 +109,6 @@ export declare class AzureCommunicationCallWithChatAdapter implements CallWithCh
110
109
  blurVideoBackground(backgroundBlurConfig?: BackgroundBlurConfig): Promise<void>;
111
110
  replaceVideoBackground(backgroundReplacementConfig: BackgroundReplacementConfig): Promise<void>;
112
111
  stopVideoBackgroundEffect(): Promise<void>;
113
- updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void;
114
112
  on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;
115
113
  on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;
116
114
  on(event: 'callEnded', listener: CallEndedListener): void;
@@ -161,8 +161,6 @@ export class AzureCommunicationCallWithChatAdapter {
161
161
  this.replaceVideoBackground.bind(this);
162
162
  /* @conditional-compile-remove(video-background-effects) */
163
163
  this.stopVideoBackgroundEffect.bind(this);
164
- /* @conditional-compile-remove(video-background-effects) */
165
- this.updateBackgroundPickerImages.bind(this);
166
164
  }
167
165
  /** Join existing Call. */
168
166
  joinCall(microphoneOn) {
@@ -397,10 +395,6 @@ export class AzureCommunicationCallWithChatAdapter {
397
395
  return yield this.callAdapter.stopVideoBackgroundEffect();
398
396
  });
399
397
  }
400
- /* @conditional-compile-remove(video-background-effects) */
401
- updateBackgroundPickerImages(backgroundImages) {
402
- return this.callAdapter.updateBackgroundPickerImages(backgroundImages);
403
- }
404
398
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
405
399
  on(event, listener) {
406
400
  switch (event) {
@@ -526,7 +520,7 @@ export class AzureCommunicationCallWithChatAdapter {
526
520
  */
527
521
  export const createAzureCommunicationCallWithChatAdapter = ({ userId, displayName, credential, endpoint, locator,
528
522
  /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId,
529
- /* @conditional-compile-remove(rooms) */ /* @conditional-compile-remove(video-background-effects) */ callAdapterOptions }) => __awaiter(void 0, void 0, void 0, function* () {
523
+ /* @conditional-compile-remove(rooms) */ callAdapterOptions }) => __awaiter(void 0, void 0, void 0, function* () {
530
524
  const callAdapterLocator = isTeamsMeetingLinkLocator(locator) ? locator : locator.callLocator;
531
525
  const createCallAdapterPromise = createAzureCommunicationCallAdapter({
532
526
  userId,
@@ -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/* @conditional-compile-remove(video-background-effects) */\nimport { VideoBackgroundImage } from '../../CallComposite';\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 /* @conditional-compile-remove(video-background-effects) */\n this.updateBackgroundPickerImages.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 /* @conditional-compile-remove(video-background-effects) */\n public updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void {\n return this.callAdapter.updateBackgroundPickerImages(backgroundImages);\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) */ /* @conditional-compile-remove(video-background-effects) */ 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":"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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\""]}
@@ -11,7 +11,6 @@ import { FileUploadManager } from '../../ChatComposite';
11
11
  import { CommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';
12
12
  import { CommunicationIdentifier } from '@azure/communication-common';
13
13
  import { BackgroundBlurConfig, BackgroundReplacementConfig } from '@azure/communication-calling-effects';
14
- import { VideoBackgroundImage } from '../../CallComposite';
15
14
  /**
16
15
  * Functionality for managing the current call with chat.
17
16
  * @public
@@ -257,7 +256,6 @@ export interface CallWithChatAdapterManagement {
257
256
  updateFileUploadErrorMessage: (id: string, errorMessage: string) => void;
258
257
  /** @beta */
259
258
  updateFileUploadMetadata: (id: string, metadata: FileMetadata) => void;
260
- downloadAuthenticatedAttachment?: (attachmentUrl: string) => Promise<string>;
261
259
  /**
262
260
  * Puts the Call in a Localhold.
263
261
  *
@@ -305,14 +303,6 @@ export interface CallWithChatAdapterManagement {
305
303
  * @beta
306
304
  */
307
305
  stopVideoBackgroundEffect(): Promise<void>;
308
- /**
309
- * Override the background picker images for background replacement effect.
310
- *
311
- * @param backgroundImages - Array of custom background images.
312
- *
313
- * @beta
314
- */
315
- updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void;
316
306
  }
317
307
  /**
318
308
  * Call and Chat events that can be subscribed to in the {@link CallWithChatAdapter}.