@azure/communication-react 1.21.0-beta.1 → 1.21.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.
- package/dist/communication-react.d.ts +77 -1694
- package/dist/dist-cjs/communication-react/index.js +36324 -167
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/common.d.ts +0 -13
- package/dist/dist-esm/acs-ui-common/src/common.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/constants.d.ts +0 -5
- package/dist/dist-esm/acs-ui-common/src/constants.js +0 -5
- package/dist/dist-esm/acs-ui-common/src/constants.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/index.d.ts +0 -4
- package/dist/dist-esm/acs-ui-common/src/index.js +0 -3
- package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +0 -8
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +0 -11
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +0 -2
- package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +0 -2
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +1 -7
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +1 -5
- package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js +1 -19
- package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +2 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +1 -35
- package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.d.ts +0 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +1 -3
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.d.ts +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js +3 -3
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +2 -2
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js +0 -4
- package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarativeCommon.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -79
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +0 -15
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js +2 -95
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +0 -5
- package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +4 -27
- package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -3
- package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.d.ts +0 -1
- package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js +1 -7
- package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/TeamsCallDeclarative.js +0 -17
- package/dist/dist-esm/calling-stateful-client/src/TeamsCallDeclarative.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +0 -3
- package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.d.ts +2 -6
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +2 -35
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.d.ts +1 -2
- package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js +0 -3
- package/dist/dist-esm/chat-component-bindings/src/hooks/usePropsFor.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +2 -25
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +3 -3
- package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/ChatClientState.d.ts +1 -15
- package/dist/dist-esm/chat-stateful-client/src/ChatClientState.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js +1 -2
- package/dist/dist-esm/chat-stateful-client/src/EventSubscriber.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/index.d.ts +0 -1
- package/dist/dist-esm/chat-stateful-client/src/index.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +3 -29
- package/dist/dist-esm/communication-react/src/index.js +2 -7
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Announcer.js +1 -1
- package/dist/dist-esm/react-components/src/components/Announcer.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.d.ts +0 -2
- package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.js +0 -1
- package/dist/dist-esm/react-components/src/components/Attachment/AttachmentDownloadCards.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/CameraButton.js +10 -1
- package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +3 -3
- package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +1 -13
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js +3 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +0 -11
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +2 -32
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.d.ts +1 -8
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js +5 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.d.ts +1 -2
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js +4 -4
- package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/FluentChatMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.d.ts +1 -4
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js +6 -31
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +1 -15
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js +0 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +2 -23
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +6 -17
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.d.ts +1 -8
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js +6 -10
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +5 -5
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.js +18 -3
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ImageOverlay.js +0 -2
- package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.d.ts +0 -2
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js +0 -15
- package/dist/dist-esm/react-components/src/components/InputBoxComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +2 -2
- package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +5 -81
- package/dist/dist-esm/react-components/src/components/MessageThread.js +3 -13
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.d.ts +1 -0
- package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js +2 -2
- package/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/NotificationStack.d.ts +0 -20
- package/dist/dist-esm/react-components/src/components/NotificationStack.js +0 -5
- package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantList.d.ts +0 -15
- package/dist/dist-esm/react-components/src/components/ParticipantList.js +3 -12
- package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ReactionButton.d.ts +6 -1
- package/dist/dist-esm/react-components/src/components/ReactionButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/SendBox.d.ts +1 -47
- package/dist/dist-esm/react-components/src/components/SendBox.js +6 -57
- package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js +4 -7
- package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js +0 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js +0 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js +0 -19
- package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js +0 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +23 -21
- package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js +1 -1
- package/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +2 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.js +3 -3
- package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +1 -21
- package/dist/dist-esm/react-components/src/components/index.js +0 -7
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/styles/AttachmentCardGroup.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +10 -2
- package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/CaptionsSettingsModal.styles.js +6 -2
- package/dist/dist-esm/react-components/src/components/styles/CaptionsSettingsModal.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js +1 -2
- package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.d.ts +11 -0
- package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.js +21 -0
- package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +3 -3
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +0 -8
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +2 -0
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +6 -0
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.d.ts +1 -37
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js +3 -30
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentAsEditBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.d.ts +2 -4
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js +2 -9
- package/dist/dist-esm/react-components/src/components/utils/ChatMessageComponentUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +1 -38
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +4 -131
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/common.js +0 -2
- package/dist/dist-esm/react-components/src/components/utils/common.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +1 -2
- package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils.js +1 -6
- package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
- package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.d.ts +0 -4
- package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js +1 -3
- package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/index.d.ts +2 -1
- package/dist/dist-esm/react-components/src/index.js +2 -0
- package/dist/dist-esm/react-components/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +0 -54
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/es-MX/ComponentLocale.d.ts +8 -0
- package/dist/dist-esm/react-components/src/localization/locales/es-MX/ComponentLocale.js +13 -0
- package/dist/dist-esm/react-components/src/localization/locales/es-MX/ComponentLocale.js.map +1 -0
- package/dist/dist-esm/react-components/src/localization/locales/es-MX/strings.json +692 -0
- package/dist/dist-esm/react-components/src/localization/locales/fr-CA/ComponentLocale.d.ts +8 -0
- package/dist/dist-esm/react-components/src/localization/locales/fr-CA/ComponentLocale.js +13 -0
- package/dist/dist-esm/react-components/src/localization/locales/fr-CA/ComponentLocale.js.map +1 -0
- package/dist/dist-esm/react-components/src/localization/locales/fr-CA/strings.json +692 -0
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +0 -30
- package/dist/dist-esm/react-components/src/theming/icons.js +0 -90
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/theming/themes.d.ts +0 -6
- package/dist/dist-esm/react-components/src/theming/themes.js +0 -9
- package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/Attachment.d.ts +0 -13
- package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +1 -20
- package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +0 -72
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +8 -21
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +0 -34
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +5 -47
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +7 -105
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +1 -24
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +0 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +2 -8
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +1 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js +0 -19
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js +7 -10
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +1 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js +0 -19
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +11 -10
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +6 -5
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Prompt.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Prompt.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.js +4 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js +1 -19
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +0 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +0 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +0 -7
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +5 -41
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/NoticePage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.d.ts +0 -18
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +0 -16
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/Buttons.styles.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/Buttons.styles.js +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/Buttons.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +4 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/NetworkReconnectTile.styles.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/NetworkReconnectTile.styles.js +7 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/NetworkReconnectTile.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +1 -12
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -59
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/spotlightUtils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +0 -65
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +5 -24
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +0 -8
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +3 -22
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +2 -136
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +3 -28
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +0 -2
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +0 -9
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +4 -10
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +2 -14
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +0 -11
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.d.ts +0 -5
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +0 -13
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts +0 -27
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts +0 -2
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -189
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.d.ts +0 -20
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +2 -6
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +0 -36
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +2 -12
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js +2 -13
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +0 -2
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.d.ts +0 -4
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js +0 -4
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +2 -14
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +2 -41
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js +0 -21
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js +6 -2
- package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/adapters.d.ts +0 -23
- package/dist/dist-esm/react-composites/src/composites/common/adapters.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +0 -5
- package/dist/dist-esm/react-composites/src/composites/common/constants.js +0 -5
- package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -32
- package/dist/dist-esm/react-composites/src/composites/common/icons.js +0 -2
- package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.d.ts +3 -1
- package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js +9 -1
- package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/utils.d.ts +0 -4
- package/dist/dist-esm/react-composites/src/composites/common/utils.js +0 -22
- package/dist/dist-esm/react-composites/src/composites/common/utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/index.d.ts +2 -1
- package/dist/dist-esm/react-composites/src/composites/index.js +2 -0
- package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/cy-GB/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/es-MX/CompositeLocale.d.ts +8 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/es-MX/CompositeLocale.js +15 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/es-MX/CompositeLocale.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/es-MX/strings.json +413 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-CA/CompositeLocale.d.ts +8 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-CA/CompositeLocale.js +15 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-CA/CompositeLocale.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-CA/strings.json +413 -0
- package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +2 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +2 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/package.json +10 -9
- package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-Btn-7WaT.js +0 -202
- package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-Btn-7WaT.js.map +0 -1
- package/dist/dist-cjs/communication-react/RichTextSendBoxWrapper-DuapxrE4.js +0 -50
- package/dist/dist-cjs/communication-react/RichTextSendBoxWrapper-DuapxrE4.js.map +0 -1
- package/dist/dist-cjs/communication-react/index-BqK17dpb.js +0 -42876
- package/dist/dist-cjs/communication-react/index-BqK17dpb.js.map +0 -1
- package/dist/dist-esm/acs-ui-common/src/dataConversion.d.ts +0 -6
- package/dist/dist-esm/acs-ui-common/src/dataConversion.js +0 -20
- package/dist/dist-esm/acs-ui-common/src/dataConversion.js.map +0 -1
- package/dist/dist-esm/acs-ui-common/src/removeImageTags.d.ts +0 -7
- package/dist/dist-esm/acs-ui-common/src/removeImageTags.js +0 -18
- package/dist/dist-esm/acs-ui-common/src/removeImageTags.js.map +0 -1
- package/dist/dist-esm/calling-stateful-client/src/BreakoutRoomsSubscriber.d.ts +0 -20
- package/dist/dist-esm/calling-stateful-client/src/BreakoutRoomsSubscriber.js +0 -118
- package/dist/dist-esm/calling-stateful-client/src/BreakoutRoomsSubscriber.js.map +0 -1
- package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.d.ts +0 -17
- package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js +0 -33
- package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js.map +0 -1
- package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.d.ts +0 -6
- package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.js +0 -20
- package/dist/dist-esm/chat-component-bindings/src/utils/getImageAttachmentsFromHTMLContent.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.d.ts +0 -10
- package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js +0 -15
- package/dist/dist-esm/react-components/src/components/ChatMessage/MentionRenderer.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +0 -24
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +0 -192
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.d.ts +0 -69
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.js +0 -36
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDenied.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.d.ts +0 -75
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.js +0 -67
- package/dist/dist-esm/react-components/src/components/DevicePermissions/BrowserPermissionDeniedIOS.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.d.ts +0 -105
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js +0 -51
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.d.ts +0 -86
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js +0 -39
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/MentionPopover.d.ts +0 -121
- package/dist/dist-esm/react-components/src/components/MentionPopover.js +0 -119
- package/dist/dist-esm/react-components/src/components/MentionPopover.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.d.ts +0 -9
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js +0 -29
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/ContextMenuPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +0 -30
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +0 -98
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.d.ts +0 -12
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js +0 -23
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/KeyboardInputPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.d.ts +0 -15
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js +0 -42
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.d.ts +0 -24
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js +0 -64
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/RichTextToolbarPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.d.ts +0 -20
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js +0 -45
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/TableEditContextMenuProvider.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.d.ts +0 -14
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js +0 -42
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.d.ts +0 -29
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +0 -87
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +0 -58
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +0 -332
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +0 -37
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +0 -75
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +0 -215
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +0 -168
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.d.ts +0 -16
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js +0 -75
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.d.ts +0 -19
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js +0 -221
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/RichTextToolbar.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.d.ts +0 -7
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js +0 -51
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTableCommandBarItem.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.d.ts +0 -15
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.js +0 -64
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextInsertTablePane.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.d.ts +0 -6
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js +0 -13
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Toolbar/Table/RichTextToolbarTableIcon.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.d.ts +0 -56
- package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js +0 -75
- package/dist/dist-esm/react-components/src/components/SendBoxErrorBar.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/SendBoxErrors.d.ts +0 -14
- package/dist/dist-esm/react-components/src/components/SendBoxErrors.js +0 -18
- package/dist/dist-esm/react-components/src/components/SendBoxErrors.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.d.ts +0 -24
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js +0 -550
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/TextFieldWithMention.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.d.ts +0 -152
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js +0 -819
- package/dist/dist-esm/react-components/src/components/TextFieldWithMention/mentionTagUtils.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.d.ts +0 -58
- package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.js +0 -144
- package/dist/dist-esm/react-components/src/components/styles/BrowserPermissionDenied.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.d.ts +0 -26
- package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js +0 -69
- package/dist/dist-esm/react-components/src/components/styles/MentionPopover.style.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.d.ts +0 -82
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +0 -320
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.d.ts +0 -21
- package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.js +0 -38
- package/dist/dist-esm/react-components/src/components/styles/RichTextInputBoxComponent.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.d.ts +0 -38
- package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js +0 -99
- package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/Stack.style.d.ts +0 -5
- package/dist/dist-esm/react-components/src/components/styles/Stack.style.js +0 -32
- package/dist/dist-esm/react-components/src/components/styles/Stack.style.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.d.ts +0 -26
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js +0 -69
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +0 -72
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +0 -177
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.d.ts +0 -33
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js +0 -119
- package/dist/dist-esm/react-components/src/components/utils/RichTextTableUtils.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/utils/merge.d.ts +0 -7
- package/dist/dist-esm/react-components/src/components/utils/merge.js +0 -16
- package/dist/dist-esm/react-components/src/components/utils/merge.js.map +0 -1
- package/dist/dist-esm/react-components/src/theming/icons.styles.d.ts +0 -6
- package/dist/dist-esm/react-components/src/theming/icons.styles.js +0 -25
- package/dist/dist-esm/react-components/src/theming/icons.styles.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Banner.d.ts +0 -47
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Banner.js +0 -48
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/Banner.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BreakoutRoomsBanner.d.ts +0 -11
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BreakoutRoomsBanner.js +0 -36
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BreakoutRoomsBanner.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +0 -49
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +0 -196
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useCompositeStringsForNotificationStack.d.ts +0 -7
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useCompositeStringsForNotificationStack.js +0 -14
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useCompositeStringsForNotificationStack.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.d.ts +0 -15
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js +0 -41
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.d.ts +0 -15
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.js +0 -23
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/AttachmentDownloadErrorBar.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.d.ts +0 -18
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js +0 -18
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreenPeoplePane.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.d.ts +0 -49
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js +0 -44
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadReducer.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +0 -39
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +0 -265
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +0 -80
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js +0 -36
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.d.ts +0 -38
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js +0 -67
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.d.ts +0 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js +0 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/Timer.d.ts +0 -12
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/Timer.js +0 -52
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/Timer.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.d.ts +0 -10
- package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.js +0 -16
- package/dist/dist-esm/react-composites/src/composites/common/RichTextSendBoxWrapper.js.map +0 -1
@@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
9
9
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
10
10
|
});
|
11
11
|
};
|
12
|
-
import { toFlatCommunicationIdentifier } from "../../../../../acs-ui-common/src";
|
13
12
|
import { callWithChatAdapterStateFromBackingStates, mergeCallAdapterStateIntoCallWithChatAdapterState, mergeChatAdapterStateIntoCallWithChatAdapterState } from '../state/CallWithChatAdapterState';
|
14
13
|
import { _createAzureCommunicationChatAdapterInner, _createLazyAzureCommunicationChatAdapterInner, createAzureCommunicationChatAdapterFromClient } from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';
|
15
14
|
import { EventEmitter } from 'events';
|
@@ -18,7 +17,6 @@ import { _createAzureCommunicationCallAdapterInner } from '../../CallComposite/a
|
|
18
17
|
import { createAzureCommunicationCallAdapterFromClient } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';
|
19
18
|
import { useEffect, useRef, useState } from 'react';
|
20
19
|
import { _toCommunicationIdentifier } from "../../../../../acs-ui-common/src";
|
21
|
-
import { busyWait } from '../../common/utils';
|
22
20
|
/** Context of Call with Chat, which is a centralized context for all state updates */
|
23
21
|
class CallWithChatContext {
|
24
22
|
constructor(clientState, maxListeners = 50) {
|
@@ -45,9 +43,6 @@ class CallWithChatContext {
|
|
45
43
|
updateClientStateWithChatState(chatAdapterState) {
|
46
44
|
this.updateClientState(mergeChatAdapterStateIntoCallWithChatAdapterState(this.state, chatAdapterState));
|
47
45
|
}
|
48
|
-
unsetChatState() {
|
49
|
-
this.updateClientState(Object.assign(Object.assign({}, this.state), { chat: undefined }));
|
50
|
-
}
|
51
46
|
updateClientStateWithCallState(callAdapterState) {
|
52
47
|
this.updateClientState(mergeCallAdapterStateIntoCallWithChatAdapterState(this.state, callAdapterState));
|
53
48
|
}
|
@@ -69,106 +64,20 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
69
64
|
this.onChatStateChange = onChatStateChange;
|
70
65
|
if (chatAdapter) {
|
71
66
|
this.updateChatAdapter(chatAdapter);
|
72
|
-
this.originCallChatAdapter = chatAdapter;
|
73
67
|
}
|
74
68
|
const onCallStateChange = (newCallAdapterState) => {
|
75
69
|
this.context.updateClientStateWithCallState(newCallAdapterState);
|
76
70
|
};
|
77
71
|
this.callAdapter.onStateChange(onCallStateChange);
|
78
|
-
this.callAdapter.on('breakoutRoomsUpdated', (eventData) => __awaiter(this, void 0, void 0, function* () {
|
79
|
-
if (eventData.type === 'join') {
|
80
|
-
yield this.breakoutRoomJoined(eventData.data);
|
81
|
-
}
|
82
|
-
else if (eventData.type === 'assignedBreakoutRooms') {
|
83
|
-
if (!eventData.data || eventData.data.state === 'closed') {
|
84
|
-
yield this.returnFromBreakoutRoom();
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}));
|
88
|
-
this.callAdapter.on('callEnded', () => {
|
89
|
-
var _a, _b, _c;
|
90
|
-
const originCallId = (_b = (_a = this.context.getState().call) === null || _a === void 0 ? void 0 : _a.breakoutRooms) === null || _b === void 0 ? void 0 : _b.breakoutRoomOriginCallId;
|
91
|
-
// If the call ended is a breakout room call, return to the origin call chat adapter
|
92
|
-
if (originCallId && this.originCallChatAdapter) {
|
93
|
-
(_c = this.breakoutRoomChatAdapter) === null || _c === void 0 ? void 0 : _c.dispose();
|
94
|
-
this.updateChatAdapter(this.originCallChatAdapter);
|
95
|
-
}
|
96
|
-
});
|
97
72
|
this.onCallStateChange = onCallStateChange;
|
98
73
|
}
|
99
|
-
breakoutRoomJoined(call) {
|
100
|
-
return __awaiter(this, void 0, void 0, function* () {
|
101
|
-
var _a;
|
102
|
-
const targetThreadId = call.info.threadId;
|
103
|
-
// If the chat adapter is not on the target thread then we need to switch to the breakout room chat adapter
|
104
|
-
if (targetThreadId && this.chatAdapter && this.chatAdapter.getState().thread.threadId !== targetThreadId) {
|
105
|
-
// Unsubscribe from chat adapter state changes
|
106
|
-
this.chatAdapter.offStateChange(this.onChatStateChange);
|
107
|
-
// Set chat state to undefined to prevent showing chat thread of origin call
|
108
|
-
this.context.unsetChatState();
|
109
|
-
// Check if the breakout room chat adapter has been initialized
|
110
|
-
this.breakoutRoomChatAdapter = yield this.setBreakoutRoomChatAdapterToThread(targetThreadId);
|
111
|
-
// Wait for the user to be added to the thread of chat adapter before updating the current chat adapter
|
112
|
-
// to avoid chat errors of not having access to the chat thread. This delayed access to the chat thread
|
113
|
-
// is also seen in Teams
|
114
|
-
// Check up to 20 times every 500ms and then continue.
|
115
|
-
yield busyWait(() => {
|
116
|
-
var _a, _b;
|
117
|
-
// If the call adapter's call id has been changed, then stop waiting and don't update the chat adapter
|
118
|
-
if (((_a = this.context.getState().call) === null || _a === void 0 ? void 0 : _a.id) !== call.id) {
|
119
|
-
return true;
|
120
|
-
}
|
121
|
-
const userAddedToThread = !!((_b = this.breakoutRoomChatAdapter) === null || _b === void 0 ? void 0 : _b.getState().thread.participants[toFlatCommunicationIdentifier(this.context.getState().userId)]);
|
122
|
-
return userAddedToThread;
|
123
|
-
}, 20);
|
124
|
-
// If the call adapter's call has been changed while for waiting for breakout room chat adapter to be ready
|
125
|
-
// then don't update the chat adapter
|
126
|
-
if (((_a = this.context.getState().call) === null || _a === void 0 ? void 0 : _a.id) !== call.id) {
|
127
|
-
return;
|
128
|
-
}
|
129
|
-
this.updateChatAdapter(this.breakoutRoomChatAdapter);
|
130
|
-
}
|
131
|
-
});
|
132
|
-
}
|
133
|
-
setBreakoutRoomChatAdapterToThread(targetThreadId) {
|
134
|
-
return __awaiter(this, void 0, void 0, function* () {
|
135
|
-
if (this.breakoutRoomChatAdapter) {
|
136
|
-
// If the breakout room chat adapter is not set on the target thread then unsubscribe, dispose, and
|
137
|
-
// reinitialize the chat adapter for the target thread
|
138
|
-
if (this.breakoutRoomChatAdapter.getState().thread.threadId !== targetThreadId) {
|
139
|
-
this.breakoutRoomChatAdapter.offStateChange(this.onChatStateChange);
|
140
|
-
this.breakoutRoomChatAdapter.dispose();
|
141
|
-
const newBreakoutRoomChatAdapter = yield this.createNewChatAdapterForThread(targetThreadId);
|
142
|
-
return newBreakoutRoomChatAdapter;
|
143
|
-
}
|
144
|
-
else {
|
145
|
-
return this.breakoutRoomChatAdapter;
|
146
|
-
}
|
147
|
-
}
|
148
|
-
else {
|
149
|
-
// Initiliaze the breakout room chat adapter for the target thread
|
150
|
-
const newBreakoutRoomChatAdapter = yield this.createNewChatAdapterForThread(targetThreadId);
|
151
|
-
return newBreakoutRoomChatAdapter;
|
152
|
-
}
|
153
|
-
});
|
154
|
-
}
|
155
74
|
setChatAdapterPromise(chatAdapter) {
|
156
75
|
chatAdapter.then(adapter => {
|
157
76
|
if (!this.isAdapterDisposed) {
|
158
77
|
this.updateChatAdapter(adapter);
|
159
|
-
this.originCallChatAdapter = adapter;
|
160
78
|
}
|
161
79
|
});
|
162
80
|
}
|
163
|
-
setCreateChatAdapterCallback(chatThreadCallBack) {
|
164
|
-
this.createChatAdapterCallback = chatThreadCallBack;
|
165
|
-
}
|
166
|
-
createNewChatAdapterForThread(threadId) {
|
167
|
-
if (this.createChatAdapterCallback) {
|
168
|
-
return this.createChatAdapterCallback(threadId);
|
169
|
-
}
|
170
|
-
throw new Error('Unable to create chat adapter for thread because createChatAdapterCallback is not set');
|
171
|
-
}
|
172
81
|
updateChatAdapter(chatAdapter) {
|
173
82
|
var _a;
|
174
83
|
(_a = this.chatAdapter) === null || _a === void 0 ? void 0 : _a.offStateChange(this.onChatStateChange);
|
@@ -207,8 +116,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
207
116
|
this.disposeScreenShareStreamView.bind(this);
|
208
117
|
this.fetchInitialData.bind(this);
|
209
118
|
this.sendMessage.bind(this);
|
210
|
-
this.uploadImage.bind(this);
|
211
|
-
this.deleteImage.bind(this);
|
212
119
|
this.sendReadReceipt.bind(this);
|
213
120
|
this.sendTypingIndicator.bind(this);
|
214
121
|
this.loadPreviousChatMessages.bind(this);
|
@@ -222,7 +129,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
222
129
|
this.resumeCall.bind(this);
|
223
130
|
this.addParticipant.bind(this);
|
224
131
|
this.sendDtmfTone.bind(this);
|
225
|
-
this.allowUnsupportedBrowserVersion.bind(this);
|
226
132
|
this.startCaptions.bind(this);
|
227
133
|
this.stopCaptions.bind(this);
|
228
134
|
this.setSpokenLanguage.bind(this);
|
@@ -430,26 +336,10 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
430
336
|
});
|
431
337
|
}
|
432
338
|
/** Send a chat message. */
|
433
|
-
sendMessage(content
|
434
|
-
return __awaiter(this, void 0, void 0, function* () {
|
435
|
-
return yield this.executeWithResolvedChatAdapter(adapter => {
|
436
|
-
return adapter.sendMessage(content, options);
|
437
|
-
});
|
438
|
-
});
|
439
|
-
}
|
440
|
-
/** Upload a chat image. */
|
441
|
-
uploadImage(image, imageFileName) {
|
442
|
-
return __awaiter(this, void 0, void 0, function* () {
|
443
|
-
return yield this.executeWithResolvedChatAdapter(adapter => {
|
444
|
-
return adapter.uploadImage(image, imageFileName);
|
445
|
-
});
|
446
|
-
});
|
447
|
-
}
|
448
|
-
/** Delete a chat image. */
|
449
|
-
deleteImage(imageId) {
|
339
|
+
sendMessage(content) {
|
450
340
|
return __awaiter(this, void 0, void 0, function* () {
|
451
341
|
return yield this.executeWithResolvedChatAdapter(adapter => {
|
452
|
-
return adapter.
|
342
|
+
return adapter.sendMessage(content);
|
453
343
|
});
|
454
344
|
});
|
455
345
|
}
|
@@ -530,9 +420,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
530
420
|
return yield this.callAdapter.sendDtmfTone(dtmfTone);
|
531
421
|
});
|
532
422
|
}
|
533
|
-
allowUnsupportedBrowserVersion() {
|
534
|
-
return this.callAdapter.allowUnsupportedBrowserVersion();
|
535
|
-
}
|
536
423
|
startCaptions(options) {
|
537
424
|
return __awaiter(this, void 0, void 0, function* () {
|
538
425
|
yield this.callAdapter.startCaptions(options);
|
@@ -609,19 +496,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
609
496
|
return this.callAdapter.muteAllRemoteParticipants();
|
610
497
|
});
|
611
498
|
}
|
612
|
-
returnFromBreakoutRoom() {
|
613
|
-
return __awaiter(this, void 0, void 0, function* () {
|
614
|
-
var _a, _b, _c, _d;
|
615
|
-
if (this.originCallChatAdapter && ((_a = this.context.getState().chat) === null || _a === void 0 ? void 0 : _a.threadId) !== this.originCallChatAdapter.getState().thread.threadId) {
|
616
|
-
(_b = this.breakoutRoomChatAdapter) === null || _b === void 0 ? void 0 : _b.dispose();
|
617
|
-
this.updateChatAdapter(this.originCallChatAdapter);
|
618
|
-
}
|
619
|
-
const originCallId = (_d = (_c = this.callAdapter.getState().call) === null || _c === void 0 ? void 0 : _c.breakoutRooms) === null || _d === void 0 ? void 0 : _d.breakoutRoomOriginCallId;
|
620
|
-
if (originCallId) {
|
621
|
-
yield this.callAdapter.returnFromBreakoutRoom();
|
622
|
-
}
|
623
|
-
});
|
624
|
-
}
|
625
499
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
626
500
|
on(event, listener) {
|
627
501
|
switch (event) {
|
@@ -719,9 +593,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
719
593
|
case 'spotlightChanged':
|
720
594
|
this.callAdapter.on('spotlightChanged', listener);
|
721
595
|
break;
|
722
|
-
case 'breakoutRoomsUpdated':
|
723
|
-
this.callAdapter.on('breakoutRoomsUpdated', listener);
|
724
|
-
break;
|
725
596
|
default:
|
726
597
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
727
598
|
}
|
@@ -823,9 +694,6 @@ export class AzureCommunicationCallWithChatAdapter {
|
|
823
694
|
case 'spotlightChanged':
|
824
695
|
this.callAdapter.off('spotlightChanged', listener);
|
825
696
|
break;
|
826
|
-
case 'breakoutRoomsUpdated':
|
827
|
-
this.callAdapter.off('breakoutRoomsUpdated', listener);
|
828
|
-
break;
|
829
697
|
default:
|
830
698
|
throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;
|
831
699
|
}
|
@@ -969,13 +837,11 @@ export const createAzureCommunicationCallWithChatAdapter = (_a) => __awaiter(voi
|
|
969
837
|
const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(yield callAdapter);
|
970
838
|
const chatAdapterPromise = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThreadPromise(), 'CallWithChat');
|
971
839
|
callWithChatAdapter.setChatAdapterPromise(chatAdapterPromise);
|
972
|
-
callWithChatAdapter.setCreateChatAdapterCallback((threadId) => _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat'));
|
973
840
|
return callWithChatAdapter;
|
974
841
|
}
|
975
842
|
else {
|
976
843
|
const chatAdapter = _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat');
|
977
844
|
const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(yield callAdapter, yield chatAdapter);
|
978
|
-
callWithChatAdapter.setCreateChatAdapterCallback((threadId) => _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat'));
|
979
845
|
return callWithChatAdapter;
|
980
846
|
}
|
981
847
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AzureCommunicationCallWithChatAdapter.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unused-vars */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n\nimport { AudioDeviceInfo, Call, CallAgent, GroupCallLocator, PermissionConstraints, PropertyChangedEvent, TeamsMeetingLinkLocator, StartCallOptions, VideoDeviceInfo } from '@azure/communication-calling';\nimport { TeamsMeetingIdLocator } from '@azure/communication-calling';\nimport { Reaction } from '@azure/communication-calling';\nimport { AddPhoneNumberOptions, DeviceAccess } from '@azure/communication-calling';\nimport type { BreakoutRoomsEventData, BreakoutRoomsUpdatedListener, TeamsCall } from '@azure/communication-calling';\nimport { DtmfTone } from '@azure/communication-calling';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\nimport { MessageOptions } from '@internal/acs-ui-common';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { ParticipantsJoinedListener, ParticipantsLeftListener, IsMutedChangedListener, CallIdChangedListener, IsLocalScreenSharingActiveChangedListener, DisplayNameChangedListener, IsSpeakingChangedListener, CallAdapter, CallAdapterState, CallEndedListener } from '../../CallComposite';\nimport { MessageReceivedListener, MessageReadListener, ChatAdapter, ChatAdapterState, ParticipantsRemovedListener, ParticipantsAddedListener, MessageEditedListener, MessageDeletedListener } from '../../ChatComposite';\nimport { ResourceDetails } from '../../ChatComposite';\nimport { CallWithChatAdapter, CallWithChatEvent, ChatInitializedListener } from './CallWithChatAdapter';\nimport { callWithChatAdapterStateFromBackingStates, CallWithChatAdapterState, mergeCallAdapterStateIntoCallWithChatAdapterState, mergeChatAdapterStateIntoCallWithChatAdapterState } from '../state/CallWithChatAdapterState';\nimport { _createAzureCommunicationChatAdapterInner, _createLazyAzureCommunicationChatAdapterInner, createAzureCommunicationChatAdapterFromClient } from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';\nimport { EventEmitter } from 'events';\nimport { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';\nimport { CommunicationIdentifier, isCommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { AdapterError } from '../../common/adapters';\nimport { CallParticipantsLocator } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { _createAzureCommunicationCallAdapterInner } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { CallAdapterLocator, createAzureCommunicationCallAdapterFromClient } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { StatefulCallClient } from '@internal/calling-stateful-client';\nimport { StatefulChatClient } from '@internal/chat-stateful-client';\nimport { ChatThreadClient } from '@azure/communication-chat';\nimport { UploadChatImageResult } from '@internal/acs-ui-common';\nimport { useEffect, useRef, useState } from 'react';\nimport { _toCommunicationIdentifier, _TelemetryImplementationHint } from '@internal/acs-ui-common';\nimport { JoinCallOptions, StartCallIdentifier, StartCaptionsAdapterOptions, StopCaptionsAdapterOptions } from '../../CallComposite/adapter/CallAdapter';\nimport { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { IsCaptionsActiveChangedListener, CaptionsReceivedListener, IsCaptionLanguageChangedListener, IsSpokenLanguageChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { CapabilitiesChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { SpotlightChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { VideoBackgroundImage, VideoBackgroundEffect } from '../../CallComposite';\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\nimport { busyWait } from '../../common/utils';\ntype CallWithChatAdapterStateChangedHandler = (newState: CallWithChatAdapterState) => void;\n\n/** Context of Call with Chat, which is a centralized context for all state updates */\nclass CallWithChatContext {\n private emitter = new EventEmitter();\n private state: CallWithChatAdapterState;\n constructor(clientState: CallWithChatAdapterState, maxListeners = 50) {\n this.state = clientState;\n this.emitter.setMaxListeners(maxListeners);\n }\n public onStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.on('stateChanged', handler);\n }\n public offStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.off('stateChanged', handler);\n }\n public setState(state: CallWithChatAdapterState): void {\n this.state = state;\n this.emitter.emit('stateChanged', this.state);\n }\n public getState(): CallWithChatAdapterState {\n return this.state;\n }\n public updateClientState(clientState: CallWithChatAdapterState): void {\n this.setState(clientState);\n }\n public updateClientStateWithChatState(chatAdapterState: ChatAdapterState): void {\n this.updateClientState(mergeChatAdapterStateIntoCallWithChatAdapterState(this.state, chatAdapterState));\n }\n public unsetChatState(): void {\n this.updateClientState({\n ...this.state,\n chat: undefined\n });\n }\n public updateClientStateWithCallState(callAdapterState: CallAdapterState): void {\n this.updateClientState(mergeCallAdapterStateIntoCallWithChatAdapterState(this.state, callAdapterState));\n }\n}\n\n/**\n * CallWithChat adapter backed by Azure Communication Services.\n * Created for easy use with the {@link CallWithChatComposite}.\n */\nexport class AzureCommunicationCallWithChatAdapter implements CallWithChatAdapter {\n private callAdapter: CallAdapter;\n private chatAdapter: ChatAdapter | undefined;\n private context: CallWithChatContext;\n private emitter: EventEmitter = new EventEmitter();\n private onChatStateChange: (newChatAdapterState: ChatAdapterState) => void;\n private onCallStateChange: (newChatAdapterState: CallAdapterState) => void;\n private isAdapterDisposed: boolean = false;\n private createChatAdapterCallback: ((threadId: string) => Promise<ChatAdapter>) | undefined;\n private originCallChatAdapter: ChatAdapter | undefined;\n private breakoutRoomChatAdapter: ChatAdapter | undefined;\n constructor(callAdapter: CallAdapter, chatAdapter?: ChatAdapter) {\n this.bindPublicMethods();\n this.callAdapter = callAdapter;\n this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter));\n const onChatStateChange = (newChatAdapterState: ChatAdapterState): void => {\n this.context.updateClientStateWithChatState(newChatAdapterState);\n };\n this.onChatStateChange = onChatStateChange;\n if (chatAdapter) {\n this.updateChatAdapter(chatAdapter);\n this.originCallChatAdapter = chatAdapter;\n }\n const onCallStateChange = (newCallAdapterState: CallAdapterState): void => {\n this.context.updateClientStateWithCallState(newCallAdapterState);\n };\n this.callAdapter.onStateChange(onCallStateChange);\n this.callAdapter.on('breakoutRoomsUpdated', async (eventData: BreakoutRoomsEventData) => {\n if (eventData.type === 'join') {\n await this.breakoutRoomJoined(eventData.data);\n } else if (eventData.type === 'assignedBreakoutRooms') {\n if (!eventData.data || eventData.data.state === 'closed') {\n await this.returnFromBreakoutRoom();\n }\n }\n });\n this.callAdapter.on('callEnded', () => {\n const originCallId = this.context.getState().call?.breakoutRooms?.breakoutRoomOriginCallId;\n\n // If the call ended is a breakout room call, return to the origin call chat adapter\n if (originCallId && this.originCallChatAdapter) {\n this.breakoutRoomChatAdapter?.dispose();\n this.updateChatAdapter(this.originCallChatAdapter);\n }\n });\n this.onCallStateChange = onCallStateChange;\n }\n private async breakoutRoomJoined(call: Call | TeamsCall): Promise<void> {\n const targetThreadId = call.info.threadId;\n\n // If the chat adapter is not on the target thread then we need to switch to the breakout room chat adapter\n if (targetThreadId && this.chatAdapter && this.chatAdapter.getState().thread.threadId !== targetThreadId) {\n // Unsubscribe from chat adapter state changes\n this.chatAdapter.offStateChange(this.onChatStateChange);\n // Set chat state to undefined to prevent showing chat thread of origin call\n this.context.unsetChatState();\n\n // Check if the breakout room chat adapter has been initialized\n this.breakoutRoomChatAdapter = await this.setBreakoutRoomChatAdapterToThread(targetThreadId);\n\n // Wait for the user to be added to the thread of chat adapter before updating the current chat adapter\n // to avoid chat errors of not having access to the chat thread. This delayed access to the chat thread\n // is also seen in Teams\n // Check up to 20 times every 500ms and then continue.\n await busyWait(() => {\n // If the call adapter's call id has been changed, then stop waiting and don't update the chat adapter\n if (this.context.getState().call?.id !== call.id) {\n return true;\n }\n const userAddedToThread = !!this.breakoutRoomChatAdapter?.getState().thread.participants[toFlatCommunicationIdentifier(this.context.getState().userId)];\n return userAddedToThread;\n }, 20);\n\n // If the call adapter's call has been changed while for waiting for breakout room chat adapter to be ready\n // then don't update the chat adapter\n if (this.context.getState().call?.id !== call.id) {\n return;\n }\n this.updateChatAdapter(this.breakoutRoomChatAdapter);\n }\n }\n private async setBreakoutRoomChatAdapterToThread(targetThreadId: string): Promise<ChatAdapter> {\n if (this.breakoutRoomChatAdapter) {\n // If the breakout room chat adapter is not set on the target thread then unsubscribe, dispose, and\n // reinitialize the chat adapter for the target thread\n if (this.breakoutRoomChatAdapter.getState().thread.threadId !== targetThreadId) {\n this.breakoutRoomChatAdapter.offStateChange(this.onChatStateChange);\n this.breakoutRoomChatAdapter.dispose();\n const newBreakoutRoomChatAdapter = await this.createNewChatAdapterForThread(targetThreadId);\n return newBreakoutRoomChatAdapter;\n } else {\n return this.breakoutRoomChatAdapter;\n }\n } else {\n // Initiliaze the breakout room chat adapter for the target thread\n const newBreakoutRoomChatAdapter = await this.createNewChatAdapterForThread(targetThreadId);\n return newBreakoutRoomChatAdapter;\n }\n }\n public setChatAdapterPromise(chatAdapter: Promise<ChatAdapter>): void {\n chatAdapter.then(adapter => {\n if (!this.isAdapterDisposed) {\n this.updateChatAdapter(adapter);\n this.originCallChatAdapter = adapter;\n }\n });\n }\n public setCreateChatAdapterCallback(chatThreadCallBack: (threadId: string) => Promise<ChatAdapter>): void {\n this.createChatAdapterCallback = chatThreadCallBack;\n }\n public createNewChatAdapterForThread(threadId: string): Promise<ChatAdapter> {\n if (this.createChatAdapterCallback) {\n return this.createChatAdapterCallback(threadId);\n }\n throw new Error('Unable to create chat adapter for thread because createChatAdapterCallback is not set');\n }\n private updateChatAdapter(chatAdapter: ChatAdapter): void {\n this.chatAdapter?.offStateChange(this.onChatStateChange);\n this.chatAdapter = chatAdapter;\n this.chatAdapter.onStateChange(this.onChatStateChange);\n this.context.updateClientStateWithChatState(chatAdapter.getState());\n this.emitter.emit('chatInitialized', this.chatAdapter);\n }\n private bindPublicMethods(): void {\n this.joinCall.bind(this);\n this.leaveCall.bind(this);\n this.startCall.bind(this);\n this.onStateChange.bind(this);\n this.offStateChange.bind(this);\n this.getState.bind(this);\n this.dispose.bind(this);\n this.setCamera.bind(this);\n this.setMicrophone.bind(this);\n this.setSpeaker.bind(this);\n this.askDevicePermission.bind(this);\n this.queryCameras.bind(this);\n this.queryMicrophones.bind(this);\n this.querySpeakers.bind(this);\n this.startCamera.bind(this);\n this.stopCamera.bind(this);\n this.mute.bind(this);\n this.unmute.bind(this);\n this.startScreenShare.bind(this);\n this.stopScreenShare.bind(this);\n this.raiseHand.bind(this);\n this.lowerHand.bind(this);\n this.onReactionClick.bind(this);\n this.removeParticipant.bind(this);\n this.createStreamView.bind(this);\n this.disposeStreamView.bind(this);\n this.disposeScreenShareStreamView.bind(this);\n this.fetchInitialData.bind(this);\n this.sendMessage.bind(this);\n this.uploadImage.bind(this);\n this.deleteImage.bind(this);\n this.sendReadReceipt.bind(this);\n this.sendTypingIndicator.bind(this);\n this.loadPreviousChatMessages.bind(this);\n this.updateMessage.bind(this);\n this.deleteMessage.bind(this);\n this.on.bind(this);\n this.off.bind(this);\n this.downloadResourceToCache = this.downloadResourceToCache.bind(this);\n this.removeResourceFromCache = this.removeResourceFromCache.bind(this);\n this.holdCall.bind(this);\n this.resumeCall.bind(this);\n this.addParticipant.bind(this);\n this.sendDtmfTone.bind(this);\n this.allowUnsupportedBrowserVersion.bind(this);\n this.startCaptions.bind(this);\n this.stopCaptions.bind(this);\n this.setSpokenLanguage.bind(this);\n this.setCaptionLanguage.bind(this);\n this.startVideoBackgroundEffect.bind(this);\n this.stopVideoBackgroundEffects.bind(this);\n this.updateBackgroundPickerImages.bind(this);\n this.startNoiseSuppressionEffect.bind(this);\n this.stopNoiseSuppressionEffect.bind(this);\n }\n\n /** Join existing Call. */\n public joinCall(options?: boolean | JoinCallOptions): Call | undefined {\n if (typeof options === 'boolean') {\n return this.callAdapter.joinCall(options);\n } else {\n return this.callAdapter.joinCall(options);\n }\n }\n /** Leave current Call. */\n public async leaveCall(forEveryone?: boolean): Promise<void> {\n // Only remove self from the GroupCall. Contoso must manage access to Chat.\n await this.callAdapter.leaveCall(forEveryone);\n }\n\n /** Start a new Call. */\n public startCall(participants: string[], options?: StartCallOptions): Call | undefined;\n /** Start a new Call. */\n public startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined;\n /** Start a new Call. */\n public startCall(participants: string[] | StartCallIdentifier[], options?: StartCallOptions): Call | undefined {\n if (participants.length === 0) {\n throw new Error('At least one participant is required to start a call');\n }\n if (typeof participants[0] === 'string') {\n return this.callAdapter.startCall(participants as string[], options);\n } else {\n return this.callAdapter.startCall(participants as StartCallIdentifier[], options);\n }\n }\n /**\n * Subscribe to state change events.\n * @param handler - handler to be called when the state changes. This is passed the new state.\n */\n public onStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.onStateChange(handler);\n }\n /**\n * Unsubscribe to state change events.\n * @param handler - handler to be no longer called when state changes.\n */\n public offStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.offStateChange(handler);\n }\n /** Get current Call and Chat state. */\n public getState(): CallWithChatAdapterState {\n return this.context.getState();\n }\n /** Dispose of the current CallWithChatAdapter. */\n public dispose(): void {\n this.isAdapterDisposed = true;\n if (this.chatAdapter) {\n this.chatAdapter.offStateChange(this.onChatStateChange);\n this.chatAdapter.dispose();\n }\n this.callAdapter.offStateChange(this.onCallStateChange);\n this.callAdapter.dispose();\n }\n /** Remove a participant from the Call only. */\n public async removeParticipant(userId: string | CommunicationIdentifier): Promise<void> {\n let participant = userId;\n participant = _toCommunicationIdentifier(userId);\n await this.callAdapter.removeParticipant(participant);\n }\n public async setCamera(device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.setCamera(device, options);\n }\n /** Set the microphone to be used in the Call. */\n public async setMicrophone(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setMicrophone(device);\n }\n /** Set the speaker to be used in the Call. */\n public async setSpeaker(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setSpeaker(device);\n }\n public async askDevicePermission(constraints: PermissionConstraints): Promise<DeviceAccess> {\n return await this.callAdapter.askDevicePermission(constraints);\n }\n /** Query for available cameras. */\n public async queryCameras(): Promise<VideoDeviceInfo[]> {\n return await this.callAdapter.queryCameras();\n }\n /** Query for available microphones. */\n public async queryMicrophones(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.queryMicrophones();\n }\n /** Query for available speakers. */\n public async querySpeakers(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.querySpeakers();\n }\n /** Start the camera for the user in the Call. */\n public async startCamera(options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.startCamera(options);\n }\n /** Stop the camera for the user in the Call. */\n public async stopCamera(): Promise<void> {\n await this.callAdapter.stopCamera();\n }\n /** Mute the user in the Call. */\n public async mute(): Promise<void> {\n await this.callAdapter.mute();\n }\n /** Unmute the user in the Call. */\n public async unmute(): Promise<void> {\n await this.callAdapter.unmute();\n }\n /** Trigger the user to start screen share. */\n public async startScreenShare(): Promise<void> {\n await this.callAdapter.startScreenShare();\n }\n /** Stop the current active screen share. */\n public async stopScreenShare(): Promise<void> {\n await this.callAdapter.stopScreenShare();\n }\n /** Raise hand for local user. */\n public async raiseHand(): Promise<void> {\n await this.callAdapter.raiseHand();\n }\n /** Lower hand for local user. */\n public async lowerHand(): Promise<void> {\n await this.callAdapter.lowerHand();\n }\n /** Reaction clicked by the local user. */\n public async onReactionClick(reaction: Reaction): Promise<void> {\n await this.callAdapter.onReactionClick(reaction);\n }\n /** Create a stream view for a remote participants video feed. */\n public async createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult> {\n return await this.callAdapter.createStreamView(remoteUserId, options);\n }\n /** Dispose of a created stream view of a remote participants video feed. */\n public async disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.disposeStreamView(remoteUserId, options);\n }\n /** Dispose of a remote screen share */\n public async disposeScreenShareStreamView(remoteUserId: string): Promise<void> {\n await this.callAdapter.disposeScreenShareStreamView(remoteUserId);\n }\n /** Dispose of a remote video stream */\n public async disposeRemoteVideoStreamView(remoteUserId: string): Promise<void> {\n await this.callAdapter.disposeRemoteVideoStreamView(remoteUserId);\n }\n /** Dispose of the local video stream */\n public async disposeLocalVideoStreamView(): Promise<void> {\n await this.callAdapter.disposeLocalVideoStreamView();\n }\n /** Fetch initial Call and Chat data such as chat messages. */\n public async fetchInitialData(): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.fetchInitialData();\n });\n }\n /** Send a chat message. */\n public async sendMessage(content: string, options?: MessageOptions): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendMessage(content, options);\n });\n }\n /** Upload a chat image. */\n public async uploadImage(image: Blob, imageFileName: string): Promise<UploadChatImageResult> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.uploadImage(image, imageFileName);\n });\n }\n /** Delete a chat image. */\n public async deleteImage(imageId: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.deleteImage(imageId);\n });\n }\n /** Send a chat read receipt. */\n public async sendReadReceipt(chatMessageId: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendReadReceipt(chatMessageId);\n });\n }\n /** Send an isTyping indicator. */\n public async sendTypingIndicator(): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendTypingIndicator();\n });\n }\n /** Load previous Chat messages. */\n public async loadPreviousChatMessages(messagesToLoad: number): Promise<boolean> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.loadPreviousChatMessages(messagesToLoad);\n });\n }\n /** Update an existing message. */\n public async updateMessage(messageId: string, content: string, options?: Record<string, string> | MessageOptions): Promise<void> {\n return this.executeWithResolvedChatAdapter(adapter => {\n return adapter.updateMessage(messageId, content, options);\n });\n }\n /** Delete an existing message. */\n public async deleteMessage(messageId: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.deleteMessage(messageId);\n });\n }\n public async downloadResourceToCache(resourceDetails: ResourceDetails): Promise<void> {\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.downloadResourceToCache(resourceDetails);\n });\n }\n public removeResourceFromCache(resourceDetails: ResourceDetails): void {\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.removeResourceFromCache(resourceDetails);\n });\n }\n public async holdCall(): Promise<void> {\n return await this.callAdapter.holdCall();\n }\n public async resumeCall(): Promise<void> {\n return await this.callAdapter.resumeCall();\n }\n public async addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;\n public async addParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n public async addParticipant(participant: PhoneNumberIdentifier | CommunicationUserIdentifier, options?: AddPhoneNumberOptions): Promise<void> {\n if (isCommunicationUserIdentifier(participant)) {\n return await this.callAdapter.addParticipant(participant);\n } else {\n return await this.callAdapter.addParticipant(participant, options);\n }\n }\n public async sendDtmfTone(dtmfTone: DtmfTone): Promise<void> {\n return await this.callAdapter.sendDtmfTone(dtmfTone);\n }\n public allowUnsupportedBrowserVersion(): void {\n return this.callAdapter.allowUnsupportedBrowserVersion();\n }\n public async startCaptions(options?: StartCaptionsAdapterOptions): Promise<void> {\n await this.callAdapter.startCaptions(options);\n }\n public async stopCaptions(options?: StopCaptionsAdapterOptions): Promise<void> {\n await this.callAdapter.stopCaptions(options);\n }\n public async setCaptionLanguage(language: string): Promise<void> {\n await this.callAdapter.setCaptionLanguage(language);\n }\n public async setSpokenLanguage(language: string): Promise<void> {\n await this.callAdapter.setSpokenLanguage(language);\n }\n public async startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void> {\n await this.callAdapter.startVideoBackgroundEffect(videoBackgroundEffect);\n }\n public async stopVideoBackgroundEffects(): Promise<void> {\n return await this.callAdapter.stopVideoBackgroundEffects();\n }\n public updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void {\n return this.callAdapter.updateBackgroundPickerImages(backgroundImages);\n }\n public updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void {\n return this.callAdapter.updateSelectedVideoBackgroundEffect(selectedVideoBackground);\n }\n public async startNoiseSuppressionEffect(): Promise<void> {\n return await this.callAdapter.startNoiseSuppressionEffect();\n }\n public async stopNoiseSuppressionEffect(): Promise<void> {\n return await this.callAdapter.stopNoiseSuppressionEffect();\n }\n public async submitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined> {\n return this.callAdapter.submitSurvey(survey);\n }\n public async startSpotlight(userIds?: string[]): Promise<void> {\n return this.callAdapter.startSpotlight(userIds);\n }\n public async stopSpotlight(userIds?: string[]): Promise<void> {\n return this.callAdapter.stopSpotlight(userIds);\n }\n public async stopAllSpotlight(): Promise<void> {\n return this.callAdapter.stopAllSpotlight();\n }\n public async muteParticipant(userId: string): Promise<void> {\n return this.callAdapter.muteParticipant(userId);\n }\n public async muteAllRemoteParticipants(): Promise<void> {\n return this.callAdapter.muteAllRemoteParticipants();\n }\n public async returnFromBreakoutRoom(): Promise<void> {\n if (this.originCallChatAdapter && this.context.getState().chat?.threadId !== this.originCallChatAdapter.getState().thread.threadId) {\n this.breakoutRoomChatAdapter?.dispose();\n this.updateChatAdapter(this.originCallChatAdapter);\n }\n const originCallId = this.callAdapter.getState().call?.breakoutRooms?.breakoutRoomOriginCallId;\n if (originCallId) {\n await this.callAdapter.returnFromBreakoutRoom();\n }\n }\n on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n on(event: 'callEnded', listener: CallEndedListener): void;\n on(event: 'callError', listener: (e: AdapterError) => void): void;\n on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n on(event: 'callIdChanged', listener: CallIdChangedListener): void;\n on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n on(event: 'messageReceived', listener: MessageReceivedListener): void;\n on(event: 'messageEdited', listener: MessageEditedListener): void;\n on(event: 'messageDeleted', listener: MessageDeletedListener): void;\n on(event: 'messageSent', listener: MessageReceivedListener): void;\n on(event: 'messageRead', listener: MessageReadListener): void;\n on(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n on(event: 'chatError', listener: (e: AdapterError) => void): void;\n on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n on(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;\n on(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;\n on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;\n on(event: 'spotlightChanged', listener: SpotlightChangedListener): void;\n on(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;\n on(event: 'chatInitialized', listener: ChatInitializedListener): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event: CallWithChatEvent, listener: any): void {\n switch (event) {\n case 'callParticipantsJoined':\n this.callAdapter.on('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.on('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.on('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.on('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.on('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.on('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.on('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.on('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.on('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.on('selectedSpeakerChanged', listener);\n break;\n case 'captionsReceived':\n this.callAdapter.on('captionsReceived', listener);\n break;\n case 'isCaptionsActiveChanged':\n this.callAdapter.on('isCaptionsActiveChanged', listener);\n break;\n case 'isCaptionLanguageChanged':\n this.callAdapter.on('isCaptionLanguageChanged', listener);\n break;\n case 'isSpokenLanguageChanged':\n this.callAdapter.on('isSpokenLanguageChanged', listener);\n break;\n case 'messageReceived':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageReceived', listener);\n });\n break;\n case 'messageEdited':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageEdited', listener);\n });\n break;\n case 'messageDeleted':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageDeleted', listener);\n });\n break;\n case 'messageSent':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageSent', listener);\n });\n break;\n case 'messageRead':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageRead', listener);\n });\n break;\n case 'chatParticipantsAdded':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('participantsAdded', listener);\n });\n break;\n case 'chatParticipantsRemoved':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('participantsRemoved', listener);\n });\n break;\n case 'callError':\n this.callAdapter.on('error', listener);\n break;\n case 'chatError':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('error', listener);\n });\n break;\n case 'chatInitialized':\n this.emitter.on(event, listener);\n break;\n case 'capabilitiesChanged':\n this.callAdapter.on('capabilitiesChanged', listener);\n break;\n case 'spotlightChanged':\n this.callAdapter.on('spotlightChanged', listener);\n break;\n case 'breakoutRoomsUpdated':\n this.callAdapter.on('breakoutRoomsUpdated', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n off(event: 'callEnded', listener: CallEndedListener): void;\n off(event: 'callError', listener: (e: AdapterError) => void): void;\n off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n off(event: 'callIdChanged', listener: CallIdChangedListener): void;\n off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n off(event: 'messageReceived', listener: MessageReceivedListener): void;\n off(event: 'messageEdited', listener: MessageEditedListener): void;\n off(event: 'messageDeleted', listener: MessageDeletedListener): void;\n off(event: 'messageSent', listener: MessageReceivedListener): void;\n off(event: 'messageRead', listener: MessageReadListener): void;\n off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n off(event: 'chatError', listener: (e: AdapterError) => void): void;\n off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n off(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;\n off(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;\n off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;\n off(event: 'spotlightChanged', listener: SpotlightChangedListener): void;\n off(event: 'chatInitialized', listener: ChatInitializedListener): void;\n off(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event: CallWithChatEvent, listener: any): void {\n switch (event as unknown) {\n case 'callParticipantsJoined':\n this.callAdapter.off('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.off('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.off('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.off('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.off('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.off('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.off('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.off('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.off('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.off('selectedSpeakerChanged', listener);\n break;\n case 'captionsReceived':\n this.callAdapter.off('captionsReceived', listener);\n break;\n case 'isCaptionsActiveChanged':\n this.callAdapter.off('isCaptionsActiveChanged', listener);\n break;\n case 'isCaptionLanguageChanged':\n this.callAdapter.off('isCaptionLanguageChanged', listener);\n break;\n case 'isSpokenLanguageChanged':\n this.callAdapter.off('isSpokenLanguageChanged', listener);\n break;\n case 'messageReceived':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageReceived', listener);\n });\n break;\n case 'messageEdited':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageEdited', listener);\n });\n break;\n case 'messageDeleted':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageDeleted', listener);\n });\n break;\n case 'messageSent':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageSent', listener);\n });\n break;\n case 'messageRead':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageRead', listener);\n });\n break;\n case 'chatParticipantsAdded':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('participantsAdded', listener);\n });\n break;\n case 'chatParticipantsRemoved':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('participantsRemoved', listener);\n });\n break;\n case 'callError':\n this.callAdapter.off('error', listener);\n break;\n case 'chatError':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('error', listener);\n });\n break;\n case 'chatInitialized':\n this.emitter.off(event, listener);\n break;\n case 'capabilitiesChanged':\n this.callAdapter.off('capabilitiesChanged', listener);\n break;\n case 'spotlightChanged':\n this.callAdapter.off('spotlightChanged', listener);\n break;\n case 'breakoutRoomsUpdated':\n this.callAdapter.off('breakoutRoomsUpdated', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private executeWithResolvedChatAdapter(callback: (adapter: ChatAdapter) => any): any {\n if (!this.chatAdapter) {\n console.error('Chat is not initialized');\n } else {\n return callback(this.chatAdapter);\n }\n }\n}\n\n/**\n * Provides a way to get the chat thread ID for a given locator.\n *\n * @private\n */\nexport interface ChatThreadProvider {\n isCallInfoRequired(): boolean;\n getChatThreadPromise(): Promise<string>;\n getChatThread(): string;\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Group Call with an associated Chat thread.\n * @private\n */\nexport class CallAndChatProvider implements ChatThreadProvider {\n public locator: CallAndChatLocator;\n constructor(locator: CallAndChatLocator) {\n this.locator = locator;\n }\n public isCallInfoRequired(): boolean {\n return false;\n }\n public async getChatThreadPromise(): Promise<string> {\n return this.getChatThread();\n }\n public getChatThread(): string {\n return this.locator.chatThreadId;\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting with an associated Chat thread.\n *\n * @private\n */\nexport class TeamsMeetingLinkProvider implements ChatThreadProvider {\n public locator: TeamsMeetingLinkLocator;\n private callAdapterPromise: Promise<CallAdapter>;\n private callAdapterSubscription?: (state: CallAdapterState) => void;\n constructor(locator: TeamsMeetingLinkLocator, callAdapterPromise: Promise<CallAdapter>) {\n this.locator = locator;\n this.callAdapterPromise = callAdapterPromise;\n }\n public isCallInfoRequired(): boolean {\n return true;\n }\n public getChatThread(): string {\n throw new Error('Chat thread ID should be retrieved from call.callInfo using method getChatThreadPromise');\n }\n public async getChatThreadPromise(): Promise<string> {\n {\n // Wait for the call to be connected and get the chat thread ID from `call.callInfo`.\n const chatThreadPromise = new Promise<string>(resolve => {\n this.callAdapterPromise.then(callAdapter => {\n // Ensure function is idempotent by removing any existing subscription.\n this.callAdapterSubscription && callAdapter.offStateChange(this.callAdapterSubscription);\n this.callAdapterSubscription = (state: CallAdapterState): void => {\n if (state.call?.state === 'Connected' && state.call.info?.threadId) {\n this.callAdapterSubscription && callAdapter.offStateChange(this.callAdapterSubscription);\n this.callAdapterSubscription = undefined;\n resolve(state.call.info?.threadId);\n }\n };\n callAdapter.onStateChange(this.callAdapterSubscription);\n });\n });\n return chatThreadPromise;\n }\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting using meeting id.\n *\n * @private\n */\nexport class TeamsMeetingIdProvider implements ChatThreadProvider {\n public locator: TeamsMeetingIdLocator;\n private callAdapter: Promise<CallAdapter>;\n constructor(locator: TeamsMeetingIdLocator, callAdapter: Promise<CallAdapter>) {\n this.locator = locator;\n this.callAdapter = callAdapter;\n }\n public isCallInfoRequired(): boolean {\n return true;\n }\n public getChatThread(): string {\n throw new Error('Chat thread ID is not available for Teams meeting ID');\n }\n\n /**\n * Wait call to be connected to get thread ID.\n * @returns the chat thread ID for the given meeting ID.\n */\n public async getChatThreadPromise(): Promise<string> {\n return new Promise<string>(resolve => {\n const stateChangeListener = (state: CallAdapterState): void => {\n if (state.call?.state === 'Connected' && state.call.info?.threadId) {\n this.callAdapter.then(adapter => {\n adapter.offStateChange(stateChangeListener);\n });\n resolve(state.call.info?.threadId);\n }\n };\n this.callAdapter.then(adapter => {\n const callState = adapter.getState().call?.state;\n const threadId = adapter.getState().call?.info?.threadId;\n if (callState === 'Connected' && threadId) {\n resolve(threadId);\n } else {\n adapter.onStateChange(stateChangeListener);\n }\n });\n });\n }\n}\n\n/**\n * Combination of available adapters for use in {@link createAzureCommunicationCallWithChatAdapter}.\n * @public\n */\nexport type CommunicationAdapter = CallAndChatProvider | TeamsMeetingLinkProvider | TeamsMeetingIdProvider;\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread.\n *\n * @public\n */\nexport interface CallAndChatLocator {\n /** Locator used by {@link createAzureCommunicationCallWithChatAdapter} to locate the call to join */\n callLocator: GroupCallLocator | CallParticipantsLocator;\n /** Chat thread ID used by {@link createAzureCommunicationCallWithChatAdapter} to locate the chat thread to join */\n chatThreadId: string;\n}\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapter}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterArgs = {\n endpoint: string;\n userId: CommunicationUserIdentifier;\n displayName: string;\n credential: CommunicationTokenCredential;\n locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator;\n alternateCallerId?: string;\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a CallWithChatAdapter backed by Azure Communication services\n * to plug into the {@link CallWithChatComposite}.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapter = async ({\n userId,\n displayName,\n credential,\n endpoint,\n locator,\n alternateCallerId,\n callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterArgs): Promise<CallWithChatAdapter> => {\n const callAdapterLocator = isTeamsMeetingLocator(locator) ? locator : locator.callLocator;\n const callAdapter = _createAzureCommunicationCallAdapterInner({\n userId,\n displayName,\n credential,\n locator: callAdapterLocator,\n alternateCallerId,\n options: callAdapterOptions,\n telemetryImplementationHint: 'CallWithChat' as _TelemetryImplementationHint\n });\n const chatThreadAdapter = _createChatThreadAdapterInner(locator, callAdapter);\n if (chatThreadAdapter.isCallInfoRequired()) {\n const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(await callAdapter);\n const chatAdapterPromise = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThreadPromise(), 'CallWithChat' as _TelemetryImplementationHint);\n callWithChatAdapter.setChatAdapterPromise(chatAdapterPromise);\n callWithChatAdapter.setCreateChatAdapterCallback((threadId: string) => _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat' as _TelemetryImplementationHint));\n return callWithChatAdapter;\n } else {\n const chatAdapter = _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat' as _TelemetryImplementationHint);\n const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(await callAdapter, await chatAdapter);\n callWithChatAdapter.setCreateChatAdapterCallback((threadId: string) => _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, threadId, 'CallWithChat' as _TelemetryImplementationHint));\n return callWithChatAdapter;\n }\n};\n\n/**\n * A custom React hook to simplify the creation of {@link CallWithChatAdapter}.\n *\n * Similar to {@link createAzureCommunicationCallWithChatAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useAzureCommunicationCallWithChatAdapter = (args: Partial<AzureCommunicationCallWithChatAdapterArgs>, afterCreate?: (adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>, beforeDispose?: (adapter: CallWithChatAdapter) => Promise<void>): CallWithChatAdapter | undefined => {\n const {\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n alternateCallerId,\n callAdapterOptions\n } = args;\n\n // State update needed to rerender the parent component when a new adapter is created.\n const [adapter, setAdapter] = useState<CallWithChatAdapter | undefined>(undefined);\n // Ref needed for cleanup to access the old adapter created asynchronously.\n const adapterRef = useRef<CallWithChatAdapter | undefined>(undefined);\n const creatingAdapterRef = useRef<boolean>(false);\n const afterCreateRef = useRef<((adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>) | undefined>(undefined);\n const beforeDisposeRef = useRef<((adapter: CallWithChatAdapter) => Promise<void>) | undefined>(undefined);\n // These refs are updated on *each* render, so that the latest values\n // are used in the `useEffect` closures below.\n // Using a Ref ensures that new values for the callbacks do not trigger the\n // useEffect blocks, and a new adapter creation / distruction is not triggered.\n afterCreateRef.current = afterCreate;\n beforeDisposeRef.current = beforeDispose;\n useEffect(() => {\n if (!credential || !displayName || !endpoint || !locator || !userId) {\n return;\n }\n (async () => {\n if (adapterRef.current) {\n // Dispose the old adapter when a new one is created.\n //\n // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of\n // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter\n // creation.\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n if (creatingAdapterRef.current) {\n console.warn('Adapter is already being created, please see storybook for more information: https://azure.github.io/communication-ui-library/?path=/story/troubleshooting--page');\n return;\n }\n creatingAdapterRef.current = true;\n let newAdapter = await createAzureCommunicationCallWithChatAdapter({\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n alternateCallerId,\n callAdapterOptions\n });\n if (afterCreateRef.current) {\n newAdapter = await afterCreateRef.current(newAdapter);\n }\n adapterRef.current = newAdapter;\n creatingAdapterRef.current = false;\n setAdapter(newAdapter);\n })();\n },\n // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.\n [adapterRef, afterCreateRef, alternateCallerId, beforeDisposeRef, credential, displayName, endpoint, locator, userId, callAdapterOptions]);\n\n // Dispose any existing adapter when the component unmounts.\n useEffect(() => {\n return () => {\n (async () => {\n if (adapterRef.current) {\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n })();\n };\n }, []);\n return adapter;\n};\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapterFromClient}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterFromClientArgs = {\n callLocator: CallAdapterLocator | TeamsMeetingLinkLocator;\n callAgent: CallAgent;\n callClient: StatefulCallClient;\n chatClient: StatefulChatClient;\n chatThreadClient: ChatThreadClient;\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulChatClient} and {@link StatefulCallClient}.\n * Please note that chatThreadClient has to be created by StatefulChatClient via chatClient.getChatThreadClient(chatThreadId) API.\n * Consider using {@link createAzureCommunicationCallWithChatAdapter} for a simpler API.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapterFromClients = async ({\n callClient,\n callAgent,\n callLocator,\n chatClient,\n chatThreadClient,\n callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterFromClientArgs): Promise<CallWithChatAdapter> => {\n const callAdapter = await createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);\n const chatAdapter = await createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * Create a {@link CallWithChatAdapter} from the underlying adapters.\n *\n * This is an internal factory function used by browser tests to inject fake adapters for call and chat.\n *\n * @internal\n */\nexport const _createAzureCommunicationCallWithChatAdapterFromAdapters = (callAdapter: CallAdapter, chatAdapter: ChatAdapter): CallWithChatAdapter => new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\nconst isTeamsMeetingLocator = (locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator): locator is TeamsMeetingLinkLocator | TeamsMeetingIdLocator => {\n return 'meetingLink' in locator || 'meetingId' in locator;\n};\nconst _createChatThreadAdapterInner = (locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator, adapter: Promise<CallAdapter>): ChatThreadProvider => {\n if ('meetingLink' in locator) {\n return new TeamsMeetingLinkProvider(locator, adapter);\n }\n if ('meetingId' in locator) {\n return new TeamsMeetingIdProvider(locator, adapter);\n }\n return new CallAndChatProvider(locator);\n};"]}
|
1
|
+
{"version":3,"file":"AzureCommunicationCallWithChatAdapter.js","sourceRoot":"","sources":["../../../../../../../preprocess-dist/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unused-vars */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ // REMOVE ONCE THIS FILE IS IMPLEMENTED\n\nimport { AudioDeviceInfo, Call, CallAgent, GroupCallLocator, PermissionConstraints, PropertyChangedEvent, TeamsMeetingLinkLocator, StartCallOptions, VideoDeviceInfo } from '@azure/communication-calling';\nimport { TeamsMeetingIdLocator } from '@azure/communication-calling';\nimport { Reaction } from '@azure/communication-calling';\nimport { AddPhoneNumberOptions, DeviceAccess } from '@azure/communication-calling';\nimport { DtmfTone } from '@azure/communication-calling';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\nimport { ParticipantsJoinedListener, ParticipantsLeftListener, IsMutedChangedListener, CallIdChangedListener, IsLocalScreenSharingActiveChangedListener, DisplayNameChangedListener, IsSpeakingChangedListener, CallAdapter, CallAdapterState, CallEndedListener } from '../../CallComposite';\nimport { MessageReceivedListener, MessageReadListener, ChatAdapter, ChatAdapterState, ParticipantsRemovedListener, ParticipantsAddedListener, MessageEditedListener, MessageDeletedListener } from '../../ChatComposite';\nimport { ResourceDetails } from '../../ChatComposite';\nimport { CallWithChatAdapter, CallWithChatEvent, ChatInitializedListener } from './CallWithChatAdapter';\nimport { callWithChatAdapterStateFromBackingStates, CallWithChatAdapterState, mergeCallAdapterStateIntoCallWithChatAdapterState, mergeChatAdapterStateIntoCallWithChatAdapterState } from '../state/CallWithChatAdapterState';\nimport { _createAzureCommunicationChatAdapterInner, _createLazyAzureCommunicationChatAdapterInner, createAzureCommunicationChatAdapterFromClient } from '../../ChatComposite/adapter/AzureCommunicationChatAdapter';\nimport { EventEmitter } from 'events';\nimport { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';\nimport { CommunicationIdentifier, isCommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { AdapterError } from '../../common/adapters';\nimport { _createAzureCommunicationCallAdapterInner } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { CallAdapterLocator, createAzureCommunicationCallAdapterFromClient } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { StatefulCallClient } from '@internal/calling-stateful-client';\nimport { StatefulChatClient } from '@internal/chat-stateful-client';\nimport { ChatThreadClient } from '@azure/communication-chat';\nimport { useEffect, useRef, useState } from 'react';\nimport { _toCommunicationIdentifier, _TelemetryImplementationHint } from '@internal/acs-ui-common';\nimport { JoinCallOptions, StartCallIdentifier, StartCaptionsAdapterOptions, StopCaptionsAdapterOptions } from '../../CallComposite/adapter/CallAdapter';\nimport { AzureCommunicationCallAdapterOptions } from '../../CallComposite/adapter/AzureCommunicationCallAdapter';\nimport { IsCaptionsActiveChangedListener, CaptionsReceivedListener, IsCaptionLanguageChangedListener, IsSpokenLanguageChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { CapabilitiesChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { SpotlightChangedListener } from '../../CallComposite/adapter/CallAdapter';\nimport { VideoBackgroundImage, VideoBackgroundEffect } from '../../CallComposite';\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\ntype CallWithChatAdapterStateChangedHandler = (newState: CallWithChatAdapterState) => void;\n\n/** Context of Call with Chat, which is a centralized context for all state updates */\nclass CallWithChatContext {\n private emitter = new EventEmitter();\n private state: CallWithChatAdapterState;\n constructor(clientState: CallWithChatAdapterState, maxListeners = 50) {\n this.state = clientState;\n this.emitter.setMaxListeners(maxListeners);\n }\n public onStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.on('stateChanged', handler);\n }\n public offStateChange(handler: CallWithChatAdapterStateChangedHandler): void {\n this.emitter.off('stateChanged', handler);\n }\n public setState(state: CallWithChatAdapterState): void {\n this.state = state;\n this.emitter.emit('stateChanged', this.state);\n }\n public getState(): CallWithChatAdapterState {\n return this.state;\n }\n public updateClientState(clientState: CallWithChatAdapterState): void {\n this.setState(clientState);\n }\n public updateClientStateWithChatState(chatAdapterState: ChatAdapterState): void {\n this.updateClientState(mergeChatAdapterStateIntoCallWithChatAdapterState(this.state, chatAdapterState));\n }\n public updateClientStateWithCallState(callAdapterState: CallAdapterState): void {\n this.updateClientState(mergeCallAdapterStateIntoCallWithChatAdapterState(this.state, callAdapterState));\n }\n}\n\n/**\n * CallWithChat adapter backed by Azure Communication Services.\n * Created for easy use with the {@link CallWithChatComposite}.\n */\nexport class AzureCommunicationCallWithChatAdapter implements CallWithChatAdapter {\n private callAdapter: CallAdapter;\n private chatAdapter: ChatAdapter | undefined;\n private context: CallWithChatContext;\n private emitter: EventEmitter = new EventEmitter();\n private onChatStateChange: (newChatAdapterState: ChatAdapterState) => void;\n private onCallStateChange: (newChatAdapterState: CallAdapterState) => void;\n private isAdapterDisposed: boolean = false;\n constructor(callAdapter: CallAdapter, chatAdapter?: ChatAdapter) {\n this.bindPublicMethods();\n this.callAdapter = callAdapter;\n this.context = new CallWithChatContext(callWithChatAdapterStateFromBackingStates(callAdapter));\n const onChatStateChange = (newChatAdapterState: ChatAdapterState): void => {\n this.context.updateClientStateWithChatState(newChatAdapterState);\n };\n this.onChatStateChange = onChatStateChange;\n if (chatAdapter) {\n this.updateChatAdapter(chatAdapter);\n }\n const onCallStateChange = (newCallAdapterState: CallAdapterState): void => {\n this.context.updateClientStateWithCallState(newCallAdapterState);\n };\n this.callAdapter.onStateChange(onCallStateChange);\n this.onCallStateChange = onCallStateChange;\n }\n public setChatAdapterPromise(chatAdapter: Promise<ChatAdapter>): void {\n chatAdapter.then(adapter => {\n if (!this.isAdapterDisposed) {\n this.updateChatAdapter(adapter);\n }\n });\n }\n private updateChatAdapter(chatAdapter: ChatAdapter): void {\n this.chatAdapter?.offStateChange(this.onChatStateChange);\n this.chatAdapter = chatAdapter;\n this.chatAdapter.onStateChange(this.onChatStateChange);\n this.context.updateClientStateWithChatState(chatAdapter.getState());\n this.emitter.emit('chatInitialized', this.chatAdapter);\n }\n private bindPublicMethods(): void {\n this.joinCall.bind(this);\n this.leaveCall.bind(this);\n this.startCall.bind(this);\n this.onStateChange.bind(this);\n this.offStateChange.bind(this);\n this.getState.bind(this);\n this.dispose.bind(this);\n this.setCamera.bind(this);\n this.setMicrophone.bind(this);\n this.setSpeaker.bind(this);\n this.askDevicePermission.bind(this);\n this.queryCameras.bind(this);\n this.queryMicrophones.bind(this);\n this.querySpeakers.bind(this);\n this.startCamera.bind(this);\n this.stopCamera.bind(this);\n this.mute.bind(this);\n this.unmute.bind(this);\n this.startScreenShare.bind(this);\n this.stopScreenShare.bind(this);\n this.raiseHand.bind(this);\n this.lowerHand.bind(this);\n this.onReactionClick.bind(this);\n this.removeParticipant.bind(this);\n this.createStreamView.bind(this);\n this.disposeStreamView.bind(this);\n this.disposeScreenShareStreamView.bind(this);\n this.fetchInitialData.bind(this);\n this.sendMessage.bind(this);\n this.sendReadReceipt.bind(this);\n this.sendTypingIndicator.bind(this);\n this.loadPreviousChatMessages.bind(this);\n this.updateMessage.bind(this);\n this.deleteMessage.bind(this);\n this.on.bind(this);\n this.off.bind(this);\n this.downloadResourceToCache = this.downloadResourceToCache.bind(this);\n this.removeResourceFromCache = this.removeResourceFromCache.bind(this);\n this.holdCall.bind(this);\n this.resumeCall.bind(this);\n this.addParticipant.bind(this);\n this.sendDtmfTone.bind(this);\n this.startCaptions.bind(this);\n this.stopCaptions.bind(this);\n this.setSpokenLanguage.bind(this);\n this.setCaptionLanguage.bind(this);\n this.startVideoBackgroundEffect.bind(this);\n this.stopVideoBackgroundEffects.bind(this);\n this.updateBackgroundPickerImages.bind(this);\n this.startNoiseSuppressionEffect.bind(this);\n this.stopNoiseSuppressionEffect.bind(this);\n }\n\n /** Join existing Call. */\n public joinCall(options?: boolean | JoinCallOptions): Call | undefined {\n if (typeof options === 'boolean') {\n return this.callAdapter.joinCall(options);\n } else {\n return this.callAdapter.joinCall(options);\n }\n }\n /** Leave current Call. */\n public async leaveCall(forEveryone?: boolean): Promise<void> {\n // Only remove self from the GroupCall. Contoso must manage access to Chat.\n await this.callAdapter.leaveCall(forEveryone);\n }\n\n /** Start a new Call. */\n public startCall(participants: string[], options?: StartCallOptions): Call | undefined;\n /** Start a new Call. */\n public startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined;\n /** Start a new Call. */\n public startCall(participants: string[] | StartCallIdentifier[], options?: StartCallOptions): Call | undefined {\n if (participants.length === 0) {\n throw new Error('At least one participant is required to start a call');\n }\n if (typeof participants[0] === 'string') {\n return this.callAdapter.startCall(participants as string[], options);\n } else {\n return this.callAdapter.startCall(participants as StartCallIdentifier[], options);\n }\n }\n /**\n * Subscribe to state change events.\n * @param handler - handler to be called when the state changes. This is passed the new state.\n */\n public onStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.onStateChange(handler);\n }\n /**\n * Unsubscribe to state change events.\n * @param handler - handler to be no longer called when state changes.\n */\n public offStateChange(handler: (state: CallWithChatAdapterState) => void): void {\n this.context.offStateChange(handler);\n }\n /** Get current Call and Chat state. */\n public getState(): CallWithChatAdapterState {\n return this.context.getState();\n }\n /** Dispose of the current CallWithChatAdapter. */\n public dispose(): void {\n this.isAdapterDisposed = true;\n if (this.chatAdapter) {\n this.chatAdapter.offStateChange(this.onChatStateChange);\n this.chatAdapter.dispose();\n }\n this.callAdapter.offStateChange(this.onCallStateChange);\n this.callAdapter.dispose();\n }\n /** Remove a participant from the Call only. */\n public async removeParticipant(userId: string | CommunicationIdentifier): Promise<void> {\n let participant = userId;\n participant = _toCommunicationIdentifier(userId);\n await this.callAdapter.removeParticipant(participant);\n }\n public async setCamera(device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.setCamera(device, options);\n }\n /** Set the microphone to be used in the Call. */\n public async setMicrophone(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setMicrophone(device);\n }\n /** Set the speaker to be used in the Call. */\n public async setSpeaker(device: AudioDeviceInfo): Promise<void> {\n await this.callAdapter.setSpeaker(device);\n }\n public async askDevicePermission(constraints: PermissionConstraints): Promise<DeviceAccess> {\n return await this.callAdapter.askDevicePermission(constraints);\n }\n /** Query for available cameras. */\n public async queryCameras(): Promise<VideoDeviceInfo[]> {\n return await this.callAdapter.queryCameras();\n }\n /** Query for available microphones. */\n public async queryMicrophones(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.queryMicrophones();\n }\n /** Query for available speakers. */\n public async querySpeakers(): Promise<AudioDeviceInfo[]> {\n return await this.callAdapter.querySpeakers();\n }\n /** Start the camera for the user in the Call. */\n public async startCamera(options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.startCamera(options);\n }\n /** Stop the camera for the user in the Call. */\n public async stopCamera(): Promise<void> {\n await this.callAdapter.stopCamera();\n }\n /** Mute the user in the Call. */\n public async mute(): Promise<void> {\n await this.callAdapter.mute();\n }\n /** Unmute the user in the Call. */\n public async unmute(): Promise<void> {\n await this.callAdapter.unmute();\n }\n /** Trigger the user to start screen share. */\n public async startScreenShare(): Promise<void> {\n await this.callAdapter.startScreenShare();\n }\n /** Stop the current active screen share. */\n public async stopScreenShare(): Promise<void> {\n await this.callAdapter.stopScreenShare();\n }\n /** Raise hand for local user. */\n public async raiseHand(): Promise<void> {\n await this.callAdapter.raiseHand();\n }\n /** Lower hand for local user. */\n public async lowerHand(): Promise<void> {\n await this.callAdapter.lowerHand();\n }\n /** Reaction clicked by the local user. */\n public async onReactionClick(reaction: Reaction): Promise<void> {\n await this.callAdapter.onReactionClick(reaction);\n }\n /** Create a stream view for a remote participants video feed. */\n public async createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult> {\n return await this.callAdapter.createStreamView(remoteUserId, options);\n }\n /** Dispose of a created stream view of a remote participants video feed. */\n public async disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void> {\n await this.callAdapter.disposeStreamView(remoteUserId, options);\n }\n /** Dispose of a remote screen share */\n public async disposeScreenShareStreamView(remoteUserId: string): Promise<void> {\n await this.callAdapter.disposeScreenShareStreamView(remoteUserId);\n }\n /** Dispose of a remote video stream */\n public async disposeRemoteVideoStreamView(remoteUserId: string): Promise<void> {\n await this.callAdapter.disposeRemoteVideoStreamView(remoteUserId);\n }\n /** Dispose of the local video stream */\n public async disposeLocalVideoStreamView(): Promise<void> {\n await this.callAdapter.disposeLocalVideoStreamView();\n }\n /** Fetch initial Call and Chat data such as chat messages. */\n public async fetchInitialData(): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.fetchInitialData();\n });\n }\n /** Send a chat message. */\n public async sendMessage(content: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendMessage(content);\n });\n }\n /** Send a chat read receipt. */\n public async sendReadReceipt(chatMessageId: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendReadReceipt(chatMessageId);\n });\n }\n /** Send an isTyping indicator. */\n public async sendTypingIndicator(): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.sendTypingIndicator();\n });\n }\n /** Load previous Chat messages. */\n public async loadPreviousChatMessages(messagesToLoad: number): Promise<boolean> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.loadPreviousChatMessages(messagesToLoad);\n });\n }\n /** Update an existing message. */\n public async updateMessage(messageId: string, content: string, options?: Record<string, string>): Promise<void> {\n return this.executeWithResolvedChatAdapter(adapter => {\n return adapter.updateMessage(messageId, content, options);\n });\n }\n /** Delete an existing message. */\n public async deleteMessage(messageId: string): Promise<void> {\n return await this.executeWithResolvedChatAdapter(adapter => {\n return adapter.deleteMessage(messageId);\n });\n }\n public async downloadResourceToCache(resourceDetails: ResourceDetails): Promise<void> {\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.downloadResourceToCache(resourceDetails);\n });\n }\n public removeResourceFromCache(resourceDetails: ResourceDetails): void {\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.removeResourceFromCache(resourceDetails);\n });\n }\n public async holdCall(): Promise<void> {\n return await this.callAdapter.holdCall();\n }\n public async resumeCall(): Promise<void> {\n return await this.callAdapter.resumeCall();\n }\n public async addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;\n public async addParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n public async addParticipant(participant: PhoneNumberIdentifier | CommunicationUserIdentifier, options?: AddPhoneNumberOptions): Promise<void> {\n if (isCommunicationUserIdentifier(participant)) {\n return await this.callAdapter.addParticipant(participant);\n } else {\n return await this.callAdapter.addParticipant(participant, options);\n }\n }\n public async sendDtmfTone(dtmfTone: DtmfTone): Promise<void> {\n return await this.callAdapter.sendDtmfTone(dtmfTone);\n }\n public async startCaptions(options?: StartCaptionsAdapterOptions): Promise<void> {\n await this.callAdapter.startCaptions(options);\n }\n public async stopCaptions(options?: StopCaptionsAdapterOptions): Promise<void> {\n await this.callAdapter.stopCaptions(options);\n }\n public async setCaptionLanguage(language: string): Promise<void> {\n await this.callAdapter.setCaptionLanguage(language);\n }\n public async setSpokenLanguage(language: string): Promise<void> {\n await this.callAdapter.setSpokenLanguage(language);\n }\n public async startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void> {\n await this.callAdapter.startVideoBackgroundEffect(videoBackgroundEffect);\n }\n public async stopVideoBackgroundEffects(): Promise<void> {\n return await this.callAdapter.stopVideoBackgroundEffects();\n }\n public updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void {\n return this.callAdapter.updateBackgroundPickerImages(backgroundImages);\n }\n public updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void {\n return this.callAdapter.updateSelectedVideoBackgroundEffect(selectedVideoBackground);\n }\n public async startNoiseSuppressionEffect(): Promise<void> {\n return await this.callAdapter.startNoiseSuppressionEffect();\n }\n public async stopNoiseSuppressionEffect(): Promise<void> {\n return await this.callAdapter.stopNoiseSuppressionEffect();\n }\n public async submitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined> {\n return this.callAdapter.submitSurvey(survey);\n }\n public async startSpotlight(userIds?: string[]): Promise<void> {\n return this.callAdapter.startSpotlight(userIds);\n }\n public async stopSpotlight(userIds?: string[]): Promise<void> {\n return this.callAdapter.stopSpotlight(userIds);\n }\n public async stopAllSpotlight(): Promise<void> {\n return this.callAdapter.stopAllSpotlight();\n }\n public async muteParticipant(userId: string): Promise<void> {\n return this.callAdapter.muteParticipant(userId);\n }\n public async muteAllRemoteParticipants(): Promise<void> {\n return this.callAdapter.muteAllRemoteParticipants();\n }\n on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n on(event: 'callEnded', listener: CallEndedListener): void;\n on(event: 'callError', listener: (e: AdapterError) => void): void;\n on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n on(event: 'callIdChanged', listener: CallIdChangedListener): void;\n on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n on(event: 'messageReceived', listener: MessageReceivedListener): void;\n on(event: 'messageEdited', listener: MessageEditedListener): void;\n on(event: 'messageDeleted', listener: MessageDeletedListener): void;\n on(event: 'messageSent', listener: MessageReceivedListener): void;\n on(event: 'messageRead', listener: MessageReadListener): void;\n on(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n on(event: 'chatError', listener: (e: AdapterError) => void): void;\n on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n on(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;\n on(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;\n on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;\n on(event: 'spotlightChanged', listener: SpotlightChangedListener): void;\n on(event: 'chatInitialized', listener: ChatInitializedListener): void;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event: CallWithChatEvent, listener: any): void {\n switch (event) {\n case 'callParticipantsJoined':\n this.callAdapter.on('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.on('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.on('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.on('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.on('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.on('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.on('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.on('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.on('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.on('selectedSpeakerChanged', listener);\n break;\n case 'captionsReceived':\n this.callAdapter.on('captionsReceived', listener);\n break;\n case 'isCaptionsActiveChanged':\n this.callAdapter.on('isCaptionsActiveChanged', listener);\n break;\n case 'isCaptionLanguageChanged':\n this.callAdapter.on('isCaptionLanguageChanged', listener);\n break;\n case 'isSpokenLanguageChanged':\n this.callAdapter.on('isSpokenLanguageChanged', listener);\n break;\n case 'messageReceived':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageReceived', listener);\n });\n break;\n case 'messageEdited':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageEdited', listener);\n });\n break;\n case 'messageDeleted':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageDeleted', listener);\n });\n break;\n case 'messageSent':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageSent', listener);\n });\n break;\n case 'messageRead':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('messageRead', listener);\n });\n break;\n case 'chatParticipantsAdded':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('participantsAdded', listener);\n });\n break;\n case 'chatParticipantsRemoved':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('participantsRemoved', listener);\n });\n break;\n case 'callError':\n this.callAdapter.on('error', listener);\n break;\n case 'chatError':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.on('error', listener);\n });\n break;\n case 'chatInitialized':\n this.emitter.on(event, listener);\n break;\n case 'capabilitiesChanged':\n this.callAdapter.on('capabilitiesChanged', listener);\n break;\n case 'spotlightChanged':\n this.callAdapter.on('spotlightChanged', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;\n off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;\n off(event: 'callEnded', listener: CallEndedListener): void;\n off(event: 'callError', listener: (e: AdapterError) => void): void;\n off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;\n off(event: 'callIdChanged', listener: CallIdChangedListener): void;\n off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;\n off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;\n off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;\n off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;\n off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;\n off(event: 'messageReceived', listener: MessageReceivedListener): void;\n off(event: 'messageEdited', listener: MessageEditedListener): void;\n off(event: 'messageDeleted', listener: MessageDeletedListener): void;\n off(event: 'messageSent', listener: MessageReceivedListener): void;\n off(event: 'messageRead', listener: MessageReadListener): void;\n off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;\n off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;\n off(event: 'chatError', listener: (e: AdapterError) => void): void;\n off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;\n off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;\n off(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;\n off(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;\n off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;\n off(event: 'spotlightChanged', listener: SpotlightChangedListener): void;\n off(event: 'chatInitialized', listener: ChatInitializedListener): void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event: CallWithChatEvent, listener: any): void {\n switch (event as unknown) {\n case 'callParticipantsJoined':\n this.callAdapter.off('participantsJoined', listener);\n break;\n case 'callParticipantsLeft':\n this.callAdapter.off('participantsLeft', listener);\n break;\n case 'callEnded':\n this.callAdapter.off('callEnded', listener);\n break;\n case 'isMutedChanged':\n this.callAdapter.off('isMutedChanged', listener);\n break;\n case 'callIdChanged':\n this.callAdapter.off('callIdChanged', listener);\n break;\n case 'isLocalScreenSharingActiveChanged':\n this.callAdapter.off('isLocalScreenSharingActiveChanged', listener);\n break;\n case 'displayNameChanged':\n this.callAdapter.off('displayNameChanged', listener);\n break;\n case 'isSpeakingChanged':\n this.callAdapter.off('isSpeakingChanged', listener);\n break;\n case 'selectedMicrophoneChanged':\n this.callAdapter.off('selectedMicrophoneChanged', listener);\n break;\n case 'selectedSpeakerChanged':\n this.callAdapter.off('selectedSpeakerChanged', listener);\n break;\n case 'captionsReceived':\n this.callAdapter.off('captionsReceived', listener);\n break;\n case 'isCaptionsActiveChanged':\n this.callAdapter.off('isCaptionsActiveChanged', listener);\n break;\n case 'isCaptionLanguageChanged':\n this.callAdapter.off('isCaptionLanguageChanged', listener);\n break;\n case 'isSpokenLanguageChanged':\n this.callAdapter.off('isSpokenLanguageChanged', listener);\n break;\n case 'messageReceived':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageReceived', listener);\n });\n break;\n case 'messageEdited':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageEdited', listener);\n });\n break;\n case 'messageDeleted':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageDeleted', listener);\n });\n break;\n case 'messageSent':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageSent', listener);\n });\n break;\n case 'messageRead':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('messageRead', listener);\n });\n break;\n case 'chatParticipantsAdded':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('participantsAdded', listener);\n });\n break;\n case 'chatParticipantsRemoved':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('participantsRemoved', listener);\n });\n break;\n case 'callError':\n this.callAdapter.off('error', listener);\n break;\n case 'chatError':\n this.executeWithResolvedChatAdapter(adapter => {\n adapter.off('error', listener);\n });\n break;\n case 'chatInitialized':\n this.emitter.off(event, listener);\n break;\n case 'capabilitiesChanged':\n this.callAdapter.off('capabilitiesChanged', listener);\n break;\n case 'spotlightChanged':\n this.callAdapter.off('spotlightChanged', listener);\n break;\n default:\n throw `Unknown AzureCommunicationCallWithChatAdapter Event: ${event}`;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private executeWithResolvedChatAdapter(callback: (adapter: ChatAdapter) => any): any {\n if (!this.chatAdapter) {\n console.error('Chat is not initialized');\n } else {\n return callback(this.chatAdapter);\n }\n }\n}\n\n/**\n * Provides a way to get the chat thread ID for a given locator.\n *\n * @private\n */\nexport interface ChatThreadProvider {\n isCallInfoRequired(): boolean;\n getChatThreadPromise(): Promise<string>;\n getChatThread(): string;\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Group Call with an associated Chat thread.\n * @private\n */\nexport class CallAndChatProvider implements ChatThreadProvider {\n public locator: CallAndChatLocator;\n constructor(locator: CallAndChatLocator) {\n this.locator = locator;\n }\n public isCallInfoRequired(): boolean {\n return false;\n }\n public async getChatThreadPromise(): Promise<string> {\n return this.getChatThread();\n }\n public getChatThread(): string {\n return this.locator.chatThreadId;\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting with an associated Chat thread.\n *\n * @private\n */\nexport class TeamsMeetingLinkProvider implements ChatThreadProvider {\n public locator: TeamsMeetingLinkLocator;\n private callAdapterPromise: Promise<CallAdapter>;\n private callAdapterSubscription?: (state: CallAdapterState) => void;\n constructor(locator: TeamsMeetingLinkLocator, callAdapterPromise: Promise<CallAdapter>) {\n this.locator = locator;\n this.callAdapterPromise = callAdapterPromise;\n }\n public isCallInfoRequired(): boolean {\n return true;\n }\n public getChatThread(): string {\n throw new Error('Chat thread ID should be retrieved from call.callInfo using method getChatThreadPromise');\n }\n public async getChatThreadPromise(): Promise<string> {\n {\n // Wait for the call to be connected and get the chat thread ID from `call.callInfo`.\n const chatThreadPromise = new Promise<string>(resolve => {\n this.callAdapterPromise.then(callAdapter => {\n // Ensure function is idempotent by removing any existing subscription.\n this.callAdapterSubscription && callAdapter.offStateChange(this.callAdapterSubscription);\n this.callAdapterSubscription = (state: CallAdapterState): void => {\n if (state.call?.state === 'Connected' && state.call.info?.threadId) {\n this.callAdapterSubscription && callAdapter.offStateChange(this.callAdapterSubscription);\n this.callAdapterSubscription = undefined;\n resolve(state.call.info?.threadId);\n }\n };\n callAdapter.onStateChange(this.callAdapterSubscription);\n });\n });\n return chatThreadPromise;\n }\n }\n}\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Teams meeting using meeting id.\n *\n * @private\n */\nexport class TeamsMeetingIdProvider implements ChatThreadProvider {\n public locator: TeamsMeetingIdLocator;\n private callAdapter: Promise<CallAdapter>;\n constructor(locator: TeamsMeetingIdLocator, callAdapter: Promise<CallAdapter>) {\n this.locator = locator;\n this.callAdapter = callAdapter;\n }\n public isCallInfoRequired(): boolean {\n return true;\n }\n public getChatThread(): string {\n throw new Error('Chat thread ID is not available for Teams meeting ID');\n }\n\n /**\n * Wait call to be connected to get thread ID.\n * @returns the chat thread ID for the given meeting ID.\n */\n public async getChatThreadPromise(): Promise<string> {\n return new Promise<string>(resolve => {\n const stateChangeListener = (state: CallAdapterState): void => {\n if (state.call?.state === 'Connected' && state.call.info?.threadId) {\n this.callAdapter.then(adapter => {\n adapter.offStateChange(stateChangeListener);\n });\n resolve(state.call.info?.threadId);\n }\n };\n this.callAdapter.then(adapter => {\n const callState = adapter.getState().call?.state;\n const threadId = adapter.getState().call?.info?.threadId;\n if (callState === 'Connected' && threadId) {\n resolve(threadId);\n } else {\n adapter.onStateChange(stateChangeListener);\n }\n });\n });\n }\n}\n\n/**\n * Combination of available adapters for use in {@link createAzureCommunicationCallWithChatAdapter}.\n * @public\n */\nexport type CommunicationAdapter = CallAndChatProvider | TeamsMeetingLinkProvider | TeamsMeetingIdProvider;\n\n/**\n * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread.\n *\n * @public\n */\nexport interface CallAndChatLocator {\n /** Locator used by {@link createAzureCommunicationCallWithChatAdapter} to locate the call to join */\n callLocator: GroupCallLocator;\n /** Chat thread ID used by {@link createAzureCommunicationCallWithChatAdapter} to locate the chat thread to join */\n chatThreadId: string;\n}\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapter}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterArgs = {\n endpoint: string;\n userId: CommunicationUserIdentifier;\n displayName: string;\n credential: CommunicationTokenCredential;\n locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator;\n alternateCallerId?: string;\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a CallWithChatAdapter backed by Azure Communication services\n * to plug into the {@link CallWithChatComposite}.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapter = async ({\n userId,\n displayName,\n credential,\n endpoint,\n locator,\n alternateCallerId,\n callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterArgs): Promise<CallWithChatAdapter> => {\n const callAdapterLocator = isTeamsMeetingLocator(locator) ? locator : locator.callLocator;\n const callAdapter = _createAzureCommunicationCallAdapterInner({\n userId,\n displayName,\n credential,\n locator: callAdapterLocator,\n alternateCallerId,\n options: callAdapterOptions,\n telemetryImplementationHint: 'CallWithChat' as _TelemetryImplementationHint\n });\n const chatThreadAdapter = _createChatThreadAdapterInner(locator, callAdapter);\n if (chatThreadAdapter.isCallInfoRequired()) {\n const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(await callAdapter);\n const chatAdapterPromise = _createLazyAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThreadPromise(), 'CallWithChat' as _TelemetryImplementationHint);\n callWithChatAdapter.setChatAdapterPromise(chatAdapterPromise);\n return callWithChatAdapter;\n } else {\n const chatAdapter = _createAzureCommunicationChatAdapterInner(endpoint, userId, displayName, credential, chatThreadAdapter.getChatThread(), 'CallWithChat' as _TelemetryImplementationHint);\n const callWithChatAdapter = new AzureCommunicationCallWithChatAdapter(await callAdapter, await chatAdapter);\n return callWithChatAdapter;\n }\n};\n\n/**\n * A custom React hook to simplify the creation of {@link CallWithChatAdapter}.\n *\n * Similar to {@link createAzureCommunicationCallWithChatAdapter}, but takes care of asynchronous\n * creation of the adapter internally.\n *\n * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments\n * as they are created. The adapter is only created when all arguments are defined.\n *\n * Note that you must memoize the arguments to avoid recreating adapter on each render.\n * See storybook for typical usage examples.\n *\n * @public\n */\nexport const useAzureCommunicationCallWithChatAdapter = (args: Partial<AzureCommunicationCallWithChatAdapterArgs>, afterCreate?: (adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>, beforeDispose?: (adapter: CallWithChatAdapter) => Promise<void>): CallWithChatAdapter | undefined => {\n const {\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n alternateCallerId,\n callAdapterOptions\n } = args;\n\n // State update needed to rerender the parent component when a new adapter is created.\n const [adapter, setAdapter] = useState<CallWithChatAdapter | undefined>(undefined);\n // Ref needed for cleanup to access the old adapter created asynchronously.\n const adapterRef = useRef<CallWithChatAdapter | undefined>(undefined);\n const creatingAdapterRef = useRef<boolean>(false);\n const afterCreateRef = useRef<((adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>) | undefined>(undefined);\n const beforeDisposeRef = useRef<((adapter: CallWithChatAdapter) => Promise<void>) | undefined>(undefined);\n // These refs are updated on *each* render, so that the latest values\n // are used in the `useEffect` closures below.\n // Using a Ref ensures that new values for the callbacks do not trigger the\n // useEffect blocks, and a new adapter creation / distruction is not triggered.\n afterCreateRef.current = afterCreate;\n beforeDisposeRef.current = beforeDispose;\n useEffect(() => {\n if (!credential || !displayName || !endpoint || !locator || !userId) {\n return;\n }\n (async () => {\n if (adapterRef.current) {\n // Dispose the old adapter when a new one is created.\n //\n // This clean up function uses `adapterRef` because `adapter` can not be added to the dependency array of\n // this `useEffect` -- we do not want to trigger a new adapter creation because of the first adapter\n // creation.\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n if (creatingAdapterRef.current) {\n console.warn('Adapter is already being created, please see storybook for more information: https://azure.github.io/communication-ui-library/?path=/story/troubleshooting--page');\n return;\n }\n creatingAdapterRef.current = true;\n let newAdapter = await createAzureCommunicationCallWithChatAdapter({\n credential,\n displayName,\n endpoint,\n locator,\n userId,\n alternateCallerId,\n callAdapterOptions\n });\n if (afterCreateRef.current) {\n newAdapter = await afterCreateRef.current(newAdapter);\n }\n adapterRef.current = newAdapter;\n creatingAdapterRef.current = false;\n setAdapter(newAdapter);\n })();\n },\n // Explicitly list all arguments so that caller doesn't have to memoize the `args` object.\n [adapterRef, afterCreateRef, alternateCallerId, beforeDisposeRef, credential, displayName, endpoint, locator, userId, callAdapterOptions]);\n\n // Dispose any existing adapter when the component unmounts.\n useEffect(() => {\n return () => {\n (async () => {\n if (adapterRef.current) {\n if (beforeDisposeRef.current) {\n await beforeDisposeRef.current(adapterRef.current);\n }\n adapterRef.current.dispose();\n adapterRef.current = undefined;\n }\n })();\n };\n }, []);\n return adapter;\n};\n\n/**\n * Arguments for {@link createAzureCommunicationCallWithChatAdapterFromClient}\n *\n * @public\n */\nexport type AzureCommunicationCallWithChatAdapterFromClientArgs = {\n callLocator: CallAdapterLocator | TeamsMeetingLinkLocator;\n callAgent: CallAgent;\n callClient: StatefulCallClient;\n chatClient: StatefulChatClient;\n chatThreadClient: ChatThreadClient;\n callAdapterOptions?: AzureCommunicationCallAdapterOptions;\n};\n\n/**\n * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}.\n *\n * Useful if you want to keep a reference to {@link StatefulChatClient} and {@link StatefulCallClient}.\n * Please note that chatThreadClient has to be created by StatefulChatClient via chatClient.getChatThreadClient(chatThreadId) API.\n * Consider using {@link createAzureCommunicationCallWithChatAdapter} for a simpler API.\n *\n * @public\n */\nexport const createAzureCommunicationCallWithChatAdapterFromClients = async ({\n callClient,\n callAgent,\n callLocator,\n chatClient,\n chatThreadClient,\n callAdapterOptions\n}: AzureCommunicationCallWithChatAdapterFromClientArgs): Promise<CallWithChatAdapter> => {\n const callAdapter = await createAzureCommunicationCallAdapterFromClient(callClient, callAgent, callLocator, callAdapterOptions);\n const chatAdapter = await createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient);\n return new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\n};\n\n/**\n * Create a {@link CallWithChatAdapter} from the underlying adapters.\n *\n * This is an internal factory function used by browser tests to inject fake adapters for call and chat.\n *\n * @internal\n */\nexport const _createAzureCommunicationCallWithChatAdapterFromAdapters = (callAdapter: CallAdapter, chatAdapter: ChatAdapter): CallWithChatAdapter => new AzureCommunicationCallWithChatAdapter(callAdapter, chatAdapter);\nconst isTeamsMeetingLocator = (locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator): locator is TeamsMeetingLinkLocator | TeamsMeetingIdLocator => {\n return 'meetingLink' in locator || 'meetingId' in locator;\n};\nconst _createChatThreadAdapterInner = (locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator, adapter: Promise<CallAdapter>): ChatThreadProvider => {\n if ('meetingLink' in locator) {\n return new TeamsMeetingLinkProvider(locator, adapter);\n }\n if ('meetingId' in locator) {\n return new TeamsMeetingIdProvider(locator, adapter);\n }\n return new CallAndChatProvider(locator);\n};"]}
|