@azure/communication-react 1.19.0-alpha-202408221617 → 1.19.0-alpha-202408240014

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/communication-react.d.ts +8 -0
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DSf6W5Na.js → ChatMessageComponentAsRichTextEditBox-CX6IgjBk.js} +2 -2
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DSf6W5Na.js.map → ChatMessageComponentAsRichTextEditBox-CX6IgjBk.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Cp5_HaZs.js → RichTextSendBoxWrapper-D_wPKYPO.js} +2 -2
  5. package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-Cp5_HaZs.js.map → RichTextSendBoxWrapper-D_wPKYPO.js.map} +1 -1
  6. package/dist/dist-cjs/communication-react/{index-DpiiYxjR.js → index-Ddmt8bbA.js} +611 -521
  7. package/dist/dist-cjs/communication-react/index-Ddmt8bbA.js.map +1 -0
  8. package/dist/dist-cjs/communication-react/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +3 -11
  12. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/index.js +0 -1
  14. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +0 -6
  16. package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
  17. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +0 -1
  18. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  19. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +0 -3
  21. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  22. package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -1
  23. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.js +0 -3
  25. package/dist/dist-esm/calling-stateful-client/src/RemoteVideoStreamSubscriber.js.map +1 -1
  26. package/dist/dist-esm/chat-component-bindings/src/baseSelectors.d.ts +1 -1
  27. package/dist/dist-esm/chat-component-bindings/src/baseSelectors.js.map +1 -1
  28. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js +1 -1
  29. package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
  30. package/dist/dist-esm/communication-react/src/index.js +0 -1
  31. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/NotificationStack.js +0 -2
  33. package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/index.js +0 -2
  35. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/utils.js +0 -8
  37. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/theming/icons.js +0 -2
  40. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +22 -52
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +1 -0
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +92 -73
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +3 -2
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +10 -40
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +1 -0
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +4 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +1 -1
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +2 -2
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +6 -14
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.d.ts +2 -2
  58. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +5 -9
  59. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.d.ts +2 -2
  61. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +5 -9
  62. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +5 -9
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/ErrorTracking.d.ts +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/types/ErrorTracking.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.d.ts +3 -3
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +0 -3
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +31 -3
  72. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.d.ts +8 -0
  74. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  75. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +7 -0
  76. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +116 -2
  77. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.d.ts +5 -0
  79. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +14 -0
  80. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/common/utils.d.ts +4 -0
  82. package/dist/dist-esm/react-composites/src/composites/common/utils.js +23 -0
  83. package/dist/dist-esm/react-composites/src/composites/common/utils.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -1
  85. package/package.json +1 -1
  86. package/dist/dist-cjs/communication-react/index-DpiiYxjR.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ActiveErrorMessage, ErrorBar, ParticipantMenuItemsCallback } from '@internal/react-components';\n/* @conditional-compile-remove(notifications) */\nimport { ActiveNotification } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport React, { useMemo } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { DtmfDialpadPage } from './DtmfDialpadPage';\nimport { showDtmfDialer } from '../utils/MediaGalleryUtils';\nimport { getTargetCallees } from '../selectors/baseSelectors';\nimport { Prompt, PromptProps } from '../components/Prompt';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n latestErrors: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];\n /* @conditional-compile-remove(notifications) */\n latestNotifications: ActiveNotification[];\n onDismissError: (\n error: ActiveErrorMessage | /* @conditional-compile-remove(notifications) */ ActiveNotification\n ) => void;\n /* @conditional-compile-remove(notifications) */\n onDismissNotification: (notification: ActiveNotification) => void;\n galleryLayout: VideoGalleryLayout;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n onSetUserSetOverflowGalleryPosition?: (position: 'Responsive' | 'horizontalTop') => void;\n onCloseChatPane?: () => void;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n compositeAudioContext?: AudioContext;\n disableAutoShowDtmfDialer?: boolean;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView,\n galleryLayout = 'floatingLocalVideo',\n onUserSetGalleryLayoutChange,\n userSetOverflowGalleryPosition = 'Responsive',\n onSetUserSetOverflowGalleryPosition,\n onCloseChatPane,\n pinnedParticipants = [],\n setPinnedParticipants,\n compositeAudioContext,\n disableAutoShowDtmfDialer = false,\n /* @conditional-compile-remove(notifications) */\n latestNotifications,\n /* @conditional-compile-remove(notifications) */\n onDismissNotification\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const { callStatus } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);\n const callees = useSelector(getTargetCallees);\n const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);\n const [dtmfDialerPresent, setDtmfDialerPresent] = useState<boolean>(\n renderDtmfDialerFromStart && disableAutoShowDtmfDialer\n );\n\n const strings = useLocale().strings.call;\n\n const pinnedParticipantsChecked = useMemo(\n () =>\n pinnedParticipants.filter((pinnedParticipant) =>\n remoteParticipantsConnected.find(\n (remoteParticipant) => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant\n )\n ),\n [pinnedParticipants, remoteParticipantsConnected]\n );\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n\n const drawerMenuHostId = useId('drawerMenuHost');\n const [isPromptOpen, setIsPromptOpen] = useState<boolean>(false);\n const [promptProps, setPromptProps] = useState<PromptProps>();\n\n const onRenderGalleryContentTrampoline = (): JSX.Element => {\n if (dtmfDialerPresent) {\n return (\n <DtmfDialpadPage\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n options={props.options}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors as ActiveErrorMessage[]}\n onDismissError={props.onDismissError}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n compositeAudioContext={compositeAudioContext}\n />\n );\n } else {\n return (\n <MediaGallery\n isMobile={mobileView}\n {...mediaGalleryProps}\n {...mediaGalleryHandlers}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n remoteVideoTileMenuOptions={options?.remoteVideoTileMenuOptions}\n drawerMenuHostId={drawerMenuHostId}\n localVideoTileOptions={options?.localVideoTile}\n userSetOverflowGalleryPosition={userSetOverflowGalleryPosition}\n userSetGalleryLayout={galleryLayout}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n videoTilesOptions={options?.videoTilesOptions}\n />\n );\n }\n };\n\n return (\n <>\n <CallArrangement\n id={drawerMenuHostId}\n complianceBannerProps={{ ...complianceBannerProps, strings }}\n errorBarProps={options?.errorBar !== false && errorBarProps}\n /* @conditional-compile-remove(notifications) */\n showErrorNotifications={options?.errorBar ?? true}\n mutedNotificationProps={mutedNotificationProps}\n callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n mobileView={mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() =>\n _isInCall(callStatus) ? (\n isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (\n onRenderGalleryContentTrampoline()\n ) : (\n <NetworkReconnectTile\n {...networkReconnectTileProps}\n /* /* @conditional-compile-remove(teams-meeting-conference) */ isMobile={mobileView}\n />\n )\n ) : (\n <></>\n )\n }\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n onCloseChatPane={onCloseChatPane}\n dataUiId={'call-page'}\n latestErrors={props.latestErrors}\n /* @conditional-compile-remove(notifications) */\n latestNotifications={latestNotifications}\n onDismissError={props.onDismissError}\n /* @conditional-compile-remove(notifications) */\n onDismissNotification={onDismissNotification}\n onUserSetOverflowGalleryPositionChange={onSetUserSetOverflowGalleryPosition}\n onUserSetGalleryLayoutChange={onUserSetGalleryLayoutChange}\n userSetGalleryLayout={galleryLayout}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n />\n {<Prompt isOpen={isPromptOpen} onDismiss={() => setIsPromptOpen(false)} {...promptProps} />}\n </>\n );\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\n"]}
1
+ {"version":3,"file":"CallPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/CallPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { DiagnosticQuality } from '@azure/communication-calling';\nimport { useId } from '@fluentui/react-hooks';\nimport { _isInCall } from '@internal/calling-component-bindings';\nimport { ActiveErrorMessage, ErrorBar, ParticipantMenuItemsCallback } from '@internal/react-components';\n\nimport { ActiveNotification } from '@internal/react-components';\nimport { VideoGalleryLayout } from '@internal/react-components';\nimport React, { useMemo } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { MediaGallery } from '../components/MediaGallery';\nimport { NetworkReconnectTile } from '../components/NetworkReconnectTile';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { callStatusSelector } from '../selectors/callStatusSelector';\nimport { complianceBannerSelector } from '../selectors/complianceBannerSelector';\nimport { mediaGallerySelector } from '../selectors/mediaGallerySelector';\nimport { getRemoteParticipantsConnectedSelector } from '../selectors/mediaGallerySelector';\nimport { mutedNotificationSelector } from '../selectors/mutedNotificationSelector';\nimport { networkReconnectTileSelector } from '../selectors/networkReconnectTileSelector';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { DtmfDialpadPage } from './DtmfDialpadPage';\nimport { showDtmfDialer } from '../utils/MediaGalleryUtils';\nimport { getTargetCallees } from '../selectors/baseSelectors';\nimport { Prompt, PromptProps } from '../components/Prompt';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\nexport interface CallPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n callInvitationURL?: string;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n options?: CallCompositeOptions;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n latestNotifications: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n onDismissNotification: (notification: ActiveNotification) => void;\n galleryLayout: VideoGalleryLayout;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n onUserSetGalleryLayoutChange?: (layout: VideoGalleryLayout) => void;\n userSetOverflowGalleryPosition?: 'Responsive' | 'horizontalTop';\n onSetUserSetOverflowGalleryPosition?: (position: 'Responsive' | 'horizontalTop') => void;\n onCloseChatPane?: () => void;\n pinnedParticipants?: string[];\n setPinnedParticipants?: (pinnedParticipants: string[]) => void;\n compositeAudioContext?: AudioContext;\n disableAutoShowDtmfDialer?: boolean;\n}\n\n/**\n * @private\n */\nexport const CallPage = (props: CallPageProps): JSX.Element => {\n const {\n callInvitationURL,\n onFetchAvatarPersonaData,\n onFetchParticipantMenuItems,\n options,\n mobileView,\n galleryLayout = 'floatingLocalVideo',\n onUserSetGalleryLayoutChange,\n userSetOverflowGalleryPosition = 'Responsive',\n onSetUserSetOverflowGalleryPosition,\n onCloseChatPane,\n pinnedParticipants = [],\n setPinnedParticipants,\n compositeAudioContext,\n disableAutoShowDtmfDialer = false,\n latestNotifications,\n onDismissNotification\n } = props;\n\n // To use useProps to get these states, we need to create another file wrapping Call,\n // It seems unnecessary in this case, so we get the updated states using this approach.\n const { callStatus } = useSelector(callStatusSelector);\n const mediaGalleryProps = useSelector(mediaGallerySelector);\n const mediaGalleryHandlers = useHandlers(MediaGallery);\n const complianceBannerProps = useSelector(complianceBannerSelector);\n const errorBarProps = usePropsFor(ErrorBar);\n const mutedNotificationProps = useSelector(mutedNotificationSelector);\n const networkReconnectTileProps = useSelector(networkReconnectTileSelector);\n const remoteParticipantsConnected = useSelector(getRemoteParticipantsConnectedSelector);\n const callees = useSelector(getTargetCallees);\n const renderDtmfDialerFromStart = showDtmfDialer(callees, remoteParticipantsConnected);\n const [dtmfDialerPresent, setDtmfDialerPresent] = useState<boolean>(\n renderDtmfDialerFromStart && disableAutoShowDtmfDialer\n );\n\n const strings = useLocale().strings.call;\n\n const pinnedParticipantsChecked = useMemo(\n () =>\n pinnedParticipants.filter((pinnedParticipant) =>\n remoteParticipantsConnected.find(\n (remoteParticipant) => toFlatCommunicationIdentifier(remoteParticipant.identifier) === pinnedParticipant\n )\n ),\n [pinnedParticipants, remoteParticipantsConnected]\n );\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = mobileView ? reduceCallControlsForMobile(options?.callControls) : options?.callControls;\n\n const drawerMenuHostId = useId('drawerMenuHost');\n const [isPromptOpen, setIsPromptOpen] = useState<boolean>(false);\n const [promptProps, setPromptProps] = useState<PromptProps>();\n\n const onRenderGalleryContentTrampoline = (): JSX.Element => {\n if (dtmfDialerPresent) {\n return (\n <DtmfDialpadPage\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n options={props.options}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors as ActiveErrorMessage[]}\n onDismissError={props.onDismissError}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n compositeAudioContext={compositeAudioContext}\n />\n );\n } else {\n return (\n <MediaGallery\n isMobile={mobileView}\n {...mediaGalleryProps}\n {...mediaGalleryHandlers}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n remoteVideoTileMenuOptions={options?.remoteVideoTileMenuOptions}\n drawerMenuHostId={drawerMenuHostId}\n localVideoTileOptions={options?.localVideoTile}\n userSetOverflowGalleryPosition={userSetOverflowGalleryPosition}\n userSetGalleryLayout={galleryLayout}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n videoTilesOptions={options?.videoTilesOptions}\n />\n );\n }\n };\n\n return (\n <>\n <CallArrangement\n id={drawerMenuHostId}\n complianceBannerProps={{ ...complianceBannerProps, strings }}\n errorBarProps={options?.errorBar !== false && errorBarProps}\n showErrorNotifications={options?.errorBar ?? true}\n mutedNotificationProps={mutedNotificationProps}\n callControlProps={{\n callInvitationURL: callInvitationURL,\n onFetchParticipantMenuItems: onFetchParticipantMenuItems,\n options: callControlOptions,\n increaseFlyoutItemSize: mobileView\n }}\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n mobileView={mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() =>\n _isInCall(callStatus) ? (\n isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (\n onRenderGalleryContentTrampoline()\n ) : (\n <NetworkReconnectTile\n {...networkReconnectTileProps}\n /* /* @conditional-compile-remove(teams-meeting-conference) */ isMobile={mobileView}\n />\n )\n ) : (\n <></>\n )\n }\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n onCloseChatPane={onCloseChatPane}\n dataUiId={'call-page'}\n latestErrors={props.latestErrors}\n latestNotifications={latestNotifications}\n onDismissError={props.onDismissError}\n onDismissNotification={onDismissNotification}\n onUserSetOverflowGalleryPositionChange={onSetUserSetOverflowGalleryPosition}\n onUserSetGalleryLayoutChange={onUserSetGalleryLayoutChange}\n userSetGalleryLayout={galleryLayout}\n capabilitiesChangedNotificationBarProps={props.capabilitiesChangedNotificationBarProps}\n onSetDialpadPage={() => setDtmfDialerPresent(!dtmfDialerPresent)}\n dtmfDialerPresent={dtmfDialerPresent}\n setIsPromptOpen={setIsPromptOpen}\n setPromptProps={setPromptProps}\n hideSpotlightButtons={options?.spotlight?.hideSpotlightButtons}\n pinnedParticipants={pinnedParticipantsChecked}\n setPinnedParticipants={setPinnedParticipants}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n />\n {<Prompt isOpen={isPromptOpen} onDismiss={() => setIsPromptOpen(false)} {...promptProps} />}\n </>\n );\n};\n\n/**\n * @private\n */\nexport const isNetworkHealthy = (value: DiagnosticQuality | boolean | undefined): boolean => {\n // We know that the value is actually of type DiagnosticQuality for this diagnostic.\n // We ignore any boolen values, considering the network to still be healthy.\n // Thus, only DiagnosticQuality.Poor or .Bad indicate network problems.\n return value === true || value === false || value === undefined || value === DiagnosticQuality.Good;\n};\n"]}
@@ -160,7 +160,7 @@ export const ConfigurationPage = (props) => {
160
160
  // show the following screen if permission API is availible (not unsupported) and videoState, audioState is assigned values
161
161
  videoState && videoState !== 'unsupported' && audioState && audioState !== 'unsupported' && (React.createElement(CallReadinessModal, { modalLayerHostId: modalLayerHostId, mobileView: mobileView,
162
162
  /* @conditional-compile-remove(unsupported-browser) */
163
- environmentInfo: environmentInfo, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed, setIsPermissionsModalDismissed: setIsPermissionsModalDismissed, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick })),
163
+ environmentInfo: environmentInfo, permissionsState: permissionsState, isPermissionsModalDismissed: isPermissionsModalDismissed, setIsPermissionsModalDismissed: setIsPermissionsModalDismissed, onPermissionsTroubleshootingClick: onPermissionsTroubleshootingClick, doNotPromptCamera: (deviceChecks === null || deviceChecks === void 0 ? void 0 : deviceChecks.camera) === 'doNotPrompt' })),
164
164
  /* @conditional-compile-remove(call-readiness) */
165
165
  // show the following screen if permission API is not availible (unsupported) and videoState, audioState is assigned values
166
166
  videoState && audioState && (videoState === 'unsupported' || audioState === 'unsupported') && (React.createElement(CallReadinessModalFallBack
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigurationPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/ConfigurationPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useCallback, useMemo } from 'react';\n/* @conditional-compile-remove(call-readiness) */\nimport { useState } from 'react';\nimport { useAdaptedSelector } from '../hooks/useAdaptedSelector';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { LocalDeviceSettings } from '../components/LocalDeviceSettings';\nimport { StartCallButton } from '../components/StartCallButton';\nimport { devicePermissionSelector } from '../selectors/devicePermissionSelector';\nimport { useSelector } from '../hooks/useSelector';\nimport { ActiveErrorMessage, DevicesButton, ErrorBar, useTheme } from '@internal/react-components';\nimport { getCallingSelector } from '@internal/calling-component-bindings';\nimport { Image, Panel, PanelType, Stack } from '@fluentui/react';\nimport {\n callDetailsContainerStyles,\n configurationCenteredContent,\n configurationSectionStyle,\n deviceConfigurationStackTokens,\n fillWidth,\n logoStyles,\n panelFocusProps,\n panelStyles,\n startCallButtonStyleDesktop\n} from '../styles/CallConfiguration.styles';\nimport { LocalPreview } from '../components/LocalPreview';\nimport {\n callDetailsStyleDesktop,\n callDetailsStyleMobile,\n configurationStackTokensDesktop,\n configurationStackTokensMobile,\n configurationContainerStyle,\n selectionContainerStyle,\n startCallButtonContainerStyleDesktop,\n startCallButtonContainerStyleMobile,\n startCallButtonStyleMobile,\n titleContainerStyleDesktop,\n titleContainerStyleMobile\n} from '../styles/CallConfiguration.styles';\nimport { useLocale } from '../../localization';\nimport { bannerNotificationStyles } from '../styles/CallPage.styles';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\n/* @conditional-compile-remove(call-readiness) */\nimport { DeviceCheckOptions } from '../CallComposite';\nimport { ConfigurationPageErrorBar } from '../components/ConfigurationPageErrorBar';\n/* @conditional-compile-remove(call-readiness) */\nimport { getDevicePermissionState } from '../utils';\n/* @conditional-compile-remove(call-readiness) */\nimport { CallReadinessModal, CallReadinessModalFallBack } from '../components/CallReadinessModal';\n\nimport { VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM, useVideoEffectsPane } from '../components/SidePane/useVideoEffectsPane';\nimport { SidePane } from '../components/SidePane/SidePane';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { useIsParticularSidePaneOpen } from '../components/SidePane/SidePaneProvider';\n\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { SvgWithWordWrapping } from '../components/SvgWithWordWrapping';\nimport { EnvironmentInfo } from '@azure/communication-calling';\n\n/**\n * @private\n */\nexport interface ConfigurationPageProps {\n mobileView: boolean;\n startCallHandler(): void;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n latestErrors: ActiveErrorMessage[];\n onDismissError: (error: ActiveErrorMessage) => void;\n modalLayerHostId: string;\n /* @conditional-compile-remove(call-readiness) */\n deviceChecks?: DeviceCheckOptions;\n /* @conditional-compile-remove(call-readiness) */\n onPermissionsTroubleshootingClick?: (permissionsState: {\n camera: PermissionState;\n microphone: PermissionState;\n }) => void;\n /* @conditional-compile-remove(call-readiness) */\n onNetworkingTroubleShootingClick?: () => void;\n\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n logo?: {\n url: string;\n alt?: string;\n shape?: 'unset' | 'circle';\n };\n backgroundImage?: {\n url: string;\n };\n}\n\n/**\n * @private\n */\nexport const ConfigurationPage = (props: ConfigurationPageProps): JSX.Element => {\n const {\n startCallHandler,\n mobileView,\n modalLayerHostId,\n /* @conditional-compile-remove(call-readiness) */ deviceChecks,\n /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick,\n /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick\n } = props;\n\n const theme = useTheme();\n\n const options = useAdaptedSelector(getCallingSelector(DevicesButton));\n const localDeviceSettingsHandlers = useHandlers(LocalDeviceSettings);\n const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector(devicePermissionSelector);\n /* @conditional-compile-remove(call-readiness) */\n // use permission API to get video and audio permission state\n const [videoState, setVideoState] = useState<PermissionState | 'unsupported' | undefined>(undefined);\n /* @conditional-compile-remove(call-readiness) */\n const [audioState, setAudioState] = useState<PermissionState | 'unsupported' | undefined>(undefined);\n /* @conditional-compile-remove(call-readiness) */\n getDevicePermissionState(setVideoState, setAudioState);\n\n const errorBarProps = usePropsFor(ErrorBar);\n const adapter = useAdapter();\n const deviceState = adapter.getState().devices;\n /* @conditional-compile-remove(unsupported-browser) */\n const environmentInfo = adapter.getState().environmentInfo;\n\n let disableStartCallButton = !microphonePermissionGranted || deviceState.microphones?.length === 0;\n const role = adapter.getState().call?.role;\n\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n\n let filteredLatestErrors: ActiveErrorMessage[] = props.latestErrors;\n\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role !== 'Consumer') {\n filteredLatestErrors = filteredLatestErrors.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n if ((useIsParticularSidePaneOpen('videoeffects') || !isCameraOn) && errorBarProps) {\n filteredLatestErrors = filteredLatestErrors.filter((e) => e.type !== 'unableToStartVideoEffect');\n }\n\n if (role === 'Consumer') {\n // If user's role permissions do not allow access to the microphone button then DO NOT disable the start call button\n // because microphone device permission is not needed for the user's role\n disableStartCallButton = false;\n }\n\n /* @conditional-compile-remove(call-readiness) */\n // Overrides role permissions if CallCompositeOptions deviceChecks are set\n if (deviceChecks) {\n if (\n ['doNotPrompt', 'optional'].includes(deviceChecks.camera) &&\n ['doNotPrompt', 'optional'].includes(deviceChecks.microphone)\n ) {\n disableStartCallButton = false;\n } else if (deviceChecks.camera === 'required') {\n disableStartCallButton = !cameraPermissionGranted || deviceState.cameras?.length === 0;\n }\n }\n\n const locale = useLocale();\n const title =\n locale.strings.call.configurationPageTitle.length > 0 ? (\n <Stack.Item className={mobileView ? titleContainerStyleMobile(theme) : titleContainerStyleDesktop(theme)}>\n <SvgWithWordWrapping\n width={mobileView ? 325 : 445}\n lineHeightPx={16 * 1.5}\n bufferHeightPx={16}\n text={locale.strings.call.configurationPageTitle}\n />\n </Stack.Item>\n ) : (\n <></>\n );\n\n const callDescription = locale.strings.call.configurationPageCallDetails && (\n <Stack.Item className={mobileView ? callDetailsStyleMobile(theme) : callDetailsStyleDesktop(theme)}>\n {locale.strings.call.configurationPageCallDetails}\n </Stack.Item>\n );\n\n const mobileWithPreview = mobileView && role !== 'Consumer';\n\n /* @conditional-compile-remove(call-readiness) */\n const permissionsState: {\n camera: PermissionState;\n microphone: PermissionState;\n } = {\n // fall back to using cameraPermissionGranted and microphonePermissionGranted if permission API is not supported\n camera:\n videoState && videoState !== 'unsupported'\n ? cameraPermissionGranted !== false\n ? videoState\n : 'denied'\n : cameraPermissionGranted !== false\n ? cameraPermissionGranted\n ? 'granted'\n : 'prompt'\n : 'denied',\n microphone:\n audioState && audioState !== 'unsupported'\n ? microphonePermissionGranted !== false\n ? audioState\n : 'denied'\n : microphonePermissionGranted !== false\n ? microphonePermissionGranted\n ? 'granted'\n : 'prompt'\n : 'denied'\n };\n /* @conditional-compile-remove(call-readiness) */\n const networkErrors = errorBarProps.activeErrorMessages.filter((message) => message.type === 'callNetworkQualityLow');\n\n /* @conditional-compile-remove(call-readiness) */\n const [isPermissionsModalDismissed, setIsPermissionsModalDismissed] = useState(true);\n\n // When permission API is not available, we want to show screen saying checking for access (disappears on its own)\n // then based on permission setting, we show permission denied or nothing\n /* @conditional-compile-remove(call-readiness) */\n const [minimumFallbackTimerElapsed, setMinimumFallbackTimerElapsed] = useState(false);\n /* @conditional-compile-remove(call-readiness) */\n setTimeout(() => {\n setMinimumFallbackTimerElapsed(true);\n }, 2000);\n /* @conditional-compile-remove(call-readiness) */\n const forceShowingCheckPermissions = !minimumFallbackTimerElapsed;\n\n const { toggleVideoEffectsPane, closeVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(\n props.updateSidePaneRenderer,\n mobileView,\n props.latestErrors,\n props.onDismissError\n );\n\n const startCall = useCallback(async () => {\n closeVideoEffectsPane();\n startCallHandler();\n }, [startCallHandler, closeVideoEffectsPane]);\n\n const panelLayerProps = useMemo(\n () => ({\n hostId: modalLayerHostId\n }),\n [modalLayerHostId]\n );\n\n const filteredErrorBarProps = useMemo(\n () => ({\n ...errorBarProps,\n activeErrorMessages: filteredLatestErrors\n }),\n [errorBarProps, filteredLatestErrors]\n );\n\n const containerStyles = useMemo(\n () => configurationContainerStyle(!mobileView, props.backgroundImage?.url),\n [mobileView, props.backgroundImage?.url]\n );\n\n return (\n <Stack styles={containerStyles}>\n <Stack styles={bannerNotificationStyles}>\n <ConfigurationPageErrorBar\n /* @conditional-compile-remove(call-readiness) */\n // show trouble shooting error bar when encountering network error/ permission error\n showTroubleShootingErrorBar={\n !cameraPermissionGranted || !microphonePermissionGranted || networkErrors.length > 0\n }\n /* @conditional-compile-remove(call-readiness) */\n permissionsState={permissionsState}\n /* @conditional-compile-remove(call-readiness) */\n onNetworkingTroubleShootingClick={onNetworkingTroubleShootingClick}\n /* @conditional-compile-remove(call-readiness) */\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n errorBarProps={filteredErrorBarProps}\n onDismissError={props.onDismissError}\n />\n </Stack>\n {\n /* @conditional-compile-remove(call-readiness) */\n // show the following screen if permission API is availible (not unsupported) and videoState, audioState is assigned values\n videoState && videoState !== 'unsupported' && audioState && audioState !== 'unsupported' && (\n <CallReadinessModal\n modalLayerHostId={modalLayerHostId}\n mobileView={mobileView}\n /* @conditional-compile-remove(unsupported-browser) */\n environmentInfo={environmentInfo}\n permissionsState={permissionsState}\n isPermissionsModalDismissed={isPermissionsModalDismissed}\n setIsPermissionsModalDismissed={setIsPermissionsModalDismissed}\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n />\n )\n }\n\n {\n /* @conditional-compile-remove(call-readiness) */\n // show the following screen if permission API is not availible (unsupported) and videoState, audioState is assigned values\n videoState && audioState && (videoState === 'unsupported' || audioState === 'unsupported') && (\n <CallReadinessModalFallBack\n /* @conditional-compile-remove(call-readiness) */\n modalLayerHostId={modalLayerHostId}\n mobileView={mobileView}\n checkPermissionModalShowing={forceShowingCheckPermissions}\n permissionsState={permissionsState}\n isPermissionsModalDismissed={isPermissionsModalDismissed}\n /* @conditional-compile-remove(unsupported-browser) */\n environmentInfo={environmentInfo}\n setIsPermissionsModalDismissed={setIsPermissionsModalDismissed}\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n />\n )\n }\n\n <Stack verticalFill grow horizontal className={fillWidth}>\n <Stack\n className={configurationCenteredContent(mobileWithPreview, !!props.logo)}\n verticalAlign=\"center\"\n verticalFill={mobileWithPreview}\n tokens={mobileWithPreview ? configurationStackTokensMobile : configurationStackTokensDesktop}\n >\n <Stack.Item styles={callDetailsContainerStyles}>\n <Logo logo={props.logo} />\n {title}\n {callDescription}\n </Stack.Item>\n <Stack\n horizontal={!mobileWithPreview}\n horizontalAlign={mobileWithPreview ? 'stretch' : 'center'}\n verticalFill={mobileWithPreview}\n tokens={deviceConfigurationStackTokens}\n >\n {localPreviewTrampoline(mobileWithPreview, !!(role === 'Consumer'))}\n <Stack styles={mobileView ? undefined : configurationSectionStyle}>\n {!mobileWithPreview && (\n <Stack\n className={\n mobileView\n ? undefined\n : selectionContainerStyle(\n theme,\n isSafariBrowserEnvironmentTrampoline(\n /* @conditional-compile-remove(unsupported-browser) */ environmentInfo\n )\n )\n }\n >\n <LocalDeviceSettings\n {...options}\n {...localDeviceSettingsHandlers}\n cameraPermissionGranted={cameraPermissionGrantedTrampoline(\n cameraPermissionGranted,\n /* @conditional-compile-remove(call-readiness) */ videoState\n )}\n microphonePermissionGranted={micPermissionGrantedTrampoline(\n microphonePermissionGranted,\n /* @conditional-compile-remove(call-readiness) */ audioState\n )}\n /* @conditional-compile-remove(call-readiness) */\n onClickEnableDevicePermission={() => {\n setIsPermissionsModalDismissed(true);\n }}\n onClickVideoEffects={toggleVideoEffectsPane}\n />\n </Stack>\n )}\n <Stack\n styles={mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop}\n horizontalAlign={mobileWithPreview ? 'stretch' : 'end'}\n >\n <StartCallButton\n className={mobileWithPreview ? startCallButtonStyleMobile : startCallButtonStyleDesktop}\n onClick={startCall}\n disabled={disableStartCallButton}\n hideIcon={true}\n />\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n <Panel\n isOpen={isVideoEffectsPaneOpen}\n hasCloseButton={false}\n isBlocking={false}\n isHiddenOnDismiss={false}\n styles={panelStyles}\n focusTrapZoneProps={panelFocusProps}\n layerProps={panelLayerProps}\n type={PanelType.custom}\n customWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n >\n <SidePane\n mobileView={props.mobileView}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n maxWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n minWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n />\n </Panel>\n </Stack>\n </Stack>\n );\n};\n\nconst localPreviewTrampoline = (mobileView: boolean, doNotShow?: boolean): JSX.Element | undefined => {\n if (doNotShow) {\n return undefined;\n }\n return <LocalPreview mobileView={mobileView} showDevicesButton={mobileView} />;\n};\n\nconst cameraPermissionGrantedTrampoline = (\n cameraPermissionGranted: boolean | undefined,\n videoState?: PermissionState | 'unsupported' | undefined\n): boolean | undefined => {\n /* @conditional-compile-remove(call-readiness) */\n return videoState && videoState !== 'unsupported' ? videoState === 'granted' : cameraPermissionGranted;\n\n return cameraPermissionGranted;\n};\n\nconst micPermissionGrantedTrampoline = (\n microphonePermissionGranted: boolean | undefined,\n audioState?: PermissionState | 'unsupported' | undefined\n): boolean | undefined => {\n /* @conditional-compile-remove(call-readiness) */\n return audioState && audioState !== 'unsupported' ? audioState === 'granted' : microphonePermissionGranted;\n\n return microphonePermissionGranted;\n};\n\nconst Logo = (props: { logo?: { url: string; alt?: string; shape?: 'unset' | 'circle' } }): JSX.Element => {\n if (!props.logo) {\n return <></>;\n }\n return <Image styles={logoStyles(props.logo.shape)} src={props.logo.url} alt={props.logo.alt} />;\n};\n\nconst isSafariBrowserEnvironmentTrampoline = (environmentInfo?: EnvironmentInfo): boolean | undefined => {\n /* @conditional-compile-remove(unsupported-browser) */\n return environmentInfo && environmentInfo?.environment.browser.toLowerCase() === 'safari';\n\n return false;\n};\n"]}
1
+ {"version":3,"file":"ConfigurationPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/ConfigurationPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useCallback, useMemo } from 'react';\n/* @conditional-compile-remove(call-readiness) */\nimport { useState } from 'react';\nimport { useAdaptedSelector } from '../hooks/useAdaptedSelector';\nimport { useHandlers } from '../hooks/useHandlers';\nimport { LocalDeviceSettings } from '../components/LocalDeviceSettings';\nimport { StartCallButton } from '../components/StartCallButton';\nimport { devicePermissionSelector } from '../selectors/devicePermissionSelector';\nimport { useSelector } from '../hooks/useSelector';\nimport { ActiveErrorMessage, DevicesButton, ErrorBar, useTheme } from '@internal/react-components';\nimport { getCallingSelector } from '@internal/calling-component-bindings';\nimport { Image, Panel, PanelType, Stack } from '@fluentui/react';\nimport {\n callDetailsContainerStyles,\n configurationCenteredContent,\n configurationSectionStyle,\n deviceConfigurationStackTokens,\n fillWidth,\n logoStyles,\n panelFocusProps,\n panelStyles,\n startCallButtonStyleDesktop\n} from '../styles/CallConfiguration.styles';\nimport { LocalPreview } from '../components/LocalPreview';\nimport {\n callDetailsStyleDesktop,\n callDetailsStyleMobile,\n configurationStackTokensDesktop,\n configurationStackTokensMobile,\n configurationContainerStyle,\n selectionContainerStyle,\n startCallButtonContainerStyleDesktop,\n startCallButtonContainerStyleMobile,\n startCallButtonStyleMobile,\n titleContainerStyleDesktop,\n titleContainerStyleMobile\n} from '../styles/CallConfiguration.styles';\nimport { useLocale } from '../../localization';\nimport { bannerNotificationStyles } from '../styles/CallPage.styles';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\n/* @conditional-compile-remove(call-readiness) */\nimport { DeviceCheckOptions } from '../CallComposite';\nimport { ConfigurationPageErrorBar } from '../components/ConfigurationPageErrorBar';\n/* @conditional-compile-remove(call-readiness) */\nimport { getDevicePermissionState } from '../utils';\n/* @conditional-compile-remove(call-readiness) */\nimport { CallReadinessModal, CallReadinessModalFallBack } from '../components/CallReadinessModal';\n\nimport { VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM, useVideoEffectsPane } from '../components/SidePane/useVideoEffectsPane';\nimport { SidePane } from '../components/SidePane/SidePane';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { useIsParticularSidePaneOpen } from '../components/SidePane/SidePaneProvider';\n\nimport { localVideoSelector } from '../../CallComposite/selectors/localVideoStreamSelector';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { SvgWithWordWrapping } from '../components/SvgWithWordWrapping';\nimport { EnvironmentInfo } from '@azure/communication-calling';\n\n/**\n * @private\n */\nexport interface ConfigurationPageProps {\n mobileView: boolean;\n startCallHandler(): void;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n latestErrors: ActiveErrorMessage[];\n onDismissError: (error: ActiveErrorMessage) => void;\n modalLayerHostId: string;\n /* @conditional-compile-remove(call-readiness) */\n deviceChecks?: DeviceCheckOptions;\n /* @conditional-compile-remove(call-readiness) */\n onPermissionsTroubleshootingClick?: (permissionsState: {\n camera: PermissionState;\n microphone: PermissionState;\n }) => void;\n /* @conditional-compile-remove(call-readiness) */\n onNetworkingTroubleShootingClick?: () => void;\n\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n logo?: {\n url: string;\n alt?: string;\n shape?: 'unset' | 'circle';\n };\n backgroundImage?: {\n url: string;\n };\n}\n\n/**\n * @private\n */\nexport const ConfigurationPage = (props: ConfigurationPageProps): JSX.Element => {\n const {\n startCallHandler,\n mobileView,\n modalLayerHostId,\n /* @conditional-compile-remove(call-readiness) */ deviceChecks,\n /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick,\n /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick\n } = props;\n\n const theme = useTheme();\n\n const options = useAdaptedSelector(getCallingSelector(DevicesButton));\n const localDeviceSettingsHandlers = useHandlers(LocalDeviceSettings);\n const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector(devicePermissionSelector);\n /* @conditional-compile-remove(call-readiness) */\n // use permission API to get video and audio permission state\n const [videoState, setVideoState] = useState<PermissionState | 'unsupported' | undefined>(undefined);\n /* @conditional-compile-remove(call-readiness) */\n const [audioState, setAudioState] = useState<PermissionState | 'unsupported' | undefined>(undefined);\n /* @conditional-compile-remove(call-readiness) */\n getDevicePermissionState(setVideoState, setAudioState);\n\n const errorBarProps = usePropsFor(ErrorBar);\n const adapter = useAdapter();\n const deviceState = adapter.getState().devices;\n /* @conditional-compile-remove(unsupported-browser) */\n const environmentInfo = adapter.getState().environmentInfo;\n\n let disableStartCallButton = !microphonePermissionGranted || deviceState.microphones?.length === 0;\n const role = adapter.getState().call?.role;\n\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n\n let filteredLatestErrors: ActiveErrorMessage[] = props.latestErrors;\n\n // TODO: move this logic to the error bar selector once role is plumbed from the headless SDK\n if (role !== 'Consumer') {\n filteredLatestErrors = filteredLatestErrors.filter(\n (e) => e.type !== 'callCameraAccessDenied' && e.type !== 'callCameraAccessDeniedSafari'\n );\n }\n\n if ((useIsParticularSidePaneOpen('videoeffects') || !isCameraOn) && errorBarProps) {\n filteredLatestErrors = filteredLatestErrors.filter((e) => e.type !== 'unableToStartVideoEffect');\n }\n\n if (role === 'Consumer') {\n // If user's role permissions do not allow access to the microphone button then DO NOT disable the start call button\n // because microphone device permission is not needed for the user's role\n disableStartCallButton = false;\n }\n\n /* @conditional-compile-remove(call-readiness) */\n // Overrides role permissions if CallCompositeOptions deviceChecks are set\n if (deviceChecks) {\n if (\n ['doNotPrompt', 'optional'].includes(deviceChecks.camera) &&\n ['doNotPrompt', 'optional'].includes(deviceChecks.microphone)\n ) {\n disableStartCallButton = false;\n } else if (deviceChecks.camera === 'required') {\n disableStartCallButton = !cameraPermissionGranted || deviceState.cameras?.length === 0;\n }\n }\n\n const locale = useLocale();\n const title =\n locale.strings.call.configurationPageTitle.length > 0 ? (\n <Stack.Item className={mobileView ? titleContainerStyleMobile(theme) : titleContainerStyleDesktop(theme)}>\n <SvgWithWordWrapping\n width={mobileView ? 325 : 445}\n lineHeightPx={16 * 1.5}\n bufferHeightPx={16}\n text={locale.strings.call.configurationPageTitle}\n />\n </Stack.Item>\n ) : (\n <></>\n );\n\n const callDescription = locale.strings.call.configurationPageCallDetails && (\n <Stack.Item className={mobileView ? callDetailsStyleMobile(theme) : callDetailsStyleDesktop(theme)}>\n {locale.strings.call.configurationPageCallDetails}\n </Stack.Item>\n );\n\n const mobileWithPreview = mobileView && role !== 'Consumer';\n\n /* @conditional-compile-remove(call-readiness) */\n const permissionsState: {\n camera: PermissionState;\n microphone: PermissionState;\n } = {\n // fall back to using cameraPermissionGranted and microphonePermissionGranted if permission API is not supported\n camera:\n videoState && videoState !== 'unsupported'\n ? cameraPermissionGranted !== false\n ? videoState\n : 'denied'\n : cameraPermissionGranted !== false\n ? cameraPermissionGranted\n ? 'granted'\n : 'prompt'\n : 'denied',\n microphone:\n audioState && audioState !== 'unsupported'\n ? microphonePermissionGranted !== false\n ? audioState\n : 'denied'\n : microphonePermissionGranted !== false\n ? microphonePermissionGranted\n ? 'granted'\n : 'prompt'\n : 'denied'\n };\n /* @conditional-compile-remove(call-readiness) */\n const networkErrors = errorBarProps.activeErrorMessages.filter((message) => message.type === 'callNetworkQualityLow');\n\n /* @conditional-compile-remove(call-readiness) */\n const [isPermissionsModalDismissed, setIsPermissionsModalDismissed] = useState(true);\n\n // When permission API is not available, we want to show screen saying checking for access (disappears on its own)\n // then based on permission setting, we show permission denied or nothing\n /* @conditional-compile-remove(call-readiness) */\n const [minimumFallbackTimerElapsed, setMinimumFallbackTimerElapsed] = useState(false);\n /* @conditional-compile-remove(call-readiness) */\n setTimeout(() => {\n setMinimumFallbackTimerElapsed(true);\n }, 2000);\n /* @conditional-compile-remove(call-readiness) */\n const forceShowingCheckPermissions = !minimumFallbackTimerElapsed;\n\n const { toggleVideoEffectsPane, closeVideoEffectsPane, isVideoEffectsPaneOpen } = useVideoEffectsPane(\n props.updateSidePaneRenderer,\n mobileView,\n props.latestErrors,\n props.onDismissError\n );\n\n const startCall = useCallback(async () => {\n closeVideoEffectsPane();\n startCallHandler();\n }, [startCallHandler, closeVideoEffectsPane]);\n\n const panelLayerProps = useMemo(\n () => ({\n hostId: modalLayerHostId\n }),\n [modalLayerHostId]\n );\n\n const filteredErrorBarProps = useMemo(\n () => ({\n ...errorBarProps,\n activeErrorMessages: filteredLatestErrors\n }),\n [errorBarProps, filteredLatestErrors]\n );\n\n const containerStyles = useMemo(\n () => configurationContainerStyle(!mobileView, props.backgroundImage?.url),\n [mobileView, props.backgroundImage?.url]\n );\n\n return (\n <Stack styles={containerStyles}>\n <Stack styles={bannerNotificationStyles}>\n <ConfigurationPageErrorBar\n /* @conditional-compile-remove(call-readiness) */\n // show trouble shooting error bar when encountering network error/ permission error\n showTroubleShootingErrorBar={\n !cameraPermissionGranted || !microphonePermissionGranted || networkErrors.length > 0\n }\n /* @conditional-compile-remove(call-readiness) */\n permissionsState={permissionsState}\n /* @conditional-compile-remove(call-readiness) */\n onNetworkingTroubleShootingClick={onNetworkingTroubleShootingClick}\n /* @conditional-compile-remove(call-readiness) */\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n errorBarProps={filteredErrorBarProps}\n onDismissError={props.onDismissError}\n />\n </Stack>\n {\n /* @conditional-compile-remove(call-readiness) */\n // show the following screen if permission API is availible (not unsupported) and videoState, audioState is assigned values\n videoState && videoState !== 'unsupported' && audioState && audioState !== 'unsupported' && (\n <CallReadinessModal\n modalLayerHostId={modalLayerHostId}\n mobileView={mobileView}\n /* @conditional-compile-remove(unsupported-browser) */\n environmentInfo={environmentInfo}\n permissionsState={permissionsState}\n isPermissionsModalDismissed={isPermissionsModalDismissed}\n setIsPermissionsModalDismissed={setIsPermissionsModalDismissed}\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n doNotPromptCamera={deviceChecks?.camera === 'doNotPrompt'}\n />\n )\n }\n\n {\n /* @conditional-compile-remove(call-readiness) */\n // show the following screen if permission API is not availible (unsupported) and videoState, audioState is assigned values\n videoState && audioState && (videoState === 'unsupported' || audioState === 'unsupported') && (\n <CallReadinessModalFallBack\n /* @conditional-compile-remove(call-readiness) */\n modalLayerHostId={modalLayerHostId}\n mobileView={mobileView}\n checkPermissionModalShowing={forceShowingCheckPermissions}\n permissionsState={permissionsState}\n isPermissionsModalDismissed={isPermissionsModalDismissed}\n /* @conditional-compile-remove(unsupported-browser) */\n environmentInfo={environmentInfo}\n setIsPermissionsModalDismissed={setIsPermissionsModalDismissed}\n onPermissionsTroubleshootingClick={onPermissionsTroubleshootingClick}\n />\n )\n }\n\n <Stack verticalFill grow horizontal className={fillWidth}>\n <Stack\n className={configurationCenteredContent(mobileWithPreview, !!props.logo)}\n verticalAlign=\"center\"\n verticalFill={mobileWithPreview}\n tokens={mobileWithPreview ? configurationStackTokensMobile : configurationStackTokensDesktop}\n >\n <Stack.Item styles={callDetailsContainerStyles}>\n <Logo logo={props.logo} />\n {title}\n {callDescription}\n </Stack.Item>\n <Stack\n horizontal={!mobileWithPreview}\n horizontalAlign={mobileWithPreview ? 'stretch' : 'center'}\n verticalFill={mobileWithPreview}\n tokens={deviceConfigurationStackTokens}\n >\n {localPreviewTrampoline(mobileWithPreview, !!(role === 'Consumer'))}\n <Stack styles={mobileView ? undefined : configurationSectionStyle}>\n {!mobileWithPreview && (\n <Stack\n className={\n mobileView\n ? undefined\n : selectionContainerStyle(\n theme,\n isSafariBrowserEnvironmentTrampoline(\n /* @conditional-compile-remove(unsupported-browser) */ environmentInfo\n )\n )\n }\n >\n <LocalDeviceSettings\n {...options}\n {...localDeviceSettingsHandlers}\n cameraPermissionGranted={cameraPermissionGrantedTrampoline(\n cameraPermissionGranted,\n /* @conditional-compile-remove(call-readiness) */ videoState\n )}\n microphonePermissionGranted={micPermissionGrantedTrampoline(\n microphonePermissionGranted,\n /* @conditional-compile-remove(call-readiness) */ audioState\n )}\n /* @conditional-compile-remove(call-readiness) */\n onClickEnableDevicePermission={() => {\n setIsPermissionsModalDismissed(true);\n }}\n onClickVideoEffects={toggleVideoEffectsPane}\n />\n </Stack>\n )}\n <Stack\n styles={mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop}\n horizontalAlign={mobileWithPreview ? 'stretch' : 'end'}\n >\n <StartCallButton\n className={mobileWithPreview ? startCallButtonStyleMobile : startCallButtonStyleDesktop}\n onClick={startCall}\n disabled={disableStartCallButton}\n hideIcon={true}\n />\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n <Panel\n isOpen={isVideoEffectsPaneOpen}\n hasCloseButton={false}\n isBlocking={false}\n isHiddenOnDismiss={false}\n styles={panelStyles}\n focusTrapZoneProps={panelFocusProps}\n layerProps={panelLayerProps}\n type={PanelType.custom}\n customWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n >\n <SidePane\n mobileView={props.mobileView}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n maxWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n minWidth={`${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem`}\n />\n </Panel>\n </Stack>\n </Stack>\n );\n};\n\nconst localPreviewTrampoline = (mobileView: boolean, doNotShow?: boolean): JSX.Element | undefined => {\n if (doNotShow) {\n return undefined;\n }\n return <LocalPreview mobileView={mobileView} showDevicesButton={mobileView} />;\n};\n\nconst cameraPermissionGrantedTrampoline = (\n cameraPermissionGranted: boolean | undefined,\n videoState?: PermissionState | 'unsupported' | undefined\n): boolean | undefined => {\n /* @conditional-compile-remove(call-readiness) */\n return videoState && videoState !== 'unsupported' ? videoState === 'granted' : cameraPermissionGranted;\n\n return cameraPermissionGranted;\n};\n\nconst micPermissionGrantedTrampoline = (\n microphonePermissionGranted: boolean | undefined,\n audioState?: PermissionState | 'unsupported' | undefined\n): boolean | undefined => {\n /* @conditional-compile-remove(call-readiness) */\n return audioState && audioState !== 'unsupported' ? audioState === 'granted' : microphonePermissionGranted;\n\n return microphonePermissionGranted;\n};\n\nconst Logo = (props: { logo?: { url: string; alt?: string; shape?: 'unset' | 'circle' } }): JSX.Element => {\n if (!props.logo) {\n return <></>;\n }\n return <Image styles={logoStyles(props.logo.shape)} src={props.logo.url} alt={props.logo.alt} />;\n};\n\nconst isSafariBrowserEnvironmentTrampoline = (environmentInfo?: EnvironmentInfo): boolean | undefined => {\n /* @conditional-compile-remove(unsupported-browser) */\n return environmentInfo && environmentInfo?.environment.browser.toLowerCase() === 'safari';\n\n return false;\n};\n"]}
@@ -14,8 +14,8 @@ export interface HoldPageProps {
14
14
  modalLayerHostId: string;
15
15
  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;
16
16
  mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;
17
- latestErrors: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];
18
- onDismissError: (error: ActiveErrorMessage | /* @conditional-compile-remove(notifications) */ ActiveNotification) => void;
17
+ latestErrors: ActiveErrorMessage[] | ActiveNotification[];
18
+ onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;
19
19
  onDismissNotification?: (notification: ActiveNotification) => void;
20
20
  capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;
21
21
  latestNotifications: ActiveNotification[];
@@ -11,7 +11,7 @@ import { disableCallControls, reduceCallControlsForMobile } from '../utils';
11
11
  * @beta
12
12
  */
13
13
  export const HoldPage = (props) => {
14
- var _a, _b, _c, _d, _e;
14
+ var _a, _b, _c, _d, _e, _f, _g;
15
15
  const errorBarProps = usePropsFor(ErrorBar);
16
16
  const strings = useLocale().strings.call;
17
17
  let callControlOptions = props.mobileView
@@ -26,15 +26,11 @@ export const HoldPage = (props) => {
26
26
  /* @conditional-compile-remove(one-to-n-calling) */
27
27
  'holdButton'
28
28
  ]);
29
- return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && errorBarProps,
30
- /* @conditional-compile-remove(notifications) */
31
- showErrorNotifications: (_e = (_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== null && _e !== void 0 ? _e : true, callControlProps: {
29
+ return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_c = props.options) === null || _c === void 0 ? void 0 : _c.errorBar) !== false && errorBarProps, showErrorNotifications: (_e = (_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== null && _e !== void 0 ? _e : true, callControlProps: {
32
30
  options: callControlOptions,
33
31
  increaseFlyoutItemSize: props.mobileView
34
- }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(HoldPane, null), dataUiId: 'hold-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors,
35
- /* @conditional-compile-remove(notifications) */
36
- latestNotifications: props.latestNotifications, onDismissError: props.onDismissError,
37
- /* @conditional-compile-remove(notifications) */
38
- onDismissNotification: props.onDismissNotification }));
32
+ }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(HoldPane, null), dataUiId: 'hold-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, latestNotifications: props.latestNotifications, onDismissError: props.onDismissError, onDismissNotification: props.onDismissNotification,
33
+ /* @conditional-compile-remove(call-readiness) */
34
+ doNotShowCameraAccessNotifications: ((_g = (_f = props.options) === null || _f === void 0 ? void 0 : _f.deviceChecks) === null || _g === void 0 ? void 0 : _g.camera) === 'doNotPrompt' }));
39
35
  };
40
36
  //# sourceMappingURL=HoldPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HoldPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/HoldPage.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAsB,QAAQ,EAAE,4CAAmC;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AA4B5E;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAe,EAAE;;IAC5D,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEzC,IAAI,kBAAkB,GAAG,KAAK,CAAC,UAAU;QACvC,CAAC,CAAC,2BAA2B,CAAC,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,CAAC;QAC1D,CAAC,CAAC,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,CAAC;IAEhC,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,EAAE;QAC3D,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,mBAAmB;QACnB,6CAA6C;QAC7C,mDAAmD;QACnD,YAAY;KACb,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,eAAe,IACd,qBAAqB,EAAE,EAAE,OAAO,EAAE,EAClC,aAAa,EAAE,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,MAAK,KAAK,IAAI,aAAa;QACjE,gDAAgD;QAChD,sBAAsB,EAAE,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,mCAAI,IAAI,EACvD,gBAAgB,EAAE;YAChB,OAAO,EAAE,kBAAkB;YAC3B,sBAAsB,EAAE,KAAK,CAAC,UAAU;SACzC,EACD,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,sBAAsB,EAAE,GAAG,EAAE,CAAC,oBAAC,QAAQ,OAAG,EAC1C,QAAQ,EAAE,WAAW,EACrB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EACpD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,gDAAgD;QAChD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gDAAgD;QAChD,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,GAClD,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActiveErrorMessage, ErrorBar } from '@internal/react-components';\nimport React from 'react';\nimport { CallCompositeOptions } from '../../../index-public';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { HoldPane } from '../components/HoldPane';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\n/* @conditional-compile-remove(notifications) */\nimport { ActiveNotification } from '@internal/react-components';\n\n/**\n * @beta\n */\nexport interface HoldPageProps {\n mobileView: boolean;\n options?: CallCompositeOptions;\n modalLayerHostId: string;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n latestErrors: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];\n onDismissError: (\n error: ActiveErrorMessage | /* @conditional-compile-remove(notifications) */ ActiveNotification\n ) => void;\n /* @conditional-compile-remove(notifications) */\n onDismissNotification?: (notification: ActiveNotification) => void;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n /* @conditional-compile-remove(notifications) */\n latestNotifications: ActiveNotification[];\n}\n\n/**\n * @beta\n */\nexport const HoldPage = (props: HoldPageProps): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n\n let callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n callControlOptions = disableCallControls(callControlOptions, [\n 'cameraButton',\n 'microphoneButton',\n 'devicesButton',\n 'screenShareButton',\n /* @conditional-compile-remove(PSTN-calls) */\n /* @conditional-compile-remove(one-to-n-calling) */\n 'holdButton'\n ]);\n\n return (\n <CallArrangement\n complianceBannerProps={{ strings }}\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n /* @conditional-compile-remove(notifications) */\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => <HoldPane />}\n dataUiId={'hold-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n /* @conditional-compile-remove(notifications) */\n latestNotifications={props.latestNotifications}\n onDismissError={props.onDismissError}\n /* @conditional-compile-remove(notifications) */\n onDismissNotification={props.onDismissNotification}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"HoldPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/HoldPage.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAsB,QAAQ,EAAE,4CAAmC;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAuB5E;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAe,EAAE;;IAC5D,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAEzC,IAAI,kBAAkB,GAAG,KAAK,CAAC,UAAU;QACvC,CAAC,CAAC,2BAA2B,CAAC,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,CAAC;QAC1D,CAAC,CAAC,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,CAAC;IAEhC,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,EAAE;QAC3D,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,mBAAmB;QACnB,6CAA6C;QAC7C,mDAAmD;QACnD,YAAY;KACb,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,eAAe,IACd,qBAAqB,EAAE,EAAE,OAAO,EAAE,EAClC,aAAa,EAAE,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,MAAK,KAAK,IAAI,aAAa,EACjE,sBAAsB,EAAE,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,QAAQ,mCAAI,IAAI,EACvD,gBAAgB,EAAE;YAChB,OAAO,EAAE,kBAAkB;YAC3B,sBAAsB,EAAE,KAAK,CAAC,UAAU;SACzC,EACD,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,sBAAsB,EAAE,GAAG,EAAE,CAAC,oBAAC,QAAQ,OAAG,EAC1C,QAAQ,EAAE,WAAW,EACrB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EACpD,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,iDAAiD;QACjD,kCAAkC,EAAE,CAAA,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,0CAAE,MAAM,MAAK,aAAa,GACzF,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActiveErrorMessage, ErrorBar } from '@internal/react-components';\nimport React from 'react';\nimport { CallCompositeOptions } from '../../../index-public';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { HoldPane } from '../components/HoldPane';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\nimport { ActiveNotification } from '@internal/react-components';\n\n/**\n * @beta\n */\nexport interface HoldPageProps {\n mobileView: boolean;\n options?: CallCompositeOptions;\n modalLayerHostId: string;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n mobileChatTabHeader?: MobileChatSidePaneTabHeaderProps;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n onDismissNotification?: (notification: ActiveNotification) => void;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n latestNotifications: ActiveNotification[];\n}\n\n/**\n * @beta\n */\nexport const HoldPage = (props: HoldPageProps): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n\n let callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n callControlOptions = disableCallControls(callControlOptions, [\n 'cameraButton',\n 'microphoneButton',\n 'devicesButton',\n 'screenShareButton',\n /* @conditional-compile-remove(PSTN-calls) */\n /* @conditional-compile-remove(one-to-n-calling) */\n 'holdButton'\n ]);\n\n return (\n <CallArrangement\n complianceBannerProps={{ strings }}\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => <HoldPane />}\n dataUiId={'hold-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n latestNotifications={props.latestNotifications}\n onDismissError={props.onDismissError}\n onDismissNotification={props.onDismissNotification}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n />\n );\n};\n"]}
@@ -14,9 +14,9 @@ export interface LobbyPageProps {
14
14
  options?: CallCompositeOptions;
15
15
  mobileChatTabHeader: MobileChatSidePaneTabHeaderProps | undefined;
16
16
  updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;
17
- latestErrors: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];
17
+ latestErrors: ActiveErrorMessage[] | ActiveNotification[];
18
18
  latestNotifications: ActiveNotification[];
19
- onDismissError: (error: ActiveErrorMessage | /* @conditional-compile-remove(notifications) */ ActiveNotification) => void;
19
+ onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;
20
20
  onDismissNotification: (notification: ActiveNotification) => void;
21
21
  capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;
22
22
  }
@@ -16,7 +16,7 @@ import { isPhoneNumberIdentifier } from '@azure/communication-common';
16
16
  * @private
17
17
  */
18
18
  export const LobbyPage = (props) => {
19
- var _a, _b, _c, _d, _e, _f;
19
+ var _a, _b, _c, _d, _e, _f, _g, _h;
20
20
  const errorBarProps = usePropsFor(ErrorBar);
21
21
  const lobbyProps = useSelector(lobbySelector);
22
22
  const strings = useLocale().strings.call;
@@ -28,16 +28,12 @@ export const LobbyPage = (props) => {
28
28
  ? reduceCallControlsForMobile((_b = props.options) === null || _b === void 0 ? void 0 : _b.callControls)
29
29
  : (_c = props.options) === null || _c === void 0 ? void 0 : _c.callControls;
30
30
  callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);
31
- return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && errorBarProps,
32
- /* @conditional-compile-remove(notifications) */
33
- showErrorNotifications: (_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== null && _f !== void 0 ? _f : true, callControlProps: {
31
+ return (React.createElement(CallArrangement, { complianceBannerProps: { strings }, errorBarProps: ((_d = props.options) === null || _d === void 0 ? void 0 : _d.errorBar) !== false && errorBarProps, showErrorNotifications: (_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== null && _f !== void 0 ? _f : true, callControlProps: {
34
32
  options: callControlOptions,
35
33
  increaseFlyoutItemSize: props.mobileView
36
- }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(LobbyTile, Object.assign({}, lobbyProps, { showLocalVideoCameraCycleButton: props.mobileView, overlayProps: overlayProps(strings, inLobby, Object.values(participants)) }))), dataUiId: 'lobby-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
37
- /* @conditional-compile-remove(notifications) */
38
- latestNotifications: props.latestNotifications,
39
- /* @conditional-compile-remove(notifications) */
40
- onDismissNotification: props.onDismissNotification }));
34
+ }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(LobbyTile, Object.assign({}, lobbyProps, { showLocalVideoCameraCycleButton: props.mobileView, overlayProps: overlayProps(strings, inLobby, Object.values(participants)) }))), dataUiId: 'lobby-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError, latestNotifications: props.latestNotifications, onDismissNotification: props.onDismissNotification,
35
+ /* @conditional-compile-remove(call-readiness) */
36
+ doNotShowCameraAccessNotifications: ((_h = (_g = props.options) === null || _g === void 0 ? void 0 : _g.deviceChecks) === null || _h === void 0 ? void 0 : _h.camera) === 'doNotPrompt' }));
41
37
  };
42
38
  const overlayProps = (strings, inLobby, remoteParticipants) => {
43
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LobbyPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/LobbyPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React from 'react';\nimport { ActiveErrorMessage, ErrorBar } from '@internal/react-components';\n/* @conditional-compile-remove(notifications) */\nimport { ActiveNotification } from '@internal/react-components';\nimport { useSelector } from '../hooks/useSelector';\nimport { lobbySelector } from '../selectors/lobbySelector';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { LobbyOverlayProps, LobbyTile } from '../components/LobbyTile';\nimport { getCallStatus, getRemoteParticipants } from '../selectors/baseSelectors';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\nimport { CallCompositeStrings } from '../Strings';\nimport { useLocale } from '../../localization';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { isPhoneNumberIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\n\n/**\n * @private\n */\nexport interface LobbyPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n options?: CallCompositeOptions;\n mobileChatTabHeader: MobileChatSidePaneTabHeaderProps | undefined;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n latestErrors: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];\n /* @conditional-compile-remove(notifications) */\n latestNotifications: ActiveNotification[];\n onDismissError: (\n error: ActiveErrorMessage | /* @conditional-compile-remove(notifications) */ ActiveNotification\n ) => void;\n /* @conditional-compile-remove(notifications) */\n onDismissNotification: (notification: ActiveNotification) => void;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n}\n\n/**\n * @private\n */\nexport const LobbyPage = (props: LobbyPageProps): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const lobbyProps = useSelector(lobbySelector);\n const strings = useLocale().strings.call;\n\n const callState = useSelector(getCallStatus);\n const inLobby = callState === 'InLobby';\n\n const participants = useSelector(getRemoteParticipants) ?? {};\n\n // Reduce the controls shown when mobile view is enabled.\n let callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);\n\n return (\n <CallArrangement\n complianceBannerProps={{ strings }}\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n /* @conditional-compile-remove(notifications) */\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => (\n <LobbyTile\n {...lobbyProps}\n showLocalVideoCameraCycleButton={props.mobileView}\n overlayProps={overlayProps(strings, inLobby, Object.values(participants))}\n />\n )}\n dataUiId={'lobby-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n onDismissError={props.onDismissError}\n /* @conditional-compile-remove(notifications) */\n latestNotifications={props.latestNotifications}\n /* @conditional-compile-remove(notifications) */\n onDismissNotification={props.onDismissNotification}\n />\n );\n};\n\nconst overlayProps = (\n strings: CallCompositeStrings,\n inLobby: boolean,\n remoteParticipants: RemoteParticipantState[]\n): LobbyOverlayProps => {\n /**\n * Only grab the first participant because there will only be one in this situation.\n * when starting a call with multiple people the call goes to the connected state and composite goes directly to\n * videoGallery.\n *\n * We also need to check the participant state since in a group call the remote participants array will populate just before\n * the user joins. In this situation we also check the participant states. in a groupCall the state of the participants\n * will be 'Idle'.\n */\n const outboundCallParticipant: RemoteParticipantState | undefined =\n remoteParticipants[0] &&\n ['Ringing', 'Connecting'].includes(remoteParticipants[0].state) &&\n remoteParticipants.length === 1\n ? remoteParticipants[0]\n : undefined;\n\n return inLobby\n ? overlayPropsWaitingToBeAdmitted(strings)\n : outboundCallParticipant\n ? overlayPropsOutboundCall(strings, outboundCallParticipant)\n : overlayPropsConnectingToCall(strings);\n};\n\nconst overlayPropsConnectingToCall = (strings: CallCompositeStrings): LobbyOverlayProps => ({\n title: strings.lobbyScreenConnectingToCallTitle,\n moreDetails: strings.lobbyScreenConnectingToCallMoreDetails,\n overlayIcon: <CallCompositeIcon iconName=\"LobbyScreenConnectingToCall\" />\n});\n\nconst overlayPropsWaitingToBeAdmitted = (strings: CallCompositeStrings): LobbyOverlayProps => ({\n title: strings.lobbyScreenWaitingToBeAdmittedTitle,\n moreDetails: strings.lobbyScreenWaitingToBeAdmittedMoreDetails,\n overlayIcon: <CallCompositeIcon iconName=\"LobbyScreenWaitingToBeAdmitted\" />\n});\n\nconst overlayPropsOutboundCall = (\n strings: CallCompositeStrings,\n participant: RemoteParticipantState\n): LobbyOverlayProps => {\n if (isPhoneNumberIdentifier(participant.identifier)) {\n return {\n title: (participant.identifier as PhoneNumberIdentifier).phoneNumber,\n moreDetails: strings.outboundCallingNoticeString\n };\n } else {\n return {\n title: strings.outboundCallingNoticeString ?? ''\n };\n }\n};\n"]}
1
+ {"version":3,"file":"LobbyPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/LobbyPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React from 'react';\nimport { ActiveErrorMessage, ErrorBar } from '@internal/react-components';\nimport { ActiveNotification } from '@internal/react-components';\nimport { useSelector } from '../hooks/useSelector';\nimport { lobbySelector } from '../selectors/lobbySelector';\nimport { CallCompositeOptions } from '../CallComposite';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { LobbyOverlayProps, LobbyTile } from '../components/LobbyTile';\nimport { getCallStatus, getRemoteParticipants } from '../selectors/baseSelectors';\nimport { disableCallControls, reduceCallControlsForMobile } from '../utils';\nimport { CallCompositeStrings } from '../Strings';\nimport { useLocale } from '../../localization';\nimport { CallCompositeIcon } from '../../common/icons';\nimport { isPhoneNumberIdentifier, PhoneNumberIdentifier } from '@azure/communication-common';\nimport { RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { MobileChatSidePaneTabHeaderProps } from '../../common/TabHeader';\nimport { SidePaneRenderer } from '../components/SidePane/SidePaneProvider';\n\nimport { CapabilitiesChangeNotificationBarProps } from '../components/CapabilitiesChangedNotificationBar';\n\n/**\n * @private\n */\nexport interface LobbyPageProps {\n mobileView: boolean;\n modalLayerHostId: string;\n options?: CallCompositeOptions;\n mobileChatTabHeader: MobileChatSidePaneTabHeaderProps | undefined;\n updateSidePaneRenderer: (renderer: SidePaneRenderer | undefined) => void;\n latestErrors: ActiveErrorMessage[] | ActiveNotification[];\n\n latestNotifications: ActiveNotification[];\n onDismissError: (error: ActiveErrorMessage | ActiveNotification) => void;\n\n onDismissNotification: (notification: ActiveNotification) => void;\n capabilitiesChangedNotificationBarProps?: CapabilitiesChangeNotificationBarProps;\n}\n\n/**\n * @private\n */\nexport const LobbyPage = (props: LobbyPageProps): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const lobbyProps = useSelector(lobbySelector);\n const strings = useLocale().strings.call;\n\n const callState = useSelector(getCallStatus);\n const inLobby = callState === 'InLobby';\n\n const participants = useSelector(getRemoteParticipants) ?? {};\n\n // Reduce the controls shown when mobile view is enabled.\n let callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n callControlOptions = disableCallControls(callControlOptions, ['screenShareButton', 'participantsButton']);\n\n return (\n <CallArrangement\n complianceBannerProps={{ strings }}\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => (\n <LobbyTile\n {...lobbyProps}\n showLocalVideoCameraCycleButton={props.mobileView}\n overlayProps={overlayProps(strings, inLobby, Object.values(participants))}\n />\n )}\n dataUiId={'lobby-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n onDismissError={props.onDismissError}\n latestNotifications={props.latestNotifications}\n onDismissNotification={props.onDismissNotification}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n />\n );\n};\n\nconst overlayProps = (\n strings: CallCompositeStrings,\n inLobby: boolean,\n remoteParticipants: RemoteParticipantState[]\n): LobbyOverlayProps => {\n /**\n * Only grab the first participant because there will only be one in this situation.\n * when starting a call with multiple people the call goes to the connected state and composite goes directly to\n * videoGallery.\n *\n * We also need to check the participant state since in a group call the remote participants array will populate just before\n * the user joins. In this situation we also check the participant states. in a groupCall the state of the participants\n * will be 'Idle'.\n */\n const outboundCallParticipant: RemoteParticipantState | undefined =\n remoteParticipants[0] &&\n ['Ringing', 'Connecting'].includes(remoteParticipants[0].state) &&\n remoteParticipants.length === 1\n ? remoteParticipants[0]\n : undefined;\n\n return inLobby\n ? overlayPropsWaitingToBeAdmitted(strings)\n : outboundCallParticipant\n ? overlayPropsOutboundCall(strings, outboundCallParticipant)\n : overlayPropsConnectingToCall(strings);\n};\n\nconst overlayPropsConnectingToCall = (strings: CallCompositeStrings): LobbyOverlayProps => ({\n title: strings.lobbyScreenConnectingToCallTitle,\n moreDetails: strings.lobbyScreenConnectingToCallMoreDetails,\n overlayIcon: <CallCompositeIcon iconName=\"LobbyScreenConnectingToCall\" />\n});\n\nconst overlayPropsWaitingToBeAdmitted = (strings: CallCompositeStrings): LobbyOverlayProps => ({\n title: strings.lobbyScreenWaitingToBeAdmittedTitle,\n moreDetails: strings.lobbyScreenWaitingToBeAdmittedMoreDetails,\n overlayIcon: <CallCompositeIcon iconName=\"LobbyScreenWaitingToBeAdmitted\" />\n});\n\nconst overlayPropsOutboundCall = (\n strings: CallCompositeStrings,\n participant: RemoteParticipantState\n): LobbyOverlayProps => {\n if (isPhoneNumberIdentifier(participant.identifier)) {\n return {\n title: (participant.identifier as PhoneNumberIdentifier).phoneNumber,\n moreDetails: strings.outboundCallingNoticeString\n };\n } else {\n return {\n title: strings.outboundCallingNoticeString ?? ''\n };\n }\n};\n"]}
@@ -19,7 +19,7 @@ import { reduceCallControlsForMobile } from '../utils';
19
19
  * @private
20
20
  */
21
21
  export const TransferPage = (props) => {
22
- var _a, _b, _c, _d, _e, _f, _g;
22
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
23
23
  const errorBarProps = usePropsFor(ErrorBar);
24
24
  const strings = useLocale().strings.call;
25
25
  const remoteParticipants = useSelector(getRemoteParticipants);
@@ -53,18 +53,14 @@ export const TransferPage = (props) => {
53
53
  React.createElement(Announcer, { announcementString: announcerString, ariaLive: "polite" }),
54
54
  React.createElement(CallArrangement, { complianceBannerProps: { strings },
55
55
  // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.
56
- errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps,
57
- /* @conditional-compile-remove(notifications) */
58
- showErrorNotifications: (_g = (_f = props.options) === null || _f === void 0 ? void 0 : _f.errorBar) !== null && _g !== void 0 ? _g : true, callControlProps: {
56
+ errorBarProps: ((_e = props.options) === null || _e === void 0 ? void 0 : _e.errorBar) !== false && errorBarProps, showErrorNotifications: (_g = (_f = props.options) === null || _f === void 0 ? void 0 : _f.errorBar) !== null && _g !== void 0 ? _g : true, callControlProps: {
59
57
  options: callControlOptions,
60
58
  increaseFlyoutItemSize: props.mobileView
61
59
  }, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(TransferTile, { userId: transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant === null || transferTileParticipant === void 0 ? void 0 : transferTileParticipant.identifier) : undefined, displayName: transferParticipantDisplayName, initialsName: transferParticipantDisplayName, statusText: pageSubject === 'transferTarget'
62
60
  ? strings.transferPageTransferTargetText
63
- : strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
64
- /* @conditional-compile-remove(notifications) */
65
- onDismissNotification: props.onDismissNotification,
66
- /* @conditional-compile-remove(notifications) */
67
- latestNotifications: props.latestNotifications })));
61
+ : strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError, onDismissNotification: props.onDismissNotification, latestNotifications: props.latestNotifications,
62
+ /* @conditional-compile-remove(call-readiness) */
63
+ doNotShowCameraAccessNotifications: ((_j = (_h = props.options) === null || _h === void 0 ? void 0 : _h.deviceChecks) === null || _j === void 0 ? void 0 : _j.camera) === 'doNotPrompt' })));
68
64
  };
69
65
  const TransferTile = (props) => {
70
66
  const { displayName, initialsName, userId, onFetchAvatarPersonaData, statusText } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"TransferPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/TransferPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Spinner, SpinnerSize, Stack, Text, mergeStyles } from '@fluentui/react';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { ErrorBar } from '@internal/react-components';\nimport { Announcer } from '@internal/react-components';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipants } from '../selectors/baseSelectors';\nimport { getTransferCall } from '../selectors/baseSelectors';\nimport {\n avatarStyles,\n defaultPersonaStyles,\n displayNameStyles,\n pageContainer,\n spinnerStyles,\n statusTextStyles,\n tileContainerStyles,\n tileContentStyles\n} from '../styles/TransferPage.styles';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { LobbyPageProps } from './LobbyPage';\n\n// Which should be participant shown in the transfer page\ntype TransferPageSubject = 'transferor' | 'transferTarget';\n\n/**\n * @private\n */\nexport const TransferPage = (\n props: LobbyPageProps & {\n /** Callback function that can be used to provide custom data to Persona Icon rendered */\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n }\n): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const transferCall = useSelector(getTransferCall);\n\n const [announcerString, setAnnouncerString] = useState<string | undefined>(undefined);\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n const transferor = useMemo(\n () => (remoteParticipants ? Object.values(remoteParticipants)?.[0] : undefined),\n [remoteParticipants]\n );\n const transferTarget = useMemo(\n () => (transferCall?.remoteParticipants ? Object.values(transferCall.remoteParticipants)?.[0] : undefined),\n [transferCall]\n );\n\n const pageSubject: TransferPageSubject = useMemo(() => {\n if (transferCall && transferTarget?.displayName) {\n return 'transferTarget';\n }\n return 'transferor';\n }, [transferCall, transferTarget?.displayName]);\n\n useEffect(() => {\n setAnnouncerString(strings.transferPageNoticeString);\n }, [strings.transferPageNoticeString]);\n\n let transferTileParticipant = transferor;\n if (pageSubject === 'transferTarget') {\n transferTileParticipant = transferTarget;\n }\n\n let transferParticipantDisplayName = transferor?.displayName ?? strings.transferPageUnknownTransferorDisplayName;\n if (pageSubject === 'transferTarget') {\n transferParticipantDisplayName =\n transferTarget?.displayName ?? strings.transferPageUnknownTransferTargetDisplayName;\n }\n\n return (\n <Stack className={mergeStyles(pageContainer)}>\n <Announcer announcementString={announcerString} ariaLive=\"polite\" />\n <CallArrangement\n complianceBannerProps={{ strings }}\n // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n /* @conditional-compile-remove(notifications) */\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => (\n <TransferTile\n userId={\n transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant?.identifier) : undefined\n }\n displayName={transferParticipantDisplayName}\n initialsName={transferParticipantDisplayName}\n statusText={\n pageSubject === 'transferTarget'\n ? strings.transferPageTransferTargetText\n : strings.transferPageTransferorText\n }\n onFetchAvatarPersonaData={props.onFetchAvatarPersonaData}\n />\n )}\n dataUiId={'transfer-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n onDismissError={props.onDismissError}\n /* @conditional-compile-remove(notifications) */\n onDismissNotification={props.onDismissNotification}\n /* @conditional-compile-remove(notifications) */\n latestNotifications={props.latestNotifications}\n />\n </Stack>\n );\n};\n\ninterface TransferTileProps {\n /** React Child components. Child Components will show as overlay component in the VideoTile. */\n children?: React.ReactNode;\n /** User id for `onFetchAvatarPersonaData` callback to provide custom data to avatars rendered */\n userId?: string;\n /** Callback function that can be used to provide custom data to Persona Icon rendered */\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n /**\n * Display name of the transferor or transfer target to be shown in the label.\n * @remarks `displayName` is used to generate avatar initials if `initialsName` is not provided.\n */\n displayName?: string;\n /**\n * Name of the transferor or transfer target used to generate initials for the avatar. For example, a name\n * `John Doe` will display `JD` as initials.\n * @remarks `displayName` is used if this property is not specified.\n */\n initialsName?: string;\n /** Optional property to set the status of the transfer process */\n statusText?: string;\n}\n\nconst TransferTile = (props: TransferTileProps): JSX.Element => {\n const { displayName, initialsName, userId, onFetchAvatarPersonaData, statusText } = props;\n\n const [personaSize, setPersonaSize] = useState<number>();\n const tileRef = useRef<HTMLDivElement>(null);\n\n const observer = useRef(\n new ResizeObserver((entries): void => {\n const { width, height } = entries[0].contentRect;\n const personaSize = Math.min(width, height) / 2;\n setPersonaSize(Math.max(Math.min(personaSize, 150), 32));\n })\n );\n\n useLayoutEffect(() => {\n if (tileRef.current) {\n observer.current.observe(tileRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [observer, tileRef]);\n\n const placeholderOptions = useMemo(\n () => ({\n userId,\n text: initialsName ?? displayName,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n }),\n [userId, initialsName, displayName, personaSize]\n );\n\n const defaultOnRenderAvatar = useCallback(() => {\n return personaSize ? (\n <AvatarPersona\n {...placeholderOptions}\n dataProvider={onFetchAvatarPersonaData}\n className={mergeStyles(avatarStyles)}\n />\n ) : (\n <></>\n );\n }, [placeholderOptions, onFetchAvatarPersonaData, personaSize]);\n\n const defaultAvatar = useMemo(() => defaultOnRenderAvatar(), [defaultOnRenderAvatar]);\n\n return (\n <div ref={tileRef} className={mergeStyles(tileContainerStyles)} data-is-focusable={true}>\n <Stack className={mergeStyles(tileContentStyles)} tokens={{ childrenGap: '1rem' }}>\n <Stack horizontalAlign=\"center\" tokens={{ childrenGap: '0.5rem' }}>\n {defaultAvatar}\n <Text className={mergeStyles(displayNameStyles)}>{displayName}</Text>\n </Stack>\n <Stack horizontal horizontalAlign=\"center\" verticalAlign=\"center\" tokens={{ childrenGap: '0.5rem' }}>\n <Spinner size={SpinnerSize.large} className={mergeStyles(spinnerStyles)} />\n <Text className={mergeStyles(statusTextStyles)}>{statusText}</Text>\n </Stack>\n </Stack>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"TransferPage.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/pages/TransferPage.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Spinner, SpinnerSize, Stack, Text, mergeStyles } from '@fluentui/react';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { ErrorBar } from '@internal/react-components';\nimport { Announcer } from '@internal/react-components';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useEffect } from 'react';\nimport { AvatarPersona, AvatarPersonaDataCallback } from '../../common/AvatarPersona';\nimport { useLocale } from '../../localization';\nimport { CallArrangement } from '../components/CallArrangement';\nimport { usePropsFor } from '../hooks/usePropsFor';\nimport { useSelector } from '../hooks/useSelector';\nimport { getRemoteParticipants } from '../selectors/baseSelectors';\nimport { getTransferCall } from '../selectors/baseSelectors';\nimport {\n avatarStyles,\n defaultPersonaStyles,\n displayNameStyles,\n pageContainer,\n spinnerStyles,\n statusTextStyles,\n tileContainerStyles,\n tileContentStyles\n} from '../styles/TransferPage.styles';\nimport { reduceCallControlsForMobile } from '../utils';\nimport { LobbyPageProps } from './LobbyPage';\n\n// Which should be participant shown in the transfer page\ntype TransferPageSubject = 'transferor' | 'transferTarget';\n\n/**\n * @private\n */\nexport const TransferPage = (\n props: LobbyPageProps & {\n /** Callback function that can be used to provide custom data to Persona Icon rendered */\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n }\n): JSX.Element => {\n const errorBarProps = usePropsFor(ErrorBar);\n const strings = useLocale().strings.call;\n const remoteParticipants = useSelector(getRemoteParticipants);\n const transferCall = useSelector(getTransferCall);\n\n const [announcerString, setAnnouncerString] = useState<string | undefined>(undefined);\n\n // Reduce the controls shown when mobile view is enabled.\n const callControlOptions = props.mobileView\n ? reduceCallControlsForMobile(props.options?.callControls)\n : props.options?.callControls;\n\n const transferor = useMemo(\n () => (remoteParticipants ? Object.values(remoteParticipants)?.[0] : undefined),\n [remoteParticipants]\n );\n const transferTarget = useMemo(\n () => (transferCall?.remoteParticipants ? Object.values(transferCall.remoteParticipants)?.[0] : undefined),\n [transferCall]\n );\n\n const pageSubject: TransferPageSubject = useMemo(() => {\n if (transferCall && transferTarget?.displayName) {\n return 'transferTarget';\n }\n return 'transferor';\n }, [transferCall, transferTarget?.displayName]);\n\n useEffect(() => {\n setAnnouncerString(strings.transferPageNoticeString);\n }, [strings.transferPageNoticeString]);\n\n let transferTileParticipant = transferor;\n if (pageSubject === 'transferTarget') {\n transferTileParticipant = transferTarget;\n }\n\n let transferParticipantDisplayName = transferor?.displayName ?? strings.transferPageUnknownTransferorDisplayName;\n if (pageSubject === 'transferTarget') {\n transferParticipantDisplayName =\n transferTarget?.displayName ?? strings.transferPageUnknownTransferTargetDisplayName;\n }\n\n return (\n <Stack className={mergeStyles(pageContainer)}>\n <Announcer announcementString={announcerString} ariaLive=\"polite\" />\n <CallArrangement\n complianceBannerProps={{ strings }}\n // Ignore errors from before current call. This avoids old errors from showing up when a user re-joins a call.\n errorBarProps={props.options?.errorBar !== false && errorBarProps}\n showErrorNotifications={props.options?.errorBar ?? true}\n callControlProps={{\n options: callControlOptions,\n increaseFlyoutItemSize: props.mobileView\n }}\n mobileView={props.mobileView}\n modalLayerHostId={props.modalLayerHostId}\n onRenderGalleryContent={() => (\n <TransferTile\n userId={\n transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant?.identifier) : undefined\n }\n displayName={transferParticipantDisplayName}\n initialsName={transferParticipantDisplayName}\n statusText={\n pageSubject === 'transferTarget'\n ? strings.transferPageTransferTargetText\n : strings.transferPageTransferorText\n }\n onFetchAvatarPersonaData={props.onFetchAvatarPersonaData}\n />\n )}\n dataUiId={'transfer-page'}\n updateSidePaneRenderer={props.updateSidePaneRenderer}\n mobileChatTabHeader={props.mobileChatTabHeader}\n latestErrors={props.latestErrors}\n onDismissError={props.onDismissError}\n onDismissNotification={props.onDismissNotification}\n latestNotifications={props.latestNotifications}\n /* @conditional-compile-remove(call-readiness) */\n doNotShowCameraAccessNotifications={props.options?.deviceChecks?.camera === 'doNotPrompt'}\n />\n </Stack>\n );\n};\n\ninterface TransferTileProps {\n /** React Child components. Child Components will show as overlay component in the VideoTile. */\n children?: React.ReactNode;\n /** User id for `onFetchAvatarPersonaData` callback to provide custom data to avatars rendered */\n userId?: string;\n /** Callback function that can be used to provide custom data to Persona Icon rendered */\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n /**\n * Display name of the transferor or transfer target to be shown in the label.\n * @remarks `displayName` is used to generate avatar initials if `initialsName` is not provided.\n */\n displayName?: string;\n /**\n * Name of the transferor or transfer target used to generate initials for the avatar. For example, a name\n * `John Doe` will display `JD` as initials.\n * @remarks `displayName` is used if this property is not specified.\n */\n initialsName?: string;\n /** Optional property to set the status of the transfer process */\n statusText?: string;\n}\n\nconst TransferTile = (props: TransferTileProps): JSX.Element => {\n const { displayName, initialsName, userId, onFetchAvatarPersonaData, statusText } = props;\n\n const [personaSize, setPersonaSize] = useState<number>();\n const tileRef = useRef<HTMLDivElement>(null);\n\n const observer = useRef(\n new ResizeObserver((entries): void => {\n const { width, height } = entries[0].contentRect;\n const personaSize = Math.min(width, height) / 2;\n setPersonaSize(Math.max(Math.min(personaSize, 150), 32));\n })\n );\n\n useLayoutEffect(() => {\n if (tileRef.current) {\n observer.current.observe(tileRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [observer, tileRef]);\n\n const placeholderOptions = useMemo(\n () => ({\n userId,\n text: initialsName ?? displayName,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n }),\n [userId, initialsName, displayName, personaSize]\n );\n\n const defaultOnRenderAvatar = useCallback(() => {\n return personaSize ? (\n <AvatarPersona\n {...placeholderOptions}\n dataProvider={onFetchAvatarPersonaData}\n className={mergeStyles(avatarStyles)}\n />\n ) : (\n <></>\n );\n }, [placeholderOptions, onFetchAvatarPersonaData, personaSize]);\n\n const defaultAvatar = useMemo(() => defaultOnRenderAvatar(), [defaultOnRenderAvatar]);\n\n return (\n <div ref={tileRef} className={mergeStyles(tileContainerStyles)} data-is-focusable={true}>\n <Stack className={mergeStyles(tileContentStyles)} tokens={{ childrenGap: '1rem' }}>\n <Stack horizontalAlign=\"center\" tokens={{ childrenGap: '0.5rem' }}>\n {defaultAvatar}\n <Text className={mergeStyles(displayNameStyles)}>{displayName}</Text>\n </Stack>\n <Stack horizontal horizontalAlign=\"center\" verticalAlign=\"center\" tokens={{ childrenGap: '0.5rem' }}>\n <Spinner size={SpinnerSize.large} className={mergeStyles(spinnerStyles)} />\n <Text className={mergeStyles(statusTextStyles)}>{statusText}</Text>\n </Stack>\n </Stack>\n </div>\n );\n};\n"]}
@@ -6,7 +6,7 @@ export interface NotificationTrackingInfo {
6
6
  lastDismissedAt?: Date;
7
7
  }
8
8
  /** @private */
9
- type NotificationTypes = ErrorType | /* @conditional-compile-remove(notifications) */ NotificationType;
9
+ type NotificationTypes = ErrorType | NotificationType;
10
10
  /** @private */
11
11
  export type TrackedNotifications = Partial<Record<NotificationTypes, NotificationTrackingInfo>>;
12
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorTracking.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/types/ErrorTracking.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* @conditional-compile-remove(notifications) */\nimport { NotificationType } from '@internal/react-components';\nimport { ErrorType } from '@internal/react-components';\n\n/** @private */\nexport interface NotificationTrackingInfo {\n mostRecentlyActive: Date;\n lastDismissedAt?: Date;\n}\n\n/** @private */\ntype NotificationTypes = ErrorType | /* @conditional-compile-remove(notifications) */ NotificationType;\n\n/** @private */\nexport type TrackedNotifications = Partial<Record<NotificationTypes, NotificationTrackingInfo>>;\n"]}
1
+ {"version":3,"file":"ErrorTracking.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/types/ErrorTracking.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { NotificationType } from '@internal/react-components';\nimport { ErrorType } from '@internal/react-components';\n\n/** @private */\nexport interface NotificationTrackingInfo {\n mostRecentlyActive: Date;\n lastDismissedAt?: Date;\n}\n\n/** @private */\ntype NotificationTypes = ErrorType | NotificationType;\n\n/** @private */\nexport type TrackedNotifications = Partial<Record<NotificationTypes, NotificationTrackingInfo>>;\n"]}
@@ -6,17 +6,17 @@ import { NotificationType, ActiveNotification } from "../../../../../react-compo
6
6
  *
7
7
  * @private
8
8
  */
9
- export declare const filterLatestNotifications: (activeNotifications: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[], trackedNotifications: TrackedNotifications) => ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[];
9
+ export declare const filterLatestNotifications: (activeNotifications: ActiveErrorMessage[] | ActiveNotification[], trackedNotifications: TrackedNotifications) => ActiveErrorMessage[] | ActiveNotification[];
10
10
  /**
11
11
  * Maintain a record of the most recently active notification for each notification type.
12
12
  *
13
13
  * @private
14
14
  */
15
- export declare const updateTrackedNotificationsWithActiveNotifications: (existingTrackedNotifications: TrackedNotifications, activeNotifications: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[]) => TrackedNotifications;
15
+ export declare const updateTrackedNotificationsWithActiveNotifications: (existingTrackedNotifications: TrackedNotifications, activeNotifications: ActiveErrorMessage[] | ActiveNotification[]) => TrackedNotifications;
16
16
  /**
17
17
  * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.
18
18
  *
19
19
  * @private
20
20
  */
21
- export declare const trackNotificationAsDismissed: (notificationType: ErrorType | /* @conditional-compile-remove(notifications) */ NotificationType, trackedNotifications: TrackedNotifications) => TrackedNotifications;
21
+ export declare const trackNotificationAsDismissed: (notificationType: ErrorType | NotificationType, trackedNotifications: TrackedNotifications) => TrackedNotifications;
22
22
  //# sourceMappingURL=TrackErrors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TrackErrors.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/TrackErrors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,mBAAiH,EACjH,oBAA0C,EACoD,EAAE;IAChG,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,EAAE;QAC9E,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,CACL,CAAC,mBAAmB;YACpB,CAAC,mBAAmB,CAAC,eAAe;YACpC,mBAAmB,CAAC,eAAe,GAAG,mBAAmB,CAAC,kBAAkB,CAC7E,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,qBAEkE,CAAC;AAC5E,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,CAC/D,4BAAkD,EAClD,mBAAiH,EAC3F,EAAE;;IACxB,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,wIAAwI;IACxI,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;QACrD,MAAM,2BAA2B,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1F,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;YAC9C,kBAAkB,EAChB,MAAA,MAAA,kBAAkB,CAAC,SAAS,mCAAI,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAE,kBAAkB,mCAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACzG,eAAe,EAAE,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAE,eAAe;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,gBAA+F,EAC/F,oBAA0C,EACpB,EAAE;IACxB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAEpE,uCACK,oBAAoB,KACvB,CAAC,gBAAgB,CAAC,kCACb,CAAC,oBAAoB,IAAI,EAAE,CAAC,KAC/B,eAAe,EAAE,GAAG,OAEtB;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActiveErrorMessage, ErrorType } from '@internal/react-components';\nimport { TrackedNotifications } from '../types/ErrorTracking';\n/* @conditional-compile-remove(notifications) */\nimport { NotificationType, ActiveNotification } from '@internal/react-components';\n\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestNotifications = (\n activeNotifications: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[],\n trackedNotifications: TrackedNotifications\n): ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[] => {\n const filteredNotifications = activeNotifications.filter((activeNotification) => {\n const trackedNotification = trackedNotifications[activeNotification.type];\n return (\n !trackedNotification ||\n !trackedNotification.lastDismissedAt ||\n trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive\n );\n });\n return filteredNotifications as\n | ActiveErrorMessage[]\n | /* @conditional-compile-remove(notifications) */ ActiveNotification[];\n};\n\n/**\n * Maintain a record of the most recently active notification for each notification type.\n *\n * @private\n */\nexport const updateTrackedNotificationsWithActiveNotifications = (\n existingTrackedNotifications: TrackedNotifications,\n activeNotifications: ActiveErrorMessage[] | /* @conditional-compile-remove(notifications) */ ActiveNotification[]\n): TrackedNotifications => {\n const trackedNotifications: TrackedNotifications = {};\n\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.type];\n trackedNotifications[activeNotification.type] = {\n mostRecentlyActive:\n activeNotification.timestamp ?? existingTrackedNotification?.mostRecentlyActive ?? new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification?.lastDismissedAt\n };\n }\n\n return trackedNotifications;\n};\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackNotificationAsDismissed = (\n notificationType: ErrorType | /* @conditional-compile-remove(notifications) */ NotificationType,\n trackedNotifications: TrackedNotifications\n): TrackedNotifications => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[notificationType];\n\n return {\n ...trackedNotifications,\n [notificationType]: {\n ...(existingNotification || {}),\n lastDismissedAt: now\n }\n };\n};\n"]}
1
+ {"version":3,"file":"TrackErrors.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/TrackErrors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAOlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,mBAAgE,EAChE,oBAA0C,EACG,EAAE;IAC/C,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,EAAE;QAC9E,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,CACL,CAAC,mBAAmB;YACpB,CAAC,mBAAmB,CAAC,eAAe;YACpC,mBAAmB,CAAC,eAAe,GAAG,mBAAmB,CAAC,kBAAkB,CAC7E,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,qBAAoE,CAAC;AAC9E,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,CAC/D,4BAAkD,EAClD,mBAAgE,EAC1C,EAAE;;IACxB,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,wIAAwI;IACxI,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;QACrD,MAAM,2BAA2B,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1F,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;YAC9C,kBAAkB,EAChB,MAAA,MAAA,kBAAkB,CAAC,SAAS,mCAAI,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAE,kBAAkB,mCAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACzG,eAAe,EAAE,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAE,eAAe;SAC9D,CAAC;IACJ,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,gBAA8C,EAC9C,oBAA0C,EACpB,EAAE;IACxB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAEpE,uCACK,oBAAoB,KACvB,CAAC,gBAAgB,CAAC,kCACb,CAAC,oBAAoB,IAAI,EAAE,CAAC,KAC/B,eAAe,EAAE,GAAG,OAEtB;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ActiveErrorMessage, ErrorType } from '@internal/react-components';\nimport { TrackedNotifications } from '../types/ErrorTracking';\n\nimport { NotificationType, ActiveNotification } from '@internal/react-components';\n\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestNotifications = (\n activeNotifications: ActiveErrorMessage[] | ActiveNotification[],\n trackedNotifications: TrackedNotifications\n): ActiveErrorMessage[] | ActiveNotification[] => {\n const filteredNotifications = activeNotifications.filter((activeNotification) => {\n const trackedNotification = trackedNotifications[activeNotification.type];\n return (\n !trackedNotification ||\n !trackedNotification.lastDismissedAt ||\n trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive\n );\n });\n return filteredNotifications as ActiveErrorMessage[] | ActiveNotification[];\n};\n\n/**\n * Maintain a record of the most recently active notification for each notification type.\n *\n * @private\n */\nexport const updateTrackedNotificationsWithActiveNotifications = (\n existingTrackedNotifications: TrackedNotifications,\n activeNotifications: ActiveErrorMessage[] | ActiveNotification[]\n): TrackedNotifications => {\n const trackedNotifications: TrackedNotifications = {};\n\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.type];\n trackedNotifications[activeNotification.type] = {\n mostRecentlyActive:\n activeNotification.timestamp ?? existingTrackedNotification?.mostRecentlyActive ?? new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification?.lastDismissedAt\n };\n }\n\n return trackedNotifications;\n};\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackNotificationAsDismissed = (\n notificationType: ErrorType | NotificationType,\n trackedNotifications: TrackedNotifications\n): TrackedNotifications => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[notificationType];\n\n return {\n ...trackedNotifications,\n [notificationType]: {\n ...(existingNotification || {}),\n lastDismissedAt: now\n }\n };\n};\n"]}