@azure/communication-react 1.3.2-alpha-202208110020.0 → 1.3.3-alpha-202208170014.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 (112) hide show
  1. package/CHANGELOG.md +10 -5
  2. package/dist/communication-react.d.ts +49 -4
  3. package/dist/dist-cjs/communication-react/index.js +468 -86
  4. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +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.d.ts.map +1 -1
  8. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +2 -3
  9. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  10. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +2 -2
  12. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.d.ts.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -1
  16. package/dist/dist-esm/communication-react/src/index.js +1 -1
  17. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  18. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts +3 -1
  19. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.d.ts.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +4 -4
  21. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/HoldButton.d.ts +1 -1
  23. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +1 -1
  25. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  27. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts.map +1 -1
  28. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -3
  30. package/dist/dist-esm/react-components/src/theming/icons.js +5 -5
  31. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts.map +1 -1
  33. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +13 -0
  34. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  35. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +16 -0
  36. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts.map +1 -1
  37. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -1
  38. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts.map +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +8 -0
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +8 -2
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +67 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.d.ts +12 -0
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.d.ts.map +1 -0
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js +72 -0
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/HoldPane.js.map +1 -0
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/People.d.ts.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/People.js +11 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/People.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.d.ts.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +4 -0
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.d.ts +15 -0
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.d.ts.map +1 -0
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +27 -0
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -0
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.d.ts +32 -0
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.d.ts.map +1 -0
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js +73 -0
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/HoldPane.styles.js.map +1 -0
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts +5 -0
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/CallControlOptions.d.ts.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +5 -0
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +8 -0
  70. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +5 -1
  72. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.d.ts.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +28 -6
  75. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +2 -1
  77. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +8 -0
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  80. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +7 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts.map +1 -1
  82. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -1
  83. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +4 -0
  85. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.d.ts +8 -0
  87. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.d.ts.map +1 -0
  88. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js +49 -0
  89. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/DesktopMoreButton.js.map +1 -0
  90. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.d.ts.map +1 -1
  91. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js +21 -0
  92. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/components/MoreDrawer.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js +5 -5
  94. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -1
  95. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.d.ts +1 -1
  96. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.styles.js +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common}/MoreButton.d.ts +0 -0
  98. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.d.ts.map +1 -0
  99. package/dist/dist-esm/react-composites/src/composites/{CallWithChatComposite → common}/MoreButton.js +1 -1
  100. package/dist/dist-esm/react-composites/src/composites/common/MoreButton.js.map +1 -0
  101. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.d.ts +16 -0
  102. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.d.ts.map +1 -0
  103. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js +36 -0
  104. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js.map +1 -0
  105. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.d.ts +11 -0
  106. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.d.ts.map +1 -0
  107. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js +38 -0
  108. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js.map +1 -0
  109. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +5 -1
  110. package/package.json +8 -8
  111. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/MoreButton.d.ts.map +0 -1
  112. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/MoreButton.js.map +0 -1
@@ -192,7 +192,7 @@ const fromFlatCommunicationIdentifier = (id) => {
192
192
  // Copyright (c) Microsoft Corporation.
193
193
  // Licensed under the MIT license.
194
194
  // GENERATED FILE. DO NOT EDIT MANUALLY.
195
- var telemetryVersion = '1.3.2-alpha-202208110020.0';
195
+ var telemetryVersion = '1.3.3-alpha-202208170014.0';
196
196
 
197
197
  // Copyright (c) Microsoft Corporation.
198
198
  /**
@@ -405,7 +405,7 @@ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments,
405
405
  *
406
406
  * @internal
407
407
  */
408
- const _isInCall = (callStatus) => !!callStatus && !['None', 'Disconnected', 'Connecting'].includes(callStatus);
408
+ const _isInCall = (callStatus) => !!callStatus && !['None', 'Disconnected', 'Connecting', 'LocalHold', 'RemoteHold', 'Ringing'].includes(callStatus);
409
409
  /**
410
410
  * Check if the call state represents being in the lobby or waiting to be admitted.
411
411
  *
@@ -759,7 +759,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
759
759
  yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant));
760
760
  }
761
761
  });
762
- /* @conditional-compile-remove(dialpad) */
762
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
763
763
  const onSendDtmfTone = (dtmfTone) => __awaiter$t(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
764
764
  return {
765
765
  onHangUp,
@@ -782,8 +782,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
782
782
  onStartLocalVideo,
783
783
  onDisposeRemoteStreamView,
784
784
  onDisposeLocalStreamView,
785
- /* @conditional-compile-remove(dialpad) */
786
- onSendDtmfTone
785
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ onSendDtmfTone
787
786
  };
788
787
  });
789
788
  /**
@@ -958,7 +957,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
958
957
  wordBreak: 'break-word'
959
958
  });
960
959
 
961
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On Hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$d={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed Participant"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var HoldButton$e={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};var videoTile={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On Hold"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,HoldButton:HoldButton$e,videoTile:videoTile};
960
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On Hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$d={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed Participant"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On Hold"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton,videoTile:videoTile};
962
961
 
963
962
  var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait."};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave Call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose Camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose Audio Device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose Microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose Speaker"};var participantsButton$c={label:"People",tooltipContent:"Show Participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed Participant"};var dialpad$c={placeholderText:"Enter a number"};var HoldButton$d={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c,dialpad:dialpad$c,HoldButton:HoldButton$d};
964
963
 
@@ -1939,13 +1938,13 @@ const DEFAULT_COMPONENT_ICONS = {
1939
1938
  ParticipantItemOptionsHovered: React__default['default'].createElement(reactIcons.MoreHorizontal20Filled, null),
1940
1939
  ParticipantItemScreenShareStart: React__default['default'].createElement(reactIcons.ShareScreenStart20Filled, null),
1941
1940
  /* @conditional-compile-remove(PSTN-calls) */
1942
- HoldCall: React__default['default'].createElement(reactIcons.Pause20Filled, null),
1941
+ HoldCall: React__default['default'].createElement(reactIcons.Pause20Regular, null),
1943
1942
  /* @conditional-compile-remove(PSTN-calls) */
1944
- ResumeCall: React__default['default'].createElement(reactIcons.Play20Filled, null),
1943
+ ResumeCall: React__default['default'].createElement(reactIcons.Play20Regular, null),
1945
1944
  SendBoxSend: React__default['default'].createElement(reactIcons.Send20Regular, null),
1946
1945
  SendBoxSendHovered: React__default['default'].createElement(reactIcons.Send20Filled, null),
1947
1946
  VideoTileMicOff: React__default['default'].createElement(reactIcons.MicOff16Filled, null),
1948
- /* @conditional-compile-remove(dialpad) */
1947
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
1949
1948
  BackSpace: React__default['default'].createElement(reactIcons.Backspace20Regular, null)
1950
1949
  };
1951
1950
 
@@ -4437,7 +4436,7 @@ const ParticipantItem = (props) => {
4437
4436
  avatar,
4438
4437
  me && React__default['default'].createElement(react.Text, { className: meTextStyle }, strings.isMeText),
4439
4438
  React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(infoContainerStyle) }, onRenderIcon && onRenderIcon(props))),
4440
- !me && participantStateString ? (React__default['default'].createElement(react.Text, { className: react.mergeStyles(participantStateStringStyles) }, participantStateString)) : (React__default['default'].createElement("div", null, menuItems && menuItems.length > 0 && (React__default['default'].createElement(React__default['default'].Fragment, null,
4439
+ !me && participantStateString ? (React__default['default'].createElement(react.Text, { "data-ui-id": "participant-item-state-string", className: react.mergeStyles(participantStateStringStyles) }, participantStateString)) : (React__default['default'].createElement("div", null, menuItems && menuItems.length > 0 && (React__default['default'].createElement(React__default['default'].Fragment, null,
4441
4440
  menuButton,
4442
4441
  React__default['default'].createElement(react.ContextualMenu, { items: menuItems, hidden: menuHidden, target: containerRef, onItemClick: onDismissMenu, onDismiss: onDismissMenu, directionalHint: react.DirectionalHint.bottomRightEdge, className: contextualMenuStyle, calloutProps: {
4443
4442
  preventDismissOnEvent: _preventDismissOnEvent
@@ -7821,7 +7820,7 @@ const DialpadContainer = (props) => {
7821
7820
  var _a, _b;
7822
7821
  const theme = react.useTheme();
7823
7822
  const [textValue, setTextValue] = React.useState('');
7824
- const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange } = props;
7823
+ const { onSendDtmfTone, onClickDialpadButton, onDisplayDialpadInput, onChange, showDeleteButton = true } = props;
7825
7824
  const sanitizeInput = (input) => {
7826
7825
  // remove non-valid characters from input: letters,special characters excluding +, *,#
7827
7826
  return input.replace(/[^\d*#+]/g, '');
@@ -7868,7 +7867,7 @@ const DialpadContainer = (props) => {
7868
7867
  }
7869
7868
  }, placeholder: props.strings.placeholderText, "data-test-id": "dialpad-input", onRenderSuffix: () => {
7870
7869
  var _a;
7871
- return (React__default['default'].createElement(React__default['default'].Fragment, null, textValue.length !== 0 && (React__default['default'].createElement(react.IconButton, { ariaLabel: props.strings.deleteButtonAriaLabel, onClick: deleteNumbers, styles: react.concatStyleSets(iconButtonStyles(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.deleteIcon), iconProps: { iconName: 'BackSpace' } }))));
7870
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, showDeleteButton && textValue.length !== 0 && (React__default['default'].createElement(react.IconButton, { ariaLabel: props.strings.deleteButtonAriaLabel, onClick: deleteNumbers, styles: react.concatStyleSets(iconButtonStyles(theme), (_a = props.styles) === null || _a === void 0 ? void 0 : _a.deleteIcon), iconProps: { iconName: 'BackSpace' } }))));
7872
7871
  } }),
7873
7872
  React__default['default'].createElement(react.FocusZone, null, dialPadButtonsDefault.map((rows, rowIndex) => {
7874
7873
  return (React__default['default'].createElement(react.Stack, { horizontal: true, key: `row_${rowIndex}`, horizontalAlign: "stretch" }, rows.map((button, columnIndex) => (React__default['default'].createElement(DialpadButton, { key: `button_${columnIndex}`,
@@ -7899,10 +7898,10 @@ const DialpadContainer = (props) => {
7899
7898
  * @beta
7900
7899
  */
7901
7900
  const Dialpad = (props) => {
7902
- /* @conditional-compile-remove(dialpad) */
7901
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
7903
7902
  const localeStrings = useLocale$1().strings.dialpad;
7904
7903
  const dialpadLocaleStringsTrampoline = () => {
7905
- /* @conditional-compile-remove(dialpad) */
7904
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
7906
7905
  return localeStrings;
7907
7906
  };
7908
7907
  const strings = Object.assign(Object.assign({}, dialpadLocaleStringsTrampoline()), props.strings);
@@ -8335,7 +8334,7 @@ const getSelector$1 = (component) => {
8335
8334
  return findSelector$1(component);
8336
8335
  };
8337
8336
  const findSelector$1 = (component) => {
8338
- /* @conditional-compile-remove(dialpad) */
8337
+ /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
8339
8338
  // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector
8340
8339
  if (component === Dialpad) {
8341
8340
  return emptySelector;
@@ -12664,7 +12663,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
12664
12663
  */
12665
12664
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
12666
12665
 
12667
- 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",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",peopleButtonLabel:"People",peoplePaneTitle:"People",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",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close Dialpad"};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",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"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12666
+ 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",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",peopleButtonLabel:"People",peoplePaneTitle:"People",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",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",resumeCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold"};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",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"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
12668
12667
 
12669
12668
  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};
12670
12669
 
@@ -14397,6 +14396,10 @@ const getCallCompositePage = (call, previousCall) => {
14397
14396
  else if (_isInCall(call === null || call === void 0 ? void 0 : call.state)) {
14398
14397
  return 'call';
14399
14398
  }
14399
+ else if ((call === null || call === void 0 ? void 0 : call.state) === 'LocalHold') {
14400
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
14401
+ return 'hold';
14402
+ }
14400
14403
  else {
14401
14404
  // When the call object has been constructed after clicking , but before 'connecting' has been
14402
14405
  // set on the call object, we continue to show the configuration screen.
@@ -14463,6 +14466,10 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
14463
14466
  onAddParticipant: (participant, options) => __awaiter$9(void 0, void 0, void 0, function* () {
14464
14467
  return yield adapter.addParticipant(participant, options);
14465
14468
  }),
14469
+ /* @conditional-compile-remove(PSTN-calls) */
14470
+ onSendDtmfTone: (dtmfTone) => __awaiter$9(void 0, void 0, void 0, function* () {
14471
+ yield adapter.sendDtmfTone(dtmfTone);
14472
+ }),
14466
14473
  onRemoveParticipant: (userId) => __awaiter$9(void 0, void 0, void 0, function* () {
14467
14474
  yield adapter.removeParticipant(userId);
14468
14475
  }),
@@ -14821,6 +14828,12 @@ const icon$2 = () => React__default['default'].createElement(CallCompositeIcon,
14821
14828
  /** @beta */
14822
14829
  const People = (props) => {
14823
14830
  const { strings, onRenderOnIcon, onRenderOffIcon, onClick } = props;
14831
+ /* @conditional-compile-remove(rooms) */
14832
+ let disabled = props.disabled;
14833
+ /* @conditional-compile-remove(rooms) */
14834
+ const permissions = _usePermissions();
14835
+ /* @conditional-compile-remove(rooms) */
14836
+ disabled = disabled || !permissions.participantList;
14824
14837
  const theme = useTheme();
14825
14838
  const styles = React.useMemo(() => {
14826
14839
  var _a;
@@ -14830,7 +14843,125 @@ const People = (props) => {
14830
14843
  }
14831
14844
  }, (_a = props.styles) !== null && _a !== void 0 ? _a : {}, controlButtonBaseStyle);
14832
14845
  }, [props.styles, theme.palette.neutralLight]);
14833
- return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { "data-ui-id": "call-composite-participants-button", strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon$2, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon$2, onClick: onClick, styles: styles })));
14846
+ return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { "data-ui-id": "call-composite-participants-button", strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon$2, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon$2, onClick: onClick, styles: styles,
14847
+ /* @conditional-compile-remove(rooms) */
14848
+ disabled: disabled })));
14849
+ };
14850
+
14851
+ // Copyright (c) Microsoft Corporation.
14852
+ const icon$1 = () => React__default['default'].createElement(reactIcons.MoreHorizontal20Filled, { key: 'chatOnIconKey', primaryFill: "currentColor" });
14853
+ /**
14854
+ * @private
14855
+ */
14856
+ const MoreButton = (props) => {
14857
+ return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { labelKey: 'optionsButtonLabelKey', showLabel: props.showLabel, onRenderOnIcon: icon$1, onRenderOffIcon: icon$1, onClick: props.onClick, "data-ui-id": 'call-with-chat-composite-more-button' })));
14858
+ };
14859
+
14860
+ // Copyright (c) Microsoft Corporation.
14861
+ // Licensed under the MIT license.
14862
+ /**
14863
+ * @private
14864
+ */
14865
+ const themeddialpadModalStyle$1 = (theme) => ({
14866
+ main: {
14867
+ borderRadius: theme.effects.roundedCorner6,
14868
+ padding: '1rem'
14869
+ }
14870
+ });
14871
+ /**
14872
+ * @private
14873
+ */
14874
+ const themedDialpadStyle$1 = (isMobile, theme) => ({
14875
+ root: {
14876
+ padding: 0,
14877
+ marginLeft: 0,
14878
+ marginRight: 0,
14879
+ maxWidth: '100%'
14880
+ },
14881
+ textField: {
14882
+ root: {
14883
+ borderBottom: `1px solid ${theme.palette.neutralTertiaryAlt}`
14884
+ },
14885
+ field: {
14886
+ backgroundColor: theme.palette.white,
14887
+ fontSize: theme.fonts.large.fontSize,
14888
+ padding: '1.063rem 0.5rem',
14889
+ textAlign: 'center',
14890
+ paddingTop: 0
14891
+ }
14892
+ },
14893
+ primaryContent: {
14894
+ color: theme.palette.themeDarkAlt
14895
+ }
14896
+ });
14897
+
14898
+ // Copyright (c) Microsoft Corporation.
14899
+ // Licensed under the MIT license.
14900
+ /**
14901
+ * @private
14902
+ */
14903
+ const compositeOuterContainerStyles = {
14904
+ root: {
14905
+ width: '100%',
14906
+ // Create a new stacking context so that DrawerMenu can be positioned absolutely.
14907
+ position: 'relative'
14908
+ }
14909
+ };
14910
+ /** @private */
14911
+ const callCompositeContainerStyles = {
14912
+ root: {
14913
+ // Start a new stacking context so that any `position:absolute` elements
14914
+ // inside the call composite do not compete with its siblings.
14915
+ position: 'relative'
14916
+ }
14917
+ };
14918
+ /** @private */
14919
+ const controlBarContainerStyles$1 = {
14920
+ root: {
14921
+ // Start a new stacking context so that any `position:absolute` elements
14922
+ // inside the control bar do not compete with its siblings.
14923
+ position: 'relative'
14924
+ }
14925
+ };
14926
+ /** @private */
14927
+ const drawerContainerStyles$1 = {
14928
+ root: {
14929
+ position: 'absolute',
14930
+ top: 0,
14931
+ left: 0,
14932
+ width: '100%',
14933
+ height: '100%',
14934
+ // Any zIndex > 0 will work because this is the only absolutely
14935
+ // positioned element in the container.
14936
+ zIndex: 1
14937
+ }
14938
+ };
14939
+
14940
+ // Copyright (c) Microsoft Corporation.
14941
+ /** @private */
14942
+ const SendDtmfDialpad = (props) => {
14943
+ const dialpadProps = usePropsFor$1(Dialpad);
14944
+ const { strings, isMobile, showDialpad, onDismissDialpad } = props;
14945
+ const theme = react.useTheme();
14946
+ const onDismissTriggered = () => {
14947
+ onDismissDialpad();
14948
+ };
14949
+ const dialpadModalStyle = React.useMemo(() => themeddialpadModalStyle$1(theme), [theme]);
14950
+ const dialpadStyle = React.useMemo(() => themedDialpadStyle$1(isMobile, theme), [theme, isMobile]);
14951
+ const dialpadStrings = {
14952
+ placeholderText: ''
14953
+ };
14954
+ if (isMobile) {
14955
+ return (React__default['default'].createElement(react.Stack, null, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
14956
+ React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
14957
+ React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } },
14958
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false }))))))));
14959
+ }
14960
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModalStyle },
14961
+ React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "end", verticalAlign: "center" },
14962
+ React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: theme.palette.black } })),
14963
+ React__default['default'].createElement(react.Stack, null,
14964
+ React__default['default'].createElement(Dialpad, Object.assign({ styles: dialpadStyle }, dialpadProps, { showDeleteButton: false, strings: dialpadStrings }))))));
14834
14965
  };
14835
14966
 
14836
14967
  // Copyright (c) Microsoft Corporation.
@@ -14849,6 +14980,51 @@ const CallControls = (props) => {
14849
14980
  tooltipOffContent: localeStrings.strings.callWithChat.peopleButtonTooltipOpen,
14850
14981
  tooltipOnContent: localeStrings.strings.callWithChat.peopleButtonTooltipClose
14851
14982
  }), [localeStrings]);
14983
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
14984
+ const moreButtonStrings = React.useMemo(() => ({
14985
+ label: localeStrings.strings.call.moreButtonCallingLabel,
14986
+ tooltipOffContent: localeStrings.strings.callWithChat.moreDrawerButtonTooltip
14987
+ }), [localeStrings]);
14988
+ /* @conditional-compile-remove(PSTN-calls) */
14989
+ const dialpadStrings = React.useMemo(() => ({
14990
+ dialpadModalAriaLabel: localeStrings.strings.call.dialpadModalAriaLabel,
14991
+ dialpadCloseModalButtonAriaLabel: localeStrings.strings.call.dialpadCloseModalButtonAriaLabel
14992
+ }), [localeStrings]);
14993
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
14994
+ const holdButtonProps = usePropsFor$1(HoldButton);
14995
+ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
14996
+ const moreButtonContextualMenuItems = () => {
14997
+ const items = [];
14998
+ if (props.isMobile && props.onPeopleButtonClicked) {
14999
+ items.push({
15000
+ key: 'peopleButtonKey',
15001
+ text: localeStrings.component.strings.participantsButton.label,
15002
+ onClick: () => {
15003
+ if (props.onPeopleButtonClicked) {
15004
+ props.onPeopleButtonClicked();
15005
+ }
15006
+ },
15007
+ iconProps: { iconName: 'ControlButtonParticipants', styles: { root: { lineHeight: 0 } } },
15008
+ itemProps: {
15009
+ styles: buttonFlyoutIncreasedSizeStyles
15010
+ }
15011
+ });
15012
+ }
15013
+ items.push({
15014
+ key: 'holdButtonKey',
15015
+ text: localeStrings.component.strings.holdButton.tooltipOffContent,
15016
+ onClick: () => {
15017
+ holdButtonProps.onToggleHold();
15018
+ },
15019
+ iconProps: { iconName: 'HoldCall', styles: { root: { lineHeight: 0 } } },
15020
+ itemProps: {
15021
+ styles: buttonFlyoutIncreasedSizeStyles
15022
+ }
15023
+ });
15024
+ return items;
15025
+ };
15026
+ /* @conditional-compile-remove(PSTN-calls) */
15027
+ const [showDialpad, setShowDialpad] = React.useState(false);
14852
15028
  const theme = react.useTheme();
14853
15029
  /* @conditional-compile-remove(control-bar-button-injection) */
14854
15030
  const customButtons = React.useMemo(() => generateCustomControlBarButtons(onFetchCustomButtonPropsTrampoline$1(options), options === null || options === void 0 ? void 0 : options.displayType), [options]);
@@ -14856,16 +15032,25 @@ const CallControls = (props) => {
14856
15032
  if (props.options === false) {
14857
15033
  return React__default['default'].createElement(React__default['default'].Fragment, null);
14858
15034
  }
15035
+ /* @conditional-compile-remove(PSTN-calls) */
15036
+ const onDismissDialpad = () => {
15037
+ setShowDialpad(false);
15038
+ };
14859
15039
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
15040
+ /* @conditional-compile-remove(PSTN-calls) */
15041
+ React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
14860
15042
  React__default['default'].createElement(react.Stack.Item, null,
14861
15043
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: controlBarStyles(theme.semanticColors.bodyBackground) },
14862
15044
  isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
14863
15045
  isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType }),
14864
15046
  isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType })),
14865
- isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile })) && (
15047
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) &&
15048
+ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */ !props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile })) && (
14866
15049
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
14867
15050
  React__default['default'].createElement(People, { checked: props.peopleButtonChecked, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: isDisabled(options === null || options === void 0 ? void 0 : options.participantsButton), strings: peopleButtonStrings })),
14868
15051
  isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize })),
15052
+ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
15053
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && (React__default['default'].createElement(MoreButton, { strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: !props.isMobile })),
14869
15054
  customButtons['primary'],
14870
15055
  isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType })))));
14871
15056
  };
@@ -14892,7 +15077,7 @@ const callStatusSelector = reselect.createSelector([getCallStatus, getIsScreenSh
14892
15077
  // Copyright (c) Microsoft Corporation.
14893
15078
  // Licensed under the MIT license.
14894
15079
  /** @private */
14895
- const controlBarContainerStyles$1 = {
15080
+ const controlBarContainerStyles = {
14896
15081
  paddingTop: '0.25rem',
14897
15082
  paddingBottom: '0.25rem',
14898
15083
  // @TODO: this should be exposed through a custom CallComposite Theme API that extends the fluent theme with semantic values
@@ -14911,7 +15096,7 @@ const NOTIFICATION_CONTAINER_Z_INDEX = Math.max(CONTROL_BAR_Z_INDEX, VIDEO_GALLE
14911
15096
  /**
14912
15097
  * @private
14913
15098
  */
14914
- const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles$1, {
15099
+ const callControlsContainerStyles = react.mergeStyles(controlBarContainerStyles, {
14915
15100
  zIndex: CONTROL_BAR_Z_INDEX
14916
15101
  });
14917
15102
  const containerStyle$2 = {
@@ -15336,7 +15521,7 @@ const iconStyles = {
15336
15521
  /**
15337
15522
  * @private
15338
15523
  */
15339
- const themedDialpadModelStyle = (theme) => ({
15524
+ const themeddialpadModalStyle = (theme) => ({
15340
15525
  main: {
15341
15526
  borderRadius: theme.effects.roundedCorner6,
15342
15527
  padding: '1rem'
@@ -15385,48 +15570,6 @@ const themedCallButtonStyle = (theme) => ({
15385
15570
  }
15386
15571
  });
15387
15572
 
15388
- // Copyright (c) Microsoft Corporation.
15389
- // Licensed under the MIT license.
15390
- /**
15391
- * @private
15392
- */
15393
- const compositeOuterContainerStyles = {
15394
- root: {
15395
- width: '100%',
15396
- // Create a new stacking context so that DrawerMenu can be positioned absolutely.
15397
- position: 'relative'
15398
- }
15399
- };
15400
- /** @private */
15401
- const callCompositeContainerStyles = {
15402
- root: {
15403
- // Start a new stacking context so that any `position:absolute` elements
15404
- // inside the call composite do not compete with its siblings.
15405
- position: 'relative'
15406
- }
15407
- };
15408
- /** @private */
15409
- const controlBarContainerStyles = {
15410
- root: {
15411
- // Start a new stacking context so that any `position:absolute` elements
15412
- // inside the control bar do not compete with its siblings.
15413
- position: 'relative'
15414
- }
15415
- };
15416
- /** @private */
15417
- const drawerContainerStyles$1 = {
15418
- root: {
15419
- position: 'absolute',
15420
- top: 0,
15421
- left: 0,
15422
- width: '100%',
15423
- height: '100%',
15424
- // Any zIndex > 0 will work because this is the only absolutely
15425
- // positioned element in the container.
15426
- zIndex: 1
15427
- }
15428
- };
15429
-
15430
15573
  // Copyright (c) Microsoft Corporation.
15431
15574
  /** @private */
15432
15575
  const CallingDialpad = (props) => {
@@ -15448,7 +15591,7 @@ const CallingDialpad = (props) => {
15448
15591
  onDismissTriggered();
15449
15592
  }
15450
15593
  };
15451
- const dialpadModelStyle = React.useMemo(() => themedDialpadModelStyle(theme), [theme]);
15594
+ const dialpadModalStyle = React.useMemo(() => themeddialpadModalStyle(theme), [theme]);
15452
15595
  const dialpadStyle = React.useMemo(() => themedDialpadStyle(isMobile, theme), [theme, isMobile]);
15453
15596
  const callButtonStyle = React.useMemo(() => themedCallButtonStyle(theme), [theme]);
15454
15597
  const dialpadComponent = () => {
@@ -15459,12 +15602,12 @@ const CallingDialpad = (props) => {
15459
15602
  if (isMobile) {
15460
15603
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-with-chat-composite-dialpad" }, showDialpad && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
15461
15604
  React__default['default'].createElement(_DrawerSurface, { onLightDismiss: onDismissTriggered },
15462
- React__default['default'].createElement(react.Stack, { style: { padding: '16px' } }, dialpadComponent()))))));
15605
+ React__default['default'].createElement(react.Stack, { style: { padding: '1rem' } }, dialpadComponent()))))));
15463
15606
  }
15464
- return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModelStyle, "data-ui-id": "call-with-chat-composite-dialpad" },
15607
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Modal, { titleAriaId: strings.dialpadModalAriaLabel, isOpen: showDialpad, onDismiss: onDismissTriggered, isBlocking: true, styles: dialpadModalStyle, "data-ui-id": "call-with-chat-composite-dialpad" },
15465
15608
  React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" },
15466
15609
  React__default['default'].createElement(react.Text, null, strings.dialpadModalTitle),
15467
- React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: 'black' } })),
15610
+ React__default['default'].createElement(react.IconButton, { iconProps: { iconName: 'Cancel' }, ariaLabel: strings.dialpadCloseModalButtonAriaLabel, onClick: onDismissTriggered, style: { color: theme.palette.black } })),
15468
15611
  React__default['default'].createElement(react.Stack, null, dialpadComponent()))));
15469
15612
  };
15470
15613
  function DialpadStartCallIconTrampoline() {
@@ -16961,6 +17104,154 @@ const overlayPropsWaitingToBeAdmitted = (strings) => ({
16961
17104
  overlayIcon: React__default['default'].createElement(CallCompositeIcon, { iconName: "LobbyScreenWaitingToBeAdmitted" })
16962
17105
  });
16963
17106
 
17107
+ // Copyright (c) Microsoft Corporation.
17108
+ /**
17109
+ * styles for hold pane resume button
17110
+ *
17111
+ * @private
17112
+ */
17113
+ const resumeButtonStyles = {
17114
+ root: {
17115
+ borderRadius: _pxToRem(4),
17116
+ padding: `${_pxToRem(6)} ${_pxToRem(20)} `
17117
+ },
17118
+ label: {
17119
+ fontWeight: 400,
17120
+ display: 'flex',
17121
+ fontSize: _pxToRem(14)
17122
+ }
17123
+ };
17124
+ /**
17125
+ * styles for hold pane main text
17126
+ *
17127
+ * @private
17128
+ */
17129
+ const holdPaneLabelStyles = {
17130
+ root: {
17131
+ color: '#FFFFFF',
17132
+ fontWeight: 600,
17133
+ fontHeight: _pxToRem(22),
17134
+ fontSize: _pxToRem(16),
17135
+ margin: '1rem auto 0.5rem'
17136
+ }
17137
+ };
17138
+ /**
17139
+ * styles for hold pane timer
17140
+ *
17141
+ * @private
17142
+ */
17143
+ const holdPaneTimerStyles = {
17144
+ root: {
17145
+ color: '#FFFFFF',
17146
+ fontWeight: 600,
17147
+ fontSize: _pxToRem(20),
17148
+ lineHeight: _pxToRem(28),
17149
+ margin: 'auto'
17150
+ }
17151
+ };
17152
+ /**
17153
+ * styles for hold pane container
17154
+ *
17155
+ * @private
17156
+ */
17157
+ const paneStyles = {
17158
+ root: {
17159
+ width: '100%',
17160
+ height: '100%',
17161
+ background: 'rgba(0, 0, 0, 0.5)'
17162
+ }
17163
+ };
17164
+ /**
17165
+ * styles for the hold pane content container
17166
+ *
17167
+ * @private
17168
+ */
17169
+ const holdPaneContentStyles = {
17170
+ root: {
17171
+ display: 'flex',
17172
+ margin: 'auto',
17173
+ flexDirection: 'column',
17174
+ justifyContent: 'center'
17175
+ }
17176
+ };
17177
+
17178
+ // Copyright (c) Microsoft Corporation.
17179
+ /**
17180
+ * Hold pane to display when the user places themselves on hold
17181
+ *
17182
+ * @beta
17183
+ */
17184
+ const HoldPane = () => {
17185
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17186
+ const holdButtonProps = usePropsFor$1(HoldButton);
17187
+ const locale = useLocale();
17188
+ const strings = stringsTrampoline(locale);
17189
+ const [time, setTime] = React.useState(0);
17190
+ const elapsedTime = getReadableTime(time);
17191
+ const startTime = React.useRef(performance.now());
17192
+ React__default['default'].useEffect(() => {
17193
+ const interval = setInterval(() => {
17194
+ setTime(performance.now() - startTime.current);
17195
+ }, 10);
17196
+ return () => {
17197
+ clearInterval(interval);
17198
+ };
17199
+ }, [startTime]);
17200
+ return (React__default['default'].createElement(react.Stack, { styles: paneStyles },
17201
+ React__default['default'].createElement(react.Stack, { horizontal: true, styles: holdPaneContentStyles },
17202
+ React__default['default'].createElement(react.Text, { styles: holdPaneTimerStyles }, elapsedTime),
17203
+ React__default['default'].createElement(react.Text, { styles: holdPaneLabelStyles }, strings.holdScreenLabel),
17204
+ React__default['default'].createElement(react.PrimaryButton, { text: strings.resumeCallButtonLabel, ariaLabel: strings.resumeCallButtonAriaLabel, styles: resumeButtonStyles, onClick: () => {
17205
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17206
+ holdButtonProps.onToggleHold();
17207
+ } }))));
17208
+ };
17209
+ const getMinutes = (time) => {
17210
+ return Math.floor(getSeconds(time) / 60);
17211
+ };
17212
+ const getSeconds = (time) => {
17213
+ return Math.floor(time / 1000);
17214
+ };
17215
+ const getHours = (time) => {
17216
+ return Math.floor(getMinutes(time) / 60);
17217
+ };
17218
+ /**
17219
+ * @internal
17220
+ */
17221
+ const getReadableTime = (time) => {
17222
+ const hours = getHours(time);
17223
+ const readableMinutes = ('0' + (getMinutes(time) % 60)).slice(-2);
17224
+ const readableSeconds = ('0' + (getSeconds(time) % 60)).slice(-2);
17225
+ return `${hours > 0 ? hours + ':' : ''}${readableMinutes}:${readableSeconds}`;
17226
+ };
17227
+ const stringsTrampoline = (locale) => {
17228
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17229
+ return {
17230
+ holdScreenLabel: locale.strings.call.holdScreenLabel,
17231
+ resumeCallButtonLabel: locale.strings.call.resumeCallButtonLabel,
17232
+ resumeCallButtonAriaLabel: locale.strings.call.resumeCallButtonAriaLabel
17233
+ };
17234
+ };
17235
+
17236
+ // Copyright (c) Microsoft Corporation.
17237
+ /**
17238
+ * @beta
17239
+ */
17240
+ const HoldPage = (props) => {
17241
+ var _a, _b, _c;
17242
+ const errorBarProps = usePropsFor$1(ErrorBar);
17243
+ const strings = useLocale().strings.call;
17244
+ const callControlOptions = props.mobileView
17245
+ ? reduceCallControlsForMobile((_a = props.options) === null || _a === void 0 ? void 0 : _a.callControls)
17246
+ : (_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls;
17247
+ 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: {
17248
+ options: callControlOptions,
17249
+ increaseFlyoutItemSize: props.mobileView
17250
+ }, mobileView: props.mobileView,
17251
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17252
+ modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React__default['default'].createElement(HoldPane, null), dataUiId: 'hold-page' }));
17253
+ };
17254
+
16964
17255
  // Copyright (c) Microsoft Corporation.
16965
17256
  // Licensed under the MIT license.
16966
17257
  var __awaiter$5 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -17006,6 +17297,11 @@ const MainScreen = (props) => {
17006
17297
  /* @conditional-compile-remove(one-to-n-calling) */
17007
17298
  modalLayerHostId: props.modalLayerHostId, options: props.options }));
17008
17299
  break;
17300
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
17301
+ case holdPageTrampoline():
17302
+ pageElement = (React__default['default'].createElement(React__default['default'].Fragment, null,
17303
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ React__default['default'].createElement(HoldPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options })));
17304
+ break;
17009
17305
  default:
17010
17306
  throw new Error('Invalid call composite page');
17011
17307
  }
@@ -17061,6 +17357,11 @@ const CallComposite = (props) => {
17061
17357
  /* @conditional-compile-remove(one-to-n-calling) */
17062
17358
  mobileView && React__default['default'].createElement(react.LayerHost, { id: modalLayerHostId, className: react.mergeStyles(modalLayerHostStyle) })))));
17063
17359
  };
17360
+ const holdPageTrampoline = () => {
17361
+ /* @conditional-compile-remove(one-to-n-calling) */
17362
+ /* @conditional-compile-remove(PSTN-calls) */
17363
+ return 'hold';
17364
+ };
17064
17365
 
17065
17366
  /**
17066
17367
  * @private
@@ -17295,6 +17596,8 @@ class AzureCommunicationCallAdapter {
17295
17596
  this.holdCall.bind(this);
17296
17597
  /* @conditional-compile-remove(PSTN-calls) */
17297
17598
  this.resumeCall.bind(this);
17599
+ /* @conditional-compile-remove(PSTN-calls) */
17600
+ this.sendDtmfTone.bind(this);
17298
17601
  }
17299
17602
  dispose() {
17300
17603
  this.resetDiagnosticsForwarder();
@@ -17554,6 +17857,12 @@ class AzureCommunicationCallAdapter {
17554
17857
  }
17555
17858
  });
17556
17859
  }
17860
+ /* @conditional-compile-remove(PSTN-calls) */
17861
+ sendDtmfTone(dtmfTone) {
17862
+ return __awaiter$4(this, void 0, void 0, function* () {
17863
+ this.handlers.onSendDtmfTone(dtmfTone);
17864
+ });
17865
+ }
17557
17866
  getState() {
17558
17867
  return this.context.getState();
17559
17868
  }
@@ -17794,7 +18103,7 @@ const isOutboundCall = (callLocator) => {
17794
18103
  };
17795
18104
 
17796
18105
  // Copyright (c) Microsoft Corporation.
17797
- const icon$1 = () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: 'ControlBarPeopleButton' });
18106
+ const icon = () => React__default['default'].createElement(CallWithChatCompositeIcon, { iconName: 'ControlBarPeopleButton' });
17798
18107
  /**
17799
18108
  * @private
17800
18109
  */
@@ -17809,7 +18118,7 @@ const PeopleButton = (props) => {
17809
18118
  }
17810
18119
  }, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
17811
18120
  }, [props.styles, theme.palette.neutralLight]);
17812
- return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon$1, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon$1, onClick: onClick, styles: styles })));
18121
+ 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 })));
17813
18122
  };
17814
18123
 
17815
18124
  // Copyright (c) Microsoft Corporation.
@@ -17945,15 +18254,6 @@ const chatNotificationContainerStyles = {
17945
18254
  }
17946
18255
  };
17947
18256
 
17948
- // Copyright (c) Microsoft Corporation.
17949
- const icon = () => React__default['default'].createElement(reactIcons.MoreHorizontal20Filled, { key: 'chatOnIconKey', primaryFill: "currentColor" });
17950
- /**
17951
- * @private
17952
- */
17953
- const MoreButton = (props) => {
17954
- return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { labelKey: 'optionsButtonLabelKey', showLabel: false, onRenderOnIcon: icon, onRenderOffIcon: icon, onClick: props.onClick, "data-ui-id": 'call-with-chat-composite-more-button' })));
17955
- };
17956
-
17957
18257
  // Copyright (c) Microsoft Corporation.
17958
18258
  /**
17959
18259
  * Max number of Custom Buttons in primary and secondary ControlBar
@@ -18016,6 +18316,42 @@ const onFetchCustomButtonPropsTrampoline = (options) => {
18016
18316
  return response;
18017
18317
  };
18018
18318
 
18319
+ // Copyright (c) Microsoft Corporation.
18320
+ /**
18321
+ *
18322
+ * @private
18323
+ */
18324
+ const DesktopMoreButton = (props) => {
18325
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18326
+ const localeStrings = useLocale();
18327
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18328
+ const holdButtonProps = usePropsFor$1(HoldButton);
18329
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18330
+ const moreButtonStrings = React.useMemo(() => ({
18331
+ label: localeStrings.strings.call.moreButtonCallingLabel,
18332
+ tooltipOffContent: localeStrings.strings.callWithChat.moreDrawerButtonTooltip
18333
+ }), [localeStrings]);
18334
+ const moreButtonContextualMenuItems = () => {
18335
+ const items = [];
18336
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18337
+ items.push({
18338
+ key: 'holdButtonKey',
18339
+ text: localeStrings.component.strings.holdButton.tooltipOffContent,
18340
+ onClick: () => {
18341
+ holdButtonProps.onToggleHold();
18342
+ },
18343
+ iconProps: { iconName: 'HoldCall', styles: { root: { lineHeight: 0 } } },
18344
+ itemProps: {
18345
+ styles: buttonFlyoutIncreasedSizeStyles
18346
+ }
18347
+ });
18348
+ return items;
18349
+ };
18350
+ return (React__default['default'].createElement(MoreButton, Object.assign({}, props, { "data-ui-id": "call-with-chat-composite-more-button",
18351
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18352
+ strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() } })));
18353
+ };
18354
+
18019
18355
  // Copyright (c) Microsoft Corporation.
18020
18356
  const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) => {
18021
18357
  if (callWithChatControls === false) {
@@ -18037,7 +18373,7 @@ const inferCallWithChatControlOptions$1 = (mobileView, callWithChatControls) =>
18037
18373
  * @private
18038
18374
  */
18039
18375
  const CallWithChatControlBar = (props) => {
18040
- var _a, _b;
18376
+ var _a, _b, _c;
18041
18377
  const theme = react.useTheme();
18042
18378
  const callWithChatStrings = useCallWithChatCompositeStrings();
18043
18379
  const options = inferCallWithChatControlOptions$1(props.mobileView, props.callControls);
@@ -18069,14 +18405,27 @@ const CallWithChatControlBar = (props) => {
18069
18405
  const endCallButtonStyles = React.useMemo(() => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined), [props.mobileView, theme]);
18070
18406
  /* @conditional-compile-remove(control-bar-button-injection) */
18071
18407
  const customButtons = React.useMemo(() => generateCustomCallWithChatControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);
18408
+ /* @conditional-compile-remove(PSTN-calls) */
18409
+ const dialpadStrings = React.useMemo(() => ({
18410
+ dialpadModalAriaLabel: callWithChatStrings.dialpadModalAriaLabel,
18411
+ dialpadCloseModalButtonAriaLabel: callWithChatStrings.dialpadCloseModalButtonAriaLabel
18412
+ }), [callWithChatStrings]);
18413
+ /* @conditional-compile-remove(PSTN-calls) */
18414
+ const [showDialpad, setShowDialpad] = React.useState(false);
18072
18415
  // when options is false then we want to hide the whole control bar.
18073
18416
  if (options === false) {
18074
18417
  return React__default['default'].createElement(React__default['default'].Fragment, null);
18075
18418
  }
18076
18419
  const chatButton = (React__default['default'].createElement(ChatButtonWithUnreadMessagesBadge, { chatAdapter: props.chatAdapter, checked: props.chatButtonChecked, showLabel: options.displayType !== 'compact', isChatPaneVisible: props.chatButtonChecked, onClick: props.onChatButtonClicked, disabled: props.disableButtonsForLobbyPage, strings: chatButtonStrings, styles: commonButtonStyles, newMessageLabel: callWithChatStrings.chatButtonNewMessageNotificationLabel }));
18077
- return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles$1) },
18420
+ /* @conditional-compile-remove(PSTN-calls) */
18421
+ const onDismissDialpad = () => {
18422
+ setShowDialpad(false);
18423
+ };
18424
+ return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(callControlsContainerStyles, controlBarContainerStyles) },
18078
18425
  React__default['default'].createElement(react.Stack.Item, { grow: true },
18079
18426
  React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
18427
+ /* @conditional-compile-remove(PSTN-calls) */
18428
+ React__default['default'].createElement(SendDtmfDialpad, { isMobile: (_a = props.mobileView) !== null && _a !== void 0 ? _a : false, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
18080
18429
  React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
18081
18430
  React__default['default'].createElement(react.Stack.Item, null,
18082
18431
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: centerContainerStyles },
@@ -18085,18 +18434,21 @@ const CallWithChatControlBar = (props) => {
18085
18434
  props.mobileView && isEnabled$1(options === null || options === void 0 ? void 0 : options.chatButton) && chatButton,
18086
18435
  isEnabled$1(options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles })),
18087
18436
  /* @conditional-compile-remove(control-bar-button-injection) */
18088
- (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
18089
- _a.props.children.slice(0, props.mobileView
18437
+ (_b = customButtons['primary']) === null || _b === void 0 ? void 0 :
18438
+ _b.props.children.slice(0, props.mobileView
18090
18439
  ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
18091
18440
  : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18092
18441
  return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.strings.label, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
18093
18442
  }),
18094
18443
  props.mobileView && (React__default['default'].createElement(MoreButton, { "data-ui-id": "call-with-chat-composite-more-button", strings: moreButtonStrings, onClick: props.onMoreButtonClicked, disabled: props.disableButtonsForLobbyPage })),
18444
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.moreButton) &&
18445
+ /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled$1(options === null || options === void 0 ? void 0 : options.holdButton) &&
18446
+ !props.mobileView && (React__default['default'].createElement(DesktopMoreButton, { disabled: props.disableButtonsForLobbyPage, styles: commonButtonStyles })),
18095
18447
  React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles })))))),
18096
18448
  !props.mobileView && (React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
18097
18449
  /* @conditional-compile-remove(control-bar-button-injection) */
18098
- (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :
18099
- _b.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18450
+ (_c = customButtons['secondary']) === null || _c === void 0 ? void 0 :
18451
+ _c.props.children.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((element) => {
18100
18452
  return (React__default['default'].createElement(element.type, Object.assign({}, element.props, { key: element.props.key, styles: commonButtonStyles, displayType: options.displayType, showLabel: options.displayType !== 'compact' })));
18101
18453
  }),
18102
18454
  isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-with-chat-composite-people-button", disabled: props.disableButtonsForLobbyPage, strings: peopleButtonStrings, styles: commonButtonStyles })),
@@ -18270,6 +18622,10 @@ class CallWithChatBackedCallAdapter {
18270
18622
  this.addParticipant = (participant, options) => __awaiter$3(this, void 0, void 0, function* () {
18271
18623
  yield this.callWithChatAdapter.addParticipant(participant, options);
18272
18624
  });
18625
+ /* @conditional-compile-remove(PSTN-calls) */
18626
+ this.sendDtmfTone = (dtmfTone) => __awaiter$3(this, void 0, void 0, function* () {
18627
+ yield this.callWithChatAdapter.sendDtmfTone(dtmfTone);
18628
+ });
18273
18629
  this.callWithChatAdapter = callWithChatAdapter;
18274
18630
  }
18275
18631
  }
@@ -18421,6 +18777,10 @@ const MoreDrawer = (props) => {
18421
18777
  var _a, _b, _c, _d, _e;
18422
18778
  const drawerMenuItems = [];
18423
18779
  const { speakers, onSelectSpeaker, onLightDismiss } = props;
18780
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18781
+ const localeStrings = useLocale();
18782
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18783
+ const holdButtonProps = usePropsFor$1(HoldButton);
18424
18784
  const onSpeakerItemClick = React.useCallback((_ev, itemKey) => {
18425
18785
  const selected = speakers === null || speakers === void 0 ? void 0 : speakers.find((speaker) => speaker.id === itemKey);
18426
18786
  if (selected) {
@@ -18491,6 +18851,17 @@ const MoreDrawer = (props) => {
18491
18851
  onItemClick: props.onPeopleButtonClicked
18492
18852
  });
18493
18853
  }
18854
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
18855
+ if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton)) {
18856
+ drawerMenuItems.push({
18857
+ itemKey: 'holdButtonKey',
18858
+ text: localeStrings.component.strings.holdButton.tooltipOffContent,
18859
+ onItemClick: () => {
18860
+ holdButtonProps.onToggleHold();
18861
+ },
18862
+ iconProps: { iconName: 'HoldCall', styles: { root: { lineHeight: 0 } } }
18863
+ });
18864
+ }
18494
18865
  /* @conditional-compile-remove(control-bar-button-injection) */
18495
18866
  const customDrawerButtons = React.useMemo(() => generateCustomCallWithChatDrawerButtons(onFetchCustomButtonPropsTrampoline(drawerSelectionOptions !== false ? drawerSelectionOptions : undefined), drawerSelectionOptions !== false ? drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.displayType : undefined), [drawerSelectionOptions]);
18496
18867
  /* @conditional-compile-remove(control-bar-button-injection) */
@@ -18713,7 +19084,7 @@ const CallWithChatScreen = (props) => {
18713
19084
  /* @conditional-compile-remove(file-sharing) */
18714
19085
  fileSharing: props.fileSharing, rtl: props.rtl }))),
18715
19086
  showControlBar && !isMobileWithActivePane && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
18716
- React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles },
19087
+ React__default['default'].createElement(react.Stack.Item, { styles: controlBarContainerStyles$1 },
18717
19088
  React__default['default'].createElement(CallWithChatControlBar, { callAdapter: callAdapter, chatAdapter: chatProps.adapter, chatButtonChecked: activePane === 'chat', onChatButtonClicked: toggleChat, peopleButtonChecked: activePane === 'people', onPeopleButtonClicked: togglePeople, onMoreButtonClicked: onMoreButtonClicked, mobileView: mobileView, disableButtonsForLobbyPage: isInLobbyOrConnecting, callControls: props.callControls, containerHeight: containerHeight, containerWidth: containerWidth })))),
18718
19089
  showControlBar && showDrawer && (React__default['default'].createElement(ChatAdapterProvider, { adapter: chatProps.adapter },
18719
19090
  React__default['default'].createElement(CallAdapterProvider, { adapter: callAdapter },
@@ -18736,7 +19107,10 @@ const CallWithChatComposite = (props) => {
18736
19107
  /* @conditional-compile-remove(file-sharing) */
18737
19108
  fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing }))));
18738
19109
  };
18739
- const hasJoinedCallFn = (page, callStatus) => page === 'call' && callStatus === 'Connected';
19110
+ const hasJoinedCallFn = (page, callStatus) => {
19111
+ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(one-to-n-calling) */
19112
+ return (page === 'call' && callStatus === 'Connected') || (page === 'hold' && callStatus === 'LocalHold');
19113
+ };
18740
19114
  const showShowChatTabHeaderButton = (callControls) => {
18741
19115
  if (callControls === undefined || callControls === true) {
18742
19116
  return true;
@@ -18959,6 +19333,8 @@ class AzureCommunicationCallWithChatAdapter {
18959
19333
  this.resumeCall.bind(this);
18960
19334
  /* @conditional-compile-remove(PSTN-calls) */
18961
19335
  this.addParticipant.bind(this);
19336
+ /* @conditional-compile-remove(PSTN-calls) */
19337
+ this.sendDtmfTone.bind(this);
18962
19338
  }
18963
19339
  /** Join existing Call. */
18964
19340
  joinCall(microphoneOn) {
@@ -19155,6 +19531,12 @@ class AzureCommunicationCallWithChatAdapter {
19155
19531
  return yield this.callAdapter.addParticipant(participant, options);
19156
19532
  });
19157
19533
  }
19534
+ /* @conditional-compile-remove(PSTN-calls) */
19535
+ sendDtmfTone(dtmfTone) {
19536
+ return __awaiter(this, void 0, void 0, function* () {
19537
+ return yield this.callAdapter.sendDtmfTone(dtmfTone);
19538
+ });
19539
+ }
19158
19540
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19159
19541
  on(event, listener) {
19160
19542
  switch (event) {