@azure/communication-react 1.5.1-alpha-202304250012 → 1.5.1-alpha-202304290012

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 (57) hide show
  1. package/CHANGELOG.beta.md +48 -1
  2. package/CHANGELOG.json +447 -0
  3. package/dist/communication-react.d.ts +13 -1
  4. package/dist/dist-cjs/communication-react/index.js +129 -106
  5. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js +3 -1
  9. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js.map +1 -1
  10. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.d.ts +1 -1
  11. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +1 -1
  12. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
  13. package/dist/dist-esm/calling-stateful-client/src/index.d.ts +1 -0
  14. package/dist/dist-esm/calling-stateful-client/src/index.js +2 -0
  15. package/dist/dist-esm/calling-stateful-client/src/index.js.map +1 -1
  16. package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
  17. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  18. package/dist/dist-esm/react-components/src/components/CaptionsBanner.d.ts +1 -0
  19. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js +2 -2
  20. package/dist/dist-esm/react-components/src/components/CaptionsBanner.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +1 -1
  22. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts +1 -1
  24. package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +1 -1
  26. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/SystemMessage.d.ts +1 -1
  28. package/dist/dist-esm/react-components/src/components/SystemMessage.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js +1 -1
  30. package/dist/dist-esm/react-components/src/components/styles/Captions.style.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +1 -1
  32. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/utils.js +5 -1
  34. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/index.d.ts +1 -1
  36. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/types/ComponentSlotStyle.d.ts +9 -0
  38. package/dist/dist-esm/react-components/src/types/ComponentSlotStyle.js +4 -0
  39. package/dist/dist-esm/react-components/src/types/ComponentSlotStyle.js.map +1 -0
  40. package/dist/dist-esm/react-components/src/types/index.d.ts +1 -0
  41. package/dist/dist-esm/react-components/src/types/index.js +1 -0
  42. package/dist/dist-esm/react-components/src/types/index.js.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +15 -5
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +3 -3
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +2 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.d.ts +4 -0
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js +4 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +10 -2
  55. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +1 -0
  57. package/package.json +8 -8
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
162
162
  // Copyright (c) Microsoft Corporation.
163
163
  // Licensed under the MIT license.
164
164
  // GENERATED FILE. DO NOT EDIT MANUALLY.
165
- var telemetryVersion = '1.5.1-alpha-202304250012';
165
+ var telemetryVersion = '1.5.1-alpha-202304290012';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -1025,10 +1025,12 @@ const _changeSpokenLanguageSelector = reselect__namespace.createSelector([getSup
1025
1025
  const _captionsBannerSelector = reselect__namespace.createSelector([getCaptions, getCaptionsStatus], (captions, isCaptionsFeatureActive) => {
1026
1026
  const captionsInfo = captions === null || captions === void 0 ? void 0 : captions.map((c) => {
1027
1027
  var _a, _b;
1028
+ const userId = c.speaker.identifier ? toFlatCommunicationIdentifier(c.speaker.identifier) : '';
1028
1029
  return {
1030
+ id: c.timestamp.getTime() + userId + c.speaker.displayName,
1029
1031
  displayName: (_a = c.speaker.displayName) !== null && _a !== void 0 ? _a : 'Unnamed Participant',
1030
1032
  captionText: (_b = c.captionText) !== null && _b !== void 0 ? _b : '',
1031
- userId: c.speaker.identifier ? toFlatCommunicationIdentifier(c.speaker.identifier) : ''
1033
+ userId
1032
1034
  };
1033
1035
  });
1034
1036
  return {
@@ -1327,7 +1329,7 @@ const _isTeamsCallAgent = (callAgent) => {
1327
1329
  };
1328
1330
  /* @conditional-compile-remove(close-captions) */
1329
1331
  /**
1330
- * @private
1332
+ * @internal
1331
1333
  * Determine whether a call is:
1332
1334
  * A TeamsCall
1333
1335
  * or a ACS Call joining the teams meeting
@@ -4850,6 +4852,7 @@ const extension = (fileName) => fileName.split('.').pop() || '';
4850
4852
  * Always returns a new Array so that the state variable is updated, trigerring a render.
4851
4853
  */
4852
4854
  const dismissError = (dismissedErrors, toDismiss) => {
4855
+ var _a;
4853
4856
  const now = new Date(Date.now());
4854
4857
  for (const error of dismissedErrors) {
4855
4858
  if (error.type === toDismiss.type) {
@@ -4859,12 +4862,15 @@ const dismissError = (dismissedErrors, toDismiss) => {
4859
4862
  return Array.from(dismissedErrors);
4860
4863
  }
4861
4864
  }
4865
+ const toDismissTimestamp = (_a = toDismiss.timestamp) !== null && _a !== void 0 ? _a : now;
4862
4866
  // Record that this error was dismissed for the first time right now.
4863
4867
  return [
4864
4868
  ...dismissedErrors,
4865
4869
  {
4866
4870
  type: toDismiss.type,
4867
- dismissedAt: now,
4871
+ // the error time could be sometimes later than the button click time, which cause the dismiss not working
4872
+ // so we set the dismiss time to the later one
4873
+ dismissedAt: now > toDismissTimestamp ? now : toDismissTimestamp,
4868
4874
  activeSince: toDismiss.timestamp
4869
4875
  }
4870
4876
  ];
@@ -14001,7 +14007,7 @@ const captionsContainerClassName = react.mergeStyles({
14001
14007
  const captionContainerClassName = react.mergeStyles({
14002
14008
  marginTop: _pxToRem(6),
14003
14009
  marginBottom: _pxToRem(6),
14004
- overflowAnchor: 'none'
14010
+ overflowAnchor: 'auto'
14005
14011
  });
14006
14012
  /**
14007
14013
  * @private
@@ -14087,8 +14093,8 @@ const _CaptionsBanner = (props) => {
14087
14093
  }, [captions, isAtBottomOfScroll]);
14088
14094
  return (React__default['default'].createElement(React__default['default'].Fragment, null, isCaptionsOn && (React__default['default'].createElement(react.FocusZone, { as: "ul", className: captionsContainerClassName },
14089
14095
  React__default['default'].createElement(reactNorthstar.Ref, { innerRef: captionsScrollDivRef },
14090
- React__default['default'].createElement(react.Stack, { verticalAlign: "start", className: captionsBannerClassName }, captions.map((caption, key) => {
14091
- return (React__default['default'].createElement("div", { key: key, className: captionContainerClassName, "data-is-focusable": true },
14096
+ React__default['default'].createElement(react.Stack, { verticalAlign: "start", className: captionsBannerClassName }, captions.map((caption) => {
14097
+ return (React__default['default'].createElement("div", { key: caption.id, className: captionContainerClassName, "data-is-focusable": true },
14092
14098
  React__default['default'].createElement(_Caption, Object.assign({}, caption, { onRenderAvatar: onRenderAvatar }))));
14093
14099
  })))))));
14094
14100
  };
@@ -16758,7 +16764,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
16758
16764
  */
16759
16765
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
16760
16766
 
16761
- var call$d={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",effects:"Effects",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"}};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
16767
+ var call$d={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",effects:"Effects",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"}};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
16762
16768
 
16763
16769
  var call$c={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",effects:"Effects",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"}};var chat$c={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$c={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
16764
16770
 
@@ -19649,6 +19655,98 @@ const SendDtmfDialpad = (props) => {
19649
19655
  React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { textFieldValue: textFieldValue, onChange: onChange, showDeleteButton: false, strings: strings, isMobile: isMobile }))))));
19650
19656
  };
19651
19657
 
19658
+ // Copyright (c) Microsoft Corporation.
19659
+ // Licensed under the MIT license.
19660
+ /** @private */
19661
+ const controlBarContainerStyles$1 = {
19662
+ paddingTop: '0.25rem',
19663
+ paddingBottom: '0.25rem',
19664
+ // @TODO: this should be exposed through a custom CallComposite Theme API that extends the fluent theme with semantic values
19665
+ boxShadow: `
19666
+ 0px 6.400000095367432px 14.399999618530273px 0px #00000021;
19667
+ 0px 1.2000000476837158px 3.5999999046325684px 0px #0000001A;
19668
+ `
19669
+ };
19670
+
19671
+ // Copyright (c) Microsoft Corporation.
19672
+ const VIDEO_GALLERY_Z_INDEX = 1;
19673
+ // The control bar must be in a higher z-band than the video gallery so the drop shadow appears on top of the video gallery
19674
+ /** @private */
19675
+ const CONTROL_BAR_Z_INDEX = VIDEO_GALLERY_Z_INDEX + 1;
19676
+ // The notification container should be in the highest z-band to ensure it shows on top of all other content.
19677
+ const NOTIFICATION_CONTAINER_Z_INDEX = Math.max(CONTROL_BAR_Z_INDEX, VIDEO_GALLERY_Z_INDEX) + 1;
19678
+ /** @private */
19679
+ const DRAWER_Z_INDEX = NOTIFICATION_CONTAINER_Z_INDEX + 1;
19680
+ /**
19681
+ * @private
19682
+ */
19683
+ const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles$1, {
19684
+ zIndex: CONTROL_BAR_Z_INDEX
19685
+ });
19686
+ const containerStyle$2 = {
19687
+ width: '100%',
19688
+ position: 'relative',
19689
+ minHeight: '13rem' // linked to minimum space allocated to media gallery
19690
+ };
19691
+ /**
19692
+ * @private
19693
+ */
19694
+ const containerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, containerStyle$2), { minWidth: '30rem' }));
19695
+ /**
19696
+ * @private
19697
+ */
19698
+ const containerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, containerStyle$2), { minWidth: '17.5rem' }));
19699
+ /**
19700
+ * @private
19701
+ */
19702
+ const galleryParentContainerStyles = (backgroundColor) => ({
19703
+ root: {
19704
+ zIndex: VIDEO_GALLERY_Z_INDEX,
19705
+ width: '100%',
19706
+ background: backgroundColor
19707
+ }
19708
+ });
19709
+ /**
19710
+ * @private
19711
+ */
19712
+ const mediaGalleryContainerStyles$1 = {
19713
+ root: {
19714
+ height: '100%'
19715
+ }
19716
+ };
19717
+ /**
19718
+ * @private
19719
+ */
19720
+ const notificationsContainerStyles = {
19721
+ root: {
19722
+ width: '100%',
19723
+ position: 'absolute',
19724
+ top: 0,
19725
+ left: 0,
19726
+ padding: '1rem',
19727
+ zIndex: NOTIFICATION_CONTAINER_Z_INDEX,
19728
+ pointerEvents: 'none' // to allow the operation of controls underneath the notification container
19729
+ }
19730
+ };
19731
+ /**
19732
+ * @private
19733
+ */
19734
+ const bannerNotificationStyles = {
19735
+ root: {
19736
+ pointerEvents: 'auto' // to allow the dismissal or error and warning bars in the notification container
19737
+ }
19738
+ };
19739
+ /**
19740
+ * @private
19741
+ */
19742
+ const callArrangementContainerStyles = {
19743
+ root: {
19744
+ width: '100%',
19745
+ height: '100%',
19746
+ flexDirection: 'column-reverse' // to allow first initial keyboard focus on ControlBar
19747
+ }
19748
+ };
19749
+
19652
19750
  // Copyright (c) Microsoft Corporation.
19653
19751
  // Enforce a background color on control bar to ensure it matches the composite background color.
19654
19752
  const controlBarStyles = react.memoizeFunction((background) => ({ root: { background: background } }));
@@ -19756,7 +19854,7 @@ const CallControls = (props) => {
19756
19854
  let cameraButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton);
19757
19855
  /* @conditional-compile-remove(rooms) */
19758
19856
  cameraButtonIsEnabled = rolePermissions.cameraButton && cameraButtonIsEnabled;
19759
- return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
19857
+ return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center", className: callControlsContainerStyles },
19760
19858
  /* @conditional-compile-remove(PSTN-calls) */
19761
19859
  React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
19762
19860
  React__default['default'].createElement(react.Stack.Item, null,
@@ -19803,95 +19901,6 @@ const PeopleButton = (props) => {
19803
19901
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon, onClick: onClick, styles: styles })));
19804
19902
  };
19805
19903
 
19806
- // Copyright (c) Microsoft Corporation.
19807
- // Licensed under the MIT license.
19808
- /** @private */
19809
- const controlBarContainerStyles$1 = {
19810
- paddingTop: '0.25rem',
19811
- paddingBottom: '0.25rem',
19812
- // @TODO: this should be exposed through a custom CallComposite Theme API that extends the fluent theme with semantic values
19813
- boxShadow: `
19814
- 0px 6.400000095367432px 14.399999618530273px 0px #00000021;
19815
- 0px 1.2000000476837158px 3.5999999046325684px 0px #0000001A;
19816
- `
19817
- };
19818
-
19819
- // Copyright (c) Microsoft Corporation.
19820
- const VIDEO_GALLERY_Z_INDEX = 1;
19821
- // The control bar must be in a higher z-band than the video gallery so the drop shadow appears on top of the video gallery
19822
- const CONTROL_BAR_Z_INDEX = VIDEO_GALLERY_Z_INDEX + 1;
19823
- // The notification container should be in the highest z-band to ensure it shows on top of all other content.
19824
- const NOTIFICATION_CONTAINER_Z_INDEX = Math.max(CONTROL_BAR_Z_INDEX, VIDEO_GALLERY_Z_INDEX) + 1;
19825
- /**
19826
- * @private
19827
- */
19828
- const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles$1, {
19829
- zIndex: CONTROL_BAR_Z_INDEX
19830
- });
19831
- const containerStyle$2 = {
19832
- width: '100%',
19833
- position: 'relative',
19834
- minHeight: '13rem' // linked to minimum space allocated to media gallery
19835
- };
19836
- /**
19837
- * @private
19838
- */
19839
- const containerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, containerStyle$2), { minWidth: '30rem' }));
19840
- /**
19841
- * @private
19842
- */
19843
- const containerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, containerStyle$2), { minWidth: '17.5rem' }));
19844
- /**
19845
- * @private
19846
- */
19847
- const galleryParentContainerStyles = (backgroundColor) => ({
19848
- root: {
19849
- zIndex: VIDEO_GALLERY_Z_INDEX,
19850
- width: '100%',
19851
- background: backgroundColor
19852
- }
19853
- });
19854
- /**
19855
- * @private
19856
- */
19857
- const mediaGalleryContainerStyles$1 = {
19858
- root: {
19859
- height: '100%'
19860
- }
19861
- };
19862
- /**
19863
- * @private
19864
- */
19865
- const notificationsContainerStyles = {
19866
- root: {
19867
- width: '100%',
19868
- position: 'absolute',
19869
- top: 0,
19870
- left: 0,
19871
- padding: '1rem',
19872
- zIndex: NOTIFICATION_CONTAINER_Z_INDEX,
19873
- pointerEvents: 'none' // to allow the operation of controls underneath the notification container
19874
- }
19875
- };
19876
- /**
19877
- * @private
19878
- */
19879
- const bannerNotificationStyles = {
19880
- root: {
19881
- pointerEvents: 'auto' // to allow the dismissal or error and warning bars in the notification container
19882
- }
19883
- };
19884
- /**
19885
- * @private
19886
- */
19887
- const callArrangementContainerStyles = {
19888
- root: {
19889
- width: '100%',
19890
- height: '100%',
19891
- flexDirection: 'column-reverse' // to allow first initial keyboard focus on ControlBar
19892
- }
19893
- };
19894
-
19895
19904
  // Copyright (c) Microsoft Corporation.
19896
19905
  /**
19897
19906
  * The hook to bypass limitation of conditional build for CallWithChatComposite
@@ -22022,11 +22031,17 @@ const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffects
22022
22031
  /* @conditional-compile-remove(video-background-effects) */
22023
22032
  const selectedEffect = useSelector$1(activeVideoBackgroundEffectSelector);
22024
22033
  /* @conditional-compile-remove(video-background-effects) */
22034
+ const isCameraOn = useSelector$1(localVideoSelector).isAvailable;
22035
+ /* @conditional-compile-remove(video-background-effects) */
22036
+ const showWarning = !isCameraOn && selectedEffect !== 'none';
22037
+ /* @conditional-compile-remove(video-background-effects) */
22025
22038
  const headerStyles = {
22026
22039
  zIndex: 0
22027
22040
  };
22028
22041
  /* @conditional-compile-remove(video-background-effects) */
22029
- return (React__default['default'].createElement(react.Panel, { headerText: locale.strings.call.effects, isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true, className: react.mergeStyles(headerStyles) }, selectableVideoEffects && (React__default['default'].createElement(_VideoBackgroundEffectsPicker, { options: selectableVideoEffects, onChange: onEffectChange, selectedEffectKey: selectedEffect }))));
22042
+ return (React__default['default'].createElement(react.Panel, { headerText: locale.strings.call.effects, isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true, className: react.mergeStyles(headerStyles) },
22043
+ showWarning && (React__default['default'].createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning }, locale.strings.call.cameraOffBackgroundEffectWarningText)),
22044
+ selectableVideoEffects && (React__default['default'].createElement(_VideoBackgroundEffectsPicker, { options: selectableVideoEffects, onChange: onEffectChange, selectedEffectKey: selectedEffect }))));
22030
22045
  };
22031
22046
 
22032
22047
  // Copyright (c) Microsoft Corporation.
@@ -22099,7 +22114,7 @@ const CallArrangement = (props) => {
22099
22114
  const onClickShowDialpad = () => {
22100
22115
  setShowDtmfDialpad(true);
22101
22116
  };
22102
- const drawerContainerStylesValue = React.useMemo(() => drawerContainerStyles(10), []);
22117
+ const drawerContainerStylesValue = React.useMemo(() => drawerContainerStyles(DRAWER_Z_INDEX), []);
22103
22118
  // To be removed once feature is out of beta, replace with callCompositeContainerCSS
22104
22119
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
22105
22120
  const callCompositeContainerFlex = () => {
@@ -22145,7 +22160,7 @@ const CallArrangement = (props) => {
22145
22160
  React__default['default'].createElement(react.Stack, { grow: true, styles: callArrangementContainerStyles },
22146
22161
  ((_b = props.callControlProps) === null || _b === void 0 ? void 0 : _b.options) !== false &&
22147
22162
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
22148
- !isMobileWithActivePane && (React__default['default'].createElement(react.Stack.Item, { className: callControlsContainerStyles }, isLegacyCallControlEnabled((_c = props.callControlProps) === null || _c === void 0 ? void 0 : _c.options) ? (React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView,
22163
+ !isMobileWithActivePane && (React__default['default'].createElement(react.Stack.Item, { className: react.mergeStyles({ zIndex: CONTROL_BAR_Z_INDEX }) }, isLegacyCallControlEnabled((_c = props.callControlProps) === null || _c === void 0 ? void 0 : _c.options) ? (React__default['default'].createElement(CallControls, Object.assign({}, props.callControlProps, { containerWidth: containerWidth, containerHeight: containerHeight, isMobile: props.mobileView,
22149
22164
  /* @conditional-compile-remove(one-to-n-calling) */
22150
22165
  peopleButtonChecked: activePane === 'people',
22151
22166
  /* @conditional-compile-remove(one-to-n-calling) */
@@ -24392,6 +24407,14 @@ class AzureCommunicationCallAdapter {
24392
24407
  this.locator = locator;
24393
24408
  this.deviceManager = deviceManager;
24394
24409
  const isTeamsMeeting = 'meetingLink' in this.locator;
24410
+ /* @conditional-compile-remove(rooms) */
24411
+ const isRoomsCall = 'roomId' in this.locator;
24412
+ /* @conditional-compile-remove(rooms) */
24413
+ // to prevent showing components that depend on role such as local video tile, camera button, etc. in a rooms call
24414
+ // we set the default roleHint as 'Consumer' when roleHint is undefined since it has the lowest level of permissions
24415
+ if (isRoomsCall && (options === null || options === void 0 ? void 0 : options.roleHint) === undefined) {
24416
+ options = Object.assign(Object.assign({}, options), { roleHint: 'Consumer' });
24417
+ }
24395
24418
  this.context = new CallContext(callClient.getState(), isTeamsMeeting, options);
24396
24419
  this.context.onCallEnded((endCallData) => this.emitter.emit('callEnded', endCallData));
24397
24420
  const onStateChange = (clientState) => {
@@ -24837,11 +24860,11 @@ class AzureCommunicationCallAdapter {
24837
24860
  }
24838
24861
  /* @conditional-compile-remove(close-captions) */
24839
24862
  subscribeToCaptionEvents() {
24840
- var _a, _b, _c, _d;
24841
- if (((_a = this.call) === null || _a === void 0 ? void 0 : _a.state) === 'Connected') {
24842
- (_b = this.call) === null || _b === void 0 ? void 0 : _b.feature(communicationCalling.Features.TeamsCaptions).on('captionsReceived', this.captionsReceived.bind(this));
24843
- (_c = this.call) === null || _c === void 0 ? void 0 : _c.feature(communicationCalling.Features.TeamsCaptions).on('isCaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));
24844
- (_d = this.call) === null || _d === void 0 ? void 0 : _d.off('stateChanged', this.subscribeToCaptionEvents.bind(this));
24863
+ var _a, _b, _c;
24864
+ if (this.call && this.call.state === 'Connected' && _isTeamsMeetingCall(this.call)) {
24865
+ (_a = this.call) === null || _a === void 0 ? void 0 : _a.feature(communicationCalling.Features.TeamsCaptions).on('captionsReceived', this.captionsReceived.bind(this));
24866
+ (_b = this.call) === null || _b === void 0 ? void 0 : _b.feature(communicationCalling.Features.TeamsCaptions).on('isCaptionsActiveChanged', this.isCaptionsActiveChanged.bind(this));
24867
+ (_c = this.call) === null || _c === void 0 ? void 0 : _c.off('stateChanged', this.subscribeToCaptionEvents.bind(this));
24845
24868
  }
24846
24869
  }
24847
24870
  subscribeCallEvents() {