@azure/communication-react 1.28.0-beta.2 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/dist/communication-react.d.ts +25 -1371
  2. package/dist/dist-cjs/communication-react/index.js +40155 -174
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/common.d.ts +0 -13
  5. package/dist/dist-esm/acs-ui-common/src/common.js.map +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/constants.d.ts +0 -5
  7. package/dist/dist-esm/acs-ui-common/src/constants.js +0 -5
  8. package/dist/dist-esm/acs-ui-common/src/constants.js.map +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/index.d.ts +0 -4
  10. package/dist/dist-esm/acs-ui-common/src/index.js +0 -3
  11. package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
  12. package/dist/dist-esm/acs-ui-common/src/safeStringify.d.ts +1 -1
  13. package/dist/dist-esm/acs-ui-common/src/safeStringify.js.map +1 -1
  14. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  15. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +0 -2
  17. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +1 -2
  19. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +0 -2
  21. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +7 -9
  22. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  23. package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js +1 -25
  24. package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js.map +1 -1
  25. package/dist/dist-esm/calling-component-bindings/src/hooks/useHandlers.js +1 -1
  26. package/dist/dist-esm/calling-component-bindings/src/hooks/useHandlers.js.map +1 -1
  27. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +0 -1
  28. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  29. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.d.ts +0 -1
  30. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +1 -3
  31. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  32. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js +0 -4
  33. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js.map +1 -1
  34. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -42
  35. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  36. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +0 -6
  37. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +7 -39
  38. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  39. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +0 -4
  40. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +4 -24
  41. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  42. package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -3
  43. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  44. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js +2 -5
  45. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js.map +1 -1
  46. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.d.ts +0 -1
  47. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js +1 -7
  48. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js.map +1 -1
  49. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +0 -10
  50. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  51. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +18 -4
  52. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
  53. package/dist/dist-esm/calling-stateful-client/src/TeamsCallDeclarative.js +0 -17
  54. package/dist/dist-esm/calling-stateful-client/src/TeamsCallDeclarative.js.map +1 -1
  55. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +0 -1
  56. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  57. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.d.ts +2 -6
  58. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +4 -38
  59. package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
  60. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.d.ts +1 -2
  61. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js +0 -4
  62. package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  63. package/dist/dist-esm/chat-component-bindings/src/hooks/useSelector.js +1 -1
  64. package/dist/dist-esm/chat-component-bindings/src/hooks/useSelector.js.map +1 -1
  65. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +2 -25
  66. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  67. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +3 -3
  68. package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
  69. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.d.ts +1 -15
  70. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.js.map +1 -1
  71. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js +1 -2
  72. package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js.map +1 -1
  73. package/dist/dist-esm/chat-stateful-client/src/index.d.ts +0 -1
  74. package/dist/dist-esm/chat-stateful-client/src/index.js.map +1 -1
  75. package/dist/dist-esm/communication-react/src/index.d.ts +0 -21
  76. package/dist/dist-esm/communication-react/src/index.js +0 -3
  77. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  78. package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.d.ts +0 -2
  79. package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.js +1 -2
  80. package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.js.map +1 -1
  81. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +1 -13
  82. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js +3 -9
  83. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
  84. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +0 -11
  85. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +2 -32
  86. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
  87. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.d.ts +1 -8
  88. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js +7 -9
  89. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
  90. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.d.ts +1 -2
  91. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js +4 -4
  92. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js.map +1 -1
  93. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.d.ts +1 -4
  94. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js +6 -31
  95. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js.map +1 -1
  96. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +1 -15
  97. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js +0 -9
  98. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
  99. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +2 -23
  100. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +6 -17
  101. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
  102. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.d.ts +1 -8
  103. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js +8 -10
  104. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
  105. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +5 -5
  106. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
  107. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +0 -1
  108. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  109. package/dist/dist-esm/react-components/src/components/ImageOverlay.js +0 -2
  110. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  111. package/dist/dist-esm/react-components/src/components/InputBoxComponent.d.ts +0 -2
  112. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +0 -15
  113. package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
  114. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +5 -81
  115. package/dist/dist-esm/react-components/src/components/MessageThread.js +3 -13
  116. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  117. package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js +2 -7
  118. package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js.map +1 -1
  119. package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +0 -15
  120. package/dist/dist-esm/react-components/src/components/ParticipantList.js +3 -12
  121. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  122. package/dist/dist-esm/react-components/src/components/RaiseHandButton.js +21 -7
  123. package/dist/dist-esm/react-components/src/components/RaiseHandButton.js.map +1 -1
  124. package/dist/dist-esm/react-components/src/components/SendBox.d.ts +1 -47
  125. package/dist/dist-esm/react-components/src/components/SendBox.js +6 -57
  126. package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
  127. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js +2 -2
  128. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js.map +1 -1
  129. package/dist/dist-esm/react-components/src/components/index.d.ts +0 -21
  130. package/dist/dist-esm/react-components/src/components/index.js +0 -8
  131. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  132. package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +1 -1
  133. package/dist/dist-esm/react-components/src/components/styles/AttachmentCardGroup.styles.d.ts +1 -1
  134. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +3 -3
  135. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +0 -8
  136. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  137. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.d.ts +1 -38
  138. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js +3 -30
  139. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js.map +1 -1
  140. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.d.ts +2 -4
  141. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js +2 -9
  142. package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js.map +1 -1
  143. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +1 -47
  144. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +4 -154
  145. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  146. package/dist/dist-esm/react-components/src/components/utils/common.js +0 -2
  147. package/dist/dist-esm/react-components/src/components/utils/common.js.map +1 -1
  148. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +1 -2
  149. package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
  150. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js +4 -4
  151. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js.map +1 -1
  152. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.d.ts +0 -4
  153. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js +1 -3
  154. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js.map +1 -1
  155. package/dist/dist-esm/react-components/src/index.d.ts +0 -1
  156. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  157. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +0 -45
  158. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  159. package/dist/dist-esm/react-components/src/theming/icons.d.ts +0 -24
  160. package/dist/dist-esm/react-components/src/theming/icons.js +0 -67
  161. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  162. package/dist/dist-esm/react-components/src/theming/themes.d.ts +0 -6
  163. package/dist/dist-esm/react-components/src/theming/themes.js +0 -9
  164. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  165. package/dist/dist-esm/react-components/src/types/Attachment.d.ts +0 -13
  166. package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
  167. package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +1 -20
  168. package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
  169. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +0 -59
  170. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +15 -19
  171. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  172. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +6 -38
  173. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +3 -14
  174. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  175. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +0 -2
  176. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  177. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +0 -2
  178. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js +0 -19
  179. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -1
  180. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js +2 -10
  181. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -1
  182. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +0 -2
  183. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js +0 -19
  184. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -1
  185. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +3 -1
  186. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  187. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
  188. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +3 -5
  189. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
  190. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.d.ts +1 -0
  191. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +7 -5
  192. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  193. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.d.ts +1 -0
  194. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.js +1 -1
  195. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/usePropsFor.js.map +1 -1
  196. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +0 -3
  197. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  198. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -2
  199. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  200. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +0 -7
  201. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +7 -44
  202. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  203. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js +1 -1
  204. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/DtmfDialpadPage.js.map +1 -1
  205. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +2 -2
  206. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
  207. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +2 -2
  208. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  209. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +2 -2
  210. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
  211. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +0 -8
  212. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -71
  213. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  214. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +0 -52
  215. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +4 -10
  216. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  217. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +3 -10
  218. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +2 -20
  219. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  220. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +3 -18
  221. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  222. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +4 -10
  223. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +2 -14
  224. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
  225. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts +0 -27
  226. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js +1 -2
  227. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
  228. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts +0 -2
  229. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -189
  230. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  231. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts +0 -20
  232. package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.js.map +1 -1
  233. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +2 -6
  234. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +0 -37
  235. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  236. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +2 -12
  237. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  238. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/OnFetchProfileCallback.js +2 -0
  239. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/OnFetchProfileCallback.js.map +1 -1
  240. package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js +2 -14
  241. package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js.map +1 -1
  242. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +0 -2
  243. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
  244. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.d.ts +0 -4
  245. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js +0 -4
  246. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js.map +1 -1
  247. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +1 -1
  248. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  249. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -2
  250. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  251. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +2 -41
  252. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js +0 -21
  253. package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
  254. package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +0 -5
  255. package/dist/dist-esm/react-composites/src/composites/common/constants.js +0 -5
  256. package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -1
  257. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -26
  258. package/dist/dist-esm/react-composites/src/composites/common/icons.js +0 -2
  259. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  260. package/package.json +4 -4
  261. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-DQsJ0ty3.js +0 -215
  262. package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-DQsJ0ty3.js.map +0 -1
  263. package/dist/dist-cjs/communication-react/RichTextSendBoxWrapper-K8NQvjwe.js +0 -49
  264. package/dist/dist-cjs/communication-react/RichTextSendBoxWrapper-K8NQvjwe.js.map +0 -1
  265. package/dist/dist-cjs/communication-react/index-C-rok69c.js +0 -46100
  266. package/dist/dist-cjs/communication-react/index-C-rok69c.js.map +0 -1
  267. package/dist/dist-esm/acs-ui-common/src/dataConversion.d.ts +0 -6
  268. package/dist/dist-esm/acs-ui-common/src/dataConversion.js +0 -20
  269. package/dist/dist-esm/acs-ui-common/src/dataConversion.js.map +0 -1
  270. package/dist/dist-esm/acs-ui-common/src/removeImageTags.d.ts +0 -7
  271. package/dist/dist-esm/acs-ui-common/src/removeImageTags.js +0 -18
  272. package/dist/dist-esm/acs-ui-common/src/removeImageTags.js.map +0 -1
  273. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.d.ts +0 -17
  274. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js +0 -33
  275. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js.map +0 -1
  276. package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.d.ts +0 -6
  277. package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.js +0 -20
  278. package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.js.map +0 -1
  279. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.d.ts +0 -10
  280. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js +0 -15
  281. package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js.map +0 -1
  282. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +0 -24
  283. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +0 -206
  284. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +0 -1
  285. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.d.ts +0 -69
  286. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.js +0 -36
  287. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.js.map +0 -1
  288. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.d.ts +0 -75
  289. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.js +0 -67
  290. package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.js.map +0 -1
  291. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.d.ts +0 -105
  292. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js +0 -51
  293. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js.map +0 -1
  294. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.d.ts +0 -86
  295. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js +0 -40
  296. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js.map +0 -1
  297. package/dist/dist-esm/react-components/src/components/MentionPopover.d.ts +0 -121
  298. package/dist/dist-esm/react-components/src/components/MentionPopover.js +0 -119
  299. package/dist/dist-esm/react-components/src/components/MentionPopover.js.map +0 -1
  300. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.d.ts +0 -9
  301. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js +0 -29
  302. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js.map +0 -1
  303. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +0 -30
  304. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +0 -98
  305. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +0 -1
  306. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.d.ts +0 -19
  307. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js +0 -43
  308. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js.map +0 -1
  309. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.d.ts +0 -15
  310. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js +0 -42
  311. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js.map +0 -1
  312. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.d.ts +0 -24
  313. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js +0 -64
  314. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js.map +0 -1
  315. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.d.ts +0 -20
  316. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js +0 -45
  317. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js.map +0 -1
  318. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.d.ts +0 -14
  319. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js +0 -42
  320. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js.map +0 -1
  321. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.d.ts +0 -30
  322. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +0 -99
  323. package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +0 -1
  324. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +0 -59
  325. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +0 -334
  326. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +0 -1
  327. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +0 -37
  328. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +0 -78
  329. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +0 -1
  330. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +0 -215
  331. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +0 -183
  332. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +0 -1
  333. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.d.ts +0 -16
  334. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js +0 -75
  335. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js.map +0 -1
  336. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxUtils.d.ts +0 -9
  337. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxUtils.js +0 -16
  338. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxUtils.js.map +0 -1
  339. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.d.ts +0 -19
  340. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js +0 -229
  341. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js.map +0 -1
  342. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.d.ts +0 -7
  343. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js +0 -51
  344. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js.map +0 -1
  345. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.d.ts +0 -15
  346. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.js +0 -64
  347. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.js.map +0 -1
  348. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.d.ts +0 -6
  349. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js +0 -13
  350. package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js.map +0 -1
  351. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.d.ts +0 -56
  352. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js +0 -75
  353. package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js.map +0 -1
  354. package/dist/dist-esm/react-components/src/components/SendBoxErrors.d.ts +0 -14
  355. package/dist/dist-esm/react-components/src/components/SendBoxErrors.js +0 -18
  356. package/dist/dist-esm/react-components/src/components/SendBoxErrors.js.map +0 -1
  357. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.d.ts +0 -24
  358. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +0 -550
  359. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +0 -1
  360. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.d.ts +0 -152
  361. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js +0 -819
  362. package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js.map +0 -1
  363. package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.d.ts +0 -58
  364. package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.js +0 -144
  365. package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.js.map +0 -1
  366. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.d.ts +0 -26
  367. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js +0 -69
  368. package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js.map +0 -1
  369. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +0 -82
  370. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +0 -328
  371. package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +0 -1
  372. package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.d.ts +0 -21
  373. package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.js +0 -38
  374. package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.js.map +0 -1
  375. package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.d.ts +0 -38
  376. package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js +0 -99
  377. package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js.map +0 -1
  378. package/dist/dist-esm/react-components/src/components/styles/Stack.style.d.ts +0 -5
  379. package/dist/dist-esm/react-components/src/components/styles/Stack.style.js +0 -32
  380. package/dist/dist-esm/react-components/src/components/styles/Stack.style.js.map +0 -1
  381. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +0 -73
  382. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +0 -178
  383. package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +0 -1
  384. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.d.ts +0 -33
  385. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js +0 -119
  386. package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js.map +0 -1
  387. package/dist/dist-esm/react-components/src/components/utils/merge.d.ts +0 -7
  388. package/dist/dist-esm/react-components/src/components/utils/merge.js +0 -16
  389. package/dist/dist-esm/react-components/src/components/utils/merge.js.map +0 -1
  390. package/dist/dist-esm/react-components/src/theming/icons.styles.d.ts +0 -6
  391. package/dist/dist-esm/react-components/src/theming/icons.styles.js +0 -25
  392. package/dist/dist-esm/react-components/src/theming/icons.styles.js.map +0 -1
  393. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +0 -46
  394. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +0 -200
  395. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +0 -1
  396. package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.d.ts +0 -15
  397. package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.js +0 -23
  398. package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.js.map +0 -1
  399. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +0 -18
  400. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js +0 -18
  401. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js.map +0 -1
  402. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.d.ts +0 -49
  403. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js +0 -44
  404. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js.map +0 -1
  405. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +0 -39
  406. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +0 -265
  407. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +0 -1
  408. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +0 -80
  409. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js +0 -36
  410. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +0 -1
  411. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.d.ts +0 -38
  412. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js +0 -67
  413. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js.map +0 -1
  414. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.d.ts +0 -5
  415. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js +0 -5
  416. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js.map +0 -1
  417. package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.d.ts +0 -10
  418. package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.js +0 -16
  419. package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CallSubscriber.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/CallSubscriber.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Features, LocalVideoStream, RemoteParticipant } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallCommon } from './BetaToStableTypes';\nimport { CallContext } from './CallContext';\nimport { CallIdRef } from './CallIdRef';\nimport { CaptionsFeatureSubscriber } from './CaptionsSubscriber';\nimport { convertSdkLocalStreamToDeclarativeLocalStream, convertSdkParticipantToDeclarativeParticipant } from './Converter';\nimport { InternalCallContext } from './InternalCallContext';\nimport { LocalVideoStreamVideoEffectsSubscriber } from './LocalVideoStreamVideoEffectsSubscriber';\nimport { ParticipantSubscriber } from './ParticipantSubscriber';\nimport { RecordingSubscriber } from './RecordingSubscriber';\nimport { PPTLiveSubscriber } from './PPTLiveSubscriber';\nimport { disposeView } from './StreamUtils';\nimport { TranscriptionSubscriber } from './TranscriptionSubscriber';\nimport { UserFacingDiagnosticsSubscriber } from './UserFacingDiagnosticsSubscriber';\nimport { RaiseHandSubscriber } from './RaiseHandSubscriber';\nimport { OptimalVideoCountSubscriber } from './OptimalVideoCountSubscriber';\nimport { CapabilitiesSubscriber } from './CapabilitiesSubscriber';\nimport { ReactionSubscriber } from './ReactionSubscriber';\nimport { SpotlightSubscriber } from './SpotlightSubscriber';\nimport { BreakoutRoomsSubscriber } from './BreakoutRoomsSubscriber';\nimport { LocalRecordingSubscriber } from './LocalRecordingSubscriber';\nimport { TogetherModeSubscriber } from './TogetherModeSubscriber';\nimport { MediaAccessSubscriber } from './MediaAccessSubscriber';\nimport { _isTeamsMeeting } from './TypeGuards';\nimport { RealTimeTextSubscriber } from './RealTimeTextSubscriber';\n\n/**\n * Keeps track of the listeners assigned to a particular call because when we get an event from SDK, it doesn't tell us\n * which call it is for. If we keep track of this then we know which call in the state that needs an update and also\n * which property of that call. Also we can use this when unregistering to a call.\n */\nexport class CallSubscriber {\n private _call: CallCommon;\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _internalContext: InternalCallContext;\n private _diagnosticsSubscriber: UserFacingDiagnosticsSubscriber;\n private _participantSubscribers: Map<string, ParticipantSubscriber>;\n private _recordingSubscriber: RecordingSubscriber;\n private _transcriptionSubscriber: TranscriptionSubscriber;\n private _localRecordingSubscriber?: LocalRecordingSubscriber;\n private _pptLiveSubscriber: PPTLiveSubscriber;\n private _optimalVideoCountSubscriber: OptimalVideoCountSubscriber;\n private _CaptionsFeatureSubscriber?: CaptionsFeatureSubscriber;\n private _realTimeTextSubscriber?: RealTimeTextSubscriber;\n private _raiseHandSubscriber?: RaiseHandSubscriber;\n private _reactionSubscriber?: ReactionSubscriber;\n private _localVideoStreamVideoEffectsSubscribers: Map<string, LocalVideoStreamVideoEffectsSubscriber>;\n private _capabilitiesSubscriber: CapabilitiesSubscriber;\n private _spotlightSubscriber: SpotlightSubscriber;\n private _breakoutRoomsSubscriber: BreakoutRoomsSubscriber;\n private _togetherModeSubscriber: TogetherModeSubscriber;\n private _mediaAccessSubscriber: MediaAccessSubscriber;\n constructor(call: CallCommon, context: CallContext, internalContext: InternalCallContext) {\n this._call = call;\n this._callIdRef = {\n callId: call.id\n };\n this._context = context;\n this._internalContext = internalContext;\n this._diagnosticsSubscriber = new UserFacingDiagnosticsSubscriber(this._callIdRef, this._context, this._call.feature(Features.UserFacingDiagnostics));\n this._participantSubscribers = new Map<string, ParticipantSubscriber>();\n this._recordingSubscriber = new RecordingSubscriber(this._callIdRef, this._context, this._call.feature(Features.Recording));\n this._pptLiveSubscriber = new PPTLiveSubscriber(this._callIdRef, this._context, this._call);\n this._transcriptionSubscriber = new TranscriptionSubscriber(this._callIdRef, this._context, this._call.feature(Features.Transcription));\n this._raiseHandSubscriber = new RaiseHandSubscriber(this._callIdRef, this._context, this._call.feature(Features.RaiseHand));\n this._reactionSubscriber = new ReactionSubscriber(this._callIdRef, this._context, this._call.feature(Features.Reaction));\n this._optimalVideoCountSubscriber = new OptimalVideoCountSubscriber({\n callIdRef: this._callIdRef,\n context: this._context,\n localOptimalVideoCountFeature: this._call.feature(Features.OptimalVideoCount)\n });\n this._localVideoStreamVideoEffectsSubscribers = new Map();\n this._capabilitiesSubscriber = new CapabilitiesSubscriber(this._callIdRef, this._context, this._call.feature(Features.Capabilities));\n this._spotlightSubscriber = new SpotlightSubscriber(this._callIdRef, this._context, this._call.feature(Features.Spotlight));\n\n // Clear assigned breakout room closed notification for this call.\n this._context.deleteLatestNotification('assignedBreakoutRoomClosed');\n this._breakoutRoomsSubscriber = new BreakoutRoomsSubscriber(this._callIdRef, this._context, this._call.feature(Features.BreakoutRooms));\n this._togetherModeSubscriber = new TogetherModeSubscriber(this._callIdRef, this._context, this._internalContext, this._call.feature(Features.TogetherMode));\n this._mediaAccessSubscriber = new MediaAccessSubscriber(this._callIdRef, this._context, this._call.feature(Features.MediaAccess));\n this.subscribe();\n }\n private _safeSubscribeInitCaptionSubscriber = (): void => {\n this._safeSubscribe(this.initCaptionSubscriber);\n };\n private _safeSubscribeInitTeamsMeetingConference = (): void => {\n this._safeSubscribe(this.initTeamsMeetingConference);\n };\n private _safeSubscribeInitRealTimeText = (): void => {\n this._safeSubscribe(this.initRealTimeText);\n };\n private _safeSubscribeInitLocalRecordingNotificationSubscriber = (): void => {\n this._safeSubscribe(this.initLocalRecordingNotificationSubscriber);\n };\n private subscribe = (): void => {\n this._call.on('stateChanged', this.stateChanged);\n this._call.on('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n this._call.on('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n this._call.on('stateChanged', this._safeSubscribeInitLocalRecordingNotificationSubscriber);\n this._call.on('idChanged', this.idChanged);\n this._call.on('isScreenSharingOnChanged', this.isScreenSharingOnChanged);\n this._call.on('remoteParticipantsUpdated', this.remoteParticipantsUpdated);\n this._call.on('localVideoStreamsUpdated', this.localVideoStreamsUpdated);\n this._call.on('isMutedChanged', this.isMuteChanged);\n this._call.on('roleChanged', this.callRoleChangedHandler);\n this._call.feature(Features.DominantSpeakers).on('dominantSpeakersChanged', this.dominantSpeakersChanged);\n this._call.on('totalParticipantCountChanged', this.totalParticipantCountChangedHandler);\n this._call.on('mutedByOthers', this.mutedByOthersHandler);\n this._safeSubscribeInitRealTimeText();\n for (const localVideoStream of this._call.localVideoStreams) {\n this._internalContext.setLocalRenderInfo(this._callIdRef.callId, localVideoStream.mediaStreamType, localVideoStream, 'NotRendered', undefined);\n }\n if (this._call.remoteParticipants.length > 0) {\n this._call.remoteParticipants.forEach((participant: RemoteParticipant) => {\n this.addParticipantListener(participant);\n });\n this._context.setCallRemoteParticipants(this._callIdRef.callId, this._call.remoteParticipants.map(convertSdkParticipantToDeclarativeParticipant), []);\n }\n };\n public unsubscribe = (): void => {\n this._call.off('stateChanged', this.stateChanged);\n this._call.off('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n this._call.off('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n this._call.off('stateChanged', this._safeSubscribeInitLocalRecordingNotificationSubscriber);\n this._call.off('idChanged', this.idChanged);\n this._call.off('isScreenSharingOnChanged', this.isScreenSharingOnChanged);\n this._call.off('remoteParticipantsUpdated', this.remoteParticipantsUpdated);\n this._call.off('localVideoStreamsUpdated', this.localVideoStreamsUpdated);\n this._call.off('isMutedChanged', this.isMuteChanged);\n this._call.off('roleChanged', this.callRoleChangedHandler);\n this._call.off('totalParticipantCountChanged', this.totalParticipantCountChangedHandler);\n this._call.off('mutedByOthers', this.mutedByOthersHandler);\n this._participantSubscribers.forEach((participantSubscriber: ParticipantSubscriber) => {\n participantSubscriber.unsubscribe();\n });\n this._participantSubscribers.clear();\n\n // If we are unsubscribing that means we no longer want to display any video for this call (callEnded or callAgent\n // disposed) and we should not be updating it any more. So if video is rendering we stop rendering.\n for (const localVideoStream of this._call.localVideoStreams) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));\n this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);\n }\n this._diagnosticsSubscriber.unsubscribe();\n this._recordingSubscriber.unsubscribe();\n this._transcriptionSubscriber.unsubscribe();\n this._localRecordingSubscriber?.unsubscribe();\n this._optimalVideoCountSubscriber.unsubscribe();\n this._pptLiveSubscriber.unsubscribe();\n this._CaptionsFeatureSubscriber?.unsubscribe();\n if (this._realTimeTextSubscriber) {\n this._realTimeTextSubscriber.unsubscribe();\n }\n this._raiseHandSubscriber?.unsubscribe();\n this._capabilitiesSubscriber.unsubscribe();\n this._reactionSubscriber?.unsubscribe();\n this._spotlightSubscriber.unsubscribe();\n this._breakoutRoomsSubscriber.unsubscribe();\n this._togetherModeSubscriber.unsubscribe();\n this._mediaAccessSubscriber.unsubscribe();\n };\n\n // This is a helper function to safely call subscriber functions. This is needed in order to prevent events\n // with the same event type from failing to fire due to a subscriber throwing an error upon subscription.\n // Wrap your listeners with this helper function if your listener can fail due to initialization or fail\n // during a function call. This will prevent other events using the same event type from failing to fire.\n private _safeSubscribe(subscriber: () => void): void {\n try {\n subscriber();\n } catch (e) {\n this._context.teeErrorToState(e as Error, 'Call.on');\n }\n }\n private addParticipantListener(participant: RemoteParticipant): void {\n const participantKey = toFlatCommunicationIdentifier(participant.identifier);\n this._participantSubscribers.get(participantKey)?.unsubscribe();\n this._participantSubscribers.set(participantKey, new ParticipantSubscriber(this._callIdRef, participant, this._context, this._internalContext));\n }\n private removeParticipantListener(participant: RemoteParticipant): void {\n const participantKey = toFlatCommunicationIdentifier(participant.identifier);\n const participantSubscriber = this._participantSubscribers.get(participantKey);\n if (participantSubscriber) {\n participantSubscriber.unsubscribe();\n this._participantSubscribers.delete(participantKey);\n }\n }\n private stateChanged = (): void => {\n this._context.setCallState(this._callIdRef.callId, this._call.state);\n };\n private initCaptionSubscriber = (): void => {\n // subscribe to captions here so that we don't call captions when call is not initialized\n if (this._call.state === 'Connected' && !this._CaptionsFeatureSubscriber) {\n this._CaptionsFeatureSubscriber = new CaptionsFeatureSubscriber(this._callIdRef, this._context, this._call.feature(Features.Captions));\n this._call.off('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n }\n };\n private initTeamsMeetingConference = (): void => {\n if (this._call.state === 'Connected' && _isTeamsMeeting(this._call)) {\n this._call.feature(Features.TeamsMeetingAudioConferencing).getTeamsMeetingAudioConferencingDetails().then(teamsMeetingConferenceDetails => {\n this._context.setTeamsMeetingConference(this._callIdRef.callId, teamsMeetingConferenceDetails);\n });\n this._call.off('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n }\n };\n private initRealTimeText = (): void => {\n if (this._context.getState().userId.kind !== 'microsoftTeamsUser') {\n this._realTimeTextSubscriber = new RealTimeTextSubscriber(this._callIdRef, this._context, this._call.feature(Features.RealTimeText));\n }\n };\n private initLocalRecordingNotificationSubscriber = (): void => {\n // Subscribe to LocalRecordingFeature as it is only available in interop scenarios\n // Will throw an error if not in interop scenarios\n if (this._call.state === 'Connected' && this._call.kind === 'TeamsCall' && !this._localRecordingSubscriber) {\n this._localRecordingSubscriber = new LocalRecordingSubscriber(this._callIdRef, this._context, this._call.feature(Features.LocalRecording));\n this._call.off('stateChanged', this._safeSubscribeInitLocalRecordingNotificationSubscriber);\n }\n };\n private idChanged = (): void => {\n this._internalContext.setCallId(this._call.id, this._callIdRef.callId);\n this._context.setCallId(this._call.id, this._callIdRef.callId);\n this._callIdRef.callId = this._call.id;\n };\n private isScreenSharingOnChanged = (): void => {\n this._context.setCallIsScreenSharingOn(this._callIdRef.callId, this._call.isScreenSharingOn);\n };\n private isMuteChanged = (): void => {\n this._context.setCallIsMicrophoneMuted(this._callIdRef.callId, this._call.isMuted);\n };\n private callRoleChangedHandler = (): void => {\n this._context.setRole(this._callIdRef.callId, this._call.role);\n };\n private totalParticipantCountChangedHandler = (): void => {\n this._context.setTotalParticipantCount(this._callIdRef.callId, this._call.totalParticipantCount);\n };\n\n // TODO: Tee to notification state once available\n private mutedByOthersHandler = (): void => {\n this._context.teeErrorToState({\n name: 'mutedByOthers',\n message: 'Muted by another participant'\n }, 'Call.mutedByOthers');\n };\n private remoteParticipantsUpdated = (event: {\n added: RemoteParticipant[];\n removed: RemoteParticipant[];\n }): void => {\n event.added.forEach((participant: RemoteParticipant) => {\n this.addParticipantListener(participant);\n });\n event.removed.forEach((participant: RemoteParticipant) => {\n this.removeParticipantListener(participant);\n });\n\n // Remove any added participants from remoteParticipantsEnded if they are there and add any removed participants to\n // remoteParticipantsEnded.\n this._context.setCallRemoteParticipantsEnded(this._callIdRef.callId, event.removed.map(convertSdkParticipantToDeclarativeParticipant), event.added.map((participant: RemoteParticipant) => {\n return toFlatCommunicationIdentifier(participant.identifier);\n }));\n\n // Add added participants to remoteParticipants and remove removed participants from remoteParticipants.\n this._context.setCallRemoteParticipants(this._callIdRef.callId, event.added.map(convertSdkParticipantToDeclarativeParticipant), event.removed.map((participant: RemoteParticipant) => {\n return toFlatCommunicationIdentifier(participant.identifier);\n }));\n };\n private localVideoStreamsUpdated = (event: {\n added: LocalVideoStream[];\n removed: LocalVideoStream[];\n }): void => {\n for (const localVideoStream of event.added) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n // IMPORTANT: The internalContext should be set before context. This is done to ensure that the internal context\n // has the required data when component re-renders due to external state changes.\n this._internalContext.setLocalRenderInfo(this._callIdRef.callId, mediaStreamType, localVideoStream, 'NotRendered', undefined);\n\n // Subscribe to video effect changes\n this._localVideoStreamVideoEffectsSubscribers.get(mediaStreamType)?.unsubscribe();\n this._localVideoStreamVideoEffectsSubscribers.set(mediaStreamType, new LocalVideoStreamVideoEffectsSubscriber({\n parent: this._callIdRef,\n context: this._context,\n localVideoStream: localVideoStream,\n localVideoStreamEffectsAPI: localVideoStream.feature(Features.VideoEffects)\n }));\n }\n for (const localVideoStream of event.removed) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n this._localVideoStreamVideoEffectsSubscribers.get(mediaStreamType)?.unsubscribe();\n disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));\n this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);\n }\n this._context.setCallLocalVideoStream(this._callIdRef.callId, event.added.map(convertSdkLocalStreamToDeclarativeLocalStream), event.removed.map(convertSdkLocalStreamToDeclarativeLocalStream));\n };\n private dominantSpeakersChanged = (): void => {\n const dominantSpeakers = this._call.feature(Features.DominantSpeakers).dominantSpeakers;\n this._context.setCallDominantSpeakers(this._callIdRef.callId, dominantSpeakers);\n };\n}"]}
1
+ {"version":3,"file":"CallSubscriber.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/CallSubscriber.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Features, LocalVideoStream, RemoteParticipant } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallCommon } from './BetaToStableTypes';\nimport { CallContext } from './CallContext';\nimport { CallIdRef } from './CallIdRef';\nimport { CaptionsFeatureSubscriber } from './CaptionsSubscriber';\nimport { convertSdkLocalStreamToDeclarativeLocalStream, convertSdkParticipantToDeclarativeParticipant } from './Converter';\nimport { InternalCallContext } from './InternalCallContext';\nimport { LocalVideoStreamVideoEffectsSubscriber } from './LocalVideoStreamVideoEffectsSubscriber';\nimport { ParticipantSubscriber } from './ParticipantSubscriber';\nimport { RecordingSubscriber } from './RecordingSubscriber';\nimport { PPTLiveSubscriber } from './PPTLiveSubscriber';\nimport { disposeView } from './StreamUtils';\nimport { TranscriptionSubscriber } from './TranscriptionSubscriber';\nimport { UserFacingDiagnosticsSubscriber } from './UserFacingDiagnosticsSubscriber';\nimport { RaiseHandSubscriber } from './RaiseHandSubscriber';\nimport { OptimalVideoCountSubscriber } from './OptimalVideoCountSubscriber';\nimport { CapabilitiesSubscriber } from './CapabilitiesSubscriber';\nimport { ReactionSubscriber } from './ReactionSubscriber';\nimport { SpotlightSubscriber } from './SpotlightSubscriber';\nimport { BreakoutRoomsSubscriber } from './BreakoutRoomsSubscriber';\nimport { TogetherModeSubscriber } from './TogetherModeSubscriber';\nimport { MediaAccessSubscriber } from './MediaAccessSubscriber';\nimport { _isTeamsMeeting } from './TypeGuards';\nimport { RealTimeTextSubscriber } from './RealTimeTextSubscriber';\n\n/**\n * Keeps track of the listeners assigned to a particular call because when we get an event from SDK, it doesn't tell us\n * which call it is for. If we keep track of this then we know which call in the state that needs an update and also\n * which property of that call. Also we can use this when unregistering to a call.\n */\nexport class CallSubscriber {\n private _call: CallCommon;\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _internalContext: InternalCallContext;\n private _diagnosticsSubscriber: UserFacingDiagnosticsSubscriber;\n private _participantSubscribers: Map<string, ParticipantSubscriber>;\n private _recordingSubscriber: RecordingSubscriber;\n private _transcriptionSubscriber: TranscriptionSubscriber;\n private _pptLiveSubscriber: PPTLiveSubscriber;\n private _optimalVideoCountSubscriber: OptimalVideoCountSubscriber;\n private _CaptionsFeatureSubscriber?: CaptionsFeatureSubscriber;\n private _realTimeTextSubscriber?: RealTimeTextSubscriber;\n private _raiseHandSubscriber?: RaiseHandSubscriber;\n private _reactionSubscriber?: ReactionSubscriber;\n private _localVideoStreamVideoEffectsSubscribers: Map<string, LocalVideoStreamVideoEffectsSubscriber>;\n private _capabilitiesSubscriber: CapabilitiesSubscriber;\n private _spotlightSubscriber: SpotlightSubscriber;\n private _breakoutRoomsSubscriber: BreakoutRoomsSubscriber;\n private _togetherModeSubscriber: TogetherModeSubscriber;\n private _mediaAccessSubscriber: MediaAccessSubscriber;\n constructor(call: CallCommon, context: CallContext, internalContext: InternalCallContext) {\n this._call = call;\n this._callIdRef = {\n callId: call.id\n };\n this._context = context;\n this._internalContext = internalContext;\n this._diagnosticsSubscriber = new UserFacingDiagnosticsSubscriber(this._callIdRef, this._context, this._call.feature(Features.UserFacingDiagnostics));\n this._participantSubscribers = new Map<string, ParticipantSubscriber>();\n this._recordingSubscriber = new RecordingSubscriber(this._callIdRef, this._context, this._call.feature(Features.Recording));\n this._pptLiveSubscriber = new PPTLiveSubscriber(this._callIdRef, this._context, this._call);\n this._transcriptionSubscriber = new TranscriptionSubscriber(this._callIdRef, this._context, this._call.feature(Features.Transcription));\n this._raiseHandSubscriber = new RaiseHandSubscriber(this._callIdRef, this._context, this._call.feature(Features.RaiseHand));\n this._reactionSubscriber = new ReactionSubscriber(this._callIdRef, this._context, this._call.feature(Features.Reaction));\n this._optimalVideoCountSubscriber = new OptimalVideoCountSubscriber({\n callIdRef: this._callIdRef,\n context: this._context,\n localOptimalVideoCountFeature: this._call.feature(Features.OptimalVideoCount)\n });\n this._localVideoStreamVideoEffectsSubscribers = new Map();\n this._capabilitiesSubscriber = new CapabilitiesSubscriber(this._callIdRef, this._context, this._call.feature(Features.Capabilities));\n this._spotlightSubscriber = new SpotlightSubscriber(this._callIdRef, this._context, this._call.feature(Features.Spotlight));\n\n // Clear assigned breakout room closed notification for this call.\n this._context.deleteLatestNotification('assignedBreakoutRoomClosed');\n this._breakoutRoomsSubscriber = new BreakoutRoomsSubscriber(this._callIdRef, this._context, this._call.feature(Features.BreakoutRooms));\n this._togetherModeSubscriber = new TogetherModeSubscriber(this._callIdRef, this._context, this._internalContext, this._call.feature(Features.TogetherMode));\n this._mediaAccessSubscriber = new MediaAccessSubscriber(this._callIdRef, this._context, this._call.feature(Features.MediaAccess));\n this.subscribe();\n }\n private _safeSubscribeInitCaptionSubscriber = (): void => {\n this._safeSubscribe(this.initCaptionSubscriber);\n };\n private _safeSubscribeInitTeamsMeetingConference = (): void => {\n this._safeSubscribe(this.initTeamsMeetingConference);\n };\n private _safeSubscribeInitRealTimeText = (): void => {\n this._safeSubscribe(this.initRealTimeText);\n };\n private subscribe = (): void => {\n this._call.on('stateChanged', this.stateChanged);\n this._call.on('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n this._call.on('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n this._call.on('idChanged', this.idChanged);\n this._call.on('isScreenSharingOnChanged', this.isScreenSharingOnChanged);\n this._call.on('remoteParticipantsUpdated', this.remoteParticipantsUpdated);\n this._call.on('localVideoStreamsUpdated', this.localVideoStreamsUpdated);\n this._call.on('isMutedChanged', this.isMuteChanged);\n this._call.on('roleChanged', this.callRoleChangedHandler);\n this._call.feature(Features.DominantSpeakers).on('dominantSpeakersChanged', this.dominantSpeakersChanged);\n this._call.on('mutedByOthers', this.mutedByOthersHandler);\n this._safeSubscribeInitRealTimeText();\n for (const localVideoStream of this._call.localVideoStreams) {\n this._internalContext.setLocalRenderInfo(this._callIdRef.callId, localVideoStream.mediaStreamType, localVideoStream, 'NotRendered', undefined);\n }\n if (this._call.remoteParticipants.length > 0) {\n this._call.remoteParticipants.forEach((participant: RemoteParticipant) => {\n this.addParticipantListener(participant);\n });\n this._context.setCallRemoteParticipants(this._callIdRef.callId, this._call.remoteParticipants.map(convertSdkParticipantToDeclarativeParticipant), []);\n }\n };\n public unsubscribe = (): void => {\n this._call.off('stateChanged', this.stateChanged);\n this._call.off('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n this._call.off('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n this._call.off('idChanged', this.idChanged);\n this._call.off('isScreenSharingOnChanged', this.isScreenSharingOnChanged);\n this._call.off('remoteParticipantsUpdated', this.remoteParticipantsUpdated);\n this._call.off('localVideoStreamsUpdated', this.localVideoStreamsUpdated);\n this._call.off('isMutedChanged', this.isMuteChanged);\n this._call.off('roleChanged', this.callRoleChangedHandler);\n this._call.off('mutedByOthers', this.mutedByOthersHandler);\n this._participantSubscribers.forEach((participantSubscriber: ParticipantSubscriber) => {\n participantSubscriber.unsubscribe();\n });\n this._participantSubscribers.clear();\n\n // If we are unsubscribing that means we no longer want to display any video for this call (callEnded or callAgent\n // disposed) and we should not be updating it any more. So if video is rendering we stop rendering.\n for (const localVideoStream of this._call.localVideoStreams) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));\n this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);\n }\n this._diagnosticsSubscriber.unsubscribe();\n this._recordingSubscriber.unsubscribe();\n this._transcriptionSubscriber.unsubscribe();\n this._optimalVideoCountSubscriber.unsubscribe();\n this._pptLiveSubscriber.unsubscribe();\n this._CaptionsFeatureSubscriber?.unsubscribe();\n if (this._realTimeTextSubscriber) {\n this._realTimeTextSubscriber.unsubscribe();\n }\n this._raiseHandSubscriber?.unsubscribe();\n this._capabilitiesSubscriber.unsubscribe();\n this._reactionSubscriber?.unsubscribe();\n this._spotlightSubscriber.unsubscribe();\n this._breakoutRoomsSubscriber.unsubscribe();\n this._togetherModeSubscriber.unsubscribe();\n this._mediaAccessSubscriber.unsubscribe();\n };\n\n // This is a helper function to safely call subscriber functions. This is needed in order to prevent events\n // with the same event type from failing to fire due to a subscriber throwing an error upon subscription.\n // Wrap your listeners with this helper function if your listener can fail due to initialization or fail\n // during a function call. This will prevent other events using the same event type from failing to fire.\n private _safeSubscribe(subscriber: () => void): void {\n try {\n subscriber();\n } catch (e) {\n this._context.teeErrorToState(e as Error, 'Call.on');\n }\n }\n private addParticipantListener(participant: RemoteParticipant): void {\n const participantKey = toFlatCommunicationIdentifier(participant.identifier);\n this._participantSubscribers.get(participantKey)?.unsubscribe();\n this._participantSubscribers.set(participantKey, new ParticipantSubscriber(this._callIdRef, participant, this._context, this._internalContext));\n }\n private removeParticipantListener(participant: RemoteParticipant): void {\n const participantKey = toFlatCommunicationIdentifier(participant.identifier);\n const participantSubscriber = this._participantSubscribers.get(participantKey);\n if (participantSubscriber) {\n participantSubscriber.unsubscribe();\n this._participantSubscribers.delete(participantKey);\n }\n }\n private stateChanged = (): void => {\n this._context.setCallState(this._callIdRef.callId, this._call.state);\n };\n private initCaptionSubscriber = (): void => {\n // subscribe to captions here so that we don't call captions when call is not initialized\n if (this._call.state === 'Connected' && !this._CaptionsFeatureSubscriber) {\n this._CaptionsFeatureSubscriber = new CaptionsFeatureSubscriber(this._callIdRef, this._context, this._call.feature(Features.Captions));\n this._call.off('stateChanged', this._safeSubscribeInitCaptionSubscriber);\n }\n };\n private initTeamsMeetingConference = (): void => {\n if (this._call.state === 'Connected' && _isTeamsMeeting(this._call)) {\n this._call.feature(Features.TeamsMeetingAudioConferencing).getTeamsMeetingAudioConferencingDetails().then(teamsMeetingConferenceDetails => {\n this._context.setTeamsMeetingConference(this._callIdRef.callId, teamsMeetingConferenceDetails);\n });\n this._call.off('stateChanged', this._safeSubscribeInitTeamsMeetingConference);\n }\n };\n private initRealTimeText = (): void => {\n if (this._context.getState().userId.kind !== 'microsoftTeamsUser') {\n this._realTimeTextSubscriber = new RealTimeTextSubscriber(this._callIdRef, this._context, this._call.feature(Features.RealTimeText));\n }\n };\n private idChanged = (): void => {\n this._internalContext.setCallId(this._call.id, this._callIdRef.callId);\n this._context.setCallId(this._call.id, this._callIdRef.callId);\n this._callIdRef.callId = this._call.id;\n };\n private isScreenSharingOnChanged = (): void => {\n this._context.setCallIsScreenSharingOn(this._callIdRef.callId, this._call.isScreenSharingOn);\n };\n private isMuteChanged = (): void => {\n this._context.setCallIsMicrophoneMuted(this._callIdRef.callId, this._call.isMuted);\n };\n private callRoleChangedHandler = (): void => {\n this._context.setRole(this._callIdRef.callId, this._call.role);\n };\n // TODO: Tee to notification state once available\n private mutedByOthersHandler = (): void => {\n this._context.teeErrorToState({\n name: 'mutedByOthers',\n message: 'Muted by another participant'\n }, 'Call.mutedByOthers');\n };\n private remoteParticipantsUpdated = (event: {\n added: RemoteParticipant[];\n removed: RemoteParticipant[];\n }): void => {\n event.added.forEach((participant: RemoteParticipant) => {\n this.addParticipantListener(participant);\n });\n event.removed.forEach((participant: RemoteParticipant) => {\n this.removeParticipantListener(participant);\n });\n\n // Remove any added participants from remoteParticipantsEnded if they are there and add any removed participants to\n // remoteParticipantsEnded.\n this._context.setCallRemoteParticipantsEnded(this._callIdRef.callId, event.removed.map(convertSdkParticipantToDeclarativeParticipant), event.added.map((participant: RemoteParticipant) => {\n return toFlatCommunicationIdentifier(participant.identifier);\n }));\n\n // Add added participants to remoteParticipants and remove removed participants from remoteParticipants.\n this._context.setCallRemoteParticipants(this._callIdRef.callId, event.added.map(convertSdkParticipantToDeclarativeParticipant), event.removed.map((participant: RemoteParticipant) => {\n return toFlatCommunicationIdentifier(participant.identifier);\n }));\n };\n private localVideoStreamsUpdated = (event: {\n added: LocalVideoStream[];\n removed: LocalVideoStream[];\n }): void => {\n for (const localVideoStream of event.added) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n // IMPORTANT: The internalContext should be set before context. This is done to ensure that the internal context\n // has the required data when component re-renders due to external state changes.\n this._internalContext.setLocalRenderInfo(this._callIdRef.callId, mediaStreamType, localVideoStream, 'NotRendered', undefined);\n\n // Subscribe to video effect changes\n this._localVideoStreamVideoEffectsSubscribers.get(mediaStreamType)?.unsubscribe();\n this._localVideoStreamVideoEffectsSubscribers.set(mediaStreamType, new LocalVideoStreamVideoEffectsSubscriber({\n parent: this._callIdRef,\n context: this._context,\n localVideoStream: localVideoStream,\n localVideoStreamEffectsAPI: localVideoStream.feature(Features.VideoEffects)\n }));\n }\n for (const localVideoStream of event.removed) {\n const mediaStreamType = localVideoStream.mediaStreamType;\n this._localVideoStreamVideoEffectsSubscribers.get(mediaStreamType)?.unsubscribe();\n disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));\n this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);\n }\n this._context.setCallLocalVideoStream(this._callIdRef.callId, event.added.map(convertSdkLocalStreamToDeclarativeLocalStream), event.removed.map(convertSdkLocalStreamToDeclarativeLocalStream));\n };\n private dominantSpeakersChanged = (): void => {\n const dominantSpeakers = this._call.feature(Features.DominantSpeakers).dominantSpeakers;\n this._context.setCallDominantSpeakers(this._callIdRef.callId, dominantSpeakers);\n };\n}"]}
@@ -110,9 +110,6 @@ export function convertSdkCallToDeclarativeCall(call) {
110
110
  recording: {
111
111
  isRecordingActive: false
112
112
  },
113
- localRecording: {
114
- isLocalRecordingActive: false
115
- },
116
113
  pptLive: {
117
114
  isActive: false
118
115
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Converter.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/Converter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RemoteParticipant as SdkRemoteParticipant, RemoteVideoStream as SdkRemoteVideoStream, LocalVideoStream as SdkLocalVideoStream, VideoStreamRendererView, IncomingCall, IncomingCallCommon } from '@azure/communication-calling';\nimport { RealTimeTextInfo as ACSRealTimeTextInfo } from '@azure/communication-calling';\nimport { RealTimeTextInfo } from './CallClientState';\nimport { TogetherModeVideoStream as SdkTogetherModeVideoStream } from '@azure/communication-calling';\nimport { TeamsIncomingCall } from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\nimport { CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\nimport { CallKind } from '@azure/communication-calling';\nimport { TeamsCallInfo } from '@azure/communication-calling';\nimport { CallInfo } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallState, RemoteParticipantState as DeclarativeRemoteParticipant, RemoteVideoStreamState as DeclarativeRemoteVideoStream, LocalVideoStreamState as DeclarativeLocalVideoStream, IncomingCallState as DeclarativeIncomingCall, VideoStreamRendererViewState as DeclarativeVideoStreamRendererView, CallInfoState } from './CallClientState';\nimport { CallFeatureStreamState as DeclarativeCallFeatureVideoStream, CallFeatureStreamName } from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\nimport { TeamsIncomingCallState as DeclarativeTeamsIncomingCall } from './CallClientState';\nimport { _isTeamsIncomingCall } from './TypeGuards';\nimport { _isACSCall } from './TypeGuards';\nimport { _isTeamsCall } from './TypeGuards';\nimport { CallCommon } from './BetaToStableTypes';\nimport { Features } from '@azure/communication-calling';\nimport { VideoEffectName } from '@azure/communication-calling';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { RaisedHand } from '@azure/communication-calling';\nimport { RaisedHandState } from './CallClientState';\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\nimport { ConferencePhoneInfo } from './CallClientState';\n\n/**\n * @private\n */\nexport function convertSdkLocalStreamToDeclarativeLocalStream(stream: SdkLocalVideoStream): DeclarativeLocalVideoStream {\n const localVideoStreamEffectsAPI = stream.feature(Features.VideoEffects);\n return {\n source: stream.source,\n mediaStreamType: stream.mediaStreamType,\n view: undefined,\n videoEffects: convertFromSDKToDeclarativeVideoStreamVideoEffects(localVideoStreamEffectsAPI.activeEffects)\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkRemoteStreamToDeclarativeRemoteStream(stream: SdkRemoteVideoStream): DeclarativeRemoteVideoStream {\n return {\n id: stream.id,\n mediaStreamType: stream.mediaStreamType,\n isAvailable: stream.isAvailable,\n isReceiving: stream.isReceiving,\n view: undefined,\n streamSize: stream.size\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream: SdkTogetherModeVideoStream, featureName: CallFeatureStreamName): DeclarativeCallFeatureVideoStream {\n return {\n feature: featureName,\n id: stream.id,\n mediaStreamType: stream.mediaStreamType,\n isAvailable: stream.isAvailable,\n isReceiving: stream.isReceiving,\n view: undefined,\n streamSize: stream.size\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkParticipantToDeclarativeParticipant(participant: SdkRemoteParticipant): DeclarativeRemoteParticipant {\n const declarativeVideoStreams: {\n [key: number]: DeclarativeRemoteVideoStream;\n } = {};\n for (const videoStream of participant.videoStreams) {\n declarativeVideoStreams[videoStream.id] = convertSdkRemoteStreamToDeclarativeRemoteStream(videoStream);\n }\n return {\n identifier: participant.identifier,\n displayName: participant.displayName,\n state: participant.state,\n callEndReason: participant.callEndReason,\n videoStreams: declarativeVideoStreams,\n isMuted: participant.isMuted,\n isSpeaking: participant.isSpeaking,\n raisedHand: undefined,\n role: participant.role,\n spotlight: undefined,\n mediaAccess: undefined\n };\n}\n\n/**\n * @private\n *\n * Note at the time of writing only one LocalVideoStream is supported by the SDK.\n */\nexport function convertSdkCallToDeclarativeCall(call: CallCommon): CallState {\n const declarativeRemoteParticipants: {\n [key: string]: DeclarativeRemoteParticipant;\n } = {};\n call.remoteParticipants.forEach((participant: SdkRemoteParticipant) => {\n declarativeRemoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = convertSdkParticipantToDeclarativeParticipant(participant);\n });\n let hideAttendeeNames = false;\n if (call.feature(Features.Capabilities).capabilities && call.feature(Features.Capabilities).capabilities.viewAttendeeNames) {\n const viewAttendeeNames = call.feature(Features.Capabilities).capabilities.viewAttendeeNames;\n if (!viewAttendeeNames.isPresent && viewAttendeeNames.reason === 'MeetingRestricted') {\n hideAttendeeNames = true;\n }\n }\n let callInfo: TeamsCallInfo | undefined | CallInfo;\n if ('info' in call) {\n callInfo = call.info as TeamsCallInfo | undefined | CallInfo;\n }\n return {\n id: call.id,\n kind: _isACSCall(call) ? 'Call' as CallKind : 'TeamsCall' as CallKind,\n callerInfo: call.callerInfo,\n state: call.state,\n callEndReason: call.callEndReason,\n diagnostics: {\n network: {\n latest: {}\n },\n media: {\n latest: {}\n }\n },\n direction: call.direction,\n isMuted: call.isMuted,\n isScreenSharingOn: call.isScreenSharingOn,\n localVideoStreams: call.localVideoStreams.map(convertSdkLocalStreamToDeclarativeLocalStream),\n remoteParticipants: declarativeRemoteParticipants,\n remoteParticipantsEnded: {},\n recording: {\n isRecordingActive: false\n },\n localRecording: {\n isLocalRecordingActive: false\n },\n pptLive: {\n isActive: false\n },\n raiseHand: {\n raisedHands: []\n },\n togetherMode: {\n isActive: false,\n streams: {},\n seatingPositions: {}\n },\n localParticipantReaction: undefined,\n transcription: {\n isTranscriptionActive: false\n },\n screenShareRemoteParticipant: undefined,\n startTime: new Date(),\n endTime: undefined,\n role: call.role,\n captionsFeature: {\n captions: [],\n supportedSpokenLanguages: [],\n supportedCaptionLanguages: [],\n currentCaptionLanguage: '',\n currentSpokenLanguage: '',\n isCaptionsFeatureActive: false,\n startCaptionsInProgress: false,\n captionsKind: _isTeamsCall(call) ? 'TeamsCaptions' : 'Captions'\n },\n realTimeTextFeature: {\n realTimeTexts: {},\n isRealTimeTextFeatureActive: false\n },\n transfer: {\n acceptedTransfers: {}\n },\n optimalVideoCount: {\n maxRemoteVideoStreams: call.feature(Features.OptimalVideoCount).optimalVideoCount\n },\n hideAttendeeNames,\n info: callInfo,\n meetingConference: {\n conferencePhones: []\n }\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkIncomingCallToDeclarativeIncomingCall(call: IncomingCallCommon): DeclarativeIncomingCall | DeclarativeTeamsIncomingCall {\n if (_isTeamsIncomingCall(call)) {\n const newInfo: CallInfoState = {\n ...(call as TeamsIncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n } else {\n const newInfo: CallInfoState = {\n ...(call as IncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n }\n const newInfo: CallInfoState = {\n ...(call as IncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToDeclarativeVideoStreamRendererView(view: VideoStreamRendererView): DeclarativeVideoStreamRendererView {\n return {\n scalingMode: view.scalingMode,\n isMirrored: view.isMirrored,\n target: view.target\n };\n}\n\n/**\n * @private\n */\nexport function convertFromTeamsSDKToCaptionInfoState(caption: TeamsCaptionsInfo): CaptionsInfo {\n return {\n ...caption\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToCaptionInfoState(caption: AcsCaptionsInfo): CaptionsInfo {\n return {\n captionText: caption.spokenText,\n ...caption\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKRealTimeTextToRealTimeTextInfoState(realTimeText: ACSRealTimeTextInfo): RealTimeTextInfo {\n return {\n message: realTimeText.text,\n isMe: realTimeText.isLocal,\n ...realTimeText\n };\n}\n\n/** @private */\nexport function convertFromSDKToDeclarativeVideoStreamVideoEffects(videoEffects: VideoEffectName[]): LocalVideoStreamVideoEffectsState {\n return {\n activeEffects: videoEffects\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToRaisedHandState(raisedHand: RaisedHand): RaisedHandState {\n return {\n raisedHandOrderPosition: raisedHand.order\n };\n}\n\n/** @private */\nexport function convertConferencePhoneInfo(meetingConferencePhoneInfo?: TeamsMeetingAudioConferencingDetails): ConferencePhoneInfo[] {\n if (!meetingConferencePhoneInfo) {\n return [];\n }\n return meetingConferencePhoneInfo.phoneNumbers.flatMap(phoneNumber => {\n const common = {\n conferenceId: meetingConferencePhoneInfo.phoneConferenceId,\n country: phoneNumber.countryName,\n city: phoneNumber.cityName,\n phoneNumber: '',\n isTollFree: false\n };\n const toll = Object.assign({}, common);\n toll.phoneNumber = phoneNumber.tollPhoneNumber?.phoneNumber ?? '';\n toll.isTollFree = false;\n const tollFree = Object.assign({}, common);\n tollFree.phoneNumber = phoneNumber.tollFreePhoneNumber?.phoneNumber ?? '';\n tollFree.isTollFree = true;\n return [toll, tollFree].filter(phoneInfo => phoneInfo.phoneNumber);\n });\n}"]}
1
+ {"version":3,"file":"Converter.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/Converter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RemoteParticipant as SdkRemoteParticipant, RemoteVideoStream as SdkRemoteVideoStream, LocalVideoStream as SdkLocalVideoStream, VideoStreamRendererView, IncomingCall, IncomingCallCommon } from '@azure/communication-calling';\nimport { RealTimeTextInfo as ACSRealTimeTextInfo } from '@azure/communication-calling';\nimport { RealTimeTextInfo } from './CallClientState';\nimport { TogetherModeVideoStream as SdkTogetherModeVideoStream } from '@azure/communication-calling';\nimport { TeamsIncomingCall } from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\nimport { CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\nimport { CallKind } from '@azure/communication-calling';\nimport { TeamsCallInfo } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallState, RemoteParticipantState as DeclarativeRemoteParticipant, RemoteVideoStreamState as DeclarativeRemoteVideoStream, LocalVideoStreamState as DeclarativeLocalVideoStream, IncomingCallState as DeclarativeIncomingCall, VideoStreamRendererViewState as DeclarativeVideoStreamRendererView, CallInfoState } from './CallClientState';\nimport { CallFeatureStreamState as DeclarativeCallFeatureVideoStream, CallFeatureStreamName } from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\nimport { TeamsIncomingCallState as DeclarativeTeamsIncomingCall } from './CallClientState';\nimport { _isTeamsIncomingCall } from './TypeGuards';\nimport { _isACSCall } from './TypeGuards';\nimport { _isTeamsCall } from './TypeGuards';\nimport { CallCommon } from './BetaToStableTypes';\nimport { Features } from '@azure/communication-calling';\nimport { VideoEffectName } from '@azure/communication-calling';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { RaisedHand } from '@azure/communication-calling';\nimport { RaisedHandState } from './CallClientState';\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\nimport { ConferencePhoneInfo } from './CallClientState';\n\n/**\n * @private\n */\nexport function convertSdkLocalStreamToDeclarativeLocalStream(stream: SdkLocalVideoStream): DeclarativeLocalVideoStream {\n const localVideoStreamEffectsAPI = stream.feature(Features.VideoEffects);\n return {\n source: stream.source,\n mediaStreamType: stream.mediaStreamType,\n view: undefined,\n videoEffects: convertFromSDKToDeclarativeVideoStreamVideoEffects(localVideoStreamEffectsAPI.activeEffects)\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkRemoteStreamToDeclarativeRemoteStream(stream: SdkRemoteVideoStream): DeclarativeRemoteVideoStream {\n return {\n id: stream.id,\n mediaStreamType: stream.mediaStreamType,\n isAvailable: stream.isAvailable,\n isReceiving: stream.isReceiving,\n view: undefined,\n streamSize: stream.size\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream: SdkTogetherModeVideoStream, featureName: CallFeatureStreamName): DeclarativeCallFeatureVideoStream {\n return {\n feature: featureName,\n id: stream.id,\n mediaStreamType: stream.mediaStreamType,\n isAvailable: stream.isAvailable,\n isReceiving: stream.isReceiving,\n view: undefined,\n streamSize: stream.size\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkParticipantToDeclarativeParticipant(participant: SdkRemoteParticipant): DeclarativeRemoteParticipant {\n const declarativeVideoStreams: {\n [key: number]: DeclarativeRemoteVideoStream;\n } = {};\n for (const videoStream of participant.videoStreams) {\n declarativeVideoStreams[videoStream.id] = convertSdkRemoteStreamToDeclarativeRemoteStream(videoStream);\n }\n return {\n identifier: participant.identifier,\n displayName: participant.displayName,\n state: participant.state,\n callEndReason: participant.callEndReason,\n videoStreams: declarativeVideoStreams,\n isMuted: participant.isMuted,\n isSpeaking: participant.isSpeaking,\n raisedHand: undefined,\n role: participant.role,\n spotlight: undefined,\n mediaAccess: undefined\n };\n}\n\n/**\n * @private\n *\n * Note at the time of writing only one LocalVideoStream is supported by the SDK.\n */\nexport function convertSdkCallToDeclarativeCall(call: CallCommon): CallState {\n const declarativeRemoteParticipants: {\n [key: string]: DeclarativeRemoteParticipant;\n } = {};\n call.remoteParticipants.forEach((participant: SdkRemoteParticipant) => {\n declarativeRemoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = convertSdkParticipantToDeclarativeParticipant(participant);\n });\n let hideAttendeeNames = false;\n if (call.feature(Features.Capabilities).capabilities && call.feature(Features.Capabilities).capabilities.viewAttendeeNames) {\n const viewAttendeeNames = call.feature(Features.Capabilities).capabilities.viewAttendeeNames;\n if (!viewAttendeeNames.isPresent && viewAttendeeNames.reason === 'MeetingRestricted') {\n hideAttendeeNames = true;\n }\n }\n let callInfo: TeamsCallInfo | undefined;\n if ('info' in call) {\n callInfo = call.info as TeamsCallInfo | undefined;\n }\n return {\n id: call.id,\n kind: _isACSCall(call) ? 'Call' as CallKind : 'TeamsCall' as CallKind,\n callerInfo: call.callerInfo,\n state: call.state,\n callEndReason: call.callEndReason,\n diagnostics: {\n network: {\n latest: {}\n },\n media: {\n latest: {}\n }\n },\n direction: call.direction,\n isMuted: call.isMuted,\n isScreenSharingOn: call.isScreenSharingOn,\n localVideoStreams: call.localVideoStreams.map(convertSdkLocalStreamToDeclarativeLocalStream),\n remoteParticipants: declarativeRemoteParticipants,\n remoteParticipantsEnded: {},\n recording: {\n isRecordingActive: false\n },\n pptLive: {\n isActive: false\n },\n raiseHand: {\n raisedHands: []\n },\n togetherMode: {\n isActive: false,\n streams: {},\n seatingPositions: {}\n },\n localParticipantReaction: undefined,\n transcription: {\n isTranscriptionActive: false\n },\n screenShareRemoteParticipant: undefined,\n startTime: new Date(),\n endTime: undefined,\n role: call.role,\n captionsFeature: {\n captions: [],\n supportedSpokenLanguages: [],\n supportedCaptionLanguages: [],\n currentCaptionLanguage: '',\n currentSpokenLanguage: '',\n isCaptionsFeatureActive: false,\n startCaptionsInProgress: false,\n captionsKind: _isTeamsCall(call) ? 'TeamsCaptions' : 'Captions'\n },\n realTimeTextFeature: {\n realTimeTexts: {},\n isRealTimeTextFeatureActive: false\n },\n transfer: {\n acceptedTransfers: {}\n },\n optimalVideoCount: {\n maxRemoteVideoStreams: call.feature(Features.OptimalVideoCount).optimalVideoCount\n },\n hideAttendeeNames,\n info: callInfo,\n meetingConference: {\n conferencePhones: []\n }\n };\n}\n\n/**\n * @private\n */\nexport function convertSdkIncomingCallToDeclarativeIncomingCall(call: IncomingCallCommon): DeclarativeIncomingCall | DeclarativeTeamsIncomingCall {\n if (_isTeamsIncomingCall(call)) {\n const newInfo: CallInfoState = {\n ...(call as TeamsIncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n } else {\n const newInfo: CallInfoState = {\n ...(call as IncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n }\n const newInfo: CallInfoState = {\n ...(call as IncomingCall).info,\n kind: call.kind\n };\n return {\n id: call.id,\n info: newInfo,\n callerInfo: call.callerInfo,\n startTime: new Date(),\n endTime: undefined\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToDeclarativeVideoStreamRendererView(view: VideoStreamRendererView): DeclarativeVideoStreamRendererView {\n return {\n scalingMode: view.scalingMode,\n isMirrored: view.isMirrored,\n target: view.target\n };\n}\n\n/**\n * @private\n */\nexport function convertFromTeamsSDKToCaptionInfoState(caption: TeamsCaptionsInfo): CaptionsInfo {\n return {\n ...caption\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToCaptionInfoState(caption: AcsCaptionsInfo): CaptionsInfo {\n return {\n captionText: caption.spokenText,\n ...caption\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKRealTimeTextToRealTimeTextInfoState(realTimeText: ACSRealTimeTextInfo): RealTimeTextInfo {\n return {\n message: realTimeText.text,\n isMe: realTimeText.isLocal,\n ...realTimeText\n };\n}\n\n/** @private */\nexport function convertFromSDKToDeclarativeVideoStreamVideoEffects(videoEffects: VideoEffectName[]): LocalVideoStreamVideoEffectsState {\n return {\n activeEffects: videoEffects\n };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToRaisedHandState(raisedHand: RaisedHand): RaisedHandState {\n return {\n raisedHandOrderPosition: raisedHand.order\n };\n}\n\n/** @private */\nexport function convertConferencePhoneInfo(meetingConferencePhoneInfo?: TeamsMeetingAudioConferencingDetails): ConferencePhoneInfo[] {\n if (!meetingConferencePhoneInfo) {\n return [];\n }\n return meetingConferencePhoneInfo.phoneNumbers.flatMap(phoneNumber => {\n const common = {\n conferenceId: meetingConferencePhoneInfo.phoneConferenceId,\n country: phoneNumber.countryName,\n city: phoneNumber.cityName,\n phoneNumber: '',\n isTollFree: false\n };\n const toll = Object.assign({}, common);\n toll.phoneNumber = phoneNumber.tollPhoneNumber?.phoneNumber ?? '';\n toll.isTollFree = false;\n const tollFree = Object.assign({}, common);\n tollFree.phoneNumber = phoneNumber.tollFreePhoneNumber?.phoneNumber ?? '';\n tollFree.isTollFree = true;\n return [toll, tollFree].filter(phoneInfo => phoneInfo.phoneNumber);\n });\n}"]}
@@ -134,11 +134,8 @@ class ProxyDeviceManager {
134
134
  }), navigator.permissions.query({
135
135
  name: 'microphone'
136
136
  })]);
137
- // Use logical OR to combine the SDK state with the Permissions API state.
138
- // This way we can get a more accurate picture of the device permission state.
139
- // If the SDK state is 'granted', we don't need to check the Permissions API state.
140
- hasCameraPermission || (hasCameraPermission = cameraPermissions.state === 'granted');
141
- hasMicPermission || (hasMicPermission = micPermissions.state === 'granted');
137
+ hasCameraPermission = cameraPermissions.state === 'granted';
138
+ hasMicPermission = micPermissions.state === 'granted';
142
139
  }
143
140
  catch (e) {
144
141
  console.info('Permissions API is not supported by browser', e);
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceManagerDeclarative.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/DeviceManagerDeclarative.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, DeviceAccess, DeviceManager, VideoDeviceInfo } from '@azure/communication-calling';\nimport { CallContext } from './CallContext';\nimport { InternalCallContext } from './InternalCallContext';\nimport { LocalVideoStream } from '@azure/communication-calling';\n\n/**\n * Defines the additional methods added by the stateful on top of {@link @azure/communication-calling#DeviceManager}.\n *\n * @public\n */\nexport interface StatefulDeviceManager extends DeviceManager {\n /**\n * Sets the selectedCamera in the {@link DeviceManagerState}. This is completely developer driven and is not tied in\n * any way to {@link @azure/communication-calling#DeviceManager}. It is entirely contained in\n * {@link StatefulDeviceManager}. See also {@link DeviceManagerState.selectedCamera}.\n */\n selectCamera: (device: VideoDeviceInfo) => void;\n\n /**\n * Gets the list of unparented video streams. This is a list of video streams that have not been added to a\n * {@link @azure/communication-calling#Call}. This is useful for developers who want to interact with rendered\n * video streams before they have started a call. See also {@link @azure/communication-react#CallClient.createView}.\n *\n * @public\n */\n getUnparentedVideoStreams: () => LocalVideoStream[];\n}\n\n/**\n * ProxyDeviceManager proxies DeviceManager and subscribes to all events that affect device manager state. State updates\n * are set on the provided context. Also any queries for state are proxied and stored in state as well. Only one device\n * manager should exist for a given CallClient so if CallClient.getDeviceManager is called multiple times, either a\n * cached ProxyDeviceManager should be returned or the existing ProxyDeviceManager should be destructed via destructor()\n * and a new ProxyDeviceManager created.\n */\nclass ProxyDeviceManager implements ProxyHandler<DeviceManager> {\n private _deviceManager: DeviceManager;\n private _context: CallContext;\n constructor(deviceManager: DeviceManager, context: CallContext) {\n this._deviceManager = deviceManager;\n this._context = context;\n this.setDeviceManager();\n this.subscribe();\n }\n private setDeviceManager = (): void => {\n // isSpeakerSelectionAvailable, selectedMicrophone, and selectedSpeaker are properties on DeviceManager. Since they\n // are not functions we can't proxy them so we'll update whenever we think they may need updating such as at\n // construction time or when certain events happen.\n this._context.setDeviceManagerIsSpeakerSelectionAvailable(this._deviceManager.isSpeakerSelectionAvailable);\n this._context.setDeviceManagerSelectedMicrophone(this._deviceManager.selectedMicrophone);\n this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);\n };\n private subscribe = (): void => {\n this._deviceManager.on('videoDevicesUpdated', this.videoDevicesUpdated);\n this._deviceManager.on('audioDevicesUpdated', this.audioDevicesUpdated);\n this._deviceManager.on('selectedMicrophoneChanged', this.selectedMicrophoneChanged);\n this._deviceManager.on('selectedSpeakerChanged', this.selectedSpeakerChanged);\n\n // Subscribe to browser camera permissions changes\n if (navigator.permissions) {\n try {\n navigator.permissions.query({\n name: 'camera' as PermissionName\n }).then((cameraPermissions): void => {\n cameraPermissions.addEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not subscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n\n // Subscribe to browser microphone permissions changes\n try {\n navigator.permissions.query({\n name: 'microphone' as PermissionName\n }).then((micPermissions): void => {\n micPermissions.addEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not subscribe to Permissions API Microphone changed events, API is not supported by browser', e);\n }\n }\n };\n\n /**\n * This is used to unsubscribe DeclarativeDeviceManager from the DeviceManager events.\n */\n public unsubscribe = (): void => {\n this._deviceManager.off('videoDevicesUpdated', this.videoDevicesUpdated);\n this._deviceManager.off('audioDevicesUpdated', this.audioDevicesUpdated);\n this._deviceManager.off('selectedMicrophoneChanged', this.selectedMicrophoneChanged);\n this._deviceManager.off('selectedSpeakerChanged', this.selectedSpeakerChanged);\n if (navigator.permissions) {\n // Unsubscribe from browser camera permissions changes\n try {\n navigator.permissions.query({\n name: 'camera' as PermissionName\n }).then((cameraPermissions): void => {\n cameraPermissions.removeEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not Unsubscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n\n // Unsubscribe from browser microphone permissions changes\n try {\n navigator.permissions.query({\n name: 'microphone' as PermissionName\n }).then((micPermissions): void => {\n micPermissions.removeEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not Unsubscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n }\n };\n private permissionsApiStateChangeHandler = async (): Promise<void> => {\n await this.updateDevicePermissionState();\n };\n\n /**\n * Used to set a camera inside the proxy device manager.\n *\n * @param videoDeviceInfo VideoDeviceInfo\n */\n public selectCamera = (videoDeviceInfo: VideoDeviceInfo): void => {\n this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);\n };\n private videoDevicesUpdated = async (): Promise<void> => {\n // Device Manager always has a camera with '' name if there are no real camera devices available.\n // We don't want to show that in the UI.\n const realCameras = (await this._deviceManager.getCameras()).filter(c => !!c.name);\n this._context.setDeviceManagerCameras(dedupeById(realCameras));\n };\n private audioDevicesUpdated = async (): Promise<void> => {\n this._context.setDeviceManagerMicrophones(dedupeById(await this._deviceManager.getMicrophones()));\n if (this._deviceManager.isSpeakerSelectionAvailable) {\n this._context.setDeviceManagerSpeakers(dedupeById(await this._deviceManager.getSpeakers()));\n }\n };\n private selectedMicrophoneChanged = (): void => {\n this._context.setDeviceManagerSelectedMicrophone(this._deviceManager.selectedMicrophone);\n };\n private selectedSpeakerChanged = (): void => {\n this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);\n };\n private updateDevicePermissionState = async (sdkDeviceAccessState?: DeviceAccess): Promise<void> => {\n let hasCameraPermission = !!sdkDeviceAccessState?.video;\n let hasMicPermission = !!sdkDeviceAccessState?.audio;\n\n // Supplement the SDK values with values from the Permissions API to get a better understanding of the device\n // permission state. The SDK only uses the getUserMedia API to determine the device permission state. However,\n // this returns false if the camera is in use by another application. The Permissions API can provide more\n // information about the device permission state, but is not supported yet in Firefox or Android WebView.\n // Note: It also has the limitation where it cannot detect if the device is blocked by the Operating System\n // permissions.\n if (navigator.permissions) {\n try {\n const [cameraPermissions, micPermissions] = await Promise.all([navigator.permissions.query({\n name: 'camera' as PermissionName\n }), navigator.permissions.query({\n name: 'microphone' as PermissionName\n })]);\n\n // Use logical OR to combine the SDK state with the Permissions API state.\n // This way we can get a more accurate picture of the device permission state.\n // If the SDK state is 'granted', we don't need to check the Permissions API state.\n hasCameraPermission ||= cameraPermissions.state === 'granted';\n hasMicPermission ||= micPermissions.state === 'granted';\n } catch (e) {\n console.info('Permissions API is not supported by browser', e);\n }\n }\n this._context.setDeviceManagerDeviceAccess({\n video: hasCameraPermission,\n audio: hasMicPermission\n });\n this.setDeviceManager();\n };\n public get<P extends keyof DeviceManager>(target: DeviceManager, prop: P): any {\n switch (prop) {\n case 'getCameras':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<VideoDeviceInfo[]> => {\n return target.getCameras().then((cameras: VideoDeviceInfo[]) => {\n // Device Manager always has a camera with '' name if there are no real camera devices available.\n // We don't want to show that in the UI.\n const realCameras = cameras.filter(c => !!c.name);\n this._context.setDeviceManagerCameras(dedupeById(realCameras));\n return realCameras;\n });\n }, 'DeviceManager.getCameras');\n }\n case 'getMicrophones':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<AudioDeviceInfo[]> => {\n return target.getMicrophones().then((microphones: AudioDeviceInfo[]) => {\n this._context.setDeviceManagerMicrophones(dedupeById(microphones));\n return microphones;\n });\n }, 'DeviceManager.getMicrophones');\n }\n case 'getSpeakers':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<AudioDeviceInfo[]> => {\n return target.getSpeakers().then((speakers: AudioDeviceInfo[]) => {\n this._context.setDeviceManagerSpeakers(dedupeById(speakers));\n return speakers;\n });\n }, 'DeviceManager.getSpeakers');\n }\n case 'selectMicrophone':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['selectMicrophone']>): Promise<void> => {\n return target.selectMicrophone(...args).then(() => {\n this._context.setDeviceManagerSelectedMicrophone(target.selectedMicrophone);\n });\n }, 'DeviceManager.selectMicrophone');\n }\n case 'selectSpeaker':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['selectSpeaker']>): Promise<void> => {\n return target.selectSpeaker(...args).then(() => {\n this._context.setDeviceManagerSelectedSpeaker(target.selectedSpeaker);\n });\n }, 'DeviceManager.selectSpeaker');\n }\n case 'askDevicePermission':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['askDevicePermission']>): Promise<DeviceAccess> => {\n return target.askDevicePermission(...args).then(async (deviceAccess: DeviceAccess) => {\n await this.updateDevicePermissionState(deviceAccess);\n return deviceAccess;\n });\n }, 'DeviceManager.askDevicePermission');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n// TODO: Remove this when SDK no longer returns duplicate audio and video devices\n/** Helper function to dedupe duplicate audio and video devices obtained from SDK */\nconst dedupeById = <T extends {\n id: string;\n},>(devices: T[]): T[] => {\n const ids = new Set();\n const uniqueDevices: T[] = [];\n devices.forEach((device: T) => {\n if (!ids.has(device.id)) {\n uniqueDevices.push(device);\n ids.add(device.id);\n }\n });\n return uniqueDevices;\n};\n\n/**\n * Creates a declarative DeviceManager by proxying DeviceManager with ProxyDeviceManager. The declarative DeviceManager\n * will put state updates in the given context.\n *\n * @param deviceManager - DeviceManager from SDK\n * @param context - CallContext from StatefulCallClient\n *\n * @private\n */\nexport const deviceManagerDeclaratify = (deviceManager: DeviceManager, context: CallContext, internalContext: InternalCallContext): DeviceManager => {\n const proxyDeviceManager = new ProxyDeviceManager(deviceManager, context);\n Object.defineProperty(deviceManager, 'unsubscribe', {\n configurable: false,\n value: () => proxyDeviceManager.unsubscribe()\n });\n Object.defineProperty(deviceManager, 'selectCamera', {\n configurable: false,\n value: (videoDeviceInfo: VideoDeviceInfo) => proxyDeviceManager.selectCamera(videoDeviceInfo)\n });\n Object.defineProperty(deviceManager, 'getUnparentedVideoStreams', {\n configurable: false,\n value: (): LocalVideoStream[] => internalContext.getUnparentedRenderInfos()\n });\n return new Proxy(deviceManager, proxyDeviceManager) as StatefulDeviceManager;\n};"]}
1
+ {"version":3,"file":"DeviceManagerDeclarative.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/DeviceManagerDeclarative.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, DeviceAccess, DeviceManager, VideoDeviceInfo } from '@azure/communication-calling';\nimport { CallContext } from './CallContext';\nimport { InternalCallContext } from './InternalCallContext';\nimport { LocalVideoStream } from '@azure/communication-calling';\n\n/**\n * Defines the additional methods added by the stateful on top of {@link @azure/communication-calling#DeviceManager}.\n *\n * @public\n */\nexport interface StatefulDeviceManager extends DeviceManager {\n /**\n * Sets the selectedCamera in the {@link DeviceManagerState}. This is completely developer driven and is not tied in\n * any way to {@link @azure/communication-calling#DeviceManager}. It is entirely contained in\n * {@link StatefulDeviceManager}. See also {@link DeviceManagerState.selectedCamera}.\n */\n selectCamera: (device: VideoDeviceInfo) => void;\n\n /**\n * Gets the list of unparented video streams. This is a list of video streams that have not been added to a\n * {@link @azure/communication-calling#Call}. This is useful for developers who want to interact with rendered\n * video streams before they have started a call. See also {@link @azure/communication-react#CallClient.createView}.\n *\n * @public\n */\n getUnparentedVideoStreams: () => LocalVideoStream[];\n}\n\n/**\n * ProxyDeviceManager proxies DeviceManager and subscribes to all events that affect device manager state. State updates\n * are set on the provided context. Also any queries for state are proxied and stored in state as well. Only one device\n * manager should exist for a given CallClient so if CallClient.getDeviceManager is called multiple times, either a\n * cached ProxyDeviceManager should be returned or the existing ProxyDeviceManager should be destructed via destructor()\n * and a new ProxyDeviceManager created.\n */\nclass ProxyDeviceManager implements ProxyHandler<DeviceManager> {\n private _deviceManager: DeviceManager;\n private _context: CallContext;\n constructor(deviceManager: DeviceManager, context: CallContext) {\n this._deviceManager = deviceManager;\n this._context = context;\n this.setDeviceManager();\n this.subscribe();\n }\n private setDeviceManager = (): void => {\n // isSpeakerSelectionAvailable, selectedMicrophone, and selectedSpeaker are properties on DeviceManager. Since they\n // are not functions we can't proxy them so we'll update whenever we think they may need updating such as at\n // construction time or when certain events happen.\n this._context.setDeviceManagerIsSpeakerSelectionAvailable(this._deviceManager.isSpeakerSelectionAvailable);\n this._context.setDeviceManagerSelectedMicrophone(this._deviceManager.selectedMicrophone);\n this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);\n };\n private subscribe = (): void => {\n this._deviceManager.on('videoDevicesUpdated', this.videoDevicesUpdated);\n this._deviceManager.on('audioDevicesUpdated', this.audioDevicesUpdated);\n this._deviceManager.on('selectedMicrophoneChanged', this.selectedMicrophoneChanged);\n this._deviceManager.on('selectedSpeakerChanged', this.selectedSpeakerChanged);\n\n // Subscribe to browser camera permissions changes\n if (navigator.permissions) {\n try {\n navigator.permissions.query({\n name: 'camera' as PermissionName\n }).then((cameraPermissions): void => {\n cameraPermissions.addEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not subscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n\n // Subscribe to browser microphone permissions changes\n try {\n navigator.permissions.query({\n name: 'microphone' as PermissionName\n }).then((micPermissions): void => {\n micPermissions.addEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not subscribe to Permissions API Microphone changed events, API is not supported by browser', e);\n }\n }\n };\n\n /**\n * This is used to unsubscribe DeclarativeDeviceManager from the DeviceManager events.\n */\n public unsubscribe = (): void => {\n this._deviceManager.off('videoDevicesUpdated', this.videoDevicesUpdated);\n this._deviceManager.off('audioDevicesUpdated', this.audioDevicesUpdated);\n this._deviceManager.off('selectedMicrophoneChanged', this.selectedMicrophoneChanged);\n this._deviceManager.off('selectedSpeakerChanged', this.selectedSpeakerChanged);\n if (navigator.permissions) {\n // Unsubscribe from browser camera permissions changes\n try {\n navigator.permissions.query({\n name: 'camera' as PermissionName\n }).then((cameraPermissions): void => {\n cameraPermissions.removeEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not Unsubscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n\n // Unsubscribe from browser microphone permissions changes\n try {\n navigator.permissions.query({\n name: 'microphone' as PermissionName\n }).then((micPermissions): void => {\n micPermissions.removeEventListener('change', this.permissionsApiStateChangeHandler);\n });\n } catch (e) {\n console.info('Could not Unsubscribe to Permissions API Camera changed events, API is not supported by browser', e);\n }\n }\n };\n private permissionsApiStateChangeHandler = async (): Promise<void> => {\n await this.updateDevicePermissionState();\n };\n\n /**\n * Used to set a camera inside the proxy device manager.\n *\n * @param videoDeviceInfo VideoDeviceInfo\n */\n public selectCamera = (videoDeviceInfo: VideoDeviceInfo): void => {\n this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);\n };\n private videoDevicesUpdated = async (): Promise<void> => {\n // Device Manager always has a camera with '' name if there are no real camera devices available.\n // We don't want to show that in the UI.\n const realCameras = (await this._deviceManager.getCameras()).filter(c => !!c.name);\n this._context.setDeviceManagerCameras(dedupeById(realCameras));\n };\n private audioDevicesUpdated = async (): Promise<void> => {\n this._context.setDeviceManagerMicrophones(dedupeById(await this._deviceManager.getMicrophones()));\n if (this._deviceManager.isSpeakerSelectionAvailable) {\n this._context.setDeviceManagerSpeakers(dedupeById(await this._deviceManager.getSpeakers()));\n }\n };\n private selectedMicrophoneChanged = (): void => {\n this._context.setDeviceManagerSelectedMicrophone(this._deviceManager.selectedMicrophone);\n };\n private selectedSpeakerChanged = (): void => {\n this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);\n };\n private updateDevicePermissionState = async (sdkDeviceAccessState?: DeviceAccess): Promise<void> => {\n let hasCameraPermission = !!sdkDeviceAccessState?.video;\n let hasMicPermission = !!sdkDeviceAccessState?.audio;\n\n // Supplement the SDK values with values from the Permissions API to get a better understanding of the device\n // permission state. The SDK only uses the getUserMedia API to determine the device permission state. However,\n // this returns false if the camera is in use by another application. The Permissions API can provide more\n // information about the device permission state, but is not supported yet in Firefox or Android WebView.\n // Note: It also has the limitation where it cannot detect if the device is blocked by the Operating System\n // permissions.\n if (navigator.permissions) {\n try {\n const [cameraPermissions, micPermissions] = await Promise.all([navigator.permissions.query({\n name: 'camera' as PermissionName\n }), navigator.permissions.query({\n name: 'microphone' as PermissionName\n })]);\n hasCameraPermission = cameraPermissions.state === 'granted';\n hasMicPermission = micPermissions.state === 'granted';\n } catch (e) {\n console.info('Permissions API is not supported by browser', e);\n }\n }\n this._context.setDeviceManagerDeviceAccess({\n video: hasCameraPermission,\n audio: hasMicPermission\n });\n this.setDeviceManager();\n };\n public get<P extends keyof DeviceManager>(target: DeviceManager, prop: P): any {\n switch (prop) {\n case 'getCameras':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<VideoDeviceInfo[]> => {\n return target.getCameras().then((cameras: VideoDeviceInfo[]) => {\n // Device Manager always has a camera with '' name if there are no real camera devices available.\n // We don't want to show that in the UI.\n const realCameras = cameras.filter(c => !!c.name);\n this._context.setDeviceManagerCameras(dedupeById(realCameras));\n return realCameras;\n });\n }, 'DeviceManager.getCameras');\n }\n case 'getMicrophones':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<AudioDeviceInfo[]> => {\n return target.getMicrophones().then((microphones: AudioDeviceInfo[]) => {\n this._context.setDeviceManagerMicrophones(dedupeById(microphones));\n return microphones;\n });\n }, 'DeviceManager.getMicrophones');\n }\n case 'getSpeakers':\n {\n return this._context.withAsyncErrorTeedToState((): Promise<AudioDeviceInfo[]> => {\n return target.getSpeakers().then((speakers: AudioDeviceInfo[]) => {\n this._context.setDeviceManagerSpeakers(dedupeById(speakers));\n return speakers;\n });\n }, 'DeviceManager.getSpeakers');\n }\n case 'selectMicrophone':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['selectMicrophone']>): Promise<void> => {\n return target.selectMicrophone(...args).then(() => {\n this._context.setDeviceManagerSelectedMicrophone(target.selectedMicrophone);\n });\n }, 'DeviceManager.selectMicrophone');\n }\n case 'selectSpeaker':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['selectSpeaker']>): Promise<void> => {\n return target.selectSpeaker(...args).then(() => {\n this._context.setDeviceManagerSelectedSpeaker(target.selectedSpeaker);\n });\n }, 'DeviceManager.selectSpeaker');\n }\n case 'askDevicePermission':\n {\n return this._context.withAsyncErrorTeedToState((...args: Parameters<DeviceManager['askDevicePermission']>): Promise<DeviceAccess> => {\n return target.askDevicePermission(...args).then(async (deviceAccess: DeviceAccess) => {\n await this.updateDevicePermissionState(deviceAccess);\n return deviceAccess;\n });\n }, 'DeviceManager.askDevicePermission');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n// TODO: Remove this when SDK no longer returns duplicate audio and video devices\n/** Helper function to dedupe duplicate audio and video devices obtained from SDK */\nconst dedupeById = <T extends {\n id: string;\n},>(devices: T[]): T[] => {\n const ids = new Set();\n const uniqueDevices: T[] = [];\n devices.forEach((device: T) => {\n if (!ids.has(device.id)) {\n uniqueDevices.push(device);\n ids.add(device.id);\n }\n });\n return uniqueDevices;\n};\n\n/**\n * Creates a declarative DeviceManager by proxying DeviceManager with ProxyDeviceManager. The declarative DeviceManager\n * will put state updates in the given context.\n *\n * @param deviceManager - DeviceManager from SDK\n * @param context - CallContext from StatefulCallClient\n *\n * @private\n */\nexport const deviceManagerDeclaratify = (deviceManager: DeviceManager, context: CallContext, internalContext: InternalCallContext): DeviceManager => {\n const proxyDeviceManager = new ProxyDeviceManager(deviceManager, context);\n Object.defineProperty(deviceManager, 'unsubscribe', {\n configurable: false,\n value: () => proxyDeviceManager.unsubscribe()\n });\n Object.defineProperty(deviceManager, 'selectCamera', {\n configurable: false,\n value: (videoDeviceInfo: VideoDeviceInfo) => proxyDeviceManager.selectCamera(videoDeviceInfo)\n });\n Object.defineProperty(deviceManager, 'getUnparentedVideoStreams', {\n configurable: false,\n value: (): LocalVideoStream[] => internalContext.getUnparentedRenderInfos()\n });\n return new Proxy(deviceManager, proxyDeviceManager) as StatefulDeviceManager;\n};"]}
@@ -12,6 +12,5 @@ export declare class RecordingSubscriber {
12
12
  private subscribe;
13
13
  unsubscribe: () => void;
14
14
  private isAvailableChanged;
15
- private isRecordingsUpdated;
16
15
  }
17
16
  //# sourceMappingURL=RecordingSubscriber.d.ts.map
@@ -7,26 +7,20 @@ export class RecordingSubscriber {
7
7
  constructor(callIdRef, context, recording) {
8
8
  this.subscribe = () => {
9
9
  this._recording.on('isRecordingActiveChanged', this.isAvailableChanged);
10
- this._recording.on('recordingsUpdated', this.isRecordingsUpdated);
11
10
  };
12
11
  this.unsubscribe = () => {
13
12
  this._recording.off('isRecordingActiveChanged', this.isAvailableChanged);
14
- this._recording.off('recordingsUpdated', this.isRecordingsUpdated);
15
13
  };
16
14
  this.isAvailableChanged = () => {
17
15
  this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive);
18
16
  };
19
- this.isRecordingsUpdated = (data) => {
20
- this._context.setCallRecordingInfos(this._callIdRef.callId, this._recording.recordings, data.removed);
21
- };
22
17
  this._callIdRef = callIdRef;
23
18
  this._context = context;
24
19
  this._recording = recording;
25
20
  // If recording as already started when we joined the call, make sure it is reflected in state as there may not
26
21
  // be an event for it.
27
22
  if (this._recording.isRecordingActive) {
28
- this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive); // recordings getter only returns a list of active recordings, so we can set the list of recordings here
29
- this._context.setCallRecordingInfos(this._callIdRef.callId, this._recording.recordings, []);
23
+ this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive);
30
24
  }
31
25
  this.subscribe();
32
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RecordingSubscriber.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/RecordingSubscriber.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAI9B,YAAY,SAAoB,EAAE,OAAoB,EAAE,SAA+B;QAa/E,cAAS,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpE,CAAC,CAAC;QACK,gBAAW,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,CAAC,CAAC;QACM,uBAAkB,GAAG,GAAS,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClG,CAAC,CAAC;QACM,wBAAmB,GAAG,CAAC,IAG9B,EAAQ,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxG,CAAC,CAAC;QA5BA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,+GAA+G;QAC/G,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,wGAAwG;YACzM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;CAkBF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RecordingCallFeature } from '@azure/communication-calling';\nimport { CallContext } from './CallContext';\nimport { CallIdRef } from './CallIdRef';\nimport { RecordingInfo } from '@azure/communication-calling';\n\n/**\n * @private\n */\nexport class RecordingSubscriber {\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _recording: RecordingCallFeature;\n constructor(callIdRef: CallIdRef, context: CallContext, recording: RecordingCallFeature) {\n this._callIdRef = callIdRef;\n this._context = context;\n this._recording = recording;\n\n // If recording as already started when we joined the call, make sure it is reflected in state as there may not\n // be an event for it.\n if (this._recording.isRecordingActive) {\n this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive); // recordings getter only returns a list of active recordings, so we can set the list of recordings here\n this._context.setCallRecordingInfos(this._callIdRef.callId, this._recording.recordings, []);\n }\n this.subscribe();\n }\n private subscribe = (): void => {\n this._recording.on('isRecordingActiveChanged', this.isAvailableChanged);\n this._recording.on('recordingsUpdated', this.isRecordingsUpdated);\n };\n public unsubscribe = (): void => {\n this._recording.off('isRecordingActiveChanged', this.isAvailableChanged);\n this._recording.off('recordingsUpdated', this.isRecordingsUpdated);\n };\n private isAvailableChanged = (): void => {\n this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive);\n };\n private isRecordingsUpdated = (data: {\n added: RecordingInfo[];\n removed: RecordingInfo[];\n }): void => {\n this._context.setCallRecordingInfos(this._callIdRef.callId, this._recording.recordings, data.removed);\n };\n}"]}
1
+ {"version":3,"file":"RecordingSubscriber.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/RecordingSubscriber.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAI9B,YAAY,SAAoB,EAAE,OAAoB,EAAE,SAA+B;QAY/E,cAAS,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,0BAA0B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1E,CAAC,CAAC;QACK,gBAAW,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3E,CAAC,CAAC;QACM,uBAAkB,GAAG,GAAS,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClG,CAAC,CAAC;QAnBA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,+GAA+G;QAC/G,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;CAUF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RecordingCallFeature } from '@azure/communication-calling';\nimport { CallContext } from './CallContext';\nimport { CallIdRef } from './CallIdRef';\n/**\n * @private\n */\nexport class RecordingSubscriber {\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _recording: RecordingCallFeature;\n constructor(callIdRef: CallIdRef, context: CallContext, recording: RecordingCallFeature) {\n this._callIdRef = callIdRef;\n this._context = context;\n this._recording = recording;\n\n // If recording as already started when we joined the call, make sure it is reflected in state as there may not\n // be an event for it.\n if (this._recording.isRecordingActive) {\n this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive);\n }\n this.subscribe();\n }\n private subscribe = (): void => {\n this._recording.on('isRecordingActiveChanged', this.isAvailableChanged);\n };\n public unsubscribe = (): void => {\n this._recording.off('isRecordingActiveChanged', this.isAvailableChanged);\n };\n private isAvailableChanged = (): void => {\n this._context.setCallRecordingActive(this._callIdRef.callId, this._recording.isRecordingActive);\n };\n}"]}
@@ -104,16 +104,6 @@ class ProxyCallClient {
104
104
  return Reflect.get(target, prop);
105
105
  }
106
106
  }
107
- set(target, prop) {
108
- switch (prop) {
109
- case 'dispose':
110
- {
111
- return this._context.withAsyncErrorTeedToState(() => __awaiter(this, void 0, void 0, function* () {
112
- yield target.dispose();
113
- }), 'CallClient.dispose');
114
- }
115
- }
116
- }
117
107
  }
118
108
  /**
119
109
  * Creates a StatefulCallClient {@link StatefulCallClient} by proxying CallClient
@@ -1 +1 @@
1
- {"version":3,"file":"StatefulCallClient.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/StatefulCallClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;AAElC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAuD,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGzH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAwB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAwD,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtH,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAgC,gCAAgC;AACzH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAA6B,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAEnG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,UAAU,IAAI,qBAAqB,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAwJtH;;;;GAIG;AACH,MAAM,eAAe;IAMnB,YAAY,OAAoB,EAAE,eAAoC;QACpE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IACM,GAAG,CAA6B,MAAkB,EAAE,IAAO;QAChE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,iBAAiB;gBACpB,CAAC;oBACC,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAO,GAAG,IAA+C,EAAiC,EAAE;wBACzI,sGAAsG;wBACtG,2GAA2G;wBAC3G,6CAA6C;wBAC7C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;wBACxD,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBACxF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;4BACzB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;yBACzC,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,UAAU,CAAC;oBACzB,CAAC,CAAA,EAAE,4BAA4B,CAAC,CAAC;gBACnC,CAAC;YACH,KAAK,sBAAsB;gBACzB,CAAC;oBACC,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAO,GAAG,IAAoD,EAAsC,EAAE;wBACnJ,sGAAsG;wBACtG,2GAA2G;wBAC3G,6CAA6C;wBAC7C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC7D,IAAI,CAAC,UAAU,GAAG,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBAC7F,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;4BACzB,WAAW,EAAE,SAAS;yBACvB,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,UAAU,CAAC;oBACzB,CAAC,CAAA,EAAE,iCAAiC,CAAC,CAAC;gBACxC,CAAC;YACH,KAAK,kBAAkB;gBACrB,CAAC;oBACC,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAS,EAAE;wBACxD,qGAAqG;wBACrG,8GAA8G;wBAC9G,0GAA0G;wBAC1G,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;wBACtD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BAC3B,IAAI,IAAI,CAAC,iBAAiB,KAAK,aAAa,EAAE,CAAC;gCAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;4BAC7B,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,KAAK,CAAC,sGAAsG,GAAG,wFAAwF,CAAC,CAAC;4BACrN,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC;wBACzC,CAAC;wBACD,IAAI,CAAC,cAAc,GAAG,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBACpG,OAAO,IAAI,CAAC,cAAc,CAAC;oBAC7B,CAAC,CAAA,EAAE,6BAA6B,CAAC,CAAC;gBACpC,CAAC;YACH,KAAK,SAAS;gBACZ,CAAC;oBACC,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAuC,EAAE,EAAE;wBACvF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;4BACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;4BACnD;;+BAEG;4BACH,uCACK,OAAO,KACV,kBAAkB,EAAE,GAAS,EAAE;oCAC7B,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;oCAC3D,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;oCAClD,OAAO,eAAe,CAAC;gCACzB,CAAC,CAAA,IACD;wBACJ,CAAC;wBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACnC,CAAC,EAAE,oBAAoB,CAAC,CAAC;gBAC3B,CAAC;YACH;gBACE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACM,GAAG,CAA6B,MAAkB,EAAE,IAAO;QAChE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,CAAC;oBACC,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAS,EAAE;wBACxD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;oBACzB,CAAC,CAAA,EAAE,oBAAoB,CAAC,CAAC;gBAC3B,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAgCD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAA4B,EAAE,OAAmC,EAAsB,EAAE;IAChI,OAAO,8BAA8B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,IAA4B,EAAE,OAAmC,EAAE,8BAA4D,oBAAoB,EAAsB,EAAE;IACxN,qBAAqB,CAAC,IAAI,CAAC,2DAA2D,iBAAiB,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IACxI,OAAO,gCAAgC,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,uBAAuB,CAAC,EAAE,IAAI,mBAAmB,EAAE,CAAC,CAAC;AACnP,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,UAAsB,EAAE,OAAoB,EAAE,eAAoC,EAAsB,EAAE;IACzJ,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE;QAC5C,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;KAChC,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE;QACjD,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,CAAC,OAAyC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;KACrF,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE;QAClD,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,CAAC,OAAyC,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;KACtF,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE;QAC9C,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,CAAO,MAA0B,EAAE,aAAkD,EAAE,MAA+E,EAAE,OAA2B,EAAyC,EAAE;YACnP,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACxB,OAAO,MAAM,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACtG,oLAAoL;YACpL,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;gBACxD,MAAM,cAAc,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,CAAC,IAAI,GAAG,kCAAkC,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAA;KACF,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE;QAC/C,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,CAAC,MAA0B,EAAE,aAAkD,EAAE,MAA+E,EAAQ,EAAE;YAC/K,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACxB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,CAAuB,CAAC;IAEzH,yBAAyB;IACzB,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACvE,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,CAAC,2BAAyD,EAAE,OAA2B,EAAqB,EAAE;;IACrI,MAAM,IAAI,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,0CAAE,IAAI,mCAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC1D,uCACK,OAAO,KACV,WAAW,kCACN,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KACvB,IAAI,OAEN;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { deviceManagerDeclaratify } from './DeviceManagerDeclarative';\nimport { CallClient, CallClientOptions, CreateViewOptions, DeviceManager, Features } from '@azure/communication-calling';\nimport { CallClientState, LocalVideoStreamState, RemoteVideoStreamState } from './CallClientState';\nimport { CallFeatureStreamState } from './CallClientState';\nimport { CallContext } from './CallContext';\nimport { callAgentDeclaratify, DeclarativeCallAgent } from './CallAgentDeclarative';\nimport { InternalCallContext } from './InternalCallContext';\nimport { createView, disposeView, CreateViewResult } from './StreamUtils';\nimport { CommunicationIdentifier, CommunicationUserIdentifier, getIdentifierKind } from '@azure/communication-common';\nimport { toFlatCommunicationIdentifier, _getApplicationId, _TelemetryImplementationHint } from '@internal/acs-ui-common';\nimport { callingStatefulLogger } from './Logger';\nimport { DeclarativeTeamsCallAgent, teamsCallAgentDeclaratify } from './TeamsCallAgentDeclarative';\nimport { MicrosoftTeamsUserIdentifier } from '@azure/communication-common';\nimport { videoStreamRendererViewDeclaratify } from './VideoStreamRendererViewDeclarative';\nimport { createView as createCallFeatureView, disposeView as disposeCallFeatureView } from './CallFeatureStreamUtils';\n\n/**\n * Defines the methods that allow CallClient {@link @azure/communication-calling#CallClient} to be used statefully.\n * The interface provides access to proxied state and also allows registering a handler for state change events. For\n * state definition see {@link CallClientState}.\n *\n * State change events are driven by:\n * - Returned data from {@link @azure/communication-calling#DeviceManager} APIs.\n * - Returned data from {@link @azure/communication-calling#CallAgent} APIs.\n * - Listeners automatically attached to various azure communication-calling objects:\n * - CallAgent 'incomingCall'\n * - CallAgent 'callsUpdated'\n * - DeviceManager 'videoDevicesUpdated'\n * - DeviceManager 'audioDevicesUpdated\n * - DeviceManager 'selectedMicrophoneChanged'\n * - DeviceManager 'selectedSpeakerChanged'\n * - Call 'stateChanged'\n * - Call 'idChanged'\n * - Call 'isMutedChanged'\n * - Call 'isScreenSharingOnChanged'\n * - Call 'remoteParticipantsUpdated'\n * - Call 'localVideoStreamsUpdated'\n * - IncomingCall 'callEnded'\n * - RemoteParticipant 'stateChanged'\n * - RemoteParticipant 'isMutedChanged'\n * - RemoteParticipant 'displayNameChanged'\n * - RemoteParticipant 'isSpeakingChanged'\n * - RemoteParticipant 'videoStreamsUpdated'\n * - RemoteVideoStream 'isAvailableChanged'\n * - TranscriptionCallFeature 'isTranscriptionActiveChanged'\n * - RecordingCallFeature 'isRecordingActiveChanged'\n * - LocalRecordingCallFeature 'isLocalRecordingActiveChanged'\n * - RaiseHandCallFeature 'raisedHandEvent'\n * - RaiseHandCallFeature 'loweredHandEvent'\n * - PPTLiveCallFeature 'isAciveChanged'\n * - ReactionCallFeature 'reaction'\n *\n * @public\n */\nexport interface StatefulCallClient extends CallClient {\n /**\n * Holds all the state that we could proxy from CallClient {@link @azure/communication-calling#CallClient} as\n * CallClientState {@link CallClientState}.\n */\n getState(): CallClientState;\n /**\n * Allows a handler to be registered for 'stateChanged' events.\n *\n * @param handler - Callback to receive the state.\n */\n onStateChange(handler: (state: CallClientState) => void): void;\n /**\n * Allows unregistering for 'stateChanged' events.\n *\n * @param handler - Original callback to be unsubscribed.\n */\n offStateChange(handler: (state: CallClientState) => void): void;\n /**\n * Renders a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and stores the resulting\n * {@link VideoStreamRendererViewState} under the relevant {@link RemoteVideoStreamState} or\n * {@link LocalVideoStreamState} or as unparented view in the state. Under the hood calls\n * {@link @azure/communication-calling#VideoStreamRenderer.createView}.\n *\n * Scenario 1: Render RemoteVideoStreamState\n * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required\n * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId and participantId in\n * {@link CallClientState}\n *\n * Scenario 2: Render LocalVideoStreamState for a call\n * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - The {@link @azure/communication-calling#Call.localVideoStreams} must already be started using\n * {@link @azure/communication-calling#Call.startVideo}.\n * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId {@link CallState.localVideoStreams}\n * in {@link CallClientState}.\n *\n * - Scenario 2: Render LocalVideoStreamState not part of a call (example rendering camera for local preview)\n * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - Resulting {@link VideoStreamRendererViewState} is stored in under the given LocalVideoStreamState in\n * {@link CallClientState.deviceManager.unparentedViews}\n *\n * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call.\n * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could\n * be undefined if rendering LocalVideoStreamState.\n * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to start rendering.\n * @param options - Options that are passed to the {@link @azure/communication-calling#VideoStreamRenderer}.\n */\n createView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState, options?: CreateViewOptions): Promise<CreateViewResult | undefined>;\n /**\n * Stops rendering a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and removes the\n * {@link VideoStreamRendererView} from the relevant {@link RemoteVideoStreamState} in {@link CallClientState} or\n * {@link LocalVideoStream} in {@link CallClientState} or appropriate\n * {@link CallClientState.deviceManager.unparentedViews} Under the hood calls\n * {@link @azure/communication-calling#VideoStreamRenderer.dispose}.\n *\n * Its important to disposeView to clean up resources properly.\n *\n * Scenario 1: Dispose RemoteVideoStreamState\n * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required\n *\n * Scenario 2: Dispose LocalVideoStreamState for a call\n * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n *\n * - Scenario 2: Dispose LocalVideoStreamState not part of a call\n * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - LocalVideoStreamState must be the original one passed to createView.\n *\n * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call.\n * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could\n * be undefined if disposing LocalVideoStreamState.\n * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to dispose.\n */\n disposeView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState): void;\n /**\n * The CallAgent is used to handle calls.\n * To create the CallAgent, pass a CommunicationTokenCredential object provided from SDK.\n * - The CallClient can only have one active CallAgent instance at a time.\n * - You can create a new CallClient instance to create a new CallAgent.\n * - You can dispose of a CallClient's current active CallAgent, and call the CallClient's\n * createCallAgent() method again to create a new CallAgent.\n * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential.\n * @param options - The CallAgentOptions for additional options like display name.\n * @public\n */\n createCallAgent(...args: Parameters<CallClient['createCallAgent']>): Promise<DeclarativeCallAgent>;\n\n /**\n * The TeamsCallAgent is used to handle calls.\n * To create the TeamsCallAgent, pass a CommunicationTokenCredential object provided from SDK.\n * - The CallClient can only have one active TeamsCallAgent instance at a time.\n * - You can create a new CallClient instance to create a new TeamsCallAgent.\n * - You can dispose of a CallClient's current active TeamsCallAgent, and call the CallClient's\n * createTeamsCallAgent() method again to create a new TeamsCallAgent.\n * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential.\n * @param options - The TeamsCallAgentOptions for additional options like display name.\n * @public\n */\n createTeamsCallAgent(...args: Parameters<CallClient['createTeamsCallAgent']>): Promise<DeclarativeTeamsCallAgent>;\n}\n\n/**\n * A function to modify the state of the StatefulCallClient.\n *\n * Provided as a callback to the {@link StatefulCallClient.modifyState} method.\n *\n * The function must modify the provided state in place as much as possible.\n * Making large modifications can lead to bad performance by causing spurious rerendering of the UI.\n *\n * Consider using commonly used modifier functions exported from this package.\n */\nexport type CallStateModifier = (state: CallClientState) => void;\n\n/**\n * ProxyCallClient proxies CallClient {@link @azure/communication-calling#CallClient} and subscribes to all events that\n * affect state. ProxyCallClient keeps its own copy of the call state and when state is updated, ProxyCallClient emits\n * the event 'stateChanged'.\n */\nclass ProxyCallClient implements ProxyHandler<CallClient> {\n private _context: CallContext;\n private _internalContext: InternalCallContext;\n private _callAgent: DeclarativeCallAgent | DeclarativeTeamsCallAgent | undefined;\n private _deviceManager: DeviceManager | undefined;\n private _sdkDeviceManager: DeviceManager | undefined;\n constructor(context: CallContext, internalContext: InternalCallContext) {\n this._context = context;\n this._internalContext = internalContext;\n }\n public get<P extends keyof CallClient>(target: CallClient, prop: P): any {\n switch (prop) {\n case 'createCallAgent':\n {\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<CallClient['createCallAgent']>): Promise<DeclarativeCallAgent> => {\n // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous\n // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative\n // callAgent if the createCallAgent succeeds.\n const callAgent = await target.createCallAgent(...args);\n this._callAgent = callAgentDeclaratify(callAgent, this._context, this._internalContext);\n this._context.setCallAgent({\n displayName: this._callAgent.displayName\n });\n return this._callAgent;\n }, 'CallClient.createCallAgent');\n }\n case 'createTeamsCallAgent':\n {\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<CallClient['createTeamsCallAgent']>): Promise<DeclarativeTeamsCallAgent> => {\n // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous\n // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative\n // callAgent if the createCallAgent succeeds.\n const callAgent = await target.createTeamsCallAgent(...args);\n this._callAgent = teamsCallAgentDeclaratify(callAgent, this._context, this._internalContext);\n this._context.setCallAgent({\n displayName: undefined\n });\n return this._callAgent;\n }, 'CallClient.createTeamsCallAgent');\n }\n case 'getDeviceManager':\n {\n return this._context.withAsyncErrorTeedToState(async () => {\n // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of\n // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll\n // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.\n const deviceManager = await target.getDeviceManager();\n if (this._sdkDeviceManager) {\n if (this._sdkDeviceManager === deviceManager) {\n return this._deviceManager;\n } else {\n throw new Error('Multiple DeviceManager not supported. This means a incompatible version of communication-calling is ' + 'used OR calling declarative was not properly updated to communication-calling version.');\n }\n } else {\n this._sdkDeviceManager = deviceManager;\n }\n this._deviceManager = deviceManagerDeclaratify(deviceManager, this._context, this._internalContext);\n return this._deviceManager;\n }, 'CallClient.getDeviceManager');\n }\n case 'feature':\n {\n return this._context.withErrorTeedToState((...args: Parameters<CallClient['feature']>) => {\n if (args[0] === Features.DebugInfo) {\n const feature = target.feature(Features.DebugInfo);\n /**\n * add to this object if we want to proxy anything else off the DebugInfo feature object.\n */\n return {\n ...feature,\n getEnvironmentInfo: async () => {\n const environmentInfo = await feature.getEnvironmentInfo();\n this._context.setEnvironmentInfo(environmentInfo);\n return environmentInfo;\n }\n };\n }\n return Reflect.get(target, prop);\n }, 'CallClient.feature');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n public set<P extends keyof CallClient>(target: CallClient, prop: P): any {\n switch (prop) {\n case 'dispose':\n {\n return this._context.withAsyncErrorTeedToState(async () => {\n await target.dispose();\n }, 'CallClient.dispose');\n }\n }\n }\n}\n\n/**\n * Arguments to construct the StatefulCallClient.\n *\n * @public\n */\nexport type StatefulCallClientArgs = {\n /**\n * UserId from SDK. This is provided for developer convenience to easily access the userId from the\n * state. It is not used by StatefulCallClient.\n */\n userId: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier;\n};\n\n/**\n * Options to construct the StatefulCallClient with.\n *\n * @public\n */\nexport type StatefulCallClientOptions = {\n /**\n * Options to construct the {@link @axure/communication-calling#CallClient} with.\n */\n callClientOptions: CallClientOptions;\n /**\n * Sets the max listeners limit of the 'stateChange' event. Defaults to the node.js EventEmitter.defaultMaxListeners\n * if not specified.\n */\n maxStateChangeListeners?: number;\n};\n\n/**\n * Creates a StatefulCallClient {@link StatefulCallClient} by proxying CallClient\n * {@link @azure/communication-calling#CallClient} with ProxyCallClient {@link ProxyCallClient} which then allows access\n * to state in a declarative way.\n *\n * It is important to use the {@link @azure/communication-calling#DeviceManager} and\n * {@link @azure/communication-calling#CallAgent} and {@link @azure/communication-calling#Call} (and etc.) that are\n * obtained from the StatefulCallClient in order for their state changes to be proxied properly.\n *\n * @param args - {@link StatefulCallClientArgs}\n * @param options - {@link StatefulCallClientOptions}\n *\n * @public\n */\nexport const createStatefulCallClient = (args: StatefulCallClientArgs, options?: StatefulCallClientOptions): StatefulCallClient => {\n return _createStatefulCallClientInner(args, options);\n};\n\n/**\n * This inner function is used to allow injection of TelemetryImplementationHint without changing the public API.\n *\n * @internal\n */\nexport const _createStatefulCallClientInner = (args: StatefulCallClientArgs, options?: StatefulCallClientOptions, telemetryImplementationHint: _TelemetryImplementationHint = 'StatefulComponents'): StatefulCallClient => {\n callingStatefulLogger.info(`Creating calling stateful client using library version: ${_getApplicationId(telemetryImplementationHint)}`);\n return createStatefulCallClientWithDeps(new CallClient(withTelemetryTag(telemetryImplementationHint, options?.callClientOptions)), new CallContext(getIdentifierKind(args.userId), options?.maxStateChangeListeners), new InternalCallContext());\n};\n\n/**\n * Package-internal version of createStatefulCallClient that allows dependency injection.\n *\n * This function should not be exported from the package.\n */\nexport const createStatefulCallClientWithDeps = (callClient: CallClient, context: CallContext, internalContext: InternalCallContext): StatefulCallClient => {\n Object.defineProperty(callClient, 'getState', {\n configurable: false,\n value: () => context.getState()\n });\n Object.defineProperty(callClient, 'onStateChange', {\n configurable: false,\n value: (handler: (state: CallClientState) => void) => context.onStateChange(handler)\n });\n Object.defineProperty(callClient, 'offStateChange', {\n configurable: false,\n value: (handler: (state: CallClientState) => void) => context.offStateChange(handler)\n });\n Object.defineProperty(callClient, 'createView', {\n configurable: false,\n value: async (callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState, options?: CreateViewOptions): Promise<CreateViewResult | undefined> => {\n if ('feature' in stream) {\n return await createCallFeatureView(context, internalContext, callId, stream, options);\n }\n const participantIdKind = participantId ? getIdentifierKind(participantId) : undefined;\n const result = await createView(context, internalContext, callId, participantIdKind, stream, options);\n // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.\n if ('id' in stream && callId && participantId && result) {\n const participantKey = toFlatCommunicationIdentifier(participantId);\n result.view = videoStreamRendererViewDeclaratify(result.view, context, callId, participantKey, stream.id);\n }\n return result;\n }\n });\n Object.defineProperty(callClient, 'disposeView', {\n configurable: false,\n value: (callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState): void => {\n if ('feature' in stream) {\n disposeCallFeatureView(context, internalContext, callId, stream);\n }\n const participantIdKind = participantId ? getIdentifierKind(participantId) : undefined;\n disposeView(context, internalContext, callId, participantIdKind, stream);\n }\n });\n const newStatefulCallClient = new Proxy(callClient, new ProxyCallClient(context, internalContext)) as StatefulCallClient;\n\n // Populate initial state\n newStatefulCallClient.feature(Features.DebugInfo).getEnvironmentInfo();\n return newStatefulCallClient;\n};\nconst withTelemetryTag = (telemetryImplementationHint: _TelemetryImplementationHint, options?: CallClientOptions): CallClientOptions => {\n const tags = options?.diagnostics?.tags ?? [];\n tags.push(_getApplicationId(telemetryImplementationHint));\n return {\n ...options,\n diagnostics: {\n ...options?.diagnostics,\n tags\n }\n };\n};"]}
1
+ {"version":3,"file":"StatefulCallClient.js","sourceRoot":"","sources":["../../../../preprocess-dist/calling-stateful-client/src/StatefulCallClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { deviceManagerDeclaratify } from './DeviceManagerDeclarative';\nimport { CallClient, CallClientOptions, CreateViewOptions, DeviceManager, Features } from '@azure/communication-calling';\nimport { CallClientState, LocalVideoStreamState, RemoteVideoStreamState } from './CallClientState';\nimport { CallFeatureStreamState } from './CallClientState';\nimport { CallContext } from './CallContext';\nimport { callAgentDeclaratify, DeclarativeCallAgent } from './CallAgentDeclarative';\nimport { InternalCallContext } from './InternalCallContext';\nimport { createView, disposeView, CreateViewResult } from './StreamUtils';\nimport { CommunicationIdentifier, CommunicationUserIdentifier, getIdentifierKind } from '@azure/communication-common';\nimport { toFlatCommunicationIdentifier, _getApplicationId, _TelemetryImplementationHint } from '@internal/acs-ui-common';\nimport { callingStatefulLogger } from './Logger';\nimport { DeclarativeTeamsCallAgent, teamsCallAgentDeclaratify } from './TeamsCallAgentDeclarative';\nimport { MicrosoftTeamsUserIdentifier } from '@azure/communication-common';\nimport { videoStreamRendererViewDeclaratify } from './VideoStreamRendererViewDeclarative';\nimport { createView as createCallFeatureView, disposeView as disposeCallFeatureView } from './CallFeatureStreamUtils';\n\n/**\n * Defines the methods that allow CallClient {@link @azure/communication-calling#CallClient} to be used statefully.\n * The interface provides access to proxied state and also allows registering a handler for state change events. For\n * state definition see {@link CallClientState}.\n *\n * State change events are driven by:\n * - Returned data from {@link @azure/communication-calling#DeviceManager} APIs.\n * - Returned data from {@link @azure/communication-calling#CallAgent} APIs.\n * - Listeners automatically attached to various azure communication-calling objects:\n * - CallAgent 'incomingCall'\n * - CallAgent 'callsUpdated'\n * - DeviceManager 'videoDevicesUpdated'\n * - DeviceManager 'audioDevicesUpdated\n * - DeviceManager 'selectedMicrophoneChanged'\n * - DeviceManager 'selectedSpeakerChanged'\n * - Call 'stateChanged'\n * - Call 'idChanged'\n * - Call 'isMutedChanged'\n * - Call 'isScreenSharingOnChanged'\n * - Call 'remoteParticipantsUpdated'\n * - Call 'localVideoStreamsUpdated'\n * - IncomingCall 'callEnded'\n * - RemoteParticipant 'stateChanged'\n * - RemoteParticipant 'isMutedChanged'\n * - RemoteParticipant 'displayNameChanged'\n * - RemoteParticipant 'isSpeakingChanged'\n * - RemoteParticipant 'videoStreamsUpdated'\n * - RemoteVideoStream 'isAvailableChanged'\n * - TranscriptionCallFeature 'isTranscriptionActiveChanged'\n * - RecordingCallFeature 'isRecordingActiveChanged'\n * - LocalRecordingCallFeature 'isLocalRecordingActiveChanged'\n * - RaiseHandCallFeature 'raisedHandEvent'\n * - RaiseHandCallFeature 'loweredHandEvent'\n * - PPTLiveCallFeature 'isAciveChanged'\n * - ReactionCallFeature 'reaction'\n *\n * @public\n */\nexport interface StatefulCallClient extends CallClient {\n /**\n * Holds all the state that we could proxy from CallClient {@link @azure/communication-calling#CallClient} as\n * CallClientState {@link CallClientState}.\n */\n getState(): CallClientState;\n /**\n * Allows a handler to be registered for 'stateChanged' events.\n *\n * @param handler - Callback to receive the state.\n */\n onStateChange(handler: (state: CallClientState) => void): void;\n /**\n * Allows unregistering for 'stateChanged' events.\n *\n * @param handler - Original callback to be unsubscribed.\n */\n offStateChange(handler: (state: CallClientState) => void): void;\n /**\n * Renders a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and stores the resulting\n * {@link VideoStreamRendererViewState} under the relevant {@link RemoteVideoStreamState} or\n * {@link LocalVideoStreamState} or as unparented view in the state. Under the hood calls\n * {@link @azure/communication-calling#VideoStreamRenderer.createView}.\n *\n * Scenario 1: Render RemoteVideoStreamState\n * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required\n * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId and participantId in\n * {@link CallClientState}\n *\n * Scenario 2: Render LocalVideoStreamState for a call\n * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - The {@link @azure/communication-calling#Call.localVideoStreams} must already be started using\n * {@link @azure/communication-calling#Call.startVideo}.\n * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId {@link CallState.localVideoStreams}\n * in {@link CallClientState}.\n *\n * - Scenario 2: Render LocalVideoStreamState not part of a call (example rendering camera for local preview)\n * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - Resulting {@link VideoStreamRendererViewState} is stored in under the given LocalVideoStreamState in\n * {@link CallClientState.deviceManager.unparentedViews}\n *\n * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call.\n * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could\n * be undefined if rendering LocalVideoStreamState.\n * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to start rendering.\n * @param options - Options that are passed to the {@link @azure/communication-calling#VideoStreamRenderer}.\n */\n createView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState, options?: CreateViewOptions): Promise<CreateViewResult | undefined>;\n /**\n * Stops rendering a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and removes the\n * {@link VideoStreamRendererView} from the relevant {@link RemoteVideoStreamState} in {@link CallClientState} or\n * {@link LocalVideoStream} in {@link CallClientState} or appropriate\n * {@link CallClientState.deviceManager.unparentedViews} Under the hood calls\n * {@link @azure/communication-calling#VideoStreamRenderer.dispose}.\n *\n * Its important to disposeView to clean up resources properly.\n *\n * Scenario 1: Dispose RemoteVideoStreamState\n * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required\n *\n * Scenario 2: Dispose LocalVideoStreamState for a call\n * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n *\n * - Scenario 2: Dispose LocalVideoStreamState not part of a call\n * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required.\n * - LocalVideoStreamState must be the original one passed to createView.\n *\n * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call.\n * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could\n * be undefined if disposing LocalVideoStreamState.\n * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to dispose.\n */\n disposeView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState): void;\n /**\n * The CallAgent is used to handle calls.\n * To create the CallAgent, pass a CommunicationTokenCredential object provided from SDK.\n * - The CallClient can only have one active CallAgent instance at a time.\n * - You can create a new CallClient instance to create a new CallAgent.\n * - You can dispose of a CallClient's current active CallAgent, and call the CallClient's\n * createCallAgent() method again to create a new CallAgent.\n * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential.\n * @param options - The CallAgentOptions for additional options like display name.\n * @public\n */\n createCallAgent(...args: Parameters<CallClient['createCallAgent']>): Promise<DeclarativeCallAgent>;\n\n /**\n * The TeamsCallAgent is used to handle calls.\n * To create the TeamsCallAgent, pass a CommunicationTokenCredential object provided from SDK.\n * - The CallClient can only have one active TeamsCallAgent instance at a time.\n * - You can create a new CallClient instance to create a new TeamsCallAgent.\n * - You can dispose of a CallClient's current active TeamsCallAgent, and call the CallClient's\n * createTeamsCallAgent() method again to create a new TeamsCallAgent.\n * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential.\n * @param options - The TeamsCallAgentOptions for additional options like display name.\n * @public\n */\n createTeamsCallAgent(...args: Parameters<CallClient['createTeamsCallAgent']>): Promise<DeclarativeTeamsCallAgent>;\n}\n\n/**\n * A function to modify the state of the StatefulCallClient.\n *\n * Provided as a callback to the {@link StatefulCallClient.modifyState} method.\n *\n * The function must modify the provided state in place as much as possible.\n * Making large modifications can lead to bad performance by causing spurious rerendering of the UI.\n *\n * Consider using commonly used modifier functions exported from this package.\n */\nexport type CallStateModifier = (state: CallClientState) => void;\n\n/**\n * ProxyCallClient proxies CallClient {@link @azure/communication-calling#CallClient} and subscribes to all events that\n * affect state. ProxyCallClient keeps its own copy of the call state and when state is updated, ProxyCallClient emits\n * the event 'stateChanged'.\n */\nclass ProxyCallClient implements ProxyHandler<CallClient> {\n private _context: CallContext;\n private _internalContext: InternalCallContext;\n private _callAgent: DeclarativeCallAgent | DeclarativeTeamsCallAgent | undefined;\n private _deviceManager: DeviceManager | undefined;\n private _sdkDeviceManager: DeviceManager | undefined;\n constructor(context: CallContext, internalContext: InternalCallContext) {\n this._context = context;\n this._internalContext = internalContext;\n }\n public get<P extends keyof CallClient>(target: CallClient, prop: P): any {\n switch (prop) {\n case 'createCallAgent':\n {\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<CallClient['createCallAgent']>): Promise<DeclarativeCallAgent> => {\n // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous\n // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative\n // callAgent if the createCallAgent succeeds.\n const callAgent = await target.createCallAgent(...args);\n this._callAgent = callAgentDeclaratify(callAgent, this._context, this._internalContext);\n this._context.setCallAgent({\n displayName: this._callAgent.displayName\n });\n return this._callAgent;\n }, 'CallClient.createCallAgent');\n }\n case 'createTeamsCallAgent':\n {\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<CallClient['createTeamsCallAgent']>): Promise<DeclarativeTeamsCallAgent> => {\n // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous\n // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative\n // callAgent if the createCallAgent succeeds.\n const callAgent = await target.createTeamsCallAgent(...args);\n this._callAgent = teamsCallAgentDeclaratify(callAgent, this._context, this._internalContext);\n this._context.setCallAgent({\n displayName: undefined\n });\n return this._callAgent;\n }, 'CallClient.createTeamsCallAgent');\n }\n case 'getDeviceManager':\n {\n return this._context.withAsyncErrorTeedToState(async () => {\n // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of\n // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll\n // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.\n const deviceManager = await target.getDeviceManager();\n if (this._sdkDeviceManager) {\n if (this._sdkDeviceManager === deviceManager) {\n return this._deviceManager;\n } else {\n throw new Error('Multiple DeviceManager not supported. This means a incompatible version of communication-calling is ' + 'used OR calling declarative was not properly updated to communication-calling version.');\n }\n } else {\n this._sdkDeviceManager = deviceManager;\n }\n this._deviceManager = deviceManagerDeclaratify(deviceManager, this._context, this._internalContext);\n return this._deviceManager;\n }, 'CallClient.getDeviceManager');\n }\n case 'feature':\n {\n return this._context.withErrorTeedToState((...args: Parameters<CallClient['feature']>) => {\n if (args[0] === Features.DebugInfo) {\n const feature = target.feature(Features.DebugInfo);\n /**\n * add to this object if we want to proxy anything else off the DebugInfo feature object.\n */\n return {\n ...feature,\n getEnvironmentInfo: async () => {\n const environmentInfo = await feature.getEnvironmentInfo();\n this._context.setEnvironmentInfo(environmentInfo);\n return environmentInfo;\n }\n };\n }\n return Reflect.get(target, prop);\n }, 'CallClient.feature');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/**\n * Arguments to construct the StatefulCallClient.\n *\n * @public\n */\nexport type StatefulCallClientArgs = {\n /**\n * UserId from SDK. This is provided for developer convenience to easily access the userId from the\n * state. It is not used by StatefulCallClient.\n */\n userId: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier;\n};\n\n/**\n * Options to construct the StatefulCallClient with.\n *\n * @public\n */\nexport type StatefulCallClientOptions = {\n /**\n * Options to construct the {@link @axure/communication-calling#CallClient} with.\n */\n callClientOptions: CallClientOptions;\n /**\n * Sets the max listeners limit of the 'stateChange' event. Defaults to the node.js EventEmitter.defaultMaxListeners\n * if not specified.\n */\n maxStateChangeListeners?: number;\n};\n\n/**\n * Creates a StatefulCallClient {@link StatefulCallClient} by proxying CallClient\n * {@link @azure/communication-calling#CallClient} with ProxyCallClient {@link ProxyCallClient} which then allows access\n * to state in a declarative way.\n *\n * It is important to use the {@link @azure/communication-calling#DeviceManager} and\n * {@link @azure/communication-calling#CallAgent} and {@link @azure/communication-calling#Call} (and etc.) that are\n * obtained from the StatefulCallClient in order for their state changes to be proxied properly.\n *\n * @param args - {@link StatefulCallClientArgs}\n * @param options - {@link StatefulCallClientOptions}\n *\n * @public\n */\nexport const createStatefulCallClient = (args: StatefulCallClientArgs, options?: StatefulCallClientOptions): StatefulCallClient => {\n return _createStatefulCallClientInner(args, options);\n};\n\n/**\n * This inner function is used to allow injection of TelemetryImplementationHint without changing the public API.\n *\n * @internal\n */\nexport const _createStatefulCallClientInner = (args: StatefulCallClientArgs, options?: StatefulCallClientOptions, telemetryImplementationHint: _TelemetryImplementationHint = 'StatefulComponents'): StatefulCallClient => {\n callingStatefulLogger.info(`Creating calling stateful client using library version: ${_getApplicationId(telemetryImplementationHint)}`);\n return createStatefulCallClientWithDeps(new CallClient(withTelemetryTag(telemetryImplementationHint, options?.callClientOptions)), new CallContext(getIdentifierKind(args.userId), options?.maxStateChangeListeners), new InternalCallContext());\n};\n\n/**\n * Package-internal version of createStatefulCallClient that allows dependency injection.\n *\n * This function should not be exported from the package.\n */\nexport const createStatefulCallClientWithDeps = (callClient: CallClient, context: CallContext, internalContext: InternalCallContext): StatefulCallClient => {\n Object.defineProperty(callClient, 'getState', {\n configurable: false,\n value: () => context.getState()\n });\n Object.defineProperty(callClient, 'onStateChange', {\n configurable: false,\n value: (handler: (state: CallClientState) => void) => context.onStateChange(handler)\n });\n Object.defineProperty(callClient, 'offStateChange', {\n configurable: false,\n value: (handler: (state: CallClientState) => void) => context.offStateChange(handler)\n });\n Object.defineProperty(callClient, 'createView', {\n configurable: false,\n value: async (callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState, options?: CreateViewOptions): Promise<CreateViewResult | undefined> => {\n if ('feature' in stream) {\n return await createCallFeatureView(context, internalContext, callId, stream, options);\n }\n const participantIdKind = participantId ? getIdentifierKind(participantId) : undefined;\n const result = await createView(context, internalContext, callId, participantIdKind, stream, options);\n // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.\n if ('id' in stream && callId && participantId && result) {\n const participantKey = toFlatCommunicationIdentifier(participantId);\n result.view = videoStreamRendererViewDeclaratify(result.view, context, callId, participantKey, stream.id);\n }\n return result;\n }\n });\n Object.defineProperty(callClient, 'disposeView', {\n configurable: false,\n value: (callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState): void => {\n if ('feature' in stream) {\n disposeCallFeatureView(context, internalContext, callId, stream);\n }\n const participantIdKind = participantId ? getIdentifierKind(participantId) : undefined;\n disposeView(context, internalContext, callId, participantIdKind, stream);\n }\n });\n const newStatefulCallClient = new Proxy(callClient, new ProxyCallClient(context, internalContext)) as StatefulCallClient;\n\n // Populate initial state\n newStatefulCallClient.feature(Features.DebugInfo).getEnvironmentInfo();\n return newStatefulCallClient;\n};\nconst withTelemetryTag = (telemetryImplementationHint: _TelemetryImplementationHint, options?: CallClientOptions): CallClientOptions => {\n const tags = options?.diagnostics?.tags ?? [];\n tags.push(_getApplicationId(telemetryImplementationHint));\n return {\n ...options,\n diagnostics: {\n ...options?.diagnostics,\n tags\n }\n };\n};"]}