{"version":3,"file":"static/js/9367_596eb4aef4e154c160f0.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ErrorBar.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/GridLayout.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/HighContrastAwareIcon.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/HoldButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/IncomingCallNotification.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/IncomingCallStack.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/InputBoxButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/InputBoxComponent.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/LocalVideoCameraButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/LocalVideoTile.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MeetingReactionOverlay.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MessageStatusIcon.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MessageStatusIndicatorInternal.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MessageThread.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/MicrophoneButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ModalClone/ModalClone.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/Notification.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/NotificationStack.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ParticipantItem.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ParticipantList.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ParticipantsButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/PictureInPictureInPicture/PictureInPictureInPictureTile.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/PictureInPictureInPicture/PictureInPictureInPicture.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/RaiseHandButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ReactionButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/RemoteVideoTile.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/HorizontalGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ResponsiveHorizontalGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/ScreenShareButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.22.0_kdreznvoqpxsq65rzwgw6zo7je/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/SendBox.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useEffect, useRef, useState } from 'react';\nimport { MessageBar, Stack } from '@fluentui/react';\nimport { useLocale } from '../localization';\nimport { dismissError, dropDismissalsForInactiveErrors, errorsToShow, messageBarIconProps, messageBarType } from './utils';\n/**\n * A component to show error messages on the UI.\n * All strings that can be shown are accepted as the {@link ErrorBarProps.strings} so that they can be localized.\n * Active errors are selected by {@link ErrorBarProps.activeErrorMessages}.\n *\n * This component internally tracks dismissed by the user.\n * * Errors that have an associated timestamp: The error is shown on the UI again if it occurs after being dismissed.\n * * Errors that do not have a timestamp: The error is dismissed until it disappears from the props.\n * If the error recurs, it is shown in the UI.\n *\n * Uses {@link @fluentui/react#MessageBar} UI element.\n *\n * @public\n */\nexport const ErrorBar = (props) => {\n var _a;\n const localeStrings = useLocale().strings.errorBar;\n const strings = (_a = props.strings) !== null && _a !== void 0 ? _a : localeStrings;\n const trackDismissedErrorsInternally = !props.onDismissError;\n // Timestamp for when this comopnent is first mounted.\n // Never updated through the lifecycle of this component.\n const mountTimestamp = useRef(new Date(Date.now()));\n const [dismissedErrors, setDismissedErrors] = useState([]);\n // dropDismissalsForInactiveErrors only returns a new object if `dismissedErrors` actually changes.\n // Without this behaviour, this `useEffect` block would cause a render loop.\n useEffect(() => {\n trackDismissedErrorsInternally && setDismissedErrors(dropDismissalsForInactiveErrors(props.activeErrorMessages, dismissedErrors));\n }, [props.activeErrorMessages, dismissedErrors, trackDismissedErrorsInternally]);\n const toShow = errorsToShow(props.activeErrorMessages, dismissedErrors, props.ignorePremountErrors ? mountTimestamp.current : undefined);\n return React.createElement(Stack, { \"data-ui-id\": \"notifications-stack\" }, toShow.map(error => React.createElement(MessageBar, Object.assign({}, props, { styles: {\n innerText: {\n alignSelf: 'center'\n },\n icon: {\n height: 0\n },\n content: {\n lineHeight: 'inherit'\n },\n dismissal: {\n height: '2rem',\n paddingBottom: '0.8rem'\n }\n }, key: error.type, messageBarType: messageBarType(error.type), messageBarIconProps: messageBarIconProps(error.type), onDismiss: () => { var _a; return trackDismissedErrorsInternally ? setDismissedErrors(dismissError(dismissedErrors, error)) : (_a = props.onDismissError) === null || _a === void 0 ? void 0 : _a.call(props, error); }, dismissButtonAriaLabel: `${strings[error.type]}, ${strings.dismissButtonAriaLabel}`, dismissIconProps: {\n iconName: 'ErrorBarClear'\n } }), strings[error.type])));\n};\n//# sourceMappingURL=ErrorBar.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport React, { useRef, useEffect, useState, useMemo } from 'react';\nimport { gridLayoutStyle } from './styles/GridLayout.styles';\n/**\n * A component to lay out audio / video participants tiles in a call.\n *\n * @public\n */\nexport const GridLayout = (props) => {\n const { children, styles } = props;\n const numberOfChildren = React.Children.count(children);\n const [currentWidth, setCurrentWidth] = useState(0);\n const [currentHeight, setCurrentHeight] = useState(0);\n const containerRef = useRef(null);\n const observer = useRef(new ResizeObserver((entries) => {\n if (!entries[0]) {\n return;\n }\n const { width, height } = entries[0].contentRect;\n setCurrentWidth(width);\n setCurrentHeight(height);\n }));\n useEffect(() => {\n if (containerRef.current) {\n observer.current.observe(containerRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [observer, containerRef]);\n const gridProps = useMemo(() => {\n return calculateGridProps(numberOfChildren, currentWidth, currentHeight);\n }, [numberOfChildren, currentWidth, currentHeight]);\n const cssGridStyles = useMemo(() => createGridStyles(numberOfChildren, gridProps), [numberOfChildren, gridProps]);\n return React.createElement(\"div\", { ref: containerRef, className: mergeStyles(gridLayoutStyle, cssGridStyles, styles === null || styles === void 0 ? void 0 : styles.root), \"data-ui-id\": \"grid-layout\" }, children);\n};\n/**\n * The cell aspect ratio we aim for in a grid\n */\nconst TARGET_CELL_ASPECT_RATIO = 16 / 9;\n/**\n * The minimum cell aspect ratio we allow\n */\nconst MINIMUM_CELL_ASPECT_RATIO_ALLOWED = 8 / 9;\nconst isCloserThan = (a, b, target) => {\n return Math.abs(target - a) < Math.abs(target - b);\n};\n/**\n * Get the best GridProps to place a number of items in a grid as evenly as possible given the width and height of the grid\n * @param numberOfItems - number of items to place in grid\n * @param width - width of grid\n * @param height - height of grid\n * @returns GridProps\n */\nexport const calculateGridProps = (numberOfItems, width, height) => {\n if (numberOfItems <= 0) {\n return {\n fillDirection: 'horizontal',\n rows: 0,\n columns: 0\n };\n }\n // If width or height are 0 then we return rows and column evenly\n if (width <= 0 || height <= 0) {\n return {\n fillDirection: 'horizontal',\n rows: Math.ceil(Math.sqrt(numberOfItems)),\n columns: Math.ceil(Math.sqrt(numberOfItems))\n };\n }\n const aspectRatio = width / height;\n // Approximate how many rows to divide the grid to achieve cells close to the TARGET_CELL_ASPECT_RATIO\n let rows = Math.floor(Math.sqrt(TARGET_CELL_ASPECT_RATIO / aspectRatio * numberOfItems)) || 1;\n // Make sure rows do not exceed numberOfItems\n rows = Math.min(rows, numberOfItems);\n // Given the rows, get the minimum columns needed to create enough cells for the number of items\n let columns = Math.ceil(numberOfItems / rows);\n // Default fill direction to horizontal\n let fillDirection = 'horizontal';\n while (rows < numberOfItems) {\n // If cell aspect ratio is less than MINIMUM_CELL_ASPECT_RATIO_ALLOWED then try more rows\n if (rows / columns * aspectRatio < MINIMUM_CELL_ASPECT_RATIO_ALLOWED) {\n rows += 1;\n columns = Math.ceil(numberOfItems / rows);\n continue;\n }\n if (numberOfItems < rows * columns) {\n // We need to check that stretching columns vertically will result in only one less cell in stretched columns.\n // Likewise, we need to check that stretching rows horizonally will result in only one less cell in stretched rows.\n // e.g. For 4 rows, 2 columns, but only 6 items, we cannot stretch vertically because that would result in a\n // column of 2 cells which is less by more than 1 compared to the unstretched column.\n // _________\n // |____| |\n // |____|____|\n // |____| |\n // |____|____|\n const canStretchVertically = numberOfItems >= rows + (columns - 1) * (rows - 1);\n const canStretchHorizontally = numberOfItems >= columns + (rows - 1) * (columns - 1);\n if (!canStretchVertically && !canStretchHorizontally) {\n rows += 1;\n columns = Math.ceil(numberOfItems / rows);\n continue;\n }\n else if (!canStretchVertically) {\n break;\n }\n else if (!canStretchHorizontally) {\n fillDirection = 'vertical';\n break;\n }\n // We need to figure out whether the big cells should stretch horizontally or vertically\n // to fill in the empty spaces\n // e.g. For 2 rows, 3 columns, but only 5 items, we need to choose whether to stretch cells\n // horizontally or vertically\n // ______________________ _______________________\n // | | | | | | | |\n // |_______|_______|______| |_______|_______| |\n // | | | | | | |\n // |___________|__________| |_______|_______|_______|\n // Calculate the aspect ratio of big cells stretched horizontally\n const horizontallyStretchedCellRatio = rows / (columns - 1) * aspectRatio;\n // Calculate the aspect ratio of big cells stretched vertically\n const verticallyStretchedCellRatio = (rows - 1) / columns * aspectRatio;\n // We know the horizontally stretched cells aspect ratio is higher than MINIMUM_CELL_ASPECT_RATIO_ALLOWED. If vertically stretched cells\n // is also higher than the MINIMUM_CELL_ASPECT_RATIO_ALLOWED, then choose which aspect ratio is better.\n if (verticallyStretchedCellRatio >= MINIMUM_CELL_ASPECT_RATIO_ALLOWED) {\n // If vertically stetched cell has an aspect ratio closer to TARGET_CELL_ASPECT_RATIO then change the fill direction to vertical\n if (isCloserThan(verticallyStretchedCellRatio, horizontallyStretchedCellRatio, TARGET_CELL_ASPECT_RATIO)) {\n fillDirection = 'vertical';\n }\n }\n }\n break;\n }\n return {\n fillDirection,\n rows,\n columns\n };\n};\n/**\n * Creates a styles classname with CSS Grid related styles given GridProps and the number of items to distribute as evenly as possible.\n * @param numberOfItems - number of items to place in grid\n * @param gridProps - GridProps that define the number of rows, number of columns, and the fill direction\n * @returns - classname\n */\nexport const createGridStyles = (numberOfItems, gridProps) => {\n const isHorizontal = gridProps.fillDirection === 'horizontal';\n // Blocks are either rows or columns depending on whether we fill horizontally or vertically. Each block may differ in the number of cells.\n const blocks = isHorizontal ? gridProps.rows : gridProps.columns;\n const smallCellsPerBlock = Math.ceil(numberOfItems / blocks);\n const bigCellsPerBlock = Math.floor(numberOfItems / blocks);\n const numBigCells = (gridProps.rows * gridProps.columns - numberOfItems) * bigCellsPerBlock;\n // Get grid units\n // e.g. If some blocks have 2 big cells while others have 3 small cells, we need to work with 6 units per block\n const units = smallCellsPerBlock * bigCellsPerBlock;\n const gridStyles = isHorizontal ? {\n gridTemplateColumns: `repeat(${units}, minmax(0, 1fr))`,\n gridTemplateRows: `repeat(${blocks}, minmax(0, 1fr))`,\n gridAutoFlow: 'row'\n } : {\n gridTemplateColumns: `repeat(${blocks}, minmax(0, 1fr))`,\n gridTemplateRows: `repeat(${units}, minmax(0, 1fr))`,\n gridAutoFlow: 'column'\n };\n const smallCellStyle = isHorizontal ? {\n '> *': {\n gridColumn: `auto / span ${units / smallCellsPerBlock}`\n }\n } : {\n '> *': {\n gridRow: `auto / span ${units / smallCellsPerBlock}`\n }\n };\n // If there are big cells, we are choosing to place the latest children into the big cells.\n // That is why we use the '> *:nth-last-child(-n + ${numBigCells})' CSS selector below\n const bigCellStyle = numBigCells ? {\n [`> *:nth-last-child(-n + ${numBigCells})`]: isHorizontal ? {\n gridColumn: `auto / span ${units / bigCellsPerBlock}`\n } : {\n gridRow: `auto / span ${units / bigCellsPerBlock}`\n }\n } : {};\n return mergeStyles(gridStyles, smallCellStyle, bigCellStyle);\n};\n//# sourceMappingURL=GridLayout.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Icon, mergeStyles } from '@fluentui/react';\nimport React from 'react';\nimport { useTheme } from '../theming';\n/**\n * This is a helper component to define and unify icon colors\n *\n * @internal\n */\nexport const _HighContrastAwareIcon = (props) => {\n const { iconName, disabled } = props;\n const theme = useTheme();\n // setting colors for the icons using color from theme, so in dark mode or other accessibility modes, they have pre-defined contrast colors\n // the media query is for when in specific window accessibility mode, change the svg colors\n return React.createElement(Icon, { iconName: iconName, className: mergeStyles({\n svg: {\n fill: disabled ? theme.palette.neutralTertiary : theme.palette.neutralPrimaryAlt,\n '@media (forced-colors: active) and (prefers-color-scheme: dark)': {\n fill: disabled ? theme.palette.neutralPrimaryAlt : theme.palette.neutralTertiary\n }\n }\n }) });\n};\n//# sourceMappingURL=HighContrastAwareIcon.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ControlBarButton } from './ControlBarButton';\nimport React from 'react';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\n/**\n * a button to hold or resume a ongoing call.\n *\n * Can be used with {@link ControlBar}\n *\n * @param props - properties for the hold button.\n * @returns\n * @public\n */\nexport const HoldButton = (props) => {\n const { onToggleHold, strings } = props;\n const onRenderHoldIcon = () => {\n return React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"HoldCallButton\" });\n };\n const onRenderResumeIcon = () => {\n return React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ResumeCall\" });\n };\n return React.createElement(ControlBarButton, Object.assign({}, props, { strings: strings, onClick: onToggleHold !== null && onToggleHold !== void 0 ? onToggleHold : props.onClick, onRenderOnIcon: onRenderResumeIcon, onRenderOffIcon: onRenderHoldIcon }));\n};\n//# sourceMappingURL=HoldButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton, IconButton, Persona, PersonaSize, PrimaryButton, Stack, Text, useTheme } from '@fluentui/react';\nimport React from 'react';\nimport { useLocale } from '../localization';\nimport { _formatString } from \"../../../acs-ui-common/src\";\n/**\n * A Notification component that is to be used to represent incoming calls to the end user.\n * Allows the user to accept or reject the incoming call.\n * @public\n */\nexport const IncomingCallNotification = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const { callerName, alertText, avatarImage, onAcceptWithAudio, onAcceptWithVideo, onReject, onDismiss, personaSize, styles, strings, acceptOptions } = props;\n const theme = useTheme();\n const localeStrings = useLocale().strings.IncomingCallNotification;\n const formattedMessageString = localeStrings.incomingCallNotificationPlaceholderAlert && callerName ? _formatString(localeStrings.incomingCallNotificationPlaceholderAlert, {\n callerName: callerName\n }) : callerName;\n const acceptManuOptions = acceptOptions.showAcceptWithVideo ? {\n items: [{\n key: 'audio',\n text: (_a = strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationAcceptButtonLabel) !== null && _a !== void 0 ? _a : localeStrings.incomingCallNotificationAcceptButtonLabel,\n onClick: () => onAcceptWithAudio()\n }, {\n key: 'video',\n text: (_b = strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationAccceptWithVideoButtonLabel) !== null && _b !== void 0 ? _b : localeStrings.incomingCallNotificationAccceptWithVideoButtonLabel,\n onClick: () => onAcceptWithVideo()\n }]\n } : undefined;\n return React.createElement(Stack, { tokens: {\n childrenGap: '0.5rem'\n }, verticalAlign: \"center\", styles: (styles === null || styles === void 0 ? void 0 : styles.root) ? styles.root : incomingCallToastStyle(theme) },\n React.createElement(Stack, { horizontal: true, verticalAlign: \"center\", tokens: {\n childrenGap: personaSize ? '0.5rem' : '0rem'\n } },\n React.createElement(Stack, { horizontalAlign: \"start\", styles: (styles === null || styles === void 0 ? void 0 : styles.avatarContainer) ? styles.avatarContainer : incomingCallToastAvatarContainerStyle },\n React.createElement(Persona, { imageUrl: avatarImage, text: callerName, size: PersonaSize.size24, coinSize: personaSize, hidePersonaDetails: true, \"aria-label\": callerName })),\n React.createElement(Stack, { grow: true, horizontalAlign: \"center\", style: {\n alignItems: 'flex-start',\n fontFamily: 'Segoe UI'\n } },\n React.createElement(Text, { tabIndex: 0, \"aria-live\": 'assertive', \"aria-label\": alertText !== null && alertText !== void 0 ? alertText : formattedMessageString }, (_c = alertText !== null && alertText !== void 0 ? alertText : strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationPlaceholderAlert) !== null && _c !== void 0 ? _c : formattedMessageString)),\n React.createElement(IconButton, { ariaLabel: (_d = strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationDismissButtonAriaLabel) !== null && _d !== void 0 ? _d : localeStrings.incomingCallNotificationDismissButtonAriaLabel, iconProps: {\n iconName: 'cancel'\n }, onClick: onDismiss, styles: dismissButtonStyle(theme) })),\n React.createElement(Stack, { horizontal: true, horizontalAlign: 'center', tokens: {\n childrenGap: '0.5rem'\n } },\n React.createElement(PrimaryButton, { styles: (styles === null || styles === void 0 ? void 0 : styles.acceptButton) ? styles.acceptButton : incomingCallAcceptButtonStyle(theme), onClick: () => onAcceptWithAudio(), iconProps: {\n iconName: 'IncomingCallNotificationAcceptIcon',\n style: {\n lineHeight: '1rem'\n }\n }, ariaLabel: (_e = strings === null || strings === void 0 ? void 0 : strings.incomingCallNoticicationAcceptWithAudioAriaLabel) !== null && _e !== void 0 ? _e : localeStrings.incomingCallNoticicationAcceptWithAudioAriaLabel, menuProps: acceptManuOptions }, (_f = strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationAcceptButtonLabel) !== null && _f !== void 0 ? _f : localeStrings.incomingCallNotificationAcceptButtonLabel),\n React.createElement(DefaultButton, { styles: (styles === null || styles === void 0 ? void 0 : styles.rejectButton) ? styles.rejectButton : incomingCallRejectButtonStyle(theme), onClick: () => onReject(), iconProps: {\n iconName: 'IncomingCallNotificationRejectIcon'\n }, ariaLabel: (_g = strings === null || strings === void 0 ? void 0 : strings.incomingCallNoticicationRejectAriaLabel) !== null && _g !== void 0 ? _g : localeStrings.incomingCallNoticicationRejectAriaLabel }, (_h = strings === null || strings === void 0 ? void 0 : strings.incomingCallNotificationRejectButtonLabel) !== null && _h !== void 0 ? _h : localeStrings.incomingCallNotificationRejectButtonLabel)));\n};\nconst incomingCallToastStyle = (theme) => {\n return {\n root: {\n width: '20rem',\n background: theme.palette.white,\n opacity: 0.95,\n borderRadius: '0.5rem',\n boxShadow: theme.effects.elevation8,\n padding: '1rem'\n }\n };\n};\nconst incomingCallToastAvatarContainerStyle = {\n root: {\n marginRight: '0.5rem'\n }\n};\nconst dismissButtonStyle = (theme) => {\n return {\n root: {\n color: theme.palette.neutralPrimary,\n width: '1rem',\n height: '1rem'\n },\n rootHovered: {\n color: theme.palette.neutralDark\n }\n };\n};\nconst incomingCallAcceptButtonStyle = (theme) => {\n return {\n root: {\n color: theme.palette.white,\n border: 'none',\n borderRadius: theme.effects.roundedCorner4,\n width: '100%',\n maxWidth: '8.875rem'\n },\n rootHovered: {\n color: theme.palette.white\n },\n icon: {\n height: '1.25rem'\n }\n };\n};\nconst incomingCallRejectButtonStyle = (theme) => {\n return {\n root: {\n borderRadius: theme.effects.roundedCorner4,\n maxWidth: '8.875rem',\n width: '100%'\n },\n icon: {\n height: '1.25rem'\n }\n };\n};\n//# sourceMappingURL=IncomingCallNotification.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { IncomingCallNotification } from './IncomingCallNotification';\nimport { Stack } from '@fluentui/react';\nimport React from 'react';\n/**\n * Wrapper to manage multiple incoming calls\n * @param props - {@link IncomingCallManagerProps}\n * @returns\n * @public\n */\nexport const IncomingCallStack = (props) => {\n const { activeIncomingCalls, removedIncomingCalls, onAcceptCall, onRejectCall, styles, strings, tabIndex } = props;\n return React.createElement(Stack, { tokens: {\n childrenGap: '0.25rem'\n }, role: 'group', tabIndex: tabIndex }, activeIncomingCalls.filter(incomingCall => !removedIncomingCalls.some(call => call.id === incomingCall.id)).map(incomingCall => {\n return React.createElement(IncomingCallNotification, { key: incomingCall.id, callerName: incomingCall.callerInfo.displayName, onAcceptWithAudio: () => onAcceptCall(incomingCall.id), onAcceptWithVideo: () => onAcceptCall(incomingCall.id, true), onReject: () => onRejectCall(incomingCall.id), onDismiss: () => onRejectCall(incomingCall.id), styles: styles, strings: strings, acceptOptions: {\n showAcceptWithVideo: incomingCall.videoAvailable\n } });\n }));\n};\n//# sourceMappingURL=IncomingCallStack.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { IconButton, Stack, TooltipHost, mergeStyles, useTheme } from '@fluentui/react';\nimport { useState } from 'react';\nimport { isDarkThemed } from '../theming/themeUtils';\nimport React from 'react';\nimport { iconWrapperStyle, inputBoxButtonStyle, inputBoxButtonTooltipStyle } from './styles/InputBoxButton.style';\n/**\n * @private\n */\nexport const InputBoxButton = (props) => {\n const { onRenderIcon, onClick, ariaLabel, className, id, tooltipContent, 'data-testId': dataTestId, disabled, ariaExpanded } = props;\n const [isHover, setIsHover] = useState(false);\n const mergedButtonStyle = mergeStyles(inputBoxButtonStyle, className);\n const theme = useTheme();\n const calloutStyle = {\n root: {\n padding: 0\n },\n calloutMain: {\n padding: '0.5rem'\n }\n };\n // Place callout with no gap between it and the button.\n const calloutProps = {\n gapSpace: 0,\n styles: calloutStyle,\n backgroundColor: isDarkThemed(theme) ? theme.palette.neutralLighter : ''\n };\n return React.createElement(TooltipHost, { hostClassName: inputBoxButtonTooltipStyle, content: tooltipContent, calloutProps: Object.assign({}, calloutProps) },\n React.createElement(IconButton, { className: mergedButtonStyle, ariaLabel: ariaLabel, onClick: onClick, id: id, onMouseEnter: () => {\n setIsHover(true);\n }, onMouseLeave: () => {\n setIsHover(false);\n }, \n // VoiceOver fix: Avoid icon from stealing focus when IconButton is double-tapped to send message by wrapping with Stack with pointerEvents style to none\n onRenderIcon: () => React.createElement(Stack, { className: iconWrapperStyle }, onRenderIcon(isHover)), \"data-testid\": dataTestId, \"aria-expanded\": ariaExpanded, disabled: disabled, allowDisabledFocus: true }));\n};\n//# sourceMappingURL=InputBoxButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback } from 'react';\nimport { Stack, TextField, mergeStyles, concatStyleSets } from '@fluentui/react';\nimport { isEnterKeyEventFromCompositionSession } from './utils';\nimport { inputBoxStyle, inputBoxWrapperStyle, textFieldStyle, textContainerStyle } from './styles/InputBoxComponent.style';\n/**\n * @private\n */\nexport const InputBoxComponent = (props) => {\n const { styles, id, 'data-ui-id': dataUiId, textValue, onChange, textFieldRef, placeholderText, onKeyDown, onEnterKeyDown, supportNewline, inputClassName, errorMessage, disabled, children } = props;\n const mergedRootStyle = mergeStyles(inputBoxWrapperStyle, styles === null || styles === void 0 ? void 0 : styles.root);\n const mergedInputFieldStyle = mergeStyles(inputBoxStyle, inputClassName);\n const mergedTextContainerStyle = mergeStyles(textContainerStyle, styles === null || styles === void 0 ? void 0 : styles.textFieldContainer);\n const mergedTextFieldStyle = concatStyleSets(textFieldStyle, {\n fieldGroup: styles === null || styles === void 0 ? void 0 : styles.textField,\n errorMessage: styles === null || styles === void 0 ? void 0 : styles.systemMessage,\n suffix: {\n backgroundColor: 'transparent',\n padding: '0 0'\n }\n });\n const onTextFieldKeyDown = useCallback((ev) => {\n if (isEnterKeyEventFromCompositionSession(ev.nativeEvent)) {\n return;\n }\n if (ev.key === 'Enter' && (ev.shiftKey === false || !supportNewline)) {\n ev.preventDefault();\n onEnterKeyDown && onEnterKeyDown();\n }\n onKeyDown && onKeyDown(ev);\n }, [onEnterKeyDown, onKeyDown, supportNewline]);\n const onRenderChildren = () => {\n return React.createElement(React.Fragment, null, children);\n };\n const renderTextField = () => {\n const textFieldProps = {\n autoFocus: props.autoFocus === 'sendBoxTextField',\n multiline: true,\n autoAdjustHeight: true,\n multiple: false,\n resizable: false,\n componentRef: textFieldRef,\n id,\n inputClassName: mergedInputFieldStyle,\n placeholder: placeholderText,\n autoComplete: 'off',\n styles: mergedTextFieldStyle,\n disabled,\n errorMessage,\n onRenderSuffix: props.children ? onRenderChildren : undefined\n };\n return React.createElement(\"div\", { style: textFieldProps.errorMessage ? {\n padding: '0 0 5px 5px'\n } : undefined },\n React.createElement(TextField, Object.assign({}, textFieldProps, { \"data-ui-id\": dataUiId, value: textValue, onChange: onChange, onKeyDown: onTextFieldKeyDown, onFocus: e => {\n // Fix for setting the cursor to the correct position when multiline is true\n // This approach should be reviewed during migration to FluentUI v9\n e.currentTarget.value = '';\n e.currentTarget.value = textValue;\n } })));\n };\n return React.createElement(Stack, { className: mergedRootStyle },\n React.createElement(\"div\", { className: mergedTextContainerStyle }, renderTextField()));\n};\n//# sourceMappingURL=InputBoxComponent.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 { IconButton, useTheme } from '@fluentui/react';\nimport React, { useCallback, useState } from 'react';\nimport { localVideoCameraCycleButtonStyles } from './styles/VideoGallery.styles';\nimport { useLocale } from '../localization';\n/**\n * local video tile camera cycle button - for use on mobile screens only.\n * @internal\n */\nexport const LocalVideoCameraCycleButton = (props) => {\n const { cameras, selectedCamera, onSelectCamera, label, ariaDescription, size } = props;\n const theme = useTheme();\n const [waitForCamera, setWaitForCamera] = useState(false);\n const onChangeCameraClick = useCallback((device) => __awaiter(void 0, void 0, void 0, function* () {\n // Throttle changing camera to prevent too many callbacks\n if (onSelectCamera) {\n setWaitForCamera(true);\n try {\n yield onSelectCamera(device);\n }\n finally {\n setWaitForCamera(false);\n }\n }\n }), [onSelectCamera]);\n const disabled = !!waitForCamera;\n const cameraLoadingString = useLocale().strings.cameraButton.tooltipVideoLoadingContent;\n return React.createElement(IconButton, { \"data-ui-id\": 'local-camera-switcher-button', styles: localVideoCameraCycleButtonStyles(theme, size), disabled: disabled, iconProps: {\n iconName: 'LocalCameraSwitch'\n }, ariaLabel: label, ariaDescription: disabled ? cameraLoadingString : ariaDescription, \"aria-live\": 'polite', onClick: () => {\n if (cameras && cameras.length > 1 && selectedCamera !== undefined) {\n const index = cameras.findIndex(camera => selectedCamera.id === camera.id);\n const newCamera = cameras[(index + 1) % cameras.length];\n if (!newCamera) {\n throw new Error('Camera not found');\n }\n onChangeCameraClick(newCamera);\n }\n } });\n};\n//# sourceMappingURL=LocalVideoCameraButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles, Stack, Spinner } from '@fluentui/react';\nimport { concatStyleSets, Layer } from '@fluentui/react';\nimport { _formatString } from \"../../../acs-ui-common/src\";\nimport React, { useMemo } from 'react';\nimport { useCallback } from 'react';\nimport { LocalVideoCameraCycleButton } from './LocalVideoCameraButton';\nimport { StreamMedia } from './StreamMedia';\nimport { useLocalVideoStreamLifecycleMaintainer } from './VideoGallery/useVideoStreamLifecycleMaintainer';\nimport { VideoTile } from './VideoTile';\nimport { useTheme } from '../theming';\nimport { MeetingReactionOverlay } from './MeetingReactionOverlay';\nimport { useVideoTileContextualMenuProps } from './VideoGallery/useVideoTileContextualMenuProps';\nimport { _DrawerMenu } from './Drawer';\nimport { drawerMenuWrapperStyles } from './VideoGallery/styles/RemoteVideoTile.styles';\nimport { videoContainerStyles, overlayStyles, overlayStylesTransparent, loadSpinnerStyles } from './styles/VideoTile.styles';\n/**\n * A memoized version of VideoTile for rendering local participant.\n *\n * @internal\n */\nexport const _LocalVideoTile = React.memo((props) => {\n const { isAvailable, isMuted, onCreateLocalStreamView, onDisposeLocalStreamView, localVideoViewOptions, renderElement, userId, showLabel, alwaysShowLabelBackground, displayName, initialsName, onRenderAvatar, showMuteIndicator, styles, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription, raisedHand, reaction, isSpotlighted, spotlightedParticipantUserIds, onStartSpotlight, onStopSpotlight, maxParticipantsToSpotlight, menuKind, strings, reactionResources, isScreenSharingOn } = props;\n const theme = useTheme();\n const localVideoStreamProps = useMemo(() => ({\n isMirrored: localVideoViewOptions === null || localVideoViewOptions === void 0 ? void 0 : localVideoViewOptions.isMirrored,\n isStreamAvailable: isAvailable,\n onCreateLocalStreamView,\n onDisposeLocalStreamView,\n renderElementExists: !!renderElement,\n scalingMode: localVideoViewOptions === null || localVideoViewOptions === void 0 ? void 0 : localVideoViewOptions.scalingMode\n }), [isAvailable, localVideoViewOptions === null || localVideoViewOptions === void 0 ? void 0 : localVideoViewOptions.isMirrored, localVideoViewOptions === null || localVideoViewOptions === void 0 ? void 0 : localVideoViewOptions.scalingMode, onCreateLocalStreamView, onDisposeLocalStreamView, renderElement]);\n // Handle creating, destroying and updating the video stream as necessary\n useLocalVideoStreamLifecycleMaintainer(localVideoStreamProps);\n const contextualMenuProps = useVideoTileContextualMenuProps({\n participant: {\n userId: userId !== null && userId !== void 0 ? userId : ''\n },\n strings: Object.assign({}, strings),\n spotlightedParticipantUserIds,\n isSpotlighted,\n onStartSpotlight,\n onStopSpotlight,\n maxParticipantsToSpotlight,\n myUserId: userId\n });\n const videoTileContextualMenuProps = useMemo(() => {\n if (menuKind !== 'contextual' || !contextualMenuProps) {\n return {};\n }\n return {\n contextualMenu: contextualMenuProps\n };\n return {};\n }, [contextualMenuProps, menuKind]);\n const videoTileStyles = useMemo(() => {\n if (isSpotlighted) {\n return concatStyleSets({\n root: {\n outline: `0.25rem solid ${theme.palette.neutralTertiaryAlt}`,\n outlineOffset: '-0.25rem'\n }\n }, styles);\n }\n return styles;\n }, [isSpotlighted, theme.palette.neutralTertiaryAlt, styles]);\n const [drawerMenuItemProps, setDrawerMenuItemProps] = React.useState([]);\n const onKeyDown = useCallback((e) => {\n if (e.key === 'Enter') {\n setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([])));\n }\n }, [setDrawerMenuItemProps, contextualMenuProps]);\n const renderVideoStreamElement = useMemo(() => {\n // Checking if renderElement is well defined or not as calling SDK has a number of video streams limitation which\n // implies that, after their threshold, all streams have no child (blank video)\n if (!renderElement || !renderElement.childElementCount) {\n // Returning `undefined` results in the placeholder with avatar being shown\n return undefined;\n }\n return React.createElement(React.Fragment, null,\n React.createElement(FloatingLocalCameraCycleButton, { showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview !== null && showCameraSwitcherInLocalPreview !== void 0 ? showCameraSwitcherInLocalPreview : false, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: localVideoCameraSwitcherLabel, localVideoSelectedDescription: localVideoSelectedDescription }),\n React.createElement(StreamMedia, { videoStreamElement: renderElement, isMirrored: true }),\n props.participantsCount === 1 && !isScreenSharingOn && React.createElement(Stack, { className: mergeStyles(videoContainerStyles, overlayStyles()) },\n React.createElement(Spinner, { label: strings === null || strings === void 0 ? void 0 : strings.waitingScreenText, ariaLive: \"assertive\", role: \"alert\", labelPosition: \"bottom\", styles: loadSpinnerStyles(theme, true) })));\n }, [localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription, renderElement, showCameraSwitcherInLocalPreview, props.participantsCount, strings === null || strings === void 0 ? void 0 : strings.waitingScreenText, theme, isScreenSharingOn]);\n const videoTileOverlay = useMemo(() => {\n const reactionOverlay = reactionResources !== undefined ? React.createElement(MeetingReactionOverlay, { overlayMode: \"grid-tiles\", reaction: reaction, reactionResources: reactionResources }) : undefined;\n return reactionOverlay;\n }, [reaction, reactionResources]);\n const onRenderAvatarOneParticipant = useCallback(() => {\n return React.createElement(Stack, { className: mergeStyles(videoContainerStyles, overlayStylesTransparent()) },\n React.createElement(Spinner, { label: strings === null || strings === void 0 ? void 0 : strings.waitingScreenText, ariaLive: \"assertive\", labelPosition: \"bottom\", role: \"alert\", styles: loadSpinnerStyles(theme, false) }));\n }, [strings === null || strings === void 0 ? void 0 : strings.waitingScreenText, theme]);\n return React.createElement(Stack, { \"data-ui-id\": \"local-video-tile\", className: mergeStyles({\n width: '100%',\n height: '100%'\n }), onKeyDown: menuKind === 'drawer' ? onKeyDown : undefined },\n React.createElement(VideoTile, Object.assign({ key: userId !== null && userId !== void 0 ? userId : 'local-video-tile', userId: userId, renderElement: renderVideoStreamElement, showLabel: showLabel, alwaysShowLabelBackground: alwaysShowLabelBackground, displayName: displayName, initialsName: initialsName, styles: videoTileStyles, onRenderPlaceholder: props.participantsCount === 1 && !isScreenSharingOn ? onRenderAvatarOneParticipant : onRenderAvatar, isMuted: isMuted, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, raisedHand: raisedHand, isSpotlighted: isSpotlighted }, videoTileContextualMenuProps, { onLongTouch: () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([]))), overlay: videoTileOverlay }), drawerMenuItemProps.length > 0 && React.createElement(Layer, { hostId: props.drawerMenuHostId },\n React.createElement(Stack, { styles: drawerMenuWrapperStyles },\n React.createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItemProps([]), items: drawerMenuItemProps })))));\n});\nconst FloatingLocalCameraCycleButton = (props) => {\n const { showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel, localVideoSelectedDescription } = props;\n const ariaDescription = (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) && localVideoSelectedDescription && _formatString(localVideoSelectedDescription, {\n cameraName: localVideoCameraCycleButtonProps.selectedCamera.name\n });\n return React.createElement(Stack, { horizontalAlign: \"end\" }, showCameraSwitcherInLocalPreview && (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.cameras) !== undefined && (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.selectedCamera) !== undefined && (localVideoCameraCycleButtonProps === null || localVideoCameraCycleButtonProps === void 0 ? void 0 : localVideoCameraCycleButtonProps.onSelectCamera) !== undefined && React.createElement(LocalVideoCameraCycleButton, { cameras: localVideoCameraCycleButtonProps.cameras, selectedCamera: localVideoCameraCycleButtonProps.selectedCamera, onSelectCamera: localVideoCameraCycleButtonProps.onSelectCamera, label: localVideoCameraSwitcherLabel, ariaDescription: ariaDescription }));\n};\nconst convertContextualMenuItemsToDrawerMenuItemProps = (contextualMenuProps, onLightDismiss) => {\n if (!contextualMenuProps) {\n return [];\n }\n return contextualMenuProps.items.map(item => {\n return {\n itemKey: item.key,\n text: item.text,\n iconProps: item.iconProps,\n disabled: item.disabled,\n onItemClick: () => {\n var _a;\n (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);\n onLightDismiss === null || onLightDismiss === void 0 ? void 0 : onLightDismiss();\n }\n };\n });\n};\n//# sourceMappingURL=LocalVideoTile.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useCallback } from 'react';\nimport { useMemo } from 'react';\nimport { Modal, Stack, useTheme, Text, IconButton, Icon } from '@fluentui/react';\nimport { themedPhoneInfoModalStyle, titleClassName, titleContainerClassName, phoneInfoTextStyle, phoneInfoIcon, phoneInfoInctructionLine, phoneInfoStep, stepTextStyle, infoConnectionLinkStyle, phoneInfoIconStyle } from './styles/TeamsMeetingConferenceInfo';\nimport { useLocale } from '../localization';\nimport { _pxToRem } from \"../../../acs-ui-common/src\";\nimport { _formatPhoneNumber } from './utils/formatPhoneNumber';\n/**\n * @public\n * a component for setting spoken languages\n */\nexport const MeetingConferencePhoneInfoModal = (props) => {\n var _a;\n const { conferencePhoneInfoList, showModal, onDismissMeetingPhoneInfoSettings } = props;\n const theme = useTheme();\n const strings = useLocale().strings.meetingConferencePhoneInfo;\n const onDismiss = useCallback(() => {\n if (onDismissMeetingPhoneInfoSettings) {\n onDismissMeetingPhoneInfoSettings();\n }\n }, [onDismissMeetingPhoneInfoSettings]);\n const PhoneInfoModalStyle = useMemo(() => themedPhoneInfoModalStyle(theme), [theme]);\n return React.createElement(React.Fragment, null,\n React.createElement(Modal, { titleAriaId: strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalTitle, isOpen: showModal, onDismiss: onDismiss, isBlocking: true, styles: PhoneInfoModalStyle },\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", verticalAlign: \"center\", className: titleContainerClassName },\n React.createElement(Text, { role: \"heading\", \"aria-level\": 2, className: titleClassName }, strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalTitle),\n React.createElement(IconButton, { iconProps: {\n iconName: 'Cancel'\n }, ariaLabel: strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalTitle, onClick: onDismiss, style: {\n color: theme.palette.black\n } })),\n conferencePhoneInfoList.length === 0 && React.createElement(Stack, { horizontal: true },\n React.createElement(Text, { className: stepTextStyle }, strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalNoPhoneAvailable)),\n conferencePhoneInfoList.length > 0 && React.createElement(Stack, null,\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", className: phoneInfoInctructionLine },\n React.createElement(Stack.Item, { style: {\n display: 'flex'\n } },\n React.createElement(Stack, { horizontal: true, className: phoneInfoStep },\n React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme) },\n React.createElement(Stack, { verticalAlign: \"center\", horizontalAlign: \"center\" },\n React.createElement(Icon, { iconName: \"JoinByPhoneDialStepIcon\", className: phoneInfoIconStyle(theme) }))),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: stepTextStyle }, strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalDialIn)))),\n React.createElement(Stack.Item, { className: phoneInfoStep }, conferencePhoneInfoList.map((phoneNumber, index) => React.createElement(Stack.Item, { key: index },\n React.createElement(Text, { className: phoneInfoTextStyle },\n _formatPhoneNumber(phoneNumber.phoneNumber, true),\n ' ',\n phoneNumber.isTollFree ? strings.meetingConferencePhoneInfoModalTollFree : strings.meetingConferencePhoneInfoModalToll),\n React.createElement(\"br\", null),\n React.createElement(Text, { className: phoneInfoTextStyle },\n \" \",\n formatPhoneNumberInfo(phoneNumber, strings)))))),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", verticalAlign: \"center\", className: phoneInfoInctructionLine },\n React.createElement(Stack.Item, { style: {\n display: 'flex'\n } },\n React.createElement(Stack, { horizontal: true },\n React.createElement(Stack, { className: infoConnectionLinkStyle(theme) }),\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme) },\n React.createElement(Stack, { verticalAlign: \"center\", horizontalAlign: \"center\" },\n React.createElement(Icon, { iconName: \"JoinByPhoneConferenceIdIcon\", className: phoneInfoIconStyle(theme) }))),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: stepTextStyle }, strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalMeetingId)))),\n React.createElement(Text, { className: phoneInfoTextStyle }, formatMeetingId((_a = conferencePhoneInfoList[0]) === null || _a === void 0 ? void 0 : _a.conferenceId))),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\", verticalAlign: \"center\" },\n React.createElement(Stack, { horizontal: true },\n React.createElement(Stack.Item, { className: phoneInfoIcon(theme), style: {\n marginLeft: _pxToRem(2)\n } },\n React.createElement(Icon, { iconName: \"JoinByPhoneWaitToBeAdmittedIcon\", className: phoneInfoIconStyle(theme) })),\n React.createElement(Stack.Item, null,\n React.createElement(Text, { className: stepTextStyle }, strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalWait)))))));\n};\n/**\n * @internal\n * format phone number link\n */\nexport const formatPhoneNumberLink = (phoneNumber) => {\n return `tel:+${phoneNumber.phoneNumber},,${phoneNumber.conferenceId}#`;\n};\n/**\n * @internal\n * format phone number\n */\nexport const formatPhoneNumberInfo = (phoneNumber, strings) => {\n const templateText = phoneNumber.country && phoneNumber.city ? strings === null || strings === void 0 ? void 0 : strings.meetingConferencePhoneInfoModalTollGeoData : '';\n return (templateText === null || templateText === void 0 ? void 0 : templateText.replace('{country}', phoneNumber.country || '').replace('{city}', phoneNumber.city || '').trim()) || '';\n};\n/**\n * @internal\n * format meeting id\n */\nexport const formatMeetingId = (meetingId) => {\n if (!meetingId) {\n return '';\n }\n if ((meetingId === null || meetingId === void 0 ? void 0 : meetingId.length) !== 9) {\n return meetingId;\n }\n return [meetingId.slice(0, 3), meetingId.slice(3, 6), meetingId.slice(6, 9)].join(' ') + '#';\n};\n//# sourceMappingURL=MeetingConferencePhoneInfo.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport { ParticipantVideoTileOverlay } from './VideoGallery/ParticipantVideoTileOverlay';\nimport { RemoteContentShareReactionOverlay } from './VideoGallery/RemoteContentShareReactionOverlay';\n/**\n * Emoji max size\n * @internal\n */\nconst DEFAULT_EMOJI_MAX_SIZE_PX = 70;\n/**\n * Emoji min size\n * @internal\n */\nconst DEFAULT_EMOJI_MIN_SIZE_PX = 32;\n/**\n * Emoji resize scale constant\n * @internal\n */\nconst REACTION_EMOJI_RESIZE_SCALE_CONSTANT = 3;\n/**\n * Reaction overlay component\n *\n * Can be used with {@link VideoTile}.\n *\n * @internal\n */\nexport const MeetingReactionOverlay = (props) => {\n const { overlayMode, reaction, reactionResources, localParticipant, remoteParticipants } = props;\n const [emojiSizePx, setEmojiSizePx] = useState(0);\n const [divHeight, setDivHeight] = useState(0);\n const [divWidth, setDivWidth] = useState(0);\n const videoTileRef = useRef(null);\n const observer = useRef(new ResizeObserver((entries) => {\n var _a;\n const domRect = (_a = entries.at(0)) === null || _a === void 0 ? void 0 : _a.contentRect;\n const width = domRect !== undefined ? domRect.width : 0;\n const height = domRect !== undefined ? domRect.height : 0;\n const reactionEmojiCalcSize = Math.min(width, height) / REACTION_EMOJI_RESIZE_SCALE_CONSTANT;\n // we only want to set the persona size if it has changed\n if (reactionEmojiCalcSize !== emojiSizePx) {\n setEmojiSizePx(Math.max(Math.min(reactionEmojiCalcSize, DEFAULT_EMOJI_MAX_SIZE_PX), DEFAULT_EMOJI_MIN_SIZE_PX));\n }\n if (height !== divHeight) {\n setDivHeight(height);\n }\n if (width !== divWidth) {\n setDivWidth(width);\n }\n }));\n useLayoutEffect(() => {\n if (videoTileRef.current) {\n observer.current.observe(videoTileRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [videoTileRef]);\n if (overlayMode === 'grid-tiles') {\n return React.createElement(\"div\", { ref: videoTileRef, style: {\n width: '100%',\n height: '100%',\n pointerEvents: 'none'\n } },\n React.createElement(ParticipantVideoTileOverlay, { emojiSize: emojiSizePx, reaction: reaction, reactionResources: reactionResources }));\n }\n else if (props.overlayMode === 'screen-share' || props.overlayMode === 'content-share') {\n return React.createElement(\"div\", { ref: videoTileRef, style: {\n width: '100%',\n height: '100%',\n pointerEvents: 'none'\n } },\n React.createElement(RemoteContentShareReactionOverlay, { hostDivHeight: divHeight, hostDivWidth: divWidth, reactionResources: reactionResources, localParticipant: localParticipant, remoteParticipants: remoteParticipants }));\n }\n else {\n return React.createElement(React.Fragment, null);\n }\n};\n//# sourceMappingURL=MeetingReactionOverlay.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Icon } from '@fluentui/react';\nimport React from 'react';\nimport LiveMessage from './Announcer/LiveMessage';\n/**\n * Component to display message status icon\n *\n * @internal\n */\nexport const MessageStatusIcon = (props) => {\n const { shouldAnnounce, iconName, iconClassName, ariaLabel } = props;\n return React.createElement(React.Fragment, null,\n ariaLabel && shouldAnnounce && React.createElement(LiveMessage, { message: ariaLabel, ariaLive: \"polite\" }),\n React.createElement(\"div\", null,\n React.createElement(Icon, { role: 'status', \"aria-live\": shouldAnnounce ? 'polite' : 'off', \"data-ui-id\": 'chat-composite-message-status-icon', \"aria-label\": ariaLabel, iconName: iconName, className: iconClassName })));\n};\n//# sourceMappingURL=MessageStatusIcon.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles, TooltipHost } from '@fluentui/react';\nimport { _formatString } from \"../../../acs-ui-common/src\";\nimport React, { useState } from 'react';\nimport { useLocale } from '../localization';\nimport { useTheme } from '../theming';\nimport { isDarkThemed } from '../theming/themeUtils';\nimport { MessageStatusIndicatorErrorIconStyle, MessageStatusIndicatorIconStyle } from './styles/MessageStatusIndicator.styles';\nimport { MessageStatusIcon } from './MessageStatusIcon';\n/**\n * Component to display the status of a sent message.\n *\n * Adds an icon and tooltip corresponding to the message status.\n *\n * @internal\n */\nexport const MessageStatusIndicatorInternal = (props) => {\n const { status, styles, remoteParticipantsCount, onToggleToolTip, readCount, shouldAnnounce } = props;\n const localeStrings = useLocale().strings.messageStatusIndicator;\n const [isTooltipToggled, setIsTooltipToggled] = useState(false);\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const theme = useTheme();\n const calloutStyle = {\n root: {\n padding: 0\n },\n calloutMain: {\n padding: '0.5rem'\n }\n };\n // Place callout with no gap between it and the button.\n const calloutProps = {\n gapSpace: 0,\n styles: calloutStyle,\n backgroundColor: isDarkThemed(theme) ? theme.palette.neutralLighter : ''\n };\n switch (status) {\n case 'failed':\n return React.createElement(TooltipHost, { content: strings.failedToSendTooltipText, \"data-ui-id\": \"chat-composite-message-tooltip\", calloutProps: Object.assign({}, calloutProps), styles: hostStyles },\n React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: \"MessageFailed\", iconClassName: mergeStyles(MessageStatusIndicatorErrorIconStyle, {\n color: isDarkThemed(theme) ? theme.semanticColors.errorText : theme.palette.redDark\n }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.failedToSendAriaLabel }));\n case 'sending':\n return React.createElement(TooltipHost, { content: strings.sendingTooltipText, \"data-ui-id\": \"chat-composite-message-tooltip\", calloutProps: Object.assign({}, calloutProps), styles: hostStyles },\n React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: \"MessageSending\", iconClassName: mergeStyles(MessageStatusIndicatorIconStyle, {\n color: theme.palette.themePrimary\n }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.sendingAriaLabel }));\n case 'seen':\n return React.createElement(TooltipHost, { calloutProps: Object.assign({}, calloutProps), \"data-ui-id\": \"chat-composite-message-tooltip\", styles: hostStyles, content: \n // when it's just 1 to 1 texting, we don't need to know who has read the message, just show message as 'seen'\n // when readCount is 0, we have a bug, show 'seen' to cover up as a fall back\n // when participant count is 0, we have a bug, show 'seen' to cover up as a fall back\n readCount === 0 || remoteParticipantsCount && remoteParticipantsCount <= 1 || !readCount || !remoteParticipantsCount || strings.readByTooltipText === undefined ? strings.seenTooltipText : _formatString(strings.readByTooltipText, {\n messageThreadReadCount: `${readCount}`,\n remoteParticipantsCount: `${remoteParticipantsCount}`\n }), onTooltipToggle: () => {\n if (onToggleToolTip) {\n onToggleToolTip(!isTooltipToggled);\n setIsTooltipToggled(!isTooltipToggled);\n }\n } },\n React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: \"MessageSeen\", iconClassName: mergeStyles({\n color: theme.palette.themePrimary\n }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.seenAriaLabel }));\n case 'delivered':\n return React.createElement(TooltipHost, { calloutProps: Object.assign({}, calloutProps), content: strings.deliveredTooltipText, \"data-ui-id\": \"chat-composite-message-tooltip\", styles: hostStyles },\n React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: \"MessageDelivered\", iconClassName: mergeStyles(MessageStatusIndicatorIconStyle, {\n color: theme.palette.themePrimary\n }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.deliveredAriaLabel }));\n default:\n return React.createElement(React.Fragment, null);\n }\n};\n// The TooltipHost root uses display: inline by default.\n// To prevent sizing issues or tooltip positioning issues, we override to inline-block.\n// For more details see \"Icon Button with Tooltip\" on https://developer.microsoft.com/en-us/fluentui#/controls/web/button\nconst hostStyles = {\n root: {\n display: 'inline-block'\n }\n};\nconst MemoMessageStatusIcon = React.memo((obj) => {\n return React.createElement(MessageStatusIcon, Object.assign({}, obj));\n});\n//# sourceMappingURL=MessageStatusIndicatorInternal.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, useEffect, useMemo, useRef, useState } from 'react';\nimport { Icon, mergeStyles, PrimaryButton } from '@fluentui/react';\nimport { Chat } from '@fluentui-contrib/react-chat';\nimport { mergeClasses, useArrowNavigationGroup } from '@fluentui/react-components';\nimport { DownIconStyle, newMessageButtonContainerStyle, messageThreadContainerStyle, messageThreadWrapperContainerStyle, useChatStyles, buttonWithIconStyles, newMessageButtonStyle } from './styles/MessageThread.styles';\nimport { delay } from './utils/delay';\nimport { memoizeFnAll } from \"../../../acs-ui-common/src\";\nimport { useLocale } from '../localization/LocalizationProvider';\nimport { isNarrowWidth, _useContainerWidth } from './utils/responsive';\nimport getParticipantsWhoHaveReadMessage from './utils/getParticipantsWhoHaveReadMessage';\nimport { useTheme } from '../theming';\nimport { FluentV9ThemeProvider } from './../theming/FluentV9ThemeProvider';\nimport LiveAnnouncer from './Announcer/LiveAnnouncer';\nimport { createStyleFromV8Style } from './styles/v8StyleShim';\nimport { ChatMessageComponentWrapper } from './ChatMessage/ChatMessageComponentWrapper';\nimport { MessageStatusIndicatorInternal } from './MessageStatusIndicatorInternal';\nimport { Announcer } from './Announcer';\nconst isMessageSame = (first, second) => {\n return first.messageId === second.messageId && first.content === second.content && first.contentType === second.contentType && JSON.stringify(first.createdOn) === JSON.stringify(second.createdOn) && first.senderId === second.senderId && first.senderDisplayName === second.senderDisplayName && JSON.stringify(first.editedOn) === JSON.stringify(second.editedOn);\n};\n/**\n * Get the latest message from the message array.\n *\n * @param messages\n */\nconst getLatestChatMessage = (messages) => {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if ((message === null || message === void 0 ? void 0 : message.messageType) === 'chat' && !!message.createdOn) {\n return message;\n }\n }\n return undefined;\n};\n/**\n * Compare latestMessageFromPreviousMessages & latestMessageFromNewMessages to see if the new message is not from\n * current user.\n */\nconst isThereNewMessageNotFromCurrentUser = (userId, latestMessageFromPreviousMessages, latestMessageFromNewMessages) => {\n if (latestMessageFromNewMessages === undefined) {\n return false;\n }\n if (latestMessageFromPreviousMessages === undefined) {\n return latestMessageFromNewMessages.senderId !== userId;\n }\n return !isMessageSame(latestMessageFromNewMessages, latestMessageFromPreviousMessages) && latestMessageFromNewMessages.senderId !== userId;\n};\n/**\n * Returns true if the current user sent the latest message and false otherwise. It will ignore messages that have no\n * sender, messages that have failed to send, and messages from the current user that is marked as SEEN. This is meant\n * as an indirect way to detect if user is at bottom of the chat when the component updates with new messages. If we\n * updated this component due to current user sending a message we want to then call scrollToBottom.\n */\nconst didUserSendTheLatestMessage = (userId, latestMessageFromPreviousMessages, latestMessageFromNewMessages) => {\n if (latestMessageFromNewMessages === undefined) {\n return false;\n }\n if (latestMessageFromPreviousMessages === undefined) {\n return latestMessageFromNewMessages.senderId === userId;\n }\n return !isMessageSame(latestMessageFromNewMessages, latestMessageFromPreviousMessages) && latestMessageFromNewMessages.senderId === userId;\n};\nconst DefaultJumpToNewMessageButton = (props) => {\n const { text, onClick } = props;\n return React.createElement(PrimaryButton, { className: newMessageButtonStyle, styles: buttonWithIconStyles, text: text, onClick: onClick, onRenderIcon: () => React.createElement(Icon, { iconName: \"Down\", className: DownIconStyle }) });\n};\nconst memoizeAllMessages = memoizeFnAll((message, showMessageDate, showMessageStatus, strings, index, onUpdateMessage, onCancelEditMessage, onDeleteMessage, onSendMessage, disableEditing, lastSeenChatMessage, lastSendingChatMessage, lastDeliveredChatMessage) => {\n let key = message.messageId;\n let statusToRender = undefined;\n if (message.messageType === 'chat') {\n if ((!message.messageId || message.messageId === '') && 'clientMessageId' in message) {\n key = message.clientMessageId;\n }\n if (showMessageStatus && message.mine) {\n switch (message.messageId) {\n case lastSeenChatMessage:\n {\n statusToRender = 'seen';\n break;\n }\n case lastSendingChatMessage:\n {\n statusToRender = 'sending';\n break;\n }\n case lastDeliveredChatMessage:\n {\n statusToRender = 'delivered';\n break;\n }\n }\n }\n if (message.mine && message.status === 'failed') {\n statusToRender = 'failed';\n }\n }\n return {\n key: key !== null && key !== void 0 ? key : 'id_' + index,\n statusToRender,\n message,\n strings,\n showDate: showMessageDate,\n onUpdateMessage,\n onCancelEditMessage,\n onDeleteMessage,\n onSendMessage,\n disableEditing,\n showMessageStatus\n };\n});\nconst getLastChatMessageIdWithStatus = (messages, status) => {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if ((message === null || message === void 0 ? void 0 : message.messageType) === 'chat' && message.status === status && message.mine) {\n return message.messageId;\n }\n }\n return undefined;\n};\nconst getLastChatMessageForCurrentUser = (messages) => {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if ((message === null || message === void 0 ? void 0 : message.messageType) === 'chat' && message.mine) {\n return message;\n }\n }\n return undefined;\n};\n/**\n * `MessageThread` allows you to easily create a component for rendering chat messages, handling scrolling behavior of new/old messages and customizing icons & controls inside the chat thread.\n * @param props - of type MessageThreadProps\n *\n * Users will need to provide at least chat messages and userId to render the `MessageThread` component.\n * Users can also customize `MessageThread` by passing in their own Avatar, `MessageStatusIndicator` icon, `JumpToNewMessageButton`, `LoadPreviousMessagesButton` and the behavior of these controls.\n *\n * `MessageThread` internally uses the `Chat` component from `@fluentui-contrib/chat`. You can checkout the details about these components [here](https://microsoft.github.io/fluentui-contrib/react-chat/).\n *\n * @public\n */\nexport const MessageThread = (props) => {\n var _a;\n const theme = useTheme();\n const chatBody = useMemo(() => {\n return React.createElement(FluentV9ThemeProvider, { v8Theme: theme },\n React.createElement(MessageThreadWrapper, Object.assign({}, props)));\n }, [theme, props]);\n return React.createElement(\"div\", { className: mergeStyles(messageThreadContainerStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root) }, chatBody);\n};\n/**\n * @private\n */\nexport const MessageThreadWrapper = (props) => {\n var _a;\n const { messages: newMessages, userId, participantCount, readReceiptsBySenderId, styles, disableJumpToNewMessageButton = false, showMessageDate = false, showMessageStatus = false, numberOfChatMessagesToReload = 5, onMessageSeen, onRenderMessageStatus, onRenderAvatar, onLoadPreviousChatMessages, onRenderJumpToNewMessageButton, onRenderMessage, onUpdateMessage, onCancelEditMessage, onDeleteMessage, onSendMessage, inlineImageOptions } = props;\n // We need this state to wait for one tick and scroll to bottom after messages have been initialized.\n // Otherwise chatScrollDivRef.current.clientHeight is wrong if we scroll to bottom before messages are initialized.\n const [chatMessagesInitialized, setChatMessagesInitialized] = useState(false);\n const [isAtBottomOfScroll, setIsAtBottomOfScroll] = useState(true);\n const [forceUpdate, setForceUpdate] = useState(0);\n // Used to decide if should auto scroll to bottom or show \"new message\" button\n const [latestPreviousChatMessage, setLatestPreviousChatMessage] = useState(undefined);\n const [latestCurrentChatMessage, setLatestCurrentChatMessage] = useState(undefined);\n const [existsNewChatMessage, setExistsNewChatMessage] = useState(false);\n const [lastSeenChatMessage, setLastSeenChatMessage] = useState(undefined);\n const [lastDeliveredChatMessage, setLastDeliveredChatMessage] = useState(undefined);\n const [lastSendingChatMessage, setLastSendingChatMessage] = useState(undefined);\n // readCount and participantCount will only need to be updated on-fly when user hover on an indicator\n const [readCountForHoveredIndicator, setReadCountForHoveredIndicator] = useState(undefined);\n const localeStrings = useLocale().strings.messageThread;\n const strings = useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);\n // it is required to use useState for messages\n // as the scrolling logic requires re - render at a specific point in time\n const [messages, setMessages] = useState([]);\n // id for the latest deleted message\n const [latestDeletedMessageId, setLatestDeletedMessageId] = useState(undefined);\n // this value is used to check if a message is deleted for the previous value of messages array\n const previousMessagesRef = useRef([]);\n // an aria label for Narrator to notify when a message is deleted\n const [deletedMessageAriaLabel, setDeletedMessageAriaLabel] = useState(undefined);\n const onDeleteMessageCallback = useCallback((messageId) => __awaiter(void 0, void 0, void 0, function* () {\n if (!onDeleteMessage) {\n return;\n }\n try {\n // reset deleted message label in case if there was a value already (messages are deleted 1 after another)\n setDeletedMessageAriaLabel(undefined);\n setLatestDeletedMessageId(messageId);\n lastChatMessageStatus.current = 'deleted';\n // we should set up latestDeletedMessageId before the onDeleteMessage call\n // as otherwise in very rare cases the messages array can be updated before latestDeletedMessageId\n yield onDeleteMessage(messageId);\n }\n catch (e) {\n console.log('onDeleteMessage failed: messageId', messageId, 'error', e);\n }\n }), [onDeleteMessage]);\n const isAllChatMessagesLoadedRef = useRef(false);\n // isAllChatMessagesLoadedRef needs to be updated every time when a new adapter is set in order to display correct data\n // onLoadPreviousChatMessages is updated when a new adapter is set\n useEffect(() => {\n if (onLoadPreviousChatMessages) {\n isAllChatMessagesLoadedRef.current = false;\n }\n }, [onLoadPreviousChatMessages]);\n const previousTopRef = useRef(-1);\n const previousHeightRef = useRef(-1);\n const messageIdSeenByMeRef = useRef('');\n const chatScrollDivRef = useRef(null);\n const isLoadingChatMessagesRef = useRef(false);\n useEffect(() => {\n if (latestDeletedMessageId === undefined) {\n setDeletedMessageAriaLabel(undefined);\n }\n else {\n if (!previousMessagesRef.current.find(message => message.messageId === latestDeletedMessageId)) {\n // the message is deleted in previousMessagesRef\n // no need to update deletedMessageAriaLabel\n setDeletedMessageAriaLabel(undefined);\n }\n else if (!messages.find(message => message.messageId === latestDeletedMessageId)) {\n // the message is deleted in messages array but still exists in previousMessagesRef\n // update deletedMessageAriaLabel\n setDeletedMessageAriaLabel(strings.messageDeletedAnnouncementAriaLabel);\n }\n else {\n // the message exists in both arrays\n // no need to update deletedMessageAriaLabel\n setDeletedMessageAriaLabel(undefined);\n }\n }\n previousMessagesRef.current = messages;\n }, [latestDeletedMessageId, messages, strings.messageDeletedAnnouncementAriaLabel]);\n const messagesRef = useRef(messages);\n const setMessagesRef = (messagesWithAttachedValue) => {\n messagesRef.current = messagesWithAttachedValue;\n setMessages(messagesWithAttachedValue);\n };\n const isAtBottomOfScrollRef = useRef(isAtBottomOfScroll);\n const setIsAtBottomOfScrollRef = (isAtBottomOfScrollValue) => {\n isAtBottomOfScrollRef.current = isAtBottomOfScrollValue;\n setIsAtBottomOfScroll(isAtBottomOfScrollValue);\n };\n const chatMessagesInitializedRef = useRef(chatMessagesInitialized);\n const setChatMessagesInitializedRef = (chatMessagesInitialized) => {\n chatMessagesInitializedRef.current = chatMessagesInitialized;\n setChatMessagesInitialized(chatMessagesInitialized);\n };\n const chatThreadRef = useRef(null);\n // When the chat thread is narrow, we perform space optimizations such as overlapping\n // the avatar on top of the chat message and moving the chat accept/reject edit buttons\n // to a new line\n const chatThreadWidth = _useContainerWidth(chatThreadRef);\n const isNarrow = chatThreadWidth ? isNarrowWidth(chatThreadWidth) : false;\n /**\n * ClientHeight controls the number of messages to render. However ClientHeight will not be initialized after the\n * first render (not sure but I guess Fluent is updating it in hook which is after render maybe?) so we need to\n * trigger a re-render until ClientHeight is initialized. This force re-render should only happen once.\n */\n const clientHeight = (_a = chatThreadRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight;\n // we try to only send those message status if user is scrolled to the bottom.\n const sendMessageStatusIfAtBottom = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (!isAtBottomOfScrollRef.current || !document.hasFocus() || !messagesRef.current || messagesRef.current.length === 0 || !showMessageStatus) {\n return;\n }\n const messagesWithId = messagesRef.current.filter(message => {\n return message.messageType === 'chat' && !message.mine && !!message.messageId;\n });\n if (messagesWithId.length === 0) {\n return;\n }\n const lastMessage = messagesWithId[messagesWithId.length - 1];\n try {\n if (onMessageSeen && lastMessage && lastMessage.messageId && lastMessage.messageId !== messageIdSeenByMeRef.current) {\n yield onMessageSeen(lastMessage.messageId);\n messageIdSeenByMeRef.current = lastMessage.messageId;\n }\n }\n catch (e) {\n console.log('onMessageSeen Error', lastMessage, e);\n }\n }), [showMessageStatus, onMessageSeen]);\n const scrollToBottom = useCallback(() => {\n if (chatScrollDivRef.current) {\n chatScrollDivRef.current.scrollTop = chatScrollDivRef.current.scrollHeight;\n }\n setExistsNewChatMessage(false);\n setIsAtBottomOfScrollRef(true);\n sendMessageStatusIfAtBottom();\n }, [sendMessageStatusIfAtBottom]);\n const handleScrollToTheBottom = useCallback(() => {\n if (!chatScrollDivRef.current) {\n return;\n }\n const atBottom = Math.ceil(chatScrollDivRef.current.scrollTop) >= chatScrollDivRef.current.scrollHeight - chatScrollDivRef.current.clientHeight;\n if (atBottom) {\n sendMessageStatusIfAtBottom();\n if (!isAtBottomOfScrollRef.current) {\n scrollToBottom();\n }\n }\n setIsAtBottomOfScrollRef(atBottom);\n }, [scrollToBottom, sendMessageStatusIfAtBottom]);\n // Infinite scrolling + threadInitialize function\n const fetchNewMessageWhenAtTop = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (!isLoadingChatMessagesRef.current) {\n if (onLoadPreviousChatMessages) {\n isLoadingChatMessagesRef.current = true;\n try {\n // Fetch message until scrollTop reach the threshold for fetching new message\n while (!isAllChatMessagesLoadedRef.current && chatScrollDivRef.current && chatScrollDivRef.current.scrollTop <= 500) {\n isAllChatMessagesLoadedRef.current = yield onLoadPreviousChatMessages(numberOfChatMessagesToReload);\n yield delay(200);\n }\n }\n finally {\n // Set isLoadingChatMessagesRef to false after messages are fetched\n isLoadingChatMessagesRef.current = false;\n }\n }\n }\n }), [numberOfChatMessagesToReload, onLoadPreviousChatMessages]);\n // The below 2 of useEffects are design for fixing infinite scrolling problem\n // Scrolling element will behave differently when scrollTop = 0(it sticks at the top)\n // we need to get previousTop before it prepend contents\n // Execute order [newMessage useEffect] => get previousTop => dom update => [messages useEffect]\n useEffect(() => {\n if (!chatScrollDivRef.current) {\n return;\n }\n previousTopRef.current = chatScrollDivRef.current.scrollTop;\n previousHeightRef.current = chatScrollDivRef.current.scrollHeight;\n }, [newMessages]);\n useEffect(() => {\n if (!chatScrollDivRef.current) {\n return;\n }\n chatScrollDivRef.current.scrollTop = chatScrollDivRef.current.scrollHeight - (previousHeightRef.current - previousTopRef.current);\n }, [messages]);\n // Fetch more messages to make the scroll bar appear, infinity scroll is then handled in the handleScroll function.\n useEffect(() => {\n fetchNewMessageWhenAtTop();\n }, [fetchNewMessageWhenAtTop]);\n /**\n * One time run useEffects. Sets up listeners when component is mounted and tears down listeners when component\n * unmounts unless these function changed\n */\n useEffect(() => {\n window && window.addEventListener('click', sendMessageStatusIfAtBottom);\n window && window.addEventListener('focus', sendMessageStatusIfAtBottom);\n return () => {\n window && window.removeEventListener('click', sendMessageStatusIfAtBottom);\n window && window.removeEventListener('focus', sendMessageStatusIfAtBottom);\n };\n }, [sendMessageStatusIfAtBottom]);\n useEffect(() => {\n const chatScrollDiv = chatScrollDivRef.current;\n chatScrollDiv === null || chatScrollDiv === void 0 ? void 0 : chatScrollDiv.addEventListener('scroll', handleScrollToTheBottom);\n chatScrollDiv === null || chatScrollDiv === void 0 ? void 0 : chatScrollDiv.addEventListener('scroll', fetchNewMessageWhenAtTop);\n return () => {\n chatScrollDiv === null || chatScrollDiv === void 0 ? void 0 : chatScrollDiv.removeEventListener('scroll', handleScrollToTheBottom);\n chatScrollDiv === null || chatScrollDiv === void 0 ? void 0 : chatScrollDiv.removeEventListener('scroll', fetchNewMessageWhenAtTop);\n };\n }, [fetchNewMessageWhenAtTop, handleScrollToTheBottom]);\n useEffect(() => {\n if (clientHeight === undefined) {\n setForceUpdate(forceUpdate + 1);\n return;\n }\n // Only scroll to bottom if isAtBottomOfScrollRef is true\n isAtBottomOfScrollRef.current && scrollToBottom();\n }, [clientHeight, forceUpdate, scrollToBottom, chatMessagesInitialized]);\n useEffect(() => {\n var _a;\n const newStatus = (_a = getLastChatMessageForCurrentUser(newMessages)) === null || _a === void 0 ? void 0 : _a.status;\n if (newStatus !== undefined) {\n if (lastChatMessageStatus.current === 'deleted' && newStatus === 'sending') {\n // enforce message life cycle\n // message status should always be [ sending -> delivered -> seen (optional) -> deleted ] or [sending -> failed -> deleted]\n // not any other way around\n // therefore, if current message status is deleted, we should only update it if newStatus is sending\n lastChatMessageStatus.current = newStatus;\n }\n else if (lastChatMessageStatus.current !== 'deleted') {\n lastChatMessageStatus.current = newStatus;\n }\n }\n // The hook should depend on newMessages not on messages as otherwise it will skip the sending status for a first message\n }, [newMessages]);\n /**\n * This needs to run to update latestPreviousChatMessage & latestCurrentChatMessage.\n * These two states are used to manipulate scrollbar\n */\n useEffect(() => {\n setLatestPreviousChatMessage(getLatestChatMessage(messagesRef.current));\n setLatestCurrentChatMessage(getLatestChatMessage(newMessages));\n setMessagesRef(newMessages);\n !chatMessagesInitializedRef.current && setChatMessagesInitializedRef(true);\n setLastDeliveredChatMessage(getLastChatMessageIdWithStatus(newMessages, 'delivered'));\n setLastSeenChatMessage(getLastChatMessageIdWithStatus(newMessages, 'seen'));\n setLastSendingChatMessage(getLastChatMessageIdWithStatus(newMessages, 'sending'));\n }, [newMessages]);\n /**\n * This needs to run after messages are rendered so we can manipulate the scroll bar.\n */\n useEffect(() => {\n // If user just sent the latest message then we assume we can move user to bottom of scroll.\n if (isThereNewMessageNotFromCurrentUser(userId, latestPreviousChatMessage, latestCurrentChatMessage) && !isAtBottomOfScrollRef.current) {\n setExistsNewChatMessage(true);\n }\n else if (didUserSendTheLatestMessage(userId, latestPreviousChatMessage, latestCurrentChatMessage) || isAtBottomOfScrollRef.current) {\n scrollToBottom();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messages]);\n const lastChatMessageStatus = useRef(undefined);\n const participantCountRef = useRef(participantCount);\n const readReceiptsBySenderIdRef = useRef(readReceiptsBySenderId);\n participantCountRef.current = participantCount;\n readReceiptsBySenderIdRef.current = readReceiptsBySenderId;\n const onActionButtonClickMemo = useCallback((message, setMessageReadBy) => {\n if (participantCountRef.current && participantCountRef.current - 1 > 1 && readReceiptsBySenderIdRef.current) {\n setMessageReadBy(getParticipantsWhoHaveReadMessage(message, readReceiptsBySenderIdRef.current));\n }\n }, []);\n const defaultStatusRenderer = useCallback((message, participantCount, readCount, status) => {\n // we should only announce label if the message status isn't deleted\n // because after message is deleted, we now need to render statusIndicator for previous messages\n // and their status has been announced already and we should not announce them again\n const shouldAnnounce = lastChatMessageStatus.current !== 'deleted';\n const onToggleToolTip = (isToggled) => {\n if (isToggled && readReceiptsBySenderIdRef.current) {\n setReadCountForHoveredIndicator(getParticipantsWhoHaveReadMessage(message, readReceiptsBySenderIdRef.current).length);\n }\n else {\n setReadCountForHoveredIndicator(undefined);\n }\n };\n return React.createElement(MessageStatusIndicatorInternal, { status: status, readCount: readCount, onToggleToolTip: onToggleToolTip, \n // -1 because participant count does not include myself\n remoteParticipantsCount: participantCount ? participantCount - 1 : 0, shouldAnnounce: shouldAnnounce });\n }, []);\n const theme = useTheme();\n const messagesToDisplay = useMemo(() => {\n return memoizeAllMessages(memoizedMessageFn => {\n return messages.map((message, index) => {\n return memoizedMessageFn(message, showMessageDate, showMessageStatus, strings, index, onUpdateMessage, onCancelEditMessage, onDeleteMessageCallback, onSendMessage, props.disableEditing, lastDeliveredChatMessage, lastSeenChatMessage, lastSendingChatMessage);\n });\n });\n }, [lastDeliveredChatMessage, lastSeenChatMessage, lastSendingChatMessage, messages, onCancelEditMessage, onDeleteMessageCallback, onSendMessage, onUpdateMessage, props.disableEditing, showMessageDate, showMessageStatus, strings]);\n const classes = useChatStyles();\n const chatArrowNavigationAttributes = useArrowNavigationGroup({\n axis: 'vertical',\n memorizeCurrent: false\n });\n return React.createElement(\"div\", { className: mergeStyles(messageThreadWrapperContainerStyle), ref: chatThreadRef },\n existsNewChatMessage && !disableJumpToNewMessageButton && React.createElement(\"div\", { className: mergeStyles(newMessageButtonContainerStyle, styles === null || styles === void 0 ? void 0 : styles.newMessageButtonContainer) }, onRenderJumpToNewMessageButton ? onRenderJumpToNewMessageButton({\n text: strings.newMessagesIndicator,\n onClick: scrollToBottom\n }) : React.createElement(DefaultJumpToNewMessageButton, { text: strings.newMessagesIndicator, onClick: scrollToBottom })),\n React.createElement(LiveAnnouncer, null,\n React.createElement(FluentV9ThemeProvider, { v8Theme: theme },\n React.createElement(Chat\n // styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors\n , Object.assign({ \n // styles?.chatContainer used in className and style prop as style prop can't handle CSS selectors\n className: mergeClasses(classes.root, mergeStyles(styles === null || styles === void 0 ? void 0 : styles.chatContainer)), ref: chatScrollDivRef, style: Object.assign({}, createStyleFromV8Style(styles === null || styles === void 0 ? void 0 : styles.chatContainer)) }, chatArrowNavigationAttributes),\n latestDeletedMessageId && React.createElement(Announcer, { key: latestDeletedMessageId, announcementString: deletedMessageAriaLabel, ariaLive: 'polite' }),\n messagesToDisplay.map((message) => {\n return React.createElement(MemoChatMessageComponentWrapper, Object.assign({}, message, { userId: userId, key: message.key, styles: styles, shouldOverlapAvatarAndMessage: isNarrow, strings: strings, onRenderAvatar: onRenderAvatar, onRenderMessage: onRenderMessage, onRenderMessageStatus: onRenderMessageStatus, defaultStatusRenderer: defaultStatusRenderer, onActionButtonClick: onActionButtonClickMemo, readCount: readCountForHoveredIndicator, participantCount: participantCount, inlineImageOptions: inlineImageOptions }));\n })))));\n};\nconst MemoChatMessageComponentWrapper = React.memo((obj) => {\n return React.createElement(ChatMessageComponentWrapper, Object.assign({}, obj));\n});\n//# sourceMappingURL=MessageThread.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, { useState, useCallback } from 'react';\nimport { useLocale } from '../localization';\nimport { ControlBarButton } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { ContextualMenuItemType, Toggle, Stack } from '@fluentui/react';\nimport { generateDefaultDeviceMenuProps } from './DevicesButton';\nimport { Announcer } from './Announcer';\n/**\n * A button to turn microphone on / off.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const MicrophoneButton = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const { onToggleMicrophone } = props;\n const localeStrings = useLocale().strings.microphoneButton;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const [announcerString, setAnnouncerString] = useState(undefined);\n const isSplit = (_a = props.split) !== null && _a !== void 0 ? _a : props.enableDeviceSelectionMenu;\n // The button should be disabled when there are no mics. However if the button is a split button, if there are\n // no mics but there are speakers, then only the primary part of the button should be disabled to allow for\n // speaker change.\n const primaryDisabled = props.primaryDisabled || (isSplit && !((_b = props.microphones) === null || _b === void 0 ? void 0 : _b.length) ? true : undefined);\n const disabled = props.disabled || isSplit && !((_c = props.microphones) === null || _c === void 0 ? void 0 : _c.length) && !((_d = props.speakers) === null || _d === void 0 ? void 0 : _d.length) || !isSplit && props.microphones && ((_e = props.microphones) === null || _e === void 0 ? void 0 : _e.length) === 0;\n const onRenderMicOnIcon = () => {\n return React.createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: \"ControlButtonMicOn\" });\n };\n const onRenderMicOffIcon = () => {\n return React.createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: \"ControlButtonMicOff\" });\n };\n const isMicOn = props.checked;\n const splitButtonAriaString = isMicOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;\n const toggleAnnouncerString = useCallback((isMicOn) => {\n setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);\n }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);\n const onToggleClick = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (onToggleMicrophone) {\n try {\n yield onToggleMicrophone();\n // allows for the setting of narrator strings triggering the announcer when microphone is turned on or off.\n toggleAnnouncerString(!isMicOn);\n // eslint-disable-next-line no-empty\n }\n finally { }\n }\n }), [isMicOn, onToggleMicrophone, toggleAnnouncerString]);\n const deepNoiseSuppressionToggleStyles = {\n root: {\n margin: '4px',\n padding: '0px 12px',\n flexFlow: 'row-reverse',\n justifyContent: 'space-between'\n },\n label: {\n fontWeight: 400\n }\n };\n const splitButtonMenuItems = [];\n if (props.showNoiseSuppressionButton) {\n splitButtonMenuItems.push({\n key: 'microphoneDNSToggle',\n onRender: () => {\n return React.createElement(Stack, { onClick: () => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n yield ((_a = props.onClickNoiseSuppression) === null || _a === void 0 ? void 0 : _a.call(props));\n setAnnouncerString(props.isDeepNoiseSuppressionOn ? strings.deepNoiseSuppressionOnAnnouncement : strings.deepNoiseSuppressionOffAnnouncement);\n }) },\n React.createElement(Toggle, { label: strings.deepNoiseSuppressionTitle, checked: props.isDeepNoiseSuppressionOn, inlineLabel: true, styles: deepNoiseSuppressionToggleStyles }));\n }\n });\n }\n splitButtonMenuItems.push({\n key: 'microphonePrimaryAction',\n text: props.checked ? strings.onSplitButtonMicrophonePrimaryAction : strings.offSplitButtonMicrophonePrimaryAction,\n onClick: () => {\n onToggleClick();\n },\n iconProps: {\n iconName: props.checked ? 'SplitButtonPrimaryActionMicUnmuted' : 'SplitButtonPrimaryActionMicMuted',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n }\n });\n /**\n * We need to also include the primary action of the button to the\n * split button for mobile devices.\n */\n const splitButtonPrimaryAction = {\n key: 'primaryAction',\n title: 'toggle mic',\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n topDivider: true,\n items: splitButtonMenuItems\n }\n };\n return React.createElement(React.Fragment, null,\n React.createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),\n React.createElement(ControlBarButton, Object.assign({}, props, { onClick: props.onToggleMicrophone ? onToggleClick : props.onClick, onRenderOnIcon: (_f = props.onRenderOnIcon) !== null && _f !== void 0 ? _f : onRenderMicOnIcon, onRenderOffIcon: (_g = props.onRenderOffIcon) !== null && _g !== void 0 ? _g : onRenderMicOffIcon, strings: strings, labelKey: (_h = props.labelKey) !== null && _h !== void 0 ? _h : 'microphoneButtonLabel', menuProps: (_j = props.menuProps) !== null && _j !== void 0 ? _j : (props.enableDeviceSelectionMenu ? generateDefaultDeviceMenuProps(Object.assign(Object.assign({}, props), { styles: (_k = props.styles) === null || _k === void 0 ? void 0 : _k.menuStyles }), strings, splitButtonPrimaryAction) : undefined), menuIconProps: ((_l = props.menuIconProps) !== null && _l !== void 0 ? _l : !props.enableDeviceSelectionMenu) ? {\n hidden: true\n } : undefined, split: (_m = props.split) !== null && _m !== void 0 ? _m : props.enableDeviceSelectionMenu, \"aria-roledescription\": props.enableDeviceSelectionMenu ? strings.microphoneButtonSplitRoleDescription : undefined, \"aria-description\": strings.microphoneAriaDescription, splitButtonAriaLabel: props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined, disabled: disabled, primaryDisabled: primaryDisabled })));\n};\n//# sourceMappingURL=MicrophoneButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/* eslint-disable react/prop-types */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { useBoolean, useMergedRefs, useConst, useSetTimeout, useId, useUnmount } from '@fluentui/react-hooks';\nimport { allowOverscrollOnElement, allowScrollOnElement, AnimationVariables, classNamesFunction, DirectionalHint, elementContains, EventGroup, FocusTrapZone, getGlobalClassNames, getPropsWithDefaults, Icon, KeyCodes, Layer, memoizeFunction, mergeStyles, on, Overlay, Popup, ResponsiveMode, styled, useResponsiveMode, ZIndexes } from '@fluentui/react';\nimport { useWindow } from '@fluentui/react-window-provider';\nconst animationDuration = AnimationVariables.durationValue2;\nconst ZERO = {\n x: 0,\n y: 0\n};\nconst DEFAULT_PROPS = {\n isOpen: false,\n isDarkOverlay: true,\n className: '',\n containerClassName: '',\n enableAriaHiddenSiblings: true\n};\nconst getModalClassNames = classNamesFunction();\nconst getMoveDelta = (ev) => {\n let delta = 10;\n if (ev.shiftKey) {\n if (!ev.ctrlKey) {\n delta = 50;\n }\n }\n else if (ev.ctrlKey) {\n delta = 1;\n }\n return delta;\n};\nconst useComponentRef = (props, focusTrapZone) => {\n React.useImperativeHandle(props.componentRef, () => ({\n focus() {\n if (focusTrapZone.current) {\n focusTrapZone.current.focus();\n }\n }\n }), [focusTrapZone]);\n};\nconst ModalBase = React.forwardRef((propsWithoutDefaults, ref) => {\n var _a;\n const props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n const { allowTouchBodyScroll, className, children, containerClassName, scrollableContentClassName, elementToFocusOnDismiss, firstFocusableSelector, forceFocusInsideTrap, ignoreExternalFocusing, isBlocking, isAlert, isClickableOutsideFocusTrap, isDarkOverlay, onDismiss, layerProps, overlay, isOpen, titleAriaId, styles, subtitleAriaId, theme, topOffsetFixed, responsiveMode, onLayerDidMount, isModeless, dragOptions, onDismissed, minDragPosition, maxDragPosition, dataUiId } = props;\n const rootRef = React.useRef(null);\n const focusTrapZone = React.useRef(null);\n const focusTrapZoneElm = React.useRef(null);\n const mergedRef = useMergedRefs(rootRef, ref);\n const modalResponsiveMode = useResponsiveMode(mergedRef);\n const focusTrapZoneId = useId('ModalFocusTrapZone');\n const win = useWindow();\n const { setTimeout, clearTimeout } = useSetTimeout();\n const [isModalOpen, setIsModalOpen] = React.useState(isOpen);\n const [isVisible, setIsVisible] = React.useState(isOpen);\n const [coordinates, setCoordinates] = React.useState(ZERO);\n const [modalRectangleTop, setModalRectangleTop] = React.useState();\n const [isModalMenuOpen, { toggle: toggleModalMenuOpen, setFalse: setModalMenuClose }] = useBoolean(false);\n const internalState = useConst(() => ({\n onModalCloseTimer: 0,\n allowTouchBodyScroll,\n scrollableContent: null,\n lastSetCoordinates: ZERO,\n events: new EventGroup({})\n }));\n const { keepInBounds } = dragOptions || {};\n const isAlertRole = isAlert !== null && isAlert !== void 0 ? isAlert : (isBlocking && !isModeless);\n const layerClassName = layerProps === undefined ? '' : layerProps.className;\n const classNames = getModalClassNames(styles, {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n theme: theme,\n className,\n containerClassName,\n scrollableContentClassName,\n isOpen,\n isVisible,\n hasBeenOpened: internalState.hasBeenOpened,\n modalRectangleTop,\n topOffsetFixed,\n isModeless,\n layerClassName,\n windowInnerHeight: win === null || win === void 0 ? void 0 : win.innerHeight,\n isDefaultDragHandle: dragOptions && !dragOptions.dragHandleSelector\n });\n const mergedLayerProps = Object.assign(Object.assign({ eventBubblingEnabled: false }, layerProps), { onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount, insertFirst: isModeless, className: classNames.layer });\n // Allow the user to scroll within the modal but not on the body\n const allowScrollOnModal = React.useCallback((elt) => {\n if (elt) {\n if (internalState.allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, internalState.events);\n }\n else {\n allowScrollOnElement(elt, internalState.events);\n }\n }\n else {\n internalState.events.off(internalState.scrollableContent);\n }\n internalState.scrollableContent = elt;\n }, [internalState]);\n const registerInitialModalPosition = () => {\n const dialogMain = focusTrapZoneElm.current;\n const modalRectangle = dialogMain === null || dialogMain === void 0 ? void 0 : dialogMain.getBoundingClientRect();\n if (modalRectangle) {\n if (topOffsetFixed) {\n setModalRectangleTop(modalRectangle.top);\n }\n if (keepInBounds) {\n // x/y are unavailable in IE, so use the equivalent left/top\n internalState.minPosition = minDragPosition !== null && minDragPosition !== void 0 ? minDragPosition : {\n x: -modalRectangle.left,\n y: -modalRectangle.top\n };\n internalState.maxPosition = maxDragPosition !== null && maxDragPosition !== void 0 ? maxDragPosition : {\n x: modalRectangle.left,\n y: modalRectangle.top\n };\n // Make sure the initial co-ordinates are within clamp bounds.\n setCoordinates({\n x: getClampedAxis('x', coordinates.x),\n y: getClampedAxis('y', coordinates.y)\n });\n }\n }\n };\n /**\n * Clamps an axis to a specified min and max position.\n *\n * @param axis A string that represents the axis (x/y).\n * @param position The position on the axis.\n */\n const getClampedAxis = React.useCallback((axis, position) => {\n const { minPosition, maxPosition } = internalState;\n if (keepInBounds && minPosition && maxPosition) {\n position = Math.max(minPosition[axis], position);\n position = Math.min(maxPosition[axis], position);\n }\n return position;\n }, [keepInBounds, internalState]);\n const handleModalClose = () => {\n var _a;\n internalState.lastSetCoordinates = ZERO;\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = false;\n setIsModalOpen(false);\n setCoordinates(ZERO);\n (_a = internalState.disposeOnKeyUp) === null || _a === void 0 ? void 0 : _a.call(internalState);\n onDismissed === null || onDismissed === void 0 ? void 0 : onDismissed();\n };\n const handleDragStart = React.useCallback(() => {\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = false;\n }, [internalState, setModalMenuClose]);\n const handleDrag = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ev, dragData) => {\n setCoordinates(prevValue => ({\n x: getClampedAxis('x', prevValue.x + dragData.delta.x),\n y: getClampedAxis('y', prevValue.y + dragData.delta.y)\n }));\n }, [getClampedAxis]);\n const handleDragStop = React.useCallback(() => {\n if (focusTrapZone.current) {\n focusTrapZone.current.focus();\n }\n }, []);\n const handleEnterKeyboardMoveMode = () => {\n // We need a global handleKeyDown event when we are in the move mode so that we can\n // handle the key presses and the components inside the modal do not get the events\n const handleKeyDown = (ev) => {\n if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {\n // CTRL + ALT + SPACE is handled during keyUp\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n const newLocal = ev.altKey || ev.keyCode === KeyCodes.escape;\n if (isModalMenuOpen && newLocal) {\n setModalMenuClose();\n }\n if (internalState.isInKeyboardMoveMode && (ev.keyCode === KeyCodes.escape || ev.keyCode === KeyCodes.enter)) {\n internalState.isInKeyboardMoveMode = false;\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (internalState.isInKeyboardMoveMode) {\n let handledEvent = true;\n const delta = getMoveDelta(ev);\n switch (ev.keyCode) {\n /* eslint-disable no-fallthrough */\n case KeyCodes.escape:\n setCoordinates(internalState.lastSetCoordinates);\n case KeyCodes.enter:\n {\n // TODO: determine if fallthrough was intentional\n /* eslint-enable no-fallthrough */\n internalState.lastSetCoordinates = ZERO;\n // setIsInKeyboardMoveMode(false);\n break;\n }\n case KeyCodes.up:\n {\n setCoordinates(prevValue => ({\n x: prevValue.x,\n y: getClampedAxis('y', prevValue.y - delta)\n }));\n break;\n }\n case KeyCodes.down:\n {\n setCoordinates(prevValue => ({\n x: prevValue.x,\n y: getClampedAxis('y', prevValue.y + delta)\n }));\n break;\n }\n case KeyCodes.left:\n {\n setCoordinates(prevValue => ({\n x: getClampedAxis('x', prevValue.x - delta),\n y: prevValue.y\n }));\n break;\n }\n case KeyCodes.right:\n {\n setCoordinates(prevValue => ({\n x: getClampedAxis('x', prevValue.x + delta),\n y: prevValue.y\n }));\n break;\n }\n default:\n {\n handledEvent = false;\n }\n }\n if (handledEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n internalState.lastSetCoordinates = coordinates;\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = true;\n internalState.events.on(win, 'keydown', handleKeyDown, true /* useCapture */);\n internalState.disposeOnKeyDown = () => {\n internalState.events.off(win, 'keydown', handleKeyDown, true /* useCapture */);\n internalState.disposeOnKeyDown = undefined;\n };\n };\n const handleExitKeyboardMoveMode = () => {\n var _a;\n internalState.lastSetCoordinates = ZERO;\n internalState.isInKeyboardMoveMode = false;\n (_a = internalState.disposeOnKeyDown) === null || _a === void 0 ? void 0 : _a.call(internalState);\n };\n const registerForKeyUp = () => {\n const handleKeyUp = (ev) => {\n // Needs to handle the CTRL + ALT + SPACE key during keyup due to FireFox bug:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {\n if (elementContains(internalState.scrollableContent, ev.target)) {\n toggleModalMenuOpen();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n if (!internalState.disposeOnKeyUp) {\n internalState.events.on(win, 'keyup', handleKeyUp, true /* useCapture */);\n internalState.disposeOnKeyUp = () => {\n internalState.events.off(win, 'keyup', handleKeyUp, true /* useCapture */);\n internalState.disposeOnKeyUp = undefined;\n };\n }\n };\n React.useEffect(() => {\n clearTimeout(internalState.onModalCloseTimer);\n // Opening the dialog\n if (isOpen) {\n // This must be done after the modal content has rendered\n requestAnimationFrame(() => setTimeout(registerInitialModalPosition, 0));\n setIsModalOpen(true);\n // Add a keyUp handler for all key up events once the dialog is open.\n if (dragOptions) {\n registerForKeyUp();\n }\n internalState.hasBeenOpened = true;\n setIsVisible(true);\n }\n // Closing the dialog\n if (!isOpen && isModalOpen) {\n internalState.onModalCloseTimer = setTimeout(handleModalClose, parseFloat(animationDuration) * 1000);\n setIsVisible(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run if isModalOpen or isOpen mutates or if min/max drag bounds are updated.\n }, [isModalOpen, isOpen, minDragPosition, maxDragPosition]);\n useUnmount(() => {\n internalState.events.dispose();\n });\n useComponentRef(props, focusTrapZone);\n const modalContent = React.createElement(FocusTrapZone, Object.assign({ disabled: true, id: focusTrapZoneId, ref: focusTrapZoneElm, componentRef: focusTrapZone, className: classNames.main, elementToFocusOnDismiss: elementToFocusOnDismiss, isClickableOutsideFocusTrap: isModeless || isClickableOutsideFocusTrap || !isBlocking, ignoreExternalFocusing: ignoreExternalFocusing, forceFocusInsideTrap: forceFocusInsideTrap && !isModeless, firstFocusableSelector: firstFocusableSelector, focusPreviouslyFocusedInnerElement: true, onBlur: internalState.isInKeyboardMoveMode ? handleExitKeyboardMoveMode : undefined, \"data-ui-id\": dataUiId }, (_a = props.focusTrapZoneProps) !== null && _a !== void 0 ? _a : {}),\n dragOptions && internalState.isInKeyboardMoveMode && React.createElement(\"div\", { className: classNames.keyboardMoveIconContainer }, dragOptions.keyboardMoveIconProps ? React.createElement(Icon, Object.assign({}, dragOptions.keyboardMoveIconProps)) : React.createElement(Icon, { iconName: \"move\", className: classNames.keyboardMoveIcon })),\n React.createElement(\"div\", { ref: allowScrollOnModal, className: classNames.scrollableContent, \"data-is-scrollable\": true },\n dragOptions && isModalMenuOpen && React.createElement(dragOptions.menu, { items: [{\n key: 'move',\n text: dragOptions.moveMenuItemText,\n onClick: handleEnterKeyboardMoveMode\n }, {\n key: 'close',\n text: dragOptions.closeMenuItemText,\n onClick: handleModalClose\n }], onDismiss: setModalMenuClose, alignTargetEdge: true, coverTarget: true, directionalHint: DirectionalHint.topLeftEdge, directionalHintFixed: true, shouldFocusOnMount: true, target: internalState.scrollableContent }),\n children));\n return (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n isModalOpen && modalResponsiveMode >= (responsiveMode || ResponsiveMode.small) && React.createElement(Layer, Object.assign({ ref: mergedRef }, mergedLayerProps),\n React.createElement(Popup, { role: isAlertRole ? 'alertdialog' : 'dialog', ariaLabelledBy: titleAriaId, ariaDescribedBy: subtitleAriaId, \n // onDismiss={onDismiss}\n shouldRestoreFocus: !ignoreExternalFocusing, \"aria-modal\": !isModeless },\n React.createElement(\"div\", { className: classNames.root, role: !isModeless ? 'document' : undefined },\n !isModeless && React.createElement(Overlay, Object.assign({ \"aria-hidden\": true, isDarkThemed: isDarkOverlay, onClick: isBlocking ? undefined : onDismiss, allowTouchBodyScroll: allowTouchBodyScroll }, overlay)),\n dragOptions ? React.createElement(DraggableZone, { handleSelector: dragOptions.dragHandleSelector || `#${focusTrapZoneId}`, preventDragSelector: \"button\", onStart: handleDragStart, onDragChange: handleDrag, onStop: handleDragStop, position: coordinates }, modalContent) : modalContent))) || null);\n});\nModalBase.displayName = 'ModalBase';\nconst getDraggableZoneClassNames = memoizeFunction((className, isDragging) => {\n return {\n root: mergeStyles(className, isDragging && {\n touchAction: 'none',\n selectors: {\n '& *': {\n userSelect: 'none'\n }\n }\n })\n };\n});\nconst eventMapping = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\nclass DraggableZone extends React.Component {\n constructor(props) {\n super(props);\n this._currentEventType = eventMapping.mouse;\n this._events = [];\n this._onMouseDown = (event) => {\n const onMouseDown = React.Children.only(this.props.children).props.onMouseDown;\n if (onMouseDown) {\n onMouseDown(event);\n }\n this._currentEventType = eventMapping.mouse;\n return this._onDragStart(event);\n };\n this._onMouseUp = (event) => {\n const onMouseUp = React.Children.only(this.props.children).props.onMouseUp;\n if (onMouseUp) {\n onMouseUp(event);\n }\n this._currentEventType = eventMapping.mouse;\n return this._onDragStop(event);\n };\n this._onTouchStart = (event) => {\n const onTouchStart = React.Children.only(this.props.children).props.onTouchStart;\n if (onTouchStart) {\n onTouchStart(event);\n }\n this._currentEventType = eventMapping.touch;\n return this._onDragStart(event);\n };\n this._onTouchEnd = (event) => {\n const onTouchEnd = React.Children.only(this.props.children).props.onTouchEnd;\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n this._currentEventType = eventMapping.touch;\n this._onDragStop(event);\n };\n this._onDragStart = (event) => {\n // Only handle left click for dragging\n if (typeof event.button === 'number' && event.button !== 0) {\n return false;\n }\n // If the target doesn't match the handleSelector OR\n // if the target does match the preventDragSelector, bail out\n if (this.props.handleSelector && !this._matchesSelector(event.target, this.props.handleSelector) || this.props.preventDragSelector && this._matchesSelector(event.target, this.props.preventDragSelector)) {\n return;\n }\n // Remember the touch identifier if this is a touch event so we can\n // distinguish between individual touches in multitouch scenarios\n // by remembering which touch point we were given\n this._touchId = this._getTouchId(event);\n const position = this._getControlPosition(event);\n if (position === undefined) {\n return;\n }\n const dragData = this._createDragDataFromPosition(position);\n this.props.onStart && this.props.onStart(event, dragData);\n this.setState({\n isDragging: true,\n lastPosition: position\n });\n // hook up the appropriate mouse/touch events to the body to ensure\n // smooth dragging\n this._events = [on(document.body, this._currentEventType.move, this._onDrag, true /* use capture phase */), on(document.body, this._currentEventType.stop, this._onDragStop, true /* use capture phase */)];\n return;\n };\n this._onDrag = (event) => {\n // Prevent scrolling on mobile devices\n if (event.type === 'touchmove') {\n event.preventDefault();\n }\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n // create the updated drag data from the position data\n const updatedData = this._createUpdatedDragData(this._createDragDataFromPosition(position));\n const updatedPosition = updatedData.position;\n this.props.onDragChange && this.props.onDragChange(event, updatedData);\n this.setState({\n position: updatedPosition,\n lastPosition: position\n });\n };\n this._onDragStop = (event) => {\n if (!this.state.isDragging) {\n return;\n }\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n const baseDragData = this._createDragDataFromPosition(position);\n // Set dragging to false and reset the lastPosition\n this.setState({\n isDragging: false,\n lastPosition: undefined\n });\n this.props.onStop && this.props.onStop(event, baseDragData);\n if (this.props.position) {\n this.setState({\n position: this.props.position\n });\n }\n // Remove event handlers\n this._events.forEach(dispose => dispose());\n };\n this.state = {\n isDragging: false,\n position: this.props.position || {\n x: 0,\n y: 0\n },\n lastPosition: undefined\n };\n }\n componentDidUpdate(prevProps) {\n if (this.props.position && (!prevProps.position || this.props.position !== prevProps.position)) {\n this.setState({\n position: this.props.position\n });\n }\n }\n componentWillUnmount() {\n this._events.forEach(dispose => dispose());\n }\n render() {\n const child = React.Children.only(this.props.children);\n const { props } = child;\n const { position } = this.props;\n const { position: statePosition, isDragging } = this.state;\n let x = statePosition.x;\n let y = statePosition.y;\n if (position && !isDragging) {\n x = position.x;\n y = position.y;\n }\n return React.cloneElement(child, {\n style: Object.assign(Object.assign({}, props.style), { transform: `translate(${x}px, ${y}px)` }),\n className: getDraggableZoneClassNames(props.className, this.state.isDragging).root,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onTouchStart: this._onTouchStart,\n onTouchEnd: this._onTouchEnd\n });\n }\n /**\n * Get the control position based off the event that fired\n * @param event - The event to get offsets from\n */\n _getControlPosition(event) {\n const touchObj = this._getActiveTouch(event);\n // did we get the right touch?\n if (this._touchId !== undefined && !touchObj) {\n return undefined;\n }\n const eventToGetOffset = touchObj || event;\n return {\n x: eventToGetOffset.clientX,\n y: eventToGetOffset.clientY\n };\n }\n /**\n * Get the active touch point that we have saved from the event's TouchList\n * @param event - The event used to get the TouchList for the active touch point\n */\n _getActiveTouch(event) {\n return event.targetTouches && this._findTouchInTouchList(event.targetTouches) || event.changedTouches && this._findTouchInTouchList(event.changedTouches);\n }\n /**\n * Get the initial touch identifier associated with the given event\n * @param event - The event that contains the TouchList\n */\n _getTouchId(event) {\n const touch = event.targetTouches && event.targetTouches[0] || event.changedTouches && event.changedTouches[0];\n if (touch) {\n return touch.identifier;\n }\n return;\n }\n /**\n * Returns if an element (or any of the element's parents) match the given selector\n */\n _matchesSelector(element, selector) {\n if (!element || element === document.body) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n const matchesSelectorFn = element.matches || element.webkitMatchesSelector || element.msMatchesSelector; /* for IE */\n if (!matchesSelectorFn) {\n return false;\n }\n return matchesSelectorFn.call(element, selector) || this._matchesSelector(element.parentElement, selector);\n }\n /**\n * Attempts to find the Touch that matches the identifier we stored in dragStart\n * @param touchList The TouchList to look for the stored identifier from dragStart\n */\n _findTouchInTouchList(touchList) {\n var _a;\n if (this._touchId === undefined) {\n return;\n }\n for (let i = 0; i < touchList.length; i++) {\n if (((_a = touchList[i]) === null || _a === void 0 ? void 0 : _a.identifier) === this._touchId) {\n return touchList[i];\n }\n }\n return undefined;\n }\n /**\n * Create DragData based off of the last known position and the new position passed in\n * @param position The new position as part of the drag\n */\n _createDragDataFromPosition(position) {\n const { lastPosition } = this.state;\n // If we have no lastPosition, use the given position\n // for last position\n if (lastPosition === undefined) {\n return {\n delta: {\n x: 0,\n y: 0\n },\n lastPosition: position,\n position\n };\n }\n return {\n delta: {\n x: position.x - lastPosition.x,\n y: position.y - lastPosition.y\n },\n lastPosition,\n position\n };\n }\n /**\n * Creates an updated DragData based off the current position and given baseDragData\n * @param baseDragData The base DragData (from _createDragDataFromPosition) used to calculate the updated positions\n */\n _createUpdatedDragData(baseDragData) {\n const { position } = this.state;\n return {\n position: {\n x: position.x + baseDragData.delta.x,\n y: position.y + baseDragData.delta.y\n },\n delta: baseDragData.delta,\n lastPosition: position\n };\n }\n}\nconst globalClassNames = {\n root: 'ms-Modal',\n main: 'ms-Dialog-main',\n scrollableContent: 'ms-Modal-scrollableContent',\n isOpen: 'is-open',\n layer: 'ms-Modal-Layer'\n};\nconst getStyles = (props) => {\n const { className, containerClassName, scrollableContentClassName, isOpen, isVisible, hasBeenOpened, modalRectangleTop, theme, topOffsetFixed, isModeless, layerClassName, isDefaultDragHandle, windowInnerHeight } = props;\n const { palette, effects, fonts } = theme;\n const classNames = getGlobalClassNames(globalClassNames, theme);\n return {\n root: [classNames.root, fonts.medium, {\n backgroundColor: 'transparent',\n position: isModeless ? 'absolute' : 'fixed',\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0,\n pointerEvents: 'none',\n transition: `opacity ${animationDuration}`\n }, topOffsetFixed && typeof modalRectangleTop === 'number' && hasBeenOpened && {\n alignItems: 'flex-start'\n }, isOpen && classNames.isOpen, isVisible && {\n opacity: 1,\n pointerEvents: 'auto'\n }, className],\n main: [classNames.main, {\n boxShadow: effects.elevation64,\n borderRadius: effects.roundedCorner2,\n backgroundColor: palette.white,\n boxSizing: 'border-box',\n position: 'relative',\n textAlign: 'left',\n outline: '3px solid transparent',\n maxHeight: 'calc(100% - 32px)',\n maxWidth: 'calc(100% - 32px)',\n minHeight: '176px',\n minWidth: '288px',\n overflowY: 'auto',\n zIndex: isModeless ? ZIndexes.Layer : undefined\n }, topOffsetFixed && typeof modalRectangleTop === 'number' && hasBeenOpened && {\n top: modalRectangleTop\n }, isDefaultDragHandle && {\n cursor: 'move'\n }, containerClassName],\n scrollableContent: [classNames.scrollableContent, {\n overflowY: 'auto',\n flexGrow: 1,\n maxHeight: '100vh',\n selectors: {\n ['@supports (-webkit-overflow-scrolling: touch)']: {\n maxHeight: windowInnerHeight\n }\n }\n }, scrollableContentClassName],\n layer: isModeless && [layerClassName, classNames.layer, {\n position: 'static',\n width: 'unset',\n height: 'unset'\n }],\n keyboardMoveIconContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n padding: '3px 0px'\n },\n keyboardMoveIcon: {\n fontSize: fonts.xLargePlus.fontSize,\n width: '24px'\n }\n };\n};\n/** @internal */\nexport const _ModalClone = styled(ModalBase, getStyles, undefined, {\n scope: 'Modal',\n fields: ['theme', 'styles', 'enableAriaHiddenSiblings']\n});\n_ModalClone.displayName = 'Modal';\n//# sourceMappingURL=ModalClone.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useState } from 'react';\nimport { Icon, IconButton, PrimaryButton, Stack, useTheme, Text, DefaultButton, Link } from '@fluentui/react';\nimport { cancelIcon } from './styles/ImageOverlay.style';\nimport { containerStyles, hiddenContainerStyles, messageTextStyles, notificationIconStyles, notificationLinkStyles, titleTextStyles } from './styles/Notification.styles';\n/**\n * A component to show notification messages on the UI.\n *\n * @public\n */\nexport const Notification = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n const strings = props.notificationStrings;\n const theme = useTheme();\n const [show, setShow] = useState(true);\n const { ariaLive = 'assertive', role = 'alert' } = props;\n if (props.autoDismiss) {\n setTimeout(() => {\n // After 5 seconds set the show value to false\n setShow(false);\n }, 5000);\n if (!show) {\n props.onDismiss && props.onDismiss();\n return React.createElement(React.Fragment, null);\n }\n }\n return React.createElement(Stack, { horizontalAlign: \"center\", \"aria-live\": ariaLive, role: role },\n React.createElement(Stack, { \"data-ui-id\": \"notification-bar\", styles: (_b = (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root) !== null && _b !== void 0 ? _b : containerStyles(theme) },\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-between\" },\n React.createElement(Stack, { horizontal: true },\n React.createElement(Icon, Object.assign({ styles: (_d = (_c = props.styles) === null || _c === void 0 ? void 0 : _c.icon) !== null && _d !== void 0 ? _d : notificationIconStyles(), iconName: (_f = (_e = props.notificationIconProps) === null || _e === void 0 ? void 0 : _e.iconName) !== null && _f !== void 0 ? _f : 'ErrorBadge' }, props.notificationIconProps)),\n React.createElement(Text, { styles: (_h = (_g = props.styles) === null || _g === void 0 ? void 0 : _g.title) !== null && _h !== void 0 ? _h : titleTextStyles() }, strings === null || strings === void 0 ? void 0 : strings.title)),\n props.onDismiss && React.createElement(IconButton, { iconProps: cancelIcon, ariaLabel: strings === null || strings === void 0 ? void 0 : strings.dismissButtonAriaLabel, \"aria-live\": 'polite', onClick: props.onDismiss })),\n React.createElement(\"span\", null,\n React.createElement(Text, { styles: (_k = (_j = props.styles) === null || _j === void 0 ? void 0 : _j.content) !== null && _k !== void 0 ? _k : messageTextStyles(theme) },\n \" \", strings === null || strings === void 0 ? void 0 :\n strings.message),\n props.onClickLink && (strings === null || strings === void 0 ? void 0 : strings.linkLabel) && React.createElement(Link, { styles: (_m = (_l = props.styles) === null || _l === void 0 ? void 0 : _l.link) !== null && _m !== void 0 ? _m : notificationLinkStyles(theme), onClick: props.onClickLink }, strings === null || strings === void 0 ? void 0 : strings.linkLabel)),\n React.createElement(Stack, { horizontal: true, horizontalAlign: \"space-evenly\" },\n (strings === null || strings === void 0 ? void 0 : strings.secondaryButtonLabel) && React.createElement(DefaultButton, { onClick: props.onClickSecondaryButton, styles: (_p = (_o = props.styles) === null || _o === void 0 ? void 0 : _o.secondaryButton) !== null && _p !== void 0 ? _p : {\n root: {\n marginTop: '1rem'\n }\n } }, strings === null || strings === void 0 ? void 0 : strings.secondaryButtonLabel),\n (strings === null || strings === void 0 ? void 0 : strings.primaryButtonLabel) && React.createElement(PrimaryButton, { onClick: props.onClickPrimaryButton, styles: (_r = (_q = props.styles) === null || _q === void 0 ? void 0 : _q.primaryButton) !== null && _r !== void 0 ? _r : {\n root: {\n marginTop: '1rem'\n }\n } }, strings === null || strings === void 0 ? void 0 : strings.primaryButtonLabel))),\n props.showStackedEffect && React.createElement(Stack, { className: hiddenContainerStyles(theme) }));\n};\n//# sourceMappingURL=Notification.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Stack } from '@fluentui/react';\nimport { useLocale } from '../localization';\nimport { NotificationIconProps, dismissNotification, dropDismissalsForInactiveNotifications, notificationsToShow } from './utils';\nimport { Notification } from './Notification';\n/**\n * A component to show notifications on the UI.\n * All strings that can be shown are accepted as the {@link NotificationStackProps.strings} so that they can be localized.\n * Active notifications are selected by {@link NotificationStackProps.activeNotifications}.\n *\n * This component internally tracks dismissed by the user.\n * * Notifications that have an associated timestamp: The notification is shown on the UI again if it occurs after being dismissed.\n * * Notifications that do not have a timestamp: The notification is dismissed until it disappears from the props.\n * If the notification recurs, it is shown in the UI.\n *\n *\n * @public\n */\nexport const NotificationStack = (props) => {\n var _a, _b;\n const localeStrings = useLocale().strings.notificationStack;\n const strings = (_a = props.strings) !== null && _a !== void 0 ? _a : localeStrings;\n const maxNotificationsToShow = (_b = props.maxNotificationsToShow) !== null && _b !== void 0 ? _b : 2;\n const trackDismissedNotificationsInternally = !props.onDismissNotification;\n // Timestamp for when this comopnent is first mounted.\n // Never updated through the lifecycle of this component.\n const mountTimestamp = useRef(new Date(Date.now()));\n const [dismissedNotifications, setDismissedNotifications] = useState([]);\n // dropDismissalsForInactiveNotifications only returns a new object if `dismissedErrors` actually changes.\n // Without this behaviour, this `useEffect` block would cause a render loop.\n useEffect(() => {\n trackDismissedNotificationsInternally && setDismissedNotifications(dropDismissalsForInactiveNotifications(props.activeNotifications, dismissedNotifications));\n }, [props.activeNotifications, dismissedNotifications, trackDismissedNotificationsInternally]);\n const activeNotifications = notificationsToShow(props.activeNotifications, dismissedNotifications, props.ignorePremountNotifications ? mountTimestamp.current : undefined);\n return React.createElement(Stack, { \"data-ui-id\": \"notifications-stack\", style: {\n width: 'fit-content'\n } }, activeNotifications.map((notification, index) => {\n if (index < maxNotificationsToShow) {\n const onDismiss = () => {\n var _a;\n trackDismissedNotificationsInternally ? setDismissedNotifications(dismissNotification(dismissedNotifications, notification)) : (_a = props.onDismissNotification) === null || _a === void 0 ? void 0 : _a.call(props, notification);\n notification.onDismiss && notification.onDismiss();\n };\n return React.createElement(\"div\", { key: index, style: {\n marginBottom: `${index === maxNotificationsToShow - 1 ? 0 : '0.25rem'}`\n } },\n React.createElement(Notification, { notificationStrings: strings ? strings[notification.type] : undefined, notificationIconProps: NotificationIconProps(notification.type), onClickPrimaryButton: () => { var _a; return (_a = notification.onClickPrimaryButton) === null || _a === void 0 ? void 0 : _a.call(notification); }, onClickSecondaryButton: () => { var _a; return (_a = notification.onClickSecondaryButton) === null || _a === void 0 ? void 0 : _a.call(notification); }, onDismiss: onDismiss, showStackedEffect: index === maxNotificationsToShow - 1 && activeNotifications.length > maxNotificationsToShow, autoDismiss: notification.autoDismiss, ariaLive: notification.ariaLive }));\n }\n else {\n return React.createElement(React.Fragment, null);\n }\n }));\n};\n//# sourceMappingURL=NotificationStack.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ContextualMenu, DirectionalHint, Icon, mergeStyles, Persona, PersonaSize, Stack, Text } from '@fluentui/react';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { useIdentifiers } from '../identifiers';\nimport { useLocale } from '../localization';\nimport { useTheme } from '../theming';\nimport { displayNoneStyle, iconContainerStyle, iconStyles, meContainerStyle, menuButtonContainerStyle, participantItemContainerStyle, participantStateStringStyles } from './styles/ParticipantItem.styles';\nimport { _preventDismissOnEvent as preventDismissOnEvent } from \"../../../acs-ui-common/src\";\nimport { useId } from '@fluentui/react-hooks';\n/**\n * Component to render a calling or chat participant.\n *\n * Displays the participant's avatar, displayName and status as well as optional icons and context menu.\n *\n * @public\n */\nexport const ParticipantItem = (props) => {\n var _a, _b, _c;\n const { userId, displayName, onRenderAvatar, menuItems, onRenderIcon, presence, styles, me, onClick, showParticipantOverflowTooltip } = props;\n const [itemHovered, setItemHovered] = useState(false);\n const [menuHidden, setMenuHidden] = useState(true);\n const containerRef = useRef(null);\n const theme = useTheme();\n const localeStrings = useLocale().strings.participantItem;\n const ids = useIdentifiers();\n const participantItemId = useId();\n const participantItemFlyoutId = useId();\n const hasFlyout = !!(menuItems && (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) > 0);\n const flyoutShowing = hasFlyout && menuHidden;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const participantStateString = formatParticipantStateString(props, strings);\n const showMenuIcon = !participantStateString && (itemHovered || !menuHidden) && hasFlyout;\n // For 'me' show empty name so avatar will get 'Person' icon, when there is no name\n const meAvatarText = (displayName === null || displayName === void 0 ? void 0 : displayName.trim()) || '';\n const avatarOptions = {\n text: me ? meAvatarText : (displayName === null || displayName === void 0 ? void 0 : displayName.trim()) || strings.displayNamePlaceholder,\n size: PersonaSize.size32,\n presence: presence,\n initialsTextColor: 'white',\n showOverflowTooltip: showParticipantOverflowTooltip,\n showUnknownPersonaCoin: !me && (!(displayName === null || displayName === void 0 ? void 0 : displayName.trim()) || displayName === strings.displayNamePlaceholder)\n };\n const avatar = onRenderAvatar ? onRenderAvatar(userId !== null && userId !== void 0 ? userId : '', avatarOptions) : React.createElement(Persona, Object.assign({ className: mergeStyles({\n // Prevents persona text from being vertically truncated if a global line height is less than 1.15.\n lineHeight: '1.15rem'\n }, styles === null || styles === void 0 ? void 0 : styles.avatar) }, avatarOptions));\n const meTextStyle = useMemo(() => mergeStyles(meContainerStyle, {\n color: theme.palette.neutralSecondary\n }, styles === null || styles === void 0 ? void 0 : styles.me), [theme.palette.neutralSecondary, styles === null || styles === void 0 ? void 0 : styles.me]);\n const contextualMenuStyle = useMemo(() => mergeStyles({\n background: theme.palette.neutralLighterAlt\n }, styles === null || styles === void 0 ? void 0 : styles.menu), [theme.palette.neutralLighterAlt, styles === null || styles === void 0 ? void 0 : styles.menu]);\n const infoContainerStyle = useMemo(() => mergeStyles(iconContainerStyle, {\n color: theme.palette.neutralSecondary,\n marginLeft: 'auto'\n }, styles === null || styles === void 0 ? void 0 : styles.iconContainer), [theme.palette.neutralSecondary, styles === null || styles === void 0 ? void 0 : styles.iconContainer]);\n const onDismissMenu = () => {\n setItemHovered(false);\n setMenuHidden(true);\n };\n const menuButton = useMemo(() => React.createElement(Stack, { horizontal: true, horizontalAlign: \"end\", className: mergeStyles(menuButtonContainerStyle, {\n color: theme.palette.neutralPrimary\n }), title: strings.menuTitle, \"data-ui-id\": ids.participantItemMenuButton },\n React.createElement(Icon, { iconName: \"ParticipantItemOptionsHovered\", className: mergeStyles(iconStyles, !showMenuIcon ? displayNoneStyle : {}) })), [theme.palette.neutralPrimary, strings.menuTitle, ids.participantItemMenuButton, showMenuIcon]);\n return React.createElement(\"div\", { ref: containerRef, role: 'menuitem', id: participantItemId, \"aria-label\": (_b = (hasFlyout ? (_a = props.strings) === null || _a === void 0 ? void 0 : _a.participantItemWithMoreOptionsAriaLabel : undefined)) !== null && _b !== void 0 ? _b : (_c = props.strings) === null || _c === void 0 ? void 0 : _c.participantItemAriaLabel, \"aria-labelledby\": `${props.ariaLabelledBy} ${participantItemId}`, \"aria-expanded\": flyoutShowing, \"aria-disabled\": hasFlyout || props.onClick ? false : true, \"aria-haspopup\": hasFlyout ? true : undefined, \"aria-controls\": participantItemFlyoutId, \"data-is-focusable\": hasFlyout, \"data-ui-id\": \"participant-item\", className: mergeStyles(participantItemContainerStyle({\n clickable: hasFlyout\n }, theme), styles === null || styles === void 0 ? void 0 : styles.root), onMouseEnter: () => setItemHovered(true), onMouseLeave: () => setItemHovered(false), onClick: () => {\n if (!participantStateString) {\n setItemHovered(true);\n setMenuHidden(false);\n onClick === null || onClick === void 0 ? void 0 : onClick(props);\n }\n if (!menuHidden) {\n onDismissMenu();\n }\n }, tabIndex: hasFlyout ? 0 : undefined },\n React.createElement(Stack, { horizontal: true, className: mergeStyles({\n flexGrow: 1,\n maxWidth: '100%',\n alignItems: 'center'\n }) },\n avatar,\n me && React.createElement(Text, { className: meTextStyle }, strings.isMeText),\n React.createElement(Stack, { horizontal: true, className: mergeStyles(infoContainerStyle) },\n !showMenuIcon && onRenderIcon && onRenderIcon(props),\n !me && participantStateString ? React.createElement(Text, { \"data-ui-id\": \"participant-item-state-string\", className: mergeStyles(participantStateStringStyles) }, participantStateString) : React.createElement(React.Fragment, null, hasFlyout && React.createElement(React.Fragment, null,\n menuButton,\n React.createElement(ContextualMenu, { id: participantItemFlyoutId, items: menuItems, hidden: menuHidden, target: containerRef, onItemClick: onDismissMenu, onDismiss: onDismissMenu, directionalHint: DirectionalHint.bottomRightEdge, className: contextualMenuStyle, calloutProps: {\n preventDismissOnEvent\n } }))))));\n};\n/** @private */\nexport const formatParticipantStateString = (props, strings) => {\n return props.participantState === 'EarlyMedia' || props.participantState === 'Ringing' ? strings === null || strings === void 0 ? void 0 : strings.participantStateRinging : props.participantState === 'Hold' ? strings === null || strings === void 0 ? void 0 : strings.participantStateHold : undefined;\n};\n//# sourceMappingURL=ParticipantItem.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Icon, merge, mergeStyles, PersonaPresence, Stack } from '@fluentui/react';\nimport { Text } from '@fluentui/react';\nimport { useTheme } from '../theming';\nimport { RaisedHandIcon } from './assets/RaisedHandIcon';\nimport React, { useCallback, useMemo } from 'react';\nimport { useIdentifiers } from '../identifiers';\nimport { useLocale } from '../localization';\nimport { formatParticipantStateString, ParticipantItem } from './ParticipantItem';\nimport { iconStyles, participantListItemStyle, participantListStyle } from './styles/ParticipantList.styles';\nimport { _formatString } from \"../../../acs-ui-common/src\";\nconst onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvatar, createParticipantMenuItems, styles, onParticipantClick, showParticipantOverflowTooltip, participantAriaLabelledBy, theme, pinnedParticipants) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n const callingParticipant = participant;\n let presence = undefined;\n if (callingParticipant) {\n presence = PersonaPresence.none;\n }\n const menuItems = createParticipantMenuItems && createParticipantMenuItems(participant);\n const formatDisplayName = (displayName) => {\n if (displayName && strings.attendeeRole) {\n return _formatString(displayName, {\n AttendeeRole: strings.attendeeRole\n });\n }\n return displayName;\n };\n const displayName = formatDisplayName(participant.displayName);\n const callingPalette = theme.callingPalette;\n const isPinned = pinnedParticipants && (pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participant.userId));\n const onRenderIcon = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isScreenSharing) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isMuted) || (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand) || isPinned ? () => {\n var _a;\n return React.createElement(Stack, { horizontal: true, tokens: {\n childrenGap: '0.5rem'\n } },\n callingParticipant.raisedHand && React.createElement(Stack, { horizontal: true, tokens: {\n childrenGap: '0.2rem'\n }, style: {\n alignItems: 'center',\n padding: '0.1rem 0.2rem',\n backgroundColor: theme === null || theme === void 0 ? void 0 : theme.palette.neutralLighter,\n borderRadius: '0.3rem'\n } },\n callingParticipant.raisedHand.raisedHandOrderPosition && React.createElement(Stack.Item, null,\n React.createElement(Text, null, (_a = callingParticipant.raisedHand) === null || _a === void 0 ? void 0 : _a.raisedHandOrderPosition)),\n React.createElement(Stack.Item, null,\n React.createElement(RaisedHandIcon, null))),\n callingParticipant.isScreenSharing && React.createElement(Icon, { iconName: \"ParticipantItemScreenShareStart\", className: iconStyles, ariaLabel: strings.sharingIconLabel }),\n callingParticipant.isMuted && React.createElement(Icon, { iconName: \"ParticipantItemMicOff\", className: iconStyles, ariaLabel: strings.mutedIconLabel }),\n callingParticipant.spotlight && React.createElement(Icon, { iconName: \"ParticipantItemSpotlighted\", className: iconStyles }),\n isPinned && React.createElement(Icon, { iconName: \"ParticipantItemPinned\", className: iconStyles }));\n } : () => null;\n const onRenderAvatarWithRaiseHand = (callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand) && onRenderAvatar ? (userId, options, defaultOnRender) => onRenderAvatar(userId, Object.assign(Object.assign({}, options), { styles: {\n root: {\n border: callingPalette.raiseHandGold\n }\n } }), defaultOnRender) : onRenderAvatar;\n const ariaLabelTemplate = (_a = (menuItems && menuItems.length > 0 ? strings === null || strings === void 0 ? void 0 : strings.participantItemWithMoreOptionsAriaLabel : undefined)) !== null && _a !== void 0 ? _a : strings === null || strings === void 0 ? void 0 : strings.participantItemAriaLabel;\n const ariaLabel = _formatString(ariaLabelTemplate !== null && ariaLabelTemplate !== void 0 ? ariaLabelTemplate : '', {\n displayName: displayName !== null && displayName !== void 0 ? displayName : '',\n connectionState: (_b = formatParticipantStateString(callingParticipant, strings)) !== null && _b !== void 0 ? _b : '',\n mutedState: (_c = (callingParticipant.isMuted ? strings === null || strings === void 0 ? void 0 : strings.mutedIconLabel : undefined)) !== null && _c !== void 0 ? _c : '',\n sharingState: (_d = (callingParticipant.isScreenSharing ? strings === null || strings === void 0 ? void 0 : strings.sharingIconLabel : undefined)) !== null && _d !== void 0 ? _d : '',\n handRaisedState: (_k = (((_e = callingParticipant.raisedHand) === null || _e === void 0 ? void 0 : _e.raisedHandOrderPosition) ? _formatString((_f = strings === null || strings === void 0 ? void 0 : strings.handRaisedIconLabel) !== null && _f !== void 0 ? _f : '', {\n position: (_j = (_h = (_g = callingParticipant.raisedHand) === null || _g === void 0 ? void 0 : _g.raisedHandOrderPosition) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : ''\n }) : undefined)) !== null && _k !== void 0 ? _k : ''\n });\n return React.createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatarWithRaiseHand, onClick: onParticipantClick ? () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant) : undefined, showParticipantOverflowTooltip: showParticipantOverflowTooltip, participantState: callingParticipant.state, ariaLabelledBy: participantAriaLabelledBy, strings: {\n participantItemAriaLabel: ariaLabel\n } });\n};\n/**\n * Sort participants by raised hand order position\n */\nconst sortParticipants = (participants) => {\n const isParticipantListCallParticipant = function (participant) {\n return 'raisedHand' in participant;\n };\n participants.sort((a, b) => {\n if (!isParticipantListCallParticipant(a) || !isParticipantListCallParticipant(b)) {\n return 0;\n }\n const callA = a;\n const callB = b;\n if (callA.raisedHand && callB.raisedHand) {\n return callA.raisedHand.raisedHandOrderPosition - callB.raisedHand.raisedHandOrderPosition;\n }\n else if (callA.raisedHand) {\n return -1;\n }\n else if (callB.raisedHand) {\n return 1;\n }\n return 0;\n });\n return participants;\n};\nconst getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {\n if (!excludeMe || !myUserId) {\n return [...participants];\n }\n const userIndex = participants.map(p => p.userId).indexOf(myUserId);\n if (userIndex === -1) {\n return [...participants];\n }\n const remoteParticipants = [...participants];\n remoteParticipants.splice(userIndex, 1);\n return remoteParticipants;\n};\n/**\n * Component to render all calling or chat participants.\n *\n * By default, each participant is rendered with {@link ParticipantItem}. See {@link ParticipantListProps.onRenderParticipant} to override.\n *\n * @public\n */\nexport const ParticipantList = (props) => {\n var _a, _b, _c, _d;\n const { excludeMe = false, myUserId, participants, onRemoveParticipant, onRenderAvatar, onRenderParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip, participantAriaLabelledBy, pinnedParticipants } = props;\n const theme = useTheme();\n const ids = useIdentifiers();\n const participantItemStrings = useLocale().strings.participantItem;\n const displayedParticipants = useMemo(() => {\n return onRenderParticipant ? participants : getParticipantsForDefaultRender(participants, excludeMe, myUserId);\n }, [participants, excludeMe, myUserId, onRenderParticipant]);\n sortParticipants(displayedParticipants);\n const createParticipantMenuItems = useCallback((participant) => {\n var _a, _b;\n let menuItems = [];\n const participantIsRemovable = participant.isRemovable;\n if (participant.userId !== myUserId && onRemoveParticipant && participantIsRemovable) {\n menuItems.push({\n key: 'remove',\n text: participantItemStrings.removeButtonLabel,\n onClick: () => onRemoveParticipant(participant.userId),\n itemProps: {\n styles: (_b = (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles) === null || _b === void 0 ? void 0 : _b.participantSubMenuItemsStyles\n },\n iconProps: {\n iconName: 'ContextMenuRemoveParticipant',\n styles: {\n root: {\n lineHeight: 0\n }\n }\n },\n 'data-ui-id': ids.participantListRemoveParticipantButton\n });\n }\n if (onFetchParticipantMenuItems) {\n menuItems = onFetchParticipantMenuItems(participant.userId, myUserId, menuItems);\n }\n return menuItems;\n }, [ids.participantListRemoveParticipantButton, myUserId, onFetchParticipantMenuItems, onRemoveParticipant, (_b = (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles) === null || _b === void 0 ? void 0 : _b.participantSubMenuItemsStyles, participantItemStrings.removeButtonLabel]);\n const participantItemStyles = useMemo(() => { var _a; return merge(participantListItemStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles); }, [(_c = props.styles) === null || _c === void 0 ? void 0 : _c.participantItemStyles]);\n return React.createElement(Stack, { \"data-ui-id\": ids.participantList, className: mergeStyles(participantListStyle, (_d = props.styles) === null || _d === void 0 ? void 0 : _d.root), role: 'menu' }, displayedParticipants.map((participant) => onRenderParticipant ? onRenderParticipant(participant) : onRenderParticipantDefault(participant, participantItemStrings, myUserId, onRenderAvatar, createParticipantMenuItems, participantItemStyles, props.onParticipantClick, showParticipantOverflowTooltip, participantAriaLabelledBy, theme, pinnedParticipants)));\n};\n//# sourceMappingURL=ParticipantList.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ContextualMenuItemType, merge } from '@fluentui/react';\nimport { _formatString } from \"../../../acs-ui-common/src\";\nimport copy from 'copy-to-clipboard';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { ParticipantList } from './ParticipantList';\nimport { participantsButtonMenuPropsStyle } from './styles/ControlBar.styles';\nimport { useLocale } from '../localization';\nimport { ControlBarButton } from './ControlBarButton';\nimport { useIdentifiers } from '../identifiers';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { _preventDismissOnEvent as preventDismissOnEvent } from \"../../../acs-ui-common/src\";\nimport { Announcer } from './Announcer';\n/**\n * A button to show a menu with calling or chat participants.\n *\n * Can be used with {@link ControlBar}.\n *\n * This button contains dropdown menu items defined through its property `menuProps`. By default, it can display the number of remote participants with the full list\n * as sub-menu and an option to mute all participants, as well as a copy-to-clipboard button to copy the call invitation URL.\n * This `menuProps` can be fully redefined and its property is of type [IContextualMenuProps](https://developer.microsoft.com/fluentui#/controls/web/contextualmenu#IContextualMenuProps).\n *\n * @public\n */\nexport const ParticipantsButton = (props) => {\n var _a, _b, _c, _d;\n const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;\n const disabled = props.disabled;\n const [copyInviteLinkAnnouncerStrings, setCopyInviteLinkAnnouncerStrings] = useState('');\n const onRenderPeopleIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: \"ControlButtonParticipants\" });\n const ids = useIdentifiers();\n const onMuteAllCallback = useCallback(() => {\n if (onMuteAll) {\n onMuteAll();\n }\n }, [onMuteAll]);\n const defaultParticipantList = useCallback(() => {\n var _a;\n return React.createElement(ParticipantList, { participants: participants, myUserId: myUserId, excludeMe: excludeMe, onRenderParticipant: onRenderParticipant, onRenderAvatar: onRenderAvatar, onRemoveParticipant: onRemoveParticipant, onFetchParticipantMenuItems: onFetchParticipantMenuItems, styles: (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles, showParticipantOverflowTooltip: showParticipantOverflowTooltip });\n }, [excludeMe, myUserId, onRemoveParticipant, onRenderAvatar, onRenderParticipant, participants, (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.participantListStyles, onFetchParticipantMenuItems, showParticipantOverflowTooltip]);\n const onCopyCallback = useCallback(() => {\n if (callInvitationURL) {\n return copy(callInvitationURL);\n }\n return false;\n }, [callInvitationURL]);\n const localeStrings = useLocale().strings.participantsButton;\n const strings = useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);\n const participantCount = participants.length;\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 const generateDefaultParticipantsSubMenuProps = useCallback(() => {\n var _a;\n const items = [];\n if (participantCount > 0) {\n items.push({\n key: 'participantListMenuItemKey',\n onRender: onRenderParticipantList !== null && onRenderParticipantList !== void 0 ? onRenderParticipantList : defaultParticipantList\n });\n items.push({\n key: 'participantsDivider1',\n itemType: ContextualMenuItemType.Divider\n });\n if (onMuteAll) {\n items.push({\n key: 'muteAllKey',\n text: strings.muteAllButtonLabel,\n title: strings.muteAllButtonLabel,\n styles: (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.menuItemStyles,\n iconProps: {\n iconName: 'MicOff2'\n },\n onClick: onMuteAllCallback\n });\n }\n }\n return items;\n }, [participantCount, onRenderParticipantList, defaultParticipantList, onMuteAll, strings.muteAllButtonLabel, (_b = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _b === void 0 ? void 0 : _b.menuItemStyles, onMuteAllCallback]);\n const defaultMenuProps = useMemo(() => {\n var _a, _b;\n const menuProps = {\n title: strings.menuHeader,\n ariaLabel: strings.menuHeader,\n styles: merge(participantsButtonMenuPropsStyle, styles === null || styles === void 0 ? void 0 : styles.menuStyles),\n items: [],\n calloutProps: {\n preventDismissOnEvent\n }\n };\n if (participantCount > 0) {\n const participantIds = participants.map(p => p.userId);\n let participantCountWithoutMe = participantIds.length;\n if (excludeMe) {\n participantCountWithoutMe -= 1;\n }\n menuProps.items.push({\n key: 'participantCountKey',\n name: _formatString(strings.participantsListButtonLabel, {\n numParticipants: `${participantCountWithoutMe}`\n }),\n itemProps: {\n styles: (_a = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _a === void 0 ? void 0 : _a.menuItemStyles\n },\n iconProps: {\n iconName: 'People'\n },\n subMenuProps: {\n items: generateDefaultParticipantsSubMenuProps(),\n calloutProps: {\n styles: {\n root: {\n // Confine the menu to the parents bounds.\n // More info: https://github.com/microsoft/fluentui/issues/18835\n maxWidth: '100%'\n }\n },\n style: {\n maxHeight: '20rem'\n },\n // Disable dismiss on resize to work around a couple Fluent UI bugs\n // See reasoning in the props for the parent menu.\n preventDismissOnEvent\n }\n },\n 'data-ui-id': ids.participantButtonPeopleMenuItem\n });\n }\n if (callInvitationURL) {\n menuProps.items.push({\n key: 'InviteLinkKey',\n name: strings.copyInviteLinkButtonLabel,\n title: strings.copyInviteLinkButtonLabel,\n itemProps: {\n styles: (_b = styles === null || styles === void 0 ? void 0 : styles.menuStyles) === null || _b === void 0 ? void 0 : _b.menuItemStyles\n },\n iconProps: {\n iconName: 'Link'\n },\n onClick: () => {\n onCopyCallback();\n toggleAnnouncerString();\n }\n });\n }\n return menuProps;\n }, [strings.menuHeader, strings.participantsListButtonLabel, strings.copyInviteLinkButtonLabel, styles === null || styles === void 0 ? void 0 : styles.menuStyles, participantCount, callInvitationURL, participants, excludeMe, ids.participantButtonPeopleMenuItem, generateDefaultParticipantsSubMenuProps, onCopyCallback, toggleAnnouncerString]);\n return React.createElement(React.Fragment, null,\n React.createElement(Announcer, { announcementString: copyInviteLinkAnnouncerStrings, ariaLive: 'polite' }),\n React.createElement(ControlBarButton, Object.assign({}, props, { disabled: disabled, menuProps: (_c = props.menuProps) !== null && _c !== void 0 ? _c : defaultMenuProps, menuIconProps: {\n hidden: true\n }, onRenderIcon: onRenderIcon !== null && onRenderIcon !== void 0 ? onRenderIcon : onRenderPeopleIcon, strings: strings, \"aria-label\": strings.ariaLabel, labelKey: (_d = props.labelKey) !== null && _d !== void 0 ? _d : 'participantsButtonLabel' })));\n};\n//# sourceMappingURL=ParticipantsButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { memoizeFunction, Stack } from '@fluentui/react';\nimport React from 'react';\nimport { useTheme } from '../../theming/FluentThemeProvider';\n/** @private */\nexport const PictureInPictureInPicturePrimaryTile = (props) => {\n const boxShadow = useTheme().effects.elevation8;\n return React.createElement(PictureInPictureInPictureTile, { styles: primaryTileStyles(props.orientation, boxShadow) }, props.children);\n};\n/** @private */\nexport const PictureInPictureInPictureSecondaryTile = (props) => React.createElement(PictureInPictureInPictureTile, { styles: secondaryTileStyles(props.orientation) }, props.children);\nconst PictureInPictureInPictureTile = (props) => React.createElement(Stack, { styles: props.styles }, props.children);\nconst primaryTileStyles = memoizeFunction((orientation, themeElevation) => ({\n root: {\n borderRadius: '0.25rem',\n height: orientation === 'landscape' ? '5.5rem' : '8rem',\n width: orientation === 'landscape' ? '8rem' : '5.5rem',\n boxShadow: themeElevation,\n // PiPiP tiles were not designed to host scrollable content. If removed check no scrollbar is showing in e2e tests\n overflow: 'hidden'\n }\n}));\nconst secondaryTileStyles = memoizeFunction((orientation) => ({\n root: {\n borderRadius: '0.25rem',\n height: orientation === 'landscape' ? '1.625rem' : '2rem',\n width: orientation === 'landscape' ? '2rem' : '1.625rem',\n // PiPiP tiles were not designed to host scrollable content. If removed check no scrollbar is showing in e2e tests\n overflow: 'hidden'\n }\n}));\n//# sourceMappingURL=PictureInPictureInPictureTile.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { submitWithKeyboard } from '../utils/keyboardNavigation';\nimport { PictureInPictureInPicturePrimaryTile, PictureInPictureInPictureSecondaryTile } from './PictureInPictureInPictureTile';\n/**\n * Component that displays a video feed for use as a Picture-in-Picture style component.\n * It contains a secondary video feed resulting in an inner Picture-in-Picture style feed.\n *\n * @remarks\n * The double nature of the Picture-in-Picture styles is where this component gets its name; Picture-in-Picture-in-Picture.\n *\n * @internal\n */\nexport const _PictureInPictureInPicture = (props) => {\n return React.createElement(PictureInPictureInPictureContainer, { onClick: props.onClick, primaryView: React.createElement(PictureInPictureInPicturePrimaryTile, Object.assign({}, props.primaryTile)), secondaryView: props.secondaryTile && React.createElement(PictureInPictureInPictureSecondaryTile, Object.assign({}, props.secondaryTile)), ariaLabel: props.strings.rootAriaLabel });\n};\n/**\n * Container for the picture in picture in picture component.\n * This governs positioning and floating of the secondary PiP.\n */\nconst PictureInPictureInPictureContainer = (props) => {\n const onKeyPress = (e) => props.onClick && submitWithKeyboard(e, props.onClick);\n return React.createElement(\"aside\", { style: tileContainerStyles, onClick: props.onClick, onKeyPress: onKeyPress, \"aria-label\": props.ariaLabel, tabIndex: props.onClick ? 0 : -1, \"data-ui-id\": \"picture-in-picture-in-picture-root\" },\n props.primaryView,\n React.createElement(\"div\", { style: secondaryTileFloatingStyles }, props.secondaryView));\n};\nconst tileContainerStyles = {\n display: 'flex',\n width: 'min-content',\n position: 'relative',\n cursor: 'pointer'\n};\nconst secondaryTileFloatingStyles = {\n // The secondary tile should float above the primary tile, aligned to the bottom right.\n position: 'absolute',\n bottom: '0.125rem',\n right: '0.125rem'\n};\n//# sourceMappingURL=PictureInPictureInPicture.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { useLocale } from '../localization';\nimport { ControlBarButton } from './ControlBarButton';\nimport { DefaultPalette, mergeStyles, useTheme } from '@fluentui/react';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\n/**\n * A button to start / stop screen sharing.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const RaiseHandButton = (props) => {\n var _a, _b, _c, _d;\n const localeStrings = useLocale().strings.raiseHandButton;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const theme = useTheme();\n const styles = raiseHandButtonStyles(theme);\n const onRenderRaiseHandIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ControlButtonRaiseHand\" });\n const onRenderLowerHandIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ControlButtonLowerHand\" });\n return React.createElement(ControlBarButton, Object.assign({}, props, { className: mergeStyles(styles, props.styles), onClick: (_a = props.onToggleRaiseHand) !== null && _a !== void 0 ? _a : props.onClick, onRenderOnIcon: (_b = props.onRenderOnIcon) !== null && _b !== void 0 ? _b : onRenderLowerHandIcon, onRenderOffIcon: (_c = props.onRenderOffIcon) !== null && _c !== void 0 ? _c : onRenderRaiseHandIcon, strings: strings, labelKey: (_d = props.labelKey) !== null && _d !== void 0 ? _d : 'raiseHandButtonLabel', \"aria-label\": props.checked ? strings.onLabel : strings.offLabel, \"aria-description\": props.checked ? strings.tooltipOnContent : strings.tooltipOffContent, disabled: props.disabled }));\n};\nconst raiseHandButtonStyles = (theme) => ({\n rootChecked: {\n background: theme.palette.themePrimary,\n color: DefaultPalette.white,\n ':focus::after': {\n outlineColor: `${DefaultPalette.white}`\n }\n },\n rootCheckedHovered: {\n background: theme.palette.themePrimary,\n color: DefaultPalette.white,\n ':focus::after': {\n outlineColor: `${DefaultPalette.white}`\n }\n },\n labelChecked: {\n color: DefaultPalette.white\n }\n});\n//# sourceMappingURL=RaiseHandButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Callout, DefaultButton, FocusZone, mergeStyles, Stack, TooltipHost, useTheme } from '@fluentui/react';\nimport React, { useRef, useState } from 'react';\nimport { ControlBarButton } from './ControlBarButton';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { useLocale } from '../localization';\nimport { emojiStyles, reactionButtonCalloutStyles, reactionButtonStyles, reactionItemButtonStyles, reactionToolTipHostStyle } from './styles/ReactionButton.styles';\nimport { isDarkThemed } from '../theming/themeUtils';\nimport { getEmojiFrameCount } from './VideoGallery/utils/videoGalleryLayoutUtils';\n/**\n * A button to send reactions.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const ReactionButton = (props) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const localeStrings = useLocale().strings.reactionButton;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const theme = useTheme();\n const styles = reactionButtonStyles(theme);\n const onRenderIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ReactionButtonIcon\" });\n const emojis = ['like', 'heart', 'applause', 'laugh', 'surprised'];\n const emojiButtonTooltip = new Map([['like', strings.likeReactionTooltipContent], ['heart', strings.heartReactionTooltipContent], ['applause', strings.applauseReactionTooltipContent], ['laugh', strings.laughReactionTooltipContent], ['surprised', strings.surprisedReactionTooltipContent]]);\n const emojiResource = new Map([['like', (_a = props.reactionResources.likeReaction) === null || _a === void 0 ? void 0 : _a.url], ['heart', (_b = props.reactionResources.heartReaction) === null || _b === void 0 ? void 0 : _b.url], ['applause', (_c = props.reactionResources.applauseReaction) === null || _c === void 0 ? void 0 : _c.url], ['laugh', (_d = props.reactionResources.laughReaction) === null || _d === void 0 ? void 0 : _d.url], ['surprised', (_e = props.reactionResources.surprisedReaction) === null || _e === void 0 ? void 0 : _e.url]]);\n const calloutStyle = {\n root: {\n padding: 0\n },\n calloutMain: {\n padding: '0.5rem'\n }\n };\n const calloutProps = {\n styles: calloutStyle,\n backgroundColor: isDarkThemed(theme) ? theme.palette.neutralLighter : ''\n };\n const reactionButtonCalloutRef = useRef(null);\n const reactionButtonRef = useRef(null);\n const [calloutIsVisible, setCalloutIsVisible] = useState(false);\n return React.createElement(Stack, null,\n calloutIsVisible && React.createElement(Callout, { \"data-ui-id\": \"reaction-sub-menu\", isBeakVisible: false, styles: reactionButtonCalloutStyles, target: reactionButtonCalloutRef.current, onDismiss: () => {\n var _a;\n (_a = reactionButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n setCalloutIsVisible(false);\n } },\n React.createElement(FocusZone, { shouldFocusOnMount: true, style: {\n height: '100%'\n } },\n React.createElement(Stack, { horizontal: true, style: {\n height: 'inherit'\n } }, emojis.map((emoji, index) => {\n const resourceUrl = emojiResource.get(emoji);\n const frameCount = props.reactionResources !== undefined ? getEmojiFrameCount(emoji, props.reactionResources) : 0;\n const classname = mergeStyles(emojiStyles(resourceUrl ? resourceUrl : '', frameCount));\n return React.createElement(TooltipHost, { key: index, \"data-ui-id\": index, hidden: props.disableTooltip, content: emojiButtonTooltip.get(emoji), styles: reactionToolTipHostStyle(), calloutProps: Object.assign({}, calloutProps) },\n React.createElement(DefaultButton, { role: \"menuitem\", key: index, onClick: () => {\n var _a;\n props.onReactionClick(emoji);\n (_a = reactionButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n setCalloutIsVisible(false);\n }, className: classname, styles: reactionItemButtonStyles, \"aria-label\": emojiButtonTooltip.get(emoji) }));\n })))),\n React.createElement(\"div\", { ref: reactionButtonCalloutRef },\n React.createElement(ControlBarButton, Object.assign({}, props, { componentRef: reactionButtonRef, className: mergeStyles(styles, props.styles), onClick: () => setCalloutIsVisible(!calloutIsVisible), onRenderIcon: (_f = props.onRenderIcon) !== null && _f !== void 0 ? _f : onRenderIcon, strings: strings, split: true, labelKey: (_g = props.labelKey) !== null && _g !== void 0 ? _g : 'reactionButtonLabel', onRenderMenuIcon: () => React.createElement(\"div\", null), disabled: props.disabled, ariaLabel: strings.ariaLabel }))));\n};\n//# sourceMappingURL=ReactionButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Layer, Stack } from '@fluentui/react';\nimport React, { useMemo } from 'react';\nimport { useCallback } from 'react';\nimport { _DrawerMenu } from './Drawer';\nimport { StreamMedia } from './StreamMedia';\nimport { drawerMenuWrapperStyles, remoteVideoTileWrapperStyle } from './VideoGallery/styles/RemoteVideoTile.styles';\nimport { useRemoteVideoStreamLifecycleMaintainer } from './VideoGallery/useVideoStreamLifecycleMaintainer';\nimport { useVideoTileContextualMenuProps } from './VideoGallery/useVideoTileContextualMenuProps';\nimport { VideoTile } from './VideoTile';\nimport { _formatString } from \"../../../acs-ui-common/src\";\nimport { MeetingReactionOverlay } from './MeetingReactionOverlay';\n/**\n * A memoized version of VideoTile for rendering remote participants. React.memo is used for a performance\n * boost by memoizing the same rendered component to avoid rerendering a VideoTile when its position in the\n * array changes causing a rerender in the parent component. https://reactjs.org/docs/react-api.html#reactmemo\n *\n * @internal\n */\nexport const _RemoteVideoTile = React.memo((props) => {\n var _a, _b;\n const { isAvailable, isReceiving = true, \n // default to true to prevent any breaking change\n isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions, renderElement, userId, onRenderAvatar, showMuteIndicator, remoteParticipant, participantState, menuKind, isPinned, onPinParticipant, onUnpinParticipant, spotlightedParticipantUserIds, isSpotlighted, onStartSpotlight, onStopSpotlight, maxParticipantsToSpotlight, onMuteParticipant, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString, strings, reactionResources, streamId } = props;\n const remoteVideoStreamProps = useMemo(() => ({\n isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored,\n isScreenSharingOn,\n isStreamAvailable: isAvailable,\n isStreamReceiving: isReceiving,\n onCreateRemoteStreamView,\n onDisposeRemoteStreamView,\n remoteParticipantId: userId,\n renderElementExists: !!renderElement,\n scalingMode: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.scalingMode,\n streamId\n }), [isAvailable, isReceiving, isScreenSharingOn, onCreateRemoteStreamView, onDisposeRemoteStreamView, remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored, remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.scalingMode, renderElement, userId, streamId]);\n // Handle creating, destroying and updating the video stream as necessary\n const createVideoStreamResult = useRemoteVideoStreamLifecycleMaintainer(remoteVideoStreamProps);\n const contextualMenuProps = useVideoTileContextualMenuProps({\n participant: remoteParticipant,\n view: createVideoStreamResult === null || createVideoStreamResult === void 0 ? void 0 : createVideoStreamResult.view,\n strings: Object.assign({}, props.strings),\n isPinned,\n onPinParticipant,\n onUnpinParticipant,\n onUpdateScalingMode,\n disablePinMenuItem,\n toggleAnnouncerString,\n spotlightedParticipantUserIds,\n isSpotlighted,\n onStartSpotlight,\n onStopSpotlight,\n maxParticipantsToSpotlight,\n onMuteParticipant\n });\n const videoTileContextualMenuProps = useMemo(() => {\n if (menuKind !== 'contextual' || !contextualMenuProps) {\n return {};\n }\n return {\n contextualMenu: contextualMenuProps\n };\n }, [contextualMenuProps, menuKind]);\n const showLoadingIndicator = isAvailable && isReceiving === false && participantState !== 'Disconnected';\n const isReconnecting = participantState === 'Reconnecting';\n const [drawerMenuItemProps, setDrawerMenuItemProps] = React.useState([]);\n const renderVideoStreamElement = useMemo(() => {\n // Checking if renderElement is well defined or not as calling SDK has a number of video streams limitation which\n // implies that, after their threshold, all streams have no child (blank video)\n if ((!renderElement || !renderElement.childElementCount) && !isReconnecting) {\n // Returning `undefined` results in the placeholder with avatar being shown\n return undefined;\n }\n return React.createElement(StreamMedia, { videoStreamElement: renderElement !== null && renderElement !== void 0 ? renderElement : null, loadingState: showLoadingIndicator ? 'loading' : isReconnecting ? 'reconnecting' : 'none' });\n }, [isReconnecting, renderElement, showLoadingIndicator]);\n const onKeyDown = useCallback((e) => {\n if (e.key === 'Enter') {\n setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([])));\n }\n }, [setDrawerMenuItemProps, contextualMenuProps]);\n const attendeeRoleString = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.attendeeRole;\n const formatDisplayName = (displayName, role) => {\n if (displayName && role) {\n return _formatString(displayName, {\n AttendeeRole: role\n });\n }\n return displayName;\n };\n const displayName = formatDisplayName(remoteParticipant.displayName ? remoteParticipant.displayName : strings.displayNamePlaceholder, attendeeRoleString);\n const formatInitialsName = () => {\n if (remoteParticipant.displayName && attendeeRoleString) {\n return _formatString(remoteParticipant.displayName, {\n AttendeeRole: attendeeRoleString\n });\n }\n return remoteParticipant.displayName;\n };\n const reactionOverlay = reactionResources && React.createElement(MeetingReactionOverlay, { overlayMode: \"grid-tiles\", reaction: remoteParticipant.reaction, reactionResources: reactionResources });\n return React.createElement(Stack, { tabIndex: menuKind === 'drawer' ? 0 : undefined, onKeyDown: menuKind === 'drawer' ? onKeyDown : undefined, style: remoteVideoTileWrapperStyle },\n React.createElement(VideoTile, Object.assign({ key: userId, userId: userId, initialsName: (_b = formatInitialsName()) !== null && _b !== void 0 ? _b : '', renderElement: renderVideoStreamElement, displayName: displayName, onRenderPlaceholder: onRenderAvatar, isMuted: remoteParticipant.isMuted, raisedHand: remoteParticipant.raisedHand, isSpeaking: remoteParticipant.isSpeaking, showMuteIndicator: showMuteIndicator, personaMinSize: props.personaMinSize, showLabel: props.showLabel, alwaysShowLabelBackground: props.alwaysShowLabelBackground, participantState: participantState }, videoTileContextualMenuProps, { isPinned: props.isPinned, onLongTouch: props.onLongTouch ? props.onLongTouch : () => setDrawerMenuItemProps(convertContextualMenuItemsToDrawerMenuItemProps(contextualMenuProps, () => setDrawerMenuItemProps([]))), isSpotlighted: isSpotlighted, overlay: reactionOverlay })),\n drawerMenuItemProps.length > 0 && React.createElement(Layer, { hostId: props.drawerMenuHostId },\n React.createElement(Stack, { styles: drawerMenuWrapperStyles },\n React.createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItemProps([]), items: drawerMenuItemProps, heading: displayName }))));\n});\nconst convertContextualMenuItemsToDrawerMenuItemProps = (contextualMenuProps, onLightDismiss) => {\n if (!contextualMenuProps) {\n return [];\n }\n return contextualMenuProps.items.map(item => {\n return {\n itemKey: item.key,\n text: item.text,\n iconProps: item.iconProps,\n disabled: item.disabled,\n onItemClick: () => {\n var _a;\n (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);\n onLightDismiss === null || onLightDismiss === void 0 ? void 0 : onLightDismiss();\n }\n };\n });\n};\n//# sourceMappingURL=RemoteVideoTile.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton, Icon, Stack, mergeStyles } from '@fluentui/react';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTheme } from '../theming';\nimport { rootStyle, childrenContainerStyle, leftRightButtonStyles } from './styles/HorizontalGallery.styles';\nimport { useIdentifiers } from '../identifiers';\nimport { bucketize } from './utils/overFlowGalleriesUtils';\n/**\n * {@link HorizontalGallery} default children per page\n */\nconst DEFAULT_CHILDREN_PER_PAGE = 5;\n/**\n * Renders a horizontal gallery that parents children horizontally. Handles pagination based on the childrenPerPage prop.\n * @param props - HorizontalGalleryProps {@link @azure/communication-react#HorizontalGalleryProps}\n * @returns\n */\nexport const HorizontalGallery = (props) => {\n var _a;\n const { children, childrenPerPage = DEFAULT_CHILDREN_PER_PAGE, styles, onFetchTilesToRender } = props;\n const ids = useIdentifiers();\n const [page, setPage] = useState(0);\n const numberOfChildren = React.Children.count(children);\n const lastPage = Math.ceil(numberOfChildren / childrenPerPage) - 1;\n const indexesArray = useMemo(() => {\n return bucketize([...Array(numberOfChildren).keys()], childrenPerPage);\n }, [numberOfChildren, childrenPerPage]);\n useEffect(() => {\n var _a;\n if (onFetchTilesToRender && indexesArray) {\n onFetchTilesToRender((_a = indexesArray[page]) !== null && _a !== void 0 ? _a : []);\n }\n }, [indexesArray, onFetchTilesToRender, page]);\n const firstIndexOfCurrentPage = page * childrenPerPage;\n const clippedPage = firstIndexOfCurrentPage < numberOfChildren - 1 ? page : lastPage;\n const childrenOnCurrentPage = useMemo(() => {\n const indexes = indexesArray === null || indexesArray === void 0 ? void 0 : indexesArray[clippedPage];\n if (!indexes) {\n return [];\n }\n return indexes.map(index => React.Children.toArray(children)[index]);\n }, [indexesArray, clippedPage, children]);\n const showButtons = numberOfChildren > childrenPerPage;\n const disablePreviousButton = page === 0;\n const disableNextButton = page === lastPage;\n const childrenStyles = useMemo(() => {\n return {\n root: styles === null || styles === void 0 ? void 0 : styles.children\n };\n }, [styles === null || styles === void 0 ? void 0 : styles.children]);\n // If children per page is 0 or less return empty element\n if (childrenPerPage <= 0) {\n return React.createElement(React.Fragment, null);\n }\n return React.createElement(Stack, { horizontal: true, className: mergeStyles(rootStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root) },\n showButtons && React.createElement(HorizontalGalleryNavigationButton, { key: \"previous-nav-button\", icon: React.createElement(Icon, { iconName: \"HorizontalGalleryLeftButton\" }), styles: styles === null || styles === void 0 ? void 0 : styles.previousButton, onClick: () => setPage(Math.max(0, Math.min(lastPage, page - 1))), disabled: disablePreviousButton, identifier: ids.overflowGalleryLeftNavButton }),\n React.createElement(Stack, { horizontal: true, className: mergeStyles(childrenContainerStyle) }, childrenOnCurrentPage.map((child, i) => {\n return React.createElement(Stack.Item, { styles: childrenStyles, key: i, \"data-ui-id\": ids.horizontalGalleryVideoTile }, child);\n })),\n showButtons && React.createElement(HorizontalGalleryNavigationButton, { key: \"next-nav-button\", icon: React.createElement(Icon, { iconName: \"HorizontalGalleryRightButton\" }), styles: styles === null || styles === void 0 ? void 0 : styles.nextButton, onClick: () => setPage(Math.min(lastPage, page + 1)), disabled: disableNextButton, identifier: ids.overflowGalleryRightNavButton }));\n};\nconst HorizontalGalleryNavigationButton = (props) => {\n const theme = useTheme();\n return React.createElement(DefaultButton, { className: mergeStyles(leftRightButtonStyles(theme), props.styles), onClick: props.onClick, disabled: props.disabled, \"data-ui-id\": props.identifier }, props.icon);\n};\n//# sourceMappingURL=HorizontalGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport React, { useRef } from 'react';\nimport { HorizontalGallery } from './HorizontalGallery';\nimport { _useContainerWidth } from './utils/responsive';\nimport { calculateHorizontalChildrenPerPage } from './VideoGallery/utils/OverflowGalleryUtils';\n/**\n * Wrapped HorizontalGallery that adjusts the number of items per page based on the\n * available width obtained from a ResizeObserver, width per child, gap width, and button width\n */\nexport const ResponsiveHorizontalGallery = (props) => {\n const { gapWidthRem, buttonWidthRem = 0, onFetchTilesToRender, onChildrenPerPageChange } = props;\n const containerRef = useRef(null);\n const containerWidth = _useContainerWidth(containerRef);\n const leftPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingLeft) : 0;\n const rightPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingRight) : 0;\n let containerWidthWithoutPadding = Math.max((containerWidth !== null && containerWidth !== void 0 ? containerWidth : 0) - leftPadding - rightPadding, 0);\n if (Number.isNaN(containerWidthWithoutPadding)) {\n containerWidthWithoutPadding = 0;\n }\n const childrenPerPage = calculateHorizontalChildrenPerPage({\n numberOfChildren: React.Children.count(props.children),\n containerWidth: containerWidthWithoutPadding,\n gapWidthRem,\n buttonWidthRem\n });\n onChildrenPerPageChange === null || onChildrenPerPageChange === void 0 ? void 0 : onChildrenPerPageChange(childrenPerPage);\n return React.createElement(\"div\", { \"data-ui-id\": \"responsive-horizontal-gallery\", ref: containerRef, className: mergeStyles(props.containerStyles) },\n React.createElement(HorizontalGallery, { childrenPerPage: childrenPerPage, styles: props.horizontalGalleryStyles, onFetchTilesToRender: onFetchTilesToRender }, props.children));\n};\n//# sourceMappingURL=ResponsiveHorizontalGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\nimport React, { useRef } from 'react';\nimport { _useContainerHeight } from './utils/responsive';\nimport { VerticalGallery } from './VerticalGallery';\nimport { calculateVerticalChildrenPerPage } from './VideoGallery/utils/OverflowGalleryUtils';\n/**\n * Responsive container for the VerticalGallery Component. Performs calculations for number of children\n * for the VerticalGallery\n * @param props\n *\n * @beta\n */\nexport const ResponsiveVerticalGallery = (props) => {\n var _a;\n const { children, containerStyles, verticalGalleryStyles, gapHeightRem, controlBarHeightRem, isShort, onFetchTilesToRender, onChildrenPerPageChange } = props;\n const containerRef = useRef(null);\n const containerHeight = _useContainerHeight(containerRef);\n const topPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingTop) : 0;\n const bottomPadding = containerRef.current ? parseFloat(getComputedStyle(containerRef.current).paddingBottom) : 0;\n let containerHeightWithoutPadding = Math.max((containerHeight !== null && containerHeight !== void 0 ? containerHeight : 0) - topPadding - bottomPadding, 0);\n if (Number.isNaN(containerHeightWithoutPadding)) {\n containerHeightWithoutPadding = 0;\n }\n const childrenPerPage = calculateVerticalChildrenPerPage({\n numberOfChildren: (_a = React.Children.count(children)) !== null && _a !== void 0 ? _a : 0,\n containerHeight: containerHeightWithoutPadding,\n gapHeightRem,\n controlBarHeight: controlBarHeightRem !== null && controlBarHeightRem !== void 0 ? controlBarHeightRem : 2,\n isShort: isShort !== null && isShort !== void 0 ? isShort : false\n });\n onChildrenPerPageChange === null || onChildrenPerPageChange === void 0 ? void 0 : onChildrenPerPageChange(childrenPerPage);\n return React.createElement(\"div\", { \"data-ui-id\": \"responsive-vertical-gallery\", ref: containerRef, className: mergeStyles(containerStyles) },\n React.createElement(VerticalGallery, { childrenPerPage: childrenPerPage, styles: verticalGalleryStyles, onFetchTilesToRender: onFetchTilesToRender }, children));\n};\n//# sourceMappingURL=ResponsiveVerticalGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React from 'react';\nimport { useLocale } from '../localization';\nimport { ControlBarButton } from './ControlBarButton';\nimport { DefaultPalette, mergeStyleSets, useTheme } from '@fluentui/react';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\n/**\n * A button to start / stop screen sharing.\n *\n * Can be used with {@link ControlBar}.\n *\n * @public\n */\nexport const ScreenShareButton = (props) => {\n var _a, _b, _c, _d;\n const localeStrings = useLocale().strings.screenShareButton;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const theme = useTheme();\n const styles = screenshareButtonStyles(theme);\n const onRenderScreenShareOnIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ControlButtonScreenShareStop\" });\n const onRenderScreenShareOffIcon = () => React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"ControlButtonScreenShareStart\" });\n return React.createElement(ControlBarButton, Object.assign({}, props, { styles: mergeStyleSets(styles, props.styles), onClick: (_a = props.onToggleScreenShare) !== null && _a !== void 0 ? _a : props.onClick, onRenderOnIcon: (_b = props.onRenderOnIcon) !== null && _b !== void 0 ? _b : onRenderScreenShareOnIcon, onRenderOffIcon: (_c = props.onRenderOffIcon) !== null && _c !== void 0 ? _c : onRenderScreenShareOffIcon, strings: strings, labelKey: (_d = props.labelKey) !== null && _d !== void 0 ? _d : 'screenShareButtonLabel', disabled: props.disabled }));\n};\nconst screenshareButtonStyles = (theme) => ({\n rootChecked: {\n background: theme.palette.themePrimary,\n color: DefaultPalette.white,\n ':focus::after': {\n outlineColor: `${DefaultPalette.white} !important`\n },\n // added !important to avoid override by FluentUI button styles\n '@media (forced-colors: active)': {\n border: '1px solid',\n borderColor: theme.palette.black\n }\n },\n rootCheckedHovered: {\n background: theme.palette.themePrimary,\n color: DefaultPalette.white,\n ':focus::after': {\n outlineColor: `${DefaultPalette.white} !important`\n },\n // added !important to avoid override by FluentUI button styles\n '@media (forced-colors: active)': {\n border: '1px solid',\n borderColor: theme.palette.black\n }\n },\n labelChecked: {\n color: DefaultPalette.white\n }\n});\n//# sourceMappingURL=ScreenShareButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport React, { useState, useMemo, useCallback } from 'react';\nimport { mergeStyles, concatStyleSets, Icon, Stack } from '@fluentui/react';\nimport { sendButtonStyle, sendIconStyle, sendBoxWrapperStyles, borderAndBoxShadowStyle } from './styles/SendBox.styles';\nimport { useTheme } from '../theming';\nimport { useLocale } from '../localization';\nimport { useIdentifiers } from '../identifiers';\nimport { InputBoxComponent } from './InputBoxComponent';\nimport { InputBoxButton } from './InputBoxButton';\nimport { MAXIMUM_LENGTH_OF_MESSAGE, isMessageTooLong, sanitizeText, isSendBoxButtonDisabled } from './utils/SendBoxUtils';\n/**\n * Component for typing and sending messages.\n *\n * Supports sending typing notification when user starts entering text.\n * Supports an optional message below the text input field.\n *\n * @public\n */\nexport const SendBox = (props) => {\n const { disabled, systemMessage, supportNewline, onSendMessage, onTyping, onRenderIcon, onRenderSystemMessage, styles, autoFocus } = props;\n const theme = useTheme();\n const localeStrings = useLocale().strings.sendBox;\n const strings = Object.assign(Object.assign({}, localeStrings), props.strings);\n const ids = useIdentifiers();\n const [textValue, setTextValue] = useState('');\n const [textValueOverflow, setTextValueOverflow] = useState(false);\n const sendTextFieldRef = React.useRef(null);\n const sendMessageOnClick = () => {\n var _a;\n // don't send a message when disabled\n if (disabled || textValueOverflow) {\n return;\n }\n // Don't send message until all attachments have been uploaded successfully\n const message = textValue;\n // we don't want to send empty messages including spaces, newlines, tabs\n // Message can be empty if there is a valid attachment upload\n if (sanitizeText(message).length > 0) {\n onSendMessage && onSendMessage(message);\n setTextValue('');\n (_a = sendTextFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n };\n const setText = (newValue) => {\n if (newValue === undefined) {\n return;\n }\n setTextValueOverflow(isMessageTooLong(newValue.length));\n setTextValue(newValue);\n };\n const textTooLongMessage = textValueOverflow ? strings.textTooLong : undefined;\n const errorMessage = systemMessage !== null && systemMessage !== void 0 ? systemMessage : textTooLongMessage;\n const isSendBoxButtonDisabledValue = useMemo(() => {\n return isSendBoxButtonDisabled({\n hasContent: sanitizeText(textValue).length > 0,\n hasError: !!errorMessage,\n disabled: !!disabled\n });\n }, [disabled, errorMessage, textValue]);\n const mergedSendButtonStyle = useMemo(() => mergeStyles(sendButtonStyle, styles === null || styles === void 0 ? void 0 : styles.sendMessageIconContainer), [styles === null || styles === void 0 ? void 0 : styles.sendMessageIconContainer]);\n const mergedStyles = useMemo(() => concatStyleSets(styles), [styles]);\n const mergedSendIconStyle = useMemo(() => sendIconStyle({\n theme,\n isSendBoxButtonDisabled: isSendBoxButtonDisabledValue,\n customSendIconStyle: styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon\n }), [theme, isSendBoxButtonDisabledValue, styles === null || styles === void 0 ? void 0 : styles.sendMessageIcon]);\n const onRenderSendIcon = useCallback((isHover) => onRenderIcon ? onRenderIcon(isHover) : React.createElement(Icon, { iconName: isHover && textValue ? 'SendBoxSendHovered' : 'SendBoxSend', className: mergedSendIconStyle }), [mergedSendIconStyle, onRenderIcon, textValue]);\n // Ensure that errors are cleared when there are no attachments in sendBox\n return React.createElement(Stack, { className: mergeStyles(sendBoxWrapperStyles, {\n overflow: 'visible'\n } // This is needed for the mention popup to be visible\n ) },\n React.createElement(Stack, { className: borderAndBoxShadowStyle({\n theme,\n hasErrorMessage: !!errorMessage,\n disabled: !!disabled\n }) },\n React.createElement(InputBoxComponent, { autoFocus: autoFocus, \"data-ui-id\": ids.sendboxTextField, disabled: disabled, errorMessage: onRenderSystemMessage ? onRenderSystemMessage(errorMessage) : errorMessage, textFieldRef: sendTextFieldRef, id: \"sendbox\", placeholderText: strings.placeholderText, textValue: textValue, onChange: (_, newValue) => setText(newValue), onKeyDown: ev => {\n const keyWasSendingMessage = ev.key === 'Enter' && (ev.shiftKey === false || !supportNewline);\n if (!keyWasSendingMessage) {\n onTyping === null || onTyping === void 0 ? void 0 : onTyping();\n }\n }, onEnterKeyDown: () => {\n sendMessageOnClick();\n }, styles: mergedStyles, supportNewline: supportNewline, maxLength: MAXIMUM_LENGTH_OF_MESSAGE },\n React.createElement(InputBoxButton, { onRenderIcon: onRenderSendIcon, onClick: e => {\n if (!textValueOverflow) {\n sendMessageOnClick();\n }\n e.stopPropagation();\n }, id: 'sendIconWrapper', className: mergedSendButtonStyle, ariaLabel: localeStrings.sendButtonAriaLabel, tooltipContent: localeStrings.sendButtonAriaLabel, disabled: isSendBoxButtonDisabledValue }))));\n};\n//# sourceMappingURL=SendBox.js.map"],"names":["ErrorBar","props","_a","localeStrings","strings","errorBar","trackDismissedErrorsInternally","onDismissError","mountTimestamp","useRef","Date","now","dismissedErrors","setDismissedErrors","useState","useEffect","activeErrorMessages","toShow","ignorePremountErrors","current","undefined","map","error","Object","assign","styles","innerText","alignSelf","icon","height","content","lineHeight","dismissal","paddingBottom","key","type","messageBarType","messageBarIconProps","onDismiss","call","dismissButtonAriaLabel","dismissIconProps","iconName","GridLayout","children","numberOfChildren","currentWidth","setCurrentWidth","currentHeight","setCurrentHeight","containerRef","observer","ResizeObserver","entries","width","contentRect","observe","currentObserver","disconnect","gridProps","useMemo","calculateGridProps","cssGridStyles","createGridStyles","ref","className","root","TARGET_CELL_ASPECT_RATIO","MINIMUM_CELL_ASPECT_RATIO_ALLOWED","numberOfItems","fillDirection","rows","columns","Math","ceil","sqrt","aspectRatio","floor","min","canStretchVertically","canStretchHorizontally","verticallyStretchedCellRatio","a","b","target","abs","isHorizontal","blocks","smallCellsPerBlock","bigCellsPerBlock","numBigCells","units","gridStyles","gridTemplateColumns","gridTemplateRows","gridAutoFlow","smallCellStyle","gridColumn","gridRow","bigCellStyle","_HighContrastAwareIcon","disabled","theme","svg","fill","palette","neutralTertiary","neutralPrimaryAlt","HoldButton","onToggleHold","onClick","onRenderOnIcon","onRenderOffIcon","IncomingCallNotification","_b","_c","_d","_e","_f","_g","_h","callerName","alertText","avatarImage","onAcceptWithAudio","onAcceptWithVideo","onReject","personaSize","acceptOptions","useTheme","formattedMessageString","incomingCallNotificationPlaceholderAlert","acceptManuOptions","showAcceptWithVideo","items","text","incomingCallNotificationAcceptButtonLabel","incomingCallNotificationAccceptWithVideoButtonLabel","Stack","tokens","childrenGap","verticalAlign","incomingCallToastStyle","horizontal","horizontalAlign","avatarContainer","incomingCallToastAvatarContainerStyle","Persona","imageUrl","size","coinSize","hidePersonaDetails","grow","style","alignItems","fontFamily","Text","tabIndex","IconButton","ariaLabel","incomingCallNotificationDismissButtonAriaLabel","iconProps","dismissButtonStyle","PrimaryButton","acceptButton","incomingCallAcceptButtonStyle","incomingCallNoticicationAcceptWithAudioAriaLabel","menuProps","DefaultButton","rejectButton","incomingCallRejectButtonStyle","incomingCallNoticicationRejectAriaLabel","incomingCallNotificationRejectButtonLabel","background","white","opacity","borderRadius","boxShadow","effects","elevation8","padding","marginRight","color","neutralPrimary","rootHovered","neutralDark","border","roundedCorner4","maxWidth","IncomingCallStack","activeIncomingCalls","removedIncomingCalls","onAcceptCall","onRejectCall","role","filter","incomingCall","some","id","callerInfo","displayName","videoAvailable","InputBoxButton","onRenderIcon","tooltipContent","dataTestId","ariaExpanded","isHover","setIsHover","mergedButtonStyle","calloutProps","gapSpace","calloutMain","backgroundColor","neutralLighter","hostClassName","onMouseEnter","onMouseLeave","allowDisabledFocus","InputBoxComponent","dataUiId","textValue","onChange","textFieldRef","placeholderText","onKeyDown","onEnterKeyDown","supportNewline","inputClassName","errorMessage","mergedRootStyle","mergedInputFieldStyle","mergedTextContainerStyle","textFieldContainer","mergedTextFieldStyle","fieldGroup","textField","systemMessage","suffix","onTextFieldKeyDown","useCallback","ev","nativeEvent","shiftKey","preventDefault","onRenderChildren","textFieldProps","autoFocus","multiline","autoAdjustHeight","multiple","resizable","componentRef","placeholder","autoComplete","onRenderSuffix","value","onFocus","e","currentTarget","renderTextField","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","LocalVideoCameraCycleButton","cameras","selectedCamera","onSelectCamera","label","ariaDescription","waitForCamera","setWaitForCamera","onChangeCameraClick","device","cameraLoadingString","cameraButton","tooltipVideoLoadingContent","length","index","findIndex","camera","newCamera","Error","_LocalVideoTile","isAvailable","isMuted","onCreateLocalStreamView","onDisposeLocalStreamView","localVideoViewOptions","renderElement","userId","showLabel","alwaysShowLabelBackground","initialsName","onRenderAvatar","showMuteIndicator","showCameraSwitcherInLocalPreview","localVideoCameraCycleButtonProps","localVideoCameraSwitcherLabel","localVideoSelectedDescription","raisedHand","reaction","isSpotlighted","spotlightedParticipantUserIds","onStartSpotlight","onStopSpotlight","maxParticipantsToSpotlight","menuKind","reactionResources","isScreenSharingOn","localVideoStreamProps","isMirrored","isStreamAvailable","renderElementExists","scalingMode","contextualMenuProps","participant","myUserId","videoTileContextualMenuProps","contextualMenu","videoTileStyles","outline","neutralTertiaryAlt","outlineOffset","drawerMenuItemProps","setDrawerMenuItemProps","convertContextualMenuItemsToDrawerMenuItemProps","renderVideoStreamElement","childElementCount","FloatingLocalCameraCycleButton","videoStreamElement","participantsCount","waitingScreenText","ariaLive","labelPosition","videoTileOverlay","overlayMode","onRenderAvatarOneParticipant","onRenderPlaceholder","personaMinSize","onLongTouch","overlay","hostId","drawerMenuHostId","onLightDismiss","cameraName","name","item","itemKey","onItemClick","MeetingConferencePhoneInfoModal","conferencePhoneInfoList","showModal","onDismissMeetingPhoneInfoSettings","meetingConferencePhoneInfo","PhoneInfoModalStyle","titleAriaId","meetingConferencePhoneInfoModalTitle","isOpen","isBlocking","black","meetingConferencePhoneInfoModalNoPhoneAvailable","display","meetingConferencePhoneInfoModalDialIn","phoneNumber","isTollFree","meetingConferencePhoneInfoModalTollFree","meetingConferencePhoneInfoModalToll","formatPhoneNumberInfo","meetingConferencePhoneInfoModalMeetingId","formatMeetingId","conferenceId","marginLeft","meetingConferencePhoneInfoModalWait","formatPhoneNumberLink","templateText","country","city","meetingConferencePhoneInfoModalTollGeoData","replace","trim","meetingId","slice","join","MeetingReactionOverlay","localParticipant","remoteParticipants","emojiSizePx","setEmojiSizePx","divHeight","setDivHeight","divWidth","setDivWidth","videoTileRef","domRect","at","reactionEmojiCalcSize","max","useLayoutEffect","pointerEvents","emojiSize","hostDivHeight","hostDivWidth","MessageStatusIcon","shouldAnnounce","iconClassName","LiveMessage","message","Icon","MessageStatusIndicatorInternal","status","remoteParticipantsCount","onToggleToolTip","readCount","messageStatusIndicator","isTooltipToggled","setIsTooltipToggled","TooltipHost","failedToSendTooltipText","hostStyles","MemoMessageStatusIcon","semanticColors","errorText","redDark","failedToSendAriaLabel","sendingTooltipText","themePrimary","sendingAriaLabel","readByTooltipText","seenTooltipText","messageThreadReadCount","onTooltipToggle","seenAriaLabel","deliveredTooltipText","deliveredAriaLabel","obj","isMessageSame","first","second","messageId","contentType","JSON","stringify","createdOn","senderId","senderDisplayName","editedOn","getLatestChatMessage","messages","i","messageType","DefaultJumpToNewMessageButton","memoizeAllMessages","memoizeFnAll","showMessageDate","showMessageStatus","onUpdateMessage","onCancelEditMessage","onDeleteMessage","onSendMessage","disableEditing","lastSeenChatMessage","lastSendingChatMessage","lastDeliveredChatMessage","statusToRender","clientMessageId","mine","showDate","getLastChatMessageIdWithStatus","MessageThread","chatBody","FluentV9ThemeProvider","v8Theme","MessageThreadWrapper","newMessages","participantCount","readReceiptsBySenderId","disableJumpToNewMessageButton","numberOfChatMessagesToReload","onMessageSeen","onRenderMessageStatus","onLoadPreviousChatMessages","onRenderJumpToNewMessageButton","onRenderMessage","inlineImageOptions","chatMessagesInitialized","setChatMessagesInitialized","isAtBottomOfScroll","setIsAtBottomOfScroll","forceUpdate","setForceUpdate","latestPreviousChatMessage","setLatestPreviousChatMessage","latestCurrentChatMessage","setLatestCurrentChatMessage","existsNewChatMessage","setExistsNewChatMessage","setLastSeenChatMessage","setLastDeliveredChatMessage","setLastSendingChatMessage","readCountForHoveredIndicator","setReadCountForHoveredIndicator","messageThread","setMessages","latestDeletedMessageId","setLatestDeletedMessageId","previousMessagesRef","deletedMessageAriaLabel","setDeletedMessageAriaLabel","onDeleteMessageCallback","lastChatMessageStatus","console","log","isAllChatMessagesLoadedRef","previousTopRef","previousHeightRef","messageIdSeenByMeRef","chatScrollDivRef","isLoadingChatMessagesRef","find","messageDeletedAnnouncementAriaLabel","messagesRef","isAtBottomOfScrollRef","setIsAtBottomOfScrollRef","isAtBottomOfScrollValue","chatMessagesInitializedRef","chatThreadRef","chatThreadWidth","isNarrow","clientHeight","sendMessageStatusIfAtBottom","document","hasFocus","messagesWithId","lastMessage","scrollToBottom","scrollTop","scrollHeight","handleScrollToTheBottom","atBottom","fetchNewMessageWhenAtTop","delay","window","addEventListener","removeEventListener","chatScrollDiv","newStatus","getLastChatMessageForCurrentUser","messagesWithAttachedValue","setChatMessagesInitializedRef","latestMessageFromPreviousMessages","latestMessageFromNewMessages","isThereNewMessageNotFromCurrentUser","didUserSendTheLatestMessage","participantCountRef","readReceiptsBySenderIdRef","onActionButtonClickMemo","setMessageReadBy","getParticipantsWhoHaveReadMessage","defaultStatusRenderer","isToggled","messagesToDisplay","memoizedMessageFn","classes","chatArrowNavigationAttributes","useArrowNavigationGroup","u","axis","memorizeCurrent","newMessageButtonContainer","newMessagesIndicator","LiveAnnouncer","Chat","chatContainer","Announcer","announcementString","MemoChatMessageComponentWrapper","shouldOverlapAvatarAndMessage","onActionButtonClick","ChatMessageComponentWrapper","MicrophoneButton","_j","_k","_l","_m","onToggleMicrophone","microphoneButton","announcerString","setAnnouncerString","isSplit","split","enableDeviceSelectionMenu","primaryDisabled","microphones","speakers","isMicOn","checked","splitButtonAriaString","onSplitButtonAriaLabel","offSplitButtonAriaLabel","toggleAnnouncerString","microphoneActionTurnedOnAnnouncement","microphoneActionTurnedOffAnnouncement","onToggleClick","deepNoiseSuppressionToggleStyles","margin","flexFlow","justifyContent","fontWeight","splitButtonMenuItems","showNoiseSuppressionButton","push","onRender","onClickNoiseSuppression","isDeepNoiseSuppressionOn","deepNoiseSuppressionOnAnnouncement","deepNoiseSuppressionOffAnnouncement","deepNoiseSuppressionTitle","inlineLabel","onSplitButtonMicrophonePrimaryAction","offSplitButtonMicrophonePrimaryAction","splitButtonPrimaryAction","title","itemType","sectionProps","topDivider","labelKey","menuStyles","menuIconProps","hidden","microphoneButtonSplitRoleDescription","microphoneAriaDescription","splitButtonAriaLabel","animationDuration","ZERO","x","y","DEFAULT_PROPS","isDarkOverlay","containerClassName","enableAriaHiddenSiblings","getModalClassNames","ModalBase","propsWithoutDefaults","allowTouchBodyScroll","scrollableContentClassName","elementToFocusOnDismiss","firstFocusableSelector","forceFocusInsideTrap","ignoreExternalFocusing","isAlert","isClickableOutsideFocusTrap","layerProps","subtitleAriaId","topOffsetFixed","responsiveMode","onLayerDidMount","isModeless","dragOptions","onDismissed","minDragPosition","maxDragPosition","rootRef","focusTrapZone","focusTrapZoneElm","mergedRef","modalResponsiveMode","focusTrapZoneId","win","setTimeout","clearTimeout","isModalOpen","setIsModalOpen","isVisible","setIsVisible","coordinates","setCoordinates","modalRectangleTop","setModalRectangleTop","isModalMenuOpen","toggle","toggleModalMenuOpen","setFalse","setModalMenuClose","internalState","onModalCloseTimer","scrollableContent","lastSetCoordinates","events","keepInBounds","isAlertRole","layerClassName","classNames","hasBeenOpened","windowInnerHeight","innerHeight","isDefaultDragHandle","dragHandleSelector","mergedLayerProps","eventBubblingEnabled","insertFirst","layer","allowScrollOnModal","elt","off","registerInitialModalPosition","dialogMain","modalRectangle","getBoundingClientRect","top","minPosition","left","maxPosition","getClampedAxis","position","handleModalClose","isInKeyboardMoveMode","disposeOnKeyUp","handleDragStart","handleDrag","dragData","prevValue","delta","handleDragStop","focus","requestAnimationFrame","handleKeyUp","altKey","ctrlKey","keyCode","stopPropagation","on","registerForKeyUp","parseFloat","dispose","useComponentRef","modalContent","main","focusPreviouslyFocusedInnerElement","onBlur","disposeOnKeyDown","focusTrapZoneProps","keyboardMoveIconContainer","keyboardMoveIconProps","keyboardMoveIcon","menu","moveMenuItemText","handleKeyDown","newLocal","handledEvent","getMoveDelta","closeMenuItemText","alignTargetEdge","coverTarget","directionalHint","directionalHintFixed","shouldFocusOnMount","ariaLabelledBy","ariaDescribedBy","shouldRestoreFocus","isDarkThemed","DraggableZone","handleSelector","preventDragSelector","onStart","onDragChange","onStop","getDraggableZoneClassNames","isDragging","touchAction","selectors","userSelect","eventMapping","start","move","stop","constructor","super","this","_currentEventType","_events","_onMouseDown","event","onMouseDown","_onDragStart","_onMouseUp","onMouseUp","_onDragStop","_onTouchStart","onTouchStart","_onTouchEnd","onTouchEnd","button","_matchesSelector","_touchId","_getTouchId","_getControlPosition","_createDragDataFromPosition","setState","lastPosition","body","_onDrag","updatedData","_createUpdatedDragData","updatedPosition","state","baseDragData","forEach","componentDidUpdate","prevProps","componentWillUnmount","render","child","statePosition","transform","touchObj","_getActiveTouch","eventToGetOffset","clientX","clientY","targetTouches","_findTouchInTouchList","changedTouches","touch","identifier","element","selector","matchesSelectorFn","matches","webkitMatchesSelector","msMatchesSelector","parentElement","touchList","globalClassNames","_ModalClone","fonts","medium","transition","elevation64","roundedCorner2","boxSizing","textAlign","maxHeight","minHeight","minWidth","overflowY","zIndex","cursor","flexGrow","fontSize","xLargePlus","scope","fields","Notification","_o","_p","_q","_r","notificationStrings","show","setShow","autoDismiss","notificationIconProps","onClickLink","linkLabel","Link","link","secondaryButtonLabel","onClickSecondaryButton","secondaryButton","marginTop","primaryButtonLabel","onClickPrimaryButton","primaryButton","showStackedEffect","NotificationStack","notificationStack","maxNotificationsToShow","trackDismissedNotificationsInternally","onDismissNotification","dismissedNotifications","setDismissedNotifications","activeNotifications","ignorePremountNotifications","notification","marginBottom","ParticipantItem","menuItems","presence","me","showParticipantOverflowTooltip","itemHovered","setItemHovered","menuHidden","setMenuHidden","participantItem","ids","participantItemId","useId","participantItemFlyoutId","hasFlyout","flyoutShowing","participantStateString","formatParticipantStateString","showMenuIcon","meAvatarText","avatarOptions","displayNamePlaceholder","initialsTextColor","showOverflowTooltip","showUnknownPersonaCoin","avatar","meTextStyle","neutralSecondary","contextualMenuStyle","neutralLighterAlt","infoContainerStyle","iconContainer","onDismissMenu","menuButton","menuTitle","participantItemMenuButton","participantItemWithMoreOptionsAriaLabel","participantItemAriaLabel","clickable","isMeText","ContextualMenu","DirectionalHint","preventDismissOnEvent","participantState","participantStateRinging","participantStateHold","ParticipantList","excludeMe","participants","onRemoveParticipant","onRenderParticipant","onFetchParticipantMenuItems","participantAriaLabelledBy","pinnedParticipants","participantItemStrings","displayedParticipants","userIndex","p","indexOf","splice","getParticipantsForDefaultRender","isParticipantListCallParticipant","sort","callA","callB","raisedHandOrderPosition","sortParticipants","createParticipantMenuItems","participantIsRemovable","isRemovable","removeButtonLabel","itemProps","participantItemStyles","participantSubMenuItemsStyles","participantListRemoveParticipantButton","merge","participantList","onParticipantClick","callingParticipant","attendeeRole","AttendeeRole","formatDisplayName","callingPalette","isPinned","includes","isScreenSharing","RaisedHandIcon","sharingIconLabel","mutedIconLabel","spotlight","onRenderAvatarWithRaiseHand","options","defaultOnRender","raiseHandGold","ariaLabelTemplate","connectionState","mutedState","sharingState","handRaisedState","handRaisedIconLabel","toString","onRenderParticipantDefault","ParticipantsButton","callInvitationURL","onMuteAll","onRenderParticipantList","copyInviteLinkAnnouncerStrings","setCopyInviteLinkAnnouncerStrings","onMuteAllCallback","defaultParticipantList","participantListStyles","onCopyCallback","participantsButton","copyInviteLinkActionedAriaLabel","generateDefaultParticipantsSubMenuProps","muteAllButtonLabel","menuItemStyles","defaultMenuProps","menuHeader","participantCountWithoutMe","participantsListButtonLabel","numParticipants","subMenuProps","participantButtonPeopleMenuItem","copyInviteLinkButtonLabel","PictureInPictureInPicturePrimaryTile","PictureInPictureInPictureTile","primaryTileStyles","orientation","PictureInPictureInPictureSecondaryTile","secondaryTileStyles","memoize","themeElevation","overflow","_PictureInPictureInPicture","PictureInPictureInPictureContainer","primaryView","primaryTile","secondaryView","secondaryTile","rootAriaLabel","tileContainerStyles","onKeyPress","secondaryTileFloatingStyles","bottom","right","RaiseHandButton","raiseHandButton","raiseHandButtonStyles","onToggleRaiseHand","onLabel","offLabel","tooltipOnContent","tooltipOffContent","rootChecked","outlineColor","rootCheckedHovered","labelChecked","ReactionButton","reactionButton","emojiButtonTooltip","Map","likeReactionTooltipContent","heartReactionTooltipContent","applauseReactionTooltipContent","laughReactionTooltipContent","surprisedReactionTooltipContent","emojiResource","likeReaction","url","heartReaction","applauseReaction","laughReaction","surprisedReaction","reactionButtonCalloutRef","reactionButtonRef","calloutIsVisible","setCalloutIsVisible","isBeakVisible","emoji","resourceUrl","get","frameCount","classname","disableTooltip","onReactionClick","onRenderMenuIcon","_RemoteVideoTile","isReceiving","onCreateRemoteStreamView","onDisposeRemoteStreamView","remoteVideoViewOptions","remoteParticipant","onPinParticipant","onUnpinParticipant","onMuteParticipant","onUpdateScalingMode","disablePinMenuItem","streamId","remoteVideoStreamProps","isStreamReceiving","remoteParticipantId","createVideoStreamResult","view","showLoadingIndicator","isReconnecting","loadingState","attendeeRoleString","reactionOverlay","isSpeaking","heading","DEFAULT_CHILDREN_PER_PAGE","HorizontalGallery","childrenPerPage","onFetchTilesToRender","page","setPage","lastPage","indexesArray","Array","keys","clippedPage","childrenOnCurrentPage","indexes","showButtons","disablePreviousButton","disableNextButton","childrenStyles","HorizontalGalleryNavigationButton","previousButton","overflowGalleryLeftNavButton","horizontalGalleryVideoTile","nextButton","overflowGalleryRightNavButton","ResponsiveHorizontalGallery","gapWidthRem","buttonWidthRem","onChildrenPerPageChange","containerWidth","leftPadding","getComputedStyle","paddingLeft","rightPadding","paddingRight","containerWidthWithoutPadding","Number","isNaN","containerStyles","horizontalGalleryStyles","ResponsiveVerticalGallery","verticalGalleryStyles","gapHeightRem","controlBarHeightRem","isShort","containerHeight","topPadding","paddingTop","bottomPadding","containerHeightWithoutPadding","controlBarHeight","ScreenShareButton","screenShareButton","screenshareButtonStyles","onToggleScreenShare","borderColor","SendBox","onTyping","onRenderSystemMessage","sendBox","setTextValue","textValueOverflow","setTextValueOverflow","sendTextFieldRef","sendMessageOnClick","textTooLongMessage","textTooLong","isSendBoxButtonDisabledValue","hasContent","hasError","mergedSendButtonStyle","sendMessageIconContainer","mergedStyles","mergedSendIconStyle","isSendBoxButtonDisabled","customSendIconStyle","sendMessageIcon","onRenderSendIcon","hasErrorMessage","sendboxTextField","_","newValue","setText","maxLength","sendButtonAriaLabel"],"sourceRoot":""}