{"version":3,"file":"static/js/5425_83cc2094ad1122367b67.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/AvatarPersona.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/GlobalHostLayer.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/BaseComposite.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ContainerRectProps.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ControlBar/PeopleButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ControlBar/CustomButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/Drawer/captionSettingsDrawer.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionSettingsDrawer.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/MoreButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/PeoplePaneContent.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/ConvertContextualMenuItemToDrawerMenuItem.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/SidePaneHeader.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/TabHeader.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/icons.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/Composite.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/ModalLocalAndRemotePIP.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/styles/ParticipantContainer.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/common/utils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/localization/LocalizationProvider.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/CompositeLocale.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/CompositeLocale.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/localization/locales/index.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-composites/src/composites/localization/locales/utils.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Persona } from '@fluentui/react';\nimport React, { useEffect, useState } from 'react';\n/**\n * An Avatar component made using the `Persona` component.\n * It allows you to specify a `userId` and a `dataProvider` to retrieve the `AvatarPersonaData`.\n * Read more about `Persona` component at https://developer.microsoft.com/fluentui#/controls/web/persona\n *\n * @private\n */\nexport const AvatarPersona = (props) => {\n var _a, _b, _c, _d, _e, _f;\n const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;\n const [data, setData] = useState();\n useEffect(() => {\n (() => __awaiter(void 0, void 0, void 0, function* () {\n if (dataProvider && userId) {\n const newData = yield dataProvider(userId);\n if (avatarDeepDifferenceCheck(data, newData)) {\n setData(newData);\n }\n }\n }))();\n }, [data, dataProvider, userId]);\n return React.createElement(Persona, Object.assign({}, props, { text: (_a = data === null || data === void 0 ? void 0 : data.text) !== null && _a !== void 0 ? _a : text, imageUrl: (_b = data === null || data === void 0 ? void 0 : data.imageUrl) !== null && _b !== void 0 ? _b : imageUrl, imageInitials: (_c = data === null || data === void 0 ? void 0 : data.imageInitials) !== null && _c !== void 0 ? _c : imageInitials, initialsColor: (_d = data === null || data === void 0 ? void 0 : data.initialsColor) !== null && _d !== void 0 ? _d : initialsColor, initialsTextColor: (_f = (_e = data === null || data === void 0 ? void 0 : data.initialsTextColor) !== null && _e !== void 0 ? _e : initialsTextColor) !== null && _f !== void 0 ? _f : 'white', \n // default disable tooltip unless specified\n showOverflowTooltip: showOverflowTooltip !== null && showOverflowTooltip !== void 0 ? showOverflowTooltip : false }));\n};\nconst avatarDeepDifferenceCheck = (currentData, newData) => {\n return (currentData === null || currentData === void 0 ? void 0 : currentData.text) !== (newData === null || newData === void 0 ? void 0 : newData.text) || (currentData === null || currentData === void 0 ? void 0 : currentData.imageUrl) !== (newData === null || newData === void 0 ? void 0 : newData.imageUrl) || (currentData === null || currentData === void 0 ? void 0 : currentData.initialsColor) !== (newData === null || newData === void 0 ? void 0 : newData.initialsColor) || (currentData === null || currentData === void 0 ? void 0 : currentData.imageInitials) !== (newData === null || newData === void 0 ? void 0 : newData.imageInitials) || (currentData === null || currentData === void 0 ? void 0 : currentData.initialsTextColor) !== (newData === null || newData === void 0 ? void 0 : newData.initialsTextColor);\n};\n//# sourceMappingURL=AvatarPersona.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const globalLayerHostStyle = {\n position: 'fixed',\n zIndex: 1000000,\n inset: '0px',\n visibility: 'hidden'\n};\n//# sourceMappingURL=GlobalHostLayer.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Customizer, LayerHost, mergeStyles, registerIcons, Stack, useTheme } from '@fluentui/react';\nimport { FluentThemeProvider } from \"../../../../react-components/src\";\nimport React, { createContext, useContext } from 'react';\nimport { LocalizationProvider } from '../localization';\nimport { DEFAULT_COMPOSITE_ICONS } from './icons';\nimport { globalLayerHostStyle } from './styles/GlobalHostLayer.styles';\nimport { useId } from '@fluentui/react-hooks';\n/**\n * A base provider {@link React.Context} to wrap components with other required providers\n * (e.g. icons, FluentThemeProvider, LocalizationProvider).\n *\n * Required providers are only wrapped once, with all other instances only passing children.\n *\n * @private\n */\nexport const BaseProvider = (props) => {\n const { fluentTheme, rtl, locale } = props;\n const globalLayerHostId = useId('composite-global-hostId');\n /**\n * Pass only the children if we previously registered icons, and have previously wrapped the children in\n * FluentThemeProvider and LocalizationProvider\n */\n const alreadyWrapped = useBase();\n if (alreadyWrapped) {\n return React.createElement(React.Fragment, null, props.children);\n }\n /**\n * Before registering fluent icons, we should check DEFAULT_COMPOSITE_ICONS and strip out the key value pairs where value is undefined\n */\n const iconsToRegister = {};\n Object.entries(DEFAULT_COMPOSITE_ICONS).forEach(([key, value]) => {\n if (value) {\n iconsToRegister[key] = value;\n }\n });\n /**\n * We register the default icon mappings merged with custom icons provided through props\n * to ensure all icons render correctly.\n */\n registerIcons({\n icons: Object.assign(Object.assign({}, iconsToRegister), props.icons)\n });\n // we use Customizer to override default LayerHost injected to \n // which stop polluting global dom tree and increase compatibility with react-full-screen\n const CompositeElement = React.createElement(FluentThemeProvider, { fluentTheme: fluentTheme, rtl: rtl },\n React.createElement(\"meta\", { name: \"viewport\", content: \"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0\" }),\n React.createElement(Customizer, { scopedSettings: {\n Layer: {\n hostId: globalLayerHostId\n }\n } },\n React.createElement(WithBackgroundColor, null, props.children)),\n React.createElement(LayerHost, { id: globalLayerHostId, className: mergeStyles(globalLayerHostStyle) }));\n const localizedElement = locale ? LocalizationProvider({\n locale,\n children: CompositeElement\n }) : CompositeElement;\n return React.createElement(BaseContext.Provider, { value: true }, localizedElement);\n};\n/**\n * @private\n */\nconst BaseContext = createContext(false);\n/**\n * @private\n */\nconst useBase = () => useContext(BaseContext);\n/**\n * @private\n * Provides a wrapper with a background color to ensure that composites always have a background color.\n * This is necessary to ensure that composites are not transparent,\n * and the background color of it's parent elements doesn't show through the composite.\n */\nconst WithBackgroundColor = (props) => {\n const { children } = props;\n const theme = useTheme();\n const className = mergeStyles({\n background: theme.semanticColors.bodyBackground,\n height: '100%',\n width: '100%',\n position: 'relative'\n });\n return React.createElement(Stack, { className: className }, children);\n};\n//# sourceMappingURL=BaseComposite.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport React from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useCallback } from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { _StartCaptionsButton } from \"../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { useMemo } from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useAdaptedSelector } from '../CallComposite/hooks/useAdaptedSelector';\n/* @conditional-compile-remove(close-captions) */\nimport { useHandlers } from '../CallComposite/hooks/useHandlers';\n/* @conditional-compile-remove(close-captions) */\nimport { buttonFlyoutIncreasedSizeStyles } from '../CallComposite/styles/Buttons.styles';\n/* @conditional-compile-remove(close-captions) */\nimport { useLocale } from '../localization';\n/* @conditional-compile-remove(close-captions) */\nimport { MoreButton } from './MoreButton';\n/* @conditional-compile-remove(close-captions) */\nimport { _startCaptionsButtonSelector } from \"../../../../calling-component-bindings/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { _preventDismissOnEvent } from \"../../../../acs-ui-common/src\";\n/**\n *\n * @private\n */\nexport const CaptionsBannerMoreButton = (props) => {\n /* @conditional-compile-remove(close-captions) */\n const localeStrings = useLocale();\n /* @conditional-compile-remove(close-captions) */\n const startCaptionsButtonProps = useAdaptedSelector(_startCaptionsButtonSelector);\n /* @conditional-compile-remove(close-captions) */\n const startCaptionsButtonHandlers = useHandlers(_StartCaptionsButton);\n /* @conditional-compile-remove(close-captions) */\n const moreButtonStrings = useMemo(() => ({\n label: localeStrings.strings.call.captionsBannerMoreButtonCallingLabel,\n tooltipOffContent: localeStrings.strings.call.captionsBannerMoreButtonTooltip\n }), [localeStrings]);\n /* @conditional-compile-remove(close-captions) */\n const moreButtonContextualMenuItems = [];\n /* @conditional-compile-remove(close-captions) */\n const startCaptions = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n yield startCaptionsButtonHandlers.onStartCaptions({\n spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage\n });\n }), [startCaptionsButtonHandlers, startCaptionsButtonProps.currentSpokenLanguage]);\n /* @conditional-compile-remove(close-captions) */\n moreButtonContextualMenuItems.push({\n key: 'ToggleCaptionsKey',\n text: startCaptionsButtonProps.checked ? localeStrings.strings.call.startCaptionsButtonTooltipOnContent : localeStrings.strings.call.startCaptionsButtonTooltipOffContent,\n onClick: () => {\n startCaptionsButtonProps.checked ? startCaptionsButtonHandlers.onStopCaptions() : startCaptionsButtonProps.currentSpokenLanguage !== '' ? startCaptions() : props.onCaptionsSettingsClick && props.onCaptionsSettingsClick();\n },\n iconProps: {\n iconName: startCaptionsButtonProps.checked ? 'CaptionsOffIcon' : 'CaptionsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n }\n });\n /* @conditional-compile-remove(close-captions) */\n if (props.onCaptionsSettingsClick) {\n moreButtonContextualMenuItems.push({\n key: 'openCaptionsSettingsKey',\n id: 'common-call-composite-captions-settings-button',\n text: localeStrings.strings.call.captionsSettingsLabel,\n onClick: props.onCaptionsSettingsClick,\n iconProps: {\n iconName: 'CaptionsSettingsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: !startCaptionsButtonProps.checked\n });\n }\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(MoreButton, Object.assign({}, props, { \"data-ui-id\": \"captions-banner-more-button\", strings: moreButtonStrings, menuIconProps: {\n hidden: true\n }, menuProps: {\n items: moreButtonContextualMenuItems,\n calloutProps: {\n preventDismissOnEvent: _preventDismissOnEvent\n }\n } }));\n return React.createElement(React.Fragment, null);\n};\n//# sourceMappingURL=CaptionsBannerMoreButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useState, useEffect, useCallback } from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { _CaptionsBanner } from \"../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { mergeStyles, Stack } from '@fluentui/react';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsSettingsModal } from './CaptionsSettingsModal';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsBannerMoreButton } from './CaptionsBannerMoreButton';\n/* @conditional-compile-remove(close-captions) */\nimport { useAdaptedSelector } from '../CallComposite/hooks/useAdaptedSelector';\n/* @conditional-compile-remove(close-captions) */\nimport { useHandlers } from '../CallComposite/hooks/useHandlers';\n/* @conditional-compile-remove(close-captions) */\nimport { _captionsBannerSelector } from \"../../../../calling-component-bindings/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { useLocale } from '../localization';\n/* @conditional-compile-remove(close-captions) */\nimport { AvatarPersona } from './AvatarPersona';\n/* @conditional-compile-remove(close-captions) */\nconst mobileViewBannerWidth = '90%';\n/** @private */\nexport const CaptionsBanner = (props) => {\n /* @conditional-compile-remove(close-captions) */\n const captionsBannerProps = useAdaptedSelector(_captionsBannerSelector);\n /* @conditional-compile-remove(close-captions) */\n const handlers = useHandlers(_CaptionsBanner);\n /* @conditional-compile-remove(close-captions) */\n const [isCaptionsSettingsOpen, setIsCaptionsSettingsOpen] = useState(false);\n /* @conditional-compile-remove(close-captions) */\n const onClickCaptionsSettings = () => {\n setIsCaptionsSettingsOpen(true);\n };\n /* @conditional-compile-remove(close-captions) */\n const onDismissCaptionsSettings = () => {\n setIsCaptionsSettingsOpen(false);\n };\n /* @conditional-compile-remove(close-captions) */\n const containerClassName = mergeStyles({\n position: 'relative'\n });\n /* @conditional-compile-remove(close-captions) */\n const floatingChildClassName = mergeStyles({\n position: 'absolute',\n right: 0,\n top: 0\n });\n /* @conditional-compile-remove(close-captions) */\n const strings = useLocale().strings.call;\n /* @conditional-compile-remove(close-captions) */\n const captionsBannerStrings = {\n captionsBannerSpinnerText: strings.captionsBannerSpinnerText\n };\n /* @conditional-compile-remove(close-captions) */\n const onRenderAvatar = useCallback((userId, options) => {\n return React.createElement(AvatarPersona, Object.assign({ userId: userId }, options, { dataProvider: props.onFetchAvatarPersonaData }));\n }, [props.onFetchAvatarPersonaData]);\n /* @conditional-compile-remove(close-captions) */\n const { innerWidth: width } = window;\n /* @conditional-compile-remove(close-captions) */\n const [windowWidth, setWindowWidth] = useState(width);\n /* @conditional-compile-remove(close-captions) */\n useEffect(() => {\n function handleResize() {\n setWindowWidth(window.innerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n /* @conditional-compile-remove(close-captions) */\n const desktopViewBannerWidth = windowWidth > 620 ? '35rem' : '80%';\n return React.createElement(React.Fragment, null,\n isCaptionsSettingsOpen && React.createElement(CaptionsSettingsModal, { showCaptionsSettingsModal: isCaptionsSettingsOpen, onDismissCaptionsSettings: onDismissCaptionsSettings, changeCaptionLanguage: true }),\n React.createElement(\"div\", { className: containerClassName },\n React.createElement(Stack, { horizontalAlign: \"center\" },\n React.createElement(Stack.Item, { style: {\n width: props.isMobile ? mobileViewBannerWidth : desktopViewBannerWidth\n } },\n React.createElement(_CaptionsBanner, Object.assign({}, captionsBannerProps, handlers, { onRenderAvatar: onRenderAvatar, formFactor: props.isMobile ? 'compact' : 'default', strings: captionsBannerStrings })))),\n !props.isMobile && captionsBannerProps.isCaptionsOn && React.createElement(\"div\", { className: floatingChildClassName },\n React.createElement(CaptionsBannerMoreButton, { onCaptionsSettingsClick: onClickCaptionsSettings }))));\n};\n//# sourceMappingURL=CaptionsBanner.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { _CaptionsSettingsModal } from \"../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { useAdaptedSelector } from '../CallComposite/hooks/useAdaptedSelector';\n/* @conditional-compile-remove(close-captions) */\nimport { useHandlers } from '../CallComposite/hooks/useHandlers';\n/* @conditional-compile-remove(close-captions) */\nimport { useLocale } from '../localization';\n/* @conditional-compile-remove(close-captions) */\nimport { _captionSettingsSelector } from \"../../../../calling-component-bindings/src\";\n/** @private */\nexport const CaptionsSettingsModal = (props) => {\n /* @conditional-compile-remove(close-captions) */\n const CaptionsSettingsModalProps = useAdaptedSelector(_captionSettingsSelector);\n /* @conditional-compile-remove(close-captions) */\n const handlers = useHandlers(_CaptionsSettingsModal);\n /* @conditional-compile-remove(close-captions) */\n const strings = useLocale().strings.call;\n /* @conditional-compile-remove(close-captions) */\n const modalStrings = {\n captionsSettingsModalTitle: strings.captionsSettingsModalTitle,\n captionsSettingsSpokenLanguageDropdownLabel: strings.captionsSettingsSpokenLanguageDropdownLabel,\n captionsSettingsCaptionLanguageDropdownLabel: strings.captionsSettingsCaptionLanguageDropdownLabel,\n captionsSettingsSpokenLanguageDropdownInfoText: strings.captionsSettingsSpokenLanguageDropdownInfoText,\n captionsSettingsCaptionLanguageDropdownInfoText: strings.captionsSettingsCaptionLanguageDropdownInfoText,\n captionsSettingsConfirmButtonLabel: strings.captionsSettingsConfirmButtonLabel,\n captionsSettingsCancelButtonLabel: strings.captionsSettingsCancelButtonLabel,\n captionsSettingsModalAriaLabel: strings.captionsSettingsModalAriaLabel,\n captionsSettingsCloseModalButtonAriaLabel: strings.captionsSettingsCloseModalButtonAriaLabel\n };\n /* @conditional-compile-remove(close-captions) */\n const spokenLanguageStrings = strings.spokenLanguageStrings;\n /* @conditional-compile-remove(close-captions) */\n const captionLanguageStrings = strings.captionLanguageStrings;\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(_CaptionsSettingsModal, Object.assign({}, CaptionsSettingsModalProps, handlers, { strings: modalStrings, spokenLanguageStrings: spokenLanguageStrings, captionLanguageStrings: captionLanguageStrings, showModal: props.showCaptionsSettingsModal, onDismissCaptionsSettings: props.onDismissCaptionsSettings, changeCaptionLanguage: props.changeCaptionLanguage }));\n return React.createElement(React.Fragment, null);\n};\n//# sourceMappingURL=CaptionsSettingsModal.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** @private */\nexport const containerDivStyles = {\n position: 'relative',\n width: '100%',\n height: '100%'\n};\n//# sourceMappingURL=ContainerRectProps.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo } from 'react';\nimport { ControlBarButton, useTheme } from \"../../../../../react-components/src\";\nimport { concatStyleSets } from '@fluentui/react';\nimport { CallCompositeIcon } from '../icons';\nconst icon = () => React.createElement(CallCompositeIcon, { iconName: 'ControlBarPeopleButton' });\n/**\n * @private\n */\nexport const PeopleButton = (props) => {\n const { strings, onRenderOnIcon, onRenderOffIcon, onClick } = props;\n const theme = useTheme();\n const styles = useMemo(() => {\n var _a;\n return concatStyleSets({\n rootChecked: {\n background: theme.palette.neutralLight\n }\n }, (_a = props.styles) !== null && _a !== void 0 ? _a : {});\n }, [props.styles, theme.palette.neutralLight]);\n return React.createElement(ControlBarButton, Object.assign({}, props, { strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: onRenderOnIcon !== null && onRenderOnIcon !== void 0 ? onRenderOnIcon : icon, onRenderOffIcon: onRenderOffIcon !== null && onRenderOffIcon !== void 0 ? onRenderOffIcon : icon, onClick: onClick, styles: styles }));\n};\n//# sourceMappingURL=PeopleButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/* @conditional-compile-remove(close-captions) */\nimport { _StartCaptionsButton } from \"../../../../../react-components/src\";\nimport React from 'react';\n/* @conditional-compile-remove(gallery-layouts) */\nimport { useState } from 'react';\n/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */\nimport { useMemo, useCallback } from 'react';\n/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */\n/* @conditional-compile-remove(close-captions) */\nimport { buttonFlyoutIncreasedSizeStyles } from '../../CallComposite/styles/Buttons.styles';\nimport { MoreButton } from '../MoreButton';\n/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */\nimport { useLocale } from '../../localization';\n/* @conditional-compile-remove(control-bar-button-injection) */\nimport { CUSTOM_BUTTON_OPTIONS, generateCustomCallDesktopOverflowButtons, onFetchCustomButtonPropsTrampoline } from './CustomButton';\n/* @conditional-compile-remove(close-captions) */\nimport { useHandlers } from '../../CallComposite/hooks/useHandlers';\n/* @conditional-compile-remove(close-captions) */\nimport { _startCaptionsButtonSelector } from \"../../../../../calling-component-bindings/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { useAdaptedSelector } from '../../CallComposite/hooks/useAdaptedSelector';\nimport { _preventDismissOnEvent } from \"../../../../../acs-ui-common/src\";\n/**\n *\n * @private\n */\nexport const DesktopMoreButton = (props) => {\n var _a;\n /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */\n const localeStrings = useLocale();\n /* @conditional-compile-remove(close-captions) */\n const startCaptionsButtonProps = useAdaptedSelector(_startCaptionsButtonSelector);\n /* @conditional-compile-remove(close-captions) */\n const startCaptionsButtonHandlers = useHandlers(_StartCaptionsButton);\n /* @conditional-compile-remove(close-captions) */\n const startCaptions = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n yield startCaptionsButtonHandlers.onStartCaptions({\n spokenLanguage: startCaptionsButtonProps.currentSpokenLanguage\n });\n }), [startCaptionsButtonHandlers, startCaptionsButtonProps.currentSpokenLanguage]);\n /* @conditional-compile-remove(gallery-layouts) */\n const [focusedContentOn, setFocusedContentOn] = useState(false);\n /* @conditional-compile-remove(gallery-layouts) */\n const [previousLayout, setPreviousLayout] = useState((_a = props.userSetGalleryLayout) !== null && _a !== void 0 ? _a : 'floatingLocalVideo');\n /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */\n const moreButtonStrings = useMemo(() => ({\n label: localeStrings.strings.call.moreButtonCallingLabel,\n tooltipOffContent: localeStrings.strings.callWithChat.moreDrawerButtonTooltip\n }), [localeStrings]);\n const moreButtonContextualMenuItems = [];\n /* @conditional-compile-remove(close-captions) */ /* @conditional-compile-remove(gallery-layouts) */\n const menuSubIconStyleSet = {\n root: {\n height: 'unset',\n lineHeight: '100%',\n width: '1.25rem'\n }\n };\n // is captions feature is active\n /* @conditional-compile-remove(close-captions) */\n if (props.isCaptionsSupported) {\n const captionsContextualMenuItems = [];\n moreButtonContextualMenuItems.push({\n key: 'liveCaptionsKey',\n id: 'common-call-composite-captions-button',\n text: localeStrings.strings.call.liveCaptionsLabel,\n iconProps: {\n iconName: 'CaptionsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: props.disableButtonsForHoldScreen,\n subMenuProps: {\n id: 'captions-contextual-menu',\n items: captionsContextualMenuItems,\n calloutProps: {\n preventDismissOnEvent: _preventDismissOnEvent\n }\n },\n submenuIconProps: {\n iconName: 'HorizontalGalleryRightButton',\n styles: menuSubIconStyleSet\n }\n });\n captionsContextualMenuItems.push({\n key: 'ToggleCaptionsKey',\n id: 'common-call-composite-captions-toggle-button',\n text: startCaptionsButtonProps.checked ? localeStrings.strings.call.startCaptionsButtonTooltipOnContent : localeStrings.strings.call.startCaptionsButtonTooltipOffContent,\n onClick: () => {\n startCaptionsButtonProps.checked ? startCaptionsButtonHandlers.onStopCaptions() : startCaptionsButtonProps.currentSpokenLanguage !== '' ? startCaptions() : props.onCaptionsSettingsClick && props.onCaptionsSettingsClick();\n },\n iconProps: {\n iconName: startCaptionsButtonProps.checked ? 'CaptionsOffIcon' : 'CaptionsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: props.disableButtonsForHoldScreen\n });\n if (props.onCaptionsSettingsClick) {\n captionsContextualMenuItems.push({\n key: 'openCaptionsSettingsKey',\n id: 'common-call-composite-captions-settings-button',\n text: localeStrings.strings.call.captionsSettingsLabel,\n onClick: props.onCaptionsSettingsClick,\n iconProps: {\n iconName: 'CaptionsSettingsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n disabled: props.disableButtonsForHoldScreen || !startCaptionsButtonProps.checked\n });\n }\n }\n /* @conditional-compile-remove(gallery-layouts) */\n if (props.onUserSetOverflowGalleryPositionChange) {\n const galleryOptions = {\n key: 'overflowGalleryPositionKey',\n iconProps: {\n iconName: 'GalleryOptions',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n submenuIconProps: {\n styles: menuSubIconStyleSet\n },\n text: localeStrings.strings.call.moreButtonGalleryControlLabel,\n disabled: props.disableButtonsForHoldScreen,\n subMenuProps: {\n items: [{\n key: 'dynamicSelectionKey',\n text: localeStrings.strings.call.moreButtonGalleryFloatingLocalLayoutLabel,\n canCheck: true,\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n isChecked: props.userSetGalleryLayout === 'floatingLocalVideo',\n onClick: () => {\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('floatingLocalVideo');\n setFocusedContentOn(false);\n },\n iconProps: {\n iconName: 'FloatingLocalVideoGalleryLayout',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n }, {\n key: 'speakerSelectionKey',\n text: localeStrings.strings.call.moreButtonGallerySpeakerLayoutLabel,\n canCheck: true,\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n isChecked: props.userSetGalleryLayout === 'speaker',\n onClick: () => {\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('speaker');\n setFocusedContentOn(false);\n },\n iconProps: {\n iconName: 'SpeakerGalleryLayout',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n }, {\n key: 'focusedContentSelectionKey',\n text: localeStrings.strings.call.moreButtonGalleryFocusedContentLayoutLabel,\n canCheck: true,\n itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n },\n isChecked: focusedContentOn,\n onClick: () => {\n var _a;\n if (focusedContentOn === false) {\n setPreviousLayout((_a = props.userSetGalleryLayout) !== null && _a !== void 0 ? _a : 'floatingLocalVideo');\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('focusedContent');\n setFocusedContentOn(true);\n }\n else {\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout(previousLayout);\n setFocusedContentOn(false);\n }\n },\n iconProps: {\n iconName: 'FocusedContentGalleryLayout',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n }],\n calloutProps: {\n preventDismissOnEvent: _preventDismissOnEvent\n }\n }\n };\n /* @conditional-compile-remove(gallery-layouts) */\n moreButtonContextualMenuItems.push(galleryOptions);\n }\n /* @conditional-compile-remove(control-bar-button-injection) */\n const customDrawerButtons = useMemo(() => generateCustomCallDesktopOverflowButtons(onFetchCustomButtonPropsTrampoline(typeof props.callControls === 'object' ? props.callControls : undefined), typeof props.callControls === 'object' ? props.callControls.displayType : undefined), [props.callControls]);\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['primary'].slice(CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).forEach(element => {\n moreButtonContextualMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['secondary'].slice(CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).forEach(element => {\n moreButtonContextualMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['overflow'].forEach(element => {\n moreButtonContextualMenuItems.push(Object.assign({ itemProps: {\n styles: buttonFlyoutIncreasedSizeStyles\n } }, element));\n });\n return React.createElement(MoreButton, Object.assign({}, props, { \"data-ui-id\": \"common-call-composite-more-button\", \n /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */ strings: moreButtonStrings, menuIconProps: {\n hidden: true\n }, menuProps: {\n items: moreButtonContextualMenuItems,\n calloutProps: {\n preventDismissOnEvent: _preventDismissOnEvent\n }\n } }));\n};\n//# sourceMappingURL=DesktopMoreButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton } from '@fluentui/react';\nimport React from 'react';\nimport { useEffect, useState } from 'react';\n/**\n * @private\n * hidden button to set first tab keypress focus on a specific grouping.\n * On mount, button is autofocused then immediately hidden\n */\nexport const HiddenFocusStartPoint = () => {\n const [isMounted, setIsMounted] = useState(false);\n useEffect(() => {\n setIsMounted(true);\n }, []);\n return React.createElement(DefaultButton, { autoFocus: true, ariaHidden: true, styles: isMounted ? invisibleHiddenFocusStartPoint : hiddenFocusStartPointStyles, tabIndex: -1 });\n};\n/** @private */\nconst hiddenFocusStartPointStyles = {\n root: {\n width: '0',\n height: '0',\n margin: '0',\n minHeight: '0',\n minWidth: '0',\n maxHeight: '0',\n maxWidth: '0',\n opacity: '0',\n outline: 'none',\n padding: '0',\n position: 'absolute'\n }\n};\n/** @private */\nconst invisibleHiddenFocusStartPoint = {\n root: {\n display: 'none'\n }\n};\n//# sourceMappingURL=HiddenFocusStartPoint.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo, useRef, useEffect, useState, useCallback } from 'react';\nimport { CallAdapterProvider } from '../../CallComposite/adapter/CallAdapterProvider';\nimport { PeopleButton } from './PeopleButton';\nimport { concatStyleSets, mergeStyles, mergeStyleSets, Stack, useTheme } from '@fluentui/react';\nimport { controlBarContainerStyles } from '../../CallComposite/styles/CallControls.styles';\nimport { callControlsContainerStyles } from '../../CallComposite/styles/CallPage.styles';\nimport { useCallWithChatCompositeStrings } from '../../CallWithChatComposite/hooks/useCallWithChatCompositeStrings';\nimport { ControlBar } from \"../../../../../react-components/src\";\nimport { Microphone } from '../../CallComposite/components/buttons/Microphone';\nimport { Camera } from '../../CallComposite/components/buttons/Camera';\nimport { ScreenShare } from '../../CallComposite/components/buttons/ScreenShare';\nimport { EndCall } from '../../CallComposite/components/buttons/EndCall';\nimport { MoreButton } from '../MoreButton';\nimport { CUSTOM_BUTTON_OPTIONS, generateCustomCallControlBarButton, onFetchCustomButtonPropsTrampoline } from './CustomButton';\n/*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */\nimport { DesktopMoreButton } from './DesktopMoreButton';\nimport { isDisabled } from '../../CallComposite/utils';\nimport { HiddenFocusStartPoint } from '../HiddenFocusStartPoint';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsSettingsModal } from '../CaptionsSettingsModal';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaiseHand } from '../../CallComposite/components/buttons/RaiseHand';\nconst inferCommonCallControlOptions = (mobileView, commonCallControlOptions) => {\n if (commonCallControlOptions === false) {\n return false;\n }\n const options = commonCallControlOptions === true || commonCallControlOptions === undefined ? {} : commonCallControlOptions;\n if (mobileView) {\n // Set to compressed mode when composite is optimized for mobile\n options.displayType = 'compact';\n // Do not show screen share button when composite is optimized for mobile unless the developer\n // has explicitly opted in.\n if (options.screenShareButton !== true) {\n options.screenShareButton = false;\n }\n }\n return options;\n};\n/**\n * @private\n */\nexport const CommonCallControlBar = (props) => {\n var _a, _b;\n const theme = useTheme();\n const rtl = theme.rtl;\n const controlBarContainerRef = useRef(null);\n const sidepaneControlsRef = useRef(null);\n const controlBarSizeRef = useRef(null);\n const [controlBarButtonsWidth, setControlBarButtonsWidth] = useState(0);\n const [panelsButtonsWidth, setPanelsButtonsWidth] = useState(0);\n const [controlBarContainerWidth, setControlBarContainerWidth] = useState(0);\n const [totalButtonsWidth, setTotalButtonsWidth] = useState(0);\n const [isOutOfSpace, setIsOutOfSpace] = useState(false);\n const callWithChatStrings = useCallWithChatCompositeStrings();\n const options = inferCommonCallControlOptions(props.mobileView, props.callControls);\n /* @conditional-compile-remove(close-captions) */\n const [showCaptionsSettingsModal, setShowCaptionsSettingsModal] = useState(false);\n const handleResize = useCallback(() => {\n setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n }, []);\n // on load set inital width\n useEffect(() => {\n setControlBarButtonsWidth(controlBarContainerRef.current ? controlBarContainerRef.current.offsetWidth : 0);\n setPanelsButtonsWidth(sidepaneControlsRef.current ? sidepaneControlsRef.current.offsetWidth : 0);\n setControlBarContainerWidth(controlBarSizeRef.current ? controlBarSizeRef.current.offsetWidth : 0);\n }, []);\n // get the current width of control bar buttons and panel control buttons when browser size change\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [handleResize]);\n /* when size change, reset total buttons width and compare with the control bar container width\n if the total width of those buttons exceed container width, do not center the control bar buttons based on parent container width\n Instead let them take up the remaining white space on the left */\n useEffect(() => {\n // white space on the left when control bar buttons are centered based on container width + control bar buttons width + panel control buttons width\n setTotalButtonsWidth((controlBarContainerWidth - controlBarButtonsWidth) / 2 + controlBarButtonsWidth + panelsButtonsWidth);\n }, [controlBarButtonsWidth, panelsButtonsWidth, controlBarContainerWidth]);\n useEffect(() => {\n setIsOutOfSpace(totalButtonsWidth > controlBarContainerWidth);\n }, [totalButtonsWidth, controlBarContainerWidth]);\n /* @conditional-compile-remove(close-captions) */\n const openCaptionsSettingsModal = useCallback(() => {\n setShowCaptionsSettingsModal(true);\n }, []);\n /* @conditional-compile-remove(close-captions) */\n const onDismissCaptionsSettings = useCallback(() => {\n setShowCaptionsSettingsModal(false);\n }, []);\n const peopleButtonStrings = useMemo(() => ({\n label: callWithChatStrings.peopleButtonLabel,\n selectedLabel: callWithChatStrings.selectedPeopleButtonLabel,\n tooltipOffContent: callWithChatStrings.peopleButtonTooltipOpen,\n tooltipOnContent: callWithChatStrings.peopleButtonTooltipClose\n }), [callWithChatStrings]);\n const moreButtonStrings = useMemo(() => ({\n label: callWithChatStrings.moreDrawerButtonLabel,\n tooltipContent: callWithChatStrings.moreDrawerButtonTooltip\n }), [callWithChatStrings]);\n const centerContainerStyles = useMemo(() => {\n const styles = !props.mobileView ? desktopControlBarStyles : {};\n return mergeStyleSets(styles, {\n root: {\n // Enforce a background color on control bar to ensure it matches the composite background color.\n background: theme.semanticColors.bodyBackground\n }\n });\n }, [props.mobileView, theme.semanticColors.bodyBackground]);\n const screenShareButtonStyles = useMemo(() => !props.mobileView ? getDesktopScreenShareButtonStyles(theme) : undefined, [props.mobileView, theme]);\n const commonButtonStyles = useMemo(() => !props.mobileView ? getDesktopCommonButtonStyles(theme) : undefined, [props.mobileView, theme]);\n const endCallButtonStyles = useMemo(() => !props.mobileView ? getDesktopEndCallButtonStyles(theme) : undefined, [props.mobileView, theme]);\n const controlBarWrapperDesktopStyles = useMemo(\n // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n () => !props.mobileView && !isOutOfSpace ? rtl ? wrapperDesktopRtlStyles : wrapperDesktopStyles : {}, [props.mobileView, rtl, isOutOfSpace]);\n // only center control bar buttons based on parent container if there are enough space on the screen and not mobile\n const controlBarDesktopContainerStyles = useMemo(() => !props.mobileView && !isOutOfSpace ? {\n position: 'relative',\n minHeight: '4.5rem',\n width: '100%'\n } : {}, [props.mobileView, isOutOfSpace]);\n const customButtons = useMemo(() => generateCustomCallControlBarButton(onFetchCustomButtonPropsTrampoline(options !== false ? options : undefined), options !== false ? options === null || options === void 0 ? void 0 : options.displayType : undefined), [options]);\n // when options is false then we want to hide the whole control bar.\n if (options === false) {\n return React.createElement(React.Fragment, null);\n }\n const sideButtonsPresent = isEnabled(options.peopleButton) || isEnabled(options.chatButton) || customButtons['secondary'] !== undefined;\n const screenShareButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.screenShareButton);\n const microphoneButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.microphoneButton);\n const cameraButtonIsEnabled = isEnabled(options === null || options === void 0 ? void 0 : options.cameraButton);\n const showDesktopMoreButton = /*@conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */ isEnabled(options === null || options === void 0 ? void 0 : options.moreButton) && (false || /* @conditional-compile-remove(close-captions) */ props.isCaptionsSupported || /* @conditional-compile-remove(gallery-layouts) */ props.onUserSetGalleryLayout);\n return React.createElement(\"div\", { ref: controlBarSizeRef },\n React.createElement(CallAdapterProvider, { adapter: props.callAdapter }, /* @conditional-compile-remove(close-captions) */ showCaptionsSettingsModal && React.createElement(CaptionsSettingsModal, { showCaptionsSettingsModal: showCaptionsSettingsModal, onDismissCaptionsSettings: onDismissCaptionsSettings, changeCaptionLanguage: props.isCaptionsOn })),\n React.createElement(Stack, { horizontal: true, reversed: !props.mobileView && !isOutOfSpace, horizontalAlign: \"space-between\", className: mergeStyles(callControlsContainerStyles, controlBarContainerStyles, controlBarDesktopContainerStyles) },\n React.createElement(Stack.Item, { grow: true, className: mergeStyles(controlBarWrapperDesktopStyles) },\n React.createElement(CallAdapterProvider, { adapter: props.callAdapter },\n React.createElement(Stack, { horizontalAlign: \"center\" },\n React.createElement(HiddenFocusStartPoint, null),\n React.createElement(Stack.Item, null,\n React.createElement(\"div\", { ref: controlBarContainerRef },\n React.createElement(ControlBar, { layout: props.displayVertical ? 'vertical' : 'horizontal', styles: centerContainerStyles },\n microphoneButtonIsEnabled && React.createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView, disableTooltip: props.mobileView }),\n cameraButtonIsEnabled && React.createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView, onClickVideoEffects: props.onClickVideoEffects, componentRef: props.cameraButtonRef, disableTooltip: props.mobileView }),\n !props.mobileView && isEnabled(options.raiseHandButton) && React.createElement(RaiseHand, { displayType: options.displayType, styles: commonButtonStyles }),\n screenShareButtonIsEnabled && React.createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles }), (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :\n _a.slice(0, props.mobileView ? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS : CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {\n return React.createElement(CustomButton, { key: `primary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact', disableTooltip: props.mobileView });\n }),\n props.mobileView && React.createElement(MoreButton, { \"data-ui-id\": \"common-call-composite-more-button\", strings: moreButtonStrings, onClick: props.onMoreButtonClicked, disabled: props.disableButtonsForLobbyPage, disableTooltip: props.mobileView }),\n !props.mobileView && showDesktopMoreButton && React.createElement(DesktopMoreButton, { disableButtonsForHoldScreen: props.disableButtonsForHoldScreen, styles: commonButtonStyles, callControls: props.callControls, \n /* @conditional-compile-remove(close-captions) */ isCaptionsSupported: props.isCaptionsSupported, \n /* @conditional-compile-remove(close-captions) */ onCaptionsSettingsClick: openCaptionsSettingsModal, \n /* @conditional-compile-remove(gallery-layouts) */ onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange, \n /* @conditional-compile-remove(gallery-layouts) */ onUserSetGalleryLayout: props.onUserSetGalleryLayout, \n /* @conditional-compile-remove(gallery-layouts) */ userSetGalleryLayout: props.userSetGalleryLayout }),\n React.createElement(EndCall, { displayType: \"compact\", styles: endCallButtonStyles }))))))),\n !props.mobileView && sideButtonsPresent && React.createElement(Stack.Item, null,\n React.createElement(\"div\", { ref: sidepaneControlsRef },\n React.createElement(Stack, { horizontal: true, className: !props.mobileView ? mergeStyles(desktopButtonContainerStyle) : undefined },\n isEnabled(options === null || options === void 0 ? void 0 : options.peopleButton) && React.createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: props.peopleButtonChecked ? peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.selectedLabel : peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, \"data-ui-id\": \"common-call-composite-people-button\", disabled: props.disableButtonsForLobbyPage || props.disableButtonsForHoldScreen || isDisabled(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef }), (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :\n _b.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {\n return React.createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' });\n }))))));\n};\nconst desktopButtonContainerStyle = {\n padding: '0.75rem',\n columnGap: '0.5rem'\n};\nconst desktopControlBarStyles = {\n root: desktopButtonContainerStyle\n};\n{\n /*\n Styling here to ensure the control bar buttons stay in the center of the parent component (control Container) regardless of its siblings\n Need to add 'reversed' to parent container because the styling here reverse the position of the two stack items\n */\n}\nconst wrapperDesktopStyles = {\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, 0)'\n};\nconst wrapperDesktopRtlStyles = {\n position: 'absolute',\n right: '50%',\n transform: 'translate(-50%, 0)'\n};\n/** @private */\nexport const getDesktopCommonButtonStyles = (theme) => ({\n root: {\n border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n borderRadius: theme.effects.roundedCorner4,\n minHeight: '2.5rem',\n maxWidth: '12rem' // allot extra space than the regular ControlBarButton. This is to give extra room to have the icon beside the text.\n },\n flexContainer: {\n display: 'flex',\n flexFlow: 'row nowrap'\n },\n textContainer: {\n // Override the default so that label doesn't introduce a new block.\n display: 'inline',\n // Ensure width is set to permit child to show ellipsis when there is a label that is too long\n maxWidth: '100%'\n },\n label: {\n fontSize: theme.fonts.medium.fontSize,\n // Ensure there is enough space between the icon and text to allow for the unread messages badge in the chat button\n marginLeft: '0.625rem',\n // Ensure letters that go above and below the standard text line like 'g', 'y', 'j' are not clipped\n lineHeight: '1.5rem',\n // Do not allow very long button texts to ruin the control bar experience, instead ensure long text is truncated and shows ellipsis\n display: 'block',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n },\n splitButtonMenuButton: {\n border: `solid 1px ${theme.palette.neutralQuaternaryAlt}`,\n borderTopRightRadius: theme.effects.roundedCorner4,\n borderBottomRightRadius: theme.effects.roundedCorner4,\n borderTopLeftRadius: '0',\n borderBottomLeftRadius: '0'\n },\n splitButtonMenuButtonChecked: {\n // Default colors the menu half similarly for :hover and when button is checked.\n // To align with how the left-half is styled, override the checked style.\n background: 'none'\n }\n});\nconst getDesktopScreenShareButtonStyles = (theme) => {\n const overrideStyles = {\n border: 'none',\n background: theme.palette.themePrimary,\n color: theme.palette.white,\n '* > svg': {\n fill: theme.palette.white\n },\n '@media (forced-colors: active)': {\n border: '1px solid',\n borderColor: theme.palette.black\n }\n };\n const overrides = {\n rootChecked: overrideStyles,\n rootCheckedHovered: overrideStyles\n };\n return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\nconst getDesktopEndCallButtonStyles = (theme) => {\n const overrides = {\n root: {\n // Suppress border around the dark-red button.\n border: 'none'\n },\n rootFocused: {\n '@media (forced-colors: active)': {\n background: 'highlight',\n color: 'highlightText',\n borderColor: theme.palette.black,\n borderRadius: 'unset',\n outline: `3px solid ${theme.palette.black}`\n }\n },\n icon: {\n '@media (forced-colors: active)': {\n ':focused': {\n color: theme.palette.white\n }\n }\n }\n };\n return concatStyleSets(getDesktopCommonButtonStyles(theme), overrides);\n};\nconst isEnabled = (option) => option !== false;\n//# sourceMappingURL=CommonCallControlBar.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// eslint-disable-next-line no-restricted-imports\nimport { Icon, mergeStyleSets } from '@fluentui/react';\nimport { ControlBarButton } from \"../../../../../react-components/src\";\nimport React from 'react';\n/**\n * Max number of Custom Buttons in primary and secondary ControlBar\n * Does not include existing buttons in the controlBar.\n *\n * @private\n */\nexport const CUSTOM_BUTTON_OPTIONS = {\n MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS: 3,\n MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS: 1,\n MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS: 2\n};\n/** @private */\nexport const generateCustomCallControlBarButton = (onFetchCustomButtonProps, displayType) => {\n const allButtonProps = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map(callback => callback({\n displayType\n }));\n return {\n primary: generateCustomControlBarButtons('primary', allButtonProps),\n secondary: generateCustomControlBarButtons('secondary', allButtonProps),\n overflow: generateCustomControlBarButtons('overflow', allButtonProps)\n };\n};\n/** @private */\nconst generateCustomControlBarButtons = (placement, customButtons) => customButtons ? customButtons.filter(buttonProps => buttonProps.placement === placement).map((buttonProps, i) => internalProps => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (buttonProps['onRenderButton']) {\n return buttonProps['onRenderButton'](internalProps);\n }\n return React.createElement(ControlBarButton, { ariaDescription: (_b = (_a = buttonProps.strings) === null || _a === void 0 ? void 0 : _a.ariaDescription) !== null && _b !== void 0 ? _b : internalProps.ariaDescription, ariaLabel: (_f = (_d = (_c = buttonProps.strings) === null || _c === void 0 ? void 0 : _c.ariaLabel) !== null && _d !== void 0 ? _d : (_e = buttonProps.strings) === null || _e === void 0 ? void 0 : _e.tooltipContent) !== null && _f !== void 0 ? _f : internalProps.ariaLabel, disabled: (_g = buttonProps.disabled) !== null && _g !== void 0 ? _g : internalProps.disabled, id: (_h = buttonProps.id) !== null && _h !== void 0 ? _h : internalProps.id, key: `${buttonProps.placement}_${i}`, onClick: (_j = buttonProps.onItemClick) !== null && _j !== void 0 ? _j : internalProps.onClick, onRenderIcon: () => { var _a, _b, _c; return React.createElement(Icon, { iconName: (_c = (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : (_b = internalProps.iconProps) === null || _b === void 0 ? void 0 : _b.iconName) !== null && _c !== void 0 ? _c : 'DefaultCustomButton' }); }, showLabel: (_k = buttonProps.showLabel) !== null && _k !== void 0 ? _k : internalProps.showLabel, styles: mergeStyleSets(internalProps.styles), strings: buttonProps.strings });\n}) : [];\n/** @private */\nconst generateCustomDrawerButtons = (placement, customButtons) => customButtons ? customButtons.filter(buttonProps => buttonProps.placement === placement).map((buttonProps, i) => {\n var _a, _b;\n return (Object.assign(Object.assign({}, buttonProps), { disabled: buttonProps.disabled, iconProps: {\n iconName: (_a = buttonProps.iconName) !== null && _a !== void 0 ? _a : 'DefaultCustomButton',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }, id: buttonProps.id, itemKey: `${buttonProps.placement}_${i}`, onItemClick: buttonProps.onItemClick, text: (_b = buttonProps.strings) === null || _b === void 0 ? void 0 : _b.label }));\n}) : [];\n/** @private */\nexport const generateCustomCallDrawerButtons = (onFetchCustomButtonProps, displayType) => {\n const customButtons = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map(callback => callback({\n displayType\n }));\n return {\n primary: generateCustomDrawerButtons('primary', customButtons),\n secondary: generateCustomDrawerButtons('secondary', customButtons),\n overflow: generateCustomDrawerButtons('overflow', customButtons)\n };\n};\n/** @private */\nexport const generateCustomCallDesktopOverflowButtons = (onFetchCustomButtonProps, displayType) => {\n const customButtons = onFetchCustomButtonProps === null || onFetchCustomButtonProps === void 0 ? void 0 : onFetchCustomButtonProps.map(callback => callback({\n displayType\n }));\n return {\n primary: generateCustomDrawerButtons('primary', customButtons).map(drawerMenuItemToContextualMenuItem),\n secondary: generateCustomDrawerButtons('secondary', customButtons).map(drawerMenuItemToContextualMenuItem),\n overflow: generateCustomDrawerButtons('overflow', customButtons).map(drawerMenuItemToContextualMenuItem)\n };\n};\n/** @private */\nexport const drawerMenuItemToContextualMenuItem = (item) => (Object.assign(Object.assign({}, item), { key: item.itemKey, onClick: item.onItemClick ? ev => {\n var _a;\n (_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, ev);\n } : undefined, subMenuProps: item.subMenuProps ? {\n items: item.subMenuProps.map(drawerMenuItemToContextualMenuItem)\n } : undefined }));\n/** @private */\nexport const onFetchCustomButtonPropsTrampoline = (options) => {\n let response = undefined;\n response = options === null || options === void 0 ? void 0 : options.onFetchCustomButtonProps;\n return response;\n};\n//# sourceMappingURL=CustomButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/**\n * @private\n */\nexport const captionSettingsDrawerStyles = (theme) => ({\n root: {\n overflow: 'auto'\n },\n drawerSurfaceStyles: {\n drawerContentContainer: {\n root: {\n span: {\n fontWeight: 400,\n fontSize: _pxToRem(14),\n lineHeight: _pxToRem(22),\n color: theme.palette.neutralDark\n }\n }\n }\n }\n});\n//# sourceMappingURL=captionSettingsDrawer.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useMemo, useCallback } from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useTheme } from \"../../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { _DrawerMenu as DrawerMenu } from \"../../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { captionSettingsDrawerStyles } from './captionSettingsDrawer.styles';\n/** @private */\nexport const CaptionSettingsDrawer = (props) => {\n var _a;\n /* @conditional-compile-remove(close-captions) */\n const theme = useTheme();\n /* @conditional-compile-remove(close-captions) */\n const onDrawerItemClick = useCallback((languageCode) => {\n props.selectLanguage(languageCode);\n }, [props]);\n /* @conditional-compile-remove(close-captions) */\n const drawerItems = useMemo(() => {\n var _a;\n return Object.keys((_a = props.supportedLanguageStrings) !== null && _a !== void 0 ? _a : []).map(languageCode => ({\n itemKey: languageCode,\n text: props.supportedLanguageStrings ? props.supportedLanguageStrings[languageCode] : languageCode,\n onItemClick: () => onDrawerItemClick(languageCode),\n secondaryIconProps: props.currentLanguage === languageCode ? {\n iconName: 'Accept'\n } : undefined\n }));\n }, [props.currentLanguage, props.supportedLanguageStrings, onDrawerItemClick]);\n const sortedDrawerItems = useMemo(() => {\n const copy = [...drawerItems];\n return copy.sort((a, b) => a.text && b.text && a.text > b.text ? 1 : -1);\n }, [drawerItems]);\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(DrawerMenu, { heading: (_a = props.strings) === null || _a === void 0 ? void 0 : _a.menuTitle, items: sortedDrawerItems !== null && sortedDrawerItems !== void 0 ? sortedDrawerItems : [], onLightDismiss: () => {\n props.setCurrentLanguage(props.currentLanguage);\n props.onLightDismiss();\n }, styles: captionSettingsDrawerStyles(theme) });\n return React.createElement(React.Fragment, null);\n};\n//# sourceMappingURL=CaptionSettingsDrawer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const themedToggleButtonStyle = (theme, checked) => {\n if (checked) {\n return {\n root: {\n margin: 0\n },\n pill: {\n backgroundColor: `${theme.palette.themePrimary} !important`\n },\n thumb: {\n backgroundColor: `${theme.palette.white} !important`\n }\n };\n }\n return {\n root: {\n margin: 0\n }\n };\n};\n//# sourceMappingURL=MoreDrawer.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport React, { useCallback } from 'react';\n/* @conditional-compile-remove(close-captions) */\nimport { useState } from 'react';\n/* @conditional-compile-remove(control-bar-button-injection) */\nimport { useMemo } from 'react';\nimport { _DrawerMenu as DrawerMenu } from \"../../../../../react-components/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { _StartCaptionsButton, _CaptionsSettingsModal } from \"../../../../../react-components/src\";\n/* @conditional-compile-remove(raise-hand) */\nimport { RaiseHandButton } from \"../../../../../react-components/src\";\n/* @conditional-compile-remove(control-bar-button-injection) */\nimport { CUSTOM_BUTTON_OPTIONS, generateCustomCallDrawerButtons, onFetchCustomButtonPropsTrampoline } from '../ControlBar/CustomButton';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(raise-hand) */\nimport { usePropsFor } from '../../CallComposite/hooks/usePropsFor';\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */ /* @conditional-compile-remove(raise-hand) */\nimport { useLocale } from '../../localization';\nimport { isDisabled } from '../../CallComposite/utils';\n/* @conditional-compile-remove(close-captions) */\nimport { Stack, Toggle, useTheme } from '@fluentui/react';\n/* @conditional-compile-remove(close-captions) */\nimport { useAdaptedSelector } from '../../CallComposite/hooks/useAdaptedSelector';\n/* @conditional-compile-remove(close-captions) */\nimport { _captionSettingsSelector } from \"../../../../../calling-component-bindings/src\";\n/* @conditional-compile-remove(close-captions) */\nimport { useHandlers } from '../../CallComposite/hooks/useHandlers';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionSettingsDrawer } from './CaptionSettingsDrawer';\n/* @conditional-compile-remove(close-captions) */\nimport { themedToggleButtonStyle } from './MoreDrawer.styles';\n/* @conditional-compile-remove(close-captions) */\nimport { _spokenLanguageToCaptionLanguage } from \"../../../../../react-components/src\";\nconst inferCallWithChatControlOptions = (callWithChatControls) => {\n if (callWithChatControls === false) {\n return false;\n }\n const options = callWithChatControls === true || callWithChatControls === undefined ? {} : callWithChatControls;\n return options;\n};\n/** @private */\nexport const MoreDrawer = (props) => {\n var _a, _b;\n /* @conditional-compile-remove(close-captions) */\n const theme = useTheme();\n const drawerMenuItems = [];\n const { speakers, onSelectSpeaker, onLightDismiss } = props;\n /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(close-captions) */ /* @conditional-compile-remove(raise-hand) */\n const localeStrings = useLocale();\n /* @conditional-compile-remove(raise-hand) */\n const raiseHandButtonProps = usePropsFor(RaiseHandButton);\n const onSpeakerItemClick = useCallback((_ev, itemKey) => {\n const selected = speakers === null || speakers === void 0 ? void 0 : speakers.find(speaker => speaker.id === itemKey);\n if (selected) {\n // This is unsafe - we're only passing in part of the argument to the handler.\n // But this is a known issue in our state.\n onSelectSpeaker(selected);\n }\n onLightDismiss();\n }, [speakers, onSelectSpeaker, onLightDismiss]);\n const drawerSelectionOptions = inferCallWithChatControlOptions(props.callControls);\n if (props.speakers && props.speakers.length > 0) {\n drawerMenuItems.push({\n itemKey: 'speakers',\n disabled: props.disableButtonsForHoldScreen,\n text: props.strings.speakerMenuTitle,\n iconProps: {\n iconName: 'MoreDrawerSpeakers'\n },\n subMenuProps: props.speakers.map(speaker => ({\n itemKey: speaker.id,\n iconProps: {\n iconName: isDeviceSelected(speaker, props.selectedSpeaker) ? 'MoreDrawerSelectedSpeaker' : 'MoreDrawerSpeakers'\n },\n text: speaker.name,\n onItemClick: onSpeakerItemClick,\n secondaryIconProps: isDeviceSelected(speaker, props.selectedSpeaker) ? {\n iconName: 'Accept'\n } : undefined\n })),\n secondaryText: (_a = props.selectedSpeaker) === null || _a === void 0 ? void 0 : _a.name\n });\n }\n const { microphones, onSelectMicrophone } = props;\n const onMicrophoneItemClick = useCallback((_ev, itemKey) => {\n const selected = microphones === null || microphones === void 0 ? void 0 : microphones.find(mic => mic.id === itemKey);\n if (selected) {\n // This is unsafe - we're only passing in part of the argument to the handler.\n // But this is a known issue in our state.\n onSelectMicrophone(selected);\n }\n onLightDismiss();\n }, [microphones, onSelectMicrophone, onLightDismiss]);\n if (props.microphones && props.microphones.length > 0) {\n // Set props as Microphone if speakers can be enumerated else set as Audio Device\n const speakersAvailable = props.speakers && props.speakers.length > 0;\n const itemKey = speakersAvailable ? 'microphones' : 'audioDevices';\n const text = speakersAvailable ? props.strings.microphoneMenuTitle : props.strings.audioDeviceMenuTitle;\n const iconName = speakersAvailable ? 'MoreDrawerMicrophones' : 'MoreDrawerSpeakers';\n const selectedIconName = speakersAvailable ? 'MoreDrawerSelectedMicrophone' : 'MoreDrawerSelectedSpeaker';\n drawerMenuItems.push({\n itemKey: itemKey,\n disabled: props.disableButtonsForHoldScreen,\n text: text,\n iconProps: {\n iconName: iconName\n },\n subMenuProps: props.microphones.map(mic => ({\n itemKey: mic.id,\n iconProps: {\n iconName: isDeviceSelected(mic, props.selectedMicrophone) ? selectedIconName : iconName\n },\n text: mic.name,\n onItemClick: onMicrophoneItemClick,\n secondaryIconProps: isDeviceSelected(mic, props.selectedMicrophone) ? {\n iconName: 'Accept'\n } : undefined,\n disabled: drawerSelectionOptions !== false ? isDisabled(drawerSelectionOptions.microphoneButton) : undefined\n })),\n secondaryText: (_b = props.selectedMicrophone) === null || _b === void 0 ? void 0 : _b.name\n });\n }\n /* @conditional-compile-remove(gallery-layouts) */\n const galleryLayoutOptions = {\n itemKey: 'galleryPositionKey',\n iconProps: {\n iconName: 'GalleryOptions',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n disabled: props.disableButtonsForHoldScreen,\n text: localeStrings.strings.call.moreButtonGalleryControlLabel,\n subMenuProps: [{\n itemKey: 'dynamicSelectionKey',\n text: localeStrings.strings.call.moreButtonGalleryFloatingLocalLayoutLabel,\n onItemClick: () => {\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('floatingLocalVideo');\n onLightDismiss();\n },\n iconProps: {\n iconName: 'FloatingLocalVideoGalleryLayout',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n secondaryIconProps: props.userSetGalleryLayout === 'floatingLocalVideo' ? {\n iconName: 'Accept'\n } : undefined\n }, {\n itemKey: 'focusedContentSelectionKey',\n text: localeStrings.strings.call.moreButtonGalleryFocusedContentLayoutLabel,\n onItemClick: () => {\n props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('focusedContent');\n onLightDismiss();\n },\n iconProps: {\n iconName: 'FocusedContentGalleryLayout',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n secondaryIconProps: props.userSetGalleryLayout === 'focusedContent' ? {\n iconName: 'Accept'\n } : undefined\n }]\n };\n /* @conditional-compile-remove(gallery-layouts) */\n drawerMenuItems.push(galleryLayoutOptions);\n if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.peopleButton)) {\n drawerMenuItems.push({\n itemKey: 'people',\n id: 'call-composite-drawer-people-button',\n text: props.strings.peopleButtonLabel,\n iconProps: {\n iconName: 'MoreDrawerPeople'\n },\n onItemClick: props.onPeopleButtonClicked,\n disabled: isDisabled(drawerSelectionOptions.peopleButton) || props.disableButtonsForHoldScreen\n });\n }\n /* @conditional-compile-remove(raise-hand) */\n if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.raiseHandButton)) {\n const raiseHandIcon = raiseHandButtonProps.checked ? 'LowerHandContextualMenuItem' : 'RaiseHandContextualMenuItem';\n drawerMenuItems.push({\n itemKey: 'raiseHandButtonKey',\n disabled: props.disableButtonsForHoldScreen || isDisabled(drawerSelectionOptions.raiseHandButton),\n text: raiseHandButtonProps.checked ? localeStrings.component.strings.raiseHandButton.onLabel : localeStrings.component.strings.raiseHandButton.offLabel,\n onItemClick: () => {\n if (raiseHandButtonProps.onToggleRaiseHand) {\n raiseHandButtonProps.onToggleRaiseHand();\n }\n onLightDismiss();\n },\n iconProps: {\n iconName: raiseHandIcon,\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n });\n }\n /* @conditional-compile-remove(close-captions) */ //Captions drawer menu\n const supportedSpokenLanguageStrings = useLocale().strings.call.spokenLanguageStrings;\n /* @conditional-compile-remove(close-captions) */\n //Captions drawer menu\n const supportedCaptionLanguageStrings = useLocale().strings.call.captionLanguageStrings;\n /* @conditional-compile-remove(close-captions) */\n const captionSettingsProp = useAdaptedSelector(_captionSettingsSelector);\n /* @conditional-compile-remove(close-captions) */\n const startCaptionsButtonHandlers = useHandlers(_StartCaptionsButton);\n /* @conditional-compile-remove(close-captions) */\n const captionSettingsHandlers = useHandlers(_CaptionsSettingsModal);\n /* @conditional-compile-remove(close-captions) */\n const [isSpokenLanguageDrawerOpen, setIsSpokenLanguageDrawerOpen] = useState(false);\n /* @conditional-compile-remove(close-captions) */\n const [isCaptionLanguageDrawerOpen, setIsCaptionLanguageDrawerOpen] = useState(false);\n /* @conditional-compile-remove(close-captions) */\n const [currentSpokenLanguage, setCurrentSpokenLanguage] = useState(captionSettingsProp.currentSpokenLanguage !== '' ? captionSettingsProp.currentSpokenLanguage : 'en-us');\n /* @conditional-compile-remove(close-captions) */\n const [currentCaptionLanguage, setCurrentCaptionLanguage] = useState(captionSettingsProp.currentCaptionLanguage !== '' ? captionSettingsProp.currentCaptionLanguage : _spokenLanguageToCaptionLanguage[currentSpokenLanguage]);\n /* @conditional-compile-remove(close-captions) */\n const onToggleChange = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (!captionSettingsProp.isCaptionsFeatureActive) {\n yield startCaptionsButtonHandlers.onStartCaptions({\n spokenLanguage: currentSpokenLanguage\n });\n }\n else {\n startCaptionsButtonHandlers.onStopCaptions();\n }\n }), [captionSettingsProp.isCaptionsFeatureActive, startCaptionsButtonHandlers, currentSpokenLanguage]);\n /* @conditional-compile-remove(close-captions) */\n if (props.isCaptionsSupported) {\n const captionsDrawerItems = [];\n const spokenLanguageString = supportedSpokenLanguageStrings ? supportedSpokenLanguageStrings[currentSpokenLanguage] : currentSpokenLanguage;\n const captionLanguageString = supportedCaptionLanguageStrings ? supportedCaptionLanguageStrings[currentCaptionLanguage] : currentCaptionLanguage;\n drawerMenuItems.push({\n itemKey: 'captions',\n id: 'common-call-composite-captions-button',\n disabled: props.disableButtonsForHoldScreen,\n text: props.strings.captionsMenuTitle,\n iconProps: {\n iconName: 'CaptionsIcon'\n },\n subMenuProps: captionsDrawerItems\n });\n captionsDrawerItems.push({\n itemKey: 'ToggleCaptionsKey',\n text: captionSettingsProp.isCaptionsFeatureActive ? localeStrings.strings.call.startCaptionsButtonTooltipOnContent : localeStrings.strings.call.startCaptionsButtonTooltipOffContent,\n iconProps: {\n iconName: captionSettingsProp.isCaptionsFeatureActive ? 'CaptionsOffIcon' : 'CaptionsIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n disabled: props.disableButtonsForHoldScreen,\n secondaryComponent: React.createElement(Stack, { verticalFill: true, verticalAlign: \"center\" },\n React.createElement(Toggle, { id: \"common-call-composite-captions-toggle-button\", checked: captionSettingsProp.isCaptionsFeatureActive, styles: themedToggleButtonStyle(theme, captionSettingsProp.isCaptionsFeatureActive), onChange: onToggleChange }))\n });\n captionsDrawerItems.push({\n itemKey: 'ChangeSpokenLanguage',\n text: props.strings.spokenLanguageMenuTitle,\n id: 'common-call-composite-captions-spoken-settings-button',\n secondaryText: spokenLanguageString,\n iconProps: {\n iconName: 'ChangeSpokenLanguageIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n disabled: props.disableButtonsForHoldScreen || !captionSettingsProp.isCaptionsFeatureActive,\n onItemClick: () => {\n setIsSpokenLanguageDrawerOpen(true);\n },\n secondaryIconProps: {\n iconName: 'ChevronRight',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n });\n captionsDrawerItems.push({\n itemKey: 'ChangeCaptionLanguage',\n text: props.strings.captionLanguageMenuTitle,\n id: 'common-call-composite-captions-subtitle-settings-button',\n secondaryText: captionLanguageString,\n iconProps: {\n iconName: 'ChangeCaptionLanguageIcon',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n disabled: props.disableButtonsForHoldScreen || !captionSettingsProp.isCaptionsFeatureActive,\n onItemClick: () => {\n setIsCaptionLanguageDrawerOpen(true);\n },\n secondaryIconProps: {\n iconName: 'ChevronRight',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n });\n }\n /* @conditional-compile-remove(control-bar-button-injection) */\n const customDrawerButtons = useMemo(() => generateCustomCallDrawerButtons(onFetchCustomButtonPropsTrampoline(drawerSelectionOptions !== false ? drawerSelectionOptions : undefined), drawerSelectionOptions !== false ? drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.displayType : undefined), [drawerSelectionOptions]);\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['primary'].slice(CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS).forEach(element => {\n drawerMenuItems.push(element);\n });\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['secondary'].forEach(element => {\n drawerMenuItems.push(element);\n });\n /* @conditional-compile-remove(control-bar-button-injection) */\n customDrawerButtons['overflow'].forEach(element => {\n drawerMenuItems.push(element);\n });\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(React.Fragment, null,\n isSpokenLanguageDrawerOpen && props.isCaptionsSupported && React.createElement(CaptionSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentSpokenLanguage, setCurrentLanguage: captionSettingsHandlers.onSetSpokenLanguage, currentLanguage: currentSpokenLanguage, strings: {\n menuTitle: props.strings.spokenLanguageMenuTitle\n }, supportedLanguageStrings: supportedSpokenLanguageStrings }),\n isCaptionLanguageDrawerOpen && props.isCaptionsSupported && React.createElement(CaptionSettingsDrawer, { onLightDismiss: props.onLightDismiss, selectLanguage: setCurrentCaptionLanguage, setCurrentLanguage: captionSettingsHandlers.onSetCaptionLanguage, currentLanguage: currentCaptionLanguage, strings: {\n menuTitle: props.strings.captionLanguageMenuTitle\n }, supportedLanguageStrings: supportedCaptionLanguageStrings }),\n !isSpokenLanguageDrawerOpen && !isCaptionLanguageDrawerOpen && React.createElement(DrawerMenu, { items: drawerMenuItems, onLightDismiss: props.onLightDismiss }));\n return React.createElement(DrawerMenu, { items: drawerMenuItems, onLightDismiss: props.onLightDismiss });\n};\nconst isDeviceSelected = (speaker, selectedSpeaker) => !!selectedSpeaker && speaker.id === selectedSpeaker.id;\nconst isEnabled = (option) => option !== false;\n//# sourceMappingURL=MoreDrawer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo } from 'react';\nimport { useCallWithChatCompositeStrings } from '../../CallWithChatComposite/hooks/useCallWithChatCompositeStrings';\nimport { MoreDrawer } from './MoreDrawer';\nimport { moreDrawerSelector } from '../../CallWithChatComposite/selectors/moreDrawerSelector';\nimport { useSelector } from '../../CallComposite/hooks/useSelector';\nimport { useHandlers } from '../../CallComposite/hooks/useHandlers';\n/** @private */\nexport const PreparedMoreDrawer = (props) => {\n const strings = useCallWithChatCompositeStrings();\n const moreDrawerStrings = useMemo(() => ({\n peopleButtonLabel: strings.peopleButtonLabel,\n audioDeviceMenuTitle: strings.moreDrawerAudioDeviceMenuTitle,\n microphoneMenuTitle: strings.moreDrawerMicrophoneMenuTitle,\n speakerMenuTitle: strings.moreDrawerSpeakerMenuTitle,\n /* @conditional-compile-remove(close-captions) */\n captionsMenuTitle: strings.moreDrawerCaptionsMenuTitle,\n /* @conditional-compile-remove(close-captions) */\n spokenLanguageMenuTitle: strings.moreDrawerSpokenLanguageMenuTitle,\n /* @conditional-compile-remove(close-captions) */\n captionLanguageMenuTitle: strings.moreDrawerCaptionLanguageMenuTitle,\n /* @conditional-compile-remove(gallery-layouts) */\n galleryOptionsMenuTitle: strings.moreDrawerGalleryOptionsMenuTitle\n }), [strings]);\n const deviceProps = useSelector(moreDrawerSelector);\n const callHandlers = useHandlers(MoreDrawer);\n return React.createElement(MoreDrawer, Object.assign({}, props, deviceProps, callHandlers, { strings: moreDrawerStrings }));\n};\n//# sourceMappingURL=PreparedMoreDrawer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets, ContextualMenu, Stack } from '@fluentui/react';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { LocalAndRemotePIP } from '../CallComposite/components/LocalAndRemotePIP';\nimport { useHandlers } from '../CallComposite/hooks/useHandlers';\nimport { useSelector } from '../CallComposite/hooks/useSelector';\nimport { localAndRemotePIPSelector } from '../CallComposite/selectors/localAndRemotePIPSelector';\nimport { _ModalClone } from \"../../../../react-components/src\";\nimport { hiddenStyle, modalStyle, PIPContainerStyle } from './styles/ModalLocalAndRemotePIP.styles';\n/**\n * Drag options for Modal in {@link ModalLocalAndRemotePIP} component\n */\nconst DRAG_OPTIONS = {\n moveMenuItemText: 'Move',\n closeMenuItemText: 'Close',\n menu: ContextualMenu,\n keepInBounds: true\n};\n/**\n * A wrapping component with a draggable {@link LocalAndRemotePIP} component that is bound to a LayerHost component with id\n * specified by `modalLayerHostId` prop\n * @private\n */\nexport const ModalLocalAndRemotePIP = (props) => {\n var _a;\n const rootStyles = props.hidden ? hiddenStyle : PIPContainerStyle;\n const pictureInPictureProps = useSelector(localAndRemotePIPSelector);\n const [touchStartTouches, setTouchStartTouches] = useState(null);\n const onTouchEnd = useCallback(event => {\n var _a;\n if (touchStartTouches && touchStartTouches.length === 1 && event.changedTouches.length === 1) {\n const touchStartTouch = touchStartTouches[0];\n const touchEndTouch = event.changedTouches[0];\n if (Math.abs(touchStartTouch.clientX - touchEndTouch.clientX) < 10 && Math.abs(touchStartTouch.clientY - touchEndTouch.clientY) < 10) {\n (_a = props.onDismissSidePane) === null || _a === void 0 ? void 0 : _a.call(props);\n }\n }\n }, [props, touchStartTouches]);\n const onTouchStart = useCallback(event => {\n setTouchStartTouches(event.touches);\n }, []);\n const onKeyDown = useCallback(event => {\n var _a;\n if (event.key === 'Enter' || event.key === ' ') {\n (_a = props.onDismissSidePane) === null || _a === void 0 ? void 0 : _a.call(props);\n }\n }, [props]);\n const pictureInPictureHandlers = useHandlers(LocalAndRemotePIP);\n const localAndRemotePIP = useMemo(() => {\n var _a, _b;\n return React.createElement(Stack, { tabIndex: 0, \"aria-label\": (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.dismissModalAriaLabel) !== null && _b !== void 0 ? _b : '', onKeyDown: onKeyDown },\n React.createElement(LocalAndRemotePIP, Object.assign({}, pictureInPictureProps, pictureInPictureHandlers)));\n }, [onKeyDown, pictureInPictureProps, props, pictureInPictureHandlers]);\n const modalStylesThemed = concatStyleSets(modalStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.modal);\n return React.createElement(Stack, { styles: rootStyles },\n React.createElement(Stack, { onTouchStart: onTouchStart, onTouchEnd: onTouchEnd },\n React.createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS, styles: modalStylesThemed, layerProps: {\n hostId: props.modalLayerHostId\n }, minDragPosition: props.minDragPosition, maxDragPosition: props.maxDragPosition }, \n // Only render LocalAndRemotePIP when this component is NOT hidden because VideoGallery needs to have\n // possession of the dominant remote participant video stream\n !props.hidden && localAndRemotePIP)));\n};\n//# sourceMappingURL=ModalLocalAndRemotePIP.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { ControlBarButton } from \"../../../../react-components/src\";\nimport { MoreHorizontal20Filled } from '@fluentui/react-icons';\nconst icon = () => React.createElement(MoreHorizontal20Filled, { key: 'chatOnIconKey', primaryFill: \"currentColor\" });\n/**\n * @private\n */\nexport const MoreButton = (props) => {\n return React.createElement(ControlBarButton, Object.assign({}, props, { labelKey: 'optionsButtonLabelKey', showLabel: props.showLabel, onRenderOnIcon: icon, onRenderOffIcon: icon, onClick: props.onClick, \"data-ui-id\": props['data-ui-id'] }));\n};\n//# sourceMappingURL=MoreButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useMemo } from 'react';\nimport { participantListContainerStyle, participantListMobileStyle, participantListStack, participantListStyle, participantListWrapper, displayNameStyles } from './styles/ParticipantContainer.styles';\nimport { ParticipantList } from \"../../../../react-components/src\";\nimport { FocusZone, Stack, Text, useTheme } from '@fluentui/react';\nimport { AvatarPersona } from './AvatarPersona';\nimport { useId } from '@fluentui/react-hooks';\nimport { _formatString } from \"../../../../acs-ui-common/src\";\n/**\n * @private\n */\nexport const ParticipantContainer = (props) => {\n const theme = useTheme();\n const participantListWrapperClassName = useMemo(() => participantListWrapper(theme), [theme]);\n return React.createElement(Stack, { className: participantListWrapperClassName },\n React.createElement(ParticipantListWithHeading, Object.assign({}, props)));\n};\n/**\n * @private\n */\nexport const ParticipantListWithHeading = (props) => {\n const { onFetchAvatarPersonaData, onFetchParticipantMenuItems, title, participantListProps } = props;\n const subheadingUniqueId = useId();\n const theme = useTheme();\n const subheadingStyleThemed = useMemo(() => ({\n root: {\n color: theme.palette.neutralSecondary,\n margin: props.isMobile ? '0.5rem 1rem' : '0.5rem',\n fontSize: theme.fonts.smallPlus.fontSize\n }\n }), [theme.palette.neutralSecondary, theme.fonts.smallPlus.fontSize, props.isMobile]);\n return React.createElement(Stack, { className: participantListStack },\n React.createElement(Stack.Item, { styles: subheadingStyleThemed, \"aria-label\": title, id: subheadingUniqueId }, paneTitleTrampoline(title !== null && title !== void 0 ? title : '')),\n React.createElement(FocusZone, { className: participantListContainerStyle, shouldFocusOnMount: true },\n React.createElement(ParticipantList, Object.assign({}, participantListProps, { styles: props.isMobile ? participantListMobileStyle : participantListStyle, onRenderAvatar: (userId, options) => React.createElement(React.Fragment, null,\n React.createElement(AvatarPersona, Object.assign({ \"data-ui-id\": \"chat-composite-participant-custom-avatar\", userId: userId }, options, {\n hidePersonaDetails: !!(options === null || options === void 0 ? void 0 : options.text)\n }, { dataProvider: onFetchAvatarPersonaData })),\n (options === null || options === void 0 ? void 0 : options.text) && React.createElement(Text, { nowrap: true, styles: displayNameStyles }, options === null || options === void 0 ? void 0 : options.text)), onFetchParticipantMenuItems: onFetchParticipantMenuItems, showParticipantOverflowTooltip: !props.isMobile, participantAriaLabelledBy: subheadingUniqueId }))));\n};\nconst paneTitleTrampoline = (paneTitle, totalParticipantCount) => {\n const participantCountString = totalParticipantCount ? {\n numberOfPeople: `(${totalParticipantCount})`\n } : {\n numberOfPeople: ' '\n };\n return _formatString(paneTitle, participantCountString);\n};\n//# sourceMappingURL=ParticipantContainer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const peoplePaneContainerTokens = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const peoplePaneContainerStyle = {\n root: {\n position: 'relative',\n maxHeight: '100%',\n overflow: 'hidden'\n }\n};\n/**\n * @private\n */\nexport const participantListContainerStyles = {\n root: {\n overflowY: 'scroll'\n }\n};\n/**\n * @private\n */\nexport const copyLinkButtonContainerStyles = {\n root: {\n width: '100%',\n padding: '0.5rem 1rem'\n }\n};\n/**\n * @private\n */\nexport const copyLinkButtonStackStyles = {\n root: {\n marginLeft: '0.5rem',\n marginRight: '0.5rem'\n }\n};\n/**\n * @private\n */\nexport const copyLinkButtonStyles = {\n root: {\n height: '2.5rem',\n width: '100%'\n },\n textContainer: {\n display: 'contents'\n }\n};\n/**\n * @private\n */\nexport const linkIconStyles = {\n marginRight: '0.5rem'\n};\n/**\n * @private\n */\nexport const localAndRemotePIPStyles = {\n root: {\n marginRight: '1rem'\n }\n};\n/**\n * @private\n */\nexport const themedCopyLinkButtonStyles = (mobileView, theme) => ({\n root: {\n minHeight: mobileView ? '3rem' : '2.5rem',\n borderRadius: mobileView ? theme.effects.roundedCorner6 : theme.effects.roundedCorner4\n }\n});\n//# sourceMappingURL=PeoplePaneContent.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets, DefaultButton, PrimaryButton, Stack, useTheme } from '@fluentui/react';\nimport copy from 'copy-to-clipboard';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { CallWithChatCompositeIcon } from './icons';\nimport { peoplePaneContainerTokens } from './styles/ParticipantContainer.styles';\nimport { copyLinkButtonContainerStyles, copyLinkButtonStackStyles, copyLinkButtonStyles, linkIconStyles, themedCopyLinkButtonStyles } from './styles/PeoplePaneContent.styles';\nimport { Announcer } from \"../../../../react-components/src\";\n/** @private */\nexport const AddPeopleButton = (props) => {\n const { inviteLink, mobileView, strings, participantList } = props;\n const theme = useTheme();\n const [copyInviteLinkAnnouncerStrings, setCopyInviteLinkAnnouncerStrings] = useState('');\n const copyLinkButtonStylesThemed = useMemo(() => concatStyleSets(copyLinkButtonStyles, themedCopyLinkButtonStyles(mobileView, theme)), [mobileView, theme]);\n /**\n * sets the announcement string for when the link is copied.\n */\n const toggleAnnouncerString = useCallback(() => {\n setCopyInviteLinkAnnouncerStrings(strings.copyInviteLinkActionedAriaLabel);\n /**\n * Clears the announcer string after the user clicks the\n * copyInviteLink button allowing it to be re-announced.\n */\n setTimeout(() => {\n setCopyInviteLinkAnnouncerStrings('');\n }, 3000);\n }, [strings.copyInviteLinkActionedAriaLabel]);\n if (mobileView) {\n return React.createElement(Stack, null, inviteLink && React.createElement(Stack.Item, { styles: copyLinkButtonContainerStyles },\n React.createElement(Announcer, { announcementString: copyInviteLinkAnnouncerStrings, ariaLive: 'polite' }),\n React.createElement(PrimaryButton, { onClick: () => {\n copy(inviteLink !== null && inviteLink !== void 0 ? inviteLink : '');\n toggleAnnouncerString();\n }, styles: copyLinkButtonStylesThemed, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"Link\", style: linkIconStyles }), text: strings.copyInviteLinkButtonLabel })));\n }\n else {\n return React.createElement(Stack, { tokens: peoplePaneContainerTokens, \"data-ui-id\": \"people-pane-content\" },\n inviteLink && React.createElement(Stack, { styles: copyLinkButtonStackStyles },\n React.createElement(Announcer, { announcementString: copyInviteLinkAnnouncerStrings, ariaLive: 'polite' }),\n React.createElement(DefaultButton, { text: strings.copyInviteLinkButtonLabel, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"Link\", style: linkIconStyles }), onClick: () => {\n copy(inviteLink !== null && inviteLink !== void 0 ? inviteLink : '');\n toggleAnnouncerString();\n }, styles: copyLinkButtonStylesThemed })),\n participantList);\n }\n};\n//# sourceMappingURL=AddPeopleButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Stack } from '@fluentui/react';\nimport { ParticipantList } from \"../../../../react-components/src\";\nimport React, { useCallback, useMemo } from 'react';\nimport { usePropsFor } from '../CallComposite/hooks/usePropsFor';\nimport { ParticipantListWithHeading } from '../common/ParticipantContainer';\nimport { peoplePaneContainerTokens } from '../common/styles/ParticipantContainer.styles';\nimport { participantListContainerStyles, peoplePaneContainerStyle } from './styles/PeoplePaneContent.styles';\nimport { convertContextualMenuItemToDrawerMenuItem } from './ConvertContextualMenuItemToDrawerMenuItem';\nimport { AddPeopleButton } from './AddPeopleButton';\nimport { useAdapter } from '../CallComposite/adapter/CallAdapterProvider';\nimport { useLocale } from '../localization';\n/**\n * @private\n */\nexport const PeoplePaneContent = (props) => {\n const { inviteLink, onFetchParticipantMenuItems, setDrawerMenuItems } = props;\n const adapter = useAdapter();\n const localeStrings = useLocale();\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const getStrings = () => {\n return localeStrings.strings.callWithChat;\n };\n const strings = getStrings();\n const removeParticipantFromCall = useCallback((participantId) => __awaiter(void 0, void 0, void 0, function* () {\n yield adapter.removeParticipant(participantId);\n }), [adapter]);\n const participantListDefaultProps = usePropsFor(ParticipantList);\n const removeButtonAllowed = hasRemoveParticipantsPermissionTrampoline(adapter);\n const setDrawerMenuItemsForParticipant = useMemo(() => {\n return (participant) => {\n if (participant) {\n let contextualMenuItems = createDefaultContextualMenuItems(participant, strings, removeButtonAllowed && participant.isRemovable ? participantListDefaultProps.onRemoveParticipant : undefined, participantListDefaultProps.myUserId);\n if (onFetchParticipantMenuItems) {\n contextualMenuItems = onFetchParticipantMenuItems(participant.userId, participantListDefaultProps.myUserId, contextualMenuItems);\n }\n const drawerMenuItems = contextualMenuItems.map((contextualMenu) => convertContextualMenuItemToDrawerMenuItem(contextualMenu, () => setDrawerMenuItems([])));\n setDrawerMenuItems(drawerMenuItems);\n }\n };\n }, [strings, participantListDefaultProps.onRemoveParticipant, participantListDefaultProps.myUserId, removeButtonAllowed, onFetchParticipantMenuItems, setDrawerMenuItems]);\n const participantListProps = useMemo(() => {\n const onRemoveAParticipant = (participantId) => __awaiter(void 0, void 0, void 0, function* () { return removeParticipantFromCall(participantId); });\n return Object.assign(Object.assign({}, participantListDefaultProps), { \n // Passing undefined callback for mobile to avoid context menus for participants in ParticipantList are clicked\n onRemoveParticipant: props.mobileView ? undefined : onRemoveAParticipant, \n // We want the drawer menu items to appear when participants in ParticipantList are clicked\n onParticipantClick: props.mobileView ? setDrawerMenuItemsForParticipant : undefined });\n }, [participantListDefaultProps, props.mobileView, setDrawerMenuItemsForParticipant, removeParticipantFromCall]);\n const participantList = React.createElement(ParticipantListWithHeading, { isMobile: props.mobileView, participantListProps: participantListProps, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.mobileView ? undefined : props.onFetchParticipantMenuItems, title: strings.peoplePaneSubTitle });\n if (props.mobileView) {\n return React.createElement(Stack, { verticalFill: true, styles: peoplePaneContainerStyle, tokens: peoplePaneContainerTokens, \"data-ui-id\": \"people-pane-content\" },\n React.createElement(Stack.Item, { grow: true, styles: participantListContainerStyles }, participantList),\n React.createElement(AddPeopleButton, { inviteLink: inviteLink, mobileView: props.mobileView, participantList: participantList, strings: strings }));\n }\n return React.createElement(AddPeopleButton, { inviteLink: inviteLink, mobileView: props.mobileView, participantList: participantList, strings: strings });\n};\n/**\n * Create default contextual menu items for particant\n * @param participant - participant to create contextual menu items for\n * @param strings - localized strings for menu item text\n * @param onRemoveParticipant - callback to remove participant\n * @param localParticipantUserId - Local participant user id\n * @returns - IContextualMenuItem[]\n */\nconst createDefaultContextualMenuItems = (participant, strings, onRemoveParticipant, localParticipantUserId) => {\n const menuItems = [];\n if (onRemoveParticipant && (participant === null || participant === void 0 ? void 0 : participant.userId) !== localParticipantUserId) {\n menuItems.push({\n key: 'remove',\n text: strings.removeMenuLabel,\n onClick: () => {\n if (participant === null || participant === void 0 ? void 0 : participant.userId) {\n onRemoveParticipant === null || onRemoveParticipant === void 0 ? void 0 : onRemoveParticipant(participant === null || participant === void 0 ? void 0 : participant.userId);\n }\n },\n iconProps: {\n iconName: 'UserRemove'\n }\n });\n }\n return menuItems;\n};\n/**\n * @private\n */\nconst hasRemoveParticipantsPermissionTrampoline = (adapter) => {\n // Return true if stable.\n return true;\n};\n//# sourceMappingURL=PeoplePaneContent.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Convert IContextualMenuItem to _DrawerMenuItemProps\n * @param contextualMenu - IContextualMenuItem to convert\n * @param onDrawerMenuItemClick - callback to call when converted DrawerMenuItem is clicked\n * @returns DrawerMenuItem\n * @private\n */\nexport const convertContextualMenuItemToDrawerMenuItem = (contextualMenu, onDrawerMenuItemClick) => {\n return {\n itemKey: contextualMenu.key,\n onItemClick: () => {\n var _a;\n (_a = contextualMenu.onClick) === null || _a === void 0 ? void 0 : _a.call(contextualMenu);\n onDrawerMenuItemClick();\n },\n iconProps: contextualMenu.iconProps,\n text: contextualMenu.text,\n disabled: contextualMenu.disabled\n };\n};\n//# sourceMappingURL=ConvertContextualMenuItemToDrawerMenuItem.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CommandBarButton, DefaultButton, Stack, concatStyleSets } from '@fluentui/react';\nimport { useTheme } from \"../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { sidePaneHeaderContainerStyles, sidePaneHeaderStyles } from '../common/styles/ParticipantContainer.styles';\nimport { mobilePaneBackButtonStyles, mobilePaneButtonStyles, mobilePaneControlBarStyle, mobilePaneHiddenIconStyles } from './styles/Pane.styles';\nimport { CallWithChatCompositeIcon } from './icons';\n/**\n * @private\n */\nexport const SidePaneHeader = (props) => {\n const theme = useTheme();\n const sidePaneCloseButtonStyles = useMemo(() => ({\n root: {\n minWidth: '1.5rem',\n padding: '0.5rem 0.25rem',\n marginRight: '0.25rem',\n backgroundColor: theme.semanticColors.bodyBackground\n },\n icon: {\n color: theme.palette.neutralSecondary\n },\n iconHovered: {\n color: theme.palette.neutralSecondary\n },\n iconPressed: {\n color: theme.palette.neutralSecondary\n }\n }), [theme.palette.neutralSecondary, theme.semanticColors.bodyBackground]);\n if (props.mobileView) {\n return React.createElement(SidePaneMobileHeader, Object.assign({}, props));\n }\n return React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", styles: sidePaneHeaderContainerStyles, verticalAlign: \"center\" },\n React.createElement(Stack.Item, { styles: sidePaneHeaderStyles }, props.headingText),\n React.createElement(Stack.Item, null,\n React.createElement(CommandBarButton, { ariaLabel: props.dismissSidePaneButtonAriaLabel, styles: sidePaneCloseButtonStyles, iconProps: {\n iconName: 'cancel'\n }, onClick: props.onClose })));\n};\nconst SidePaneMobileHeader = (props) => {\n const { headingText, dismissSidePaneButtonAriaLabel, dismissSidePaneButtonAriaDescription, onClose } = props;\n const theme = useTheme();\n const mobilePaneButtonStylesThemed = useMemo(() => {\n return concatStyleSets(mobilePaneButtonStyles, {\n root: {\n width: '100%'\n },\n label: {\n fontSize: theme.fonts.medium.fontSize,\n fontWeight: theme.fonts.medium.fontWeight\n }\n });\n }, [theme]);\n return React.createElement(Stack, { horizontal: true, grow: true, styles: mobilePaneControlBarStyle },\n React.createElement(DefaultButton, { ariaLabel: dismissSidePaneButtonAriaLabel, ariaDescription: dismissSidePaneButtonAriaDescription, onClick: onClose, styles: mobilePaneBackButtonStyles, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"ChevronLeft\" }), autoFocus: true }),\n React.createElement(Stack.Item, { grow: true },\n React.createElement(DefaultButton, { checked: true, styles: mobilePaneButtonStylesThemed }, headingText)),\n React.createElement(DefaultButton, { styles: mobilePaneHiddenIconStyles, ariaHidden: true, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"ChevronLeft\" }) }));\n};\n//# sourceMappingURL=SidePaneHeader.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets, DefaultButton, Stack } from '@fluentui/react';\nimport { useTheme } from \"../../../../react-components/src\";\nimport React, { useMemo } from 'react';\nimport { CallWithChatCompositeIcon } from '../common/icons';\nimport { mobilePaneBackButtonStyles, mobilePaneButtonStyles, mobilePaneControlBarStyle, mobilePaneHiddenIconStyles } from './styles/Pane.styles';\nimport { useLocale } from '../localization';\n/**\n * Legacy header to be removed when we make a breaking change.\n * @private\n */\nexport const PeopleAndChatHeader = (props) => {\n const { onClose, onChatButtonClicked, onPeopleButtonClicked, activeTab } = props;\n const theme = useTheme();\n const strings = useLocale().strings.call;\n const haveMultipleTabs = onChatButtonClicked && onPeopleButtonClicked;\n const mobilePaneButtonStylesThemed = useMemo(() => {\n return concatStyleSets(mobilePaneButtonStyles, {\n root: {\n width: '100%'\n },\n label: {\n fontSize: theme.fonts.medium.fontSize,\n fontWeight: theme.fonts.medium.fontWeight\n }\n }, haveMultipleTabs ? {\n rootChecked: {\n borderBottom: `0.125rem solid ${theme.palette.themePrimary}`\n }\n } : {});\n }, [theme, haveMultipleTabs]);\n return React.createElement(Stack, { horizontal: true, grow: true, styles: mobilePaneControlBarStyle },\n React.createElement(DefaultButton, { ariaLabel: strings.returnToCallButtonAriaLabel, ariaDescription: strings.returnToCallButtonAriaDescription, onClick: onClose, styles: mobilePaneBackButtonStyles, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"ChevronLeft\" }), autoFocus: true }),\n React.createElement(Stack.Item, { grow: true }, onChatButtonClicked && React.createElement(DefaultButton, { onClick: onChatButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'chat', \"aria-selected\": activeTab === 'chat', role: 'tab', disabled: props.disableChatButton }, strings.chatButtonLabel)),\n React.createElement(Stack.Item, { grow: true }, onPeopleButtonClicked && React.createElement(DefaultButton, { onClick: onPeopleButtonClicked, styles: mobilePaneButtonStylesThemed, checked: activeTab === 'people', \"aria-selected\": activeTab === 'people', role: 'tab', disabled: props.disablePeopleButton }, strings.peopleButtonLabel)),\n React.createElement(DefaultButton, { styles: mobilePaneHiddenIconStyles, onRenderIcon: () => React.createElement(CallWithChatCompositeIcon, { iconName: \"ChevronLeft\" }) }));\n};\n//# sourceMappingURL=TabHeader.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport React from 'react';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useCallback, useMemo } from 'react';\n/* @conditional-compile-remove(video-background-effects) */\nimport { MessageBar, MessageBarType, Stack, mergeStyles } from '@fluentui/react';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useLocale } from '../localization';\n/* @conditional-compile-remove(video-background-effects) */\nimport { _VideoBackgroundEffectsPicker } from \"../../../../react-components/src\";\n/* @conditional-compile-remove(video-background-effects) */\nimport { activeVideoBackgroundEffectSelector } from '../CallComposite/selectors/activeVideoBackgroundEffectSelector';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useSelector } from '../CallComposite/hooks/useSelector';\n/* @conditional-compile-remove(video-background-effects) */\nimport { useAdapter } from '../CallComposite/adapter/CallAdapterProvider';\n/* @conditional-compile-remove(video-background-effects) */\nimport { localVideoSelector } from '../CallComposite/selectors/localVideoStreamSelector';\n/**\n * Pane that is used to show video effects button\n * @private\n */\n/** @beta */\nexport const VideoEffectsPaneContent = (props) => {\n var _a;\n const { onDismissError, activeVideoEffectError, \n /* @conditional-compile-remove(video-background-effects) */\n activeVideoEffectChange } = props;\n /* @conditional-compile-remove(video-background-effects) */\n const locale = useLocale();\n /* @conditional-compile-remove(video-background-effects) */\n const adapter = useAdapter();\n /* @conditional-compile-remove(video-background-effects) */\n const strings = locale.strings.call;\n /* @conditional-compile-remove(video-background-effects) */\n const activeVideoEffects = (_a = useSelector(localVideoSelector).activeVideoEffects) === null || _a === void 0 ? void 0 : _a.activeEffects;\n /* @conditional-compile-remove(video-background-effects) */\n const selectableVideoEffects = useMemo(() => {\n const videoEffects = [{\n itemKey: 'none',\n iconProps: {\n iconName: 'RemoveVideoBackgroundEffect'\n },\n title: strings.removeBackgroundEffectButtonLabel,\n tooltipProps: {\n content: strings.removeBackgroundTooltip\n }\n }, {\n itemKey: 'blur',\n iconProps: {\n iconName: 'BlurVideoBackground'\n },\n title: strings.blurBackgroundEffectButtonLabel,\n tooltipProps: {\n content: strings.blurBackgroundTooltip\n }\n }];\n const videoEffectImages = adapter.getState().videoBackgroundImages;\n if (videoEffectImages) {\n videoEffectImages.forEach((img) => {\n var _a;\n videoEffects.push({\n itemKey: img.key,\n backgroundProps: {\n url: img.url\n },\n tooltipProps: {\n content: (_a = img.tooltipText) !== null && _a !== void 0 ? _a : ''\n }\n });\n });\n }\n return videoEffects;\n }, [strings, adapter]);\n /* @conditional-compile-remove(video-background-effects) */\n const onEffectChange = useCallback((effectKey) => __awaiter(void 0, void 0, void 0, function* () {\n if (effectKey === 'blur') {\n const blurEffect = {\n effectName: effectKey\n };\n activeVideoEffectChange({\n type: 'blur',\n timestamp: new Date(Date.now())\n });\n yield adapter.startVideoBackgroundEffect(blurEffect);\n adapter.updateSelectedVideoBackgroundEffect(blurEffect);\n }\n else if (effectKey === 'none') {\n const noneEffect = {\n effectName: effectKey\n };\n yield adapter.stopVideoBackgroundEffects();\n adapter.updateSelectedVideoBackgroundEffect(noneEffect);\n }\n else {\n const backgroundImg = selectableVideoEffects.find(effect => {\n return effect.itemKey === effectKey;\n });\n if (backgroundImg && backgroundImg.backgroundProps) {\n const replaceEffect = {\n effectName: 'replacement',\n key: effectKey,\n backgroundImageUrl: backgroundImg.backgroundProps.url\n };\n activeVideoEffectChange({\n type: 'replacement',\n timestamp: new Date(Date.now())\n });\n yield adapter.startVideoBackgroundEffect(replaceEffect);\n adapter.updateSelectedVideoBackgroundEffect(replaceEffect);\n }\n }\n }), [adapter, activeVideoEffectChange, selectableVideoEffects]);\n /* @conditional-compile-remove(video-background-effects) */\n if (activeVideoEffectError && activeVideoEffects && activeVideoEffects.length === 0) {\n const noneEffect = {\n effectName: 'none'\n };\n adapter.updateSelectedVideoBackgroundEffect(noneEffect);\n }\n return VideoEffectsPaneTrampoline(onDismissError, activeVideoEffectError, /* @conditional-compile-remove(video-background-effects) */ selectableVideoEffects, /* @conditional-compile-remove(video-background-effects) */ onEffectChange);\n};\nconst VideoEffectsPaneTrampoline = (onDismissError, activeVideoEffectError, selectableVideoEffects, onEffectChange) => {\n /* @conditional-compile-remove(video-background-effects) */\n const selectedEffect = useSelector(activeVideoBackgroundEffectSelector);\n /* @conditional-compile-remove(video-background-effects) */\n const isCameraOn = useSelector(localVideoSelector).isAvailable;\n /* @conditional-compile-remove(video-background-effects) */\n const showWarning = !isCameraOn && selectedEffect !== 'none';\n /* @conditional-compile-remove(video-background-effects) */\n const locale = useLocale();\n /* @conditional-compile-remove(video-background-effects) */\n return React.createElement(Stack, { tokens: {\n childrenGap: '0.75rem'\n }, className: mergeStyles({\n paddingLeft: '0.5rem'\n }) },\n activeVideoEffectError && isCameraOn && React.createElement(MessageBar, { messageBarType: MessageBarType.error, onDismiss: () => onDismissError(activeVideoEffectError) }, locale.strings.call.unableToStartVideoEffect),\n showWarning && React.createElement(MessageBar, { messageBarType: MessageBarType.warning }, locale.strings.call.cameraOffBackgroundEffectWarningText),\n React.createElement(_VideoBackgroundEffectsPicker, { label: locale.strings.call.videoEffectsPaneBackgroundSelectionTitle, styles: backgroundPickerStyles, options: selectableVideoEffects !== null && selectableVideoEffects !== void 0 ? selectableVideoEffects : [], onChange: onEffectChange, selectedEffectKey: selectedEffect }));\n return React.createElement(React.Fragment, null);\n};\n/* @conditional-compile-remove(video-background-effects) */\nconst backgroundPickerStyles = {\n label: {\n fontSize: '0.75rem',\n lineHeight: '0.5rem',\n fontWeight: '400'\n }\n};\n//# sourceMappingURL=VideoEffectsPane.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CallEnd20Filled, CallMissed20Filled, CameraSwitch24Regular, Chat20Filled, Chat20Regular, Info20Filled, MicOff20Filled, Mic20Filled, Mic20Regular, People20Regular, PersonDelete20Filled, Speaker220Filled, Speaker220Regular, Video20Filled, VideoOff20Filled, WifiWarning20Filled, Circle20Regular } from '@fluentui/react-icons';\n/* @conditional-compile-remove(capabilities) */\nimport { MicProhibited20Filled, VideoProhibited20Filled } from '@fluentui/react-icons';\n/* @conditional-compile-remove(gallery-layouts) */\nimport { Grid20Regular } from '@fluentui/react-icons';\nimport { DEFAULT_COMPONENT_ICONS } from \"../../../../react-components/src\";\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { FontIcon, Spinner, SpinnerSize } from '@fluentui/react';\n/* @conditional-compile-remove(video-background-effects) */\nimport { VideoBackgroundEffect20Regular, VideoPerson20Filled } from '@fluentui/react-icons';\n/* @conditional-compile-remove(gallery-layouts) */\nimport { PersonSquare20Regular, WindowHeaderHorizontal20Regular, TableSimple20Regular, BoardSplit20Regular, ContentView20Regular, Table20Regular } from '@fluentui/react-icons';\nconst SpinnerIcon = () => React.createElement(Spinner, { size: SpinnerSize.large });\n/**\n * The default set of icons used by the composites directly (i.e. not via the components defined in this library).\n *\n * @public\n */\nexport const COMPOSITE_ONLY_ICONS = {\n ChevronLeft: undefined,\n Link: undefined,\n LobbyScreenConnectingToCall: React.createElement(SpinnerIcon, null),\n LobbyScreenWaitingToBeAdmitted: React.createElement(SpinnerIcon, null),\n LocalDeviceSettingsCamera: React.createElement(Video20Filled, null),\n LocalDeviceSettingsMic: React.createElement(Mic20Filled, null),\n LocalDeviceSettingsSpeaker: React.createElement(Speaker220Filled, null),\n LocalPreviewPlaceholder: React.createElement(VideoOff20Filled, null),\n LocalCameraSwitch: React.createElement(CameraSwitch24Regular, null),\n ControlBarChatButtonActive: React.createElement(Chat20Filled, null),\n ControlBarChatButtonInactive: React.createElement(Chat20Regular, null),\n /* @conditional-compile-remove(capabilities) */\n ControlButtonCameraProhibited: React.createElement(VideoProhibited20Filled, null),\n /* @conditional-compile-remove(capabilities) */\n ControlButtonMicProhibited: React.createElement(MicProhibited20Filled, null),\n ControlBarPeopleButton: React.createElement(People20Regular, null),\n MoreDrawerMicrophones: React.createElement(Mic20Regular, null),\n MoreDrawerPeople: React.createElement(People20Regular, null),\n MoreDrawerSpeakers: React.createElement(Speaker220Regular, null),\n MoreDrawerSelectedMicrophone: React.createElement(Mic20Filled, null),\n MoreDrawerSelectedSpeaker: React.createElement(Speaker220Filled, null),\n Muted: React.createElement(MicOff20Filled, null),\n NetworkReconnectIcon: React.createElement(CallMissed20Filled, null),\n NoticePageAccessDeniedTeamsMeeting: React.createElement(PersonDelete20Filled, null),\n NoticePageJoinCallFailedDueToNoNetwork: React.createElement(WifiWarning20Filled, null),\n NoticePageLeftCall: React.createElement(CallEnd20Filled, null),\n NoticePageRemovedFromCall: React.createElement(Info20Filled, null),\n /* @conditional-compile-remove(video-background-effects) */\n BlurVideoBackground: React.createElement(VideoBackgroundEffect20Regular, null),\n /* @conditional-compile-remove(video-background-effects) */\n RemoveVideoBackgroundEffect: React.createElement(VideoPerson20Filled, null),\n /* @conditional-compile-remove(gallery-layouts) */\n GalleryOptions: React.createElement(Grid20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n OverflowGalleryTop: React.createElement(WindowHeaderHorizontal20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n SpeakerGalleryLayout: React.createElement(PersonSquare20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n DefaultGalleryLayout: React.createElement(TableSimple20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n FloatingLocalVideoGalleryLayout: React.createElement(BoardSplit20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n FocusedContentGalleryLayout: React.createElement(ContentView20Regular, null),\n /* @conditional-compile-remove(gallery-layouts) */\n LargeGalleryLayout: React.createElement(Table20Regular, null),\n /* @conditional-compile-remove(control-bar-button-injection) */\n DefaultCustomButton: React.createElement(Circle20Regular, null)\n};\n/**\n * The default set of icons that are available to used in the Composites.\n *\n * @public\n */\nexport const DEFAULT_COMPOSITE_ICONS = Object.assign(Object.assign({}, DEFAULT_COMPONENT_ICONS), COMPOSITE_ONLY_ICONS);\n/**\n * Icon wrapper to use when including customizable icons inside the ChatComposite.\n * This wrapper ensures the icon name is being type-checked helping ensure no typos\n * and ensure that icon is customizable through the composite API.\n *\n * @private\n */\nexport const ChatCompositeIcon = (props) => React.createElement(FontIcon, Object.assign({}, props));\n/**\n * Icon wrapper to use when including customizable icons inside the CallComposite.\n * This wrapper ensures the icon name is being type-checked helping ensure no typos\n * and ensure that icon is customizable through the composite API.\n *\n * @private\n */\nexport const CallCompositeIcon = (props) => React.createElement(FontIcon, Object.assign({}, props));\n/**\n * Icon wrapper to use when including customizable icons inside the CallWithChatComposite.\n * This wrapper ensures the icon name is being type-checked helping ensure no typos\n * and ensure that icon is customizable through the composite API.\n *\n * @private\n */\nexport const CallWithChatCompositeIcon = (props) => React.createElement(FontIcon, Object.assign({}, props));\n//# sourceMappingURL=icons.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * This minimum width is to make sure the side pane does not overlap with the composite when the screen is narrow.\n *\n * @private\n */\nexport const compositeMinWidthRem = 30;\n//# sourceMappingURL=Composite.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets } from '@fluentui/react';\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/**\n * Default Modal PIP related pixel measurements used for ModalLocalAndremotePIP and common/utils.\n *\n * @private\n */\nexport const MODAL_PIP_DEFAULT_PX = {\n rightPositionPx: 16,\n topPositionPx: 52,\n widthPx: 88,\n heightPx: 128\n};\n/**\n * @private\n */\nexport const getPipStyles = (theme) => ({\n modal: {\n main: Object.assign(Object.assign({ borderRadius: theme.effects.roundedCorner4, boxShadow: theme.effects.elevation8, \n // Above the message thread / people pane.\n zIndex: 2 }, (theme.rtl ? {\n left: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx)\n } : {\n right: _pxToRem(MODAL_PIP_DEFAULT_PX.rightPositionPx)\n })), { top: _pxToRem(MODAL_PIP_DEFAULT_PX.topPositionPx) })\n }\n});\n/**\n * @private\n */\nexport const PIPContainerStyle = {\n root: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n ':focus-within': {\n outline: '1px solid #00000000'\n }\n }\n};\n/**\n * @private\n */\nexport const hiddenStyle = concatStyleSets(PIPContainerStyle, {\n root: {\n display: 'none'\n }\n});\n/**\n * @private\n */\nexport const modalStyle = {\n main: {\n minWidth: 'min-content',\n minHeight: 'min-content',\n position: 'absolute',\n overflow: 'hidden',\n // pointer events for root Modal div set to auto to make LocalAndRemotePIP interactive\n pointerEvents: 'auto',\n touchAction: 'none'\n },\n root: {\n width: '100%',\n height: '100%',\n // pointer events for root Modal div set to none to make descendants interactive\n pointerEvents: 'none',\n ':focus-within': {\n outline: '3px solid #00000000',\n outlineOffset: '-3px'\n }\n }\n};\n/**\n * Styles for layer host to bound the modal wrapping PiPiP in the mobile pane.\n * @private\n */\nexport const modalLayerHostStyle = {\n display: 'flex',\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n zIndex: '100000',\n // pointer events for layerHost set to none to make descendants interactive\n pointerEvents: 'none'\n};\n//# sourceMappingURL=ModalLocalAndRemotePIP.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets } from '@fluentui/react';\n/**\n * @private\n */\nexport const mobilePaneStyle = {\n root: {\n width: '100%',\n height: '100%'\n }\n};\n/**\n * @private\n */\nexport const hiddenMobilePaneStyle = concatStyleSets(mobilePaneStyle, {\n root: {\n display: 'none'\n }\n});\n/**\n * @private\n */\nexport const mobilePaneControlBarStyle = {\n root: {\n height: '3rem'\n }\n};\n/**\n * @private\n */\nexport const mobilePaneBackButtonStyles = {\n root: {\n border: 'none',\n minWidth: '2.5rem',\n height: '100%',\n background: 'none',\n padding: '0 1rem'\n },\n rootChecked: {\n background: 'none'\n },\n rootCheckedHovered: {\n background: 'none'\n }\n};\n/**\n * @private\n */\nexport const mobilePaneHiddenIconStyles = concatStyleSets(mobilePaneBackButtonStyles, {\n root: {\n visibility: 'hidden'\n }\n});\n/**\n * @private\n */\nexport const mobilePaneButtonStyles = {\n root: {\n border: 'none',\n borderBottom: '0.125rem solid transparent',\n width: '8rem',\n height: '100%',\n background: 'none',\n padding: '0'\n },\n rootChecked: {\n background: 'none'\n },\n rootCheckedHovered: {\n background: 'none'\n },\n flexContainer: {\n flexFlow: 'column',\n display: 'contents'\n },\n label: {\n fontSize: '1rem',\n fontWeight: 100,\n lineHeight: '2rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n labelChecked: {\n fontWeight: 600\n }\n};\n/**\n * @private\n */\nexport const hiddenStyles = {\n root: {\n display: 'none'\n }\n};\n/**\n * @private\n */\nexport const sidePaneStyles = (maxWidth) => ({\n root: {\n height: 'auto',\n width: '100%',\n padding: '0.5rem 0.25rem',\n maxWidth: maxWidth !== null && maxWidth !== void 0 ? maxWidth : '21.5rem'\n }\n});\n/**\n * @private\n */\nexport const availableSpaceStyles = {\n root: {\n width: '100%',\n height: '100%'\n }\n};\n/**\n * @private\n */\nexport const sidePaneTokens = {\n childrenGap: '0.5rem'\n};\n//# sourceMappingURL=Pane.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport { CHAT_CONTAINER_ZINDEX } from '../../ChatComposite/styles/Chat.styles';\n/**\n * @private\n */\nexport const sidePaneContainerStyles = {\n root: {\n height: '100%',\n padding: '0.5rem 0.25rem',\n width: '21.5rem'\n }\n};\n/**\n * @private\n */\nexport const sidePaneContainerHiddenStyles = {\n root: Object.assign(Object.assign({}, sidePaneContainerStyles), { display: 'none' })\n};\n/**\n * @private\n */\nexport const sidePaneContainerTokens = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const sidePaneHeaderStyles = {\n root: {\n lineHeight: '1.5rem',\n fontSize: '1.125rem',\n padding: '0.75rem 0.75rem 0.75rem 0.25rem',\n fontWeight: '600'\n }\n};\n/**\n * @private\n */\nexport const sidePaneHeaderContainerStyles = {\n root: {\n margin: '0 0.25rem'\n }\n};\n/**\n * @private\n */\nexport const paneBodyContainer = {\n root: {\n flexDirection: 'column',\n display: 'flex'\n }\n};\n/**\n * @private\n */\nexport const scrollableContainer = {\n root: {\n flexBasis: '0',\n flexGrow: '1',\n overflowY: 'auto'\n }\n};\n/**\n * @private\n */\nexport const scrollableContainerContents = {\n root: {\n flexGrow: '1',\n flexBasis: '0',\n maxWidth: '100%',\n // Create a new stacking context so that `pipStyles` can set zIndex above the container.\n position: 'relative'\n }\n};\n/**\n * @private\n */\nexport const containerContextStyles = {\n root: {\n position: 'absolute',\n height: '100%',\n width: '100%'\n }\n};\n/**\n * @private\n */\nexport const peopleSubheadingStyle = {\n root: {\n fontSize: '0.75rem'\n }\n};\n/**\n * @private\n */\nexport const peoplePaneContainerTokens = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const participantListWrapper = (theme) => mergeStyles({\n width: '20rem',\n maxWidth: '50%',\n height: '100%',\n position: 'absolute',\n right: '0',\n boxShadow: theme.effects.elevation16,\n background: theme.semanticColors.bodyBackground,\n // zIndex to set the participant pane above the chat container\n zIndex: CHAT_CONTAINER_ZINDEX + 1\n});\n/**\n * @private\n */\nexport const participantListContainerPadding = {\n childrenGap: '0.5rem'\n};\n/**\n * @private\n */\nexport const participantListStack = mergeStyles({\n height: '100%'\n});\n/**\n * @private\n */\nexport const participantListContainerStyle = mergeStyles({\n height: '100%',\n overflowY: 'auto',\n overflowX: 'hidden'\n});\n/**\n * @private\n */\nexport const participantListStyle = {\n root: {\n padding: '0rem'\n },\n participantItemStyles: {\n root: {\n padding: '0.5rem'\n }\n }\n};\n/**\n * @private\n */\nexport const participantListMobileStyle = {\n root: {\n padding: '0rem'\n },\n participantItemStyles: {\n root: {\n padding: '0.5rem 1rem'\n }\n }\n};\n/**\n * @private\n */\nexport const displayNameStyles = {\n root: {\n padding: '0.5rem',\n textOverflow: 'ellipsis',\n overflow: 'hidden'\n }\n};\n//# sourceMappingURL=ParticipantContainer.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _useContainerHeight, _useContainerWidth } from \"../../../../react-components/src\";\nimport { useMemo, useRef } from 'react';\nimport { MODAL_PIP_DEFAULT_PX } from './styles/ModalLocalAndRemotePIP.styles';\n/**\n * @private\n */\n// Use document.getElementById until Fluent's Stack supports componentRef property: https://github.com/microsoft/fluentui/issues/20410\nexport const useMinMaxDragPosition = (modalLayerHostId, rtl) => {\n const modalHostRef = useRef(document.getElementById(modalLayerHostId));\n const modalHostWidth = _useContainerWidth(modalHostRef);\n const modalHostHeight = _useContainerHeight(modalHostRef);\n const minDragPosition = useMemo(() => modalHostWidth === undefined ? undefined : {\n x: rtl ? -1 * MODAL_PIP_DEFAULT_PX.rightPositionPx : MODAL_PIP_DEFAULT_PX.rightPositionPx - modalHostWidth + MODAL_PIP_DEFAULT_PX.widthPx,\n y: -1 * MODAL_PIP_DEFAULT_PX.topPositionPx\n }, [modalHostWidth, rtl]);\n const maxDragPosition = useMemo(() => modalHostWidth === undefined || modalHostHeight === undefined ? undefined : {\n x: rtl ? modalHostWidth - MODAL_PIP_DEFAULT_PX.rightPositionPx - MODAL_PIP_DEFAULT_PX.widthPx : MODAL_PIP_DEFAULT_PX.rightPositionPx,\n y: modalHostHeight - MODAL_PIP_DEFAULT_PX.topPositionPx - MODAL_PIP_DEFAULT_PX.heightPx\n }, [modalHostHeight, modalHostWidth, rtl]);\n return {\n minDragPosition: minDragPosition,\n maxDragPosition: maxDragPosition\n };\n};\n/**\n * @private\n */\nexport const defaultSpokenLanguage = 'en-us';\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { createContext, useContext } from 'react';\nimport { LocalizationProvider as ComponentLocalizationProvider } from \"../../../../react-components/src\";\nimport { COMPOSITE_LOCALE_EN_US } from './locales';\n/**\n * Context for providing localized strings to components\n *\n * @private\n */\nexport const LocaleContext = createContext(COMPOSITE_LOCALE_EN_US);\n/**\n * Provider to provide localized strings for this library's composites.\n *\n * @private\n */\nexport const LocalizationProvider = (props) => {\n const { locale, children } = props;\n return React.createElement(LocaleContext.Provider, { value: locale },\n React.createElement(ComponentLocalizationProvider, { locale: locale.component }, children));\n};\n/**\n * @private\n */\nexport const useLocale = () => useContext(LocaleContext);\n//# sourceMappingURL=LocalizationProvider.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { COMPONENT_LOCALE_EN_GB } from \"../../../../../../react-components/src\";\nimport en_GB from './strings.json';\nimport { createCompositeStrings } from '../utils';\n/**\n * Locale for English (British)\n *\n * @public\n */\nexport const COMPOSITE_LOCALE_EN_GB = {\n component: COMPONENT_LOCALE_EN_GB,\n strings: createCompositeStrings(en_GB)\n};\n//# sourceMappingURL=CompositeLocale.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { COMPONENT_LOCALE_FR_FR } from \"../../../../../../react-components/src\";\nimport fr_FR from './strings.json';\nimport { createCompositeStrings } from '../utils';\n/**\n * Locale for French (France)\n *\n * @public\n */\nexport const COMPOSITE_LOCALE_FR_FR = {\n component: COMPONENT_LOCALE_FR_FR,\n strings: createCompositeStrings(fr_FR)\n};\n//# sourceMappingURL=CompositeLocale.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { COMPONENT_LOCALE_EN_US } from \"../../../../../react-components/src\";\nimport en_US from './en-US/strings.json';\n/**\n * Locale for English (US)\n *\n * @public\n */\nexport const COMPOSITE_LOCALE_EN_US = {\n component: COMPONENT_LOCALE_EN_US,\n strings: en_US\n};\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport en_US from './en-US/strings.json';\n/**\n *\n * @private\n */\nexport const createCompositeStrings = (localizedStrings) => {\n const strings = Object.assign({}, en_US);\n Object.keys(localizedStrings).forEach((key) => {\n strings[key] = Object.assign(Object.assign({}, strings[key]), localizedStrings[key]);\n });\n return strings;\n};\n//# sourceMappingURL=utils.js.map"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","AvatarPersona","props","_a","_b","_c","_d","_e","_f","userId","dataProvider","text","imageUrl","imageInitials","initialsColor","initialsTextColor","showOverflowTooltip","data","setData","useState","useEffect","newData","avatarDeepDifferenceCheck","Object","assign","currentData","globalLayerHostStyle","position","zIndex","inset","visibility","BaseProvider","fluentTheme","rtl","locale","globalLayerHostId","useId","useBase","children","iconsToRegister","entries","forEach","key","icons","CompositeElement","FluentThemeProvider","name","content","Customizer","scopedSettings","Layer","hostId","WithBackgroundColor","LayerHost","id","className","localizedElement","LocalizationProvider","BaseContext","Provider","createContext","useContext","theme","useTheme","background","semanticColors","bodyBackground","height","width","Stack","CaptionsBannerMoreButton","localeStrings","startCaptionsButtonProps","useAdaptedSelector","startCaptionsButtonHandlers","useHandlers","moreButtonStrings","useMemo","label","strings","call","captionsBannerMoreButtonCallingLabel","tooltipOffContent","captionsBannerMoreButtonTooltip","moreButtonContextualMenuItems","startCaptions","useCallback","onStartCaptions","spokenLanguage","currentSpokenLanguage","push","checked","startCaptionsButtonTooltipOnContent","startCaptionsButtonTooltipOffContent","onClick","onStopCaptions","onCaptionsSettingsClick","iconProps","iconName","styles","root","lineHeight","itemProps","captionsSettingsLabel","disabled","MoreButton","menuIconProps","hidden","menuProps","items","calloutProps","preventDismissOnEvent","captionsBannerProps","handlers","isCaptionsSettingsOpen","setIsCaptionsSettingsOpen","containerClassName","floatingChildClassName","right","top","captionsBannerStrings","captionsBannerSpinnerText","onRenderAvatar","options","onFetchAvatarPersonaData","innerWidth","window","windowWidth","setWindowWidth","handleResize","addEventListener","removeEventListener","desktopViewBannerWidth","CaptionsSettingsModal","showCaptionsSettingsModal","onDismissCaptionsSettings","changeCaptionLanguage","horizontalAlign","style","isMobile","formFactor","isCaptionsOn","CaptionsSettingsModalProps","modalStrings","captionsSettingsModalTitle","captionsSettingsSpokenLanguageDropdownLabel","captionsSettingsCaptionLanguageDropdownLabel","captionsSettingsSpokenLanguageDropdownInfoText","captionsSettingsCaptionLanguageDropdownInfoText","captionsSettingsConfirmButtonLabel","captionsSettingsCancelButtonLabel","captionsSettingsModalAriaLabel","captionsSettingsCloseModalButtonAriaLabel","spokenLanguageStrings","captionLanguageStrings","showModal","containerDivStyles","icon","PeopleButton","onRenderOnIcon","onRenderOffIcon","rootChecked","palette","neutralLight","ControlBarButton","labelKey","DesktopMoreButton","focusedContentOn","setFocusedContentOn","previousLayout","setPreviousLayout","userSetGalleryLayout","moreButtonCallingLabel","callWithChat","moreDrawerButtonTooltip","menuSubIconStyleSet","isCaptionsSupported","captionsContextualMenuItems","liveCaptionsLabel","disableButtonsForHoldScreen","subMenuProps","submenuIconProps","onUserSetOverflowGalleryPositionChange","galleryOptions","moreButtonGalleryControlLabel","moreButtonGalleryFloatingLocalLayoutLabel","canCheck","isChecked","onUserSetGalleryLayout","moreButtonGallerySpeakerLayoutLabel","moreButtonGalleryFocusedContentLayoutLabel","customDrawerButtons","callControls","undefined","displayType","slice","element","HiddenFocusStartPoint","isMounted","setIsMounted","DefaultButton","autoFocus","ariaHidden","invisibleHiddenFocusStartPoint","hiddenFocusStartPointStyles","tabIndex","margin","minHeight","minWidth","maxHeight","maxWidth","opacity","outline","padding","display","CommonCallControlBar","controlBarContainerRef","useRef","sidepaneControlsRef","controlBarSizeRef","controlBarButtonsWidth","setControlBarButtonsWidth","panelsButtonsWidth","setPanelsButtonsWidth","controlBarContainerWidth","setControlBarContainerWidth","totalButtonsWidth","setTotalButtonsWidth","isOutOfSpace","setIsOutOfSpace","callWithChatStrings","useCallWithChatCompositeStrings","mobileView","commonCallControlOptions","screenShareButton","inferCommonCallControlOptions","setShowCaptionsSettingsModal","current","offsetWidth","openCaptionsSettingsModal","peopleButtonStrings","peopleButtonLabel","selectedLabel","selectedPeopleButtonLabel","peopleButtonTooltipOpen","tooltipOnContent","peopleButtonTooltipClose","moreDrawerButtonLabel","tooltipContent","centerContainerStyles","desktopControlBarStyles","screenShareButtonStyles","getDesktopScreenShareButtonStyles","commonButtonStyles","getDesktopCommonButtonStyles","endCallButtonStyles","getDesktopEndCallButtonStyles","controlBarWrapperDesktopStyles","wrapperDesktopRtlStyles","wrapperDesktopStyles","controlBarDesktopContainerStyles","customButtons","sideButtonsPresent","isEnabled","peopleButton","chatButton","screenShareButtonIsEnabled","microphoneButtonIsEnabled","microphoneButton","cameraButtonIsEnabled","cameraButton","showDesktopMoreButton","moreButton","ref","CallAdapterProvider","adapter","callAdapter","horizontal","reversed","grow","ControlBar","layout","displayVertical","Microphone","splitButtonsForDeviceSelection","disableTooltip","Camera","onClickVideoEffects","componentRef","cameraButtonRef","raiseHandButton","RaiseHand","ScreenShare","option","map","CustomButton","i","showLabel","onMoreButtonClicked","disableButtonsForLobbyPage","EndCall","desktopButtonContainerStyle","peopleButtonChecked","ariaLabel","onPeopleButtonClicked","peopleButtonRef","columnGap","left","transform","border","neutralQuaternaryAlt","borderRadius","effects","roundedCorner4","flexContainer","flexFlow","textContainer","fontSize","fonts","medium","marginLeft","textOverflow","whiteSpace","overflow","splitButtonMenuButton","borderTopRightRadius","borderBottomRightRadius","borderTopLeftRadius","borderBottomLeftRadius","splitButtonMenuButtonChecked","overrideStyles","themePrimary","color","white","fill","borderColor","black","overrides","rootCheckedHovered","rootFocused","CUSTOM_BUTTON_OPTIONS","MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS","MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS","MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS","generateCustomCallControlBarButton","onFetchCustomButtonProps","allButtonProps","callback","primary","generateCustomControlBarButtons","secondary","placement","filter","buttonProps","internalProps","_g","_h","_j","_k","ariaDescription","onItemClick","onRenderIcon","generateCustomDrawerButtons","itemKey","generateCustomCallDrawerButtons","generateCustomCallDesktopOverflowButtons","drawerMenuItemToContextualMenuItem","item","ev","onFetchCustomButtonPropsTrampoline","response","captionSettingsDrawerStyles","drawerSurfaceStyles","drawerContentContainer","span","fontWeight","neutralDark","CaptionSettingsDrawer","onDrawerItemClick","languageCode","selectLanguage","drawerItems","keys","supportedLanguageStrings","secondaryIconProps","currentLanguage","sortedDrawerItems","sort","a","b","DrawerMenu","heading","menuTitle","onLightDismiss","setCurrentLanguage","themedToggleButtonStyle","pill","backgroundColor","thumb","MoreDrawer","drawerMenuItems","speakers","onSelectSpeaker","raiseHandButtonProps","usePropsFor","RaiseHandButton","onSpeakerItemClick","_ev","selected","find","speaker","drawerSelectionOptions","callWithChatControls","length","speakerMenuTitle","isDeviceSelected","selectedSpeaker","secondaryText","microphones","onSelectMicrophone","onMicrophoneItemClick","mic","speakersAvailable","microphoneMenuTitle","audioDeviceMenuTitle","selectedIconName","selectedMicrophone","galleryLayoutOptions","raiseHandIcon","component","onLabel","offLabel","onToggleRaiseHand","supportedSpokenLanguageStrings","supportedCaptionLanguageStrings","captionSettingsProp","captionSettingsHandlers","isSpokenLanguageDrawerOpen","setIsSpokenLanguageDrawerOpen","isCaptionLanguageDrawerOpen","setIsCaptionLanguageDrawerOpen","setCurrentSpokenLanguage","currentCaptionLanguage","setCurrentCaptionLanguage","onToggleChange","isCaptionsFeatureActive","captionsDrawerItems","spokenLanguageString","captionLanguageString","captionsMenuTitle","secondaryComponent","verticalFill","verticalAlign","Toggle","onChange","spokenLanguageMenuTitle","captionLanguageMenuTitle","onSetSpokenLanguage","onSetCaptionLanguage","PreparedMoreDrawer","moreDrawerStrings","moreDrawerAudioDeviceMenuTitle","moreDrawerMicrophoneMenuTitle","moreDrawerSpeakerMenuTitle","moreDrawerCaptionsMenuTitle","moreDrawerSpokenLanguageMenuTitle","moreDrawerCaptionLanguageMenuTitle","galleryOptionsMenuTitle","moreDrawerGalleryOptionsMenuTitle","deviceProps","useSelector","moreDrawerSelector","callHandlers","DRAG_OPTIONS","moveMenuItemText","closeMenuItemText","menu","keepInBounds","ModalLocalAndRemotePIP","rootStyles","pictureInPictureProps","touchStartTouches","setTouchStartTouches","onTouchEnd","event","changedTouches","touchStartTouch","touchEndTouch","Math","abs","clientX","clientY","onDismissSidePane","onTouchStart","touches","onKeyDown","pictureInPictureHandlers","localAndRemotePIP","dismissModalAriaLabel","modalStylesThemed","modal","isOpen","isModeless","dragOptions","layerProps","modalLayerHostId","minDragPosition","maxDragPosition","primaryFill","ParticipantListWithHeading","onFetchParticipantMenuItems","title","participantListProps","subheadingUniqueId","subheadingStyleThemed","neutralSecondary","smallPlus","paneTitleTrampoline","FocusZone","shouldFocusOnMount","ParticipantList","hidePersonaDetails","Text","nowrap","showParticipantOverflowTooltip","participantAriaLabelledBy","paneTitle","totalParticipantCount","participantCountString","numberOfPeople","peoplePaneContainerStyle","participantListContainerStyles","overflowY","copyLinkButtonContainerStyles","copyLinkButtonStackStyles","marginRight","copyLinkButtonStyles","linkIconStyles","AddPeopleButton","inviteLink","participantList","copyInviteLinkAnnouncerStrings","setCopyInviteLinkAnnouncerStrings","copyLinkButtonStylesThemed","roundedCorner6","themedCopyLinkButtonStyles","toggleAnnouncerString","copyInviteLinkActionedAriaLabel","setTimeout","Announcer","announcementString","ariaLive","PrimaryButton","copyInviteLinkButtonLabel","tokens","PeoplePaneContent","setDrawerMenuItems","removeParticipantFromCall","participantId","removeParticipant","participantListDefaultProps","removeButtonAllowed","hasRemoveParticipantsPermissionTrampoline","setDrawerMenuItemsForParticipant","participant","contextualMenuItems","createDefaultContextualMenuItems","isRemovable","onRemoveParticipant","myUserId","contextualMenu","onDrawerMenuItemClick","convertContextualMenuItemToDrawerMenuItem","onParticipantClick","peoplePaneSubTitle","localParticipantUserId","menuItems","removeMenuLabel","SidePaneHeader","sidePaneCloseButtonStyles","iconHovered","iconPressed","SidePaneMobileHeader","headingText","dismissSidePaneButtonAriaLabel","onClose","dismissSidePaneButtonAriaDescription","mobilePaneButtonStylesThemed","PeopleAndChatHeader","onChatButtonClicked","activeTab","haveMultipleTabs","borderBottom","returnToCallButtonAriaLabel","returnToCallButtonAriaDescription","role","disableChatButton","chatButtonLabel","disablePeopleButton","VideoEffectsPaneContent","onDismissError","activeVideoEffectError","activeVideoEffectChange","activeVideoEffects","activeEffects","selectableVideoEffects","videoEffects","removeBackgroundEffectButtonLabel","tooltipProps","removeBackgroundTooltip","blurBackgroundEffectButtonLabel","blurBackgroundTooltip","videoEffectImages","getState","videoBackgroundImages","img","backgroundProps","url","tooltipText","onEffectChange","effectKey","blurEffect","effectName","type","timestamp","Date","now","startVideoBackgroundEffect","updateSelectedVideoBackgroundEffect","noneEffect","stopVideoBackgroundEffects","backgroundImg","effect","replaceEffect","backgroundImageUrl","VideoEffectsPaneTrampoline","selectedEffect","isCameraOn","isAvailable","showWarning","childrenGap","paddingLeft","messageBarType","onDismiss","unableToStartVideoEffect","cameraOffBackgroundEffectWarningText","videoEffectsPaneBackgroundSelectionTitle","backgroundPickerStyles","selectedEffectKey","SpinnerIcon","size","COMPOSITE_ONLY_ICONS","ChevronLeft","Link","LobbyScreenConnectingToCall","LobbyScreenWaitingToBeAdmitted","LocalDeviceSettingsCamera","LocalDeviceSettingsMic","LocalDeviceSettingsSpeaker","LocalPreviewPlaceholder","LocalCameraSwitch","ControlBarChatButtonActive","ControlBarChatButtonInactive","ControlButtonCameraProhibited","ControlButtonMicProhibited","ControlBarPeopleButton","MoreDrawerMicrophones","MoreDrawerPeople","MoreDrawerSpeakers","MoreDrawerSelectedMicrophone","MoreDrawerSelectedSpeaker","Muted","NetworkReconnectIcon","NoticePageAccessDeniedTeamsMeeting","NoticePageJoinCallFailedDueToNoNetwork","NoticePageLeftCall","NoticePageRemovedFromCall","BlurVideoBackground","RemoveVideoBackgroundEffect","GalleryOptions","OverflowGalleryTop","SpeakerGalleryLayout","DefaultGalleryLayout","FloatingLocalVideoGalleryLayout","FocusedContentGalleryLayout","LargeGalleryLayout","DefaultCustomButton","DEFAULT_COMPOSITE_ICONS","CallCompositeIcon","CallWithChatCompositeIcon","compositeMinWidthRem","MODAL_PIP_DEFAULT_PX","rightPositionPx","topPositionPx","widthPx","heightPx","getPipStyles","main","boxShadow","elevation8","PIPContainerStyle","pointerEvents","hiddenStyle","modalStyle","touchAction","outlineOffset","modalLayerHostStyle","mobilePaneControlBarStyle","mobilePaneBackButtonStyles","mobilePaneHiddenIconStyles","mobilePaneButtonStyles","labelChecked","hiddenStyles","sidePaneStyles","availableSpaceStyles","sidePaneTokens","sidePaneHeaderStyles","sidePaneHeaderContainerStyles","paneBodyContainer","flexDirection","scrollableContainer","flexBasis","flexGrow","scrollableContainerContents","containerContextStyles","peoplePaneContainerTokens","participantListStack","participantListContainerStyle","overflowX","participantListStyle","participantItemStyles","participantListMobileStyle","displayNameStyles","useMinMaxDragPosition","modalHostRef","document","getElementById","modalHostWidth","modalHostHeight","x","y","LocaleContext","useLocale","COMPOSITE_LOCALE_EN_GB","COMPOSITE_LOCALE_FR_FR","COMPOSITE_LOCALE_EN_US","createCompositeStrings","localizedStrings"],"sourceRoot":""}