@azure/communication-react 1.3.3-alpha-202210130020.0 → 1.3.3-alpha-202210150019.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/communication-react.d.ts +5 -1
  2. package/dist/dist-cjs/communication-react/index.js +77 -23
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +1 -1
  7. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  9. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +4 -0
  10. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  11. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +1 -1
  12. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +2 -2
  13. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  14. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +8 -2
  15. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  16. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.d.ts +1 -1
  17. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js.map +1 -1
  18. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js +12 -3
  19. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js.map +1 -1
  20. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +2 -2
  21. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +6 -1
  23. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +39 -7
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +5 -1
  27. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  28. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +1 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +2 -2
  30. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  31. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +1 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
  35. package/package.json +8 -8
@@ -1488,6 +1488,10 @@ export declare interface CallCompositeStrings {
1488
1488
  * Control bar People button ToolTipContent
1489
1489
  */
1490
1490
  peopleButtonTooltipClose: string;
1491
+ /**
1492
+ * Label disaplayed on the lobby screen during a 1:1 outbound call.
1493
+ */
1494
+ outboundCallingNoticeString: string;
1491
1495
  }
1492
1496
 
1493
1497
  /**
@@ -1667,7 +1671,7 @@ export declare type CallingHandlers = {
1667
1671
  onStartScreenShare: () => Promise<void>;
1668
1672
  onStopScreenShare: () => Promise<void>;
1669
1673
  onToggleScreenShare: () => Promise<void>;
1670
- onHangUp: () => Promise<void>;
1674
+ onHangUp: (forEveryone?: boolean) => Promise<void>;
1671
1675
  onToggleHold: () => Promise<void>;
1672
1676
  onAddParticipant(participant: CommunicationUserIdentifier): Promise<void>;
1673
1677
  onAddParticipant(participant: PhoneNumberIdentifier, options: AddPhoneNumberOptions): Promise<void>;
@@ -202,7 +202,7 @@ const _toCommunicationIdentifier = (id) => {
202
202
  // Copyright (c) Microsoft Corporation.
203
203
  // Licensed under the MIT license.
204
204
  // GENERATED FILE. DO NOT EDIT MANUALLY.
205
- var telemetryVersion = '1.3.3-alpha-202210130020.0';
205
+ var telemetryVersion = '1.3.3-alpha-202210150019.0';
206
206
 
207
207
  // Copyright (c) Microsoft Corporation.
208
208
  /**
@@ -676,7 +676,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
676
676
  const onStartScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
677
677
  const onStopScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
678
678
  const onToggleScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
679
- const onHangUp = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp()); });
679
+ const onHangUp = (forEveryone) => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
680
680
  /* @conditional-compile-remove(PSTN-calls) */
681
681
  const onToggleHold = () => __awaiter$v(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()); });
682
682
  const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$v(void 0, void 0, void 0, function* () {
@@ -13130,7 +13130,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
13130
13130
  */
13131
13131
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
13132
13132
 
13133
- var call$d={cameraLabel:"Camera",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",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",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"};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",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};
13133
+ var call$d={cameraLabel:"Camera",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",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",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..."};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",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};
13134
13134
 
13135
13135
  var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",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",defaultPlaceHolder:"Select an option",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",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$c={chatListHeader:"In this chat"};var callWithChat$c={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButton:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
13136
13136
 
@@ -15029,8 +15029,8 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
15029
15029
  onCreateRemoteStreamView: (userId, options) => __awaiter$a(void 0, void 0, void 0, function* () {
15030
15030
  return yield adapter.createStreamView(userId, options);
15031
15031
  }),
15032
- onHangUp: () => __awaiter$a(void 0, void 0, void 0, function* () {
15033
- yield adapter.leaveCall();
15032
+ onHangUp: (forEveryone) => __awaiter$a(void 0, void 0, void 0, function* () {
15033
+ yield adapter.leaveCall(forEveryone);
15034
15034
  }),
15035
15035
  /* @conditional-compile-remove(PSTN-calls) */
15036
15036
  onToggleHold: () => __awaiter$a(void 0, void 0, void 0, function* () {
@@ -15248,13 +15248,22 @@ const onFetchCustomButtonPropsTrampoline$1 = (options) => {
15248
15248
  /** @private */
15249
15249
  const Devices = (props) => {
15250
15250
  const devicesButtonProps = usePropsFor$1(DevicesButton);
15251
+ /* @conditional-compile-remove(rooms) */
15252
+ const permissions = _usePermissions();
15253
+ const augmentedDeviceButtonProps = React.useMemo(() => (Object.assign(Object.assign({}, devicesButtonProps), {
15254
+ /* @conditional-compile-remove(rooms) */
15255
+ microphones: !permissions.microphoneButton ? [] : devicesButtonProps.microphones,
15256
+ /* @conditional-compile-remove(rooms) */
15257
+ cameras: !permissions.cameraButton ? [] : devicesButtonProps.cameras })), [
15258
+ devicesButtonProps,
15259
+ /* @conditional-compile-remove(rooms) */
15260
+ permissions
15261
+ ]);
15251
15262
  const styles = React.useMemo(() => {
15252
15263
  var _a;
15253
15264
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? devicesButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
15254
15265
  }, [props.increaseFlyoutItemSize, props.styles]);
15255
15266
  /* @conditional-compile-remove(rooms) */
15256
- const permissions = _usePermissions();
15257
- /* @conditional-compile-remove(rooms) */
15258
15267
  const locale = useLocale();
15259
15268
  /* @conditional-compile-remove(rooms) */
15260
15269
  const onlyManageSpeakers = !permissions.microphoneButton && !permissions.cameraButton;
@@ -15266,7 +15275,7 @@ const Devices = (props) => {
15266
15275
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
15267
15276
  , Object.assign({
15268
15277
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
15269
- persistMenu: true }, devicesButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, "data-ui-id": "calling-composite-devices-button", disabled: props.disabled,
15278
+ persistMenu: true }, augmentedDeviceButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, "data-ui-id": "calling-composite-devices-button", disabled: props.disabled,
15270
15279
  /* @conditional-compile-remove(rooms) */
15271
15280
  strings: getLabelFromPermissions(permissions, locale),
15272
15281
  /* @conditional-compile-remove(rooms) */
@@ -16824,14 +16833,20 @@ const CallArrangement = (props) => {
16824
16833
  let canUnmute = true;
16825
16834
  /* @conditional-compile-remove(rooms) */
16826
16835
  canUnmute = rolePermissions.microphoneButton;
16836
+ let errorBarProps = props.errorBarProps;
16837
+ /* @conditional-compile-remove(rooms) */
16838
+ // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK
16839
+ if (!rolePermissions.cameraButton && props.errorBarProps) {
16840
+ errorBarProps = Object.assign(Object.assign({}, props.errorBarProps), { activeErrorMessages: props.errorBarProps.activeErrorMessages.filter((e) => e.type !== 'callCameraAccessDenied') });
16841
+ }
16827
16842
  return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles) },
16828
16843
  React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
16829
16844
  React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
16830
16845
  React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
16831
16846
  React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
16832
16847
  React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
16833
- props.errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
16834
- React__default['default'].createElement(ErrorBar, Object.assign({}, props.errorBarProps)))),
16848
+ errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
16849
+ React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps)))),
16835
16850
  canUnmute && !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
16836
16851
  React__default['default'].createElement(react.Stack.Item, { grow: true, style: callCompositeContainerFlex() },
16837
16852
  React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true }, props.onRenderGalleryContent && (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles }, props.onRenderGalleryContent())))),
@@ -17615,13 +17630,18 @@ const ConfigurationPage = (props) => {
17615
17630
  const options = useAdaptedSelector(getSelector$1(DevicesButton));
17616
17631
  const localDeviceSettingsHandlers = useHandlers();
17617
17632
  const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector$1(devicePermissionSelector);
17618
- const errorBarProps = usePropsFor$1(ErrorBar);
17633
+ let errorBarProps = usePropsFor$1(ErrorBar);
17619
17634
  const adapter = useAdapter();
17620
17635
  const deviceState = adapter.getState().devices;
17621
17636
  let disableStartCallButton = !microphonePermissionGranted || ((_a = deviceState.microphones) === null || _a === void 0 ? void 0 : _a.length) === 0;
17622
17637
  /* @conditional-compile-remove(rooms) */
17623
17638
  const rolePermissions = _usePermissions();
17624
17639
  /* @conditional-compile-remove(rooms) */
17640
+ // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK
17641
+ if (!rolePermissions.cameraButton) {
17642
+ errorBarProps = Object.assign(Object.assign({}, errorBarProps), { activeErrorMessages: errorBarProps.activeErrorMessages.filter((e) => e.type !== 'callCameraAccessDenied') });
17643
+ }
17644
+ /* @conditional-compile-remove(rooms) */
17625
17645
  if (!rolePermissions.microphoneButton) {
17626
17646
  // If user's role permissions do not allow access to the microphone button then DO NOT disable the start call button
17627
17647
  // because microphone device permission is not needed for the user's role
@@ -17774,26 +17794,39 @@ const LobbyTile = (props) => {
17774
17794
  * @private
17775
17795
  */
17776
17796
  const LobbyPage = (props) => {
17777
- var _a, _b, _c;
17797
+ var _a, _b, _c, _d;
17778
17798
  const errorBarProps = usePropsFor$1(ErrorBar);
17779
17799
  const lobbyProps = useSelector$1(lobbySelector);
17780
17800
  const strings = useLocale().strings.call;
17781
17801
  const callState = useSelector$1(getCallStatus);
17782
17802
  const inLobby = callState === 'InLobby';
17803
+ const participants = (_a = useSelector$1(getRemoteParticipants)) !== null && _a !== void 0 ? _a : {};
17783
17804
  useLocalVideoStartTrigger(lobbyProps.localParticipantVideoStream.isAvailable, inLobby);
17784
17805
  // Reduce the controls shown when mobile view is enabled.
17785
17806
  let callControlOptions = props.mobileView
17786
- ? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls)
17787
- : (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;
17807
+ ? reduceCallControlsForMobile((_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls)
17808
+ : (_c = props.options) === null || _c === void 0 ? void 0 : _c.callControls;
17788
17809
  callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);
17789
- return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && Object.assign({}, errorBarProps), callControlProps: {
17810
+ return (React__default['default'].createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && Object.assign({}, errorBarProps), callControlProps: {
17790
17811
  options: callControlOptions,
17791
17812
  increaseFlyoutItemSize: props.mobileView
17792
17813
  }, mobileView: props.mobileView,
17793
17814
  /* @conditional-compile-remove(one-to-n-calling) */
17794
- modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React__default['default'].createElement(LobbyTile, Object.assign({}, lobbyProps, { overlayProps: overlayProps(strings, inLobby) })), dataUiId: 'lobby-page' }));
17815
+ modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React__default['default'].createElement(LobbyTile, Object.assign({}, lobbyProps, { overlayProps: overlayProps(strings, inLobby, Object.values(participants)) }))), dataUiId: 'lobby-page' }));
17816
+ };
17817
+ const overlayProps = (strings, inLobby, remoteParticipants) => {
17818
+ /**
17819
+ * Only grab the first participant because there will only be one in this situation.
17820
+ * when starting a call with multiple people the call goes to the connected state and composite goes directly to
17821
+ * videoGallery.
17822
+ */
17823
+ const outboundCallParticipant = remoteParticipants ? remoteParticipants[0] : undefined;
17824
+ return inLobby
17825
+ ? overlayPropsWaitingToBeAdmitted(strings)
17826
+ : outboundCallParticipant
17827
+ ? overlayPropsOutboundCall(strings, outboundCallParticipant)
17828
+ : overlayPropsConnectingToCall(strings);
17795
17829
  };
17796
- const overlayProps = (strings, inLobby) => inLobby ? overlayPropsWaitingToBeAdmitted(strings) : overlayPropsConnectingToCall(strings);
17797
17830
  const overlayPropsConnectingToCall = (strings) => ({
17798
17831
  title: strings.lobbyScreenConnectingToCallTitle,
17799
17832
  moreDetails: strings.lobbyScreenConnectingToCallMoreDetails,
@@ -17804,6 +17837,23 @@ const overlayPropsWaitingToBeAdmitted = (strings) => ({
17804
17837
  moreDetails: strings.lobbyScreenWaitingToBeAdmittedMoreDetails,
17805
17838
  overlayIcon: React__default['default'].createElement(CallCompositeIcon, { iconName: "LobbyScreenWaitingToBeAdmitted" })
17806
17839
  });
17840
+ const overlayPropsOutboundCall = (strings, participant) => {
17841
+ if (communicationCommon.isPhoneNumberIdentifier(participant.identifier)) {
17842
+ return {
17843
+ title: participant.identifier.phoneNumber,
17844
+ moreDetails: outboundCallStringsTrampoline(strings)
17845
+ };
17846
+ }
17847
+ else {
17848
+ return {
17849
+ title: outboundCallStringsTrampoline(strings)
17850
+ };
17851
+ }
17852
+ };
17853
+ const outboundCallStringsTrampoline = (strings) => {
17854
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17855
+ return strings.outboundCallingNoticeString;
17856
+ };
17807
17857
 
17808
17858
  // Copyright (c) Microsoft Corporation.
17809
17859
  /**
@@ -18521,9 +18571,9 @@ class AzureCommunicationCallAdapter {
18521
18571
  }
18522
18572
  });
18523
18573
  }
18524
- leaveCall() {
18574
+ leaveCall(forEveryone) {
18525
18575
  return __awaiter$4(this, void 0, void 0, function* () {
18526
- yield this.handlers.onHangUp();
18576
+ yield this.handlers.onHangUp(forEveryone);
18527
18577
  this.unsubscribeCallEvents();
18528
18578
  this.call = undefined;
18529
18579
  this.handlers = createDefaultCallingHandlers(this.callClient, this.callAgent, this.deviceManager, undefined);
@@ -19436,7 +19486,7 @@ class CallWithChatBackedCallAdapter {
19436
19486
  this.joinCall = (microphoneOn) => {
19437
19487
  return this.callWithChatAdapter.joinCall(microphoneOn);
19438
19488
  };
19439
- this.leaveCall = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.leaveCall(); });
19489
+ this.leaveCall = (forEveryone) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.leaveCall(forEveryone); });
19440
19490
  this.startCall = (participants, options) => {
19441
19491
  let communicationParticipants = participants;
19442
19492
  /* @conditional-compile-remove(PSTN-calls) */
@@ -19901,7 +19951,7 @@ const CallWithChatScreen = (props) => {
19901
19951
  const isInLocalHold = currentPage === 'hold';
19902
19952
  const hasJoinedCall = !!(currentPage && hasJoinedCallFn(currentPage, currentCallState !== null && currentCallState !== void 0 ? currentCallState : 'None'));
19903
19953
  const showControlBar = isInLobbyOrConnecting || hasJoinedCall;
19904
- const isMobileWithActivePane = mobileView && activePane !== 'none';
19954
+ const isMobileWithActivePane = mobileView && hasJoinedCall && activePane !== 'none';
19905
19955
  /** Constant setting of id for the parent stack of the composite */
19906
19956
  const compositeParentDivId = reactHooks.useId('callWithChatCompositeParentDiv-internal');
19907
19957
  const toggleChat = React.useCallback(() => {
@@ -19955,6 +20005,10 @@ const CallWithChatScreen = (props) => {
19955
20005
  setShowDrawer(false);
19956
20006
  togglePeople();
19957
20007
  }, [togglePeople]);
20008
+ // On mobile, when there is an active call and some side pane is active,
20009
+ // we hide the call composite via CSS to show only the pane.
20010
+ // We only set `display` to `none` instead of unmounting the call composite component tree
20011
+ // to avoid the performance cost of rerendering video streams when we later show the composite again.
19958
20012
  const callCompositeContainerCSS = React.useMemo(() => {
19959
20013
  return { display: isMobileWithActivePane ? 'none' : 'flex' };
19960
20014
  }, [isMobileWithActivePane]);
@@ -20267,10 +20321,10 @@ class AzureCommunicationCallWithChatAdapter {
20267
20321
  return this.callAdapter.joinCall(microphoneOn);
20268
20322
  }
20269
20323
  /** Leave current Call. */
20270
- leaveCall() {
20324
+ leaveCall(forEveryone) {
20271
20325
  return __awaiter(this, void 0, void 0, function* () {
20272
20326
  // Only remove self from the GroupCall. Contoso must manage access to Chat.
20273
- yield this.callAdapter.leaveCall();
20327
+ yield this.callAdapter.leaveCall(forEveryone);
20274
20328
  });
20275
20329
  }
20276
20330
  /** Start a new Call. */