@azure/communication-react 1.14.0-alpha-202403140012 → 1.14.0-alpha-202403160012

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 (153) hide show
  1. package/dist/communication-react.d.ts +39 -1
  2. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D1KqCTKr.js → RichTextSendBoxWrapper-BCdGFyar.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-D1KqCTKr.js.map → RichTextSendBoxWrapper-BCdGFyar.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{index-DikMcJD4.js → index-BfFCLrEO.js} +538 -337
  5. package/dist/dist-cjs/communication-react/index-BfFCLrEO.js.map +1 -0
  6. package/dist/dist-cjs/communication-react/index.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +0 -3
  10. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +0 -3
  12. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +0 -7
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +3 -11
  16. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  17. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +3 -9
  18. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  19. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +5 -16
  21. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  22. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +4 -17
  23. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +35 -0
  25. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  26. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +8 -1
  27. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +42 -9
  28. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +46 -1
  30. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  31. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +3 -1
  32. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +24 -14
  33. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  34. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.d.ts +16 -1
  35. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js +38 -2
  36. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js.map +1 -1
  37. package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts +6 -1
  38. package/dist/dist-esm/calling-stateful-client/src/Converter.js +11 -6
  39. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  40. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.d.ts +17 -0
  41. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js +36 -0
  42. package/dist/dist-esm/calling-stateful-client/src/LocalRecordingSubscriber.js.map +1 -0
  43. package/dist/dist-esm/calling-stateful-client/src/OptimalVideoCountSubscriber.js +0 -1
  44. package/dist/dist-esm/calling-stateful-client/src/OptimalVideoCountSubscriber.js.map +1 -1
  45. package/dist/dist-esm/calling-stateful-client/src/RaiseHandSubscriber.js +0 -2
  46. package/dist/dist-esm/calling-stateful-client/src/RaiseHandSubscriber.js.map +1 -1
  47. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.d.ts +1 -0
  48. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js +11 -0
  49. package/dist/dist-esm/calling-stateful-client/src/RecordingSubscriber.js.map +1 -1
  50. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +1 -0
  51. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  52. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -0
  53. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  54. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +1 -1
  55. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  56. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js +6 -2
  57. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js.map +1 -1
  58. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.d.ts +1 -1
  59. package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.js.map +1 -1
  60. package/dist/dist-esm/communication-react/src/index.js +0 -1
  61. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  62. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js +5 -2
  63. package/dist/dist-esm/react-components/src/components/CaptionsSettingsModal.js.map +1 -1
  64. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js +19 -8
  65. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js.map +1 -1
  66. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.d.ts +4 -0
  67. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenuItem.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/Drawer/ReactionDrawerMenuItem.d.ts +29 -0
  69. package/dist/dist-esm/react-components/src/components/Drawer/ReactionDrawerMenuItem.js +60 -0
  70. package/dist/dist-esm/react-components/src/components/Drawer/ReactionDrawerMenuItem.js.map +1 -0
  71. package/dist/dist-esm/react-components/src/components/Drawer/index.d.ts +2 -0
  72. package/dist/dist-esm/react-components/src/components/Drawer/index.js +2 -0
  73. package/dist/dist-esm/react-components/src/components/Drawer/index.js.map +1 -1
  74. package/dist/dist-esm/react-components/src/components/ImageOverlay.js +16 -8
  75. package/dist/dist-esm/react-components/src/components/ImageOverlay.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +2 -6
  77. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -1
  78. package/dist/dist-esm/react-components/src/components/ParticipantList.js +3 -17
  79. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  80. package/dist/dist-esm/react-components/src/components/RaiseHandButton.js +0 -7
  81. package/dist/dist-esm/react-components/src/components/RaiseHandButton.js.map +1 -1
  82. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +1 -3
  83. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  84. package/dist/dist-esm/react-components/src/components/VideoGallery.js +1 -3
  85. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  86. package/dist/dist-esm/react-components/src/components/VideoTile.js +3 -9
  87. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  88. package/dist/dist-esm/react-components/src/components/assets/RaisedHandIcon.js +0 -2
  89. package/dist/dist-esm/react-components/src/components/assets/RaisedHandIcon.js.map +1 -1
  90. package/dist/dist-esm/react-components/src/components/index.js +0 -1
  91. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  92. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.d.ts +12 -0
  93. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.js +47 -3
  94. package/dist/dist-esm/react-components/src/components/styles/ReactionButton.styles.js.map +1 -1
  95. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  96. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  97. package/dist/dist-esm/react-components/src/theming/icons.js +0 -5
  98. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  99. package/dist/dist-esm/react-components/src/theming/themes.js +1 -3
  100. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  101. package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.js.map +1 -1
  102. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
  103. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +1 -0
  104. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +43 -18
  105. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  106. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  107. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +11 -3
  108. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  109. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +1 -15
  110. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  111. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +0 -2
  112. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  113. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js +0 -8
  114. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js.map +1 -1
  115. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +0 -3
  116. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  117. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +0 -1
  118. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  119. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js +1 -9
  120. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js.map +1 -1
  121. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +0 -3
  122. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  123. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +0 -4
  124. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  125. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  126. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +0 -2
  127. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  128. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/index.js.map +1 -1
  129. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +1 -1
  130. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  131. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js +1 -6
  132. package/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js.map +1 -1
  133. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.d.ts +1 -0
  134. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +1 -1
  135. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -1
  136. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +1 -0
  137. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +3 -6
  138. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  139. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +0 -5
  140. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
  141. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.d.ts +4 -0
  142. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +32 -33
  143. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  144. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.d.ts +3 -0
  145. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +1 -1
  146. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -3
  147. package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
  148. package/dist/dist-esm/react-composites/src/composites/common/icons.js +0 -1
  149. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  150. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
  151. package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
  152. package/package.json +1 -1
  153. package/dist/dist-cjs/communication-react/index-DikMcJD4.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DikMcJD4.js');
3
+ var index = require('./index-BfFCLrEO.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.14.0-alpha-202403140012';
5
+ module.exports = '1.14.0-alpha-202403160012';
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.14.0-alpha-202403140012';\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.14.0-alpha-202403160012';\n"]}
@@ -41,7 +41,6 @@ export const getRemoteParticipants = (state, props) => {
41
41
  var _a;
42
42
  return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.remoteParticipants;
43
43
  };
44
- /* @conditional-compile-remove(raise-hand) */
45
44
  /**
46
45
  * @private
47
46
  */
@@ -73,7 +72,6 @@ export const getIsScreenSharingOn = (state, props) => { var _a; return (_a = sta
73
72
  * @private
74
73
  */
75
74
  export const getIsMuted = (state, props) => { var _a; return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.isMuted; };
76
- /* @conditional-compile-remove(optimal-video-count) */
77
75
  /**
78
76
  * @private
79
77
  */
@@ -102,7 +100,6 @@ export const getLatestErrors = (state) => state.latestErrors;
102
100
  * @private
103
101
  */
104
102
  export const getDiagnostics = (state, props) => { var _a; return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.diagnostics; };
105
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */
106
103
  /**
107
104
  * @private
108
105
  */
@@ -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 { DominantSpeakersInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(capabilities) */\nimport { ParticipantCapabilities } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } 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} from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightCallFeatureState } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(reaction) */\nimport { ReactionState } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsInfo } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaisedHandState } from '@internal/calling-stateful-client';\nimport { _SupportedCaptionLanguage, _SupportedSpokenLanguage } from '@internal/react-components';\n\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 /* @conditional-compile-remove(rooms) */\n return state.calls[props.callId]?.role;\n return 'Unknown';\n};\n\n/**\n * @private\n */\nexport const isHideAttendeeNamesEnabled = (state: CallClientState, props: CallingBaseSelectorProps): boolean => {\n /* @conditional-compile-remove(hide-attendee-name) */\n return state.calls[props.callId]?.hideAttendeeNames ?? false;\n return false;\n};\n\n/* @conditional-compile-remove(capabilities) */\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 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/* @conditional-compile-remove(raise-hand) */\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/* @conditional-compile-remove(spotlight) */\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/* @conditional-compile-remove(reaction) */\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/* @conditional-compile-remove(optimal-video-count) */\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 getDiagnostics = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): DiagnosticsCallFeatureState | undefined => state.calls[props.callId]?.diagnostics;\n\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */\n/**\n * @private\n */\nexport const getCallState = (state: CallClientState, props: CallingBaseSelectorProps): string =>\n state.calls[props.callId]?.state;\n\n/**\n * @private\n */\nexport const getEnvironmentInfo = (\n state: CallClientState\n): undefined | /* @conditional-compile-remove(unsupported-browser) */ EnvironmentInfo => {\n /* @conditional-compile-remove(unsupported-browser) */\n return state.environmentInfo;\n return undefined;\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/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCaptions = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsInfo[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.captions;\n};\n\n/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCaptionsStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.isCaptionsFeatureActive;\n};\n\n/* @conditional-compile-remove(close-captions) */\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/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCurrentCaptionLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): _SupportedCaptionLanguage | undefined => {\n return state.calls[props.callId]?.captionsFeature.currentCaptionLanguage as _SupportedCaptionLanguage;\n};\n\n/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCurrentSpokenLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): _SupportedSpokenLanguage | undefined => {\n return state.calls[props.callId]?.captionsFeature.currentSpokenLanguage as _SupportedSpokenLanguage;\n};\n\n/* @conditional-compile-remove(close-captions) */\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/* @conditional-compile-remove(close-captions) */\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"]}
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 { DominantSpeakersInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(capabilities) */\nimport { ParticipantCapabilities } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } 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} from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightCallFeatureState } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(reaction) */\nimport { ReactionState } from '@internal/calling-stateful-client';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsInfo } from '@internal/calling-stateful-client';\nimport { RaisedHandState } from '@internal/calling-stateful-client';\nimport { _SupportedCaptionLanguage, _SupportedSpokenLanguage } from '@internal/react-components';\n\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 /* @conditional-compile-remove(rooms) */\n return state.calls[props.callId]?.role;\n return 'Unknown';\n};\n\n/**\n * @private\n */\nexport const isHideAttendeeNamesEnabled = (state: CallClientState, props: CallingBaseSelectorProps): boolean => {\n /* @conditional-compile-remove(hide-attendee-name) */\n return state.calls[props.callId]?.hideAttendeeNames ?? false;\n return false;\n};\n\n/* @conditional-compile-remove(capabilities) */\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 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/* @conditional-compile-remove(spotlight) */\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/* @conditional-compile-remove(reaction) */\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 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): string =>\n state.calls[props.callId]?.state;\n\n/**\n * @private\n */\nexport const getEnvironmentInfo = (\n state: CallClientState\n): undefined | /* @conditional-compile-remove(unsupported-browser) */ EnvironmentInfo => {\n /* @conditional-compile-remove(unsupported-browser) */\n return state.environmentInfo;\n return undefined;\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/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCaptions = (state: CallClientState, props: CallingBaseSelectorProps): CaptionsInfo[] | undefined => {\n return state.calls[props.callId]?.captionsFeature.captions;\n};\n\n/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCaptionsStatus = (state: CallClientState, props: CallingBaseSelectorProps): boolean | undefined => {\n return state.calls[props.callId]?.captionsFeature.isCaptionsFeatureActive;\n};\n\n/* @conditional-compile-remove(close-captions) */\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/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCurrentCaptionLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): _SupportedCaptionLanguage | undefined => {\n return state.calls[props.callId]?.captionsFeature.currentCaptionLanguage as _SupportedCaptionLanguage;\n};\n\n/* @conditional-compile-remove(close-captions) */\n/** @private */\nexport const getCurrentSpokenLanguage = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n): _SupportedSpokenLanguage | undefined => {\n return state.calls[props.callId]?.captionsFeature.currentSpokenLanguage as _SupportedSpokenLanguage;\n};\n\n/* @conditional-compile-remove(close-captions) */\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/* @conditional-compile-remove(close-captions) */\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"]}
@@ -6,10 +6,8 @@ import { getCallExists, getDeviceManager, getIsMuted, getIsScreenSharingOn, getL
6
6
  import { getLocalParticipantReactionState } from './baseSelectors';
7
7
  /* @conditional-compile-remove(capabilities) */
8
8
  import { getCapabilities, getRole } from './baseSelectors';
9
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */
10
9
  import { getCallState } from './baseSelectors';
11
10
  import { _isPreviewOn } from './utils/callUtils';
12
- /* @conditional-compile-remove(raise-hand) */
13
11
  import { getLocalParticipantRaisedHand } from './baseSelectors';
14
12
  /**
15
13
  * Selector for {@link MicrophoneButton} component.
@@ -67,7 +65,6 @@ export const cameraButtonSelector = reselect.createSelector([
67
65
  selectedCamera: deviceManager.selectedCamera
68
66
  };
69
67
  });
70
- /* @conditional-compile-remove(raise-hand) */
71
68
  /**
72
69
  * Selector for {@link RaiseHandButton} component.
73
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"callControlSelectors.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/callControlSelectors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';\nimport { CallClientState } from '@internal/calling-stateful-client';\nimport * as reselect from 'reselect';\nimport {\n CallingBaseSelectorProps,\n getCallExists,\n getDeviceManager,\n getIsMuted,\n getIsScreenSharingOn,\n getLocalVideoStreams\n} from './baseSelectors';\n/* @conditional-compile-remove(reaction) */\nimport { getLocalParticipantReactionState } from './baseSelectors';\n/* @conditional-compile-remove(capabilities) */\nimport { getCapabilities, getRole } from './baseSelectors';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */\nimport { getCallState } from './baseSelectors';\nimport { _isPreviewOn } from './utils/callUtils';\n/* @conditional-compile-remove(raise-hand) */\nimport { getLocalParticipantRaisedHand } from './baseSelectors';\n/**\n * Selector type for {@link MicrophoneButton} component.\n *\n * @public\n */\nexport type MicrophoneButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n disabled: boolean;\n checked: boolean;\n microphones: AudioDeviceInfo[];\n speakers: AudioDeviceInfo[];\n selectedMicrophone?: AudioDeviceInfo;\n selectedSpeaker?: AudioDeviceInfo;\n};\n\n/**\n * Selector for {@link MicrophoneButton} component.\n *\n * @public\n */\nexport const microphoneButtonSelector: MicrophoneButtonSelector = reselect.createSelector(\n [\n getCallExists,\n getIsMuted,\n getDeviceManager,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n callExists,\n isMuted,\n deviceManager,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n const permission = deviceManager.deviceAccess ? deviceManager.deviceAccess.audio : true;\n /* @conditional-compile-remove(capabilities) */\n const incapable =\n (capabilities?.unmuteMic.isPresent === false && capabilities?.unmuteMic.reason !== 'NotInitialized') ||\n role === 'Consumer';\n return {\n disabled: !callExists || !permission || /* @conditional-compile-remove(capabilities) */ incapable,\n checked: callExists ? !isMuted : false,\n microphones: deviceManager.microphones,\n speakers: deviceManager.speakers,\n selectedMicrophone: deviceManager.selectedMicrophone,\n selectedSpeaker: deviceManager.selectedSpeaker\n };\n }\n);\n\n/**\n * Selector type for {@link CameraButton} component.\n *\n * @public\n */\nexport type CameraButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n disabled: boolean;\n checked: boolean;\n cameras: VideoDeviceInfo[];\n selectedCamera?: VideoDeviceInfo;\n};\n\n/**\n * Selector for {@link CameraButton} component.\n *\n * @public\n */\nexport const cameraButtonSelector: CameraButtonSelector = reselect.createSelector(\n [\n getLocalVideoStreams,\n getDeviceManager,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n localVideoStreams,\n deviceManager,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n const previewOn = _isPreviewOn(deviceManager);\n const localVideoFromCall = localVideoStreams?.find((stream) => stream.mediaStreamType === 'Video');\n const permission = deviceManager.deviceAccess ? deviceManager.deviceAccess.video : true;\n /* @conditional-compile-remove(capabilities) */\n const incapable =\n (capabilities?.turnVideoOn.isPresent === false && capabilities?.turnVideoOn.reason !== 'NotInitialized') ||\n role === 'Consumer';\n return {\n disabled:\n !deviceManager.selectedCamera ||\n !permission ||\n !deviceManager.cameras.length ||\n /* @conditional-compile-remove(capabilities) */ incapable,\n checked: localVideoStreams !== undefined && localVideoStreams.length > 0 ? !!localVideoFromCall : previewOn,\n cameras: deviceManager.cameras,\n selectedCamera: deviceManager.selectedCamera\n };\n }\n);\n\n/**\n * Selector type for {@link ScreenShareButton} component.\n *\n * @public\n */\nexport type ScreenShareButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n /* @conditional-compile-remove(capabilities) */ /* @conditional-compile-remove(PSTN-calls) */ disabled?: boolean;\n};\n\n/* @conditional-compile-remove(raise-hand) */\n/**\n * Selector type for {@link RaiseHandButton} component.\n *\n * @public\n */\nexport type RaiseHandButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n disabled?: boolean;\n};\n\n/* @conditional-compile-remove(raise-hand) */\n/**\n * Selector for {@link RaiseHandButton} component.\n *\n * @public\n */\nexport const raiseHandButtonSelector: RaiseHandButtonSelector = reselect.createSelector(\n [getLocalParticipantRaisedHand, getCallState],\n (raisedHand, callState) => {\n return {\n checked: raisedHand ? true : false,\n disabled: callState === 'InLobby' ? true : callState === 'Connecting' ?? false\n };\n }\n);\n\n/* @conditional-compile-remove(reaction) */\n/**\n * Selector type for {@link ReactionButton} component.\n *\n * @beta\n */\nexport type ReactionButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n disabled?: boolean;\n};\n\n/* @conditional-compile-remove(reaction) */\n/**\n * Selector for {@link ReactionButton} component.\n *\n * @beta\n */\nexport const reactionButtonSelector: ReactionButtonSelector = reselect.createSelector(\n [getLocalParticipantReactionState, getCallState],\n (reaction, callState) => {\n return {\n checked: reaction ? true : false,\n disabled: callState !== 'Connected'\n };\n }\n);\n\n/**\n * Selector for {@link ScreenShareButton} component.\n *\n * @public\n */\nexport const screenShareButtonSelector: ScreenShareButtonSelector = reselect.createSelector(\n [\n getIsScreenSharingOn,\n /* @conditional-compile-remove(PSTN-calls) */ getCallState,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n isScreenSharingOn,\n /* @conditional-compile-remove(PSTN-calls) */ callState,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n let disabled: boolean | undefined = undefined;\n /* @conditional-compile-remove(capabilities) */\n disabled =\n disabled ||\n (capabilities?.shareScreen.isPresent === false && capabilities?.shareScreen.reason !== 'NotInitialized') ||\n role === 'Consumer' ||\n role === 'Attendee';\n /* @conditional-compile-remove(PSTN-calls) */\n disabled = disabled || ['InLobby', 'Connecting', 'LocalHold'].includes(callState);\n return {\n checked: isScreenSharingOn,\n disabled\n };\n }\n);\n\n/**\n * Selector type for {@link DevicesButton} component.\n *\n * @public\n */\nexport type DevicesButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n microphones: AudioDeviceInfo[];\n speakers: AudioDeviceInfo[];\n cameras: VideoDeviceInfo[];\n selectedMicrophone?: AudioDeviceInfo;\n selectedSpeaker?: AudioDeviceInfo;\n selectedCamera?: VideoDeviceInfo;\n};\n\n/**\n * Selector for {@link DevicesButton} component.\n *\n * @public\n */\nexport const devicesButtonSelector: DevicesButtonSelector = reselect.createSelector(\n [getDeviceManager],\n (deviceManager) => {\n return {\n microphones: removeBlankNameDevices(deviceManager.microphones),\n speakers: removeBlankNameDevices(deviceManager.speakers),\n cameras: removeBlankNameDevices(deviceManager.cameras),\n selectedMicrophone: deviceManager.selectedMicrophone,\n selectedSpeaker: deviceManager.selectedSpeaker,\n selectedCamera: deviceManager.selectedCamera\n };\n }\n);\n\nfunction removeBlankNameDevices<T extends { name: string }>(devices: T[]): T[] {\n return devices.filter((device) => device.name !== '');\n}\n\n/* @conditional-compile-remove(PSTN-calls) */\n/**\n * Selector type for the {@link HoldButton} component.\n * @public\n */\nexport type HoldButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked: boolean;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */\n/**\n * Selector for the {@link HoldButton} component.\n * @public\n */\nexport const holdButtonSelector: HoldButtonSelector = reselect.createSelector([getCallState], (callState) => {\n return {\n checked: callState === 'LocalHold'\n };\n});\n"]}
1
+ {"version":3,"file":"callControlSelectors.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/callControlSelectors.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AudioDeviceInfo, VideoDeviceInfo } from '@azure/communication-calling';\nimport { CallClientState } from '@internal/calling-stateful-client';\nimport * as reselect from 'reselect';\nimport {\n CallingBaseSelectorProps,\n getCallExists,\n getDeviceManager,\n getIsMuted,\n getIsScreenSharingOn,\n getLocalVideoStreams\n} from './baseSelectors';\n/* @conditional-compile-remove(reaction) */\nimport { getLocalParticipantReactionState } from './baseSelectors';\n/* @conditional-compile-remove(capabilities) */\nimport { getCapabilities, getRole } from './baseSelectors';\nimport { getCallState } from './baseSelectors';\nimport { _isPreviewOn } from './utils/callUtils';\nimport { getLocalParticipantRaisedHand } from './baseSelectors';\n/**\n * Selector type for {@link MicrophoneButton} component.\n *\n * @public\n */\nexport type MicrophoneButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n disabled: boolean;\n checked: boolean;\n microphones: AudioDeviceInfo[];\n speakers: AudioDeviceInfo[];\n selectedMicrophone?: AudioDeviceInfo;\n selectedSpeaker?: AudioDeviceInfo;\n};\n\n/**\n * Selector for {@link MicrophoneButton} component.\n *\n * @public\n */\nexport const microphoneButtonSelector: MicrophoneButtonSelector = reselect.createSelector(\n [\n getCallExists,\n getIsMuted,\n getDeviceManager,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n callExists,\n isMuted,\n deviceManager,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n const permission = deviceManager.deviceAccess ? deviceManager.deviceAccess.audio : true;\n /* @conditional-compile-remove(capabilities) */\n const incapable =\n (capabilities?.unmuteMic.isPresent === false && capabilities?.unmuteMic.reason !== 'NotInitialized') ||\n role === 'Consumer';\n return {\n disabled: !callExists || !permission || /* @conditional-compile-remove(capabilities) */ incapable,\n checked: callExists ? !isMuted : false,\n microphones: deviceManager.microphones,\n speakers: deviceManager.speakers,\n selectedMicrophone: deviceManager.selectedMicrophone,\n selectedSpeaker: deviceManager.selectedSpeaker\n };\n }\n);\n\n/**\n * Selector type for {@link CameraButton} component.\n *\n * @public\n */\nexport type CameraButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n disabled: boolean;\n checked: boolean;\n cameras: VideoDeviceInfo[];\n selectedCamera?: VideoDeviceInfo;\n};\n\n/**\n * Selector for {@link CameraButton} component.\n *\n * @public\n */\nexport const cameraButtonSelector: CameraButtonSelector = reselect.createSelector(\n [\n getLocalVideoStreams,\n getDeviceManager,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n localVideoStreams,\n deviceManager,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n const previewOn = _isPreviewOn(deviceManager);\n const localVideoFromCall = localVideoStreams?.find((stream) => stream.mediaStreamType === 'Video');\n const permission = deviceManager.deviceAccess ? deviceManager.deviceAccess.video : true;\n /* @conditional-compile-remove(capabilities) */\n const incapable =\n (capabilities?.turnVideoOn.isPresent === false && capabilities?.turnVideoOn.reason !== 'NotInitialized') ||\n role === 'Consumer';\n return {\n disabled:\n !deviceManager.selectedCamera ||\n !permission ||\n !deviceManager.cameras.length ||\n /* @conditional-compile-remove(capabilities) */ incapable,\n checked: localVideoStreams !== undefined && localVideoStreams.length > 0 ? !!localVideoFromCall : previewOn,\n cameras: deviceManager.cameras,\n selectedCamera: deviceManager.selectedCamera\n };\n }\n);\n\n/**\n * Selector type for {@link ScreenShareButton} component.\n *\n * @public\n */\nexport type ScreenShareButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n /* @conditional-compile-remove(capabilities) */ /* @conditional-compile-remove(PSTN-calls) */ disabled?: boolean;\n};\n\n/**\n * Selector type for {@link RaiseHandButton} component.\n *\n * @public\n */\nexport type RaiseHandButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n disabled?: boolean;\n};\n\n/**\n * Selector for {@link RaiseHandButton} component.\n *\n * @public\n */\nexport const raiseHandButtonSelector: RaiseHandButtonSelector = reselect.createSelector(\n [getLocalParticipantRaisedHand, getCallState],\n (raisedHand, callState) => {\n return {\n checked: raisedHand ? true : false,\n disabled: callState === 'InLobby' ? true : callState === 'Connecting' ?? false\n };\n }\n);\n\n/* @conditional-compile-remove(reaction) */\n/**\n * Selector type for {@link ReactionButton} component.\n *\n * @beta\n */\nexport type ReactionButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked?: boolean;\n disabled?: boolean;\n};\n\n/* @conditional-compile-remove(reaction) */\n/**\n * Selector for {@link ReactionButton} component.\n *\n * @beta\n */\nexport const reactionButtonSelector: ReactionButtonSelector = reselect.createSelector(\n [getLocalParticipantReactionState, getCallState],\n (reaction, callState) => {\n return {\n checked: reaction ? true : false,\n disabled: callState !== 'Connected'\n };\n }\n);\n\n/**\n * Selector for {@link ScreenShareButton} component.\n *\n * @public\n */\nexport const screenShareButtonSelector: ScreenShareButtonSelector = reselect.createSelector(\n [\n getIsScreenSharingOn,\n /* @conditional-compile-remove(PSTN-calls) */ getCallState,\n /* @conditional-compile-remove(capabilities) */ getCapabilities,\n /* @conditional-compile-remove(capabilities) */ getRole\n ],\n (\n isScreenSharingOn,\n /* @conditional-compile-remove(PSTN-calls) */ callState,\n /* @conditional-compile-remove(capabilities) */ capabilities,\n /* @conditional-compile-remove(capabilities) */ role\n ) => {\n let disabled: boolean | undefined = undefined;\n /* @conditional-compile-remove(capabilities) */\n disabled =\n disabled ||\n (capabilities?.shareScreen.isPresent === false && capabilities?.shareScreen.reason !== 'NotInitialized') ||\n role === 'Consumer' ||\n role === 'Attendee';\n /* @conditional-compile-remove(PSTN-calls) */\n disabled = disabled || ['InLobby', 'Connecting', 'LocalHold'].includes(callState);\n return {\n checked: isScreenSharingOn,\n disabled\n };\n }\n);\n\n/**\n * Selector type for {@link DevicesButton} component.\n *\n * @public\n */\nexport type DevicesButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n microphones: AudioDeviceInfo[];\n speakers: AudioDeviceInfo[];\n cameras: VideoDeviceInfo[];\n selectedMicrophone?: AudioDeviceInfo;\n selectedSpeaker?: AudioDeviceInfo;\n selectedCamera?: VideoDeviceInfo;\n};\n\n/**\n * Selector for {@link DevicesButton} component.\n *\n * @public\n */\nexport const devicesButtonSelector: DevicesButtonSelector = reselect.createSelector(\n [getDeviceManager],\n (deviceManager) => {\n return {\n microphones: removeBlankNameDevices(deviceManager.microphones),\n speakers: removeBlankNameDevices(deviceManager.speakers),\n cameras: removeBlankNameDevices(deviceManager.cameras),\n selectedMicrophone: deviceManager.selectedMicrophone,\n selectedSpeaker: deviceManager.selectedSpeaker,\n selectedCamera: deviceManager.selectedCamera\n };\n }\n);\n\nfunction removeBlankNameDevices<T extends { name: string }>(devices: T[]): T[] {\n return devices.filter((device) => device.name !== '');\n}\n\n/* @conditional-compile-remove(PSTN-calls) */\n/**\n * Selector type for the {@link HoldButton} component.\n * @public\n */\nexport type HoldButtonSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n checked: boolean;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */\n/**\n * Selector for the {@link HoldButton} component.\n * @public\n */\nexport const holdButtonSelector: HoldButtonSelector = reselect.createSelector([getCallState], (callState) => {\n return {\n checked: callState === 'LocalHold'\n };\n});\n"]}
@@ -15,7 +15,6 @@ import { toFlatCommunicationIdentifier } from "../../../acs-ui-common/src";
15
15
  import { _toCommunicationIdentifier } from "../../../acs-ui-common/src";
16
16
  import memoizeOne from 'memoize-one';
17
17
  import { disposeAllLocalPreviewViews, _isInCall, _isInLobbyOrConnecting, _isPreviewOn } from '../utils/callUtils';
18
- /* @conditional-compile-remove(video-background-effects) */ /* @conditional-compile-remove(close-captions) */ /* @conditional-compile-remove(raise-hand) */ /* @conditional-compile-remove(end-of-call-survey) */
19
18
  import { Features } from '@azure/communication-calling';
20
19
  /**
21
20
  * @private
@@ -157,11 +156,8 @@ export const createDefaultCommonCallingHandlers = memoizeOne((callClient, device
157
156
  }, options);
158
157
  }
159
158
  });
160
- /* @conditional-compile-remove(raise-hand) */
161
159
  const onRaiseHand = () => __awaiter(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
162
- /* @conditional-compile-remove(raise-hand) */
163
160
  const onLowerHand = () => __awaiter(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
164
- /* @conditional-compile-remove(raise-hand) */
165
161
  const onToggleRaiseHand = () => __awaiter(void 0, void 0, void 0, function* () {
166
162
  const raiseHandFeature = call === null || call === void 0 ? void 0 : call.feature(Features.RaiseHand);
167
163
  const localUserId = callClient.getState().userId;
@@ -447,11 +443,8 @@ export const createDefaultCommonCallingHandlers = memoizeOne((callClient, device
447
443
  onDisposeLocalStreamView,
448
444
  onDisposeRemoteScreenShareStreamView,
449
445
  onDisposeRemoteVideoStreamView,
450
- /* @conditional-compile-remove(raise-hand) */
451
446
  onRaiseHand,
452
- /* @conditional-compile-remove(raise-hand) */
453
447
  onLowerHand,
454
- /* @conditional-compile-remove(raise-hand) */
455
448
  onToggleRaiseHand,
456
449
  /* @conditional-compile-remove(reaction) */
457
450
  onReactionClick: onReactionClick,
@@ -1 +1 @@
1
- {"version":3,"file":"createCommonHandlers.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/handlers/createCommonHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n AudioDeviceInfo,\n Call,\n LocalVideoStream,\n StartCallOptions,\n VideoDeviceInfo,\n BackgroundBlurEffect,\n BackgroundReplacementEffect,\n BackgroundBlurConfig,\n BackgroundReplacementConfig\n} from '@azure/communication-calling';\n/* @conditional-compile-remove(end-of-call-survey) */\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\n/* @conditional-compile-remove(dialpad) */\nimport { DtmfTone } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-identity-support) */\nimport { TeamsCall } from '@azure/communication-calling';\n/* @conditional-compile-remove(call-readiness) */\nimport { PermissionConstraints } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(spotlight) */\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CreateViewResult, StatefulCallClient, StatefulDeviceManager } from '@internal/calling-stateful-client';\nimport memoizeOne from 'memoize-one';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\nimport { disposeAllLocalPreviewViews, _isInCall, _isInLobbyOrConnecting, _isPreviewOn } from '../utils/callUtils';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { CommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { CommunicationIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(video-background-effects) */ /* @conditional-compile-remove(close-captions) */ /* @conditional-compile-remove(raise-hand) */ /* @conditional-compile-remove(end-of-call-survey) */\nimport { Features } from '@azure/communication-calling';\n/* @conditional-compile-remove(close-captions) */\nimport { TeamsCaptions } from '@azure/communication-calling';\n/* @conditional-compile-remove(reaction) */\nimport { Reaction } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { _ComponentCallingHandlers } from './createHandlers';\n\n/**\n * Object containing all the handlers required for calling components.\n *\n * Calling related components from this package are able to pick out relevant handlers from this object.\n * See {@link useHandlers} and {@link usePropsFor}.\n *\n * @public\n */\nexport interface CommonCallingHandlers {\n onStartLocalVideo: () => Promise<void>;\n onToggleCamera: (options?: VideoStreamOptions) => Promise<void>;\n onSelectMicrophone: (device: AudioDeviceInfo) => Promise<void>;\n onSelectSpeaker: (device: AudioDeviceInfo) => Promise<void>;\n onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise<void>;\n onToggleMicrophone: () => Promise<void>;\n onStartScreenShare: () => Promise<void>;\n onStopScreenShare: () => Promise<void>;\n onToggleScreenShare: () => Promise<void>;\n onHangUp: (forEveryone?: boolean) => Promise<void>;\n /* @conditional-compile-remove(raise-hand) */\n onRaiseHand: () => Promise<void>;\n /* @conditional-compile-remove(raise-hand) */\n onLowerHand: () => Promise<void>;\n /* @conditional-compile-remove(raise-hand) */\n onToggleRaiseHand: () => Promise<void>;\n /* @conditional-compile-remove(reaction) */\n /**\n * @beta\n */\n onReactionClick: (reaction: Reaction) => Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold: () => Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant(participant: PhoneNumberIdentifier, options: AddPhoneNumberOptions): Promise<void>;\n onCreateLocalStreamView: (options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;\n onCreateRemoteStreamView: (\n userId: string,\n options?: VideoStreamOptions\n ) => Promise<void | CreateVideoStreamViewResult>;\n /**\n * @deprecated use {@link onDisposeRemoteVideoStreamView} and {@link onDisposeRemoteScreenShareStreamView} instead.\n */\n onDisposeRemoteStreamView: (userId: string) => Promise<void>;\n onDisposeLocalStreamView: () => Promise<void>;\n onDisposeRemoteVideoStreamView: (userId: string) => Promise<void>;\n onDisposeRemoteScreenShareStreamView: (userId: string) => Promise<void>;\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n onSendDtmfTone: (dtmfTone: DtmfTone) => Promise<void>;\n onRemoveParticipant(userId: string): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onRemoveParticipant(participant: CommunicationIdentifier): Promise<void>;\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission: (constrain: PermissionConstraints) => Promise<void>;\n onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => void;\n /* @conditional-compile-remove(video-background-effects) */\n onRemoveVideoBackgroundEffects: () => Promise<void>;\n /* @conditional-compile-remove(video-background-effects) */\n onBlurVideoBackground: (backgroundBlurConfig?: BackgroundBlurConfig) => Promise<void>;\n /* @conditional-compile-remove(video-background-effects) */\n onReplaceVideoBackground: (backgroundReplacementConfig: BackgroundReplacementConfig) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onStartCaptions: (options?: CaptionsOptions) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onStopCaptions: () => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onSetSpokenLanguage: (language: string) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onSetCaptionLanguage: (language: string) => Promise<void>;\n /* @conditional-compile-remove(end-of-call-survey) */\n onSubmitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined>;\n /* @conditional-compile-remove(spotlight) */\n onStartSpotlight: (userIds?: string[]) => Promise<void>;\n /* @conditional-compile-remove(spotlight) */\n onStopSpotlight: (userIds?: string[]) => Promise<void>;\n /* @conditional-compile-remove(spotlight) */\n onStopAllSpotlight: () => Promise<void>;\n}\n\n/**\n * options bag to start captions\n *\n * @public\n */\nexport type CaptionsOptions = {\n spokenLanguage: string;\n};\n\n/**\n * @private\n */\nexport const areStreamsEqual = (prevStream: LocalVideoStream, newStream: LocalVideoStream): boolean => {\n return !!prevStream && !!newStream && prevStream.source.id === newStream.source.id;\n};\n\n/**\n * Dependency type to be injected for video background effects\n *\n * @public\n */\nexport type VideoBackgroundEffectsDependency = {\n createBackgroundBlurEffect: (config?: BackgroundBlurConfig) => BackgroundBlurEffect;\n createBackgroundReplacementEffect: (config: BackgroundReplacementConfig) => BackgroundReplacementEffect;\n};\n\n/**\n * Create the common implementation of {@link CallingHandlers} for all types of Call\n *\n * @private\n */\nexport const createDefaultCommonCallingHandlers = memoizeOne(\n (\n callClient: StatefulCallClient,\n deviceManager: StatefulDeviceManager | undefined,\n call: Call | /* @conditional-compile-remove(teams-identity-support) */ TeamsCall | undefined,\n options?: {\n onResolveVideoBackgroundEffectsDependency?: () => Promise<VideoBackgroundEffectsDependency>;\n }\n ): CommonCallingHandlers & /* @conditional-compile-remove(spotlight) */ Partial<_ComponentCallingHandlers> => {\n const onStartLocalVideo = async (): Promise<void> => {\n // Before the call object creates a stream, dispose of any local preview streams.\n // @TODO: is there any way to parent the unparented view to the call object instead\n // of disposing and creating a new stream?\n await disposeAllLocalPreviewViews(callClient);\n\n const callId = call?.id;\n let videoDeviceInfo = callClient.getState().deviceManager.selectedCamera;\n if (!videoDeviceInfo) {\n const cameras = await deviceManager?.getCameras();\n videoDeviceInfo = cameras && cameras.length > 0 ? cameras[0] : undefined;\n videoDeviceInfo && deviceManager?.selectCamera(videoDeviceInfo);\n }\n if (!callId || !videoDeviceInfo) {\n return;\n }\n const stream = new LocalVideoStream(videoDeviceInfo);\n if (call && !call.localVideoStreams.find((s) => areStreamsEqual(s, stream))) {\n await call.startVideo(stream);\n }\n };\n\n const onStopLocalVideo = async (stream: LocalVideoStream): Promise<void> => {\n const callId = call?.id;\n if (!callId) {\n return;\n }\n if (call && call.localVideoStreams.find((s) => areStreamsEqual(s, stream))) {\n await call.stopVideo(stream);\n }\n };\n\n const onToggleCamera = async (options?: VideoStreamOptions): Promise<void> => {\n const previewOn = _isPreviewOn(callClient.getState().deviceManager);\n\n // the disposal of the unparented views is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.\n // The root cause of the issue is caused by never transitioning the unparented view to the\n // call object when going from configuration page (disconnected call state) to connecting.\n //\n // Currently the only time the local video stream is moved from unparented view to the call\n // object is when we transition from connecting -> call state. If the camera was on,\n // inside the MediaGallery we trigger toggleCamera. This triggers onStartLocalVideo which\n // destroys the unparentedView and creates a new stream in the call - so all looks well.\n //\n // However, if someone turns off their camera during the lobbyOrConnecting screen, the\n // call.localVideoStreams will be empty (as the stream is currently stored in the unparented\n // views and was never transitioned to the call object) and thus we incorrectly try to create\n // a new video stream for the call object, instead of only stopping the unparented view.\n //\n // The correct fix for this is to ensure that callAgent.onStartCall is called with the\n // localvideostream as a videoOption. That will mean call.onLocalVideoStreamsUpdated will\n // be triggered when the call is in connecting state, which we can then transition the\n // local video stream to the stateful call client and get into a clean state.\n\n if (call && (_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {\n const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');\n const unparentedViews = callClient.getState().deviceManager.unparentedViews;\n if (stream || unparentedViews.length > 0) {\n unparentedViews &&\n (await unparentedViews.forEach(\n (view) => view.mediaStreamType === 'Video' && callClient.disposeView(undefined, undefined, view)\n ));\n stream && (await onStopLocalVideo(stream));\n } else {\n await onStartLocalVideo();\n }\n } else {\n /**\n * This will create a unparented view to be used on the configuration page and the connecting screen\n *\n * If the device that the stream will come from is not on from permissions checks, then it will take time\n * to create the stream since device is off. If we are turn the camera on immedietly on the configuration page we see it is\n * fast but that is because the device is already primed to return a stream.\n *\n * On the connecting page the device has already turned off and the connecting window is so small we do not see the resulting\n * unparented view from the code below.\n */\n const selectedCamera = callClient.getState().deviceManager.selectedCamera;\n if (selectedCamera) {\n if (previewOn) {\n await onDisposeLocalStreamView();\n } else {\n await callClient.createView(\n undefined,\n undefined,\n {\n source: selectedCamera,\n mediaStreamType: 'Video'\n },\n options\n );\n }\n }\n }\n };\n\n const onSelectMicrophone = async (device: AudioDeviceInfo): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n return deviceManager.selectMicrophone(device);\n };\n\n const onSelectSpeaker = async (device: AudioDeviceInfo): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n return deviceManager.selectSpeaker(device);\n };\n\n const onSelectCamera = async (device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n if (call && _isInCall(call.state)) {\n deviceManager.selectCamera(device);\n const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');\n await stream?.switchSource(device);\n\n /// TODO: TEMPORARY SOLUTION\n /// The Calling SDK needs to wait until the stream is ready before resolving the switchSource promise.\n /// This is a temporary solution to wait for the stream to be ready before resolving the promise.\n /// This allows the onSelectCamera to be throttled to prevent the streams from getting in to a frozen state\n /// if the user switches cameras too rapidly.\n /// This is to be removed once the Calling SDK has issued a fix.\n await stream?.getMediaStream();\n } else {\n const previewOn = _isPreviewOn(callClient.getState().deviceManager);\n\n if (!previewOn) {\n deviceManager.selectCamera(device);\n return;\n }\n\n await onDisposeLocalStreamView();\n\n deviceManager.selectCamera(device);\n await callClient.createView(\n undefined,\n undefined,\n {\n source: device,\n mediaStreamType: 'Video'\n },\n options\n );\n }\n };\n\n /* @conditional-compile-remove(raise-hand) */\n const onRaiseHand = async (): Promise<void> => await call?.feature(Features.RaiseHand)?.raiseHand();\n\n /* @conditional-compile-remove(raise-hand) */\n const onLowerHand = async (): Promise<void> => await call?.feature(Features.RaiseHand)?.lowerHand();\n\n /* @conditional-compile-remove(raise-hand) */\n const onToggleRaiseHand = async (): Promise<void> => {\n const raiseHandFeature = call?.feature(Features.RaiseHand);\n const localUserId = callClient.getState().userId;\n const isLocalRaisedHand = raiseHandFeature\n ?.getRaisedHands()\n .find(\n (publishedState) =>\n toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId)\n );\n if (isLocalRaisedHand) {\n await raiseHandFeature?.lowerHand();\n } else {\n await raiseHandFeature?.raiseHand();\n }\n };\n\n /* @conditional-compile-remove(reaction) */\n const onReactionClick = async (reaction: Reaction): Promise<void> => {\n if (\n reaction === 'like' ||\n reaction === 'applause' ||\n reaction === 'heart' ||\n reaction === 'laugh' ||\n reaction === 'surprised'\n ) {\n await call?.feature(Features.Reaction)?.sendReaction({ reactionType: reaction });\n } else {\n console.warn(`Can not recognize ${reaction} as meeting reaction`);\n }\n return;\n };\n\n const onToggleMicrophone = async (): Promise<void> => {\n if (!call || !(_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {\n throw new Error(`Please invoke onToggleMicrophone after call is started`);\n }\n return call.isMuted ? await call.unmute() : await call.mute();\n };\n\n const onStartScreenShare = async (): Promise<void> => await call?.startScreenSharing();\n\n const onStopScreenShare = async (): Promise<void> => await call?.stopScreenSharing();\n\n const onToggleScreenShare = async (): Promise<void> =>\n call?.isScreenSharingOn ? await onStopScreenShare() : await onStartScreenShare();\n\n const onHangUp = async (forEveryone?: boolean): Promise<void> =>\n await call?.hangUp({ forEveryone: forEveryone === true ? true : false });\n\n /* @conditional-compile-remove(PSTN-calls) */\n const onToggleHold = async (): Promise<void> =>\n call?.state === 'LocalHold' ? await call?.resume() : await call?.hold();\n\n const onCreateLocalStreamView = async (\n options = { scalingMode: 'Crop', isMirrored: true } as VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> => {\n if (!call || call.localVideoStreams.length === 0) {\n return;\n }\n\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n return;\n }\n\n const localStream = callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');\n if (!localStream) {\n return;\n }\n\n const { view } = (await callClient.createView(call.id, undefined, localStream, options)) ?? {};\n return view ? { view } : undefined;\n };\n\n const onCreateRemoteStreamView = async (\n userId: string,\n options = { scalingMode: 'Crop' } as VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n // Find the first available stream, if there is none, then get the first stream\n const remoteVideoStream =\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video' && i.isAvailable) ||\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n\n const screenShareStream =\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'ScreenSharing' && i.isAvailable) ||\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'ScreenSharing');\n\n let createViewResult: CreateViewResult | undefined = undefined;\n if (remoteVideoStream && remoteVideoStream.isAvailable && !remoteVideoStream.view) {\n createViewResult = await callClient.createView(call.id, participant.identifier, remoteVideoStream, options);\n }\n\n if (screenShareStream && screenShareStream.isAvailable && !screenShareStream.view) {\n // Hardcoded `scalingMode` since it is highly unlikely that CONTOSO would ever want to use a different scaling mode for screenshare.\n // Using `Crop` would crop the contents of screenshare and `Stretch` would warp it.\n // `Fit` is the only mode that maintains the integrity of the screen being shared.\n createViewResult = await callClient.createView(call.id, participant.identifier, screenShareStream, {\n scalingMode: 'Fit'\n });\n }\n\n return createViewResult?.view ? { view: createViewResult?.view } : undefined;\n };\n\n const onDisposeRemoteStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n const remoteVideoStream = Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n const screenShareStream = Object.values(participant.videoStreams).find(\n (i) => i.mediaStreamType === 'ScreenSharing'\n );\n\n if (remoteVideoStream && remoteVideoStream.view) {\n callClient.disposeView(call.id, participant.identifier, remoteVideoStream);\n }\n\n if (screenShareStream && screenShareStream.view) {\n callClient.disposeView(call.id, participant.identifier, screenShareStream);\n }\n };\n\n const onDisposeRemoteVideoStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n const remoteVideoStream = Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n\n if (remoteVideoStream && remoteVideoStream.view) {\n callClient.disposeView(call.id, participant.identifier, remoteVideoStream);\n }\n };\n\n const onDisposeRemoteScreenShareStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n const screenShareStream = Object.values(participant.videoStreams).find(\n (i) => i.mediaStreamType === 'ScreenSharing'\n );\n\n if (screenShareStream && screenShareStream.view) {\n callClient.disposeView(call.id, participant.identifier, screenShareStream);\n }\n };\n\n const onDisposeLocalStreamView = async (): Promise<void> => {\n // If the user is currently in a call, dispose of the local stream view attached to that call.\n const callState = call && callClient.getState().calls[call.id];\n const localStream = callState?.localVideoStreams.find((item) => item.mediaStreamType === 'Video');\n if (call && callState && localStream) {\n callClient.disposeView(call.id, undefined, localStream);\n }\n\n // If the user is not in a call we currently assume any unparented view is a LocalPreview and stop all\n // since those are only used for LocalPreview currently.\n // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.\n await disposeAllLocalPreviewViews(callClient);\n };\n\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n const onSendDtmfTone = async (dtmfTone: DtmfTone): Promise<void> => await call?.sendDtmf(dtmfTone);\n\n const notImplemented = (): any => {\n throw new Error('Not implemented, cannot call a method from an abstract object');\n };\n\n /* @conditional-compile-remove(call-readiness) */\n const askDevicePermission = async (constrain: PermissionConstraints): Promise<void> => {\n if (deviceManager) {\n await deviceManager?.askDevicePermission(constrain);\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onRemoveVideoBackgroundEffects = async (): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n } else {\n return stream.feature(Features.VideoEffects).stopEffects();\n }\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onBlurVideoBackground = async (backgroundBlurConfig?: BackgroundBlurConfig): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n }\n const createEffect =\n options?.onResolveVideoBackgroundEffectsDependency &&\n (await options.onResolveVideoBackgroundEffectsDependency())?.createBackgroundBlurEffect;\n return createEffect && stream.feature(Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onReplaceVideoBackground = async (\n backgroundReplacementConfig: BackgroundReplacementConfig\n ): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n }\n const createEffect =\n options?.onResolveVideoBackgroundEffectsDependency &&\n (await options.onResolveVideoBackgroundEffectsDependency())?.createBackgroundReplacementEffect;\n return (\n createEffect && stream.feature(Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig))\n );\n }\n };\n\n /* @conditional-compile-remove(close-captions) */\n const onStartCaptions = async (options?: CaptionsOptions): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.startCaptions(options);\n };\n /* @conditional-compile-remove(close-captions) */\n const onStopCaptions = async (): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.stopCaptions();\n };\n /* @conditional-compile-remove(close-captions) */\n const onSetSpokenLanguage = async (language: string): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.setSpokenLanguage(language);\n };\n /* @conditional-compile-remove(close-captions) */\n const onSetCaptionLanguage = async (language: string): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions as TeamsCaptions;\n await captionsFeature.setCaptionLanguage(language);\n };\n /* @conditional-compile-remove(end-of-call-survey) */\n const onSubmitSurvey = async (survey: CallSurvey): Promise<CallSurveyResponse | undefined> =>\n await call?.feature(Features.CallSurvey).submitSurvey(survey);\n /* @conditional-compile-remove(spotlight) */\n const onStartSpotlight = async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).startSpotlight(participants);\n };\n /* @conditional-compile-remove(spotlight) */\n const onStopSpotlight = async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).stopSpotlight(participants);\n };\n /* @conditional-compile-remove(spotlight) */\n const onStopAllSpotlight = async (): Promise<void> => {\n await call?.feature(Features.Spotlight).stopAllSpotlight();\n };\n /* @conditional-compile-remove(spotlight) */\n const canSpotlight = call?.feature(Features.Capabilities).capabilities.spotlightParticipant.isPresent;\n /* @conditional-compile-remove(spotlight) */\n const onStartLocalSpotlight = canSpotlight\n ? async (): Promise<void> => {\n await call?.feature(Features.Spotlight).startSpotlight();\n }\n : undefined;\n /* @conditional-compile-remove(spotlight) */\n const onStopLocalSpotlight = async (): Promise<void> => {\n await call?.feature(Features.Spotlight).stopSpotlight();\n };\n /* @conditional-compile-remove(spotlight) */\n const onStartRemoteSpotlight = canSpotlight\n ? async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).startSpotlight(participants);\n }\n : undefined;\n /* @conditional-compile-remove(spotlight) */\n const onStopRemoteSpotlight = canSpotlight\n ? async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).stopSpotlight(participants);\n }\n : undefined;\n\n return {\n onHangUp,\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold,\n onSelectCamera,\n onSelectMicrophone,\n onSelectSpeaker,\n onStartScreenShare,\n onStopScreenShare,\n onToggleCamera,\n onToggleMicrophone,\n onToggleScreenShare,\n onCreateLocalStreamView,\n onCreateRemoteStreamView,\n onStartLocalVideo,\n onDisposeRemoteStreamView,\n onDisposeLocalStreamView,\n onDisposeRemoteScreenShareStreamView,\n onDisposeRemoteVideoStreamView,\n /* @conditional-compile-remove(raise-hand) */\n onRaiseHand,\n /* @conditional-compile-remove(raise-hand) */\n onLowerHand,\n /* @conditional-compile-remove(raise-hand) */\n onToggleRaiseHand,\n /* @conditional-compile-remove(reaction) */\n onReactionClick: onReactionClick,\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant: notImplemented,\n onRemoveParticipant: notImplemented,\n onStartCall: notImplemented,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ onSendDtmfTone,\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission,\n /* @conditional-compile-remove(video-background-effects) */\n onRemoveVideoBackgroundEffects,\n /* @conditional-compile-remove(video-background-effects) */\n onBlurVideoBackground,\n /* @conditional-compile-remove(video-background-effects) */\n onReplaceVideoBackground,\n /* @conditional-compile-remove(close-captions) */\n onStartCaptions,\n /* @conditional-compile-remove(close-captions) */\n onStopCaptions,\n /* @conditional-compile-remove(close-captions) */\n onSetCaptionLanguage,\n /* @conditional-compile-remove(close-captions) */\n onSetSpokenLanguage,\n /* @conditional-compile-remove(end-of-call-survey) */\n onSubmitSurvey,\n /* @conditional-compile-remove(spotlight) */\n onStartSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopAllSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStartLocalSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopLocalSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStartRemoteSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopRemoteSpotlight\n };\n }\n);\n"]}
1
+ {"version":3,"file":"createCommonHandlers.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/handlers/createCommonHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n AudioDeviceInfo,\n Call,\n LocalVideoStream,\n StartCallOptions,\n VideoDeviceInfo,\n BackgroundBlurEffect,\n BackgroundReplacementEffect,\n BackgroundBlurConfig,\n BackgroundReplacementConfig\n} from '@azure/communication-calling';\n/* @conditional-compile-remove(end-of-call-survey) */\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\n/* @conditional-compile-remove(dialpad) */\nimport { DtmfTone } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-identity-support) */\nimport { TeamsCall } from '@azure/communication-calling';\n/* @conditional-compile-remove(call-readiness) */\nimport { PermissionConstraints } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(spotlight) */\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CreateViewResult, StatefulCallClient, StatefulDeviceManager } from '@internal/calling-stateful-client';\nimport memoizeOne from 'memoize-one';\nimport { CreateVideoStreamViewResult, VideoStreamOptions } from '@internal/react-components';\nimport { disposeAllLocalPreviewViews, _isInCall, _isInLobbyOrConnecting, _isPreviewOn } from '../utils/callUtils';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { CommunicationUserIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { CommunicationIdentifier } from '@azure/communication-common';\nimport { Features } from '@azure/communication-calling';\n/* @conditional-compile-remove(close-captions) */\nimport { TeamsCaptions } from '@azure/communication-calling';\n/* @conditional-compile-remove(reaction) */\nimport { Reaction } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { _ComponentCallingHandlers } from './createHandlers';\n\n/**\n * Object containing all the handlers required for calling components.\n *\n * Calling related components from this package are able to pick out relevant handlers from this object.\n * See {@link useHandlers} and {@link usePropsFor}.\n *\n * @public\n */\nexport interface CommonCallingHandlers {\n onStartLocalVideo: () => Promise<void>;\n onToggleCamera: (options?: VideoStreamOptions) => Promise<void>;\n onSelectMicrophone: (device: AudioDeviceInfo) => Promise<void>;\n onSelectSpeaker: (device: AudioDeviceInfo) => Promise<void>;\n onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise<void>;\n onToggleMicrophone: () => Promise<void>;\n onStartScreenShare: () => Promise<void>;\n onStopScreenShare: () => Promise<void>;\n onToggleScreenShare: () => Promise<void>;\n onHangUp: (forEveryone?: boolean) => Promise<void>;\n onRaiseHand: () => Promise<void>;\n onLowerHand: () => Promise<void>;\n onToggleRaiseHand: () => Promise<void>;\n /* @conditional-compile-remove(reaction) */\n /**\n * @beta\n */\n onReactionClick: (reaction: Reaction) => Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold: () => Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant(participant: CommunicationUserIdentifier): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant(participant: PhoneNumberIdentifier, options: AddPhoneNumberOptions): Promise<void>;\n onCreateLocalStreamView: (options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;\n onCreateRemoteStreamView: (\n userId: string,\n options?: VideoStreamOptions\n ) => Promise<void | CreateVideoStreamViewResult>;\n /**\n * @deprecated use {@link onDisposeRemoteVideoStreamView} and {@link onDisposeRemoteScreenShareStreamView} instead.\n */\n onDisposeRemoteStreamView: (userId: string) => Promise<void>;\n onDisposeLocalStreamView: () => Promise<void>;\n onDisposeRemoteVideoStreamView: (userId: string) => Promise<void>;\n onDisposeRemoteScreenShareStreamView: (userId: string) => Promise<void>;\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n onSendDtmfTone: (dtmfTone: DtmfTone) => Promise<void>;\n onRemoveParticipant(userId: string): Promise<void>;\n /* @conditional-compile-remove(PSTN-calls) */\n onRemoveParticipant(participant: CommunicationIdentifier): Promise<void>;\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission: (constrain: PermissionConstraints) => Promise<void>;\n onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => void;\n /* @conditional-compile-remove(video-background-effects) */\n onRemoveVideoBackgroundEffects: () => Promise<void>;\n /* @conditional-compile-remove(video-background-effects) */\n onBlurVideoBackground: (backgroundBlurConfig?: BackgroundBlurConfig) => Promise<void>;\n /* @conditional-compile-remove(video-background-effects) */\n onReplaceVideoBackground: (backgroundReplacementConfig: BackgroundReplacementConfig) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onStartCaptions: (options?: CaptionsOptions) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onStopCaptions: () => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onSetSpokenLanguage: (language: string) => Promise<void>;\n /* @conditional-compile-remove(close-captions) */\n onSetCaptionLanguage: (language: string) => Promise<void>;\n /* @conditional-compile-remove(end-of-call-survey) */\n onSubmitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined>;\n /* @conditional-compile-remove(spotlight) */\n onStartSpotlight: (userIds?: string[]) => Promise<void>;\n /* @conditional-compile-remove(spotlight) */\n onStopSpotlight: (userIds?: string[]) => Promise<void>;\n /* @conditional-compile-remove(spotlight) */\n onStopAllSpotlight: () => Promise<void>;\n}\n\n/**\n * options bag to start captions\n *\n * @public\n */\nexport type CaptionsOptions = {\n spokenLanguage: string;\n};\n\n/**\n * @private\n */\nexport const areStreamsEqual = (prevStream: LocalVideoStream, newStream: LocalVideoStream): boolean => {\n return !!prevStream && !!newStream && prevStream.source.id === newStream.source.id;\n};\n\n/**\n * Dependency type to be injected for video background effects\n *\n * @public\n */\nexport type VideoBackgroundEffectsDependency = {\n createBackgroundBlurEffect: (config?: BackgroundBlurConfig) => BackgroundBlurEffect;\n createBackgroundReplacementEffect: (config: BackgroundReplacementConfig) => BackgroundReplacementEffect;\n};\n\n/**\n * Create the common implementation of {@link CallingHandlers} for all types of Call\n *\n * @private\n */\nexport const createDefaultCommonCallingHandlers = memoizeOne(\n (\n callClient: StatefulCallClient,\n deviceManager: StatefulDeviceManager | undefined,\n call: Call | /* @conditional-compile-remove(teams-identity-support) */ TeamsCall | undefined,\n options?: {\n onResolveVideoBackgroundEffectsDependency?: () => Promise<VideoBackgroundEffectsDependency>;\n }\n ): CommonCallingHandlers & /* @conditional-compile-remove(spotlight) */ Partial<_ComponentCallingHandlers> => {\n const onStartLocalVideo = async (): Promise<void> => {\n // Before the call object creates a stream, dispose of any local preview streams.\n // @TODO: is there any way to parent the unparented view to the call object instead\n // of disposing and creating a new stream?\n await disposeAllLocalPreviewViews(callClient);\n\n const callId = call?.id;\n let videoDeviceInfo = callClient.getState().deviceManager.selectedCamera;\n if (!videoDeviceInfo) {\n const cameras = await deviceManager?.getCameras();\n videoDeviceInfo = cameras && cameras.length > 0 ? cameras[0] : undefined;\n videoDeviceInfo && deviceManager?.selectCamera(videoDeviceInfo);\n }\n if (!callId || !videoDeviceInfo) {\n return;\n }\n const stream = new LocalVideoStream(videoDeviceInfo);\n if (call && !call.localVideoStreams.find((s) => areStreamsEqual(s, stream))) {\n await call.startVideo(stream);\n }\n };\n\n const onStopLocalVideo = async (stream: LocalVideoStream): Promise<void> => {\n const callId = call?.id;\n if (!callId) {\n return;\n }\n if (call && call.localVideoStreams.find((s) => areStreamsEqual(s, stream))) {\n await call.stopVideo(stream);\n }\n };\n\n const onToggleCamera = async (options?: VideoStreamOptions): Promise<void> => {\n const previewOn = _isPreviewOn(callClient.getState().deviceManager);\n\n // the disposal of the unparented views is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.\n // The root cause of the issue is caused by never transitioning the unparented view to the\n // call object when going from configuration page (disconnected call state) to connecting.\n //\n // Currently the only time the local video stream is moved from unparented view to the call\n // object is when we transition from connecting -> call state. If the camera was on,\n // inside the MediaGallery we trigger toggleCamera. This triggers onStartLocalVideo which\n // destroys the unparentedView and creates a new stream in the call - so all looks well.\n //\n // However, if someone turns off their camera during the lobbyOrConnecting screen, the\n // call.localVideoStreams will be empty (as the stream is currently stored in the unparented\n // views and was never transitioned to the call object) and thus we incorrectly try to create\n // a new video stream for the call object, instead of only stopping the unparented view.\n //\n // The correct fix for this is to ensure that callAgent.onStartCall is called with the\n // localvideostream as a videoOption. That will mean call.onLocalVideoStreamsUpdated will\n // be triggered when the call is in connecting state, which we can then transition the\n // local video stream to the stateful call client and get into a clean state.\n\n if (call && (_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {\n const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');\n const unparentedViews = callClient.getState().deviceManager.unparentedViews;\n if (stream || unparentedViews.length > 0) {\n unparentedViews &&\n (await unparentedViews.forEach(\n (view) => view.mediaStreamType === 'Video' && callClient.disposeView(undefined, undefined, view)\n ));\n stream && (await onStopLocalVideo(stream));\n } else {\n await onStartLocalVideo();\n }\n } else {\n /**\n * This will create a unparented view to be used on the configuration page and the connecting screen\n *\n * If the device that the stream will come from is not on from permissions checks, then it will take time\n * to create the stream since device is off. If we are turn the camera on immedietly on the configuration page we see it is\n * fast but that is because the device is already primed to return a stream.\n *\n * On the connecting page the device has already turned off and the connecting window is so small we do not see the resulting\n * unparented view from the code below.\n */\n const selectedCamera = callClient.getState().deviceManager.selectedCamera;\n if (selectedCamera) {\n if (previewOn) {\n await onDisposeLocalStreamView();\n } else {\n await callClient.createView(\n undefined,\n undefined,\n {\n source: selectedCamera,\n mediaStreamType: 'Video'\n },\n options\n );\n }\n }\n }\n };\n\n const onSelectMicrophone = async (device: AudioDeviceInfo): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n return deviceManager.selectMicrophone(device);\n };\n\n const onSelectSpeaker = async (device: AudioDeviceInfo): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n return deviceManager.selectSpeaker(device);\n };\n\n const onSelectCamera = async (device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void> => {\n if (!deviceManager) {\n return;\n }\n if (call && _isInCall(call.state)) {\n deviceManager.selectCamera(device);\n const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');\n await stream?.switchSource(device);\n\n /// TODO: TEMPORARY SOLUTION\n /// The Calling SDK needs to wait until the stream is ready before resolving the switchSource promise.\n /// This is a temporary solution to wait for the stream to be ready before resolving the promise.\n /// This allows the onSelectCamera to be throttled to prevent the streams from getting in to a frozen state\n /// if the user switches cameras too rapidly.\n /// This is to be removed once the Calling SDK has issued a fix.\n await stream?.getMediaStream();\n } else {\n const previewOn = _isPreviewOn(callClient.getState().deviceManager);\n\n if (!previewOn) {\n deviceManager.selectCamera(device);\n return;\n }\n\n await onDisposeLocalStreamView();\n\n deviceManager.selectCamera(device);\n await callClient.createView(\n undefined,\n undefined,\n {\n source: device,\n mediaStreamType: 'Video'\n },\n options\n );\n }\n };\n\n const onRaiseHand = async (): Promise<void> => await call?.feature(Features.RaiseHand)?.raiseHand();\n\n const onLowerHand = async (): Promise<void> => await call?.feature(Features.RaiseHand)?.lowerHand();\n\n const onToggleRaiseHand = async (): Promise<void> => {\n const raiseHandFeature = call?.feature(Features.RaiseHand);\n const localUserId = callClient.getState().userId;\n const isLocalRaisedHand = raiseHandFeature\n ?.getRaisedHands()\n .find(\n (publishedState) =>\n toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId)\n );\n if (isLocalRaisedHand) {\n await raiseHandFeature?.lowerHand();\n } else {\n await raiseHandFeature?.raiseHand();\n }\n };\n\n /* @conditional-compile-remove(reaction) */\n const onReactionClick = async (reaction: Reaction): Promise<void> => {\n if (\n reaction === 'like' ||\n reaction === 'applause' ||\n reaction === 'heart' ||\n reaction === 'laugh' ||\n reaction === 'surprised'\n ) {\n await call?.feature(Features.Reaction)?.sendReaction({ reactionType: reaction });\n } else {\n console.warn(`Can not recognize ${reaction} as meeting reaction`);\n }\n return;\n };\n\n const onToggleMicrophone = async (): Promise<void> => {\n if (!call || !(_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {\n throw new Error(`Please invoke onToggleMicrophone after call is started`);\n }\n return call.isMuted ? await call.unmute() : await call.mute();\n };\n\n const onStartScreenShare = async (): Promise<void> => await call?.startScreenSharing();\n\n const onStopScreenShare = async (): Promise<void> => await call?.stopScreenSharing();\n\n const onToggleScreenShare = async (): Promise<void> =>\n call?.isScreenSharingOn ? await onStopScreenShare() : await onStartScreenShare();\n\n const onHangUp = async (forEveryone?: boolean): Promise<void> =>\n await call?.hangUp({ forEveryone: forEveryone === true ? true : false });\n\n /* @conditional-compile-remove(PSTN-calls) */\n const onToggleHold = async (): Promise<void> =>\n call?.state === 'LocalHold' ? await call?.resume() : await call?.hold();\n\n const onCreateLocalStreamView = async (\n options = { scalingMode: 'Crop', isMirrored: true } as VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> => {\n if (!call || call.localVideoStreams.length === 0) {\n return;\n }\n\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n return;\n }\n\n const localStream = callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');\n if (!localStream) {\n return;\n }\n\n const { view } = (await callClient.createView(call.id, undefined, localStream, options)) ?? {};\n return view ? { view } : undefined;\n };\n\n const onCreateRemoteStreamView = async (\n userId: string,\n options = { scalingMode: 'Crop' } as VideoStreamOptions\n ): Promise<void | CreateVideoStreamViewResult> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n // Find the first available stream, if there is none, then get the first stream\n const remoteVideoStream =\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video' && i.isAvailable) ||\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n\n const screenShareStream =\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'ScreenSharing' && i.isAvailable) ||\n Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'ScreenSharing');\n\n let createViewResult: CreateViewResult | undefined = undefined;\n if (remoteVideoStream && remoteVideoStream.isAvailable && !remoteVideoStream.view) {\n createViewResult = await callClient.createView(call.id, participant.identifier, remoteVideoStream, options);\n }\n\n if (screenShareStream && screenShareStream.isAvailable && !screenShareStream.view) {\n // Hardcoded `scalingMode` since it is highly unlikely that CONTOSO would ever want to use a different scaling mode for screenshare.\n // Using `Crop` would crop the contents of screenshare and `Stretch` would warp it.\n // `Fit` is the only mode that maintains the integrity of the screen being shared.\n createViewResult = await callClient.createView(call.id, participant.identifier, screenShareStream, {\n scalingMode: 'Fit'\n });\n }\n\n return createViewResult?.view ? { view: createViewResult?.view } : undefined;\n };\n\n const onDisposeRemoteStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n const remoteVideoStream = Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n const screenShareStream = Object.values(participant.videoStreams).find(\n (i) => i.mediaStreamType === 'ScreenSharing'\n );\n\n if (remoteVideoStream && remoteVideoStream.view) {\n callClient.disposeView(call.id, participant.identifier, remoteVideoStream);\n }\n\n if (screenShareStream && screenShareStream.view) {\n callClient.disposeView(call.id, participant.identifier, screenShareStream);\n }\n };\n\n const onDisposeRemoteVideoStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n\n const remoteVideoStream = Object.values(participant.videoStreams).find((i) => i.mediaStreamType === 'Video');\n\n if (remoteVideoStream && remoteVideoStream.view) {\n callClient.disposeView(call.id, participant.identifier, remoteVideoStream);\n }\n };\n\n const onDisposeRemoteScreenShareStreamView = async (userId: string): Promise<void> => {\n if (!call) {\n return;\n }\n const callState = callClient.getState().calls[call.id];\n if (!callState) {\n throw new Error(`Call Not Found: ${call.id}`);\n }\n const participant = Object.values(callState.remoteParticipants).find(\n (participant) => toFlatCommunicationIdentifier(participant.identifier) === userId\n );\n\n if (!participant || !participant.videoStreams) {\n return;\n }\n const screenShareStream = Object.values(participant.videoStreams).find(\n (i) => i.mediaStreamType === 'ScreenSharing'\n );\n\n if (screenShareStream && screenShareStream.view) {\n callClient.disposeView(call.id, participant.identifier, screenShareStream);\n }\n };\n\n const onDisposeLocalStreamView = async (): Promise<void> => {\n // If the user is currently in a call, dispose of the local stream view attached to that call.\n const callState = call && callClient.getState().calls[call.id];\n const localStream = callState?.localVideoStreams.find((item) => item.mediaStreamType === 'Video');\n if (call && callState && localStream) {\n callClient.disposeView(call.id, undefined, localStream);\n }\n\n // If the user is not in a call we currently assume any unparented view is a LocalPreview and stop all\n // since those are only used for LocalPreview currently.\n // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.\n await disposeAllLocalPreviewViews(callClient);\n };\n\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n const onSendDtmfTone = async (dtmfTone: DtmfTone): Promise<void> => await call?.sendDtmf(dtmfTone);\n\n const notImplemented = (): any => {\n throw new Error('Not implemented, cannot call a method from an abstract object');\n };\n\n /* @conditional-compile-remove(call-readiness) */\n const askDevicePermission = async (constrain: PermissionConstraints): Promise<void> => {\n if (deviceManager) {\n await deviceManager?.askDevicePermission(constrain);\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onRemoveVideoBackgroundEffects = async (): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n } else {\n return stream.feature(Features.VideoEffects).stopEffects();\n }\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onBlurVideoBackground = async (backgroundBlurConfig?: BackgroundBlurConfig): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n }\n const createEffect =\n options?.onResolveVideoBackgroundEffectsDependency &&\n (await options.onResolveVideoBackgroundEffectsDependency())?.createBackgroundBlurEffect;\n return createEffect && stream.feature(Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));\n }\n };\n\n /* @conditional-compile-remove(video-background-effects) */\n const onReplaceVideoBackground = async (\n backgroundReplacementConfig: BackgroundReplacementConfig\n ): Promise<void> => {\n const stream =\n call?.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video') ||\n deviceManager?.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video');\n if (stream) {\n if (!options?.onResolveVideoBackgroundEffectsDependency) {\n throw new Error(`Video background effects dependency not resolved`);\n }\n const createEffect =\n options?.onResolveVideoBackgroundEffectsDependency &&\n (await options.onResolveVideoBackgroundEffectsDependency())?.createBackgroundReplacementEffect;\n return (\n createEffect && stream.feature(Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig))\n );\n }\n };\n\n /* @conditional-compile-remove(close-captions) */\n const onStartCaptions = async (options?: CaptionsOptions): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.startCaptions(options);\n };\n /* @conditional-compile-remove(close-captions) */\n const onStopCaptions = async (): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.stopCaptions();\n };\n /* @conditional-compile-remove(close-captions) */\n const onSetSpokenLanguage = async (language: string): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions;\n await captionsFeature?.setSpokenLanguage(language);\n };\n /* @conditional-compile-remove(close-captions) */\n const onSetCaptionLanguage = async (language: string): Promise<void> => {\n const captionsFeature = call?.feature(Features.Captions).captions as TeamsCaptions;\n await captionsFeature.setCaptionLanguage(language);\n };\n /* @conditional-compile-remove(end-of-call-survey) */\n const onSubmitSurvey = async (survey: CallSurvey): Promise<CallSurveyResponse | undefined> =>\n await call?.feature(Features.CallSurvey).submitSurvey(survey);\n /* @conditional-compile-remove(spotlight) */\n const onStartSpotlight = async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).startSpotlight(participants);\n };\n /* @conditional-compile-remove(spotlight) */\n const onStopSpotlight = async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).stopSpotlight(participants);\n };\n /* @conditional-compile-remove(spotlight) */\n const onStopAllSpotlight = async (): Promise<void> => {\n await call?.feature(Features.Spotlight).stopAllSpotlight();\n };\n /* @conditional-compile-remove(spotlight) */\n const canSpotlight = call?.feature(Features.Capabilities).capabilities.spotlightParticipant.isPresent;\n /* @conditional-compile-remove(spotlight) */\n const onStartLocalSpotlight = canSpotlight\n ? async (): Promise<void> => {\n await call?.feature(Features.Spotlight).startSpotlight();\n }\n : undefined;\n /* @conditional-compile-remove(spotlight) */\n const onStopLocalSpotlight = async (): Promise<void> => {\n await call?.feature(Features.Spotlight).stopSpotlight();\n };\n /* @conditional-compile-remove(spotlight) */\n const onStartRemoteSpotlight = canSpotlight\n ? async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).startSpotlight(participants);\n }\n : undefined;\n /* @conditional-compile-remove(spotlight) */\n const onStopRemoteSpotlight = canSpotlight\n ? async (userIds?: string[]): Promise<void> => {\n const participants = userIds?.map((userId) => _toCommunicationIdentifier(userId));\n await call?.feature(Features.Spotlight).stopSpotlight(participants);\n }\n : undefined;\n\n return {\n onHangUp,\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold,\n onSelectCamera,\n onSelectMicrophone,\n onSelectSpeaker,\n onStartScreenShare,\n onStopScreenShare,\n onToggleCamera,\n onToggleMicrophone,\n onToggleScreenShare,\n onCreateLocalStreamView,\n onCreateRemoteStreamView,\n onStartLocalVideo,\n onDisposeRemoteStreamView,\n onDisposeLocalStreamView,\n onDisposeRemoteScreenShareStreamView,\n onDisposeRemoteVideoStreamView,\n onRaiseHand,\n onLowerHand,\n onToggleRaiseHand,\n /* @conditional-compile-remove(reaction) */\n onReactionClick: onReactionClick,\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant: notImplemented,\n onRemoveParticipant: notImplemented,\n onStartCall: notImplemented,\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ onSendDtmfTone,\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission,\n /* @conditional-compile-remove(video-background-effects) */\n onRemoveVideoBackgroundEffects,\n /* @conditional-compile-remove(video-background-effects) */\n onBlurVideoBackground,\n /* @conditional-compile-remove(video-background-effects) */\n onReplaceVideoBackground,\n /* @conditional-compile-remove(close-captions) */\n onStartCaptions,\n /* @conditional-compile-remove(close-captions) */\n onStopCaptions,\n /* @conditional-compile-remove(close-captions) */\n onSetCaptionLanguage,\n /* @conditional-compile-remove(close-captions) */\n onSetSpokenLanguage,\n /* @conditional-compile-remove(end-of-call-survey) */\n onSubmitSurvey,\n /* @conditional-compile-remove(spotlight) */\n onStartSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopAllSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStartLocalSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopLocalSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStartRemoteSpotlight,\n /* @conditional-compile-remove(spotlight) */\n onStopRemoteSpotlight\n };\n }\n);\n"]}
@@ -5,9 +5,7 @@ import { CameraButton, EndCallButton, ErrorBar, MicrophoneButton, DevicesButton,
5
5
  import { Dialpad } from "../../../react-components/src";
6
6
  /* @conditional-compile-remove(PSTN-calls) */
7
7
  import { HoldButton } from "../../../react-components/src";
8
- /* @conditional-compile-remove(raise-hand) */
9
8
  import { RaiseHandButton } from "../../../react-components/src";
10
- /* @conditional-compile-remove(raise-hand) */
11
9
  import { raiseHandButtonSelector } from '../callControlSelectors';
12
10
  import { cameraButtonSelector, microphoneButtonSelector, devicesButtonSelector, screenShareButtonSelector } from '../callControlSelectors';
13
11
  /* @conditional-compile-remove(PSTN-calls) */
@@ -65,10 +63,6 @@ export const getSelector = (component) => {
65
63
  if (component === HoldButton) {
66
64
  return findConditionalCompiledSelector(component);
67
65
  }
68
- /* @conditional-compile-remove(raise-hand) */
69
- if (component === RaiseHandButton) {
70
- return findConditionalCompiledSelector(component);
71
- }
72
66
  /* @conditional-compile-remove(reaction) */
73
67
  if (component === ReactionButton) {
74
68
  return findConditionalCompiledSelector(component);
@@ -100,20 +94,18 @@ const findSelector = (component) => {
100
94
  return emptySelector;
101
95
  case ErrorBar:
102
96
  return errorBarSelector;
97
+ case RaiseHandButton:
98
+ return raiseHandButtonSelector;
103
99
  }
104
100
  return undefined;
105
101
  };
106
- /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */
102
+ /* @conditional-compile-remove(PSTN-calls) */
107
103
  const findConditionalCompiledSelector = (component) => {
108
104
  switch (component) {
109
105
  /* @conditional-compile-remove(PSTN-calls) */
110
106
  case HoldButton:
111
107
  /* @conditional-compile-remove(PSTN-calls) */
112
108
  return holdButtonSelector;
113
- /* @conditional-compile-remove(raise-hand) */
114
- case RaiseHandButton:
115
- /* @conditional-compile-remove(raise-hand) */
116
- return raiseHandButtonSelector;
117
109
  /* @conditional-compile-remove(reaction) */
118
110
  case ReactionButton:
119
111
  /* @conditional-compile-remove(reaction) */
@@ -1 +1 @@
1
- {"version":3,"file":"usePropsFor.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/hooks/usePropsFor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n CameraButton,\n EndCallButton,\n ErrorBar,\n MicrophoneButton,\n DevicesButton,\n ParticipantList,\n ScreenShareButton,\n VideoGallery\n} from '@internal/react-components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Dialpad } from '@internal/react-components';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { HoldButton } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaiseHandButton } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { raiseHandButtonSelector } from '../callControlSelectors';\nimport {\n CameraButtonSelector,\n cameraButtonSelector,\n MicrophoneButtonSelector,\n microphoneButtonSelector,\n DevicesButtonSelector,\n devicesButtonSelector,\n ScreenShareButtonSelector,\n screenShareButtonSelector\n} from '../callControlSelectors';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { holdButtonSelector, HoldButtonSelector } from '../callControlSelectors';\nimport { VideoGallerySelector, videoGallerySelector } from '../videoGallerySelector';\nimport { ParticipantListSelector, participantListSelector } from '../participantListSelector';\nimport { ParticipantsButtonSelector, participantsButtonSelector } from '../participantsButtonSelector';\nimport { useHandlers } from './useHandlers';\nimport { useSelector } from './useSelector';\nimport { Common } from '@internal/acs-ui-common';\nimport { AreEqual } from '@internal/acs-ui-common';\nimport { ParticipantsButton } from '@internal/react-components';\nimport { ErrorBarSelector, errorBarSelector } from '../errorBarSelector';\nimport { CommonCallingHandlers } from '../handlers/createCommonHandlers';\n/* @conditional-compile-remove(reaction) */\nimport { reactionButtonSelector } from '../callControlSelectors';\n/* @conditional-compile-remove(reaction) */\nimport { ReactionButton } from '@internal/react-components';\n/* @conditional-compile-remove(spotlight) */\nimport { _ComponentCallingHandlers } from '../handlers/createHandlers';\n\n/**\n * Primary hook to get all hooks necessary for a calling Component.\n *\n * Most straightforward usage of calling components looks like:\n *\n * @example\n * ```\n * import { ParticipantList, usePropsFor } from '@azure/communication-react';\n *\n * const App = (): JSX.Element => {\n * // ... code to setup Providers ...\n *\n * return <ParticipantList {...usePropsFor(ParticipantList)}/>\n * }\n * ```\n *\n * @public\n */\nexport const usePropsFor = <Component extends (props: any) => JSX.Element>(\n component: Component\n): GetSelector<Component> extends (props: any) => any\n ? ReturnType<GetSelector<Component>> &\n Common<\n CommonCallingHandlers & /* @conditional-compile-remove(spotlight) */ _ComponentCallingHandlers,\n Parameters<Component>[0]\n >\n : undefined => {\n const selector = getSelector(component);\n const props = useSelector(selector);\n const handlers = useHandlers<Parameters<Component>[0]>(component);\n if (props !== undefined) {\n return { ...props, ...handlers } as any;\n }\n return undefined as any;\n};\n\n/**\n * A type for trivial selectors that return no data.\n *\n * Used as a default return value if {@link usePropsFor} is called for a component that requires no data.\n *\n * @public\n */\nexport type EmptySelector = () => Record<string, never>;\n\nconst emptySelector: EmptySelector = (): Record<string, never> => ({});\n\n/**\n * Specific type of the selector applicable to a given Component.\n *\n * @public\n */\nexport type GetSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<\n Component,\n typeof VideoGallery\n> extends true\n ? VideoGallerySelector\n : AreEqual<Component, typeof DevicesButton> extends true\n ? DevicesButtonSelector\n : AreEqual<Component, typeof MicrophoneButton> extends true\n ? MicrophoneButtonSelector\n : AreEqual<Component, typeof CameraButton> extends true\n ? CameraButtonSelector\n : AreEqual<Component, typeof ScreenShareButton> extends true\n ? ScreenShareButtonSelector\n : AreEqual<Component, typeof ParticipantList> extends true\n ? ParticipantListSelector\n : AreEqual<Component, typeof ParticipantsButton> extends true\n ? ParticipantsButtonSelector\n : AreEqual<Component, typeof EndCallButton> extends true\n ? EmptySelector\n : AreEqual<Component, typeof ErrorBar> extends true\n ? ErrorBarSelector\n : AreEqual<Component, typeof Dialpad> extends true\n ? /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ EmptySelector\n : AreEqual<Component, typeof HoldButton> extends true\n ? /* @conditional-compile-remove(PSTN-calls) */ HoldButtonSelector\n : undefined;\n\n/**\n * Get the selector for a specified component.\n *\n * Useful when implementing a custom component that utilizes the providers\n * exported from this library.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getSelector = <Component extends (props: any) => JSX.Element | undefined>(\n component: Component\n): GetSelector<Component> => {\n /* @conditional-compile-remove(PSTN-calls) */\n if (component === HoldButton) {\n return findConditionalCompiledSelector(component);\n }\n /* @conditional-compile-remove(raise-hand) */\n if (component === RaiseHandButton) {\n return findConditionalCompiledSelector(component);\n }\n /* @conditional-compile-remove(reaction) */\n if (component === ReactionButton) {\n return findConditionalCompiledSelector(component);\n }\n return findSelector(component);\n};\n\nconst findSelector = (component: (props: any) => JSX.Element | undefined): any => {\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector\n if (component === Dialpad) {\n return emptySelector;\n }\n\n switch (component) {\n case VideoGallery:\n return videoGallerySelector;\n case MicrophoneButton:\n return microphoneButtonSelector;\n case CameraButton:\n return cameraButtonSelector;\n case ScreenShareButton:\n return screenShareButtonSelector;\n case DevicesButton:\n return devicesButtonSelector;\n case ParticipantList:\n return participantListSelector;\n case ParticipantsButton:\n return participantsButtonSelector;\n case EndCallButton:\n return emptySelector;\n case ErrorBar:\n return errorBarSelector;\n }\n return undefined;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */\nconst findConditionalCompiledSelector = (component: (props: any) => JSX.Element | undefined): any => {\n switch (component) {\n /* @conditional-compile-remove(PSTN-calls) */\n case HoldButton:\n /* @conditional-compile-remove(PSTN-calls) */\n return holdButtonSelector;\n /* @conditional-compile-remove(raise-hand) */\n case RaiseHandButton:\n /* @conditional-compile-remove(raise-hand) */\n return raiseHandButtonSelector;\n /* @conditional-compile-remove(reaction) */\n case ReactionButton:\n /* @conditional-compile-remove(reaction) */\n return reactionButtonSelector;\n }\n};\n"]}
1
+ {"version":3,"file":"usePropsFor.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/hooks/usePropsFor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n CameraButton,\n EndCallButton,\n ErrorBar,\n MicrophoneButton,\n DevicesButton,\n ParticipantList,\n ScreenShareButton,\n VideoGallery\n} from '@internal/react-components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Dialpad } from '@internal/react-components';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { HoldButton } from '@internal/react-components';\nimport { RaiseHandButton } from '@internal/react-components';\nimport { raiseHandButtonSelector } from '../callControlSelectors';\nimport {\n CameraButtonSelector,\n cameraButtonSelector,\n MicrophoneButtonSelector,\n microphoneButtonSelector,\n DevicesButtonSelector,\n devicesButtonSelector,\n ScreenShareButtonSelector,\n screenShareButtonSelector\n} from '../callControlSelectors';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { holdButtonSelector, HoldButtonSelector } from '../callControlSelectors';\nimport { VideoGallerySelector, videoGallerySelector } from '../videoGallerySelector';\nimport { ParticipantListSelector, participantListSelector } from '../participantListSelector';\nimport { ParticipantsButtonSelector, participantsButtonSelector } from '../participantsButtonSelector';\nimport { useHandlers } from './useHandlers';\nimport { useSelector } from './useSelector';\nimport { Common } from '@internal/acs-ui-common';\nimport { AreEqual } from '@internal/acs-ui-common';\nimport { ParticipantsButton } from '@internal/react-components';\nimport { ErrorBarSelector, errorBarSelector } from '../errorBarSelector';\nimport { CommonCallingHandlers } from '../handlers/createCommonHandlers';\n/* @conditional-compile-remove(reaction) */\nimport { reactionButtonSelector } from '../callControlSelectors';\n/* @conditional-compile-remove(reaction) */\nimport { ReactionButton } from '@internal/react-components';\n/* @conditional-compile-remove(spotlight) */\nimport { _ComponentCallingHandlers } from '../handlers/createHandlers';\n\n/**\n * Primary hook to get all hooks necessary for a calling Component.\n *\n * Most straightforward usage of calling components looks like:\n *\n * @example\n * ```\n * import { ParticipantList, usePropsFor } from '@azure/communication-react';\n *\n * const App = (): JSX.Element => {\n * // ... code to setup Providers ...\n *\n * return <ParticipantList {...usePropsFor(ParticipantList)}/>\n * }\n * ```\n *\n * @public\n */\nexport const usePropsFor = <Component extends (props: any) => JSX.Element>(\n component: Component\n): GetSelector<Component> extends (props: any) => any\n ? ReturnType<GetSelector<Component>> &\n Common<\n CommonCallingHandlers & /* @conditional-compile-remove(spotlight) */ _ComponentCallingHandlers,\n Parameters<Component>[0]\n >\n : undefined => {\n const selector = getSelector(component);\n const props = useSelector(selector);\n const handlers = useHandlers<Parameters<Component>[0]>(component);\n if (props !== undefined) {\n return { ...props, ...handlers } as any;\n }\n return undefined as any;\n};\n\n/**\n * A type for trivial selectors that return no data.\n *\n * Used as a default return value if {@link usePropsFor} is called for a component that requires no data.\n *\n * @public\n */\nexport type EmptySelector = () => Record<string, never>;\n\nconst emptySelector: EmptySelector = (): Record<string, never> => ({});\n\n/**\n * Specific type of the selector applicable to a given Component.\n *\n * @public\n */\nexport type GetSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<\n Component,\n typeof VideoGallery\n> extends true\n ? VideoGallerySelector\n : AreEqual<Component, typeof DevicesButton> extends true\n ? DevicesButtonSelector\n : AreEqual<Component, typeof MicrophoneButton> extends true\n ? MicrophoneButtonSelector\n : AreEqual<Component, typeof CameraButton> extends true\n ? CameraButtonSelector\n : AreEqual<Component, typeof ScreenShareButton> extends true\n ? ScreenShareButtonSelector\n : AreEqual<Component, typeof ParticipantList> extends true\n ? ParticipantListSelector\n : AreEqual<Component, typeof ParticipantsButton> extends true\n ? ParticipantsButtonSelector\n : AreEqual<Component, typeof EndCallButton> extends true\n ? EmptySelector\n : AreEqual<Component, typeof ErrorBar> extends true\n ? ErrorBarSelector\n : AreEqual<Component, typeof Dialpad> extends true\n ? /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ EmptySelector\n : AreEqual<Component, typeof HoldButton> extends true\n ? /* @conditional-compile-remove(PSTN-calls) */ HoldButtonSelector\n : undefined;\n\n/**\n * Get the selector for a specified component.\n *\n * Useful when implementing a custom component that utilizes the providers\n * exported from this library.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getSelector = <Component extends (props: any) => JSX.Element | undefined>(\n component: Component\n): GetSelector<Component> => {\n /* @conditional-compile-remove(PSTN-calls) */\n if (component === HoldButton) {\n return findConditionalCompiledSelector(component);\n }\n /* @conditional-compile-remove(reaction) */\n if (component === ReactionButton) {\n return findConditionalCompiledSelector(component);\n }\n return findSelector(component);\n};\n\nconst findSelector = (component: (props: any) => JSX.Element | undefined): any => {\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector\n if (component === Dialpad) {\n return emptySelector;\n }\n\n switch (component) {\n case VideoGallery:\n return videoGallerySelector;\n case MicrophoneButton:\n return microphoneButtonSelector;\n case CameraButton:\n return cameraButtonSelector;\n case ScreenShareButton:\n return screenShareButtonSelector;\n case DevicesButton:\n return devicesButtonSelector;\n case ParticipantList:\n return participantListSelector;\n case ParticipantsButton:\n return participantsButtonSelector;\n case EndCallButton:\n return emptySelector;\n case ErrorBar:\n return errorBarSelector;\n case RaiseHandButton:\n return raiseHandButtonSelector;\n }\n return undefined;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */\nconst findConditionalCompiledSelector = (component: (props: any) => JSX.Element | undefined): any => {\n switch (component) {\n /* @conditional-compile-remove(PSTN-calls) */\n case HoldButton:\n /* @conditional-compile-remove(PSTN-calls) */\n return holdButtonSelector;\n /* @conditional-compile-remove(reaction) */\n case ReactionButton:\n /* @conditional-compile-remove(reaction) */\n return reactionButtonSelector;\n }\n};\n"]}