@azure/communication-react 1.8.1-alpha-202309260012 → 1.8.1-alpha-202309280013

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 (43) hide show
  1. package/dist/communication-react.d.ts +4 -0
  2. package/dist/dist-cjs/communication-react/index.js +154 -72
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/react-components/src/components/ParticipantList.js +1 -6
  7. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  8. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js +1 -1
  9. package/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js.map +1 -1
  10. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +3 -1
  11. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  12. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js +1 -1
  13. package/dist/dist-esm/react-components/src/components/VideoGallery/LargeGalleryLayout.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +2 -0
  15. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +3 -1
  16. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +2 -0
  18. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js +7 -2
  19. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.d.ts +1 -1
  21. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +11 -9
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/VideoGallery.js +11 -4
  24. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +17 -7
  26. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  27. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +5 -1
  28. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  29. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +3 -0
  30. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +11 -11
  31. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  32. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +4 -0
  33. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  34. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +30 -30
  35. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
  36. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.d.ts +10 -0
  37. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +51 -0
  38. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.d.ts +3 -0
  40. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js +3 -1
  41. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +1 -0
  43. package/package.json +8 -8
@@ -3248,6 +3248,10 @@ export declare interface CallWithChatCompositeStrings {
3248
3248
  * Only used with `mobileView` set to `true`.
3249
3249
  */
3250
3250
  moreDrawerCaptionLanguageMenuTitle: string;
3251
+ /**
3252
+ * Title for the gallery options sub-menu in the more button drawer.
3253
+ */
3254
+ moreDrawerGalleryOptionsMenuTitle: string;
3251
3255
  /**
3252
3256
  * {@Link CallWithChatComposite} control bar More button label
3253
3257
  */
@@ -176,7 +176,7 @@ const _isValidIdentifier = (identifier) => {
176
176
  // Copyright (c) Microsoft Corporation.
177
177
  // Licensed under the MIT License.
178
178
  // GENERATED FILE. DO NOT EDIT MANUALLY.
179
- var telemetryVersion = '1.8.1-alpha-202309260012';
179
+ var telemetryVersion = '1.8.1-alpha-202309280013';
180
180
 
181
181
  // Copyright (c) Microsoft Corporation.
182
182
  /**
@@ -11259,12 +11259,7 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
11259
11259
  const callingParticipant = participant;
11260
11260
  let presence = undefined;
11261
11261
  if (callingParticipant) {
11262
- if (callingParticipant.state === 'Connected') {
11263
- presence = react.PersonaPresence.online;
11264
- }
11265
- else if (callingParticipant.state === 'Idle') {
11266
- presence = react.PersonaPresence.away;
11267
- }
11262
+ presence = react.PersonaPresence.none;
11268
11263
  }
11269
11264
  const menuItems = createParticipantMenuItems && createParticipantMenuItems(participant);
11270
11265
  const onRenderIcon = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isScreenSharing) ||
@@ -13525,15 +13520,17 @@ const scrollableHorizontalGalleryStyles = {
13525
13520
  /**
13526
13521
  * @private
13527
13522
  */
13528
- const scrollableHorizontalGalleryContainerStyles = react.mergeStyles({
13529
- display: 'flex',
13530
- width: `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.width}rem)`,
13531
- minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
13532
- overflow: 'scroll',
13533
- '-ms-overflow-style': 'none',
13534
- 'scrollbar-width': 'none',
13535
- '::-webkit-scrollbar': { display: 'none' }
13536
- });
13523
+ const scrollableHorizontalGalleryContainerStyles = (fullWidth) => {
13524
+ return react.mergeStyles({
13525
+ display: 'flex',
13526
+ width: fullWidth ? '100%' : `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.width}rem)`,
13527
+ minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,
13528
+ overflow: 'scroll',
13529
+ '-ms-overflow-style': 'none',
13530
+ 'scrollbar-width': 'none',
13531
+ '::-webkit-scrollbar': { display: 'none' }
13532
+ });
13533
+ };
13537
13534
 
13538
13535
  // Copyright (c) Microsoft Corporation.
13539
13536
  /**
@@ -13541,7 +13538,11 @@ const scrollableHorizontalGalleryContainerStyles = react.mergeStyles({
13541
13538
  * @private
13542
13539
  */
13543
13540
  const ScrollableHorizontalGallery = (props) => {
13544
- const { horizontalGalleryElements, onFetchTilesToRender } = props;
13541
+ const { horizontalGalleryElements, onFetchTilesToRender, /* @conditional-compile-remove(gallery-layouts) */ layout } = props;
13542
+ const useFullWidthTrampoline = () => {
13543
+ /* @conditional-compile-remove(gallery-layouts) */
13544
+ return layout === 'default' ? true : false;
13545
+ };
13545
13546
  React.useEffect(() => {
13546
13547
  const indexesArray = [...Array(horizontalGalleryElements === null || horizontalGalleryElements === void 0 ? void 0 : horizontalGalleryElements.length).keys()];
13547
13548
  if (onFetchTilesToRender && indexesArray) {
@@ -13550,7 +13551,7 @@ const ScrollableHorizontalGallery = (props) => {
13550
13551
  }, [onFetchTilesToRender, horizontalGalleryElements === null || horizontalGalleryElements === void 0 ? void 0 : horizontalGalleryElements.length]);
13551
13552
  const ref = React.useRef();
13552
13553
  const { events: dragabbleEvents } = reactUseDraggableScroll.useDraggable(ref);
13553
- return (React__default["default"].createElement("div", Object.assign({ ref: ref }, dragabbleEvents, { className: scrollableHorizontalGalleryContainerStyles }),
13554
+ return (React__default["default"].createElement("div", Object.assign({ ref: ref }, dragabbleEvents, { className: scrollableHorizontalGalleryContainerStyles(useFullWidthTrampoline()) }),
13554
13555
  React__default["default"].createElement(react.Stack, { "data-ui-id": "scrollable-horizontal-gallery", horizontal: true, styles: scrollableHorizontalGalleryStyles, tokens: { childrenGap: '0.5rem' } }, horizontalGalleryElements)));
13555
13556
  };
13556
13557
 
@@ -13600,7 +13601,9 @@ const OverflowGallery = (props) => {
13600
13601
  // There are no pages for ScrollableHorizontalGallery so we will approximate the first 3 remote
13601
13602
  // participant tiles are visible
13602
13603
  onChildrenPerPageChange === null || onChildrenPerPageChange === void 0 ? void 0 : onChildrenPerPageChange(3);
13603
- return (React__default["default"].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements ? overflowGalleryElements : [React__default["default"].createElement(React__default["default"].Fragment, null)], onFetchTilesToRender: onFetchTilesToRender, key: "scrollable-horizontal-gallery" }));
13604
+ return (React__default["default"].createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements ? overflowGalleryElements : [React__default["default"].createElement(React__default["default"].Fragment, null)], onFetchTilesToRender: onFetchTilesToRender, key: "scrollable-horizontal-gallery",
13605
+ /* @conditional-compile-remove(gallery-layouts) */
13606
+ layout: props.layout }));
13604
13607
  }
13605
13608
  return (React__default["default"].createElement(ResponsiveHorizontalGallery, { key: "responsive-horizontal-gallery", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements ? overflowGalleryElements : [React__default["default"].createElement(React__default["default"].Fragment, null)]));
13606
13609
  };
@@ -13672,7 +13675,9 @@ const DefaultLayout = (props) => {
13672
13675
  /* @conditional-compile-remove(vertical-gallery) */
13673
13676
  overflowGalleryPosition: overflowGalleryPosition, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {
13674
13677
  childrenPerPage.current = n;
13675
- } }));
13678
+ },
13679
+ /* @conditional-compile-remove(gallery-layouts) */
13680
+ layout: 'default' }));
13676
13681
  }, [
13677
13682
  isNarrow,
13678
13683
  /* @conditional-compile-remove(vertical-gallery) */ isShort,
@@ -14746,7 +14751,7 @@ const LargeGalleryLayout = (props) => {
14746
14751
  ? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
14747
14752
  : childrenPerPage.current,
14748
14753
  /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,
14749
- /* @conditional-compile-remove(gallery-layouts) */ layout: 'largeGallery'
14754
+ /* @conditional-compile-remove(large-gallery) */ layout: 'largeGallery'
14750
14755
  });
14751
14756
  let activeVideoStreams = 0;
14752
14757
  const gridTiles = gridParticipants.map((p) => {
@@ -14923,10 +14928,14 @@ const VideoGallery = (props) => {
14923
14928
  root: { borderRadius: theme.effects.roundedCorner4 }
14924
14929
  }, styles === null || styles === void 0 ? void 0 : styles.localVideo);
14925
14930
  const initialsName = !localParticipant.displayName ? '' : localParticipant.displayName;
14931
+ const showDisplayNameTrampoline = () => {
14932
+ /* @conditional-compile-remove(gallery-layouts) */
14933
+ return layout === 'default' ? strings.localVideoLabel : isNarrow ? '' : strings.localVideoLabel;
14934
+ };
14926
14935
  return (React__default["default"].createElement(react.Stack, { styles: localVideoTileContainerStyles, key: "local-video-tile-key", tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
14927
- React__default["default"].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !((localTileNotInGrid && isNarrow) ||
14936
+ React__default["default"].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: showDisplayNameTrampoline(), initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !((localTileNotInGrid && isNarrow) ||
14928
14937
  /*@conditional-compile-remove(click-to-call) */ /* @conditional-compile-remove(rooms) */ localVideoTileSize ===
14929
- '9:16'), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles,
14938
+ '9:16') || /* @conditional-compile-remove(gallery-layouts) */ layout === 'default', showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles,
14930
14939
  /* @conditional-compile-remove(raise-hand) */
14931
14940
  raisedHand: localParticipant.raisedHand })));
14932
14941
  }, [
@@ -14948,7 +14957,9 @@ const VideoGallery = (props) => {
14948
14957
  styles === null || styles === void 0 ? void 0 : styles.localVideo,
14949
14958
  theme.effects.roundedCorner4,
14950
14959
  /*@conditional-compile-remove(click-to-call) */
14951
- localVideoTileSize
14960
+ localVideoTileSize,
14961
+ /* @conditional-compile-remove(gallery-layouts) */
14962
+ layout
14952
14963
  ]);
14953
14964
  /* @conditional-compile-remove(pinned-participants) */
14954
14965
  const onPinParticipant = React.useCallback((userId) => {
@@ -17255,7 +17266,7 @@ const _VideoBackgroundEffectsPicker = (props) => {
17255
17266
  optionsByRow.map((options, rowIndex) => {
17256
17267
  var _a;
17257
17268
  return (React__default["default"].createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' }, "data-ui-id": "video-effects-picker-row" },
17258
- options.map((option) => (React__default["default"].createElement(react.FocusZone, { key: option.itemKey, shouldFocusOnMount: option.itemKey === 'none' },
17269
+ options.map((option) => (React__default["default"].createElement(react.FocusZone, { key: option.itemKey, shouldFocusOnMount: option.itemKey.includes('none') },
17259
17270
  React__default["default"].createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey }))))),
17260
17271
  fillCount > 0 &&
17261
17272
  rowIndex === optionsByRow.length - 1 &&
@@ -20578,7 +20589,7 @@ const CallCompositeIcon = (props) => (React__default["default"].createElement(re
20578
20589
  */
20579
20590
  const CallWithChatCompositeIcon = (props) => (React__default["default"].createElement(react.FontIcon, Object.assign({}, props)));
20580
20591
 
20581
- var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"Gallery options",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker layout",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic layout",moreButtonGalleryDefaultLayoutLabel:"Gallery layout",moreButtonGalleryFocusedContentLayoutLabel:"Focused content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}}};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
20592
+ var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"Captions Settings",captionsSettingsSpokenLanguageDropdownLabel:"Spoken language",captionsSettingsCaptionLanguageDropdownLabel:"Captions language",captionsSettingsSpokenLanguageDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsCaptionLanguageDropdownInfoText:"Captions will appear in this langugage.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",spokenLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionLanguageStrings:{ar:"Arabic",da:"Danish",de:"German",en:"English",es:"Spanish",fi:"Finnish","fr-ca":"French - Canada",fr:"French - France",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nb:"Norwegian (Bokmål)",nl:"Dutch",pl:"Polish",pt:"Portuguese - Brazil",ru:"Russian",sv:"Swedish","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cs:"Czech","pt-pt":"Portuguese - Portugal",tr:"Turkish",vi:"Vietnamese",th:"Thai",he:"Hebrew",cy:"Welsh",uk:"Ukrainian",el:"Greek",hu:"Hungarian",ro:"Romanian",sk:"Slovak"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"Gallery options",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker layout",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic layout",moreButtonGalleryDefaultLayoutLabel:"Gallery layout",moreButtonGalleryFocusedContentLayoutLabel:"Focused content",moreButtonLargeGalleryDefaultLayoutLabel:"Large Gallery",capabilityChangedNotification:{turnVideoOn:{lostDueToMeetingOption:"Your camera has been disabled. You can no longer share video.",grantedDueToMeetingOption:"Your camera has been enabled. Turn it on if you'd like to share video."},unmuteMic:{lostDueToMeetingOption:"Your mic has been disabled. You can no longer unmute.",grantedDueToMeetingOption:"Your mic has been enabled. Unmute if you'd like to speak."},shareScreen:{lostDueToRoleChangeToAttendee:"Your role has been changed. Some actions, like sharing content, won't be available to you.",grantedDueToRoleChangeToPresenter:"You're a presenter. You can share content and facilitate the meeting."}}};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",moreDrawerCaptionLanguageMenuTitle:"Caption language",moreDrawerGalleryOptionsMenuTitle:"Gallery options",peopleButtonLabel:"People",selectedPeopleButtonLabel:"People Button Selected",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
20582
20593
 
20583
20594
  // Copyright (c) Microsoft Corporation.
20584
20595
  /**
@@ -24012,7 +24023,7 @@ var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments,
24012
24023
  * @private
24013
24024
  */
24014
24025
  const DesktopMoreButton = (props) => {
24015
- var _a, _b, _c;
24026
+ var _a, _b, _c, _d, _e;
24016
24027
  /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */
24017
24028
  const localeStrings = useLocale();
24018
24029
  /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
@@ -24154,6 +24165,7 @@ const DesktopMoreButton = (props) => {
24154
24165
  styles: menuSubIconStyleSet
24155
24166
  },
24156
24167
  text: localeStrings.strings.call.moreButtonGalleryControlLabel,
24168
+ disabled: props.disableButtonsForHoldScreen,
24157
24169
  subMenuProps: {
24158
24170
  items: [
24159
24171
  {
@@ -24231,33 +24243,6 @@ const DesktopMoreButton = (props) => {
24231
24243
  iconName: 'FocusedContentGalleryLayout',
24232
24244
  styles: { root: { lineHeight: 0 } }
24233
24245
  }
24234
- },
24235
- { key: 'dividerLayoutsKey', itemType: react.ContextualMenuItemType.Divider },
24236
- {
24237
- key: 'topKey',
24238
- text: localeStrings.strings.call.moreButtonGalleryPositionToggleLabel,
24239
- canCheck: true,
24240
- topDivider: true,
24241
- itemProps: {
24242
- styles: buttonFlyoutIncreasedSizeStyles
24243
- },
24244
- iconProps: {
24245
- iconName: 'OverflowGalleryTop',
24246
- styles: { root: { lineHeight: 0 } }
24247
- },
24248
- isChecked: galleryPositionTop,
24249
- onClick: () => {
24250
- if (galleryPositionTop === false) {
24251
- props.onUserSetOverflowGalleryPositionChange &&
24252
- props.onUserSetOverflowGalleryPositionChange('HorizontalTop');
24253
- setGalleryPositionTop(true);
24254
- }
24255
- else {
24256
- props.onUserSetOverflowGalleryPositionChange &&
24257
- props.onUserSetOverflowGalleryPositionChange('Responsive');
24258
- setGalleryPositionTop(false);
24259
- }
24260
- }
24261
24246
  }
24262
24247
  ],
24263
24248
  calloutProps: {
@@ -24283,8 +24268,36 @@ const DesktopMoreButton = (props) => {
24283
24268
  styles: { root: { lineHeight: 0 } }
24284
24269
  }
24285
24270
  };
24271
+ /* @conditional-compile-remove(gallery-layouts) */
24272
+ const overflowGalleryOption = {
24273
+ key: 'topKey',
24274
+ text: localeStrings.strings.call.moreButtonGalleryPositionToggleLabel,
24275
+ canCheck: true,
24276
+ topDivider: true,
24277
+ itemProps: {
24278
+ styles: buttonFlyoutIncreasedSizeStyles
24279
+ },
24280
+ iconProps: {
24281
+ iconName: 'OverflowGalleryTop',
24282
+ styles: { root: { lineHeight: 0 } }
24283
+ },
24284
+ isChecked: galleryPositionTop,
24285
+ onClick: () => {
24286
+ if (galleryPositionTop === false) {
24287
+ props.onUserSetOverflowGalleryPositionChange && props.onUserSetOverflowGalleryPositionChange('HorizontalTop');
24288
+ setGalleryPositionTop(true);
24289
+ }
24290
+ else {
24291
+ props.onUserSetOverflowGalleryPositionChange && props.onUserSetOverflowGalleryPositionChange('Responsive');
24292
+ setGalleryPositionTop(false);
24293
+ }
24294
+ }
24295
+ };
24286
24296
  /* @conditional-compile-remove(large-gallery) */
24287
24297
  (_c = (_b = galleryOptions.subMenuProps) === null || _b === void 0 ? void 0 : _b.items) === null || _c === void 0 ? void 0 : _c.push(largeGalleryOption);
24298
+ /* @conditional-compile-remove(gallery-layouts) */
24299
+ (_e = (_d = galleryOptions.subMenuProps) === null || _d === void 0 ? void 0 : _d.items) === null || _e === void 0 ? void 0 : _e.push(overflowGalleryOption);
24300
+ /* @conditional-compile-remove(gallery-layouts) */
24288
24301
  moreButtonContextualMenuItems.push(galleryOptions);
24289
24302
  }
24290
24303
  /* @conditional-compile-remove(control-bar-button-injection) */
@@ -24851,6 +24864,57 @@ const MoreDrawer = (props) => {
24851
24864
  secondaryText: (_b = props.selectedMicrophone) === null || _b === void 0 ? void 0 : _b.name
24852
24865
  });
24853
24866
  }
24867
+ /* @conditional-compile-remove(gallery-layouts) */
24868
+ drawerMenuItems.push({
24869
+ itemKey: 'overflowGalleryPositionKey',
24870
+ iconProps: {
24871
+ iconName: 'GalleryOptions',
24872
+ styles: { root: { lineHeight: 0 } }
24873
+ },
24874
+ disabled: props.disableButtonsForHoldScreen,
24875
+ text: localeStrings.strings.call.moreButtonGalleryControlLabel,
24876
+ subMenuProps: [
24877
+ {
24878
+ itemKey: 'dynamicSelectionKey',
24879
+ text: localeStrings.strings.call.moreButtonGalleryFloatingLocalLayoutLabel,
24880
+ onItemClick: () => {
24881
+ props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('floatingLocalVideo');
24882
+ onLightDismiss();
24883
+ },
24884
+ iconProps: {
24885
+ iconName: 'FloatingLocalVideoGalleryLayout',
24886
+ styles: { root: { lineHeight: 0 } }
24887
+ },
24888
+ secondaryIconProps: props.userSetGalleryLayout === 'floatingLocalVideo' ? { iconName: 'Accept' } : undefined
24889
+ },
24890
+ {
24891
+ itemKey: 'defaultSelectionKey',
24892
+ text: localeStrings.strings.call.moreButtonGalleryDefaultLayoutLabel,
24893
+ onItemClick: () => {
24894
+ props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('default');
24895
+ onLightDismiss();
24896
+ },
24897
+ iconProps: {
24898
+ iconName: 'DefaultGalleryLayout',
24899
+ styles: { root: { lineHeight: 0 } }
24900
+ },
24901
+ secondaryIconProps: props.userSetGalleryLayout === 'default' ? { iconName: 'Accept' } : undefined
24902
+ },
24903
+ {
24904
+ itemKey: 'focusedContentSelectionKey',
24905
+ text: localeStrings.strings.call.moreButtonGalleryFocusedContentLayoutLabel,
24906
+ onItemClick: () => {
24907
+ props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('focusedContent');
24908
+ onLightDismiss();
24909
+ },
24910
+ iconProps: {
24911
+ iconName: 'FocusedContentGalleryLayout',
24912
+ styles: { root: { lineHeight: 0 } }
24913
+ },
24914
+ secondaryIconProps: props.userSetGalleryLayout === 'focusedContent' ? { iconName: 'Accept' } : undefined
24915
+ }
24916
+ ]
24917
+ });
24854
24918
  if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton)) {
24855
24919
  drawerMenuItems.push({
24856
24920
  itemKey: 'people',
@@ -25058,7 +25122,9 @@ const PreparedMoreDrawer = (props) => {
25058
25122
  /* @conditional-compile-remove(close-captions) */
25059
25123
  spokenLanguageMenuTitle: strings.moreDrawerSpokenLanguageMenuTitle,
25060
25124
  /* @conditional-compile-remove(close-captions) */
25061
- captionLanguageMenuTitle: strings.moreDrawerCaptionLanguageMenuTitle
25125
+ captionLanguageMenuTitle: strings.moreDrawerCaptionLanguageMenuTitle,
25126
+ /* @conditional-compile-remove(gallery-layouts) */
25127
+ galleryOptionsMenuTitle: strings.moreDrawerGalleryOptionsMenuTitle
25062
25128
  }), [strings]);
25063
25129
  const deviceProps = useSelector$1(moreDrawerSelector);
25064
25130
  const callHandlers = useHandlers();
@@ -26584,7 +26650,11 @@ const CallArrangement = (props) => {
26584
26650
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
26585
26651
  disableButtonsForHoldScreen: isInLocalHold,
26586
26652
  /* @conditional-compile-remove(close-captions) */
26587
- isCaptionsSupported: isTeamsCall && hasJoinedCall }))),
26653
+ isCaptionsSupported: isTeamsCall && hasJoinedCall,
26654
+ /* @conditional-compile-remove(gallery-layouts) */
26655
+ onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange,
26656
+ /* @conditional-compile-remove(gallery-layouts) */
26657
+ userSetGalleryLayout: props.userSetGalleryLayout }))),
26588
26658
  /* @conditional-compile-remove(PSTN-calls) */
26589
26659
  ((_h = props.callControlProps) === null || _h === void 0 ? void 0 : _h.options) !== false && showDtmfDialpad && (React__default["default"].createElement(react.Stack, { styles: drawerContainerStylesValue },
26590
26660
  React__default["default"].createElement(SendDtmfDialpad, { isMobile: props.mobileView, strings: dialpadStrings, showDialpad: showDtmfDialpad, onDismissDialpad: onDismissDtmfDialpad }))),
@@ -27096,7 +27166,13 @@ const networkReconnectTileSelector = reselect__namespace.createSelector([getUser
27096
27166
  const CallPage = (props) => {
27097
27167
  const { callInvitationURL, onRenderAvatar, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView,
27098
27168
  /* @conditional-compile-remove(gallery-layouts) */
27099
- galleryLayout = 'floatingLocalVideo' } = props;
27169
+ galleryLayout = 'floatingLocalVideo',
27170
+ /* @conditional-compile-remove(gallery-layouts) */
27171
+ onUserSetGalleryLayoutChange,
27172
+ /* @conditional-compile-remove(gallery-layouts) */
27173
+ userSetOverflowGalleryPosition = 'Responsive',
27174
+ /* @conditional-compile-remove(gallery-layouts) */
27175
+ onSetUserSetOverflowGalleryPosition } = props;
27100
27176
  // To use useProps to get these states, we need to create another file wrapping Call,
27101
27177
  // It seems unnecessary in this case, so we get the updated states using this approach.
27102
27178
  const { callStatus } = useSelector$1(callStatusSelector);
@@ -27110,10 +27186,6 @@ const CallPage = (props) => {
27110
27186
  // Reduce the controls shown when mobile view is enabled.
27111
27187
  const callControlOptions = mobileView ? reduceCallControlsForMobile(options === null || options === void 0 ? void 0 : options.callControls) : options === null || options === void 0 ? void 0 : options.callControls;
27112
27188
  const drawerMenuHostId = reactHooks.useId('drawerMenuHost');
27113
- /* @conditional-compile-remove(gallery-layouts) */
27114
- const [userSetOverflowGalleryPosition, setUserSetOverflowGalleryPosition] = React.useState('Responsive');
27115
- /* @conditional-compile-remove(gallery-layouts) */
27116
- const [userSetGalleryLayout, setUserSetGalleryLayout] = React.useState(galleryLayout);
27117
27189
  return (React__default["default"].createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps, mutedNotificationProps: mutedNotificationProps, callControlProps: {
27118
27190
  callInvitationURL: callInvitationURL,
27119
27191
  onFetchParticipantMenuItems: onFetchParticipantMenuItems,
@@ -27129,13 +27201,13 @@ const CallPage = (props) => {
27129
27201
  /* @conditional-compile-remove(gallery-layouts) */
27130
27202
  userSetOverflowGalleryPosition: userSetOverflowGalleryPosition,
27131
27203
  /* @conditional-compile-remove(gallery-layouts) */
27132
- userSetGalleryLayout: userSetGalleryLayout }))) : (React__default["default"].createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React__default["default"].createElement(React__default["default"].Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError,
27204
+ userSetGalleryLayout: galleryLayout }))) : (React__default["default"].createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React__default["default"].createElement(React__default["default"].Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError,
27133
27205
  /* @conditional-compile-remove(gallery-layouts) */
27134
- onUserSetOverflowGalleryPositionChange: setUserSetOverflowGalleryPosition,
27206
+ onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition,
27135
27207
  /* @conditional-compile-remove(gallery-layouts) */
27136
- onUserSetGalleryLayoutChange: setUserSetGalleryLayout,
27208
+ onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange,
27137
27209
  /* @conditional-compile-remove(gallery-layouts) */
27138
- userSetGalleryLayout: userSetGalleryLayout,
27210
+ userSetGalleryLayout: galleryLayout,
27139
27211
  /* @conditional-compile-remove(capabilities) */
27140
27212
  capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps }));
27141
27213
  };
@@ -28819,7 +28891,7 @@ const isShowing = (overrideSidePane) => {
28819
28891
  return !!(overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive);
28820
28892
  };
28821
28893
  const MainScreen = (props) => {
28822
- var _a, _b, _c, _d, _e, _f, _g;
28894
+ var _a, _b, _c, _d, _e, _f, _g, _h;
28823
28895
  const adapter = useAdapter();
28824
28896
  const { camerasCount, microphonesCount } = useSelector$1(deviceCountSelector);
28825
28897
  const hasCameras = camerasCount > 0;
@@ -28847,6 +28919,10 @@ const MainScreen = (props) => {
28847
28919
  const endedCall = useSelector$1(getEndedCall);
28848
28920
  const [sidePaneRenderer, setSidePaneRenderer] = React__default["default"].useState();
28849
28921
  const [injectedSidePaneProps, setInjectedSidePaneProps] = React__default["default"].useState();
28922
+ /* @conditional-compile-remove(gallery-layouts) */
28923
+ const [userSetGalleryLayout, setUserSetGalleryLayout] = React.useState((_c = (_b = (_a = props.options) === null || _a === void 0 ? void 0 : _a.galleryOptions) === null || _b === void 0 ? void 0 : _b.layout) !== null && _c !== void 0 ? _c : 'floatingLocalVideo');
28924
+ /* @conditional-compile-remove(gallery-layouts) */
28925
+ const [userSetOverflowGalleryPosition, setUserSetOverflowGalleryPosition] = React.useState('Responsive');
28850
28926
  const overridePropsRef = React.useRef(props.overrideSidePane);
28851
28927
  React.useEffect(() => {
28852
28928
  setInjectedSidePaneProps(props.overrideSidePane);
@@ -28896,11 +28972,11 @@ const MainScreen = (props) => {
28896
28972
  adapter.joinCall();
28897
28973
  }, updateSidePaneRenderer: setSidePaneRenderer, latestErrors: latestErrors, onDismissError: onDismissError, modalLayerHostId: props.modalLayerHostId,
28898
28974
  /* @conditional-compile-remove(call-readiness) */
28899
- deviceChecks: (_a = props.options) === null || _a === void 0 ? void 0 : _a.deviceChecks,
28975
+ deviceChecks: (_d = props.options) === null || _d === void 0 ? void 0 : _d.deviceChecks,
28900
28976
  /* @conditional-compile-remove(call-readiness) */
28901
- onPermissionsTroubleshootingClick: (_b = props.options) === null || _b === void 0 ? void 0 : _b.onPermissionsTroubleshootingClick,
28977
+ onPermissionsTroubleshootingClick: (_e = props.options) === null || _e === void 0 ? void 0 : _e.onPermissionsTroubleshootingClick,
28902
28978
  /* @conditional-compile-remove(call-readiness) */
28903
- onNetworkingTroubleShootingClick: (_c = props.options) === null || _c === void 0 ? void 0 : _c.onNetworkingTroubleShootingClick,
28979
+ onNetworkingTroubleShootingClick: (_f = props.options) === null || _f === void 0 ? void 0 : _f.onNetworkingTroubleShootingClick,
28904
28980
  /* @conditional-compile-remove(capabilities) */
28905
28981
  capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
28906
28982
  break;
@@ -28914,7 +28990,7 @@ const MainScreen = (props) => {
28914
28990
  pageElement = (React__default["default"].createElement(NoticePage, { iconName: "NoticePageJoinCallFailedDueToNoNetwork", title: locale.strings.call.failedToJoinCallDueToNoNetworkTitle, moreDetails: locale.strings.call.failedToJoinCallDueToNoNetworkMoreDetails, dataUiId: 'join-call-failed-due-to-no-network-page' }));
28915
28991
  break;
28916
28992
  case 'leaving':
28917
- pageElement = (React__default["default"].createElement(NoticePage, { title: (_d = locale.strings.call.leavingCallTitle) !== null && _d !== void 0 ? _d : 'Leaving...', dataUiId: 'leaving-page', pageStyle: leavePageStyle, disableStartCallButton: true }));
28993
+ pageElement = (React__default["default"].createElement(NoticePage, { title: (_g = locale.strings.call.leavingCallTitle) !== null && _g !== void 0 ? _g : 'Leaving...', dataUiId: 'leaving-page', pageStyle: leavePageStyle, disableStartCallButton: true }));
28918
28994
  break;
28919
28995
  case 'leftCall': {
28920
28996
  const { title, moreDetails, disableStartCallButton } = getEndedCallStrings(locale, endedCall);
@@ -28935,7 +29011,13 @@ const MainScreen = (props) => {
28935
29011
  case 'call':
28936
29012
  pageElement = (React__default["default"].createElement(CallPage, { onRenderAvatar: onRenderAvatar, callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError,
28937
29013
  /* @conditional-compile-remove(gallery-layouts) */
28938
- galleryLayout: ((_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.galleryOptions) === null || _f === void 0 ? void 0 : _f.layout) ? props.options.galleryOptions.layout : 'floatingLocalVideo',
29014
+ galleryLayout: userSetGalleryLayout,
29015
+ /* @conditional-compile-remove(gallery-layouts) */
29016
+ onUserSetGalleryLayoutChange: setUserSetGalleryLayout,
29017
+ /* @conditional-compile-remove(gallery-layouts) */
29018
+ onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition,
29019
+ /* @conditional-compile-remove(gallery-layouts) */
29020
+ userSetOverflowGalleryPosition: userSetOverflowGalleryPosition,
28939
29021
  /* @conditional-compile-remove(capabilities) */
28940
29022
  capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
28941
29023
  break;
@@ -28951,7 +29033,7 @@ const MainScreen = (props) => {
28951
29033
  case 'unsupportedEnvironment':
28952
29034
  pageElement = (React__default["default"].createElement(React__default["default"].Fragment, null,
28953
29035
  /* @conditional-compile-remove(unsupported-browser) */
28954
- React__default["default"].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (_g = props.options) === null || _g === void 0 ? void 0 : _g.onEnvironmentInfoTroubleshootingClick, environmentInfo: adapter.getState().environmentInfo })));
29036
+ React__default["default"].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (_h = props.options) === null || _h === void 0 ? void 0 : _h.onEnvironmentInfoTroubleshootingClick, environmentInfo: adapter.getState().environmentInfo })));
28955
29037
  break;
28956
29038
  }
28957
29039
  if (!pageElement) {