@azure/communication-react 1.18.0-alpha-202406220013 → 1.18.0-alpha-202406250013
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.
- package/dist/communication-react.d.ts +4 -0
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-Digltj4H.js → ChatMessageComponentAsRichTextEditBox-D8CIuj9U.js} +2 -2
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-Digltj4H.js.map → ChatMessageComponentAsRichTextEditBox-D8CIuj9U.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CiwclH9-.js → RichTextSendBoxWrapper-D0jx96DX.js} +2 -2
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-CiwclH9-.js.map → RichTextSendBoxWrapper-D0jx96DX.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{index-DnTVRxCz.js → index-D40Kfey5.js} +15 -13
 - package/dist/dist-cjs/communication-react/{index-DnTVRxCz.js.map → index-D40Kfey5.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/index.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.d.ts +1 -0
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +6 -4
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +4 -0
 - package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
 - package/package.json +1 -1
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.18.0-alpha- 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"telemetryVersion.js","sourceRoot":"","sources":["../../../../../acs-ui-common/src/telemetryVersion.js"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAElC,wCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// GENERATED FILE. DO NOT EDIT MANUALLY.\n\nmodule.exports = '1.18.0-alpha-202406250013';\n"]}
         
     | 
| 
         @@ -71,6 +71,7 @@ export const usePeoplePane = (props) => { 
     | 
|
| 
       71 
71 
     | 
    
         
             
                            }
         
     | 
| 
       72 
72 
     | 
    
         
             
                        }
         
     | 
| 
       73 
73 
     | 
    
         
             
                        menuItems.push({
         
     | 
| 
      
 74 
     | 
    
         
            +
                            ['data-ui-id']: 'people-pane-mute-all-remote-participants',
         
     | 
| 
       74 
75 
     | 
    
         
             
                            key: 'muteAllRemoteParticipants',
         
     | 
| 
       75 
76 
     | 
    
         
             
                            text: localeStrings.muteAllMenuLabel,
         
     | 
| 
       76 
77 
     | 
    
         
             
                            iconProps: {
         
     | 
| 
         @@ -80,7 +81,6 @@ export const usePeoplePane = (props) => { 
     | 
|
| 
       80 
81 
     | 
    
         
             
                            onClick: () => {
         
     | 
| 
       81 
82 
     | 
    
         
             
                                setShowMuteAllPrompt(true);
         
     | 
| 
       82 
83 
     | 
    
         
             
                            },
         
     | 
| 
       83 
     | 
    
         
            -
                            'data-ui-id': 'participant-item-mute-all-remote-participants',
         
     | 
| 
       84 
84 
     | 
    
         
             
                            ariaLabel: localeStrings.muteAllMenuLabel,
         
     | 
| 
       85 
85 
     | 
    
         
             
                            disabled: isAllMuted
         
     | 
| 
       86 
86 
     | 
    
         
             
                        });
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton } from '@fluentui/react';\nimport { IContextualMenuItem, IContextualMenuProps } from '@fluentui/react';\n/* @conditional-compile-remove(soft-mute) */\nimport { getRemoteParticipants } from '../../selectors/baseSelectors';\n/* @conditional-compile-remove(soft-mute) */\nimport { useSelector } from '../../hooks/useSelector';\n/* @conditional-compile-remove(soft-mute) */\nimport { Prompt } from '../Prompt';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n  setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n  inviteLink?: string;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  mobileView?: boolean;\n  peopleButtonRef?: RefObject<IButton>;\n  setParticipantActioned?: (userId: string) => void;\n  spotlightedParticipantUserIds?: string[];\n  onStartLocalSpotlight?: () => Promise<void>;\n  onStopLocalSpotlight?: () => Promise<void>;\n  onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopAllSpotlight?: () => Promise<void>;\n  maxParticipantsToSpotlight?: number;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteParticipant?: (userId: string) => Promise<void>;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteAllRemoteParticipants?: () => Promise<void>;\n  pinnedParticipants?: string[];\n  onPinParticipant?: (userId: string) => void;\n  onUnpinParticipant?: (userId: string) => void;\n  disablePinMenuItem?: boolean;\n}): {\n  openPeoplePane: () => void;\n  closePeoplePane: () => void;\n  isPeoplePaneOpen: boolean;\n} => {\n  const {\n    updateSidePaneRenderer,\n    inviteLink,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    setDrawerMenuItems,\n    mobileView,\n    peopleButtonRef,\n    setParticipantActioned,\n    spotlightedParticipantUserIds,\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    onStopAllSpotlight,\n    maxParticipantsToSpotlight,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteParticipant,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    disablePinMenuItem,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteAllRemoteParticipants\n  } = props;\n\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n    peopleButtonRef?.current?.focus();\n  }, [peopleButtonRef, updateSidePaneRenderer]);\n\n  const localeStrings = useLocale().strings.call;\n  /* @conditional-compile-remove(soft-mute) */\n  const remoteParticipants = useSelector(getRemoteParticipants);\n  /* @conditional-compile-remove(soft-mute) */\n  const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);\n  /* @conditional-compile-remove(soft-mute) */\n  const muteAllPromptLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n      heading: localeStrings.muteAllDialogTitle,\n      text: localeStrings.muteAllDialogContent,\n      cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n    }),\n    [\n      localeStrings.muteAllConfirmButtonLabel,\n      localeStrings.muteAllDialogTitle,\n      localeStrings.muteAllDialogContent,\n      localeStrings.muteAllCancelButtonLabel\n    ]\n  );\n\n  /* @conditional-compile-remove(soft-mute) */\n  const onMuteAllPromptConfirm = useCallback(() => {\n    onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n    setShowMuteAllPrompt(false);\n  }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n  const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n    const menuItems: IContextualMenuItem[] = [];\n    if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n      menuItems.push({\n        key: 'stopAllSpotlightKey',\n        text: localeStrings.stopAllSpotlightMenuLabel,\n        iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n        onClick: () => {\n          onStopAllSpotlight();\n        },\n        ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n      });\n    }\n    /* @conditional-compile-remove(soft-mute) */\n    if (onMuteAllRemoteParticipants && remoteParticipants) {\n      let isAllMuted = true;\n      if (remoteParticipants) {\n        for (const participant of Object.values(remoteParticipants)) {\n          if (!participant.isMuted) {\n            isAllMuted = false;\n            break;\n          }\n        }\n      }\n      menuItems.push({\n        key: 'muteAllRemoteParticipants',\n        text: localeStrings.muteAllMenuLabel,\n        iconProps: {\n          iconName: 'ContextualMenuMicMutedIcon',\n          styles: { root: { lineHeight: 0 } }\n        },\n        onClick: () => {\n          setShowMuteAllPrompt(true);\n        },\n        'data-ui-id': 'participant-item-mute-all-remote-participants',\n        ariaLabel: localeStrings.muteAllMenuLabel,\n        disabled: isAllMuted\n      });\n    }\n    return {\n      items: menuItems\n    };\n  }, [\n    onStopAllSpotlight,\n    spotlightedParticipantUserIds,\n    localeStrings.stopAllSpotlightMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ localeStrings.muteAllMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllRemoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ remoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt\n  ]);\n\n  const onRenderHeader = useCallback(\n    () => (\n      <SidePaneHeader\n        onClose={closePane}\n        headingText={localeStrings.peoplePaneTitle}\n        dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n        mobileView={mobileView ?? false}\n      />\n    ),\n    [mobileView, closePane, localeStrings]\n  );\n\n  const onFetchParticipantMenuItemsForCallComposite = useCallback(\n    (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n      let isPinned = pinnedParticipants?.includes(participantId);\n      const _defaultMenuItems: IContextualMenuItem[] = defaultMenuItems ?? [];\n      const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n      const isMe = myUserId === participantId;\n      isPinned = isSpotlighted ? false : isPinned;\n      if (isSpotlighted) {\n        const stopSpotlightMenuText = isMe\n          ? localeStrings.stopSpotlightOnSelfMenuLabel\n          : localeStrings.stopSpotlightMenuLabel;\n        const onStopSpotlight = isMe\n          ? onStopLocalSpotlight\n          : onStopRemoteSpotlight\n          ? () => {\n              onStopRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStopSpotlight && stopSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'stop-spotlight',\n            text: stopSpotlightMenuText,\n            onClick: onStopSpotlight,\n            iconProps: {\n              iconName: 'StopSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: stopSpotlightMenuText\n          });\n        }\n      } else {\n        const startSpotlightMenuText =\n          spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n            ? localeStrings.addSpotlightMenuLabel\n            : localeStrings.startSpotlightMenuLabel;\n        const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n          ? spotlightedParticipantUserIds\n            ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n            : false\n          : false;\n        const onStartSpotlight = isMe\n          ? onStartLocalSpotlight\n          : onStartRemoteSpotlight\n          ? () => {\n              onStartRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStartSpotlight && startSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'start-spotlight',\n            text: startSpotlightMenuText,\n            onClick: onStartSpotlight,\n            iconProps: {\n              iconName: 'StartSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: startSpotlightMenuText,\n            disabled: maxSpotlightedParticipantsReached,\n            title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n          });\n        }\n      }\n      /* @conditional-compile-remove(soft-mute) */\n      if (onMuteParticipant && !isMe) {\n        const isMuted = remoteParticipants && remoteParticipants[participantId]?.isMuted;\n        _defaultMenuItems.push({\n          key: 'mute',\n          text: 'Mute',\n          iconProps: {\n            iconName: 'ContextualMenuMicMutedIcon',\n            styles: { root: { lineHeight: 0 } }\n          },\n          onClick: () => {\n            onMuteParticipant(participantId);\n          },\n          'data-ui-id': 'participant-item-mute-participant',\n          ariaLabel: 'Mute',\n          disabled: isMuted\n        });\n      }\n\n      if (!isMe && isPinned !== undefined) {\n        if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'unpin',\n            text: localeStrings?.unpinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'UnpinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onUnpinParticipant?.(participantId);\n            },\n            'data-ui-id': 'participant-item-unpin-participant-button',\n            ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n          });\n        }\n        if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'pin',\n            text: disablePinMenuItem\n              ? localeStrings.pinParticipantLimitReachedMenuLabel\n              : localeStrings.pinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'PinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onPinParticipant(participantId);\n            },\n            'data-ui-id': 'participant-item-pin-participant-button',\n            disabled: disablePinMenuItem || isSpotlighted,\n            ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n          });\n        }\n      }\n      return onFetchParticipantMenuItems\n        ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n        : _defaultMenuItems;\n    },\n    [\n      spotlightedParticipantUserIds,\n      onStartLocalSpotlight,\n      onStopLocalSpotlight,\n      onStartRemoteSpotlight,\n      onStopRemoteSpotlight,\n      onFetchParticipantMenuItems,\n      /* @conditional-compile-remove(soft-mute) */\n      onMuteParticipant,\n      /* @conditional-compile-remove(soft-mute) */\n      remoteParticipants,\n      localeStrings.stopSpotlightMenuLabel,\n      localeStrings.stopSpotlightOnSelfMenuLabel,\n      localeStrings.addSpotlightMenuLabel,\n      localeStrings.startSpotlightMenuLabel,\n      localeStrings.spotlightLimitReachedMenuTitle,\n      maxParticipantsToSpotlight,\n      pinnedParticipants,\n      onPinParticipant,\n      onUnpinParticipant,\n      disablePinMenuItem,\n      localeStrings.pinParticipantMenuLabel,\n      localeStrings.pinParticipantLimitReachedMenuLabel,\n      localeStrings.unpinParticipantMenuLabel,\n      localeStrings.unpinParticipantMenuItemAriaLabel,\n      localeStrings.pinParticipantMenuItemAriaLabel\n    ]\n  );\n\n  const onRenderContent = useCallback((): JSX.Element => {\n    return (\n      <>\n        {\n          /* @conditional-compile-remove(soft-mute) */\n          <Prompt\n            {...muteAllPromptLabels}\n            styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n            onConfirm={() => onMuteAllPromptConfirm()}\n            isOpen={showMuteAllPrompt}\n            onCancel={() => setShowMuteAllPrompt(false)}\n          />\n        }\n        <PeoplePaneContent\n          inviteLink={inviteLink}\n          onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n          setDrawerMenuItems={setDrawerMenuItems}\n          mobileView={mobileView}\n          setParticipantActioned={setParticipantActioned}\n          participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n          pinnedParticipants={pinnedParticipants}\n        />\n      </>\n    );\n  }, [\n    inviteLink,\n    mobileView,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItemsForCallComposite,\n    setDrawerMenuItems,\n    setParticipantActioned,\n    sidePaneHeaderMenuProps,\n    pinnedParticipants,\n    /* @conditional-compile-remove(soft-mute) */ showMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ muteAllPromptLabels,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllPromptConfirm\n  ]);\n\n  const sidePaneRenderer: SidePaneRenderer = useMemo(\n    () => ({\n      headerRenderer: onRenderHeader,\n      contentRenderer: onRenderContent,\n      id: PEOPLE_SIDE_PANE_ID\n    }),\n    [onRenderContent, onRenderHeader]\n  );\n\n  const openPane = useCallback(() => {\n    updateSidePaneRenderer(sidePaneRenderer);\n  }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n  const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n  // Update pane renderer if it is open and the openPane dep changes\n  useEffect(() => {\n    if (isOpen) {\n      openPane();\n    }\n  }, [isOpen, openPane]);\n\n  return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"usePeoplePane.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/SidePane/usePeoplePane.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { RefObject, useCallback, useEffect, useMemo } from 'react';\nimport { SidePaneRenderer, useIsParticularSidePaneOpen } from './SidePaneProvider';\nimport { SidePaneHeader } from '../../../common/SidePaneHeader';\nimport { PeoplePaneContent } from '../../../common/PeoplePaneContent';\nimport { useLocale } from '../../../localization';\nimport { ParticipantMenuItemsCallback, _DrawerMenuItemProps } from '@internal/react-components';\nimport { AvatarPersonaDataCallback } from '../../../common/AvatarPersona';\nimport { IButton } from '@fluentui/react';\nimport { IContextualMenuItem, IContextualMenuProps } from '@fluentui/react';\n/* @conditional-compile-remove(soft-mute) */\nimport { getRemoteParticipants } from '../../selectors/baseSelectors';\n/* @conditional-compile-remove(soft-mute) */\nimport { useSelector } from '../../hooks/useSelector';\n/* @conditional-compile-remove(soft-mute) */\nimport { Prompt } from '../Prompt';\n\nconst PEOPLE_SIDE_PANE_ID = 'people';\n\n/** @private */\nexport const usePeoplePane = (props: {\n  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n  setDrawerMenuItems: (items: _DrawerMenuItemProps[]) => void;\n  inviteLink?: string;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  mobileView?: boolean;\n  peopleButtonRef?: RefObject<IButton>;\n  setParticipantActioned?: (userId: string) => void;\n  spotlightedParticipantUserIds?: string[];\n  onStartLocalSpotlight?: () => Promise<void>;\n  onStopLocalSpotlight?: () => Promise<void>;\n  onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;\n  onStopAllSpotlight?: () => Promise<void>;\n  maxParticipantsToSpotlight?: number;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteParticipant?: (userId: string) => Promise<void>;\n  /* @conditional-compile-remove(soft-mute) */\n  onMuteAllRemoteParticipants?: () => Promise<void>;\n  pinnedParticipants?: string[];\n  onPinParticipant?: (userId: string) => void;\n  onUnpinParticipant?: (userId: string) => void;\n  disablePinMenuItem?: boolean;\n}): {\n  openPeoplePane: () => void;\n  closePeoplePane: () => void;\n  isPeoplePaneOpen: boolean;\n} => {\n  const {\n    updateSidePaneRenderer,\n    inviteLink,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    setDrawerMenuItems,\n    mobileView,\n    peopleButtonRef,\n    setParticipantActioned,\n    spotlightedParticipantUserIds,\n    onStartLocalSpotlight,\n    onStopLocalSpotlight,\n    onStartRemoteSpotlight,\n    onStopRemoteSpotlight,\n    onStopAllSpotlight,\n    maxParticipantsToSpotlight,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteParticipant,\n    pinnedParticipants,\n    onPinParticipant,\n    onUnpinParticipant,\n    disablePinMenuItem,\n    /* @conditional-compile-remove(soft-mute) */\n    onMuteAllRemoteParticipants\n  } = props;\n\n  const closePane = useCallback(() => {\n    updateSidePaneRenderer(undefined);\n    peopleButtonRef?.current?.focus();\n  }, [peopleButtonRef, updateSidePaneRenderer]);\n\n  const localeStrings = useLocale().strings.call;\n  /* @conditional-compile-remove(soft-mute) */\n  const remoteParticipants = useSelector(getRemoteParticipants);\n  /* @conditional-compile-remove(soft-mute) */\n  const [showMuteAllPrompt, setShowMuteAllPrompt] = React.useState(false);\n  /* @conditional-compile-remove(soft-mute) */\n  const muteAllPromptLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.muteAllConfirmButtonLabel,\n      heading: localeStrings.muteAllDialogTitle,\n      text: localeStrings.muteAllDialogContent,\n      cancelButtonLabel: localeStrings.muteAllCancelButtonLabel\n    }),\n    [\n      localeStrings.muteAllConfirmButtonLabel,\n      localeStrings.muteAllDialogTitle,\n      localeStrings.muteAllDialogContent,\n      localeStrings.muteAllCancelButtonLabel\n    ]\n  );\n\n  /* @conditional-compile-remove(soft-mute) */\n  const onMuteAllPromptConfirm = useCallback(() => {\n    onMuteAllRemoteParticipants && onMuteAllRemoteParticipants();\n    setShowMuteAllPrompt(false);\n  }, [onMuteAllRemoteParticipants, setShowMuteAllPrompt]);\n\n  const sidePaneHeaderMenuProps: IContextualMenuProps = useMemo(() => {\n    const menuItems: IContextualMenuItem[] = [];\n    if (onStopAllSpotlight && spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0) {\n      menuItems.push({\n        key: 'stopAllSpotlightKey',\n        text: localeStrings.stopAllSpotlightMenuLabel,\n        iconProps: { iconName: 'StopAllSpotlightMenuButton', styles: { root: { lineHeight: 0 } } },\n        onClick: () => {\n          onStopAllSpotlight();\n        },\n        ariaLabel: localeStrings.stopAllSpotlightMenuLabel\n      });\n    }\n    /* @conditional-compile-remove(soft-mute) */\n    if (onMuteAllRemoteParticipants && remoteParticipants) {\n      let isAllMuted = true;\n      if (remoteParticipants) {\n        for (const participant of Object.values(remoteParticipants)) {\n          if (!participant.isMuted) {\n            isAllMuted = false;\n            break;\n          }\n        }\n      }\n      menuItems.push({\n        ['data-ui-id']: 'people-pane-mute-all-remote-participants',\n        key: 'muteAllRemoteParticipants',\n        text: localeStrings.muteAllMenuLabel,\n        iconProps: {\n          iconName: 'ContextualMenuMicMutedIcon',\n          styles: { root: { lineHeight: 0 } }\n        },\n        onClick: () => {\n          setShowMuteAllPrompt(true);\n        },\n        ariaLabel: localeStrings.muteAllMenuLabel,\n        disabled: isAllMuted\n      });\n    }\n    return {\n      items: menuItems\n    };\n  }, [\n    onStopAllSpotlight,\n    spotlightedParticipantUserIds,\n    localeStrings.stopAllSpotlightMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ localeStrings.muteAllMenuLabel,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllRemoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ remoteParticipants,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt\n  ]);\n\n  const onRenderHeader = useCallback(\n    () => (\n      <SidePaneHeader\n        onClose={closePane}\n        headingText={localeStrings.peoplePaneTitle}\n        dismissSidePaneButtonAriaLabel={localeStrings.dismissSidePaneButtonLabel}\n        mobileView={mobileView ?? false}\n      />\n    ),\n    [mobileView, closePane, localeStrings]\n  );\n\n  const onFetchParticipantMenuItemsForCallComposite = useCallback(\n    (participantId: string, myUserId?: string, defaultMenuItems?: IContextualMenuItem[]): IContextualMenuItem[] => {\n      let isPinned = pinnedParticipants?.includes(participantId);\n      const _defaultMenuItems: IContextualMenuItem[] = defaultMenuItems ?? [];\n      const isSpotlighted = spotlightedParticipantUserIds?.includes(participantId);\n      const isMe = myUserId === participantId;\n      isPinned = isSpotlighted ? false : isPinned;\n      if (isSpotlighted) {\n        const stopSpotlightMenuText = isMe\n          ? localeStrings.stopSpotlightOnSelfMenuLabel\n          : localeStrings.stopSpotlightMenuLabel;\n        const onStopSpotlight = isMe\n          ? onStopLocalSpotlight\n          : onStopRemoteSpotlight\n          ? () => {\n              onStopRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStopSpotlight && stopSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'stop-spotlight',\n            text: stopSpotlightMenuText,\n            onClick: onStopSpotlight,\n            iconProps: {\n              iconName: 'StopSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: stopSpotlightMenuText\n          });\n        }\n      } else {\n        const startSpotlightMenuText =\n          spotlightedParticipantUserIds && spotlightedParticipantUserIds.length > 0\n            ? localeStrings.addSpotlightMenuLabel\n            : localeStrings.startSpotlightMenuLabel;\n        const maxSpotlightedParticipantsReached = maxParticipantsToSpotlight\n          ? spotlightedParticipantUserIds\n            ? spotlightedParticipantUserIds.length >= maxParticipantsToSpotlight\n            : false\n          : false;\n        const onStartSpotlight = isMe\n          ? onStartLocalSpotlight\n          : onStartRemoteSpotlight\n          ? () => {\n              onStartRemoteSpotlight([participantId]);\n            }\n          : undefined;\n        if (onStartSpotlight && startSpotlightMenuText) {\n          _defaultMenuItems.push({\n            key: 'start-spotlight',\n            text: startSpotlightMenuText,\n            onClick: onStartSpotlight,\n            iconProps: {\n              iconName: 'StartSpotlightContextualMenuItem',\n              styles: { root: { lineHeight: 0 } }\n            },\n            ariaLabel: startSpotlightMenuText,\n            disabled: maxSpotlightedParticipantsReached,\n            title: maxSpotlightedParticipantsReached ? localeStrings.spotlightLimitReachedMenuTitle : undefined\n          });\n        }\n      }\n      /* @conditional-compile-remove(soft-mute) */\n      if (onMuteParticipant && !isMe) {\n        const isMuted = remoteParticipants && remoteParticipants[participantId]?.isMuted;\n        _defaultMenuItems.push({\n          key: 'mute',\n          text: 'Mute',\n          iconProps: {\n            iconName: 'ContextualMenuMicMutedIcon',\n            styles: { root: { lineHeight: 0 } }\n          },\n          onClick: () => {\n            onMuteParticipant(participantId);\n          },\n          'data-ui-id': 'participant-item-mute-participant',\n          ariaLabel: 'Mute',\n          disabled: isMuted\n        });\n      }\n\n      if (!isMe && isPinned !== undefined) {\n        if (isPinned && onUnpinParticipant && localeStrings?.unpinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'unpin',\n            text: localeStrings?.unpinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'UnpinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onUnpinParticipant?.(participantId);\n            },\n            'data-ui-id': 'participant-item-unpin-participant-button',\n            ariaLabel: localeStrings.unpinParticipantMenuItemAriaLabel\n          });\n        }\n        if (!isPinned && onPinParticipant && localeStrings?.pinParticipantMenuLabel) {\n          _defaultMenuItems.push({\n            key: 'pin',\n            text: disablePinMenuItem\n              ? localeStrings.pinParticipantLimitReachedMenuLabel\n              : localeStrings.pinParticipantMenuLabel,\n            iconProps: {\n              iconName: 'PinParticipant',\n              styles: { root: { lineHeight: '1rem', textAlign: 'center' } }\n            },\n            onClick: () => {\n              onPinParticipant(participantId);\n            },\n            'data-ui-id': 'participant-item-pin-participant-button',\n            disabled: disablePinMenuItem || isSpotlighted,\n            ariaLabel: localeStrings.pinParticipantMenuItemAriaLabel\n          });\n        }\n      }\n      return onFetchParticipantMenuItems\n        ? onFetchParticipantMenuItems(participantId, myUserId, _defaultMenuItems)\n        : _defaultMenuItems;\n    },\n    [\n      spotlightedParticipantUserIds,\n      onStartLocalSpotlight,\n      onStopLocalSpotlight,\n      onStartRemoteSpotlight,\n      onStopRemoteSpotlight,\n      onFetchParticipantMenuItems,\n      /* @conditional-compile-remove(soft-mute) */\n      onMuteParticipant,\n      /* @conditional-compile-remove(soft-mute) */\n      remoteParticipants,\n      localeStrings.stopSpotlightMenuLabel,\n      localeStrings.stopSpotlightOnSelfMenuLabel,\n      localeStrings.addSpotlightMenuLabel,\n      localeStrings.startSpotlightMenuLabel,\n      localeStrings.spotlightLimitReachedMenuTitle,\n      maxParticipantsToSpotlight,\n      pinnedParticipants,\n      onPinParticipant,\n      onUnpinParticipant,\n      disablePinMenuItem,\n      localeStrings.pinParticipantMenuLabel,\n      localeStrings.pinParticipantLimitReachedMenuLabel,\n      localeStrings.unpinParticipantMenuLabel,\n      localeStrings.unpinParticipantMenuItemAriaLabel,\n      localeStrings.pinParticipantMenuItemAriaLabel\n    ]\n  );\n\n  const onRenderContent = useCallback((): JSX.Element => {\n    return (\n      <>\n        {\n          /* @conditional-compile-remove(soft-mute) */\n          <Prompt\n            {...muteAllPromptLabels}\n            styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n            onConfirm={() => onMuteAllPromptConfirm()}\n            isOpen={showMuteAllPrompt}\n            onCancel={() => setShowMuteAllPrompt(false)}\n          />\n        }\n        <PeoplePaneContent\n          inviteLink={inviteLink}\n          onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItemsForCallComposite}\n          setDrawerMenuItems={setDrawerMenuItems}\n          mobileView={mobileView}\n          setParticipantActioned={setParticipantActioned}\n          participantListHeadingMoreButtonProps={sidePaneHeaderMenuProps}\n          pinnedParticipants={pinnedParticipants}\n        />\n      </>\n    );\n  }, [\n    inviteLink,\n    mobileView,\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItemsForCallComposite,\n    setDrawerMenuItems,\n    setParticipantActioned,\n    sidePaneHeaderMenuProps,\n    pinnedParticipants,\n    /* @conditional-compile-remove(soft-mute) */ showMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ setShowMuteAllPrompt,\n    /* @conditional-compile-remove(soft-mute) */ muteAllPromptLabels,\n    /* @conditional-compile-remove(soft-mute) */ onMuteAllPromptConfirm\n  ]);\n\n  const sidePaneRenderer: SidePaneRenderer = useMemo(\n    () => ({\n      headerRenderer: onRenderHeader,\n      contentRenderer: onRenderContent,\n      id: PEOPLE_SIDE_PANE_ID\n    }),\n    [onRenderContent, onRenderHeader]\n  );\n\n  const openPane = useCallback(() => {\n    updateSidePaneRenderer(sidePaneRenderer);\n  }, [sidePaneRenderer, updateSidePaneRenderer]);\n\n  const isOpen = useIsParticularSidePaneOpen(PEOPLE_SIDE_PANE_ID);\n\n  // Update pane renderer if it is open and the openPane dep changes\n  useEffect(() => {\n    if (isOpen) {\n      openPane();\n    }\n  }, [isOpen, openPane]);\n\n  return { openPeoplePane: openPane, closePeoplePane: closePane, isPeoplePaneOpen: isOpen };\n};\n"]}
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/EndCall.js
    CHANGED
    
    | 
         @@ -81,7 +81,7 @@ export const EndCall = (props) => { 
     | 
|
| 
       81 
81 
     | 
    
         
             
                    React.createElement(Prompt, Object.assign({}, dialogLabels, { styles: { main: { minWidth: '22.5rem', padding: '1.5rem' } }, cancelButtonLabel: localeStrings.call.hangUpCancelButtonLabel, onConfirm: () => onHangUpConfirm(props.enableEndCallMenu), isOpen: showHangUpConfirm, onCancel: toggleConfirm })),
         
     | 
| 
       82 
82 
     | 
    
         
             
                    React.createElement(EndCallButton, Object.assign({ "data-ui-id": "call-composite-hangup-button" }, hangUpButtonProps, { 
         
     | 
| 
       83 
83 
     | 
    
         
             
                        /* @conditional-compile-remove(end-call-options) */
         
     | 
| 
       84 
     | 
    
         
            -
                        onHangUp: hangUpOverride, styles: styles, showLabel: !compactMode, 
         
     | 
| 
      
 84 
     | 
    
         
            +
                        onHangUp: props.disableEndCallModal ? onHangUp : hangUpOverride, styles: styles, showLabel: !compactMode, 
         
     | 
| 
       85 
85 
     | 
    
         
             
                        /* @conditional-compile-remove(end-call-options) */
         
     | 
| 
       86 
86 
     | 
    
         
             
                        enableEndCallMenu: (_a = props.enableEndCallMenu) !== null && _a !== void 0 ? _a : false }))));
         
     | 
| 
       87 
87 
     | 
    
         
             
            };
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"EndCall.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/buttons/EndCall.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAA0B,aAAa,EAAE,+CAAmC;AACnF,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,mDAAmD;AACnD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7G,mDAAmD;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,mDAAmD;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,eAAe;AACf,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"EndCall.js","sourceRoot":"","sources":["../../../../../../../../../react-composites/src/composites/CallComposite/components/buttons/EndCall.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { concatStyleSets } from '@fluentui/react';\nimport { ControlBarButtonStyles, EndCallButton } from '@internal/react-components';\nimport React, { useMemo } from 'react';\n/* @conditional-compile-remove(end-call-options) */\nimport { useState, useCallback } from 'react';\nimport { CallControlDisplayType } from '../../../common/types/CommonCallControlOptions';\nimport { usePropsFor } from '../../hooks/usePropsFor';\nimport { groupCallLeaveButtonCompressedStyle, groupCallLeaveButtonStyle } from '../../styles/Buttons.styles';\n/* @conditional-compile-remove(end-call-options) */\nimport { Prompt } from '../Prompt';\n/* @conditional-compile-remove(end-call-options) */\nimport { useLocale } from '../../../localization';\n\n/** @private */\nexport const EndCall = (props: {\n  displayType?: CallControlDisplayType;\n  styles?: ControlBarButtonStyles;\n  mobileView?: boolean;\n  /* @conditional-compile-remove(end-call-options) */\n  enableEndCallMenu?: boolean;\n  disableEndCallModal?: boolean;\n}): JSX.Element => {\n  const compactMode = props.displayType === 'compact';\n  const hangUpButtonProps = usePropsFor(EndCallButton);\n  /* @conditional-compile-remove(end-call-options) */\n  const localeStrings = useLocale().strings;\n\n  /* @conditional-compile-remove(end-call-options) */\n  const endCallDiaglogLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.call.endCallConfirmButtonLabel,\n      heading: localeStrings.call.endCallConfirmDialogTitle,\n      text: localeStrings.call.leaveConfirmDialogContent\n    }),\n    [\n      localeStrings.call.endCallConfirmButtonLabel,\n      localeStrings.call.endCallConfirmDialogTitle,\n      localeStrings.call.leaveConfirmDialogContent\n    ]\n  );\n\n  /* @conditional-compile-remove(end-call-options) */\n  const leaveDiaglogLabels = useMemo(\n    () => ({\n      confirmButtonLabel: localeStrings.call.leaveConfirmButtonLabel,\n      heading: localeStrings.call.leaveConfirmDialogTitle,\n      text: localeStrings.call.leaveConfirmDialogContent\n    }),\n    [\n      localeStrings.call.leaveConfirmButtonLabel,\n      localeStrings.call.leaveConfirmDialogContent,\n      localeStrings.call.leaveConfirmDialogTitle\n    ]\n  );\n\n  /* @conditional-compile-remove(end-call-options) */\n  const [dialogLabels, setDialogLabels] = useState(leaveDiaglogLabels);\n\n  /* @conditional-compile-remove(end-call-options) */\n  const { onHangUp } = hangUpButtonProps;\n\n  /* @conditional-compile-remove(end-call-options) */\n  const [showHangUpConfirm, setShowHangUpConfirm] = React.useState(false);\n\n  /* @conditional-compile-remove(end-call-options) */\n  const toggleConfirm = useCallback(() => {\n    setShowHangUpConfirm(!showHangUpConfirm);\n  }, [showHangUpConfirm]);\n\n  /* @conditional-compile-remove(end-call-options) */\n  const onHangUpConfirm = useCallback(\n    (hangUpForEveryone?: boolean) => {\n      onHangUp && onHangUp(hangUpForEveryone);\n      toggleConfirm();\n    },\n    [onHangUp, toggleConfirm]\n  );\n\n  /* @conditional-compile-remove(end-call-options) */\n  const hangUpOverride = useCallback(\n    async (forEveryone?: boolean) => {\n      if (\n        props.mobileView ||\n        forEveryone === false /* value being false(not undefined) because it comes from endCall option */\n      ) {\n        onHangUp();\n        return;\n      }\n      setDialogLabels(forEveryone ? endCallDiaglogLabels : leaveDiaglogLabels);\n      toggleConfirm();\n    },\n    [endCallDiaglogLabels, leaveDiaglogLabels, onHangUp, props.mobileView, toggleConfirm]\n  );\n\n  const styles = useMemo(\n    () =>\n      concatStyleSets(\n        compactMode ? groupCallLeaveButtonCompressedStyle : groupCallLeaveButtonStyle,\n        props.styles ?? {}\n      ),\n    [compactMode, props.styles]\n  );\n  return (\n    <>\n      {\n        /* @conditional-compile-remove(end-call-options) */\n        <Prompt\n          {...dialogLabels}\n          styles={{ main: { minWidth: '22.5rem', padding: '1.5rem' } }}\n          cancelButtonLabel={localeStrings.call.hangUpCancelButtonLabel}\n          onConfirm={() => onHangUpConfirm(props.enableEndCallMenu)} // if enableEndCallMenu is true, that means the dialog is triggered by hangUpForEveryone button\n          isOpen={showHangUpConfirm}\n          onCancel={toggleConfirm}\n        />\n      }\n      <EndCallButton\n        data-ui-id=\"call-composite-hangup-button\"\n        {...hangUpButtonProps}\n        /* @conditional-compile-remove(end-call-options) */\n        onHangUp={props.disableEndCallModal ? onHangUp : hangUpOverride}\n        styles={styles}\n        showLabel={!compactMode}\n        /* @conditional-compile-remove(end-call-options) */\n        enableEndCallMenu={props.enableEndCallMenu ?? false}\n      />\n    </>\n  );\n};\n"]}
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js
    CHANGED
    
    | 
         @@ -49,7 +49,7 @@ const inferCommonCallControlOptions = (mobileView, commonCallControlOptions) => 
     | 
|
| 
       49 
49 
     | 
    
         
             
             * @private
         
     | 
| 
       50 
50 
     | 
    
         
             
             */
         
     | 
| 
       51 
51 
     | 
    
         
             
            export const CommonCallControlBar = (props) => {
         
     | 
| 
       52 
     | 
    
         
            -
                var _a, _b, _c, _d, _e, _f, _g, _h, _j;
         
     | 
| 
      
 52 
     | 
    
         
            +
                var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
         
     | 
| 
       53 
53 
     | 
    
         
             
                const theme = useTheme();
         
     | 
| 
       54 
54 
     | 
    
         
             
                const rtl = theme.rtl;
         
     | 
| 
       55 
55 
     | 
    
         
             
                const controlBarContainerRef = useRef(null);
         
     | 
| 
         @@ -218,7 +218,9 @@ export const CommonCallControlBar = (props) => { 
     | 
|
| 
       218 
218 
     | 
    
         
             
                                                        ((_h = (_g = props.callControls) === null || _g === void 0 ? void 0 : _g.endCallButton) === null || _h === void 0 ? void 0 : _h.hangUpForEveryone) === 'endCallOptions' &&
         
     | 
| 
       219 
219 
     | 
    
         
             
                                                        // Only show the end call menu when the call is connected, user should not be able to end the call for everyone
         
     | 
| 
       220 
220 
     | 
    
         
             
                                                        // when they are not actively in the call to communicate they will.
         
     | 
| 
       221 
     | 
    
         
            -
                                                        callState.callStatus === 'Connected'  
     | 
| 
      
 221 
     | 
    
         
            +
                                                        callState.callStatus === 'Connected', disableEndCallModal: !isBoolean(props.callControls) &&
         
     | 
| 
      
 222 
     | 
    
         
            +
                                                        !isBoolean((_j = props.callControls) === null || _j === void 0 ? void 0 : _j.endCallButton) &&
         
     | 
| 
      
 223 
     | 
    
         
            +
                                                        ((_l = (_k = props.callControls) === null || _k === void 0 ? void 0 : _k.endCallButton) === null || _l === void 0 ? void 0 : _l.disableEndCallModal) }))))))),
         
     | 
| 
       222 
224 
     | 
    
         
             
                        !props.mobileView && sideButtonsPresent && (React.createElement(Stack.Item, null,
         
     | 
| 
       223 
225 
     | 
    
         
             
                            React.createElement("div", { ref: sidepaneControlsRef },
         
     | 
| 
       224 
226 
     | 
    
         
             
                                React.createElement(Stack, { horizontal: true, className: !props.mobileView ? mergeStyles(desktopButtonContainerStyle) : undefined },
         
     | 
| 
         @@ -226,8 +228,8 @@ export const CommonCallControlBar = (props) => { 
     | 
|
| 
       226 
228 
     | 
    
         
             
                                            ? peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.tooltipCloseAriaLabel
         
     | 
| 
       227 
229 
     | 
    
         
             
                                            : peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.tooltipOpenAriaLabel, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "common-call-composite-people-button", disabled: props.disableButtonsForLobbyPage ||
         
     | 
| 
       228 
230 
     | 
    
         
             
                                            props.disableButtonsForHoldScreen ||
         
     | 
| 
       229 
     | 
    
         
            -
                                            isDisabled(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef })), ( 
     | 
| 
       230 
     | 
    
         
            -
                                     
     | 
| 
      
 231 
     | 
    
         
            +
                                            isDisabled(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef })), (_m = customButtons['secondary']) === null || _m === void 0 ? void 0 :
         
     | 
| 
      
 232 
     | 
    
         
            +
                                    _m.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
         
     | 
| 
       231 
233 
     | 
    
         
             
                                        return (React.createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
         
     | 
| 
       232 
234 
     | 
    
         
             
                                    }))))))));
         
     | 
| 
       233 
235 
     | 
    
         
             
            };
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"CommonCallControlBar.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/common/ControlBar/CommonCallControlBar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useMemo, useRef, useEffect, useState, useCallback } from 'react';\nimport { CallAdapterProvider } from '../../CallComposite/adapter/CallAdapterProvider';\nimport { CallAdapter } from '../../CallComposite';\nimport { PeopleButton } from './PeopleButton';\nimport {\n  concatStyleSets,\n  IButton,\n  IStyle,\n  ITheme,\n  mergeStyles,\n  mergeStyleSets,\n  Stack,\n  useTheme\n} from '@fluentui/react';\nimport { controlBarContainerStyles } from '../../CallComposite/styles/CallControls.styles';\nimport { callControlsContainerStyles } from '../../CallComposite/styles/CallPage.styles';\nimport { useCallWithChatCompositeStrings } from '../../CallWithChatComposite/hooks/useCallWithChatCompositeStrings';\nimport { BaseCustomStyles, ControlBarButtonStyles } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { ControlBar } from '@internal/react-components';\nimport { Microphone } from '../../CallComposite/components/buttons/Microphone';\nimport { Camera } from '../../CallComposite/components/buttons/Camera';\nimport { ScreenShare } from '../../CallComposite/components/buttons/ScreenShare';\nimport { EndCall } from '../../CallComposite/components/buttons/EndCall';\nimport { MoreButton } from '../MoreButton';\nimport { ContainerRectProps } from '../ContainerRectProps';\nimport {\n  CUSTOM_BUTTON_OPTIONS,\n  generateCustomCallControlBarButton,\n  onFetchCustomButtonPropsTrampoline\n} from './CustomButton';\nimport { DesktopMoreButton } from './DesktopMoreButton';\nimport { isDisabled } from '../../CallComposite/utils';\nimport { HiddenFocusStartPoint } from '../HiddenFocusStartPoint';\nimport { CallWithChatControlOptions } from '../../CallWithChatComposite';\nimport { CommonCallControlOptions } from '../types/CommonCallControlOptions';\nimport { CaptionsSettingsModal } from '../CaptionsSettingsModal';\nimport { RaiseHand } from '../../CallComposite/components/buttons/RaiseHand';\nimport { Reaction } from '../../CallComposite/components/buttons/Reaction';\nimport { useSelector } from '../../CallComposite/hooks/useSelector';\nimport { capabilitySelector } from '../../CallComposite/selectors/capabilitySelector';\nimport { DtmfDialpadButton } from './DtmfDialerButton';\nimport { ExitSpotlightButton } from '../ExitSpotlightButton';\nimport { useLocale } from '../../localization';\n/* @conditional-compile-remove(end-call-options) */\nimport { isBoolean } from '../utils';\n/* @conditional-compile-remove(end-call-options) */\nimport { getIsTeamsCall } from '../../CallComposite/selectors/baseSelectors';\nimport { callStatusSelector } from '../../CallComposite/selectors/callStatusSelector';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { MeetingConferencePhoneInfoModal } from '@internal/react-components';\n\n/**\n * @private\n */\nexport interface CommonCallControlBarProps {\n  callAdapter: CallAdapter;\n  peopleButtonChecked: boolean;\n  onPeopleButtonClicked: () => void;\n  onMoreButtonClicked?: () => void;\n  mobileView: boolean;\n  disableButtonsForLobbyPage: boolean;\n  callControls?: boolean | CommonCallControlOptions | CallWithChatControlOptions;\n  disableButtonsForHoldScreen?: boolean;\n  /* @conditional-compile-remove(PSTN-calls) */\n  onClickShowDialpad?: () => void;\n  onClickVideoEffects?: (showVideoEffects: boolean) => void;\n  isCaptionsSupported?: boolean;\n  isCaptionsOn?: boolean;\n  displayVertical?: boolean;\n  onUserSetOverflowGalleryPositionChange?: (position: 'Responsive' | 'horizontalTop') => void;\n  onUserSetGalleryLayout?: (layout: VideoGalleryLayout) => void;\n  userSetGalleryLayout?: VideoGalleryLayout;\n  peopleButtonRef?: React.RefObject<IButton>;\n  cameraButtonRef?: React.RefObject<IButton>;\n  videoBackgroundPickerRef?: React.RefObject<IButton>;\n  onSetDialpadPage?: () => void;\n  dtmfDialerPresent?: boolean;\n  onStopLocalSpotlight?: () => void;\n  useTeamsCaptions?: boolean;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  onToggleTeamsMeetingConferenceModal?: () => void;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  teamsMeetingConferenceModalPresent?: boolean;\n}\n\nconst inferCommonCallControlOptions = (\n  mobileView: boolean,\n  commonCallControlOptions?: boolean | CallWithChatControlOptions\n): CallWithChatControlOptions | false => {\n  if (commonCallControlOptions === false) {\n    return false;\n  }\n\n  const options =\n    commonCallControlOptions === true || commonCallControlOptions === undefined ? {} : commonCallControlOptions;\n  if (mobileView) {\n    // Set to compressed mode when composite is optimized for mobile\n    options.displayType = 'compact';\n    // Set options to always not show screen share button for mobile\n    options.screenShareButton = false;\n  }\n  return options;\n};\n\n/**\n * @private\n */\nexport const CommonCallControlBar = (props: CommonCallControlBarProps & ContainerRectProps): JSX.Element => {\n  const theme = useTheme();\n  const rtl = theme.rtl;\n\n  const controlBarContainerRef = useRef<HTMLHeadingElement>(null);\n  const sidepaneControlsRef = useRef<HTMLHeadingElement>(null);\n  const controlBarSizeRef = useRef<HTMLHeadingElement>(null);\n\n  const [controlBarButtonsWidth, setControlBarButtonsWidth] = useState(0);\n  const [panelsButtonsWidth, setPanelsButtonsWidth] = useState(0);\n  const [controlBarContainerWidth, setControlBarContainerWidth] = useState(0);\n\n  const [totalButtonsWidth, setTotalButtonsWidth] = useState(0);\n  const [isOutOfSpace, setIsOutOfSpace] = useState(false);\n\n  const callWithChatStrings = useCallWithChatCompositeStrings();\n  const options = inferCommonCallControlOptions(props.mobileView, props.callControls);\n\n  const [showCaptionsSettingsModal, setShowCaptionsSettingsModal] = useState(false);\n\n  /* @conditional-compile-remove(end-call-options) */\n  // If the hangup capability is not present, we default to true\n  const isHangUpForEveryoneAllowed =\n    useSelector((state) => state.call?.capabilitiesFeature?.capabilities.hangUpForEveryOne.isPresent) ?? true;\n  /* @conditional-compile-remove(end-call-options) */\n  const isTeams = useSelector(getIsTeamsCall);\n\n  const handleResize = useCallback((): void => {\n    setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n    setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n    setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n  }, []);\n\n  // on load set inital width\n  useEffect(() => {\n    setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n    setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n    setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n  }, []);\n\n  // get the current width of control bar buttons and panel control buttons when browser size change\n  useEffect(() => {\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, [handleResize]);\n\n  /* when size change, reset total buttons width and compare with the control bar container width\n  if the total width of those buttons exceed container width, do not center the control bar buttons based on parent container width\n  Instead let them take up the remaining white space on the left */\n  useEffect(() => {\n    // white space on the left when control bar buttons are centered based on container width + control bar buttons width + panel control buttons width\n    setTotalButtonsWidth(\n      (controlBarContainerWidth - controlBarButtonsWidth) / 2 + controlBarButtonsWidth + panelsButtonsWidth\n    );\n  }, [controlBarButtonsWidth, panelsButtonsWidth, controlBarContainerWidth]);\n\n  useEffect(() => {\n    setIsOutOfSpace(totalButtonsWidth > controlBarContainerWidth);\n  }, [totalButtonsWidth, controlBarContainerWidth]);\n\n  const openCaptionsSettingsModal = useCallback((): void => {\n    setShowCaptionsSettingsModal(true);\n  }, []);\n\n  const onDismissCaptionsSettings = useCallback((): void => {\n    setShowCaptionsSettingsModal(false);\n  }, []);\n\n  const peopleButtonStrings = useMemo(\n    () => ({\n      label: callWithChatStrings.peopleButtonLabel,\n      selectedLabel: callWithChatStrings.selectedPeopleButtonLabel,\n      tooltipOpenAriaLabel: callWithChatStrings.peopleButtonTooltipOpenAriaLabel,\n      tooltipCloseAriaLabel: callWithChatStrings.peopleButtonTooltipCloseAriaLabel,\n      tooltipOffContent: callWithChatStrings.peopleButtonTooltipOpen,\n      tooltipOnContent: callWithChatStrings.peopleButtonTooltipClose\n    }),\n    [callWithChatStrings]\n  );\n  const moreButtonStrings = useMemo(\n    () => ({\n      label: callWithChatStrings.moreDrawerButtonLabel,\n      tooltipContent: callWithChatStrings.moreDrawerButtonTooltip\n    }),\n    [callWithChatStrings]\n  );\n  const callStrings = useLocale().strings.call;\n  const exitSpotlightButtonStrings = useMemo(\n    () => ({\n      label: callStrings.exitSpotlightButtonLabel,\n      tooltipContent: callStrings.exitSpotlightButtonTooltip\n    }),\n    [callStrings]\n  );\n\n  const centerContainerStyles = useMemo(() => {\n    const styles: BaseCustomStyles = !props.mobileView ? desktopControlBarStyles : {};\n    return mergeStyleSets(styles, {\n      root: {\n        // Enforce a background color on control bar to ensure it matches the composite background color.\n        background: theme.semanticColors.bodyBackground\n      }\n    });\n  }, [props.mobileView, theme.semanticColors.bodyBackground]);\n  const screenShareButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n  const commonButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n  const endCallButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n\n  const controlBarWrapperDesktopStyles: IStyle = useMemo(\n    // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n    () => (!props.mobileView && !isOutOfSpace ? (rtl ? wrapperDesktopRtlStyles : wrapperDesktopStyles) : {}),\n    [props.mobileView, rtl, isOutOfSpace]\n  );\n\n  // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n  const controlBarDesktopContainerStyles: IStyle = useMemo(\n    () => (!props.mobileView && !isOutOfSpace ? { position: 'relative', minHeight: '4.5rem', width: '100%' } : {}),\n    [props.mobileView, isOutOfSpace]\n  );\n\n  const customButtons = useMemo(\n    () =>\n      generateCustomCallControlBarButton(\n        onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined),\n        options !== false ? options?.displayType : undefined\n      ),\n    [options]\n  );\n\n  const capabilitiesSelector = useSelector(capabilitySelector);\n  const callState = useSelector(callStatusSelector);\n  const isReactionAllowed =\n    callState.callStatus !== 'Connected' ||\n    !capabilitiesSelector?.capabilities ||\n    capabilitiesSelector.capabilities.useReactions.isPresent;\n\n  // when options is false then we want to hide the whole control bar.\n  if (options === false) {\n    return <></>;\n  }\n\n  const sideButtonsPresent =\n    isEnabled(options.peopleButton) || isEnabled(options.chatButton) || customButtons['secondary'] !== undefined;\n\n  const screenShareButtonIsEnabled = isEnabled(options?.screenShareButton);\n\n  const microphoneButtonIsEnabled = isEnabled(options?.microphoneButton);\n\n  const cameraButtonIsEnabled = isEnabled(options?.cameraButton);\n\n  const showExitSpotlightButton = options?.exitSpotlightButton !== false;\n\n  const showCaptionsButton =\n    props.isCaptionsSupported &&\n    /* @conditional-compile-remove(acs-close-captions) */ isEnabled(options.captionsButton);\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const showTeamsMeetingPhoneCallButton = isEnabled(options?.teamsMeetingPhoneCallButton);\n\n  const showDesktopMoreButton =\n    isEnabled(options?.moreButton) &&\n    (false ||\n      /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled(\n        options?.holdButton\n      ) ||\n      showCaptionsButton ||\n      props.onUserSetGalleryLayout);\n\n  const role = props.callAdapter.getState().call?.role;\n  const hideRaiseHandButtonInRoomsCall =\n    props.callAdapter.getState().isRoomsCall && role && ['Consumer', 'Unknown'].includes(role);\n  const reactionResources = props.callAdapter.getState().reactions;\n\n  return (\n    <div ref={controlBarSizeRef}>\n      <CallAdapterProvider adapter={props.callAdapter}>\n        {showCaptionsSettingsModal && (\n          <CaptionsSettingsModal\n            showCaptionsSettingsModal={showCaptionsSettingsModal}\n            onDismissCaptionsSettings={onDismissCaptionsSettings}\n            changeCaptionLanguage={props.isCaptionsOn && props.useTeamsCaptions}\n          />\n        )}\n        {\n          /* @conditional-compile-remove(teams-meeting-conference) */ props.teamsMeetingConferenceModalPresent && (\n            <MeetingConferencePhoneInfoModal\n              conferencePhoneInfoList={props.callAdapter.getState().call?.teamsMeetingConference ?? []}\n              showModal={props.teamsMeetingConferenceModalPresent}\n              onDismissMeetingPhoneInfoSettings={props.onToggleTeamsMeetingConferenceModal}\n            />\n          )\n        }\n      </CallAdapterProvider>\n      <Stack\n        horizontal\n        reversed={!props.mobileView && !isOutOfSpace}\n        horizontalAlign=\"space-between\"\n        className={mergeStyles(\n          callControlsContainerStyles,\n          controlBarContainerStyles,\n          controlBarDesktopContainerStyles\n        )}\n      >\n        <Stack.Item grow className={mergeStyles(controlBarWrapperDesktopStyles)}>\n          <CallAdapterProvider adapter={props.callAdapter}>\n            <Stack horizontalAlign=\"center\">\n              {/*\n              HiddenFocusStartPoint is a util component used when we can't ensure the initial element for first\n              tab focus is at the top of dom tree. It moves the first-tab focus to the next interact-able element\n              immediately after it in the dom tree.\n              */}\n              <HiddenFocusStartPoint />\n              <Stack.Item>\n                {/*\n                  Note: We use the layout=\"horizontal\" instead of dockedBottom because of how we position the\n                  control bar. The control bar exists in a Stack below the MediaGallery. The MediaGallery is\n                  set to grow and fill the remaining space not taken up by the ControlBar. If we were to use\n                  dockedBottom it has position absolute and would therefore float on top of the media gallery,\n                  occluding some of its content.\n                */}\n                <div ref={controlBarContainerRef}>\n                  <ControlBar layout={props.displayVertical ? 'vertical' : 'horizontal'} styles={centerContainerStyles}>\n                    {microphoneButtonIsEnabled && (\n                      <Microphone\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        splitButtonsForDeviceSelection={!props.mobileView}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.microphoneButton)}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {cameraButtonIsEnabled && (\n                      <Camera\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        splitButtonsForDeviceSelection={!props.mobileView}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.cameraButton)}\n                        onClickVideoEffects={props.onClickVideoEffects}\n                        componentRef={props.cameraButtonRef}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {!props.mobileView &&\n                      isReactionAllowed &&\n                      isEnabled(options.reactionButton) &&\n                      reactionResources && (\n                        <Reaction\n                          displayType={options.displayType}\n                          styles={commonButtonStyles}\n                          disabled={props.disableButtonsForHoldScreen}\n                          reactionResource={reactionResources}\n                        />\n                      )}\n                    {!props.mobileView && isEnabled(options.raiseHandButton) && !hideRaiseHandButtonInRoomsCall && (\n                      <RaiseHand\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.microphoneButton)}\n                      />\n                    )}\n                    {showDtmfDialerButton(options) && props.onSetDialpadPage !== undefined && (\n                      <DtmfDialpadButton\n                        styles={commonButtonStyles}\n                        displayType={options.displayType}\n                        onClick={() => {\n                          if (props.onSetDialpadPage !== undefined) {\n                            props.onSetDialpadPage();\n                          }\n                        }}\n                      />\n                    )}\n                    {showExitSpotlightButton && props.onStopLocalSpotlight && (\n                      <ExitSpotlightButton\n                        displayType={options.displayType}\n                        onClick={props.onStopLocalSpotlight}\n                        styles={commonButtonStyles}\n                        strings={exitSpotlightButtonStrings}\n                      />\n                    )}\n                    {screenShareButtonIsEnabled && (\n                      <ScreenShare\n                        option={options.screenShareButton}\n                        displayType={options.displayType}\n                        styles={screenShareButtonStyles}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.screenShareButton)}\n                      />\n                    )}\n                    {customButtons['primary']\n                      ?.slice(\n                        0,\n                        props.mobileView\n                          ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS\n                          : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS\n                      )\n                      .map((CustomButton, i) => {\n                        return (\n                          <CustomButton\n                            key={`primary-custom-button-${i}`}\n                            styles={commonButtonStyles}\n                            showLabel={options.displayType !== 'compact'}\n                            disableTooltip={props.mobileView}\n                          />\n                        );\n                      })}\n                    {props.mobileView && (\n                      <MoreButton\n                        data-ui-id=\"common-call-composite-more-button\"\n                        strings={moreButtonStrings}\n                        onClick={props.onMoreButtonClicked}\n                        disabled={props.disableButtonsForLobbyPage}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {!props.mobileView && showDesktopMoreButton && (\n                      <DesktopMoreButton\n                        disableButtonsForHoldScreen={props.disableButtonsForHoldScreen}\n                        styles={commonButtonStyles}\n                        /*@conditional-compile-remove(PSTN-calls) */\n                        onClickShowDialpad={props.onClickShowDialpad}\n                        callControls={props.callControls}\n                        isCaptionsSupported={showCaptionsButton}\n                        onCaptionsSettingsClick={openCaptionsSettingsModal}\n                        onUserSetOverflowGalleryPositionChange={props.onUserSetOverflowGalleryPositionChange}\n                        onUserSetGalleryLayout={props.onUserSetGalleryLayout}\n                        userSetGalleryLayout={props.userSetGalleryLayout}\n                        dtmfDialerPresent={props.dtmfDialerPresent}\n                        onSetDialpadPage={props.onSetDialpadPage}\n                        /* @conditional-compile-remove(teams-meeting-conference) */\n                        teamsMeetingPhoneCallEnable={showTeamsMeetingPhoneCallButton}\n                        /* @conditional-compile-remove(teams-meeting-conference) */\n                        onMeetingPhoneInfoClick={props.onToggleTeamsMeetingConferenceModal}\n                      />\n                    )}\n                    <EndCall\n                      displayType=\"compact\"\n                      mobileView={props.mobileView}\n                      styles={endCallButtonStyles}\n                      /* @conditional-compile-remove(end-call-options) */\n                      enableEndCallMenu={\n                        !isBoolean(props.callControls) &&\n                        !isBoolean(props.callControls?.endCallButton) &&\n                        !props.mobileView &&\n                        isHangUpForEveryoneAllowed &&\n                        !isTeams && // Temporary disable it for Teams call, since capability does not give the right value\n                        props.callControls?.endCallButton?.hangUpForEveryone === 'endCallOptions' &&\n                        // Only show the end call menu when the call is connected, user should not be able to end the call for everyone\n                        // when they are not actively in the call to communicate they will.\n                        callState.callStatus === 'Connected'\n                      }\n                    />\n                  </ControlBar>\n                </div>\n              </Stack.Item>\n            </Stack>\n          </CallAdapterProvider>\n        </Stack.Item>\n        {!props.mobileView && sideButtonsPresent && (\n          <Stack.Item>\n            <div ref={sidepaneControlsRef}>\n              <Stack horizontal className={!props.mobileView ? mergeStyles(desktopButtonContainerStyle) : undefined}>\n                {isEnabled(options?.peopleButton) && (\n                  <PeopleButton\n                    checked={props.peopleButtonChecked}\n                    ariaLabel={\n                      props.peopleButtonChecked\n                        ? peopleButtonStrings?.tooltipCloseAriaLabel\n                        : peopleButtonStrings?.tooltipOpenAriaLabel\n                    }\n                    showLabel={options.displayType !== 'compact'}\n                    onClick={props.onPeopleButtonClicked}\n                    data-ui-id=\"common-call-composite-people-button\"\n                    disabled={\n                      props.disableButtonsForLobbyPage ||\n                      props.disableButtonsForHoldScreen ||\n                      isDisabled(options.peopleButton)\n                    }\n                    strings={peopleButtonStrings}\n                    styles={commonButtonStyles}\n                    componentRef={props.peopleButtonRef}\n                  />\n                )}\n                {customButtons['secondary']\n                  ?.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS)\n                  .map((CustomButton, i) => {\n                    return (\n                      <CustomButton\n                        key={`secondary-custom-button-${i}`}\n                        styles={commonButtonStyles}\n                        showLabel={options.displayType !== 'compact'}\n                      />\n                    );\n                  })}\n              </Stack>\n            </div>\n          </Stack.Item>\n        )}\n      </Stack>\n    </div>\n  );\n};\n\nconst desktopButtonContainerStyle: IStyle = {\n  padding: '0.75rem',\n  columnGap: '0.5rem'\n};\n\nconst desktopControlBarStyles: BaseCustomStyles = {\n  root: desktopButtonContainerStyle\n};\n\n{\n  /*\n    Styling here to ensure the control bar buttons stay in the center of the parent component (control Container) regardless of its siblings\n    Need to add 'reversed' to parent container because the styling here reverse the position of the two stack items \n  */\n}\nconst wrapperDesktopStyles: IStyle = {\n  position: 'absolute',\n  left: '50%',\n  transform: 'translate(-50%, 0)'\n};\n\nconst wrapperDesktopRtlStyles: IStyle = {\n  position: 'absolute',\n  right: '50%',\n  transform: 'translate(-50%, 0)'\n};\n\n/** @private */\nexport const getDesktopCommonButtonStyles = (theme: ITheme): ControlBarButtonStyles => ({\n  root: {\n    border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n    borderRadius: theme.effects.roundedCorner4,\n    minHeight: '2.5rem',\n    maxWidth: '12rem' // allot extra space than the regular ControlBarButton. This is to give extra room to have the icon beside the text.\n  },\n  flexContainer: {\n    display: 'flex',\n    flexFlow: 'row nowrap'\n  },\n  textContainer: {\n    // Override the default so that label doesn't introduce a new block.\n    display: 'inline',\n\n    // Ensure width is set to permit child to show ellipsis when there is a label that is too long\n    maxWidth: '100%'\n  },\n  label: {\n    fontSize: theme.fonts.medium.fontSize,\n\n    // Ensure there is enough space between the icon and text to allow for the unread messages badge in the chat button\n    marginLeft: '0.625rem',\n\n    // Ensure letters that go above and below the standard text line like 'g', 'y', 'j' are not clipped\n    lineHeight: '1.5rem',\n\n    // Do not allow very long button texts to ruin the control bar experience, instead ensure long text is truncated and shows ellipsis\n    display: 'block',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  },\n  splitButtonMenuButton: {\n    border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n    borderTopRightRadius: theme.effects.roundedCorner4,\n    borderBottomRightRadius: theme.effects.roundedCorner4,\n    borderTopLeftRadius: '0',\n    borderBottomLeftRadius: '0'\n  },\n  splitButtonMenuButtonChecked: {\n    // Default colors the menu half similarly for :hover and when button is checked.\n    // To align with how the left-half is styled, override the checked style.\n    background: 'none'\n  }\n});\n\nconst getDesktopScreenShareButtonStyles = (theme: ITheme): ControlBarButtonStyles => {\n  const overrideStyles = {\n    border: 'none',\n    background: theme.palette.themePrimary,\n    color: theme.palette.white,\n    '* > svg': { fill: theme.palette.white },\n    '@media (forced-colors: active)': {\n      border: '1px solid',\n      borderColor: theme.palette.black\n    }\n  };\n  const overrides: ControlBarButtonStyles = {\n    rootChecked: overrideStyles,\n    rootCheckedHovered: overrideStyles\n  };\n  return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\n\nconst getDesktopEndCallButtonStyles = (theme: ITheme): ControlBarButtonStyles => {\n  const overrides: ControlBarButtonStyles = {\n    root: {\n      // Suppress border around the dark-red button.\n      border: 'none'\n    },\n    rootFocused: {\n      '@media (forced-colors: active)': {\n        background: 'highlight',\n        color: 'highlightText',\n        borderColor: theme.palette.black,\n        borderRadius: 'unset',\n        outline: `3px solid ${theme.palette.black}`\n      }\n    },\n    icon: {\n      '@media (forced-colors: active)': {\n        ':focused': {\n          color: theme.palette.white\n        }\n      }\n    }\n  };\n  return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\n\nconst isEnabled = (option: unknown): boolean => option !== false;\n\nconst showDtmfDialerButton = (options: CommonCallControlOptions | CallWithChatControlOptions): boolean => {\n  if (options.moreButton === false && options.dtmfDialerButton !== false) {\n    return true;\n  } else {\n    return false;\n  }\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"CommonCallControlBar.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/common/ControlBar/CommonCallControlBar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useMemo, useRef, useEffect, useState, useCallback } from 'react';\nimport { CallAdapterProvider } from '../../CallComposite/adapter/CallAdapterProvider';\nimport { CallAdapter } from '../../CallComposite';\nimport { PeopleButton } from './PeopleButton';\nimport {\n  concatStyleSets,\n  IButton,\n  IStyle,\n  ITheme,\n  mergeStyles,\n  mergeStyleSets,\n  Stack,\n  useTheme\n} from '@fluentui/react';\nimport { controlBarContainerStyles } from '../../CallComposite/styles/CallControls.styles';\nimport { callControlsContainerStyles } from '../../CallComposite/styles/CallPage.styles';\nimport { useCallWithChatCompositeStrings } from '../../CallWithChatComposite/hooks/useCallWithChatCompositeStrings';\nimport { BaseCustomStyles, ControlBarButtonStyles } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport { ControlBar } from '@internal/react-components';\nimport { Microphone } from '../../CallComposite/components/buttons/Microphone';\nimport { Camera } from '../../CallComposite/components/buttons/Camera';\nimport { ScreenShare } from '../../CallComposite/components/buttons/ScreenShare';\nimport { EndCall } from '../../CallComposite/components/buttons/EndCall';\nimport { MoreButton } from '../MoreButton';\nimport { ContainerRectProps } from '../ContainerRectProps';\nimport {\n  CUSTOM_BUTTON_OPTIONS,\n  generateCustomCallControlBarButton,\n  onFetchCustomButtonPropsTrampoline\n} from './CustomButton';\nimport { DesktopMoreButton } from './DesktopMoreButton';\nimport { isDisabled } from '../../CallComposite/utils';\nimport { HiddenFocusStartPoint } from '../HiddenFocusStartPoint';\nimport { CallWithChatControlOptions } from '../../CallWithChatComposite';\nimport { CommonCallControlOptions } from '../types/CommonCallControlOptions';\nimport { CaptionsSettingsModal } from '../CaptionsSettingsModal';\nimport { RaiseHand } from '../../CallComposite/components/buttons/RaiseHand';\nimport { Reaction } from '../../CallComposite/components/buttons/Reaction';\nimport { useSelector } from '../../CallComposite/hooks/useSelector';\nimport { capabilitySelector } from '../../CallComposite/selectors/capabilitySelector';\nimport { DtmfDialpadButton } from './DtmfDialerButton';\nimport { ExitSpotlightButton } from '../ExitSpotlightButton';\nimport { useLocale } from '../../localization';\n/* @conditional-compile-remove(end-call-options) */\nimport { isBoolean } from '../utils';\n/* @conditional-compile-remove(end-call-options) */\nimport { getIsTeamsCall } from '../../CallComposite/selectors/baseSelectors';\nimport { callStatusSelector } from '../../CallComposite/selectors/callStatusSelector';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { MeetingConferencePhoneInfoModal } from '@internal/react-components';\n\n/**\n * @private\n */\nexport interface CommonCallControlBarProps {\n  callAdapter: CallAdapter;\n  peopleButtonChecked: boolean;\n  onPeopleButtonClicked: () => void;\n  onMoreButtonClicked?: () => void;\n  mobileView: boolean;\n  disableButtonsForLobbyPage: boolean;\n  callControls?: boolean | CommonCallControlOptions | CallWithChatControlOptions;\n  disableButtonsForHoldScreen?: boolean;\n  /* @conditional-compile-remove(PSTN-calls) */\n  onClickShowDialpad?: () => void;\n  onClickVideoEffects?: (showVideoEffects: boolean) => void;\n  isCaptionsSupported?: boolean;\n  isCaptionsOn?: boolean;\n  displayVertical?: boolean;\n  onUserSetOverflowGalleryPositionChange?: (position: 'Responsive' | 'horizontalTop') => void;\n  onUserSetGalleryLayout?: (layout: VideoGalleryLayout) => void;\n  userSetGalleryLayout?: VideoGalleryLayout;\n  peopleButtonRef?: React.RefObject<IButton>;\n  cameraButtonRef?: React.RefObject<IButton>;\n  videoBackgroundPickerRef?: React.RefObject<IButton>;\n  onSetDialpadPage?: () => void;\n  dtmfDialerPresent?: boolean;\n  onStopLocalSpotlight?: () => void;\n  useTeamsCaptions?: boolean;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  onToggleTeamsMeetingConferenceModal?: () => void;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  teamsMeetingConferenceModalPresent?: boolean;\n}\n\nconst inferCommonCallControlOptions = (\n  mobileView: boolean,\n  commonCallControlOptions?: boolean | CallWithChatControlOptions\n): CallWithChatControlOptions | false => {\n  if (commonCallControlOptions === false) {\n    return false;\n  }\n\n  const options =\n    commonCallControlOptions === true || commonCallControlOptions === undefined ? {} : commonCallControlOptions;\n  if (mobileView) {\n    // Set to compressed mode when composite is optimized for mobile\n    options.displayType = 'compact';\n    // Set options to always not show screen share button for mobile\n    options.screenShareButton = false;\n  }\n  return options;\n};\n\n/**\n * @private\n */\nexport const CommonCallControlBar = (props: CommonCallControlBarProps & ContainerRectProps): JSX.Element => {\n  const theme = useTheme();\n  const rtl = theme.rtl;\n\n  const controlBarContainerRef = useRef<HTMLHeadingElement>(null);\n  const sidepaneControlsRef = useRef<HTMLHeadingElement>(null);\n  const controlBarSizeRef = useRef<HTMLHeadingElement>(null);\n\n  const [controlBarButtonsWidth, setControlBarButtonsWidth] = useState(0);\n  const [panelsButtonsWidth, setPanelsButtonsWidth] = useState(0);\n  const [controlBarContainerWidth, setControlBarContainerWidth] = useState(0);\n\n  const [totalButtonsWidth, setTotalButtonsWidth] = useState(0);\n  const [isOutOfSpace, setIsOutOfSpace] = useState(false);\n\n  const callWithChatStrings = useCallWithChatCompositeStrings();\n  const options = inferCommonCallControlOptions(props.mobileView, props.callControls);\n\n  const [showCaptionsSettingsModal, setShowCaptionsSettingsModal] = useState(false);\n\n  /* @conditional-compile-remove(end-call-options) */\n  // If the hangup capability is not present, we default to true\n  const isHangUpForEveryoneAllowed =\n    useSelector((state) => state.call?.capabilitiesFeature?.capabilities.hangUpForEveryOne.isPresent) ?? true;\n  /* @conditional-compile-remove(end-call-options) */\n  const isTeams = useSelector(getIsTeamsCall);\n\n  const handleResize = useCallback((): void => {\n    setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n    setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n    setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n  }, []);\n\n  // on load set inital width\n  useEffect(() => {\n    setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n    setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n    setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n  }, []);\n\n  // get the current width of control bar buttons and panel control buttons when browser size change\n  useEffect(() => {\n    window.addEventListener('resize', handleResize);\n    return () => window.removeEventListener('resize', handleResize);\n  }, [handleResize]);\n\n  /* when size change, reset total buttons width and compare with the control bar container width\n  if the total width of those buttons exceed container width, do not center the control bar buttons based on parent container width\n  Instead let them take up the remaining white space on the left */\n  useEffect(() => {\n    // white space on the left when control bar buttons are centered based on container width + control bar buttons width + panel control buttons width\n    setTotalButtonsWidth(\n      (controlBarContainerWidth - controlBarButtonsWidth) / 2 + controlBarButtonsWidth + panelsButtonsWidth\n    );\n  }, [controlBarButtonsWidth, panelsButtonsWidth, controlBarContainerWidth]);\n\n  useEffect(() => {\n    setIsOutOfSpace(totalButtonsWidth > controlBarContainerWidth);\n  }, [totalButtonsWidth, controlBarContainerWidth]);\n\n  const openCaptionsSettingsModal = useCallback((): void => {\n    setShowCaptionsSettingsModal(true);\n  }, []);\n\n  const onDismissCaptionsSettings = useCallback((): void => {\n    setShowCaptionsSettingsModal(false);\n  }, []);\n\n  const peopleButtonStrings = useMemo(\n    () => ({\n      label: callWithChatStrings.peopleButtonLabel,\n      selectedLabel: callWithChatStrings.selectedPeopleButtonLabel,\n      tooltipOpenAriaLabel: callWithChatStrings.peopleButtonTooltipOpenAriaLabel,\n      tooltipCloseAriaLabel: callWithChatStrings.peopleButtonTooltipCloseAriaLabel,\n      tooltipOffContent: callWithChatStrings.peopleButtonTooltipOpen,\n      tooltipOnContent: callWithChatStrings.peopleButtonTooltipClose\n    }),\n    [callWithChatStrings]\n  );\n  const moreButtonStrings = useMemo(\n    () => ({\n      label: callWithChatStrings.moreDrawerButtonLabel,\n      tooltipContent: callWithChatStrings.moreDrawerButtonTooltip\n    }),\n    [callWithChatStrings]\n  );\n  const callStrings = useLocale().strings.call;\n  const exitSpotlightButtonStrings = useMemo(\n    () => ({\n      label: callStrings.exitSpotlightButtonLabel,\n      tooltipContent: callStrings.exitSpotlightButtonTooltip\n    }),\n    [callStrings]\n  );\n\n  const centerContainerStyles = useMemo(() => {\n    const styles: BaseCustomStyles = !props.mobileView ? desktopControlBarStyles : {};\n    return mergeStyleSets(styles, {\n      root: {\n        // Enforce a background color on control bar to ensure it matches the composite background color.\n        background: theme.semanticColors.bodyBackground\n      }\n    });\n  }, [props.mobileView, theme.semanticColors.bodyBackground]);\n  const screenShareButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n  const commonButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n  const endCallButtonStyles = useMemo(\n    () => (!props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined),\n    [props.mobileView, theme]\n  );\n\n  const controlBarWrapperDesktopStyles: IStyle = useMemo(\n    // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n    () => (!props.mobileView && !isOutOfSpace ? (rtl ? wrapperDesktopRtlStyles : wrapperDesktopStyles) : {}),\n    [props.mobileView, rtl, isOutOfSpace]\n  );\n\n  // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n  const controlBarDesktopContainerStyles: IStyle = useMemo(\n    () => (!props.mobileView && !isOutOfSpace ? { position: 'relative', minHeight: '4.5rem', width: '100%' } : {}),\n    [props.mobileView, isOutOfSpace]\n  );\n\n  const customButtons = useMemo(\n    () =>\n      generateCustomCallControlBarButton(\n        onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined),\n        options !== false ? options?.displayType : undefined\n      ),\n    [options]\n  );\n\n  const capabilitiesSelector = useSelector(capabilitySelector);\n  const callState = useSelector(callStatusSelector);\n  const isReactionAllowed =\n    callState.callStatus !== 'Connected' ||\n    !capabilitiesSelector?.capabilities ||\n    capabilitiesSelector.capabilities.useReactions.isPresent;\n\n  // when options is false then we want to hide the whole control bar.\n  if (options === false) {\n    return <></>;\n  }\n\n  const sideButtonsPresent =\n    isEnabled(options.peopleButton) || isEnabled(options.chatButton) || customButtons['secondary'] !== undefined;\n\n  const screenShareButtonIsEnabled = isEnabled(options?.screenShareButton);\n\n  const microphoneButtonIsEnabled = isEnabled(options?.microphoneButton);\n\n  const cameraButtonIsEnabled = isEnabled(options?.cameraButton);\n\n  const showExitSpotlightButton = options?.exitSpotlightButton !== false;\n\n  const showCaptionsButton =\n    props.isCaptionsSupported &&\n    /* @conditional-compile-remove(acs-close-captions) */ isEnabled(options.captionsButton);\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  const showTeamsMeetingPhoneCallButton = isEnabled(options?.teamsMeetingPhoneCallButton);\n\n  const showDesktopMoreButton =\n    isEnabled(options?.moreButton) &&\n    (false ||\n      /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ isEnabled(\n        options?.holdButton\n      ) ||\n      showCaptionsButton ||\n      props.onUserSetGalleryLayout);\n\n  const role = props.callAdapter.getState().call?.role;\n  const hideRaiseHandButtonInRoomsCall =\n    props.callAdapter.getState().isRoomsCall && role && ['Consumer', 'Unknown'].includes(role);\n  const reactionResources = props.callAdapter.getState().reactions;\n\n  return (\n    <div ref={controlBarSizeRef}>\n      <CallAdapterProvider adapter={props.callAdapter}>\n        {showCaptionsSettingsModal && (\n          <CaptionsSettingsModal\n            showCaptionsSettingsModal={showCaptionsSettingsModal}\n            onDismissCaptionsSettings={onDismissCaptionsSettings}\n            changeCaptionLanguage={props.isCaptionsOn && props.useTeamsCaptions}\n          />\n        )}\n        {\n          /* @conditional-compile-remove(teams-meeting-conference) */ props.teamsMeetingConferenceModalPresent && (\n            <MeetingConferencePhoneInfoModal\n              conferencePhoneInfoList={props.callAdapter.getState().call?.teamsMeetingConference ?? []}\n              showModal={props.teamsMeetingConferenceModalPresent}\n              onDismissMeetingPhoneInfoSettings={props.onToggleTeamsMeetingConferenceModal}\n            />\n          )\n        }\n      </CallAdapterProvider>\n      <Stack\n        horizontal\n        reversed={!props.mobileView && !isOutOfSpace}\n        horizontalAlign=\"space-between\"\n        className={mergeStyles(\n          callControlsContainerStyles,\n          controlBarContainerStyles,\n          controlBarDesktopContainerStyles\n        )}\n      >\n        <Stack.Item grow className={mergeStyles(controlBarWrapperDesktopStyles)}>\n          <CallAdapterProvider adapter={props.callAdapter}>\n            <Stack horizontalAlign=\"center\">\n              {/*\n              HiddenFocusStartPoint is a util component used when we can't ensure the initial element for first\n              tab focus is at the top of dom tree. It moves the first-tab focus to the next interact-able element\n              immediately after it in the dom tree.\n              */}\n              <HiddenFocusStartPoint />\n              <Stack.Item>\n                {/*\n                  Note: We use the layout=\"horizontal\" instead of dockedBottom because of how we position the\n                  control bar. The control bar exists in a Stack below the MediaGallery. The MediaGallery is\n                  set to grow and fill the remaining space not taken up by the ControlBar. If we were to use\n                  dockedBottom it has position absolute and would therefore float on top of the media gallery,\n                  occluding some of its content.\n                */}\n                <div ref={controlBarContainerRef}>\n                  <ControlBar layout={props.displayVertical ? 'vertical' : 'horizontal'} styles={centerContainerStyles}>\n                    {microphoneButtonIsEnabled && (\n                      <Microphone\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        splitButtonsForDeviceSelection={!props.mobileView}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.microphoneButton)}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {cameraButtonIsEnabled && (\n                      <Camera\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        splitButtonsForDeviceSelection={!props.mobileView}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.cameraButton)}\n                        onClickVideoEffects={props.onClickVideoEffects}\n                        componentRef={props.cameraButtonRef}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {!props.mobileView &&\n                      isReactionAllowed &&\n                      isEnabled(options.reactionButton) &&\n                      reactionResources && (\n                        <Reaction\n                          displayType={options.displayType}\n                          styles={commonButtonStyles}\n                          disabled={props.disableButtonsForHoldScreen}\n                          reactionResource={reactionResources}\n                        />\n                      )}\n                    {!props.mobileView && isEnabled(options.raiseHandButton) && !hideRaiseHandButtonInRoomsCall && (\n                      <RaiseHand\n                        displayType={options.displayType}\n                        styles={commonButtonStyles}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.microphoneButton)}\n                      />\n                    )}\n                    {showDtmfDialerButton(options) && props.onSetDialpadPage !== undefined && (\n                      <DtmfDialpadButton\n                        styles={commonButtonStyles}\n                        displayType={options.displayType}\n                        onClick={() => {\n                          if (props.onSetDialpadPage !== undefined) {\n                            props.onSetDialpadPage();\n                          }\n                        }}\n                      />\n                    )}\n                    {showExitSpotlightButton && props.onStopLocalSpotlight && (\n                      <ExitSpotlightButton\n                        displayType={options.displayType}\n                        onClick={props.onStopLocalSpotlight}\n                        styles={commonButtonStyles}\n                        strings={exitSpotlightButtonStrings}\n                      />\n                    )}\n                    {screenShareButtonIsEnabled && (\n                      <ScreenShare\n                        option={options.screenShareButton}\n                        displayType={options.displayType}\n                        styles={screenShareButtonStyles}\n                        /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n                        disabled={props.disableButtonsForHoldScreen || isDisabled(options.screenShareButton)}\n                      />\n                    )}\n                    {customButtons['primary']\n                      ?.slice(\n                        0,\n                        props.mobileView\n                          ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS\n                          : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS\n                      )\n                      .map((CustomButton, i) => {\n                        return (\n                          <CustomButton\n                            key={`primary-custom-button-${i}`}\n                            styles={commonButtonStyles}\n                            showLabel={options.displayType !== 'compact'}\n                            disableTooltip={props.mobileView}\n                          />\n                        );\n                      })}\n                    {props.mobileView && (\n                      <MoreButton\n                        data-ui-id=\"common-call-composite-more-button\"\n                        strings={moreButtonStrings}\n                        onClick={props.onMoreButtonClicked}\n                        disabled={props.disableButtonsForLobbyPage}\n                        disableTooltip={props.mobileView}\n                      />\n                    )}\n                    {!props.mobileView && showDesktopMoreButton && (\n                      <DesktopMoreButton\n                        disableButtonsForHoldScreen={props.disableButtonsForHoldScreen}\n                        styles={commonButtonStyles}\n                        /*@conditional-compile-remove(PSTN-calls) */\n                        onClickShowDialpad={props.onClickShowDialpad}\n                        callControls={props.callControls}\n                        isCaptionsSupported={showCaptionsButton}\n                        onCaptionsSettingsClick={openCaptionsSettingsModal}\n                        onUserSetOverflowGalleryPositionChange={props.onUserSetOverflowGalleryPositionChange}\n                        onUserSetGalleryLayout={props.onUserSetGalleryLayout}\n                        userSetGalleryLayout={props.userSetGalleryLayout}\n                        dtmfDialerPresent={props.dtmfDialerPresent}\n                        onSetDialpadPage={props.onSetDialpadPage}\n                        /* @conditional-compile-remove(teams-meeting-conference) */\n                        teamsMeetingPhoneCallEnable={showTeamsMeetingPhoneCallButton}\n                        /* @conditional-compile-remove(teams-meeting-conference) */\n                        onMeetingPhoneInfoClick={props.onToggleTeamsMeetingConferenceModal}\n                      />\n                    )}\n                    <EndCall\n                      displayType=\"compact\"\n                      mobileView={props.mobileView}\n                      styles={endCallButtonStyles}\n                      /* @conditional-compile-remove(end-call-options) */\n                      enableEndCallMenu={\n                        !isBoolean(props.callControls) &&\n                        !isBoolean(props.callControls?.endCallButton) &&\n                        !props.mobileView &&\n                        isHangUpForEveryoneAllowed &&\n                        !isTeams && // Temporary disable it for Teams call, since capability does not give the right value\n                        props.callControls?.endCallButton?.hangUpForEveryone === 'endCallOptions' &&\n                        // Only show the end call menu when the call is connected, user should not be able to end the call for everyone\n                        // when they are not actively in the call to communicate they will.\n                        callState.callStatus === 'Connected'\n                      }\n                      disableEndCallModal={\n                        !isBoolean(props.callControls) &&\n                        !isBoolean(props.callControls?.endCallButton) &&\n                        props.callControls?.endCallButton?.disableEndCallModal\n                      }\n                    />\n                  </ControlBar>\n                </div>\n              </Stack.Item>\n            </Stack>\n          </CallAdapterProvider>\n        </Stack.Item>\n        {!props.mobileView && sideButtonsPresent && (\n          <Stack.Item>\n            <div ref={sidepaneControlsRef}>\n              <Stack horizontal className={!props.mobileView ? mergeStyles(desktopButtonContainerStyle) : undefined}>\n                {isEnabled(options?.peopleButton) && (\n                  <PeopleButton\n                    checked={props.peopleButtonChecked}\n                    ariaLabel={\n                      props.peopleButtonChecked\n                        ? peopleButtonStrings?.tooltipCloseAriaLabel\n                        : peopleButtonStrings?.tooltipOpenAriaLabel\n                    }\n                    showLabel={options.displayType !== 'compact'}\n                    onClick={props.onPeopleButtonClicked}\n                    data-ui-id=\"common-call-composite-people-button\"\n                    disabled={\n                      props.disableButtonsForLobbyPage ||\n                      props.disableButtonsForHoldScreen ||\n                      isDisabled(options.peopleButton)\n                    }\n                    strings={peopleButtonStrings}\n                    styles={commonButtonStyles}\n                    componentRef={props.peopleButtonRef}\n                  />\n                )}\n                {customButtons['secondary']\n                  ?.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS)\n                  .map((CustomButton, i) => {\n                    return (\n                      <CustomButton\n                        key={`secondary-custom-button-${i}`}\n                        styles={commonButtonStyles}\n                        showLabel={options.displayType !== 'compact'}\n                      />\n                    );\n                  })}\n              </Stack>\n            </div>\n          </Stack.Item>\n        )}\n      </Stack>\n    </div>\n  );\n};\n\nconst desktopButtonContainerStyle: IStyle = {\n  padding: '0.75rem',\n  columnGap: '0.5rem'\n};\n\nconst desktopControlBarStyles: BaseCustomStyles = {\n  root: desktopButtonContainerStyle\n};\n\n{\n  /*\n    Styling here to ensure the control bar buttons stay in the center of the parent component (control Container) regardless of its siblings\n    Need to add 'reversed' to parent container because the styling here reverse the position of the two stack items \n  */\n}\nconst wrapperDesktopStyles: IStyle = {\n  position: 'absolute',\n  left: '50%',\n  transform: 'translate(-50%, 0)'\n};\n\nconst wrapperDesktopRtlStyles: IStyle = {\n  position: 'absolute',\n  right: '50%',\n  transform: 'translate(-50%, 0)'\n};\n\n/** @private */\nexport const getDesktopCommonButtonStyles = (theme: ITheme): ControlBarButtonStyles => ({\n  root: {\n    border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n    borderRadius: theme.effects.roundedCorner4,\n    minHeight: '2.5rem',\n    maxWidth: '12rem' // allot extra space than the regular ControlBarButton. This is to give extra room to have the icon beside the text.\n  },\n  flexContainer: {\n    display: 'flex',\n    flexFlow: 'row nowrap'\n  },\n  textContainer: {\n    // Override the default so that label doesn't introduce a new block.\n    display: 'inline',\n\n    // Ensure width is set to permit child to show ellipsis when there is a label that is too long\n    maxWidth: '100%'\n  },\n  label: {\n    fontSize: theme.fonts.medium.fontSize,\n\n    // Ensure there is enough space between the icon and text to allow for the unread messages badge in the chat button\n    marginLeft: '0.625rem',\n\n    // Ensure letters that go above and below the standard text line like 'g', 'y', 'j' are not clipped\n    lineHeight: '1.5rem',\n\n    // Do not allow very long button texts to ruin the control bar experience, instead ensure long text is truncated and shows ellipsis\n    display: 'block',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  },\n  splitButtonMenuButton: {\n    border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n    borderTopRightRadius: theme.effects.roundedCorner4,\n    borderBottomRightRadius: theme.effects.roundedCorner4,\n    borderTopLeftRadius: '0',\n    borderBottomLeftRadius: '0'\n  },\n  splitButtonMenuButtonChecked: {\n    // Default colors the menu half similarly for :hover and when button is checked.\n    // To align with how the left-half is styled, override the checked style.\n    background: 'none'\n  }\n});\n\nconst getDesktopScreenShareButtonStyles = (theme: ITheme): ControlBarButtonStyles => {\n  const overrideStyles = {\n    border: 'none',\n    background: theme.palette.themePrimary,\n    color: theme.palette.white,\n    '* > svg': { fill: theme.palette.white },\n    '@media (forced-colors: active)': {\n      border: '1px solid',\n      borderColor: theme.palette.black\n    }\n  };\n  const overrides: ControlBarButtonStyles = {\n    rootChecked: overrideStyles,\n    rootCheckedHovered: overrideStyles\n  };\n  return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\n\nconst getDesktopEndCallButtonStyles = (theme: ITheme): ControlBarButtonStyles => {\n  const overrides: ControlBarButtonStyles = {\n    root: {\n      // Suppress border around the dark-red button.\n      border: 'none'\n    },\n    rootFocused: {\n      '@media (forced-colors: active)': {\n        background: 'highlight',\n        color: 'highlightText',\n        borderColor: theme.palette.black,\n        borderRadius: 'unset',\n        outline: `3px solid ${theme.palette.black}`\n      }\n    },\n    icon: {\n      '@media (forced-colors: active)': {\n        ':focused': {\n          color: theme.palette.white\n        }\n      }\n    }\n  };\n  return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\n\nconst isEnabled = (option: unknown): boolean => option !== false;\n\nconst showDtmfDialerButton = (options: CommonCallControlOptions | CallWithChatControlOptions): boolean => {\n  if (options.moreButton === false && options.dtmfDialerButton !== false) {\n    return true;\n  } else {\n    return false;\n  }\n};\n"]}
         
     | 
| 
         @@ -40,7 +40,7 @@ export const ParticipantListWithHeading = (props) => { 
     | 
|
| 
       40 
40 
     | 
    
         
             
                        /* @conditional-compile-remove(total-participant-count) */ totalParticipantCount)),
         
     | 
| 
       41 
41 
     | 
    
         
             
                        (onClickHeadingMoreButton ||
         
     | 
| 
       42 
42 
     | 
    
         
             
                            ((headingMoreButtonMenuProps === null || headingMoreButtonMenuProps === void 0 ? void 0 : headingMoreButtonMenuProps.items) && headingMoreButtonMenuProps.items.length > 0)) && (React.createElement(Stack.Item, null,
         
     | 
| 
       43 
     | 
    
         
            -
                            React.createElement(DefaultButton, { ariaLabel: headingMoreButtonAriaLabel, styles: headingMoreButtonStyles(theme), iconProps: { iconName: 'PeoplePaneMoreButton' }, onClick: onClickHeadingMoreButton ? () => onClickHeadingMoreButton() : undefined, menuProps: props.onClickHeadingMoreButton ? undefined : props.headingMoreButtonMenuProps, onRenderMenuIcon: () => null })))),
         
     | 
| 
      
 43 
     | 
    
         
            +
                            React.createElement(DefaultButton, { "data-ui-id": "people-pane-header-more-button", ariaLabel: headingMoreButtonAriaLabel, styles: headingMoreButtonStyles(theme), iconProps: { iconName: 'PeoplePaneMoreButton' }, onClick: onClickHeadingMoreButton ? () => onClickHeadingMoreButton() : undefined, menuProps: props.onClickHeadingMoreButton ? undefined : props.headingMoreButtonMenuProps, onRenderMenuIcon: () => null })))),
         
     | 
| 
       44 
44 
     | 
    
         
             
                    React.createElement(FocusZone, { className: participantListContainerStyle, shouldFocusOnMount: true },
         
     | 
| 
       45 
45 
     | 
    
         
             
                        React.createElement(ParticipantList, Object.assign({}, participantListProps, { pinnedParticipants: pinnedParticipants, styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => (React.createElement(React.Fragment, null,
         
     | 
| 
       46 
46 
     | 
    
         
             
                                React.createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { hidePersonaDetails: !!(options === null || options === void 0 ? void 0 : options.text), dataProvider: onFetchAvatarPersonaData, allowActiveBorder: true })),
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"ParticipantContainer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/common/ParticipantContainer.tsx"],"names":[],"mappings":"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 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ParticipantContainer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/common/ParticipantContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useMemo } from 'react';\nimport {\n  participantListContainerStyle,\n  participantListMobileStyle,\n  participantListStack,\n  participantListStyle,\n  participantListWrapper,\n  displayNameStyles,\n  headingMoreButtonStyles\n} from './styles/ParticipantContainer.styles';\nimport { ParticipantList, ParticipantListProps, ParticipantMenuItemsCallback } from '@internal/react-components';\nimport { FocusZone, Stack, Text, TooltipHost, TooltipOverflowMode, getId, useTheme } from '@fluentui/react';\nimport { DefaultButton, IContextualMenuProps } from '@fluentui/react';\nimport { AvatarPersona, AvatarPersonaDataCallback } from './AvatarPersona';\nimport { useId } from '@fluentui/react-hooks';\nimport { _formatString } from '@internal/acs-ui-common';\n\ntype ParticipantContainerProps = {\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  participantListProps: ParticipantListProps;\n  title?: string;\n  isMobile?: boolean;\n};\n\n/**\n * @private\n */\nexport const ParticipantContainer = (props: ParticipantContainerProps): JSX.Element => {\n  const theme = useTheme();\n  const participantListWrapperClassName = useMemo(() => participantListWrapper(theme), [theme]);\n  return (\n    <Stack className={participantListWrapperClassName}>\n      <ParticipantListWithHeading {...props} />\n    </Stack>\n  );\n};\n\n/**\n * @private\n */\nexport const ParticipantListWithHeading = (props: {\n  participantListProps: ParticipantListProps;\n  title?: string;\n  isMobile?: boolean;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  headingMoreButtonAriaLabel?: string;\n  onClickHeadingMoreButton?: () => void;\n  headingMoreButtonMenuProps?: IContextualMenuProps;\n  pinnedParticipants?: string[];\n}): JSX.Element => {\n  const {\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    title,\n    participantListProps,\n    headingMoreButtonAriaLabel,\n    onClickHeadingMoreButton,\n    headingMoreButtonMenuProps,\n    pinnedParticipants\n  } = props;\n  const subheadingUniqueId = useId();\n  const theme = useTheme();\n  /* @conditional-compile-remove(total-participant-count) */\n  const totalParticipantCount = participantListProps.totalParticipantCount;\n  const tooltipId: string = getId('text-tooltip');\n  const subheadingStyleThemed = useMemo(\n    () => ({\n      root: {\n        color: theme.palette.neutralSecondary,\n        margin: props.isMobile ? '0.5rem 1rem' : '0.5rem',\n        fontSize: theme.fonts.smallPlus.fontSize\n      }\n    }),\n    [theme.palette.neutralSecondary, theme.fonts.smallPlus.fontSize, props.isMobile]\n  );\n\n  return (\n    <Stack className={participantListStack}>\n      <Stack horizontal horizontalAlign=\"space-between\" verticalAlign=\"center\">\n        <Stack.Item grow styles={subheadingStyleThemed} aria-label={title} id={subheadingUniqueId}>\n          {paneTitleTrampoline(\n            title ?? '',\n            /* @conditional-compile-remove(total-participant-count) */ totalParticipantCount\n          )}\n        </Stack.Item>\n        {(onClickHeadingMoreButton ||\n          (headingMoreButtonMenuProps?.items && headingMoreButtonMenuProps.items.length > 0)) && (\n          <Stack.Item>\n            <DefaultButton\n              data-ui-id=\"people-pane-header-more-button\"\n              ariaLabel={headingMoreButtonAriaLabel}\n              styles={headingMoreButtonStyles(theme)}\n              iconProps={{ iconName: 'PeoplePaneMoreButton' }}\n              onClick={onClickHeadingMoreButton ? () => onClickHeadingMoreButton() : undefined}\n              menuProps={props.onClickHeadingMoreButton ? undefined : props.headingMoreButtonMenuProps}\n              onRenderMenuIcon={() => null}\n            />\n          </Stack.Item>\n        )}\n      </Stack>\n      <FocusZone className={participantListContainerStyle} shouldFocusOnMount={true}>\n        <ParticipantList\n          {...participantListProps}\n          pinnedParticipants={pinnedParticipants}\n          styles={props.isMobile ? participantListMobileStyle : participantListStyle}\n          onRenderAvatar={(userId, options) => (\n            <>\n              <AvatarPersona\n                data-ui-id=\"chat-composite-participant-custom-avatar\"\n                userId={userId}\n                {...options}\n                {...{ hidePersonaDetails: !!options?.text }}\n                dataProvider={onFetchAvatarPersonaData}\n                allowActiveBorder={true}\n              />\n              {options?.text && (\n                <div style={displayNameStyles}>\n                  <TooltipHost content={options?.text} id={tooltipId} overflowMode={TooltipOverflowMode.Parent}>\n                    <Text nowrap={false} aria-labelledby={tooltipId}>\n                      {options?.text}\n                    </Text>\n                  </TooltipHost>\n                </div>\n              )}\n            </>\n          )}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItems}\n          showParticipantOverflowTooltip={!props.isMobile}\n          participantAriaLabelledBy={subheadingUniqueId}\n        />\n      </FocusZone>\n    </Stack>\n  );\n};\n\nconst paneTitleTrampoline = (paneTitle: string, totalParticipantCount?: number): string => {\n  const participantCountString = totalParticipantCount\n    ? { numberOfPeople: `(${totalParticipantCount})` }\n    : { numberOfPeople: ' ' };\n  return _formatString(paneTitle, participantCountString);\n};\n"]}
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts
    CHANGED
    
    | 
         @@ -38,6 +38,10 @@ export type CommonCallControlOptions = { 
     | 
|
| 
       38 
38 
     | 
    
         
             
                     * @defaultValue false
         
     | 
| 
       39 
39 
     | 
    
         
             
                     */
         
     | 
| 
       40 
40 
     | 
    
         
             
                    hangUpForEveryone?: false | 'endCallOptions';
         
     | 
| 
      
 41 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 42 
     | 
    
         
            +
                     * Wether to disable the end call confirmation modal.
         
     | 
| 
      
 43 
     | 
    
         
            +
                     */
         
     | 
| 
      
 44 
     | 
    
         
            +
                    disableEndCallModal?: boolean;
         
     | 
| 
       41 
45 
     | 
    
         
             
                };
         
     | 
| 
       42 
46 
     | 
    
         
             
                /**
         
     | 
| 
       43 
47 
     | 
    
         
             
                 * Show or Hide Microphone button during a call.
         
     | 
    
        package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"CommonCallControlOptions.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/common/types/CommonCallControlOptions.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CustomCallControlButtonCallback } from '../ControlBar/CustomButton';\n\n/**\n * Control bar display type for {@link CallComposite}.\n *\n * @public\n */\nexport type CallControlDisplayType = 'default' | 'compact';\n\n/**\n * Customization options for the control bar in calling experience.\n *\n * @public\n */\nexport type CommonCallControlOptions = {\n  /**\n   * {@link CallControlDisplayType} to change how the call controls are displayed.\n   * `'compact'` display type will decreases the size of buttons and hide the labels.\n   *\n   * @remarks\n   * If the composite `formFactor` is set to `'mobile'`, the control bar will always use compact view.\n   *\n   * @defaultValue 'default'\n   */\n  displayType?: CallControlDisplayType;\n  /**\n   * Show or Hide Camera Button during a call\n   * @defaultValue true\n   */\n  cameraButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show or Hide EndCall button during a call.\n   * @defaultValue true\n   */\n  endCallButton?:\n    | boolean\n    | /* @conditional-compile-remove(end-call-options) */ {\n        /**\n         * whether to make end call button to trigger a menu, which will enable end call for everybody functionality.\n         * @defaultValue false\n         */\n        hangUpForEveryone?: false | 'endCallOptions';\n      };\n  /**\n   * Show or Hide Microphone button during a call.\n   * @defaultValue true\n   */\n  microphoneButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show or Hide Devices button during a call.\n   * @defaultValue true\n   */\n  devicesButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show, Hide or Disable participants button during a call.\n   * @defaultValue true\n   */\n  participantsButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or Disable the screen share button during a call.\n   * @defaultValue true\n   */\n  screenShareButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or disable the more button during a call.\n   * @defaultValue true\n   */\n  moreButton?: boolean;\n  /**\n   * Show, Hide or Disable the screen share button during a call.\n   * @defaultValue true\n   */\n  raiseHandButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or Disable the reaction button during a call.\n   * @defaultValue true\n   */\n  reactionButton?: boolean | { disabled: boolean };\n  /**\n   * Inject custom buttons in the call controls.\n   */\n  onFetchCustomButtonProps?: CustomCallControlButtonCallback[];\n  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n  holdButton?: boolean | { disabled: boolean };\n  /**\n   * Show or hide the people button in the composite control bar.\n   * @defaultValue true\n   */\n  peopleButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ { disabled: boolean };\n  /**\n   * Show or hide the dialpad button in the composite control bar.\n   */\n  dtmfDialerButton?: boolean | { disabled: boolean };\n  /**\n   * Show or hide the exit spotlight button in the composite control bar when local participant is spotlighted.\n   */\n  exitSpotlightButton?: boolean;\n  /* @conditional-compile-remove(acs-close-captions) */\n  /**\n   * Show, Hide or Disable captions during a call.\n   * @defaultValue true\n   */\n  captionsButton?: boolean;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  /**\n   * Show, meeting conference phone information.\n   * @defaultValue true\n   */\n  teamsMeetingPhoneCallButton?: boolean;\n};\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"CommonCallControlOptions.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/common/types/CommonCallControlOptions.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CustomCallControlButtonCallback } from '../ControlBar/CustomButton';\n\n/**\n * Control bar display type for {@link CallComposite}.\n *\n * @public\n */\nexport type CallControlDisplayType = 'default' | 'compact';\n\n/**\n * Customization options for the control bar in calling experience.\n *\n * @public\n */\nexport type CommonCallControlOptions = {\n  /**\n   * {@link CallControlDisplayType} to change how the call controls are displayed.\n   * `'compact'` display type will decreases the size of buttons and hide the labels.\n   *\n   * @remarks\n   * If the composite `formFactor` is set to `'mobile'`, the control bar will always use compact view.\n   *\n   * @defaultValue 'default'\n   */\n  displayType?: CallControlDisplayType;\n  /**\n   * Show or Hide Camera Button during a call\n   * @defaultValue true\n   */\n  cameraButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show or Hide EndCall button during a call.\n   * @defaultValue true\n   */\n  endCallButton?:\n    | boolean\n    | /* @conditional-compile-remove(end-call-options) */ {\n        /**\n         * whether to make end call button to trigger a menu, which will enable end call for everybody functionality.\n         * @defaultValue false\n         */\n        hangUpForEveryone?: false | 'endCallOptions';\n        /**\n         * Wether to disable the end call confirmation modal.\n         */\n        disableEndCallModal?: boolean;\n      };\n  /**\n   * Show or Hide Microphone button during a call.\n   * @defaultValue true\n   */\n  microphoneButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show or Hide Devices button during a call.\n   * @defaultValue true\n   */\n  devicesButton?:\n    | boolean\n    | /* @conditional-compile-remove(PSTN-calls) */ {\n        disabled: boolean;\n      };\n  /**\n   * Show, Hide or Disable participants button during a call.\n   * @defaultValue true\n   */\n  participantsButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or Disable the screen share button during a call.\n   * @defaultValue true\n   */\n  screenShareButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or disable the more button during a call.\n   * @defaultValue true\n   */\n  moreButton?: boolean;\n  /**\n   * Show, Hide or Disable the screen share button during a call.\n   * @defaultValue true\n   */\n  raiseHandButton?: boolean | { disabled: boolean };\n  /**\n   * Show, Hide or Disable the reaction button during a call.\n   * @defaultValue true\n   */\n  reactionButton?: boolean | { disabled: boolean };\n  /**\n   * Inject custom buttons in the call controls.\n   */\n  onFetchCustomButtonProps?: CustomCallControlButtonCallback[];\n  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n  holdButton?: boolean | { disabled: boolean };\n  /**\n   * Show or hide the people button in the composite control bar.\n   * @defaultValue true\n   */\n  peopleButton?: boolean | /* @conditional-compile-remove(PSTN-calls) */ { disabled: boolean };\n  /**\n   * Show or hide the dialpad button in the composite control bar.\n   */\n  dtmfDialerButton?: boolean | { disabled: boolean };\n  /**\n   * Show or hide the exit spotlight button in the composite control bar when local participant is spotlighted.\n   */\n  exitSpotlightButton?: boolean;\n  /* @conditional-compile-remove(acs-close-captions) */\n  /**\n   * Show, Hide or Disable captions during a call.\n   * @defaultValue true\n   */\n  captionsButton?: boolean;\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  /**\n   * Show, meeting conference phone information.\n   * @defaultValue true\n   */\n  teamsMeetingPhoneCallButton?: boolean;\n};\n"]}
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "@azure/communication-react",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "1.18.0-alpha- 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "1.18.0-alpha-202406250013",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "sideEffects": false,
         
     | 
| 
       5 
5 
     | 
    
         
             
              "description": "React library for building modern communication user experiences utilizing Azure Communication Services",
         
     | 
| 
       6 
6 
     | 
    
         
             
              "keywords": [
         
     |