@azure/communication-react 1.21.0-alpha-202411020018 → 1.21.0-alpha-202411060016

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 (73) hide show
  1. package/dist/communication-react.d.ts +77 -31
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-BNPsH65w.js → ChatMessageComponentAsRichTextEditBox-gOhRkzVQ.js} +3 -3
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-BNPsH65w.js.map → ChatMessageComponentAsRichTextEditBox-gOhRkzVQ.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CYii3cMB.js → RichTextSendBoxWrapper-W9emUhpu.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CYii3cMB.js.map → RichTextSendBoxWrapper-W9emUhpu.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-bz7CLz1d.js → index-B4neqg6y.js} +621 -129
  7. package/dist/dist-cjs/communication-react/index-B4neqg6y.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +42 -31
  12. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  13. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +11 -2
  14. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +88 -5
  15. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/CallFeatureStreamUtils.d.ts +14 -0
  17. package/dist/dist-esm/calling-stateful-client/src/CallFeatureStreamUtils.js +207 -0
  18. package/dist/dist-esm/calling-stateful-client/src/CallFeatureStreamUtils.js.map +1 -0
  19. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  21. package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts +6 -0
  22. package/dist/dist-esm/calling-stateful-client/src/Converter.js +16 -1
  23. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.d.ts +9 -0
  25. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js +50 -0
  26. package/dist/dist-esm/calling-stateful-client/src/InternalCallContext.js.map +1 -1
  27. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +33 -2
  28. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +17 -0
  29. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  30. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.d.ts +1 -2
  31. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +10 -0
  32. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
  33. package/dist/dist-esm/calling-stateful-client/src/TogetherModeSubscriber.d.ts +9 -4
  34. package/dist/dist-esm/calling-stateful-client/src/TogetherModeSubscriber.js +38 -9
  35. package/dist/dist-esm/calling-stateful-client/src/TogetherModeSubscriber.js.map +1 -1
  36. package/dist/dist-esm/calling-stateful-client/src/TogetherModeVideoStreamSubscriber.d.ts +18 -0
  37. package/dist/dist-esm/calling-stateful-client/src/TogetherModeVideoStreamSubscriber.js +34 -0
  38. package/dist/dist-esm/calling-stateful-client/src/TogetherModeVideoStreamSubscriber.js.map +1 -0
  39. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -1
  40. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +3 -3
  42. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +1 -1
  44. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.js +17 -2
  46. package/dist/dist-esm/react-components/src/components/DevicePermissions/DevicePermissionDropdown.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js +4 -3
  48. package/dist/dist-esm/react-components/src/components/TroubleshootingGuideErrorBar.js.map +1 -1
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +1 -1
  50. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/VideoGallery.js +1 -1
  52. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/VideoTile.js +13 -11
  54. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  55. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +9 -2
  56. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
  57. package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.d.ts +11 -0
  58. package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.js +21 -0
  59. package/dist/dist-esm/react-components/src/components/styles/MessageBarLink.styles.js.map +1 -0
  60. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +2 -0
  61. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +6 -0
  62. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.js +4 -2
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/SidePane.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +4 -2
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js +6 -2
  68. package/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.d.ts +3 -1
  70. package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js +9 -1
  71. package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js.map +1 -1
  72. package/package.json +3 -2
  73. package/dist/dist-cjs/communication-react/index-bz7CLz1d.js.map +0 -1
@@ -188,7 +188,7 @@ function getDefaultExportFromCjs (x) {
188
188
  // Copyright (c) Microsoft Corporation.
189
189
  // Licensed under the MIT License.
190
190
  // GENERATED FILE. DO NOT EDIT MANUALLY.
191
- var telemetryVersion = '1.21.0-alpha-202411020018';
191
+ var telemetryVersion = '1.21.0-alpha-202411060016';
192
192
 
193
193
 
194
194
  var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
@@ -615,7 +615,7 @@ const getAssignedBreakoutRoom$1 = (state, props) => {
615
615
 
616
616
  // Copyright (c) Microsoft Corporation.
617
617
  // Licensed under the MIT License.
618
- var __awaiter$10 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
618
+ var __awaiter$11 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
619
619
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
620
620
  return new (P || (P = Promise))(function (resolve, reject) {
621
621
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -655,7 +655,7 @@ const _isPreviewOn = (deviceManager) => {
655
655
  *
656
656
  * @private
657
657
  */
658
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$10(void 0, void 0, void 0, function* () {
658
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$11(void 0, void 0, void 0, function* () {
659
659
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
660
660
  for (const view of unparentedViews) {
661
661
  yield callClient.disposeView(undefined, undefined, view);
@@ -731,7 +731,7 @@ const maskDisplayNameWithRole = (displayName, localUserRole, participantRole, is
731
731
  * Helper to create a local video stream from the selected camera.
732
732
  * @private
733
733
  */
734
- const createLocalVideoStream = (callClient) => __awaiter$10(void 0, void 0, void 0, function* () {
734
+ const createLocalVideoStream = (callClient) => __awaiter$11(void 0, void 0, void 0, function* () {
735
735
  const camera = yield (callClient === null || callClient === void 0 ? void 0 : callClient.getState().deviceManager.selectedCamera);
736
736
  if (camera) {
737
737
  return new communicationCalling.LocalVideoStream(camera);
@@ -866,7 +866,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
866
866
 
867
867
  // Copyright (c) Microsoft Corporation.
868
868
  // Licensed under the MIT License.
869
- var __awaiter$$ = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
869
+ var __awaiter$10 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
870
870
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
871
871
  return new (P || (P = Promise))(function (resolve, reject) {
872
872
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -887,7 +887,7 @@ const areStreamsEqual = (prevStream, newStream) => {
887
887
  * @private
888
888
  */
889
889
  const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager, call, options) => {
890
- const onStartLocalVideo = () => __awaiter$$(void 0, void 0, void 0, function* () {
890
+ const onStartLocalVideo = () => __awaiter$10(void 0, void 0, void 0, function* () {
891
891
  // Before the call object creates a stream, dispose of any local preview streams.
892
892
  // @TODO: is there any way to parent the unparented view to the call object instead
893
893
  // of disposing and creating a new stream?
@@ -907,7 +907,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
907
907
  yield call.startVideo(stream);
908
908
  }
909
909
  });
910
- const onStopLocalVideo = (stream) => __awaiter$$(void 0, void 0, void 0, function* () {
910
+ const onStopLocalVideo = (stream) => __awaiter$10(void 0, void 0, void 0, function* () {
911
911
  const callId = call === null || call === void 0 ? void 0 : call.id;
912
912
  if (!callId) {
913
913
  return;
@@ -916,7 +916,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
916
916
  yield call.stopVideo(stream);
917
917
  }
918
918
  });
919
- const onToggleCamera = (options) => __awaiter$$(void 0, void 0, void 0, function* () {
919
+ const onToggleCamera = (options) => __awaiter$10(void 0, void 0, void 0, function* () {
920
920
  const previewOn = _isPreviewOn(callClient.getState().deviceManager);
921
921
  // the disposal of the unparented views is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
922
922
  // The root cause of the issue is caused by never transitioning the unparented view to the
@@ -973,19 +973,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
973
973
  }
974
974
  }
975
975
  });
976
- const onSelectMicrophone = (device) => __awaiter$$(void 0, void 0, void 0, function* () {
976
+ const onSelectMicrophone = (device) => __awaiter$10(void 0, void 0, void 0, function* () {
977
977
  if (!deviceManager) {
978
978
  return;
979
979
  }
980
980
  return deviceManager.selectMicrophone(device);
981
981
  });
982
- const onSelectSpeaker = (device) => __awaiter$$(void 0, void 0, void 0, function* () {
982
+ const onSelectSpeaker = (device) => __awaiter$10(void 0, void 0, void 0, function* () {
983
983
  if (!deviceManager) {
984
984
  return;
985
985
  }
986
986
  return deviceManager.selectSpeaker(device);
987
987
  });
988
- const onSelectCamera = (device, options) => __awaiter$$(void 0, void 0, void 0, function* () {
988
+ const onSelectCamera = (device, options) => __awaiter$10(void 0, void 0, void 0, function* () {
989
989
  if (!deviceManager) {
990
990
  return;
991
991
  }
@@ -1015,9 +1015,9 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1015
1015
  }, options);
1016
1016
  }
1017
1017
  });
1018
- const onRaiseHand = () => __awaiter$$(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
1019
- const onLowerHand = () => __awaiter$$(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
1020
- const onToggleRaiseHand = () => __awaiter$$(void 0, void 0, void 0, function* () {
1018
+ const onRaiseHand = () => __awaiter$10(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
1019
+ const onLowerHand = () => __awaiter$10(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
1020
+ const onToggleRaiseHand = () => __awaiter$10(void 0, void 0, void 0, function* () {
1021
1021
  const raiseHandFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand);
1022
1022
  const localUserId = callClient.getState().userId;
1023
1023
  const isLocalRaisedHand = raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.getRaisedHands().find((publishedState) => toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId));
@@ -1028,7 +1028,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1028
1028
  yield (raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.raiseHand());
1029
1029
  }
1030
1030
  });
1031
- const onReactionClick = (reaction) => __awaiter$$(void 0, void 0, void 0, function* () {
1031
+ const onReactionClick = (reaction) => __awaiter$10(void 0, void 0, void 0, function* () {
1032
1032
  var _c;
1033
1033
  if (reaction === 'like' ||
1034
1034
  reaction === 'applause' ||
@@ -1042,18 +1042,18 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1042
1042
  }
1043
1043
  return;
1044
1044
  });
1045
- const onToggleMicrophone = () => __awaiter$$(void 0, void 0, void 0, function* () {
1045
+ const onToggleMicrophone = () => __awaiter$10(void 0, void 0, void 0, function* () {
1046
1046
  if (!call || !(_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {
1047
1047
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
1048
1048
  }
1049
1049
  return call.isMuted ? yield call.unmute() : yield call.mute();
1050
1050
  });
1051
- const onStartScreenShare = () => __awaiter$$(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
1052
- const onStopScreenShare = () => __awaiter$$(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
1053
- const onToggleScreenShare = () => __awaiter$$(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
1054
- const onHangUp = (forEveryone) => __awaiter$$(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
1055
- const onToggleHold = () => __awaiter$$(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
1056
- const onCreateLocalStreamView = (...args_1) => __awaiter$$(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
1051
+ const onStartScreenShare = () => __awaiter$10(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
1052
+ const onStopScreenShare = () => __awaiter$10(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
1053
+ const onToggleScreenShare = () => __awaiter$10(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
1054
+ const onHangUp = (forEveryone) => __awaiter$10(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
1055
+ const onToggleHold = () => __awaiter$10(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
1056
+ const onCreateLocalStreamView = (...args_1) => __awaiter$10(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
1057
1057
  if (!call || call.localVideoStreams.length === 0) {
1058
1058
  return;
1059
1059
  }
@@ -1077,7 +1077,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1077
1077
  }
1078
1078
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
1079
1079
  });
1080
- const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$$(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
1080
+ const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$10(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
1081
1081
  if (!call) {
1082
1082
  return;
1083
1083
  }
@@ -1114,7 +1114,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1114
1114
  }
1115
1115
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
1116
1116
  });
1117
- const onDisposeRemoteStreamView = (userId) => __awaiter$$(void 0, void 0, void 0, function* () {
1117
+ const onDisposeRemoteStreamView = (userId) => __awaiter$10(void 0, void 0, void 0, function* () {
1118
1118
  if (!call) {
1119
1119
  return;
1120
1120
  }
@@ -1135,7 +1135,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1135
1135
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
1136
1136
  }
1137
1137
  });
1138
- const onDisposeRemoteVideoStreamView = (userId) => __awaiter$$(void 0, void 0, void 0, function* () {
1138
+ const onDisposeRemoteVideoStreamView = (userId) => __awaiter$10(void 0, void 0, void 0, function* () {
1139
1139
  if (!call) {
1140
1140
  return;
1141
1141
  }
@@ -1154,7 +1154,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1154
1154
  }
1155
1155
  }
1156
1156
  });
1157
- const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$$(void 0, void 0, void 0, function* () {
1157
+ const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$10(void 0, void 0, void 0, function* () {
1158
1158
  if (!call) {
1159
1159
  return;
1160
1160
  }
@@ -1173,7 +1173,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1173
1173
  }
1174
1174
  }
1175
1175
  });
1176
- const onDisposeLocalScreenShareStreamView = () => __awaiter$$(void 0, void 0, void 0, function* () {
1176
+ const onDisposeLocalScreenShareStreamView = () => __awaiter$10(void 0, void 0, void 0, function* () {
1177
1177
  if (!call) {
1178
1178
  return;
1179
1179
  }
@@ -1186,7 +1186,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1186
1186
  callClient.disposeView(call.id, undefined, screenShareStream);
1187
1187
  }
1188
1188
  });
1189
- const onDisposeLocalStreamView = () => __awaiter$$(void 0, void 0, void 0, function* () {
1189
+ const onDisposeLocalStreamView = () => __awaiter$10(void 0, void 0, void 0, function* () {
1190
1190
  // If the user is currently in a call, dispose of the local stream view attached to that call.
1191
1191
  const callState = call && callClient.getState().calls[call.id];
1192
1192
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -1198,17 +1198,17 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1198
1198
  // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.
1199
1199
  yield disposeAllLocalPreviewViews(callClient);
1200
1200
  });
1201
- const onSendDtmfTone = (dtmfTone) => __awaiter$$(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
1201
+ const onSendDtmfTone = (dtmfTone) => __awaiter$10(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
1202
1202
  const notImplemented = () => {
1203
1203
  throw new Error('Not implemented, cannot call a method from an abstract object');
1204
1204
  };
1205
1205
  /* @conditional-compile-remove(call-readiness) */
1206
- const askDevicePermission = (constrain) => __awaiter$$(void 0, void 0, void 0, function* () {
1206
+ const askDevicePermission = (constrain) => __awaiter$10(void 0, void 0, void 0, function* () {
1207
1207
  if (deviceManager) {
1208
1208
  yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
1209
1209
  }
1210
1210
  });
1211
- const onRemoveVideoBackgroundEffects = () => __awaiter$$(void 0, void 0, void 0, function* () {
1211
+ const onRemoveVideoBackgroundEffects = () => __awaiter$10(void 0, void 0, void 0, function* () {
1212
1212
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1213
1213
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
1214
1214
  if (stream) {
@@ -1220,7 +1220,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1220
1220
  }
1221
1221
  }
1222
1222
  });
1223
- const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$$(void 0, void 0, void 0, function* () {
1223
+ const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$10(void 0, void 0, void 0, function* () {
1224
1224
  var _d;
1225
1225
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1226
1226
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
@@ -1233,7 +1233,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1233
1233
  return createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));
1234
1234
  }
1235
1235
  });
1236
- const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$$(void 0, void 0, void 0, function* () {
1236
+ const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$10(void 0, void 0, void 0, function* () {
1237
1237
  var _e;
1238
1238
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
1239
1239
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
@@ -1246,7 +1246,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1246
1246
  return (createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig)));
1247
1247
  }
1248
1248
  });
1249
- const onStartNoiseSuppressionEffect = () => __awaiter$$(void 0, void 0, void 0, function* () {
1249
+ const onStartNoiseSuppressionEffect = () => __awaiter$10(void 0, void 0, void 0, function* () {
1250
1250
  var _f;
1251
1251
  const audioEffects = (options === null || options === void 0 ? void 0 : options.onResolveDeepNoiseSuppressionDependency) &&
1252
1252
  ((_f = (yield options.onResolveDeepNoiseSuppressionDependency())) === null || _f === void 0 ? void 0 : _f.deepNoiseSuppressionEffect);
@@ -1262,7 +1262,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1262
1262
  }
1263
1263
  }
1264
1264
  });
1265
- const onStopNoiseSuppressionEffect = () => __awaiter$$(void 0, void 0, void 0, function* () {
1265
+ const onStopNoiseSuppressionEffect = () => __awaiter$10(void 0, void 0, void 0, function* () {
1266
1266
  const stream = call === null || call === void 0 ? void 0 : call.localAudioStreams.find((stream) => stream.mediaStreamType === 'Audio');
1267
1267
  if (stream && (options === null || options === void 0 ? void 0 : options.onResolveDeepNoiseSuppressionDependency)) {
1268
1268
  const audioEffects = {
@@ -1271,37 +1271,37 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1271
1271
  return yield stream.feature(communicationCalling.Features.AudioEffects).stopEffects(audioEffects);
1272
1272
  }
1273
1273
  });
1274
- const onStartCaptions = (options) => __awaiter$$(void 0, void 0, void 0, function* () {
1274
+ const onStartCaptions = (options) => __awaiter$10(void 0, void 0, void 0, function* () {
1275
1275
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1276
1276
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.startCaptions(options));
1277
1277
  });
1278
- const onStopCaptions = () => __awaiter$$(void 0, void 0, void 0, function* () {
1278
+ const onStopCaptions = () => __awaiter$10(void 0, void 0, void 0, function* () {
1279
1279
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1280
1280
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.stopCaptions());
1281
1281
  });
1282
- const onSetSpokenLanguage = (language) => __awaiter$$(void 0, void 0, void 0, function* () {
1282
+ const onSetSpokenLanguage = (language) => __awaiter$10(void 0, void 0, void 0, function* () {
1283
1283
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1284
1284
  yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.setSpokenLanguage(language));
1285
1285
  });
1286
- const onSetCaptionLanguage = (language) => __awaiter$$(void 0, void 0, void 0, function* () {
1286
+ const onSetCaptionLanguage = (language) => __awaiter$10(void 0, void 0, void 0, function* () {
1287
1287
  const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
1288
1288
  yield captionsFeature.setCaptionLanguage(language);
1289
1289
  });
1290
- const onSubmitSurvey = (survey) => __awaiter$$(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
1291
- const onStartSpotlight = (userIds) => __awaiter$$(void 0, void 0, void 0, function* () {
1290
+ const onSubmitSurvey = (survey) => __awaiter$10(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
1291
+ const onStartSpotlight = (userIds) => __awaiter$10(void 0, void 0, void 0, function* () {
1292
1292
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1293
1293
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1294
1294
  });
1295
- const onStopSpotlight = (userIds) => __awaiter$$(void 0, void 0, void 0, function* () {
1295
+ const onStopSpotlight = (userIds) => __awaiter$10(void 0, void 0, void 0, function* () {
1296
1296
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1297
1297
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1298
1298
  });
1299
- const onStopAllSpotlight = () => __awaiter$$(void 0, void 0, void 0, function* () {
1299
+ const onStopAllSpotlight = () => __awaiter$10(void 0, void 0, void 0, function* () {
1300
1300
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopAllSpotlight());
1301
1301
  });
1302
- const onMuteParticipant = (userId) => __awaiter$$(void 0, void 0, void 0, function* () {
1302
+ const onMuteParticipant = (userId) => __awaiter$10(void 0, void 0, void 0, function* () {
1303
1303
  if (call === null || call === void 0 ? void 0 : call.remoteParticipants) {
1304
- call === null || call === void 0 ? void 0 : call.remoteParticipants.forEach((participant) => __awaiter$$(void 0, void 0, void 0, function* () {
1304
+ call === null || call === void 0 ? void 0 : call.remoteParticipants.forEach((participant) => __awaiter$10(void 0, void 0, void 0, function* () {
1305
1305
  // Using toFlatCommunicationIdentifier to convert the CommunicationIdentifier to string
1306
1306
  // as _toCommunicationIdentifier(userId) comparison to participant.identifier did not work for this case
1307
1307
  if (toFlatCommunicationIdentifier(participant.identifier) === userId) {
@@ -1310,27 +1310,27 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1310
1310
  }));
1311
1311
  }
1312
1312
  });
1313
- const onMuteAllRemoteParticipants = () => __awaiter$$(void 0, void 0, void 0, function* () {
1313
+ const onMuteAllRemoteParticipants = () => __awaiter$10(void 0, void 0, void 0, function* () {
1314
1314
  call === null || call === void 0 ? void 0 : call.muteAllRemoteParticipants();
1315
1315
  });
1316
1316
  const canStartSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.spotlightParticipant.isPresent;
1317
1317
  const canRemoveSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.removeParticipantsSpotlight.isPresent;
1318
1318
  const onStartLocalSpotlight = canStartSpotlight
1319
- ? () => __awaiter$$(void 0, void 0, void 0, function* () {
1319
+ ? () => __awaiter$10(void 0, void 0, void 0, function* () {
1320
1320
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight());
1321
1321
  })
1322
1322
  : undefined;
1323
- const onStopLocalSpotlight = () => __awaiter$$(void 0, void 0, void 0, function* () {
1323
+ const onStopLocalSpotlight = () => __awaiter$10(void 0, void 0, void 0, function* () {
1324
1324
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight());
1325
1325
  });
1326
1326
  const onStartRemoteSpotlight = canStartSpotlight
1327
- ? (userIds) => __awaiter$$(void 0, void 0, void 0, function* () {
1327
+ ? (userIds) => __awaiter$10(void 0, void 0, void 0, function* () {
1328
1328
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1329
1329
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
1330
1330
  })
1331
1331
  : undefined;
1332
1332
  const onStopRemoteSpotlight = canRemoveSpotlight
1333
- ? (userIds) => __awaiter$$(void 0, void 0, void 0, function* () {
1333
+ ? (userIds) => __awaiter$10(void 0, void 0, void 0, function* () {
1334
1334
  const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
1335
1335
  yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
1336
1336
  })
@@ -1390,7 +1390,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
1390
1390
 
1391
1391
  // Copyright (c) Microsoft Corporation.
1392
1392
  // Licensed under the MIT License.
1393
- var __awaiter$_ = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1393
+ var __awaiter$$ = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1394
1394
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1395
1395
  return new (P || (P = Promise))(function (resolve, reject) {
1396
1396
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1421,7 +1421,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1421
1421
  // FIXME: onStartCall API should use string, not the underlying SDK types.
1422
1422
  onStartCall: (participants, options) => {
1423
1423
  return callAgent === null || callAgent === void 0 ? void 0 : callAgent.startCall(participants, options);
1424
- }, onAddParticipant: (userId, options) => __awaiter$_(void 0, void 0, void 0, function* () {
1424
+ }, onAddParticipant: (userId, options) => __awaiter$$(void 0, void 0, void 0, function* () {
1425
1425
  const participant = _toCommunicationIdentifier(userId);
1426
1426
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
1427
1427
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
@@ -1429,16 +1429,16 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1429
1429
  else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
1430
1430
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
1431
1431
  }
1432
- }), onRemoveParticipant: (userId) => __awaiter$_(void 0, void 0, void 0, function* () {
1432
+ }), onRemoveParticipant: (userId) => __awaiter$$(void 0, void 0, void 0, function* () {
1433
1433
  const participant = _toCommunicationIdentifier(userId);
1434
1434
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
1435
- }), onAcceptCall: (incomingCallId, useVideo) => __awaiter$_(void 0, void 0, void 0, function* () {
1435
+ }), onAcceptCall: (incomingCallId, useVideo) => __awaiter$$(void 0, void 0, void 0, function* () {
1436
1436
  const localVideoStream = useVideo ? yield createLocalVideoStream(callClient) : undefined;
1437
1437
  const incomingCall = callAgent === null || callAgent === void 0 ? void 0 : callAgent.incomingCalls.find((incomingCall) => incomingCall.id === incomingCallId);
1438
1438
  if (incomingCall) {
1439
1439
  yield incomingCall.accept(localVideoStream ? { videoOptions: { localVideoStreams: [localVideoStream] } } : undefined);
1440
1440
  }
1441
- }), onRejectCall: (incomingCallId) => __awaiter$_(void 0, void 0, void 0, function* () {
1441
+ }), onRejectCall: (incomingCallId) => __awaiter$$(void 0, void 0, void 0, function* () {
1442
1442
  const incomingCall = callAgent === null || callAgent === void 0 ? void 0 : callAgent.incomingCalls.find((incomingCall) => incomingCall.id === incomingCallId);
1443
1443
  if (incomingCall) {
1444
1444
  yield incomingCall.reject();
@@ -1446,13 +1446,13 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
1446
1446
  }),
1447
1447
  /* @conditional-compile-remove(breakout-rooms) */
1448
1448
  onHangUp: breakoutRoomOriginCall
1449
- ? () => __awaiter$_(void 0, void 0, void 0, function* () { return breakoutRoomOriginCall.hangUp().then(() => commonCallingHandlers.onHangUp()); })
1449
+ ? () => __awaiter$$(void 0, void 0, void 0, function* () { return breakoutRoomOriginCall.hangUp().then(() => commonCallingHandlers.onHangUp()); })
1450
1450
  : commonCallingHandlers.onHangUp });
1451
1451
  });
1452
1452
 
1453
1453
  // Copyright (c) Microsoft Corporation.
1454
1454
  // Licensed under the MIT License.
1455
- var __awaiter$Z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1455
+ var __awaiter$_ = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1456
1456
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1457
1457
  return new (P || (P = Promise))(function (resolve, reject) {
1458
1458
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1483,7 +1483,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1483
1483
  return undefined;
1484
1484
  },
1485
1485
  /* @conditional-compile-remove(teams-identity-support-beta) */
1486
- onAddParticipant: (userId, options) => __awaiter$Z(void 0, void 0, void 0, function* () {
1486
+ onAddParticipant: (userId, options) => __awaiter$_(void 0, void 0, void 0, function* () {
1487
1487
  const participant = _toCommunicationIdentifier(userId);
1488
1488
  const threadId = options === null || options === void 0 ? void 0 : options.threadId;
1489
1489
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
@@ -1496,7 +1496,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1496
1496
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, threadId ? { threadId } : undefined);
1497
1497
  }
1498
1498
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
1499
- }), onRemoveParticipant: (userId) => __awaiter$Z(void 0, void 0, void 0, function* () {
1499
+ }), onRemoveParticipant: (userId) => __awaiter$_(void 0, void 0, void 0, function* () {
1500
1500
  const participant = _toCommunicationIdentifier(userId);
1501
1501
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
1502
1502
  throw new Error('CommunicationIdentifier in Teams call is not supported!');
@@ -1505,13 +1505,13 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
1505
1505
  throw new Error('Removing Microsoft Teams app identifier is not supported!');
1506
1506
  }
1507
1507
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
1508
- }), onAcceptCall: (incomingCallId, useVideo) => __awaiter$Z(void 0, void 0, void 0, function* () {
1508
+ }), onAcceptCall: (incomingCallId, useVideo) => __awaiter$_(void 0, void 0, void 0, function* () {
1509
1509
  const localVideoStream = useVideo ? yield createLocalVideoStream(callClient) : undefined;
1510
1510
  const incomingCall = callAgent === null || callAgent === void 0 ? void 0 : callAgent.incomingCalls.find((incomingCall) => incomingCall.id === incomingCallId);
1511
1511
  if (incomingCall) {
1512
1512
  yield incomingCall.accept(localVideoStream ? { videoOptions: { localVideoStreams: [localVideoStream] } } : undefined);
1513
1513
  }
1514
- }), onRejectCall: (incomingCallId) => __awaiter$Z(void 0, void 0, void 0, function* () {
1514
+ }), onRejectCall: (incomingCallId) => __awaiter$_(void 0, void 0, void 0, function* () {
1515
1515
  const incomingCall = callAgent === null || callAgent === void 0 ? void 0 : callAgent.incomingCalls.find((incomingCall) => incomingCall.id === incomingCallId);
1516
1516
  if (incomingCall) {
1517
1517
  yield incomingCall.reject();
@@ -1818,7 +1818,7 @@ const getCaptionsSpeakerIdentifier = (captions) => {
1818
1818
 
1819
1819
  // Copyright (c) Microsoft Corporation.
1820
1820
  // Licensed under the MIT License.
1821
- var __awaiter$Y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1821
+ var __awaiter$Z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1822
1822
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1823
1823
  return new (P || (P = Promise))(function (resolve, reject) {
1824
1824
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1899,7 +1899,7 @@ class ProxyDeviceManager {
1899
1899
  }
1900
1900
  }
1901
1901
  };
1902
- this.permissionsApiStateChangeHandler = () => __awaiter$Y(this, void 0, void 0, function* () {
1902
+ this.permissionsApiStateChangeHandler = () => __awaiter$Z(this, void 0, void 0, function* () {
1903
1903
  yield this.updateDevicePermissionState();
1904
1904
  });
1905
1905
  /**
@@ -1910,13 +1910,13 @@ class ProxyDeviceManager {
1910
1910
  this.selectCamera = (videoDeviceInfo) => {
1911
1911
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
1912
1912
  };
1913
- this.videoDevicesUpdated = () => __awaiter$Y(this, void 0, void 0, function* () {
1913
+ this.videoDevicesUpdated = () => __awaiter$Z(this, void 0, void 0, function* () {
1914
1914
  // Device Manager always has a camera with '' name if there are no real camera devices available.
1915
1915
  // We don't want to show that in the UI.
1916
1916
  const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
1917
1917
  this._context.setDeviceManagerCameras(dedupeById(realCameras));
1918
1918
  });
1919
- this.audioDevicesUpdated = () => __awaiter$Y(this, void 0, void 0, function* () {
1919
+ this.audioDevicesUpdated = () => __awaiter$Z(this, void 0, void 0, function* () {
1920
1920
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
1921
1921
  if (this._deviceManager.isSpeakerSelectionAvailable) {
1922
1922
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
@@ -1928,7 +1928,7 @@ class ProxyDeviceManager {
1928
1928
  this.selectedSpeakerChanged = () => {
1929
1929
  this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);
1930
1930
  };
1931
- this.updateDevicePermissionState = (sdkDeviceAccessState) => __awaiter$Y(this, void 0, void 0, function* () {
1931
+ this.updateDevicePermissionState = (sdkDeviceAccessState) => __awaiter$Z(this, void 0, void 0, function* () {
1932
1932
  let hasCameraPermission = !!(sdkDeviceAccessState === null || sdkDeviceAccessState === void 0 ? void 0 : sdkDeviceAccessState.video);
1933
1933
  let hasMicPermission = !!(sdkDeviceAccessState === null || sdkDeviceAccessState === void 0 ? void 0 : sdkDeviceAccessState.audio);
1934
1934
  // Supplement the SDK values with values from the Permissions API to get a better understanding of the device
@@ -2006,7 +2006,7 @@ class ProxyDeviceManager {
2006
2006
  }
2007
2007
  case 'askDevicePermission': {
2008
2008
  return this._context.withAsyncErrorTeedToState((...args) => {
2009
- return target.askDevicePermission(...args).then((deviceAccess) => __awaiter$Y(this, void 0, void 0, function* () {
2009
+ return target.askDevicePermission(...args).then((deviceAccess) => __awaiter$Z(this, void 0, void 0, function* () {
2010
2010
  yield this.updateDevicePermissionState(deviceAccess);
2011
2011
  return deviceAccess;
2012
2012
  }));
@@ -2116,6 +2116,21 @@ function convertSdkRemoteStreamToDeclarativeRemoteStream(stream) {
2116
2116
  streamSize: stream.size
2117
2117
  };
2118
2118
  }
2119
+ /* @conditional-compile-remove(together-mode) */
2120
+ /**
2121
+ * @private
2122
+ */
2123
+ function convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream, featureName) {
2124
+ return {
2125
+ feature: featureName,
2126
+ id: stream.id,
2127
+ mediaStreamType: stream.mediaStreamType,
2128
+ isAvailable: stream.isAvailable,
2129
+ isReceiving: stream.isReceiving,
2130
+ view: undefined,
2131
+ streamSize: stream.size
2132
+ };
2133
+ }
2119
2134
  /**
2120
2135
  * @private
2121
2136
  */
@@ -2186,7 +2201,7 @@ function convertSdkCallToDeclarativeCall(call) {
2186
2201
  pptLive: { isActive: false },
2187
2202
  raiseHand: { raisedHands: [] },
2188
2203
  /* @conditional-compile-remove(together-mode) */
2189
- togetherMode: { stream: [] },
2204
+ togetherMode: { isActive: false, streams: {}, seatingPositions: {} },
2190
2205
  localParticipantReaction: undefined,
2191
2206
  transcription: { isTranscriptionActive: false },
2192
2207
  screenShareRemoteParticipant: undefined,
@@ -2391,7 +2406,7 @@ class CallIdHistory {
2391
2406
 
2392
2407
  // Copyright (c) Microsoft Corporation.
2393
2408
  // Licensed under the MIT License.
2394
- var __awaiter$X = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2409
+ var __awaiter$Y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2395
2410
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2396
2411
  return new (P || (P = Promise))(function (resolve, reject) {
2397
2412
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2750,11 +2765,67 @@ let CallContext$2 = class CallContext {
2750
2765
  });
2751
2766
  }
2752
2767
  /* @conditional-compile-remove(together-mode) */
2753
- setTogetherModeVideoStream(callId, addedStream) {
2768
+ setTogetherModeVideoStreams(callId, addedStreams, removedStreams) {
2769
+ this.modifyState((draft) => {
2770
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2771
+ if (call) {
2772
+ for (const stream of removedStreams) {
2773
+ if (stream.mediaStreamType === 'Video') {
2774
+ call.togetherMode.streams.mainVideoStream = undefined;
2775
+ call.togetherMode.isActive = false;
2776
+ call.togetherMode.seatingPositions = {};
2777
+ }
2778
+ }
2779
+ for (const newStream of addedStreams) {
2780
+ // This should only be called by the subscriber and some properties are add by other components so if the
2781
+ // stream already exists, only update the values that subscriber knows about.
2782
+ const mainVideoStream = call.togetherMode.streams.mainVideoStream;
2783
+ if (mainVideoStream && mainVideoStream.id === newStream.id) {
2784
+ mainVideoStream.mediaStreamType = newStream.mediaStreamType;
2785
+ mainVideoStream.isAvailable = newStream.isAvailable;
2786
+ mainVideoStream.isReceiving = newStream.isReceiving;
2787
+ }
2788
+ else {
2789
+ call.togetherMode.streams.mainVideoStream = newStream;
2790
+ }
2791
+ call.togetherMode.isActive = true;
2792
+ }
2793
+ }
2794
+ });
2795
+ }
2796
+ /* @conditional-compile-remove(together-mode) */
2797
+ setTogetherModeVideoStreamIsAvailable(callId, streamId, isAvailable) {
2754
2798
  this.modifyState((draft) => {
2755
2799
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2756
2800
  if (call) {
2757
- call.togetherMode = { stream: addedStream };
2801
+ const stream = call.togetherMode.streams.mainVideoStream;
2802
+ if (stream && (stream === null || stream === void 0 ? void 0 : stream.id) === streamId) {
2803
+ stream.isReceiving = isAvailable;
2804
+ }
2805
+ }
2806
+ });
2807
+ }
2808
+ /* @conditional-compile-remove(together-mode) */
2809
+ setTogetherModeVideoStreamIsReceiving(callId, streamId, isReceiving) {
2810
+ this.modifyState((draft) => {
2811
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2812
+ if (call) {
2813
+ const stream = call.togetherMode.streams.mainVideoStream;
2814
+ if (stream && (stream === null || stream === void 0 ? void 0 : stream.id) === streamId) {
2815
+ stream.isReceiving = isReceiving;
2816
+ }
2817
+ }
2818
+ });
2819
+ }
2820
+ /* @conditional-compile-remove(together-mode) */
2821
+ setTogetherModeVideoStreamSize(callId, streamId, size) {
2822
+ this.modifyState((draft) => {
2823
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2824
+ if (call) {
2825
+ const stream = call.togetherMode.streams.mainVideoStream;
2826
+ if (stream && (stream === null || stream === void 0 ? void 0 : stream.id) === streamId) {
2827
+ stream.streamSize = size;
2828
+ }
2758
2829
  }
2759
2830
  });
2760
2831
  }
@@ -2764,14 +2835,27 @@ let CallContext$2 = class CallContext {
2764
2835
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2765
2836
  if (call) {
2766
2837
  for (const stream of removedStream) {
2767
- if (stream.mediaStreamType in call.togetherMode.stream) {
2768
- // Temporary lint fix: Remove the stream from the list
2769
- call.togetherMode.stream = [];
2838
+ if (stream.mediaStreamType === 'Video') {
2839
+ call.togetherMode.streams.mainVideoStream = undefined;
2840
+ call.togetherMode.isActive = false;
2770
2841
  }
2771
2842
  }
2772
2843
  }
2773
2844
  });
2774
2845
  }
2846
+ /* @conditional-compile-remove(together-mode) */
2847
+ setTogetherModeSeatingCoordinates(callId, seatingMap) {
2848
+ this.modifyState((draft) => {
2849
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
2850
+ if (call) {
2851
+ const seatingPositions = {};
2852
+ for (const [userId, seatingPosition] of seatingMap.entries()) {
2853
+ seatingPositions[userId] = seatingPosition;
2854
+ }
2855
+ call.togetherMode.seatingPositions = seatingPositions;
2856
+ }
2857
+ });
2858
+ }
2775
2859
  setCallRaisedHands(callId, raisedHands) {
2776
2860
  this.modifyState((draft) => {
2777
2861
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
@@ -2966,6 +3050,20 @@ let CallContext$2 = class CallContext {
2966
3050
  }
2967
3051
  });
2968
3052
  }
3053
+ /* @conditional-compile-remove(together-mode) */
3054
+ setTogetherModeVideoStreamRendererView(callId, togetherModeStreamType, view) {
3055
+ this.modifyState((draft) => {
3056
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
3057
+ if (call) {
3058
+ if (togetherModeStreamType === 'Video') {
3059
+ const togetherModeStream = call.togetherMode.streams.mainVideoStream;
3060
+ if (togetherModeStream) {
3061
+ togetherModeStream.view = view;
3062
+ }
3063
+ }
3064
+ }
3065
+ });
3066
+ }
2969
3067
  setParticipantState(callId, participantKey, state) {
2970
3068
  this.modifyState((draft) => {
2971
3069
  const call = draft.calls[this._callIdHistory.latestCallId(callId)];
@@ -3397,7 +3495,7 @@ let CallContext$2 = class CallContext {
3397
3495
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
3398
3496
  */
3399
3497
  withAsyncErrorTeedToState(action, target) {
3400
- return (...args) => __awaiter$X(this, void 0, void 0, function* () {
3498
+ return (...args) => __awaiter$Y(this, void 0, void 0, function* () {
3401
3499
  try {
3402
3500
  return yield action(...args);
3403
3501
  }
@@ -3938,7 +4036,7 @@ function _logStreamEvent(eventName, streamLogInfo, error) {
3938
4036
 
3939
4037
  // Copyright (c) Microsoft Corporation.
3940
4038
  // Licensed under the MIT License.
3941
- var __awaiter$W = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4039
+ var __awaiter$X = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3942
4040
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3943
4041
  return new (P || (P = Promise))(function (resolve, reject) {
3944
4042
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3948,7 +4046,7 @@ var __awaiter$W = (window && window.__awaiter) || function (thisArg, _arguments,
3948
4046
  });
3949
4047
  };
3950
4048
  function createViewVideo(context, internalContext, callId, stream, participantId, options) {
3951
- return __awaiter$W(this, void 0, void 0, function* () {
4049
+ return __awaiter$X(this, void 0, void 0, function* () {
3952
4050
  // we can only have 3 types of createView
3953
4051
  let streamEventType;
3954
4052
  // we will reuse these for local as well but we need to make sure the remote stream is passed in like before.
@@ -4077,7 +4175,7 @@ function createViewVideo(context, internalContext, callId, stream, participantId
4077
4175
  });
4078
4176
  }
4079
4177
  function createViewUnparentedVideo(context, internalContext, stream, options) {
4080
- return __awaiter$W(this, void 0, void 0, function* () {
4178
+ return __awaiter$X(this, void 0, void 0, function* () {
4081
4179
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
4082
4180
  if (renderInfo && renderInfo.status === 'Rendered') {
4083
4181
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -4237,7 +4335,7 @@ function disposeViewUnparentedVideo(context, internalContext, stream) {
4237
4335
  /**
4238
4336
  * @private
4239
4337
  */
4240
- function createView(context, internalContext, callId, participantId, stream, options) {
4338
+ function createView$1(context, internalContext, callId, participantId, stream, options) {
4241
4339
  const streamType = stream.mediaStreamType;
4242
4340
  if (callId) {
4243
4341
  return createViewVideo(context, internalContext, callId, stream, participantId, options);
@@ -4246,7 +4344,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
4246
4344
  // Render LocalVideoStream that is not part of a Call
4247
4345
  // Because it is not part of the call we don't tee errors to state naturally (e.g. via a Call Client function such as startVideo).
4248
4346
  // We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
4249
- return context.withAsyncErrorTeedToState(() => __awaiter$W(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
4347
+ return context.withAsyncErrorTeedToState(() => __awaiter$X(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
4250
4348
  }
4251
4349
  else {
4252
4350
  _logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
@@ -4256,7 +4354,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
4256
4354
  /**
4257
4355
  * @private
4258
4356
  */
4259
- function disposeView(context, internalContext, callId, participantId, stream) {
4357
+ function disposeView$1(context, internalContext, callId, participantId, stream) {
4260
4358
  const streamType = stream.mediaStreamType;
4261
4359
  if (callId) {
4262
4360
  disposeViewVideo(context, internalContext, callId, stream, participantId);
@@ -4283,7 +4381,7 @@ function disposeAllViewsFromCall(context, internalContext, callId) {
4283
4381
  for (const [_, remoteStreamAndRenderer] of participantStreams.entries()) {
4284
4382
  // We don't want to accept SDK stream as parameter but we also don't cache the declarative stream so we have to
4285
4383
  // convert the SDK stream to declarative stream which is not pretty so this could use some further refactoring.
4286
- disposeView(context, internalContext, callId, participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(remoteStreamAndRenderer.stream));
4384
+ disposeView$1(context, internalContext, callId, participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(remoteStreamAndRenderer.stream));
4287
4385
  }
4288
4386
  }
4289
4387
  }
@@ -4293,7 +4391,17 @@ function disposeAllViewsFromCall(context, internalContext, callId) {
4293
4391
  if (localStreamAndRenderer && localStreamAndRenderer.renderer) {
4294
4392
  // We don't want to accept SDK stream as parameter but we also don't cache the declarative stream so we have to
4295
4393
  // convert the SDK stream to declarative stream which is not pretty so this could use some further refactoring.
4296
- disposeView(context, internalContext, callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localStreamAndRenderer.stream));
4394
+ disposeView$1(context, internalContext, callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localStreamAndRenderer.stream));
4395
+ }
4396
+ }
4397
+ }
4398
+ /* @conditional-compile-remove(together-mode) */
4399
+ const callFeatureStreams = internalContext.getCallFeatureRenderInfosForCall(callId);
4400
+ /* @conditional-compile-remove(together-mode) */
4401
+ if (callFeatureStreams) {
4402
+ for (const featureStreams of callFeatureStreams.values()) {
4403
+ for (const streamAndRenderer of featureStreams.values()) {
4404
+ disposeView$1(context, internalContext, callId, undefined, convertSdkRemoteStreamToDeclarativeRemoteStream(streamAndRenderer.stream));
4297
4405
  }
4298
4406
  }
4299
4407
  }
@@ -4343,7 +4451,7 @@ let ParticipantSubscriber$1 = class ParticipantSubscriber {
4343
4451
  // as it doesn't make sense to render for an ended participant.
4344
4452
  if (this._participant.videoStreams.length > 0) {
4345
4453
  for (const stream of this._participant.videoStreams) {
4346
- disposeView(this._context, this._internalContext, this._callIdRef.callId, this._participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(stream));
4454
+ disposeView$1(this._context, this._internalContext, this._callIdRef.callId, this._participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(stream));
4347
4455
  this._internalContext.deleteRemoteRenderInfo(this._callIdRef.callId, this._participantKey, stream.id);
4348
4456
  }
4349
4457
  }
@@ -4372,7 +4480,7 @@ let ParticipantSubscriber$1 = class ParticipantSubscriber {
4372
4480
  var _a;
4373
4481
  for (const stream of event.removed) {
4374
4482
  (_a = this._remoteVideoStreamSubscribers.get(stream.id)) === null || _a === void 0 ? void 0 : _a.unsubscribe();
4375
- disposeView(this._context, this._internalContext, this._callIdRef.callId, this._participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(stream));
4483
+ disposeView$1(this._context, this._internalContext, this._callIdRef.callId, this._participantKey, convertSdkRemoteStreamToDeclarativeRemoteStream(stream));
4376
4484
  this._internalContext.deleteRemoteRenderInfo(this._callIdRef.callId, this._participantKey, stream.id);
4377
4485
  }
4378
4486
  for (const stream of event.added) {
@@ -4432,7 +4540,7 @@ class RecordingSubscriber {
4432
4540
 
4433
4541
  // Copyright (c) Microsoft Corporation.
4434
4542
  // Licensed under the MIT License.
4435
- var __awaiter$V = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4543
+ var __awaiter$W = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
4436
4544
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4437
4545
  return new (P || (P = Promise))(function (resolve, reject) {
4438
4546
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4456,7 +4564,7 @@ class PPTLiveSubscriber {
4456
4564
  this._context.setCallPPTLiveActive(this._callIdRef.callId, this._pptLive.isActive);
4457
4565
  this.checkAndUpdatePPTLiveParticipant();
4458
4566
  };
4459
- this.checkAndUpdatePPTLiveParticipant = () => __awaiter$V(this, void 0, void 0, function* () {
4567
+ this.checkAndUpdatePPTLiveParticipant = () => __awaiter$W(this, void 0, void 0, function* () {
4460
4568
  if (!this._pptLive.activePresenterId) {
4461
4569
  return;
4462
4570
  }
@@ -4910,34 +5018,288 @@ class BreakoutRoomsSubscriber {
4910
5018
  }
4911
5019
  }
4912
5020
 
5021
+ var __awaiter$V = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
5022
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5023
+ return new (P || (P = Promise))(function (resolve, reject) {
5024
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5025
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
5026
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
5027
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
5028
+ });
5029
+ };
5030
+ /* @conditional-compile-remove(together-mode) */
5031
+ /**
5032
+ * @private
5033
+ *
5034
+ */
5035
+ function createView(context, internalContext, callId, stream, options) {
5036
+ const streamType = stream.mediaStreamType;
5037
+ if (callId && isCallFeatureStream(stream)) {
5038
+ return createCallFeatureViewVideo(context, internalContext, callId, stream, options);
5039
+ }
5040
+ else {
5041
+ _logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
5042
+ return Promise.resolve(undefined);
5043
+ }
5044
+ }
5045
+ /* @conditional-compile-remove(together-mode) */
5046
+ // This function is used to create a view for a stream that is part of a call feature.
5047
+ function createCallFeatureViewVideo(context, internalContext, callId, stream, options) {
5048
+ return __awaiter$V(this, void 0, void 0, function* () {
5049
+ const streamEventType = 'createViewCallFeature';
5050
+ const streamType = stream === null || stream === void 0 ? void 0 : stream.mediaStreamType;
5051
+ const callFeatureStreamId = stream && stream.id;
5052
+ const streamLogInfo = {
5053
+ callId,
5054
+ undefined,
5055
+ streamId: callFeatureStreamId,
5056
+ streamType,
5057
+ streamEventType
5058
+ };
5059
+ // make different logging announcement based on whether or not we are starting a local or remote
5060
+ _logStreamEvent(EventNames.CREATING_VIEW, streamLogInfo);
5061
+ const featureName = getStreamFeatureName(stream);
5062
+ // if we have a participant Id and a stream get the remote info, else get the local render info from state.
5063
+ const renderInfo = internalContext.getCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType);
5064
+ if (!renderInfo) {
5065
+ _logStreamEvent(EventNames.STREAM_NOT_FOUND, streamLogInfo);
5066
+ return;
5067
+ }
5068
+ if (renderInfo.status === 'Rendered') {
5069
+ _logStreamEvent(EventNames.STREAM_ALREADY_RENDERED, streamLogInfo);
5070
+ return;
5071
+ }
5072
+ if (renderInfo.status === 'Rendering') {
5073
+ // Do not log to console here as this is a very common situation due to UI rerenders while
5074
+ // the video rendering is in progress.
5075
+ _logStreamEvent(EventNames.STREAM_RENDERING, streamLogInfo);
5076
+ return;
5077
+ }
5078
+ // "Stopping" only happens if the stream was in "rendering" but `disposeView` was called.
5079
+ // Now that `createView` has been re-called, we can flip the state back to "rendering".
5080
+ if (renderInfo.status === 'Stopping') {
5081
+ _logStreamEvent(EventNames.STREAM_STOPPING, streamLogInfo);
5082
+ internalContext.setCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType, renderInfo.stream, 'Rendering', renderInfo.renderer);
5083
+ return;
5084
+ }
5085
+ const renderer = new communicationCalling.VideoStreamRenderer(renderInfo.stream);
5086
+ internalContext.setCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType, renderInfo.stream, 'Rendering', undefined);
5087
+ let view;
5088
+ try {
5089
+ view = yield renderer.createView(options);
5090
+ }
5091
+ catch (e) {
5092
+ _logStreamEvent(EventNames.CREATE_STREAM_FAIL, streamLogInfo, e);
5093
+ internalContext.setCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType, renderInfo.stream, 'NotRendered', undefined);
5094
+ throw e;
5095
+ }
5096
+ // Since render could take some time, we need to check if the stream is still valid and if we received a signal to
5097
+ // stop rendering.
5098
+ const refreshedRenderInfo = internalContext.getCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType);
5099
+ if (!refreshedRenderInfo) {
5100
+ // RenderInfo was removed. This should not happen unless stream was removed from the call so dispose the renderer
5101
+ // and clean up the state.
5102
+ _logStreamEvent(EventNames.RENDER_INFO_NOT_FOUND, streamLogInfo);
5103
+ renderer.dispose();
5104
+ setCallFeatureVideoRendererView(callId, featureName, context, stream.mediaStreamType, undefined);
5105
+ return;
5106
+ }
5107
+ if (refreshedRenderInfo.status === 'Stopping') {
5108
+ // Stop render was called on this stream after we had started rendering. We will dispose this view and do not
5109
+ // put the view into the state.
5110
+ _logStreamEvent(EventNames.CREATED_STREAM_STOPPING, streamLogInfo);
5111
+ renderer.dispose();
5112
+ internalContext.setCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType, refreshedRenderInfo.stream, 'NotRendered', undefined);
5113
+ setCallFeatureVideoRendererView(callId, featureName, context, stream.mediaStreamType, undefined);
5114
+ return;
5115
+ }
5116
+ // Else the stream still exists and status is not telling us to stop rendering. Complete the render process by
5117
+ // updating the state.
5118
+ internalContext.setCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType, refreshedRenderInfo.stream, 'Rendered', renderer);
5119
+ setCallFeatureVideoRendererView(callId, featureName, context, stream.mediaStreamType, convertFromSDKToDeclarativeVideoStreamRendererView(view));
5120
+ _logStreamEvent(EventNames.VIEW_RENDER_SUCCEED, streamLogInfo);
5121
+ return {
5122
+ renderer,
5123
+ view
5124
+ };
5125
+ });
5126
+ }
5127
+ /* @conditional-compile-remove(together-mode) */
5128
+ /**
5129
+ * @private
5130
+ */
5131
+ function disposeView(context, internalContext, callId, stream) {
5132
+ const streamType = stream.mediaStreamType;
5133
+ if (callId && isCallFeatureStream(stream)) {
5134
+ return disposeCallFeatureViewVideo(context, internalContext, callId, stream);
5135
+ }
5136
+ else {
5137
+ _logStreamEvent(EventNames.DISPOSE_STREAM_INVALID_PARAMS, { streamType });
5138
+ return;
5139
+ }
5140
+ }
5141
+ /* @conditional-compile-remove(together-mode) */
5142
+ /**
5143
+ * @private
5144
+ */
5145
+ function disposeCallFeatureViewVideo(context, internalContext, callId, stream) {
5146
+ const streamType = stream.mediaStreamType;
5147
+ const callFeatureStreamId = stream && stream.id;
5148
+ const streamLogInfo = { callId, undefined, streamId: callFeatureStreamId, streamType };
5149
+ _logStreamEvent(EventNames.START_DISPOSE_STREAM, streamLogInfo);
5150
+ const featureName = getStreamFeatureName(stream);
5151
+ {
5152
+ setCallFeatureVideoRendererView(callId, featureName, context, streamType, undefined);
5153
+ }
5154
+ const renderInfo = internalContext.getCallFeatureRenderInfo(callId, featureName, stream.mediaStreamType);
5155
+ if (!renderInfo) {
5156
+ _logStreamEvent(EventNames.DISPOSE_INFO_NOT_FOUND, streamLogInfo);
5157
+ return;
5158
+ }
5159
+ // Nothing to dispose of or clean up -- we can safely exit early here.
5160
+ if (renderInfo.status === 'NotRendered') {
5161
+ _logStreamEvent(EventNames.STREAM_ALREADY_DISPOSED, streamLogInfo);
5162
+ return;
5163
+ }
5164
+ // Status is already marked as "stopping" so we can exit early here. This is because stopping only occurs
5165
+ // when the stream is being created in createView but hasn't been completed being created yet. The createView
5166
+ // method will see the "stopping" status and perform the cleanup
5167
+ if (renderInfo.status === 'Stopping') {
5168
+ _logStreamEvent(EventNames.STREAM_STOPPING, streamLogInfo);
5169
+ return;
5170
+ }
5171
+ // If the stream is in the middle of being rendered (i.e. has state "Rendering"), we need the status as
5172
+ // "stopping" without performing any cleanup. This will tell the `createView` method that it should stop
5173
+ // rendering and clean up the state once the view has finished being created.
5174
+ if (renderInfo.status === 'Rendering') {
5175
+ _logStreamEvent(EventNames.STREAM_STOPPING, streamLogInfo);
5176
+ internalContext.setCallFeatureRenderInfo(callId, featureName, streamType, renderInfo.stream, 'Stopping', renderInfo.renderer);
5177
+ return;
5178
+ }
5179
+ if (renderInfo.renderer) {
5180
+ _logStreamEvent(EventNames.DISPOSING_RENDERER, streamLogInfo);
5181
+ renderInfo.renderer.dispose();
5182
+ // Else the state must be in the "Rendered" state, so we can dispose the renderer and clean up the state.
5183
+ internalContext.setCallFeatureRenderInfo(callId, featureName, streamType, renderInfo.stream, 'NotRendered', undefined);
5184
+ setCallFeatureVideoRendererView(callId, featureName, context, streamType, undefined);
5185
+ }
5186
+ else {
5187
+ _logStreamEvent(EventNames.RENDERER_NOT_FOUND, streamLogInfo);
5188
+ }
5189
+ }
5190
+ /* @conditional-compile-remove(together-mode) */
5191
+ /**
5192
+ * @private
5193
+ */
5194
+ const setCallFeatureVideoRendererView = (callId, featureName, context, streamType, view) => {
5195
+ if (featureName === 'togetherMode') {
5196
+ context.setTogetherModeVideoStreamRendererView(callId, streamType, view);
5197
+ }
5198
+ };
5199
+ /* @conditional-compile-remove(together-mode) */
5200
+ /**
5201
+ * @private
5202
+ */
5203
+ const getStreamFeatureName = (stream) => {
5204
+ if (stream.feature) {
5205
+ return stream.feature;
5206
+ }
5207
+ throw new Error('Feature name not found');
5208
+ };
5209
+ /* @conditional-compile-remove(together-mode) */
5210
+ /**
5211
+ * @private
5212
+ */
5213
+ function isCallFeatureStream(stream) {
5214
+ return 'feature' in stream || false;
5215
+ }
5216
+
4913
5217
  // Copyright (c) Microsoft Corporation.
4914
5218
  // Licensed under the MIT License.
5219
+ /* @conditional-compile-remove(together-mode) */
4915
5220
  /**
4916
5221
  * @private
4917
5222
  */
5223
+ class TogetherModeVideoStreamSubscriber {
5224
+ constructor(callIdRef, stream, context) {
5225
+ this.subscribe = () => {
5226
+ this._togetherModeStream.on('isAvailableChanged', this.isAvailableChanged);
5227
+ this._togetherModeStream.on('isReceivingChanged', this.isReceivingChanged);
5228
+ this._togetherModeStream.on('sizeChanged', this.isSizeChanged);
5229
+ };
5230
+ this.unsubscribe = () => {
5231
+ this._togetherModeStream.off('isAvailableChanged', this.isAvailableChanged);
5232
+ this._togetherModeStream.off('isReceivingChanged', this.isReceivingChanged);
5233
+ this._togetherModeStream.off('sizeChanged', this.isSizeChanged);
5234
+ };
5235
+ this.isAvailableChanged = () => {
5236
+ this._context.setTogetherModeVideoStreamIsAvailable(this._callIdRef.callId, this._togetherModeStream.id, this._togetherModeStream.isAvailable);
5237
+ };
5238
+ this.isReceivingChanged = () => {
5239
+ this._context.setTogetherModeVideoStreamIsReceiving(this._callIdRef.callId, this._togetherModeStream.id, this._togetherModeStream.isReceiving);
5240
+ };
5241
+ this.isSizeChanged = () => {
5242
+ this._context.setTogetherModeVideoStreamSize(this._callIdRef.callId, this._togetherModeStream.id, this._togetherModeStream.size);
5243
+ };
5244
+ this._callIdRef = callIdRef;
5245
+ this._togetherModeStream = stream;
5246
+ this._context = context;
5247
+ this.subscribe();
5248
+ }
5249
+ }
5250
+
5251
+ // Copyright (c) Microsoft Corporation.
5252
+ // Licensed under the MIT License.
5253
+ /* @conditional-compile-remove(together-mode) */
4918
5254
  /* @conditional-compile-remove(together-mode) */
4919
5255
  /**
4920
5256
  * TogetherModeSubscriber is responsible for subscribing to together mode events and updating the call context accordingly.
4921
5257
  */
4922
5258
  class TogetherModeSubscriber {
4923
- constructor(callIdRef, context, togetherMode) {
5259
+ constructor(callIdRef, context, internalContext, togetherMode) {
5260
+ this._featureName = 'togetherMode';
4924
5261
  this.subscribe = () => {
4925
5262
  this._togetherMode.on('togetherModeStreamsUpdated', this.onTogetherModeStreamUpdated);
5263
+ this._togetherMode.on('togetherModeSceneUpdated', this.onSceneUpdated);
5264
+ this._togetherMode.on('togetherModeSeatingUpdated', this.onSeatUpdated);
4926
5265
  };
4927
5266
  this.unsubscribe = () => {
4928
5267
  this._togetherMode.off('togetherModeStreamsUpdated', this.onTogetherModeStreamUpdated);
5268
+ this._togetherMode.off('togetherModeSceneUpdated', this.onSceneUpdated);
5269
+ this._togetherMode.off('togetherModeSeatingUpdated', this.onSeatUpdated);
4929
5270
  };
4930
- this.onTogetherModeStreamUpdated = (args) => {
4931
- if (args.added) {
4932
- this._context.setTogetherModeVideoStream(this._callIdRef.callId, args.added);
5271
+ this.onSceneUpdated = (args) => {
5272
+ this._context.setTogetherModeSeatingCoordinates(this._callIdRef.callId, args);
5273
+ };
5274
+ this.onSeatUpdated = (args) => {
5275
+ this._context.setTogetherModeSeatingCoordinates(this._callIdRef.callId, args);
5276
+ };
5277
+ this.addRemoteVideoStreamSubscriber = (togetherModeVideoStream) => {
5278
+ var _a;
5279
+ (_a = this._togetherModeVideoStreamSubscribers.get(togetherModeVideoStream.id)) === null || _a === void 0 ? void 0 : _a.unsubscribe();
5280
+ this._togetherModeVideoStreamSubscribers.set(togetherModeVideoStream.id, new TogetherModeVideoStreamSubscriber(this._callIdRef, togetherModeVideoStream, this._context));
5281
+ };
5282
+ this.updateTogetherModeStreams = (addedStreams, removedStreams) => {
5283
+ var _a;
5284
+ for (const stream of removedStreams) {
5285
+ (_a = this._togetherModeVideoStreamSubscribers.get(stream.id)) === null || _a === void 0 ? void 0 : _a.unsubscribe();
5286
+ disposeView(this._context, this._internalContext, this._callIdRef.callId, convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream, this._featureName));
5287
+ this._internalContext.deleteCallFeatureRenderInfo(this._callIdRef.callId, this._featureName, stream.mediaStreamType);
4933
5288
  }
4934
- if (args.removed) {
4935
- this._context.removeTogetherModeVideoStream(this._callIdRef.callId, args.removed);
5289
+ for (const stream of addedStreams) {
5290
+ this._internalContext.setCallFeatureRenderInfo(this._callIdRef.callId, this._featureName, stream.mediaStreamType, stream, 'NotRendered', undefined);
5291
+ this.addRemoteVideoStreamSubscriber(stream);
4936
5292
  }
5293
+ this._context.setTogetherModeVideoStreams(this._callIdRef.callId, addedStreams.map((stream) => convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream, this._featureName)), removedStreams.map((stream) => convertSdkCallFeatureStreamToDeclarativeCallFeatureStream(stream, this._featureName)));
5294
+ };
5295
+ this.onTogetherModeStreamUpdated = (args) => {
5296
+ this.updateTogetherModeStreams(args.added, args.removed);
4937
5297
  };
4938
5298
  this._callIdRef = callIdRef;
4939
5299
  this._context = context;
5300
+ this._internalContext = internalContext;
4940
5301
  this._togetherMode = togetherMode;
5302
+ this._togetherModeVideoStreamSubscribers = new Map();
4941
5303
  this.subscribe();
4942
5304
  }
4943
5305
  }
@@ -5011,7 +5373,7 @@ class CallSubscriber {
5011
5373
  // disposed) and we should not be updating it any more. So if video is rendering we stop rendering.
5012
5374
  for (const localVideoStream of this._call.localVideoStreams) {
5013
5375
  const mediaStreamType = localVideoStream.mediaStreamType;
5014
- disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));
5376
+ disposeView$1(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));
5015
5377
  this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);
5016
5378
  }
5017
5379
  this._diagnosticsSubscriber.unsubscribe();
@@ -5119,7 +5481,7 @@ class CallSubscriber {
5119
5481
  for (const localVideoStream of event.removed) {
5120
5482
  const mediaStreamType = localVideoStream.mediaStreamType;
5121
5483
  (_b = this._localVideoStreamVideoEffectsSubscribers.get(mediaStreamType)) === null || _b === void 0 ? void 0 : _b.unsubscribe();
5122
- disposeView(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));
5484
+ disposeView$1(this._context, this._internalContext, this._callIdRef.callId, undefined, convertSdkLocalStreamToDeclarativeLocalStream(localVideoStream));
5123
5485
  this._internalContext.deleteLocalRenderInfo(this._callIdRef.callId, mediaStreamType);
5124
5486
  }
5125
5487
  this._context.setCallLocalVideoStream(this._callIdRef.callId, event.added.map(convertSdkLocalStreamToDeclarativeLocalStream), event.removed.map(convertSdkLocalStreamToDeclarativeLocalStream));
@@ -5150,7 +5512,7 @@ class CallSubscriber {
5150
5512
  /* @conditional-compile-remove(breakout-rooms) */
5151
5513
  this._breakoutRoomsSubscriber = new BreakoutRoomsSubscriber(this._callIdRef, this._context, this._call.feature(communicationCalling.Features.BreakoutRooms));
5152
5514
  /* @conditional-compile-remove(together-mode) */
5153
- this._togetherModeSubscriber = new TogetherModeSubscriber(this._callIdRef, this._context, this._call.feature(communicationCalling.Features.TogetherMode));
5515
+ this._togetherModeSubscriber = new TogetherModeSubscriber(this._callIdRef, this._context, this._internalContext, this._call.feature(communicationCalling.Features.TogetherMode));
5154
5516
  this.subscribe();
5155
5517
  }
5156
5518
  // This is a helper function to safely call subscriber functions. This is needed in order to prevent events
@@ -5912,6 +6274,9 @@ class InternalCallContext {
5912
6274
  this._remoteRenderInfos = new Map();
5913
6275
  // <CallId, <MediaStreamType, LocalRenderInfo>>.
5914
6276
  this._localRenderInfos = new Map();
6277
+ /* @conditional-compile-remove(together-mode) */
6278
+ // <CallId, <featureName, <MediaStreamType, CallFeatureRenderInfo>>>.
6279
+ this._callFeatureRenderInfos = new Map();
5915
6280
  // Used for keeping track of rendered LocalVideoStreams that are not part of a Call.
5916
6281
  this._unparentedRenderInfos = new Map();
5917
6282
  this._callIdHistory = new CallIdHistory();
@@ -5931,6 +6296,13 @@ class InternalCallContext {
5931
6296
  this._localRenderInfos.delete(oldCallId);
5932
6297
  this._localRenderInfos.set(newCallId, localRenderInfos);
5933
6298
  }
6299
+ /* @conditional-compile-remove(together-mode) */
6300
+ const callFeatureRenderInfos = this._callFeatureRenderInfos.get(oldCallId);
6301
+ /* @conditional-compile-remove(together-mode) */
6302
+ if (callFeatureRenderInfos) {
6303
+ this._callFeatureRenderInfos.delete(oldCallId);
6304
+ this._callFeatureRenderInfos.set(newCallId, callFeatureRenderInfos);
6305
+ }
5934
6306
  }
5935
6307
  getCallIds() {
5936
6308
  return this._remoteRenderInfos.keys();
@@ -6029,6 +6401,46 @@ class InternalCallContext {
6029
6401
  clearCallRelatedState() {
6030
6402
  this._remoteRenderInfos.clear();
6031
6403
  this._localRenderInfos.clear();
6404
+ /* @conditional-compile-remove(together-mode) */
6405
+ this._callFeatureRenderInfos.clear();
6406
+ }
6407
+ /* @conditional-compile-remove(together-mode) */
6408
+ getCallFeatureRenderInfosForCall(callId) {
6409
+ return this._callFeatureRenderInfos.get(this._callIdHistory.latestCallId(callId));
6410
+ }
6411
+ /* @conditional-compile-remove(together-mode) */
6412
+ getCallFeatureRenderInfo(callId, featureNameKey, streamKey) {
6413
+ var _a, _b;
6414
+ const callFeatureRenderInfosForCall = (_b = (_a = this._callFeatureRenderInfos
6415
+ .get(this._callIdHistory.latestCallId(callId))) === null || _a === void 0 ? void 0 : _a.get(featureNameKey)) === null || _b === void 0 ? void 0 : _b.get(streamKey);
6416
+ if (!callFeatureRenderInfosForCall) {
6417
+ return undefined;
6418
+ }
6419
+ return callFeatureRenderInfosForCall;
6420
+ }
6421
+ /* @conditional-compile-remove(together-mode) */
6422
+ setCallFeatureRenderInfo(callId, featureNameKey, streamKey, stream, status, renderer) {
6423
+ let callRenderInfos = this._callFeatureRenderInfos.get(this._callIdHistory.latestCallId(callId));
6424
+ if (!callRenderInfos) {
6425
+ callRenderInfos = new Map();
6426
+ // If the callId is not found, create a new map for the callId.
6427
+ this._callFeatureRenderInfos.set(this._callIdHistory.latestCallId(callId), callRenderInfos);
6428
+ }
6429
+ let featureRenderInfos = callRenderInfos.get(featureNameKey);
6430
+ if (!featureRenderInfos) {
6431
+ featureRenderInfos = new Map();
6432
+ callRenderInfos.set(featureNameKey, featureRenderInfos);
6433
+ }
6434
+ featureRenderInfos.set(streamKey, { stream, status, renderer });
6435
+ }
6436
+ /* @conditional-compile-remove(together-mode) */
6437
+ deleteCallFeatureRenderInfo(callId, featureName, streamKey) {
6438
+ var _a;
6439
+ const callFeatureRenderInfoForCall = this._callFeatureRenderInfos.get(this._callIdHistory.latestCallId(callId));
6440
+ if (!callFeatureRenderInfoForCall || !callFeatureRenderInfoForCall.get(featureName)) {
6441
+ return;
6442
+ }
6443
+ (_a = callFeatureRenderInfoForCall.get(featureName)) === null || _a === void 0 ? void 0 : _a.delete(streamKey);
6032
6444
  }
6033
6445
  }
6034
6446
 
@@ -6337,7 +6749,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
6337
6749
  configurable: false,
6338
6750
  value: (callId, participantId, stream, options) => __awaiter$O(void 0, void 0, void 0, function* () {
6339
6751
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
6340
- const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
6752
+ const result = yield createView$1(context, internalContext, callId, participantIdKind, stream, options);
6341
6753
  // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
6342
6754
  if ('id' in stream && callId && participantId && result) {
6343
6755
  const participantKey = toFlatCommunicationIdentifier(participantId);
@@ -6346,11 +6758,26 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
6346
6758
  return result;
6347
6759
  })
6348
6760
  });
6761
+ /* @conditional-compile-remove(together-mode) */
6762
+ Object.defineProperty(callClient, 'createCallFeatureView', {
6763
+ configurable: false,
6764
+ value: (callId, stream, options) => __awaiter$O(void 0, void 0, void 0, function* () {
6765
+ const result = yield createView(context, internalContext, callId, stream, options);
6766
+ return result;
6767
+ })
6768
+ });
6349
6769
  Object.defineProperty(callClient, 'disposeView', {
6350
6770
  configurable: false,
6351
6771
  value: (callId, participantId, stream) => {
6352
6772
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
6353
- disposeView(context, internalContext, callId, participantIdKind, stream);
6773
+ disposeView$1(context, internalContext, callId, participantIdKind, stream);
6774
+ }
6775
+ });
6776
+ /* @conditional-compile-remove(together-mode) */
6777
+ Object.defineProperty(callClient, 'disposeCallFeatureView', {
6778
+ configurable: false,
6779
+ value: (callId, stream) => {
6780
+ disposeView(context, internalContext, callId, stream);
6354
6781
  }
6355
6782
  });
6356
6783
  const newStatefulCallClient = new Proxy(callClient, new ProxyCallClient(context, internalContext));
@@ -15318,7 +15745,7 @@ class _ErrorBoundary extends React.Component {
15318
15745
  // Copyright (c) Microsoft Corporation.
15319
15746
  // Licensed under the MIT License.
15320
15747
  /* @conditional-compile-remove(rich-text-editor) */
15321
- const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-BNPsH65w.js'); }));
15748
+ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-gOhRkzVQ.js'); }));
15322
15749
  /**
15323
15750
  * @private
15324
15751
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -15326,7 +15753,7 @@ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve()
15326
15753
  *
15327
15754
  * @conditional-compile-remove(rich-text-editor)
15328
15755
  */
15329
- const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-BNPsH65w.js'); });
15756
+ const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-gOhRkzVQ.js'); });
15330
15757
  /**
15331
15758
  * @private
15332
15759
  */
@@ -17786,6 +18213,12 @@ const rootStyles = {
17786
18213
  height: '100%',
17787
18214
  width: '100%'
17788
18215
  };
18216
+ /** @private */
18217
+ const videoTileHighContrastStyles = (theme) => ({
18218
+ '@media (forced-colors: active)': {
18219
+ border: `0.125rem solid ${theme.palette.black}`
18220
+ }
18221
+ });
17789
18222
  /**
17790
18223
  * @private
17791
18224
  */
@@ -18242,17 +18675,19 @@ const VideoTile = (props) => {
18242
18675
  return (React.createElement(react.Stack, Object.assign({ "data-ui-id": ids.videoTile, className: react.mergeStyles(rootStyles, {
18243
18676
  background: theme.palette.neutralLighter,
18244
18677
  borderRadius: theme.effects.roundedCorner4
18245
- }, (isSpeaking || raisedHand) && {
18246
- '&::after': {
18247
- content: `''`,
18248
- position: 'absolute',
18249
- border: `0.25rem solid ${isSpeaking ? theme.palette.themePrimary : raisedHandBackgroundColor}`,
18250
- borderRadius: theme.effects.roundedCorner4,
18251
- width: '100%',
18252
- height: '100%',
18253
- pointerEvents: 'none'
18678
+ }, isSpeaking || raisedHand
18679
+ ? {
18680
+ '&::after': {
18681
+ content: `''`,
18682
+ position: 'absolute',
18683
+ border: `0.25rem solid ${isSpeaking ? theme.palette.themePrimary : raisedHandBackgroundColor}`,
18684
+ borderRadius: theme.effects.roundedCorner4,
18685
+ width: '100%',
18686
+ height: '100%',
18687
+ pointerEvents: 'none'
18688
+ }
18254
18689
  }
18255
- }, styles === null || styles === void 0 ? void 0 : styles.root) }, longPressHandlers),
18690
+ : {}, videoTileHighContrastStyles(theme), styles === null || styles === void 0 ? void 0 : styles.root) }, longPressHandlers),
18256
18691
  React.createElement("div", Object.assign({ ref: videoTileRef, style: { width: '100%', height: '100%' } }, hoverHandlers, { "data-is-focusable": true }),
18257
18692
  isVideoRendered ? (React.createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, isMirrored && { transform: 'scaleX(-1)' }, styles === null || styles === void 0 ? void 0 : styles.videoContainer) }, renderElement)) : (React.createElement(react.Stack, { className: react.mergeStyles(videoContainerStyles, {
18258
18693
  opacity: participantStateString || props.participantState === 'Idle' ? 0.4 : 1
@@ -20978,7 +21413,7 @@ const FloatingLocalVideo = (props) => {
20978
21413
  const modalStyles = React.useMemo(() => floatingLocalVideoModalStyle(theme, localVideoSizeRem), [theme, localVideoSizeRem]);
20979
21414
  const layerProps = React.useMemo(() => ({ hostId: layerHostId }), [layerHostId]);
20980
21415
  return (React.createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS$1, styles: modalStyles, layerProps: layerProps, maxDragPosition: modalMaxDragPosition, minDragPosition: modalMinDragPosition, dataUiId: "floating-local-video-host" },
20981
- React.createElement(react.Stack, { "aria-label": (_a = strings.localVideoMovementAriaLabel) !== null && _a !== void 0 ? _a : strings.localVideoMovementLabel, tabIndex: 0 }, localVideoComponent)));
21416
+ React.createElement(react.Stack, { "aria-label": (_a = strings.localVideoMovementAriaLabel) !== null && _a !== void 0 ? _a : strings.localVideoMovementLabel, tabIndex: 0, role: 'dialog' }, localVideoComponent)));
20982
21417
  };
20983
21418
 
20984
21419
  // Copyright (c) Microsoft Corporation.
@@ -21403,7 +21838,7 @@ const VideoGallery = (props) => {
21403
21838
  const showDisplayNameTrampoline = () => {
21404
21839
  return layout === 'default' ? strings.localVideoLabel : isNarrow ? '' : strings.localVideoLabel;
21405
21840
  };
21406
- return (React.createElement(react.Stack, { styles: localVideoTileContainerStyles, key: "local-video-tile-key", role: 'dialog' },
21841
+ return (React.createElement(react.Stack, { styles: localVideoTileContainerStyles, key: "local-video-tile-key" },
21407
21842
  React.createElement(_LocalVideoTile, { alwaysShowLabelBackground: videoTilesOptions === null || videoTilesOptions === void 0 ? void 0 : videoTilesOptions.alwaysShowLabelBackground, userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: showDisplayNameTrampoline(), initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: showLocalVideoTileLabel, showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles, raisedHand: localParticipant.raisedHand, reaction: localParticipant.reaction, spotlightedParticipantUserIds: spotlightedParticipants, isSpotlighted: isSpotlighted, onStartSpotlight: onStartLocalSpotlight, onStopSpotlight: onStopLocalSpotlight, maxParticipantsToSpotlight: maxParticipantsToSpotlight, menuKind: remoteVideoTileMenu ? (remoteVideoTileMenu.kind === 'drawer' ? 'drawer' : 'contextual') : undefined, drawerMenuHostId: drawerMenuHostId, strings: strings, reactionResources: reactionResources, participantsCount: remoteParticipants.length + 1, isScreenSharingOn: localParticipant.isScreenSharingOn })));
21408
21843
  }, [
21409
21844
  isNarrow,
@@ -23883,6 +24318,26 @@ const messageBarStyle = (theme, errorType) => ({
23883
24318
  }
23884
24319
  });
23885
24320
 
24321
+ // Copyright (c) Microsoft Corporation.
24322
+ // Licensed under the MIT License.
24323
+ /**
24324
+ * Message Bar incorrectly applies dark theme and high contrast theme styles to links that have no hrefs.
24325
+ * This is a workaround to ensure that the link color is correct.
24326
+ *
24327
+ * More info: https://github.com/microsoft/fluentui/issues/14683
24328
+ *
24329
+ * @private
24330
+ */
24331
+ const messageBarLinkStyles = (theme, underline) => react.mergeStyles({
24332
+ textDecoration: 'underline' ,
24333
+ color: theme.palette.themeDarkAlt,
24334
+ textDecorationColor: theme.palette.themeDarkAlt,
24335
+ '@media (forced-colors: active)': {
24336
+ color: 'LinkText',
24337
+ textDecorationColor: 'LinkText'
24338
+ }
24339
+ });
24340
+
23886
24341
  // Copyright (c) Microsoft Corporation.
23887
24342
  // Licensed under the MIT License.
23888
24343
  /**
@@ -23910,13 +24365,13 @@ const _TroubleshootingGuideErrorBar = (props) => {
23910
24365
  ' ',
23911
24366
  onPermissionsTroubleshootingClick && (React.createElement(react.Link, { onClick: () => {
23912
24367
  onPermissionsTroubleshootingClick(permissionsState);
23913
- }, underline: true },
23914
- React.createElement("span", { style: { color: theme.palette.themeDarkAlt } }, troubleshootingGuideStrings.devicePermissionLinkText)))));
24368
+ } },
24369
+ React.createElement("span", { className: messageBarLinkStyles(theme) }, troubleshootingGuideStrings.devicePermissionLinkText)))));
23915
24370
  const networkErrorBar = (React.createElement("div", null,
23916
24371
  strings[error.type],
23917
24372
  ' ',
23918
24373
  onNetworkingTroubleshootingClick && (React.createElement(react.Link, { onClick: onNetworkingTroubleshootingClick, underline: true },
23919
- React.createElement("span", { style: { color: theme.palette.themeDarkAlt } }, troubleshootingGuideStrings.networkTroubleshootingLinkText)))));
24374
+ React.createElement("span", { className: messageBarLinkStyles(theme) }, troubleshootingGuideStrings.networkTroubleshootingLinkText)))));
23920
24375
  return (React.createElement(react.MessageBar, Object.assign({}, props, { styles: messageBarStyle(theme, messageBarType(error.type)), key: error.type, messageBarType: messageBarType(error.type), messageBarIconProps: messageBarIconProps(error.type), actions: React.createElement(react.MessageBarButton, { text: troubleshootingGuideStrings.dismissButtonText, styles: dismissButtonStyle$1(theme), onClick: () => {
23921
24376
  setDismissedErrors(dismissError(dismissedErrors, error));
23922
24377
  }, ariaLabel: troubleshootingGuideStrings.dismissButtonText }), isMultiline: false }), showErrorBar(error.type, devicePermissionErrorBar, networkErrorBar)));
@@ -23946,7 +24401,7 @@ const _DevicePermissionDropdown = (props) => {
23946
24401
  React.createElement(react.Text, null, strings === null || strings === void 0 ? void 0 : strings.placeHolderText)));
23947
24402
  };
23948
24403
  const onRenderCaretDown = () => {
23949
- return React.createElement(react.Text, null, strings === null || strings === void 0 ? void 0 : strings.actionButtonContent);
24404
+ return React.createElement(react.DefaultButton, { styles: actionButtonStyles }, strings === null || strings === void 0 ? void 0 : strings.actionButtonContent);
23950
24405
  };
23951
24406
  return (React.createElement(react.Dropdown, { "data-ui-id": 'permission-dropdown', placeholder: strings === null || strings === void 0 ? void 0 : strings.placeHolderText, label: strings === null || strings === void 0 ? void 0 : strings.label, "aria-labelledby": props.ariaLabelledby, onRenderPlaceholder: onRenderPlaceholder, onRenderCaretDown: onRenderCaretDown, onClick: () => {
23952
24407
  if (askDevicePermission) {
@@ -23955,6 +24410,21 @@ const _DevicePermissionDropdown = (props) => {
23955
24410
  onClick === null || onClick === void 0 ? void 0 : onClick();
23956
24411
  }, options: options !== null && options !== void 0 ? options : [], styles: styles }));
23957
24412
  };
24413
+ const actionButtonStyles = {
24414
+ root: {
24415
+ border: 'none',
24416
+ height: '2rem',
24417
+ padding: '0 0',
24418
+ paddingTop: '0.1rem',
24419
+ position: 'absolute',
24420
+ right: '0',
24421
+ lineHeight: '2rem',
24422
+ minWidth: '3rem'
24423
+ },
24424
+ label: {
24425
+ fontWeight: 400
24426
+ }
24427
+ };
23958
24428
 
23959
24429
  // Copyright (c) Microsoft Corporation.
23960
24430
  // Licensed under the MIT License.
@@ -24155,19 +24625,26 @@ const captionsContainerClassName = react.mergeStyles({
24155
24625
  const captionContainerClassName = react.mergeStyles({
24156
24626
  marginTop: _pxToRem(6),
24157
24627
  marginBottom: _pxToRem(6),
24628
+ textAlign: 'unset', // ensure RTL spoken language captions are appropriately aligned to the right
24158
24629
  overflowAnchor: 'auto'
24159
24630
  });
24631
+ /** Reset styling set by the `ul` element */
24632
+ const resetUlStyling = {
24633
+ listStyleType: 'none',
24634
+ padding: 0,
24635
+ margin: 0
24636
+ };
24160
24637
  /**
24161
24638
  * @private
24162
24639
  */
24163
24640
  const captionsBannerClassName = (formFactor) => {
24164
- return react.mergeStyles(Object.assign({ overflowX: 'hidden', height: formFactor === 'compact' ? '4.5rem' : '8.75rem', overflowY: 'auto' }, scrollbarStyles));
24641
+ return react.mergeStyles(Object.assign(Object.assign(Object.assign({}, resetUlStyling), { overflowX: 'hidden', height: formFactor === 'compact' ? '4.5rem' : '8.75rem', overflowY: 'auto' }), scrollbarStyles));
24165
24642
  };
24166
24643
  /**
24167
24644
  * @private
24168
24645
  */
24169
24646
  const captionsBannerFullHeightClassName = (theme) => {
24170
- return react.mergeStyles(Object.assign({ overflowX: 'hidden', overflowY: 'auto', height: '100%', width: '100%', position: 'absolute', backgroundColor: theme.palette.white, left: 0 }, scrollbarStyles));
24647
+ return react.mergeStyles(Object.assign(Object.assign(Object.assign({}, resetUlStyling), { overflowX: 'hidden', overflowY: 'auto', height: '100%', width: '100%', position: 'absolute', backgroundColor: theme.palette.white, left: 0 }), scrollbarStyles));
24171
24648
  };
24172
24649
  /**
24173
24650
  * @private
@@ -24275,11 +24752,11 @@ const _CaptionsBanner = (props) => {
24275
24752
  scrollToBottom();
24276
24753
  }
24277
24754
  }, [captions, isAtBottomOfScroll]);
24278
- return (React.createElement(React.Fragment, null, startCaptionsInProgress && (React.createElement(react.FocusZone, { as: "ul", className: captionsContainerClassName, "data-ui-id": "captions-banner" },
24279
- isCaptionsOn && (React.createElement("div", { ref: captionsScrollDivRef, className: (captionsOptions === null || captionsOptions === void 0 ? void 0 : captionsOptions.height) === 'full'
24755
+ return (React.createElement(React.Fragment, null, startCaptionsInProgress && (React.createElement(react.FocusZone, { className: captionsContainerClassName, "data-ui-id": "captions-banner" },
24756
+ isCaptionsOn && (React.createElement("ul", { ref: captionsScrollDivRef, className: (captionsOptions === null || captionsOptions === void 0 ? void 0 : captionsOptions.height) === 'full'
24280
24757
  ? captionsBannerFullHeightClassName(theme)
24281
24758
  : captionsBannerClassName(formFactor), "data-ui-id": "captions-banner-inner" }, captions.map((caption) => {
24282
- return (React.createElement("div", { key: caption.id, className: captionContainerClassName, "data-is-focusable": true },
24759
+ return (React.createElement("li", { key: caption.id, className: captionContainerClassName, "data-is-focusable": true },
24283
24760
  React.createElement(_Caption, Object.assign({}, caption, { onRenderAvatar: onRenderAvatar }))));
24284
24761
  }))),
24285
24762
  !isCaptionsOn && (React.createElement(react.Stack, { verticalAlign: "center", styles: (captionsOptions === null || captionsOptions === void 0 ? void 0 : captionsOptions.height) === 'full'
@@ -29952,7 +30429,7 @@ const AttachmentDownloadErrorBar = (props) => {
29952
30429
  /**
29953
30430
  * Wrapper for RichTextSendBox component to allow us to use usePropsFor with richTextSendBox with lazy loading
29954
30431
  */
29955
- const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-CYii3cMB.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
30432
+ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-W9emUhpu.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
29956
30433
  /**
29957
30434
  * @private
29958
30435
  * Use this function to load RoosterJS dependencies early in the lifecycle.
@@ -29960,7 +30437,7 @@ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function
29960
30437
  *
29961
30438
  /* @conditional-compile-remove(rich-text-editor-composite-support)
29962
30439
  */
29963
- const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-CYii3cMB.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
30440
+ const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-W9emUhpu.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
29964
30441
  /**
29965
30442
  * @private
29966
30443
  */
@@ -34790,6 +35267,14 @@ const availableSpaceStyles = { root: { width: '100%', height: '100%' } };
34790
35267
  const sidePaneTokens = {
34791
35268
  childrenGap: '0.5rem'
34792
35269
  };
35270
+ /** @private */
35271
+ const paneHighContrastStyles = (theme) => react.mergeStyles({
35272
+ '@media (forced-colors: active)': {
35273
+ border: `0.125rem solid ${theme.palette.black}`,
35274
+ borderRadius: theme.effects.roundedCorner4,
35275
+ margin: '0.5rem 0.25rem 0.5rem 0rem'
35276
+ }
35277
+ });
34793
35278
 
34794
35279
  // Copyright (c) Microsoft Corporation.
34795
35280
  // Licensed under the MIT License.
@@ -34905,10 +35390,11 @@ const SidePane = (props) => {
34905
35390
  const OverrideContentRenderer = (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive) || (overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.persistRenderingWhenClosed)
34906
35391
  ? overrideSidePane.renderer.contentRenderer
34907
35392
  : undefined;
35393
+ const theme = useTheme();
34908
35394
  if (!ContentRenderer && !OverrideContentRenderer) {
34909
35395
  return React.createElement(EmptyElement, null);
34910
35396
  }
34911
- return (React.createElement(react.Stack, { "aria-label": props.ariaLabel, "data-is-focusable": !!props.ariaLabel, role: props.ariaLabel ? 'navigation' : undefined, tabIndex: props.ariaLabel ? 0 : undefined, verticalFill: true, grow: true, styles: paneStyles, "data-ui-id": "SidePane", tokens: props.mobileView || (!props.showAddPeopleButton && (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people') ? {} : sidePaneTokens },
35397
+ return (React.createElement(react.Stack, { "aria-label": props.ariaLabel, "data-is-focusable": !!props.ariaLabel, role: props.ariaLabel ? 'navigation' : undefined, tabIndex: props.ariaLabel ? 0 : undefined, verticalFill: true, grow: true, styles: paneStyles, "data-ui-id": "SidePane", tokens: props.mobileView || (!props.showAddPeopleButton && (sidePaneRenderer === null || sidePaneRenderer === void 0 ? void 0 : sidePaneRenderer.id) === 'people') ? {} : sidePaneTokens, className: paneHighContrastStyles(theme) },
34912
35398
  HeaderToRender,
34913
35399
  React.createElement(react.Stack.Item, { verticalFill: true, grow: true, styles: paneBodyContainer },
34914
35400
  React.createElement(react.Stack, { verticalFill: true, styles: scrollableContainer },
@@ -34935,12 +35421,16 @@ const SidePaneHeader = (props) => {
34935
35421
  minWidth: '1.5rem',
34936
35422
  padding: '0.5rem 0.25rem',
34937
35423
  marginRight: '0.25rem',
34938
- backgroundColor: theme.semanticColors.bodyBackground
35424
+ backgroundColor: theme.semanticColors.bodyBackground,
35425
+ '@media (forced-colors: active)': {
35426
+ border: `0.1rem solid ${theme.palette.neutralSecondary}`,
35427
+ borderRadius: theme.effects.roundedCorner4
35428
+ }
34939
35429
  },
34940
35430
  icon: { color: theme.palette.neutralSecondary },
34941
35431
  iconHovered: { color: theme.palette.neutralSecondary },
34942
35432
  iconPressed: { color: theme.palette.neutralSecondary }
34943
- }), [theme.palette.neutralSecondary, theme.semanticColors.bodyBackground]);
35433
+ }), [theme.palette.neutralSecondary, theme.semanticColors.bodyBackground, theme.effects.roundedCorner4]);
34944
35434
  if (props.mobileView) {
34945
35435
  return React.createElement(SidePaneMobileHeader, Object.assign({}, props));
34946
35436
  }
@@ -37746,6 +38236,10 @@ const configurationPageTextDecoration = (theme) => {
37746
38236
  return {
37747
38237
  textShadow: `0px 0px 8px ${theme.palette.whiteTranslucent40}`,
37748
38238
  fill: theme.semanticColors.bodyText,
38239
+ svg: {
38240
+ // Fix SVGs not displaying the correct color in Desert high contrast mode
38241
+ fill: 'currentColor'
38242
+ },
37749
38243
  stroke: theme.palette.whiteTranslucent40,
37750
38244
  paintOrder: 'stroke fill',
37751
38245
  strokeWidth: _pxToRem(1.5),
@@ -37753,8 +38247,6 @@ const configurationPageTextDecoration = (theme) => {
37753
38247
  letterSpacing: '-0.02rem' // cope with extra width due to stroke width
37754
38248
  },
37755
38249
  '@media (forced-colors: active)': {
37756
- forcedColorAdjust: 'auto',
37757
- fill: theme.palette.neutralQuaternaryAlt,
37758
38250
  textShadow: 'none',
37759
38251
  stroke: 'none'
37760
38252
  }
@@ -44447,4 +44939,4 @@ exports.useTeamsCall = useTeamsCall;
44447
44939
  exports.useTeamsCallAdapter = useTeamsCallAdapter;
44448
44940
  exports.useTeamsCallAgent = useTeamsCallAgent;
44449
44941
  exports.useTheme = useTheme;
44450
- //# sourceMappingURL=index-bz7CLz1d.js.map
44942
+ //# sourceMappingURL=index-B4neqg6y.js.map