@azure/communication-react 1.26.0-alpha-202504020018 → 1.26.0-alpha-202504050017

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/communication-react.d.ts +39 -4
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-C8KUSh2S.js → ChatMessageComponentAsRichTextEditBox-KnsAbigp.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-C8KUSh2S.js.map → ChatMessageComponentAsRichTextEditBox-KnsAbigp.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-C13gL49Q.js → RichTextSendBoxWrapper-BdZl-Zgs.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-C13gL49Q.js.map → RichTextSendBoxWrapper-BdZl-Zgs.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-Bi_sHJny.js → index-CMC23X5X.js} +77 -185
  7. package/dist/dist-cjs/communication-react/index-CMC23X5X.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +0 -1
  12. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +3 -12
  14. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
  15. package/dist/dist-esm/calling-stateful-client/src/BreakoutRoomsSubscriber.js +0 -2
  16. package/dist/dist-esm/calling-stateful-client/src/BreakoutRoomsSubscriber.js.map +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -3
  18. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  19. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +1 -2
  20. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +0 -8
  21. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  22. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +1 -5
  23. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +1 -1
  26. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/NotificationStack.d.ts +8 -0
  28. package/dist/dist-esm/react-components/src/components/NotificationStack.js +0 -1
  29. package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/RealTimeTextModal.js +1 -1
  31. package/dist/dist-esm/react-components/src/components/RealTimeTextModal.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/utils.js +3 -7
  33. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +10 -0
  35. package/dist/dist-esm/react-components/src/theming/icons.d.ts +2 -0
  36. package/dist/dist-esm/react-components/src/theming/icons.js +3 -8
  37. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +15 -0
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +4 -5
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +2 -17
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +2 -3
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BreakoutRoomsBanner.js +0 -7
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/BreakoutRoomsBanner.js.map +1 -1
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +3 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +10 -17
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js +1 -5
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js +1 -2
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js.map +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useCompositeStringsForNotificationStack.js +0 -3
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useCompositeStringsForNotificationStack.js.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +2 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +3 -10
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.d.ts +1 -2
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +0 -4
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -14
  68. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  70. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +0 -17
  72. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +0 -2
  76. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  77. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +1 -4
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +0 -1
  80. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +2 -15
  82. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  83. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
  85. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +1 -0
  86. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/common/adapters.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +9 -1
  89. package/dist/dist-esm/react-composites/src/composites/common/utils.js +0 -1
  90. package/dist/dist-esm/react-composites/src/composites/common/utils.js.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/dist-cjs/communication-react/index-Bi_sHJny.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Bi_sHJny.js');
3
+ var index = require('./index-CMC23X5X.js');
4
4
  require('react');
5
5
  require('@fluentui/react');
6
6
  require('@fluentui/react-components');
@@ -2,5 +2,5 @@
2
2
  // Copyright (c) Microsoft Corporation.
3
3
  // Licensed under the MIT License.
4
4
  // GENERATED FILE. DO NOT EDIT MANUALLY.
5
- module.exports = '1.26.0-alpha-202504020018';
5
+ module.exports = '1.26.0-alpha-202504050017';
6
6
  //# sourceMappingURL=telemetryVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.26.0-alpha-202504020018';\n"]}
1
+ {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.26.0-alpha-202504050017';\n"]}
@@ -188,7 +188,6 @@ export const getIncomingCalls = (state) => {
188
188
  export const getRemovedIncomingCalls = (state) => {
189
189
  return Object.values(state.incomingCallsEnded);
190
190
  };
191
- /* @conditional-compile-remove(breakout-rooms) */
192
191
  /** @private */
193
192
  export const getAssignedBreakoutRoom = (state, props) => {
194
193
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"baseSelectors.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/baseSelectors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CallState, DominantSpeakersInfo, EnvironmentInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { BreakoutRoom } from '@azure/communication-calling';\nimport { ParticipantCapabilities } from '@azure/communication-calling';\nimport { ParticipantRole } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n CallClientState,\n DeviceManagerState,\n RemoteParticipantState,\n LocalVideoStreamState,\n CallErrors,\n DiagnosticsCallFeatureState,\n SpotlightCallFeatureState,\n IncomingCallState\n} from '@internal/calling-stateful-client';\nimport { TeamsIncomingCallState } from '@internal/calling-stateful-client';\nimport { ReactionState } from '@internal/calling-stateful-client';\nimport { CaptionsInfo } from '@internal/calling-stateful-client';\nimport { CaptionsKind, CapabilitiesChangeInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(rtt) */\nimport { RealTimeTextInfo } from '@internal/calling-stateful-client';\nimport { RaisedHandState } from '@internal/calling-stateful-client';\nimport { SupportedCaptionLanguage, SupportedSpokenLanguage } from '@internal/react-components';\nimport { ConferencePhoneInfo, CallNotifications } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(together-mode) */\nimport { TogetherModeCallFeatureState } from '@internal/calling-stateful-client';\n/**\n * Common props used to reference calling declarative client state.\n *\n * @public\n */\nexport type CallingBaseSelectorProps = {\n callId: string;\n};\n\n/**\n * @private\n */\nexport const getDeviceManager = (state: CallClientState): DeviceManagerState => state.deviceManager;\n\n/**\n * @private\n */\nexport const getRole = (state: CallClientState, props: CallingBaseSelectorProps): ParticipantRole | undefined => {\n return state.calls[props.callId]?.role;\n};\n\n/**\n * @private\n */\nexport const isHideAttendeeNamesEnabled = (state: CallClientState, props: CallingBaseSelectorProps): boolean => {\n return state.calls[props.callId]?.hideAttendeeNames ?? false;\n};\n\n/**\n * @private\n */\nexport const getCapabilities = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ParticipantCapabilities | undefined => state.calls[props.callId]?.capabilitiesFeature?.capabilities;\n\n/**\n * @private\n */\nexport const getLatestCapabilitiesChangedInfo = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): CapabilitiesChangeInfo | undefined => {\n return state.calls[props.callId]?.capabilitiesFeature?.latestCapabilitiesChangeInfo;\n};\n\n/**\n * @private\n */\nexport const getCallExists = (state: CallClientState, props: CallingBaseSelectorProps): boolean =>\n !!state.calls[props.callId];\n\n/**\n * @private\n */\nexport const getDominantSpeakers = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): undefined | DominantSpeakersInfo => state.calls[props.callId]?.dominantSpeakers;\n\n/**\n * @private\n */\nexport const getRemoteParticipants = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n):\n | {\n [keys: string]: RemoteParticipantState;\n }\n | undefined => {\n return state.calls[props.callId]?.remoteParticipants;\n};\n\n/**\n * @private\n */\nexport const getLocalParticipantRaisedHand = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): RaisedHandState | undefined => {\n return state.calls[props.callId]?.raiseHand?.localParticipantRaisedHand;\n};\n\n/**\n * @private\n */\nexport const getSpotlightCallFeature = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SpotlightCallFeatureState | undefined => {\n return state.calls[props.callId]?.spotlight;\n};\n\n/**\n * @private\n */\nexport const getLocalParticipantReactionState = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ReactionState | undefined => {\n return state.calls[props.callId]?.localParticipantReaction;\n};\n\n/**\n * @private\n */\nexport const getIsScreenSharingOn = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined =>\n state.calls[props.callId]?.isScreenSharingOn;\n\n/**\n * @private\n */\nexport const getIsMuted = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined =>\n state.calls[props.callId]?.isMuted;\n\n/**\n * @private\n */\nexport const getOptimalVideoCount = (state: CallClientState, props: CallingBaseSelectorProps): number | undefined =>\n state.calls[props.callId]?.optimalVideoCount.maxRemoteVideoStreams;\n\n/**\n * @private\n */\nexport const getLocalVideoStreams = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): LocalVideoStreamState[] | undefined => state.calls[props.callId]?.localVideoStreams;\n\n/**\n * @private\n */\nexport const getScreenShareRemoteParticipant = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): string | undefined => state.calls[props.callId]?.screenShareRemoteParticipant;\n\n/**\n * @private\n */\nexport const getDisplayName = (state: CallClientState): string | undefined => state.callAgent?.displayName;\n\n/**\n * @private\n */\nexport const getIdentifier = (state: CallClientState): string => toFlatCommunicationIdentifier(state.userId);\n\n/**\n * @private\n */\nexport const getLatestErrors = (state: CallClientState): CallErrors => state.latestErrors;\n\n/**\n * @private\n */\nexport const getLatestNotifications = (state: CallClientState): CallNotifications => state.latestNotifications;\n\n/**\n * @private\n */\nexport const getDiagnostics = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): DiagnosticsCallFeatureState | undefined => state.calls[props.callId]?.diagnostics;\n\n/**\n * @private\n */\nexport const getCallState = (state: CallClientState, props: CallingBaseSelectorProps): CallState | undefined =>\n state.calls[props.callId]?.state;\n\n/**\n * @private\n */\nexport const getEnvironmentInfo = (state: CallClientState): undefined | EnvironmentInfo => {\n return state.environmentInfo;\n};\n\n/** @private */\nexport const getParticipantCount = (state: CallClientState, props: CallingBaseSelectorProps): number | undefined => {\n /* @conditional-compile-remove(total-participant-count) */\n return state.calls[props.callId]?.totalParticipantCount;\n return undefined;\n};\n\n/** @private */\nexport const getCaptionsKind = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsKind | undefined => {\n return state.calls[props.callId]?.captionsFeature.captionsKind;\n};\n\n/** @private */\nexport const getCaptions = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsInfo[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.captions;\n};\n\n/** @private */\nexport const getCaptionsStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.isCaptionsFeatureActive;\n};\n\n/** @private */\nexport const getStartCaptionsInProgress = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.startCaptionsInProgress;\n};\n\n/** @private */\nexport const getCurrentCaptionLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedCaptionLanguage | undefined => {\n // we default to 'en' if the currentCaptionLanguage is not set\n if (state.calls[props.callId]?.captionsFeature.currentCaptionLanguage === '') {\n return 'en';\n }\n return state.calls[props.callId]?.captionsFeature.currentCaptionLanguage as SupportedCaptionLanguage;\n};\n\n/** @private */\nexport const getCurrentSpokenLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedSpokenLanguage | undefined => {\n // when currentSpokenLanguage is '', it means the spoken language is not set.\n // In this case we suggest showing the captions modal to set the spoken language when starting captions\n return state.calls[props.callId]?.captionsFeature.currentSpokenLanguage as SupportedSpokenLanguage;\n};\n\n/** @private */\nexport const getSupportedCaptionLanguages = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedCaptionLanguage[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.supportedCaptionLanguages as SupportedCaptionLanguage[];\n};\n\n/** @private */\nexport const getSupportedSpokenLanguages = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedSpokenLanguage[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.supportedSpokenLanguages as SupportedSpokenLanguage[];\n};\n\n/** @private */\nexport const getMeetingConferencePhones = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ConferencePhoneInfo[] | undefined => {\n return state.calls[props.callId]?.meetingConference?.conferencePhones;\n};\n\n/**\n * selector for retrieving the incoming calls from state\n * @returns the incoming calls in the call client state\n * @private\n */\nexport const getIncomingCalls = (state: CallClientState): IncomingCallState[] | TeamsIncomingCallState[] => {\n return Object.values(state.incomingCalls);\n};\n\n/**\n * selector for retrieving the incoming calls that have been removed from state\n * @returns the incoming calls that have been removed\n * @private\n */\nexport const getRemovedIncomingCalls = (state: CallClientState): IncomingCallState[] | TeamsIncomingCallState[] => {\n return Object.values(state.incomingCallsEnded);\n};\n\n/* @conditional-compile-remove(breakout-rooms) */\n/** @private */\nexport const getAssignedBreakoutRoom = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): BreakoutRoom | undefined => {\n return state.calls[props.callId]?.breakoutRooms?.assignedBreakoutRoom;\n};\n\n/* @conditional-compile-remove(rtt) */\n/** @private */\nexport const getRealTimeTextStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.realTimeTextFeature.isRealTimeTextFeatureActive;\n};\n\n/* @conditional-compile-remove(rtt) */\n/** @private */\nexport const getRealTimeText = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n):\n | {\n completedMessages?: RealTimeTextInfo[];\n currentInProgress?: RealTimeTextInfo[];\n myInProgress?: RealTimeTextInfo;\n }\n | undefined => {\n return state.calls[props.callId]?.realTimeTextFeature.realTimeTexts;\n};\n\n/* @conditional-compile-remove(together-mode) */\n/**\n * @private\n */\nexport const getTogetherModeCallFeature = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): TogetherModeCallFeatureState | undefined => state.calls[props.callId]?.togetherMode;\n"]}
1
+ {"version":3,"file":"baseSelectors.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/baseSelectors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CallState, DominantSpeakersInfo, EnvironmentInfo } from '@azure/communication-calling';\nimport { BreakoutRoom } from '@azure/communication-calling';\nimport { ParticipantCapabilities } from '@azure/communication-calling';\nimport { ParticipantRole } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n CallClientState,\n DeviceManagerState,\n RemoteParticipantState,\n LocalVideoStreamState,\n CallErrors,\n DiagnosticsCallFeatureState,\n SpotlightCallFeatureState,\n IncomingCallState\n} from '@internal/calling-stateful-client';\nimport { TeamsIncomingCallState } from '@internal/calling-stateful-client';\nimport { ReactionState } from '@internal/calling-stateful-client';\nimport { CaptionsInfo } from '@internal/calling-stateful-client';\nimport { CaptionsKind, CapabilitiesChangeInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(rtt) */\nimport { RealTimeTextInfo } from '@internal/calling-stateful-client';\nimport { RaisedHandState } from '@internal/calling-stateful-client';\nimport { SupportedCaptionLanguage, SupportedSpokenLanguage } from '@internal/react-components';\nimport { ConferencePhoneInfo, CallNotifications } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(together-mode) */\nimport { TogetherModeCallFeatureState } from '@internal/calling-stateful-client';\n/**\n * Common props used to reference calling declarative client state.\n *\n * @public\n */\nexport type CallingBaseSelectorProps = {\n callId: string;\n};\n\n/**\n * @private\n */\nexport const getDeviceManager = (state: CallClientState): DeviceManagerState => state.deviceManager;\n\n/**\n * @private\n */\nexport const getRole = (state: CallClientState, props: CallingBaseSelectorProps): ParticipantRole | undefined => {\n return state.calls[props.callId]?.role;\n};\n\n/**\n * @private\n */\nexport const isHideAttendeeNamesEnabled = (state: CallClientState, props: CallingBaseSelectorProps): boolean => {\n return state.calls[props.callId]?.hideAttendeeNames ?? false;\n};\n\n/**\n * @private\n */\nexport const getCapabilities = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ParticipantCapabilities | undefined => state.calls[props.callId]?.capabilitiesFeature?.capabilities;\n\n/**\n * @private\n */\nexport const getLatestCapabilitiesChangedInfo = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): CapabilitiesChangeInfo | undefined => {\n return state.calls[props.callId]?.capabilitiesFeature?.latestCapabilitiesChangeInfo;\n};\n\n/**\n * @private\n */\nexport const getCallExists = (state: CallClientState, props: CallingBaseSelectorProps): boolean =>\n !!state.calls[props.callId];\n\n/**\n * @private\n */\nexport const getDominantSpeakers = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): undefined | DominantSpeakersInfo => state.calls[props.callId]?.dominantSpeakers;\n\n/**\n * @private\n */\nexport const getRemoteParticipants = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n):\n | {\n [keys: string]: RemoteParticipantState;\n }\n | undefined => {\n return state.calls[props.callId]?.remoteParticipants;\n};\n\n/**\n * @private\n */\nexport const getLocalParticipantRaisedHand = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): RaisedHandState | undefined => {\n return state.calls[props.callId]?.raiseHand?.localParticipantRaisedHand;\n};\n\n/**\n * @private\n */\nexport const getSpotlightCallFeature = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SpotlightCallFeatureState | undefined => {\n return state.calls[props.callId]?.spotlight;\n};\n\n/**\n * @private\n */\nexport const getLocalParticipantReactionState = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ReactionState | undefined => {\n return state.calls[props.callId]?.localParticipantReaction;\n};\n\n/**\n * @private\n */\nexport const getIsScreenSharingOn = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined =>\n state.calls[props.callId]?.isScreenSharingOn;\n\n/**\n * @private\n */\nexport const getIsMuted = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined =>\n state.calls[props.callId]?.isMuted;\n\n/**\n * @private\n */\nexport const getOptimalVideoCount = (state: CallClientState, props: CallingBaseSelectorProps): number | undefined =>\n state.calls[props.callId]?.optimalVideoCount.maxRemoteVideoStreams;\n\n/**\n * @private\n */\nexport const getLocalVideoStreams = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): LocalVideoStreamState[] | undefined => state.calls[props.callId]?.localVideoStreams;\n\n/**\n * @private\n */\nexport const getScreenShareRemoteParticipant = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): string | undefined => state.calls[props.callId]?.screenShareRemoteParticipant;\n\n/**\n * @private\n */\nexport const getDisplayName = (state: CallClientState): string | undefined => state.callAgent?.displayName;\n\n/**\n * @private\n */\nexport const getIdentifier = (state: CallClientState): string => toFlatCommunicationIdentifier(state.userId);\n\n/**\n * @private\n */\nexport const getLatestErrors = (state: CallClientState): CallErrors => state.latestErrors;\n\n/**\n * @private\n */\nexport const getLatestNotifications = (state: CallClientState): CallNotifications => state.latestNotifications;\n\n/**\n * @private\n */\nexport const getDiagnostics = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): DiagnosticsCallFeatureState | undefined => state.calls[props.callId]?.diagnostics;\n\n/**\n * @private\n */\nexport const getCallState = (state: CallClientState, props: CallingBaseSelectorProps): CallState | undefined =>\n state.calls[props.callId]?.state;\n\n/**\n * @private\n */\nexport const getEnvironmentInfo = (state: CallClientState): undefined | EnvironmentInfo => {\n return state.environmentInfo;\n};\n\n/** @private */\nexport const getParticipantCount = (state: CallClientState, props: CallingBaseSelectorProps): number | undefined => {\n /* @conditional-compile-remove(total-participant-count) */\n return state.calls[props.callId]?.totalParticipantCount;\n return undefined;\n};\n\n/** @private */\nexport const getCaptionsKind = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsKind | undefined => {\n return state.calls[props.callId]?.captionsFeature.captionsKind;\n};\n\n/** @private */\nexport const getCaptions = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsInfo[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.captions;\n};\n\n/** @private */\nexport const getCaptionsStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.isCaptionsFeatureActive;\n};\n\n/** @private */\nexport const getStartCaptionsInProgress = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.startCaptionsInProgress;\n};\n\n/** @private */\nexport const getCurrentCaptionLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedCaptionLanguage | undefined => {\n // we default to 'en' if the currentCaptionLanguage is not set\n if (state.calls[props.callId]?.captionsFeature.currentCaptionLanguage === '') {\n return 'en';\n }\n return state.calls[props.callId]?.captionsFeature.currentCaptionLanguage as SupportedCaptionLanguage;\n};\n\n/** @private */\nexport const getCurrentSpokenLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedSpokenLanguage | undefined => {\n // when currentSpokenLanguage is '', it means the spoken language is not set.\n // In this case we suggest showing the captions modal to set the spoken language when starting captions\n return state.calls[props.callId]?.captionsFeature.currentSpokenLanguage as SupportedSpokenLanguage;\n};\n\n/** @private */\nexport const getSupportedCaptionLanguages = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedCaptionLanguage[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.supportedCaptionLanguages as SupportedCaptionLanguage[];\n};\n\n/** @private */\nexport const getSupportedSpokenLanguages = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): SupportedSpokenLanguage[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.supportedSpokenLanguages as SupportedSpokenLanguage[];\n};\n\n/** @private */\nexport const getMeetingConferencePhones = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): ConferencePhoneInfo[] | undefined => {\n return state.calls[props.callId]?.meetingConference?.conferencePhones;\n};\n\n/**\n * selector for retrieving the incoming calls from state\n * @returns the incoming calls in the call client state\n * @private\n */\nexport const getIncomingCalls = (state: CallClientState): IncomingCallState[] | TeamsIncomingCallState[] => {\n return Object.values(state.incomingCalls);\n};\n\n/**\n * selector for retrieving the incoming calls that have been removed from state\n * @returns the incoming calls that have been removed\n * @private\n */\nexport const getRemovedIncomingCalls = (state: CallClientState): IncomingCallState[] | TeamsIncomingCallState[] => {\n return Object.values(state.incomingCallsEnded);\n};\n\n/** @private */\nexport const getAssignedBreakoutRoom = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): BreakoutRoom | undefined => {\n return state.calls[props.callId]?.breakoutRooms?.assignedBreakoutRoom;\n};\n\n/* @conditional-compile-remove(rtt) */\n/** @private */\nexport const getRealTimeTextStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.realTimeTextFeature.isRealTimeTextFeatureActive;\n};\n\n/* @conditional-compile-remove(rtt) */\n/** @private */\nexport const getRealTimeText = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n):\n | {\n completedMessages?: RealTimeTextInfo[];\n currentInProgress?: RealTimeTextInfo[];\n myInProgress?: RealTimeTextInfo;\n }\n | undefined => {\n return state.calls[props.callId]?.realTimeTextFeature.realTimeTexts;\n};\n\n/* @conditional-compile-remove(together-mode) */\n/**\n * @private\n */\nexport const getTogetherModeCallFeature = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): TogetherModeCallFeatureState | undefined => state.calls[props.callId]?.togetherMode;\n"]}
@@ -1,8 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- import { getDeviceManager, getDiagnostics, getLatestErrors, getEnvironmentInfo, getCallState } from './baseSelectors';
4
- /* @conditional-compile-remove(breakout-rooms) */
5
- import { getAssignedBreakoutRoom } from './baseSelectors';
3
+ import { getAssignedBreakoutRoom, getDeviceManager, getDiagnostics, getLatestErrors, getEnvironmentInfo, getCallState } from './baseSelectors';
6
4
  import { getLatestNotifications } from './baseSelectors';
7
5
  import { getMeetingConferencePhones } from './baseSelectors';
8
6
  import { createSelector } from 'reselect';
@@ -24,9 +22,8 @@ export const notificationStackSelector = createSelector([
24
22
  getCallState,
25
23
  getEnvironmentInfo,
26
24
  getMeetingConferencePhones,
27
- /* @conditional-compile-remove(breakout-rooms) */ getAssignedBreakoutRoom
28
- ], (latestErrors, latestNotifications, diagnostics, deviceManager, callStatus, environmentInfo, meetingConference,
29
- /* @conditional-compile-remove(breakout-rooms) */ assignedBreakoutRoom) => {
25
+ getAssignedBreakoutRoom
26
+ ], (latestErrors, latestNotifications, diagnostics, deviceManager, callStatus, environmentInfo, meetingConference, assignedBreakoutRoom) => {
30
27
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
31
28
  // The order in which the errors are returned is significant: The `Notification` shows errors on the UI in that order.
32
29
  // There are several options for the ordering:
@@ -161,14 +158,12 @@ export const notificationStackSelector = createSelector([
161
158
  ariaLive: 'off' // "You're muted" is too noisy, so we don't want to announce it.
162
159
  });
163
160
  }
164
- /* @conditional-compile-remove(breakout-rooms) */
165
161
  if (latestNotifications['assignedBreakoutRoomOpened']) {
166
162
  activeNotifications.push({
167
163
  type: 'assignedBreakoutRoomOpened',
168
164
  timestamp: latestNotifications['assignedBreakoutRoomOpened'].timestamp
169
165
  });
170
166
  }
171
- /* @conditional-compile-remove(breakout-rooms) */
172
167
  if (latestNotifications['assignedBreakoutRoomOpenedPromptJoin'] && assignedBreakoutRoom) {
173
168
  activeNotifications.push({
174
169
  type: 'assignedBreakoutRoomOpenedPromptJoin',
@@ -176,28 +171,24 @@ export const notificationStackSelector = createSelector([
176
171
  onClickPrimaryButton: () => assignedBreakoutRoom.join()
177
172
  });
178
173
  }
179
- /* @conditional-compile-remove(breakout-rooms) */
180
174
  if (latestNotifications['assignedBreakoutRoomChanged']) {
181
175
  activeNotifications.push({
182
176
  type: 'assignedBreakoutRoomChanged',
183
177
  timestamp: latestNotifications['assignedBreakoutRoomChanged'].timestamp
184
178
  });
185
179
  }
186
- /* @conditional-compile-remove(breakout-rooms) */
187
180
  if (latestNotifications['assignedBreakoutRoomClosed']) {
188
181
  activeNotifications.push({
189
182
  type: 'assignedBreakoutRoomClosed',
190
183
  timestamp: latestNotifications['assignedBreakoutRoomClosed'].timestamp
191
184
  });
192
185
  }
193
- /* @conditional-compile-remove(breakout-rooms) */
194
186
  if (latestNotifications['breakoutRoomJoined']) {
195
187
  activeNotifications.push({
196
188
  type: 'breakoutRoomJoined',
197
189
  timestamp: latestNotifications['breakoutRoomJoined'].timestamp
198
190
  });
199
191
  }
200
- /* @conditional-compile-remove(breakout-rooms) */
201
192
  if (latestNotifications['breakoutRoomClosingSoon']) {
202
193
  activeNotifications.push({
203
194
  type: 'breakoutRoomClosingSoon',
@@ -1 +1 @@
1
- {"version":3,"file":"notificationStackSelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/notificationStackSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n CallingBaseSelectorProps,\n getDeviceManager,\n getDiagnostics,\n getLatestErrors,\n getEnvironmentInfo,\n getCallState\n} from './baseSelectors';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { getAssignedBreakoutRoom } from './baseSelectors';\n\nimport { getLatestNotifications } from './baseSelectors';\n\nimport { getMeetingConferencePhones } from './baseSelectors';\n\nimport { ActiveNotification, NotificationType } from '@internal/react-components';\n\nimport { createSelector } from 'reselect';\n\nimport { CallClientState, CallErrors, CallErrorTarget } from '@internal/calling-stateful-client';\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\n\n/**\n * Selector type for {@link Notification} component.\n *\n * @public\n */\nexport type NotificationStackSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n activeErrorMessages: ActiveNotification[];\n activeNotifications: ActiveNotification[];\n};\n\n/**\n * Select the active errors from the state for the `Notification` component.\n *\n * Invariants:\n * - `ErrorType` is never repeated in the returned errors.\n * - Errors are returned in a fixed order by `ErrorType`.\n *\n * @public\n */\nexport const notificationStackSelector: NotificationStackSelector = createSelector(\n [\n getLatestErrors,\n getLatestNotifications,\n getDiagnostics,\n getDeviceManager,\n getCallState,\n getEnvironmentInfo,\n getMeetingConferencePhones,\n /* @conditional-compile-remove(breakout-rooms) */ getAssignedBreakoutRoom\n ],\n (\n latestErrors: CallErrors,\n latestNotifications,\n diagnostics,\n deviceManager,\n callStatus,\n environmentInfo,\n meetingConference,\n /* @conditional-compile-remove(breakout-rooms) */ assignedBreakoutRoom\n ): { activeErrorMessages: ActiveNotification[]; activeNotifications: ActiveNotification[] } => {\n // The order in which the errors are returned is significant: The `Notification` shows errors on the UI in that order.\n // There are several options for the ordering:\n // - Sorted by when the errors happened (latest first / oldest first).\n // - Stable sort by error type.\n //\n // We chose to stable sort by error type: We intend to show only a small number of errors on the UI and we do not\n // have timestamps for errors.\n const activeErrorMessages: ActiveNotification[] = [];\n\n const isSafari = (): boolean => {\n return environmentInfo?.environment.browser === 'safari';\n };\n\n const isMacOS = (): boolean => {\n return environmentInfo?.environment.platform === 'mac';\n };\n\n // Errors reported via diagnostics are more reliable than from API method failures, so process those first.\n let isTeamsMeetingWithPhones = false;\n\n if (meetingConference && meetingConference.length > 0) {\n isTeamsMeetingWithPhones = true;\n }\n if (\n diagnostics?.network.latest.networkReceiveQuality?.value === DiagnosticQuality.Bad ||\n diagnostics?.network.latest.networkReceiveQuality?.value === DiagnosticQuality.Poor\n ) {\n if (isTeamsMeetingWithPhones) {\n activeErrorMessages.push({ type: 'teamsMeetingCallNetworkQualityLow' });\n } else {\n activeErrorMessages.push({ type: 'callNetworkQualityLow' });\n }\n }\n if (diagnostics?.media.latest.noSpeakerDevicesEnumerated?.value === true) {\n activeErrorMessages.push({ type: 'callNoSpeakerFound' });\n }\n if (diagnostics?.media.latest.noMicrophoneDevicesEnumerated?.value === true) {\n activeErrorMessages.push({ type: 'callNoMicrophoneFound' });\n }\n if (deviceManager.deviceAccess?.audio === false && isSafari()) {\n activeErrorMessages.push({ type: 'callMicrophoneAccessDeniedSafari' });\n }\n\n if (diagnostics?.media.latest.microphonePermissionDenied?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsMicrophoneAccessDenied' });\n } else if (\n (deviceManager.deviceAccess?.audio === false && !isSafari()) ||\n (diagnostics?.media.latest.microphonePermissionDenied?.value === true && !isMacOS())\n ) {\n activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });\n }\n\n const microphoneMuteUnexpectedlyDiagnostic =\n diagnostics?.media.latest.microphoneMuteUnexpectedly || diagnostics?.media.latest.microphoneNotFunctioning;\n if (microphoneMuteUnexpectedlyDiagnostic) {\n if (microphoneMuteUnexpectedlyDiagnostic.value === DiagnosticQuality.Bad) {\n // Inform the user that microphone stopped working and inform them to start microphone again\n activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });\n } else if (microphoneMuteUnexpectedlyDiagnostic.value === DiagnosticQuality.Good) {\n // Inform the user that microphone recovered\n activeErrorMessages.push({ type: 'callMicrophoneUnmutedBySystem' });\n }\n }\n\n const cameraStoppedUnexpectedlyDiagnostic = diagnostics?.media.latest.cameraStoppedUnexpectedly;\n if (cameraStoppedUnexpectedlyDiagnostic) {\n if (cameraStoppedUnexpectedlyDiagnostic.value === DiagnosticQuality.Bad) {\n // Inform the user that camera stopped working and inform them to start video again\n activeErrorMessages.push({ type: 'callVideoStoppedBySystem' });\n } else if (cameraStoppedUnexpectedlyDiagnostic.value === DiagnosticQuality.Good) {\n // Inform the user that camera recovered\n activeErrorMessages.push({ type: 'callVideoRecoveredBySystem' });\n }\n }\n if (deviceManager.deviceAccess?.video === false && isSafari()) {\n activeErrorMessages.push({ type: 'callCameraAccessDeniedSafari' });\n } else if (deviceManager.deviceAccess?.video === false) {\n activeErrorMessages.push({ type: 'callCameraAccessDenied' });\n } else {\n if (diagnostics?.media.latest.cameraFreeze?.value === true) {\n activeErrorMessages.push({ type: 'cameraFrozenForRemoteParticipants' });\n }\n }\n\n /**\n * show the Mac specific strings if the platform is detected as mac\n */\n if (diagnostics?.media.latest.cameraPermissionDenied?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsCameraAccessDenied' });\n }\n\n /**\n * This UFD only works on mac still so we should only see it fire on mac.\n */\n if (diagnostics?.media.latest.screenshareRecordingDisabled?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsScreenShareAccessDenied' });\n } else if (diagnostics?.media.latest.screenshareRecordingDisabled?.value === true) {\n activeErrorMessages.push({ type: 'startScreenShareGeneric' });\n }\n\n // Prefer to show errors with privacy implications.\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopVideo', 'stopVideoGeneric');\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.mute', 'muteGeneric');\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopScreenSharing', 'stopScreenShareGeneric');\n\n if (\n latestErrors['Call.startVideo']?.message === 'Call.startVideo: Video operation failure SourceUnavailableError'\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAlreadyInUse');\n } else if (\n latestErrors['Call.startVideo']?.message === 'Call.startVideo: Video operation failure permissionDeniedError'\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAccessDenied');\n } else {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'startVideoGeneric');\n }\n\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.unmute', 'unmuteGeneric');\n if (\n latestNotifications &&\n !latestNotifications['capabilityUnmuteMicAbsent'] &&\n !latestNotifications['capabilityUnmuteMicPresent']\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.mutedByOthers', 'mutedByRemoteParticipant');\n }\n\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'VideoEffectsFeature.startEffects',\n 'unableToStartVideoEffect'\n );\n\n if (latestErrors['CallAgent.join']?.message === 'CallAgent.join: Invalid meeting link') {\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'CallAgent.join',\n 'failedToJoinCallInvalidMeetingLink'\n );\n } else {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallGeneric');\n }\n\n if (\n latestErrors['Call.feature']?.message.match(\n /Call\\.feature: startSpotlight failed\\. \\d+ is the max number of participants that can be Spotlighted/g\n )\n ) {\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'Call.feature',\n 'startSpotlightWhileMaxParticipantsAreSpotlighted'\n );\n }\n\n //below is for active notifications\n const activeNotifications: ActiveNotification[] = [];\n if (\n diagnostics?.media.latest.speakingWhileMicrophoneIsMuted?.value &&\n // only show this notification when the participant is in an active call and not on screens such as Lobby\n callStatus === 'Connected'\n ) {\n activeNotifications.push({\n type: 'speakingWhileMuted',\n timestamp: new Date(Date.now()),\n autoDismiss: true,\n ariaLive: 'off' // \"You're muted\" is too noisy, so we don't want to announce it.\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['assignedBreakoutRoomOpened']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomOpened',\n timestamp: latestNotifications['assignedBreakoutRoomOpened'].timestamp\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['assignedBreakoutRoomOpenedPromptJoin'] && assignedBreakoutRoom) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomOpenedPromptJoin',\n timestamp: latestNotifications['assignedBreakoutRoomOpenedPromptJoin'].timestamp,\n onClickPrimaryButton: () => assignedBreakoutRoom.join()\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['assignedBreakoutRoomChanged']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomChanged',\n timestamp: latestNotifications['assignedBreakoutRoomChanged'].timestamp\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['assignedBreakoutRoomClosed']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomClosed',\n timestamp: latestNotifications['assignedBreakoutRoomClosed'].timestamp\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['breakoutRoomJoined']) {\n activeNotifications.push({\n type: 'breakoutRoomJoined',\n timestamp: latestNotifications['breakoutRoomJoined'].timestamp\n });\n }\n /* @conditional-compile-remove(breakout-rooms) */\n if (latestNotifications['breakoutRoomClosingSoon']) {\n activeNotifications.push({\n type: 'breakoutRoomClosingSoon',\n timestamp: latestNotifications['breakoutRoomClosingSoon'].timestamp\n });\n }\n\n if (latestNotifications['capabilityTurnVideoOnPresent']) {\n activeNotifications.push({\n type: 'capabilityTurnVideoOnPresent',\n timestamp: latestNotifications['capabilityTurnVideoOnPresent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityTurnVideoOnAbsent']) {\n activeNotifications.push({\n type: 'capabilityTurnVideoOnAbsent',\n timestamp: latestNotifications['capabilityTurnVideoOnAbsent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityUnmuteMicPresent']) {\n activeNotifications.push({\n type: 'capabilityUnmuteMicPresent',\n timestamp: latestNotifications['capabilityUnmuteMicPresent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityUnmuteMicAbsent']) {\n activeNotifications.push({\n type: 'capabilityUnmuteMicAbsent',\n timestamp: latestNotifications['capabilityUnmuteMicAbsent'].timestamp\n });\n }\n\n /* @conditional-compile-remove(together-mode) */\n if (latestNotifications['togetherModeStarted']) {\n activeNotifications.push({\n type: 'togetherModeStarted',\n timestamp: latestNotifications['togetherModeStarted'].timestamp,\n autoDismiss: true\n });\n }\n /* @conditional-compile-remove(together-mode) */\n if (latestNotifications['togetherModeEnded']) {\n activeNotifications.push({\n type: 'togetherModeEnded',\n timestamp: latestNotifications['togetherModeEnded'].timestamp,\n autoDismiss: true\n });\n }\n\n return { activeErrorMessages: activeErrorMessages, activeNotifications: activeNotifications };\n }\n);\n\nconst appendActiveErrorIfDefined = (\n activeErrorMessages: ActiveNotification[],\n latestErrors: CallErrors,\n target: CallErrorTarget,\n activeErrorType: NotificationType\n): void => {\n if (latestErrors[target] === undefined) {\n return;\n }\n activeErrorMessages.push({\n type: activeErrorType,\n timestamp: latestErrors[target].timestamp\n });\n};\n"]}
1
+ {"version":3,"file":"notificationStackSelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/notificationStackSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n CallingBaseSelectorProps,\n getAssignedBreakoutRoom,\n getDeviceManager,\n getDiagnostics,\n getLatestErrors,\n getEnvironmentInfo,\n getCallState\n} from './baseSelectors';\n\nimport { getLatestNotifications } from './baseSelectors';\n\nimport { getMeetingConferencePhones } from './baseSelectors';\n\nimport { ActiveNotification, NotificationType } from '@internal/react-components';\n\nimport { createSelector } from 'reselect';\n\nimport { CallClientState, CallErrors, CallErrorTarget } from '@internal/calling-stateful-client';\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\n\n/**\n * Selector type for {@link Notification} component.\n *\n * @public\n */\nexport type NotificationStackSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n activeErrorMessages: ActiveNotification[];\n activeNotifications: ActiveNotification[];\n};\n\n/**\n * Select the active errors from the state for the `Notification` component.\n *\n * Invariants:\n * - `ErrorType` is never repeated in the returned errors.\n * - Errors are returned in a fixed order by `ErrorType`.\n *\n * @public\n */\nexport const notificationStackSelector: NotificationStackSelector = createSelector(\n [\n getLatestErrors,\n getLatestNotifications,\n getDiagnostics,\n getDeviceManager,\n getCallState,\n getEnvironmentInfo,\n getMeetingConferencePhones,\n getAssignedBreakoutRoom\n ],\n (\n latestErrors: CallErrors,\n latestNotifications,\n diagnostics,\n deviceManager,\n callStatus,\n environmentInfo,\n meetingConference,\n assignedBreakoutRoom\n ): { activeErrorMessages: ActiveNotification[]; activeNotifications: ActiveNotification[] } => {\n // The order in which the errors are returned is significant: The `Notification` shows errors on the UI in that order.\n // There are several options for the ordering:\n // - Sorted by when the errors happened (latest first / oldest first).\n // - Stable sort by error type.\n //\n // We chose to stable sort by error type: We intend to show only a small number of errors on the UI and we do not\n // have timestamps for errors.\n const activeErrorMessages: ActiveNotification[] = [];\n\n const isSafari = (): boolean => {\n return environmentInfo?.environment.browser === 'safari';\n };\n\n const isMacOS = (): boolean => {\n return environmentInfo?.environment.platform === 'mac';\n };\n\n // Errors reported via diagnostics are more reliable than from API method failures, so process those first.\n let isTeamsMeetingWithPhones = false;\n\n if (meetingConference && meetingConference.length > 0) {\n isTeamsMeetingWithPhones = true;\n }\n if (\n diagnostics?.network.latest.networkReceiveQuality?.value === DiagnosticQuality.Bad ||\n diagnostics?.network.latest.networkReceiveQuality?.value === DiagnosticQuality.Poor\n ) {\n if (isTeamsMeetingWithPhones) {\n activeErrorMessages.push({ type: 'teamsMeetingCallNetworkQualityLow' });\n } else {\n activeErrorMessages.push({ type: 'callNetworkQualityLow' });\n }\n }\n if (diagnostics?.media.latest.noSpeakerDevicesEnumerated?.value === true) {\n activeErrorMessages.push({ type: 'callNoSpeakerFound' });\n }\n if (diagnostics?.media.latest.noMicrophoneDevicesEnumerated?.value === true) {\n activeErrorMessages.push({ type: 'callNoMicrophoneFound' });\n }\n if (deviceManager.deviceAccess?.audio === false && isSafari()) {\n activeErrorMessages.push({ type: 'callMicrophoneAccessDeniedSafari' });\n }\n\n if (diagnostics?.media.latest.microphonePermissionDenied?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsMicrophoneAccessDenied' });\n } else if (\n (deviceManager.deviceAccess?.audio === false && !isSafari()) ||\n (diagnostics?.media.latest.microphonePermissionDenied?.value === true && !isMacOS())\n ) {\n activeErrorMessages.push({ type: 'callMicrophoneAccessDenied' });\n }\n\n const microphoneMuteUnexpectedlyDiagnostic =\n diagnostics?.media.latest.microphoneMuteUnexpectedly || diagnostics?.media.latest.microphoneNotFunctioning;\n if (microphoneMuteUnexpectedlyDiagnostic) {\n if (microphoneMuteUnexpectedlyDiagnostic.value === DiagnosticQuality.Bad) {\n // Inform the user that microphone stopped working and inform them to start microphone again\n activeErrorMessages.push({ type: 'callMicrophoneMutedBySystem' });\n } else if (microphoneMuteUnexpectedlyDiagnostic.value === DiagnosticQuality.Good) {\n // Inform the user that microphone recovered\n activeErrorMessages.push({ type: 'callMicrophoneUnmutedBySystem' });\n }\n }\n\n const cameraStoppedUnexpectedlyDiagnostic = diagnostics?.media.latest.cameraStoppedUnexpectedly;\n if (cameraStoppedUnexpectedlyDiagnostic) {\n if (cameraStoppedUnexpectedlyDiagnostic.value === DiagnosticQuality.Bad) {\n // Inform the user that camera stopped working and inform them to start video again\n activeErrorMessages.push({ type: 'callVideoStoppedBySystem' });\n } else if (cameraStoppedUnexpectedlyDiagnostic.value === DiagnosticQuality.Good) {\n // Inform the user that camera recovered\n activeErrorMessages.push({ type: 'callVideoRecoveredBySystem' });\n }\n }\n if (deviceManager.deviceAccess?.video === false && isSafari()) {\n activeErrorMessages.push({ type: 'callCameraAccessDeniedSafari' });\n } else if (deviceManager.deviceAccess?.video === false) {\n activeErrorMessages.push({ type: 'callCameraAccessDenied' });\n } else {\n if (diagnostics?.media.latest.cameraFreeze?.value === true) {\n activeErrorMessages.push({ type: 'cameraFrozenForRemoteParticipants' });\n }\n }\n\n /**\n * show the Mac specific strings if the platform is detected as mac\n */\n if (diagnostics?.media.latest.cameraPermissionDenied?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsCameraAccessDenied' });\n }\n\n /**\n * This UFD only works on mac still so we should only see it fire on mac.\n */\n if (diagnostics?.media.latest.screenshareRecordingDisabled?.value === true && isMacOS()) {\n activeErrorMessages.push({ type: 'callMacOsScreenShareAccessDenied' });\n } else if (diagnostics?.media.latest.screenshareRecordingDisabled?.value === true) {\n activeErrorMessages.push({ type: 'startScreenShareGeneric' });\n }\n\n // Prefer to show errors with privacy implications.\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopVideo', 'stopVideoGeneric');\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.mute', 'muteGeneric');\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.stopScreenSharing', 'stopScreenShareGeneric');\n\n if (\n latestErrors['Call.startVideo']?.message === 'Call.startVideo: Video operation failure SourceUnavailableError'\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAlreadyInUse');\n } else if (\n latestErrors['Call.startVideo']?.message === 'Call.startVideo: Video operation failure permissionDeniedError'\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'callCameraAccessDenied');\n } else {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.startVideo', 'startVideoGeneric');\n }\n\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.unmute', 'unmuteGeneric');\n if (\n latestNotifications &&\n !latestNotifications['capabilityUnmuteMicAbsent'] &&\n !latestNotifications['capabilityUnmuteMicPresent']\n ) {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'Call.mutedByOthers', 'mutedByRemoteParticipant');\n }\n\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'VideoEffectsFeature.startEffects',\n 'unableToStartVideoEffect'\n );\n\n if (latestErrors['CallAgent.join']?.message === 'CallAgent.join: Invalid meeting link') {\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'CallAgent.join',\n 'failedToJoinCallInvalidMeetingLink'\n );\n } else {\n appendActiveErrorIfDefined(activeErrorMessages, latestErrors, 'CallAgent.join', 'failedToJoinCallGeneric');\n }\n\n if (\n latestErrors['Call.feature']?.message.match(\n /Call\\.feature: startSpotlight failed\\. \\d+ is the max number of participants that can be Spotlighted/g\n )\n ) {\n appendActiveErrorIfDefined(\n activeErrorMessages,\n latestErrors,\n 'Call.feature',\n 'startSpotlightWhileMaxParticipantsAreSpotlighted'\n );\n }\n\n //below is for active notifications\n const activeNotifications: ActiveNotification[] = [];\n if (\n diagnostics?.media.latest.speakingWhileMicrophoneIsMuted?.value &&\n // only show this notification when the participant is in an active call and not on screens such as Lobby\n callStatus === 'Connected'\n ) {\n activeNotifications.push({\n type: 'speakingWhileMuted',\n timestamp: new Date(Date.now()),\n autoDismiss: true,\n ariaLive: 'off' // \"You're muted\" is too noisy, so we don't want to announce it.\n });\n }\n if (latestNotifications['assignedBreakoutRoomOpened']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomOpened',\n timestamp: latestNotifications['assignedBreakoutRoomOpened'].timestamp\n });\n }\n if (latestNotifications['assignedBreakoutRoomOpenedPromptJoin'] && assignedBreakoutRoom) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomOpenedPromptJoin',\n timestamp: latestNotifications['assignedBreakoutRoomOpenedPromptJoin'].timestamp,\n onClickPrimaryButton: () => assignedBreakoutRoom.join()\n });\n }\n if (latestNotifications['assignedBreakoutRoomChanged']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomChanged',\n timestamp: latestNotifications['assignedBreakoutRoomChanged'].timestamp\n });\n }\n if (latestNotifications['assignedBreakoutRoomClosed']) {\n activeNotifications.push({\n type: 'assignedBreakoutRoomClosed',\n timestamp: latestNotifications['assignedBreakoutRoomClosed'].timestamp\n });\n }\n if (latestNotifications['breakoutRoomJoined']) {\n activeNotifications.push({\n type: 'breakoutRoomJoined',\n timestamp: latestNotifications['breakoutRoomJoined'].timestamp\n });\n }\n if (latestNotifications['breakoutRoomClosingSoon']) {\n activeNotifications.push({\n type: 'breakoutRoomClosingSoon',\n timestamp: latestNotifications['breakoutRoomClosingSoon'].timestamp\n });\n }\n\n if (latestNotifications['capabilityTurnVideoOnPresent']) {\n activeNotifications.push({\n type: 'capabilityTurnVideoOnPresent',\n timestamp: latestNotifications['capabilityTurnVideoOnPresent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityTurnVideoOnAbsent']) {\n activeNotifications.push({\n type: 'capabilityTurnVideoOnAbsent',\n timestamp: latestNotifications['capabilityTurnVideoOnAbsent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityUnmuteMicPresent']) {\n activeNotifications.push({\n type: 'capabilityUnmuteMicPresent',\n timestamp: latestNotifications['capabilityUnmuteMicPresent'].timestamp\n });\n }\n\n if (latestNotifications['capabilityUnmuteMicAbsent']) {\n activeNotifications.push({\n type: 'capabilityUnmuteMicAbsent',\n timestamp: latestNotifications['capabilityUnmuteMicAbsent'].timestamp\n });\n }\n\n /* @conditional-compile-remove(together-mode) */\n if (latestNotifications['togetherModeStarted']) {\n activeNotifications.push({\n type: 'togetherModeStarted',\n timestamp: latestNotifications['togetherModeStarted'].timestamp,\n autoDismiss: true\n });\n }\n /* @conditional-compile-remove(together-mode) */\n if (latestNotifications['togetherModeEnded']) {\n activeNotifications.push({\n type: 'togetherModeEnded',\n timestamp: latestNotifications['togetherModeEnded'].timestamp,\n autoDismiss: true\n });\n }\n\n return { activeErrorMessages: activeErrorMessages, activeNotifications: activeNotifications };\n }\n);\n\nconst appendActiveErrorIfDefined = (\n activeErrorMessages: ActiveNotification[],\n latestErrors: CallErrors,\n target: CallErrorTarget,\n activeErrorType: NotificationType\n): void => {\n if (latestErrors[target] === undefined) {\n return;\n }\n activeErrorMessages.push({\n type: activeErrorType,\n timestamp: latestErrors[target].timestamp\n });\n};\n"]}
@@ -1,8 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
- /* @conditional-compile-remove(breakout-rooms) */
4
3
  const MILLSECONDS_BEFORE_END_TIME_TO_SHOW_CLOSING_NOTIFICATION = 30000;
5
- /* @conditional-compile-remove(breakout-rooms) */
6
4
  /**
7
5
  * @private
8
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BreakoutRoomsSubscriber.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/BreakoutRoomsSubscriber.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* @conditional-compile-remove(breakout-rooms) */\nimport {\n BreakoutRoom,\n BreakoutRoomsCallFeature,\n BreakoutRoomsEventData,\n BreakoutRoomsSettings,\n Call,\n TeamsCall\n} from '@azure/communication-calling';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { CallContext } from './CallContext';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { CallIdRef } from './CallIdRef';\n/* @conditional-compile-remove(breakout-rooms) */\nimport { NotificationTarget } from './CallClientState';\n\n/* @conditional-compile-remove(breakout-rooms) */\nconst MILLSECONDS_BEFORE_END_TIME_TO_SHOW_CLOSING_NOTIFICATION = 30000;\n\n/* @conditional-compile-remove(breakout-rooms) */\n/**\n * @private\n */\nexport class BreakoutRoomsSubscriber {\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _breakoutRoomsFeature: BreakoutRoomsCallFeature;\n private _breakoutRoomClosingSoonTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n constructor(callIdRef: CallIdRef, context: CallContext, breakoutRoomsFeature: BreakoutRoomsCallFeature) {\n this._callIdRef = callIdRef;\n this._context = context;\n this._breakoutRoomsFeature = breakoutRoomsFeature;\n\n this.subscribe();\n }\n\n public unsubscribe = (): void => {\n this._breakoutRoomsFeature.off('breakoutRoomsUpdated', this.onBreakoutRoomsUpdated);\n // Clear breakout room joined notification for this call.\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n // Clear breakout room closing soon notification for this call.\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', this._callIdRef.callId);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n };\n\n private subscribe(): void {\n this._breakoutRoomsFeature.on('breakoutRoomsUpdated', this.onBreakoutRoomsUpdated);\n }\n\n private onBreakoutRoomsUpdated = (eventData: BreakoutRoomsEventData): void => {\n if (eventData.type === 'assignedBreakoutRooms') {\n this.onAssignedBreakoutRoomUpdated(eventData.data);\n } else if (eventData.type === 'join') {\n this.onBreakoutRoomsJoined(eventData.data);\n } else if (eventData.type === 'breakoutRoomsSettings' && eventData.data) {\n this.onBreakoutRoomSettingsUpdated(eventData.data);\n }\n };\n\n private onAssignedBreakoutRoomUpdated = (breakoutRoom?: BreakoutRoom): void => {\n const callState = this._context.getState().calls[this._callIdRef.callId];\n const currentAssignedBreakoutRoom = callState?.breakoutRooms?.assignedBreakoutRoom;\n\n // This call won't exist in the calls array in state if this call is a breakout room that was re-assigned.\n // If so, do nothing.\n if (callState === undefined) {\n return;\n }\n\n if (!breakoutRoom) {\n // This scenario covers the case where the user is unassigned from a breakout room.\n if (currentAssignedBreakoutRoom?.call?.id) {\n this._context.deleteLatestNotification('breakoutRoomJoined', currentAssignedBreakoutRoom.call.id);\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', currentAssignedBreakoutRoom.call.id);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n }\n this._context.setAssignedBreakoutRoom(this._callIdRef.callId, breakoutRoom);\n return;\n }\n\n // TODO: Fix the condition in this if statement to check for different breakout room ID instead of the display name\n // when Calling SDK fixes the breakout room call id to be correct\n if (\n breakoutRoom.state === 'open' &&\n callState.breakoutRooms?.breakoutRoomDisplayName &&\n callState.breakoutRooms.breakoutRoomDisplayName !== breakoutRoom.displayName\n ) {\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'assignedBreakoutRoomChanged',\n timestamp: new Date(Date.now())\n });\n } else if (\n breakoutRoom.state === 'open' &&\n !callState?.breakoutRooms?.breakoutRoomSettings &&\n this._context.getOpenBreakoutRoom() === undefined\n ) {\n const target: NotificationTarget =\n breakoutRoom.autoMoveParticipantToBreakoutRoom === false\n ? 'assignedBreakoutRoomOpenedPromptJoin'\n : 'assignedBreakoutRoomOpened';\n this._context.setLatestNotification(this._callIdRef.callId, { target, timestamp: new Date(Date.now()) });\n } else if (breakoutRoom.state === 'closed' && currentAssignedBreakoutRoom?.state === 'open') {\n // This scenario covers the case where the breakout room is opened but then closed before the user joins.\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n } else if (breakoutRoom.state === 'closed') {\n // This scenario covers the case where the breakout room is closed\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', this._callIdRef.callId);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n const openBreakoutRoomId = this._context.getOpenBreakoutRoom();\n if (openBreakoutRoomId && this._context.getState().calls[openBreakoutRoomId]) {\n // Show notification that the assigned breakout room was closed if the user is in that breakout room.\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'assignedBreakoutRoomClosed',\n timestamp: new Date(Date.now())\n });\n }\n this._context.deleteOpenBreakoutRoom();\n }\n\n this._context.setAssignedBreakoutRoom(this._callIdRef.callId, breakoutRoom);\n };\n\n private onBreakoutRoomsJoined = (call: Call | TeamsCall): void => {\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n\n // Send latest notification for breakoutRoomJoined on behalf of the call that was joined.\n this._context.setLatestNotification(call.id, {\n target: 'breakoutRoomJoined',\n timestamp: new Date(Date.now())\n });\n\n this._context.setOpenBreakoutRoom(call.id);\n\n // If assigned breakout room has a display name, set the display name for its call state.\n const assignedBreakoutRoomDisplayName =\n this._context.getState().calls[this._callIdRef.callId]?.breakoutRooms?.assignedBreakoutRoom?.displayName;\n if (assignedBreakoutRoomDisplayName) {\n this._context.setBreakoutRoomDisplayName(call.id, assignedBreakoutRoomDisplayName);\n }\n };\n\n private onBreakoutRoomSettingsUpdated = (breakoutRoomSettings: BreakoutRoomsSettings): void => {\n // If the roomEndTime is available, set a timeout to show a notification before the room closes.\n if (\n typeof breakoutRoomSettings.roomEndTime === 'string' &&\n !Number.isNaN(Date.parse(breakoutRoomSettings.roomEndTime))\n ) {\n const now = new Date(Date.now());\n const roomClosingTime = new Date(breakoutRoomSettings.roomEndTime).getTime();\n const timeBeforeClosing = roomClosingTime - now.getTime();\n const timeBeforeSendingClosingSoonNotification = Math.max(\n timeBeforeClosing - MILLSECONDS_BEFORE_END_TIME_TO_SHOW_CLOSING_NOTIFICATION,\n 0\n );\n if (!this._breakoutRoomClosingSoonTimeoutId) {\n this._breakoutRoomClosingSoonTimeoutId = setTimeout(\n () =>\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'breakoutRoomClosingSoon',\n timestamp: now\n }),\n timeBeforeSendingClosingSoonNotification\n );\n }\n }\n this._context.setBreakoutRoomSettings(this._callIdRef.callId, breakoutRoomSettings);\n };\n}\n"]}
1
+ {"version":3,"file":"BreakoutRoomsSubscriber.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/BreakoutRoomsSubscriber.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n BreakoutRoom,\n BreakoutRoomsCallFeature,\n BreakoutRoomsEventData,\n BreakoutRoomsSettings,\n Call,\n TeamsCall\n} from '@azure/communication-calling';\nimport { CallContext } from './CallContext';\nimport { CallIdRef } from './CallIdRef';\nimport { NotificationTarget } from './CallClientState';\n\nconst MILLSECONDS_BEFORE_END_TIME_TO_SHOW_CLOSING_NOTIFICATION = 30000;\n\n/**\n * @private\n */\nexport class BreakoutRoomsSubscriber {\n private _callIdRef: CallIdRef;\n private _context: CallContext;\n private _breakoutRoomsFeature: BreakoutRoomsCallFeature;\n private _breakoutRoomClosingSoonTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n constructor(callIdRef: CallIdRef, context: CallContext, breakoutRoomsFeature: BreakoutRoomsCallFeature) {\n this._callIdRef = callIdRef;\n this._context = context;\n this._breakoutRoomsFeature = breakoutRoomsFeature;\n\n this.subscribe();\n }\n\n public unsubscribe = (): void => {\n this._breakoutRoomsFeature.off('breakoutRoomsUpdated', this.onBreakoutRoomsUpdated);\n // Clear breakout room joined notification for this call.\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n // Clear breakout room closing soon notification for this call.\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', this._callIdRef.callId);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n };\n\n private subscribe(): void {\n this._breakoutRoomsFeature.on('breakoutRoomsUpdated', this.onBreakoutRoomsUpdated);\n }\n\n private onBreakoutRoomsUpdated = (eventData: BreakoutRoomsEventData): void => {\n if (eventData.type === 'assignedBreakoutRooms') {\n this.onAssignedBreakoutRoomUpdated(eventData.data);\n } else if (eventData.type === 'join') {\n this.onBreakoutRoomsJoined(eventData.data);\n } else if (eventData.type === 'breakoutRoomsSettings' && eventData.data) {\n this.onBreakoutRoomSettingsUpdated(eventData.data);\n }\n };\n\n private onAssignedBreakoutRoomUpdated = (breakoutRoom?: BreakoutRoom): void => {\n const callState = this._context.getState().calls[this._callIdRef.callId];\n const currentAssignedBreakoutRoom = callState?.breakoutRooms?.assignedBreakoutRoom;\n\n // This call won't exist in the calls array in state if this call is a breakout room that was re-assigned.\n // If so, do nothing.\n if (callState === undefined) {\n return;\n }\n\n if (!breakoutRoom) {\n // This scenario covers the case where the user is unassigned from a breakout room.\n if (currentAssignedBreakoutRoom?.call?.id) {\n this._context.deleteLatestNotification('breakoutRoomJoined', currentAssignedBreakoutRoom.call.id);\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', currentAssignedBreakoutRoom.call.id);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n }\n this._context.setAssignedBreakoutRoom(this._callIdRef.callId, breakoutRoom);\n return;\n }\n\n // TODO: Fix the condition in this if statement to check for different breakout room ID instead of the display name\n // when Calling SDK fixes the breakout room call id to be correct\n if (\n breakoutRoom.state === 'open' &&\n callState.breakoutRooms?.breakoutRoomDisplayName &&\n callState.breakoutRooms.breakoutRoomDisplayName !== breakoutRoom.displayName\n ) {\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'assignedBreakoutRoomChanged',\n timestamp: new Date(Date.now())\n });\n } else if (\n breakoutRoom.state === 'open' &&\n !callState?.breakoutRooms?.breakoutRoomSettings &&\n this._context.getOpenBreakoutRoom() === undefined\n ) {\n const target: NotificationTarget =\n breakoutRoom.autoMoveParticipantToBreakoutRoom === false\n ? 'assignedBreakoutRoomOpenedPromptJoin'\n : 'assignedBreakoutRoomOpened';\n this._context.setLatestNotification(this._callIdRef.callId, { target, timestamp: new Date(Date.now()) });\n } else if (breakoutRoom.state === 'closed' && currentAssignedBreakoutRoom?.state === 'open') {\n // This scenario covers the case where the breakout room is opened but then closed before the user joins.\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n } else if (breakoutRoom.state === 'closed') {\n // This scenario covers the case where the breakout room is closed\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomJoined', this._callIdRef.callId);\n this._context.deleteLatestNotification('breakoutRoomClosingSoon', this._callIdRef.callId);\n clearTimeout(this._breakoutRoomClosingSoonTimeoutId);\n const openBreakoutRoomId = this._context.getOpenBreakoutRoom();\n if (openBreakoutRoomId && this._context.getState().calls[openBreakoutRoomId]) {\n // Show notification that the assigned breakout room was closed if the user is in that breakout room.\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'assignedBreakoutRoomClosed',\n timestamp: new Date(Date.now())\n });\n }\n this._context.deleteOpenBreakoutRoom();\n }\n\n this._context.setAssignedBreakoutRoom(this._callIdRef.callId, breakoutRoom);\n };\n\n private onBreakoutRoomsJoined = (call: Call | TeamsCall): void => {\n this._context.deleteLatestNotification('assignedBreakoutRoomOpened', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomOpenedPromptJoin', this._callIdRef.callId);\n this._context.deleteLatestNotification('assignedBreakoutRoomChanged', this._callIdRef.callId);\n\n // Send latest notification for breakoutRoomJoined on behalf of the call that was joined.\n this._context.setLatestNotification(call.id, {\n target: 'breakoutRoomJoined',\n timestamp: new Date(Date.now())\n });\n\n this._context.setOpenBreakoutRoom(call.id);\n\n // If assigned breakout room has a display name, set the display name for its call state.\n const assignedBreakoutRoomDisplayName =\n this._context.getState().calls[this._callIdRef.callId]?.breakoutRooms?.assignedBreakoutRoom?.displayName;\n if (assignedBreakoutRoomDisplayName) {\n this._context.setBreakoutRoomDisplayName(call.id, assignedBreakoutRoomDisplayName);\n }\n };\n\n private onBreakoutRoomSettingsUpdated = (breakoutRoomSettings: BreakoutRoomsSettings): void => {\n // If the roomEndTime is available, set a timeout to show a notification before the room closes.\n if (\n typeof breakoutRoomSettings.roomEndTime === 'string' &&\n !Number.isNaN(Date.parse(breakoutRoomSettings.roomEndTime))\n ) {\n const now = new Date(Date.now());\n const roomClosingTime = new Date(breakoutRoomSettings.roomEndTime).getTime();\n const timeBeforeClosing = roomClosingTime - now.getTime();\n const timeBeforeSendingClosingSoonNotification = Math.max(\n timeBeforeClosing - MILLSECONDS_BEFORE_END_TIME_TO_SHOW_CLOSING_NOTIFICATION,\n 0\n );\n if (!this._breakoutRoomClosingSoonTimeoutId) {\n this._breakoutRoomClosingSoonTimeoutId = setTimeout(\n () =>\n this._context.setLatestNotification(this._callIdRef.callId, {\n target: 'breakoutRoomClosingSoon',\n timestamp: now\n }),\n timeBeforeSendingClosingSoonNotification\n );\n }\n }\n this._context.setBreakoutRoomSettings(this._callIdRef.callId, breakoutRoomSettings);\n };\n}\n"]}
@@ -1,5 +1,4 @@
1
- import { AudioDeviceInfo, CallDirection, CallEndReason, CallerInfo, CallState as CallStatus, DeviceAccess, DominantSpeakersInfo, IncomingCallKind, LatestMediaDiagnostics, LatestNetworkDiagnostics, MediaStreamType, ParticipantRole, RemoteParticipantState as RemoteParticipantStatus, ScalingMode, VideoDeviceInfo } from '@azure/communication-calling';
2
- import { BreakoutRoom, BreakoutRoomsSettings } from '@azure/communication-calling';
1
+ import { AudioDeviceInfo, BreakoutRoom, BreakoutRoomsSettings, CallDirection, CallEndReason, CallerInfo, CallState as CallStatus, DeviceAccess, DominantSpeakersInfo, IncomingCallKind, LatestMediaDiagnostics, LatestNetworkDiagnostics, MediaStreamType, ParticipantRole, RemoteParticipantState as RemoteParticipantStatus, ScalingMode, VideoDeviceInfo } from '@azure/communication-calling';
3
2
  import type { ServerDiagnosticType, MediaDiagnosticType, NetworkDiagnosticType, DiagnosticValueType, DiagnosticQuality, DiagnosticFlag } from '@azure/communication-calling';
4
3
  import { ParticipantInfo, RealTimeTextResultType } from '@azure/communication-calling';
5
4
  import { TeamsCallInfo } from '@azure/communication-calling';
@@ -1088,7 +1087,7 @@ export interface CallNotification {
1088
1087
  timestamp: Date;
1089
1088
  }
1090
1089
  /** @public */
1091
- export type NotificationTarget = /* @conditional-compile-remove(breakout-rooms) */ 'assignedBreakoutRoomOpened' | /* @conditional-compile-remove(breakout-rooms) */ 'assignedBreakoutRoomOpenedPromptJoin' | /* @conditional-compile-remove(breakout-rooms) */ 'assignedBreakoutRoomChanged' | /* @conditional-compile-remove(breakout-rooms) */ 'assignedBreakoutRoomClosed' | /* @conditional-compile-remove(breakout-rooms) */ 'breakoutRoomJoined' | /* @conditional-compile-remove(breakout-rooms) */ 'breakoutRoomClosingSoon' | 'capabilityTurnVideoOnPresent' | 'capabilityTurnVideoOnAbsent' | 'capabilityUnmuteMicPresent' | 'capabilityUnmuteMicAbsent' | /* @conditional-compile-remove(together-mode) */ 'togetherModeStarted' | /* @conditional-compile-remove(together-mode) */ 'togetherModeEnded';
1090
+ export type NotificationTarget = 'assignedBreakoutRoomOpened' | 'assignedBreakoutRoomOpenedPromptJoin' | 'assignedBreakoutRoomChanged' | 'assignedBreakoutRoomClosed' | 'breakoutRoomJoined' | 'breakoutRoomClosingSoon' | 'capabilityTurnVideoOnPresent' | 'capabilityTurnVideoOnAbsent' | 'capabilityUnmuteMicPresent' | 'capabilityUnmuteMicAbsent' | /* @conditional-compile-remove(together-mode) */ 'togetherModeStarted' | /* @conditional-compile-remove(together-mode) */ 'togetherModeEnded';
1092
1091
  /**
1093
1092
  * State only proxy for {@link @azure/communication-calling#DiagnosticsCallFeature}.
1094
1093
  *