@azure/communication-react 1.3.3-alpha-202210260016.0 → 1.3.3-alpha-202210280017.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/communication-react.d.ts +21 -0
  2. package/dist/dist-cjs/communication-react/index.js +136 -81
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +9 -0
  7. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  8. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +3 -0
  9. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +23 -0
  10. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  11. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.d.ts +1 -0
  12. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +8 -0
  13. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  14. package/dist/dist-esm/calling-stateful-client/src/Converter.js +3 -1
  15. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  16. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js +9 -3
  17. package/dist/dist-esm/calling-stateful-client/src/DeviceManagerDeclarative.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/ParticipantSubscriber.d.ts +1 -0
  19. package/dist/dist-esm/calling-stateful-client/src/ParticipantSubscriber.js +8 -0
  20. package/dist/dist-esm/calling-stateful-client/src/ParticipantSubscriber.js.map +1 -1
  21. package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +2 -0
  22. package/dist/dist-esm/react-components/src/components/MessageThread.js +7 -7
  23. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/VideoTile.js +1 -1
  25. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +1 -1
  27. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +4 -3
  28. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +58 -8
  30. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +66 -16
  31. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +57 -7
  32. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +62 -12
  33. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +63 -13
  34. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +66 -16
  35. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +59 -9
  36. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +57 -7
  37. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +66 -16
  38. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +60 -10
  39. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +66 -16
  40. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +60 -10
  41. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +59 -9
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +5 -0
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +24 -27
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js +1 -1
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LobbyTile.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localPreviewSelector.js +3 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localPreviewSelector.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +5 -0
  52. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +6 -2
  53. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  54. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js +1 -1
  55. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.d.ts +1 -0
  57. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js +3 -3
  58. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js.map +1 -1
  59. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js +6 -1
  60. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.js.map +1 -1
  61. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js +0 -1
  62. package/dist/dist-esm/react-composites/src/composites/common/SendDtmfDialpad.styles.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +55 -14
  64. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +55 -14
  65. package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +55 -14
  66. package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +55 -14
  67. package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +55 -14
  68. package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +55 -14
  69. package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +55 -14
  70. package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +55 -14
  71. package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +55 -14
  72. package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +55 -14
  73. package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +55 -14
  74. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +55 -14
  75. package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +55 -14
  76. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"VideoTile.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/VideoTile.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Icon, IStyle, mergeStyles, Persona, Stack, Text } from '@fluentui/react';\nimport { Ref } from '@fluentui/react-northstar';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useIdentifiers } from '../identifiers';\nimport { ComponentLocale, useLocale } from '../localization';\nimport { useTheme } from '../theming';\nimport { BaseCustomStyles, CustomAvatarOptions, OnRenderAvatarCallback } from '../types';\n/* @conditional-compile-remove(one-to-n-calling) */\n/* @conditional-compile-remove(PSTN-calls) */\nimport { ParticipantState } from '../types';\nimport {\n disabledVideoHint,\n displayNameStyle,\n iconContainerStyle,\n overlayContainerStyles,\n rootStyles,\n videoContainerStyles,\n videoHint,\n tileInfoContainerStyle,\n participantStateStringStyles\n} from './styles/VideoTile.styles';\nimport { getVideoTileOverrideColor } from './utils/videoTileStylesUtils';\n\n/**\n * Strings of {@link VideoTile} that can be overridden.\n * @beta\n */\nexport interface VideoTileStrings {\n participantStateConnecting: string;\n participantStateRinging: string;\n participantStateHold: string;\n}\n\n/**\n * Fluent styles for {@link VideoTile}.\n *\n * @public\n */\nexport interface VideoTileStylesProps extends BaseCustomStyles {\n /** Styles for video container. */\n videoContainer?: IStyle;\n /** Styles for container overlayed on the video container. */\n overlayContainer?: IStyle;\n /** Styles for displayName on the video container. */\n displayNameContainer?: IStyle;\n}\n\n/**\n * Props for {@link VideoTile}.\n *\n * @public\n */\nexport interface VideoTileProps {\n /** React Child components. Child Components will show as overlay component in the VideoTile. */\n children?: React.ReactNode;\n /**\n * Allows users to pass in an object contains custom CSS styles.\n * @Example\n * ```\n * <VideoTile styles={{ root: { background: 'blue' } }} />\n * ```\n */\n styles?: VideoTileStylesProps;\n /** user id for the VideoTile placeholder. */\n userId?: string;\n /** Component with the video stream. */\n renderElement?: JSX.Element | null;\n /** Determines if the video is mirrored or not. */\n isMirrored?: boolean;\n /** Custom render Component function for no video is available. Render a Persona Icon if undefined. */\n onRenderPlaceholder?: OnRenderAvatarCallback;\n /**\n * Show label on the VideoTile\n * @defaultValue true\n */\n showLabel?: boolean;\n /**\n * Whether to display a mute icon beside the user's display name.\n * @defaultValue true\n */\n showMuteIndicator?: boolean;\n /**\n * Whether the video is muted or not.\n */\n isMuted?: boolean;\n /**\n * Display Name of the Participant to be shown in the label.\n * @remarks `displayName` is used to generate avatar initials if `initialsName` is not provided.\n */\n displayName?: string;\n /**\n * Name of the participant used to generate initials. For example, a name `John Doe` will display `JD` as initials.\n * @remarks `displayName` is used if this property is not specified.\n */\n initialsName?: string;\n /**\n * Minimum size of the persona avatar in px.\n * The persona avatar is the default placeholder shown when no video stream is available.\n * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona\n * @defaultValue 32px\n */\n personaMinSize?: number;\n /**\n * Maximum size of the personal avatar in px.\n * The persona avatar is the default placeholder shown when no video stream is available.\n * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona\n * @defaultValue 100px\n */\n personaMaxSize?: number;\n /** Optional property to set the aria label of the video tile if there is no available stream. */\n noVideoAvailableAriaLabel?: string;\n /** Whether the participant in the videoTile is speaking. Shows a speaking indicator (border). */\n isSpeaking?: boolean;\n\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * The call connection state of the participant.\n * For example, `Hold` means the participant is on hold.\n */\n participantState?: ParticipantState;\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n strings?: VideoTileStrings;\n}\n\n// Coin max size is set to PersonaSize.size100\nconst DEFAULT_PERSONA_MAX_SIZE_PX = 100;\n// Coin min size is set PersonaSize.size32\nconst DEFAULT_PERSONA_MIN_SIZE_PX = 32;\n\nconst DefaultPlaceholder = (props: CustomAvatarOptions): JSX.Element => {\n const { text, noVideoAvailableAriaLabel, coinSize, hidePersonaDetails } = props;\n\n return (\n <Stack className={mergeStyles({ position: 'absolute', height: '100%', width: '100%' })}>\n <Stack styles={defaultPersonaStyles}>\n <Persona\n coinSize={coinSize}\n hidePersonaDetails={hidePersonaDetails}\n text={text ?? ''}\n initialsTextColor=\"white\"\n aria-label={noVideoAvailableAriaLabel ?? ''}\n showOverflowTooltip={false}\n />\n </Stack>\n </Stack>\n );\n};\n\nconst defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };\n\n/**\n * A component to render the video stream for a single call participant.\n *\n * Use with {@link GridLayout} in a {@link VideoGallery}.\n *\n * @public\n */\nexport const VideoTile = (props: VideoTileProps): JSX.Element => {\n const {\n children,\n displayName,\n initialsName,\n isMirrored,\n isMuted,\n onRenderPlaceholder,\n renderElement,\n showLabel = true,\n showMuteIndicator = true,\n styles,\n userId,\n noVideoAvailableAriaLabel,\n isSpeaking,\n personaMinSize = DEFAULT_PERSONA_MIN_SIZE_PX,\n personaMaxSize = DEFAULT_PERSONA_MAX_SIZE_PX\n } = props;\n\n const [personaSize, setPersonaSize] = useState(100);\n const videoTileRef = useRef<HTMLElement>(null);\n\n const locale = useLocale();\n const theme = useTheme();\n\n const isVideoRendered = !!renderElement;\n\n const observer = useRef(\n new ResizeObserver((entries): void => {\n const { width, height } = entries[0].contentRect;\n const personaSize = Math.min(width, height) / 3;\n setPersonaSize(Math.max(Math.min(personaSize, personaMaxSize), personaMinSize));\n })\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 }, [observer, videoTileRef]);\n\n const placeholderOptions = {\n userId,\n text: initialsName || displayName,\n noVideoAvailableAriaLabel,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n };\n\n const videoHintWithBorderRadius = mergeStyles(videoHint, { borderRadius: theme.effects.roundedCorner4 });\n\n const tileInfoStyle = useMemo(\n () =>\n mergeStyles(\n isVideoRendered ? videoHintWithBorderRadius : disabledVideoHint,\n getVideoTileOverrideColor(isVideoRendered, theme, 'neutralPrimary'),\n styles?.displayNameContainer\n ),\n [isVideoRendered, videoHintWithBorderRadius, theme, styles?.displayNameContainer]\n );\n\n const ids = useIdentifiers();\n\n const canShowLabel = showLabel && (displayName || (showMuteIndicator && isMuted));\n const participantStateString = participantStateStringTrampoline(props, locale);\n\n return (\n <Ref innerRef={videoTileRef}>\n <Stack\n data-ui-id={ids.videoTile}\n className={mergeStyles(\n rootStyles,\n {\n background: theme.palette.neutralLighter,\n borderRadius: theme.effects.roundedCorner4\n },\n isSpeaking && {\n '&::before': {\n content: `''`,\n position: 'absolute',\n zIndex: 1,\n border: `0.25rem solid ${theme.palette.themePrimary}`,\n borderRadius: theme.effects.roundedCorner4,\n width: '100%',\n height: '100%'\n }\n },\n styles?.root\n )}\n >\n {isVideoRendered ? (\n <Stack\n className={mergeStyles(\n videoContainerStyles,\n isMirrored && { transform: 'scaleX(-1)' },\n styles?.videoContainer\n )}\n >\n {renderElement}\n </Stack>\n ) : (\n <Stack className={mergeStyles(videoContainerStyles)} style={{ opacity: participantStateString ? 0.4 : 1 }}>\n {onRenderPlaceholder ? (\n onRenderPlaceholder(userId ?? '', placeholderOptions, DefaultPlaceholder)\n ) : (\n <DefaultPlaceholder {...placeholderOptions} />\n )}\n </Stack>\n )}\n\n {(canShowLabel || participantStateString) && (\n <Stack horizontal className={tileInfoContainerStyle} tokens={tileInfoContainerTokens}>\n <Stack horizontal className={tileInfoStyle}>\n {canShowLabel && (\n <Text\n className={mergeStyles(displayNameStyle)}\n title={displayName}\n style={{ color: participantStateString ? theme.palette.neutralSecondary : 'inherit' }}\n >\n {displayName}\n </Text>\n )}\n {participantStateString && (\n <Text className={mergeStyles(participantStateStringStyles(theme))}>\n {bracketedParticipantString(participantStateString, !!canShowLabel)}\n </Text>\n )}\n {showMuteIndicator && isMuted && (\n <Stack className={mergeStyles(iconContainerStyle(theme))}>\n <Icon iconName=\"VideoTileMicOff\" />\n </Stack>\n )}\n </Stack>\n </Stack>\n )}\n\n {children && (\n <Stack className={mergeStyles(overlayContainerStyles, styles?.overlayContainer)}>{children}</Stack>\n )}\n </Stack>\n </Ref>\n );\n};\n\nconst participantStateStringTrampoline = (props: VideoTileProps, locale: ComponentLocale): string | undefined => {\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n const strings = { ...locale.strings.videoTile, ...props.strings };\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n return props.participantState === 'Idle' || props.participantState === 'Connecting'\n ? strings?.participantStateConnecting\n : props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'\n ? strings?.participantStateRinging\n : props.participantState === 'Hold'\n ? strings?.participantStateHold\n : undefined;\n\n return undefined;\n};\n\nconst tileInfoContainerTokens = {\n // A horizontal Stack sets the left margin to 0 for all it's children.\n // We need to allow the children to set their own margins\n childrenGap: 'none'\n};\n\nconst bracketedParticipantString = (participantString: string, withBrackets: boolean): string => {\n return withBrackets ? `(${participantString})` : participantString;\n};\n"]}
1
+ {"version":3,"file":"VideoTile.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/VideoTile.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Icon, IStyle, mergeStyles, Persona, Stack, Text } from '@fluentui/react';\nimport { Ref } from '@fluentui/react-northstar';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useIdentifiers } from '../identifiers';\nimport { ComponentLocale, useLocale } from '../localization';\nimport { useTheme } from '../theming';\nimport { BaseCustomStyles, CustomAvatarOptions, OnRenderAvatarCallback } from '../types';\n/* @conditional-compile-remove(one-to-n-calling) */\n/* @conditional-compile-remove(PSTN-calls) */\nimport { ParticipantState } from '../types';\nimport {\n disabledVideoHint,\n displayNameStyle,\n iconContainerStyle,\n overlayContainerStyles,\n rootStyles,\n videoContainerStyles,\n videoHint,\n tileInfoContainerStyle,\n participantStateStringStyles\n} from './styles/VideoTile.styles';\nimport { getVideoTileOverrideColor } from './utils/videoTileStylesUtils';\n\n/**\n * Strings of {@link VideoTile} that can be overridden.\n * @beta\n */\nexport interface VideoTileStrings {\n participantStateConnecting: string;\n participantStateRinging: string;\n participantStateHold: string;\n}\n\n/**\n * Fluent styles for {@link VideoTile}.\n *\n * @public\n */\nexport interface VideoTileStylesProps extends BaseCustomStyles {\n /** Styles for video container. */\n videoContainer?: IStyle;\n /** Styles for container overlayed on the video container. */\n overlayContainer?: IStyle;\n /** Styles for displayName on the video container. */\n displayNameContainer?: IStyle;\n}\n\n/**\n * Props for {@link VideoTile}.\n *\n * @public\n */\nexport interface VideoTileProps {\n /** React Child components. Child Components will show as overlay component in the VideoTile. */\n children?: React.ReactNode;\n /**\n * Allows users to pass in an object contains custom CSS styles.\n * @Example\n * ```\n * <VideoTile styles={{ root: { background: 'blue' } }} />\n * ```\n */\n styles?: VideoTileStylesProps;\n /** user id for the VideoTile placeholder. */\n userId?: string;\n /** Component with the video stream. */\n renderElement?: JSX.Element | null;\n /** Determines if the video is mirrored or not. */\n isMirrored?: boolean;\n /** Custom render Component function for no video is available. Render a Persona Icon if undefined. */\n onRenderPlaceholder?: OnRenderAvatarCallback;\n /**\n * Show label on the VideoTile\n * @defaultValue true\n */\n showLabel?: boolean;\n /**\n * Whether to display a mute icon beside the user's display name.\n * @defaultValue true\n */\n showMuteIndicator?: boolean;\n /**\n * Whether the video is muted or not.\n */\n isMuted?: boolean;\n /**\n * Display Name of the Participant to be shown in the label.\n * @remarks `displayName` is used to generate avatar initials if `initialsName` is not provided.\n */\n displayName?: string;\n /**\n * Name of the participant used to generate initials. For example, a name `John Doe` will display `JD` as initials.\n * @remarks `displayName` is used if this property is not specified.\n */\n initialsName?: string;\n /**\n * Minimum size of the persona avatar in px.\n * The persona avatar is the default placeholder shown when no video stream is available.\n * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona\n * @defaultValue 32px\n */\n personaMinSize?: number;\n /**\n * Maximum size of the personal avatar in px.\n * The persona avatar is the default placeholder shown when no video stream is available.\n * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona\n * @defaultValue 100px\n */\n personaMaxSize?: number;\n /** Optional property to set the aria label of the video tile if there is no available stream. */\n noVideoAvailableAriaLabel?: string;\n /** Whether the participant in the videoTile is speaking. Shows a speaking indicator (border). */\n isSpeaking?: boolean;\n\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n /**\n * The call connection state of the participant.\n * For example, `Hold` means the participant is on hold.\n */\n participantState?: ParticipantState;\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n strings?: VideoTileStrings;\n}\n\n// Coin max size is set to PersonaSize.size100\nconst DEFAULT_PERSONA_MAX_SIZE_PX = 100;\n// Coin min size is set PersonaSize.size32\nconst DEFAULT_PERSONA_MIN_SIZE_PX = 32;\n\nconst DefaultPlaceholder = (props: CustomAvatarOptions): JSX.Element => {\n const { text, noVideoAvailableAriaLabel, coinSize, hidePersonaDetails } = props;\n\n return (\n <Stack className={mergeStyles({ position: 'absolute', height: '100%', width: '100%' })}>\n <Stack styles={defaultPersonaStyles}>\n <Persona\n coinSize={coinSize}\n hidePersonaDetails={hidePersonaDetails}\n text={text ?? ''}\n initialsTextColor=\"white\"\n aria-label={noVideoAvailableAriaLabel ?? ''}\n showOverflowTooltip={false}\n />\n </Stack>\n </Stack>\n );\n};\n\nconst defaultPersonaStyles = { root: { margin: 'auto', maxHeight: '100%' } };\n\n/**\n * A component to render the video stream for a single call participant.\n *\n * Use with {@link GridLayout} in a {@link VideoGallery}.\n *\n * @public\n */\nexport const VideoTile = (props: VideoTileProps): JSX.Element => {\n const {\n children,\n displayName,\n initialsName,\n isMirrored,\n isMuted,\n onRenderPlaceholder,\n renderElement,\n showLabel = true,\n showMuteIndicator = true,\n styles,\n userId,\n noVideoAvailableAriaLabel,\n isSpeaking,\n personaMinSize = DEFAULT_PERSONA_MIN_SIZE_PX,\n personaMaxSize = DEFAULT_PERSONA_MAX_SIZE_PX\n } = props;\n\n const [personaSize, setPersonaSize] = useState(100);\n const videoTileRef = useRef<HTMLElement>(null);\n\n const locale = useLocale();\n const theme = useTheme();\n\n const isVideoRendered = !!renderElement;\n\n const observer = useRef(\n new ResizeObserver((entries): void => {\n const { width, height } = entries[0].contentRect;\n const personaSize = Math.min(width, height) / 3;\n setPersonaSize(Math.max(Math.min(personaSize, personaMaxSize), personaMinSize));\n })\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 }, [observer, videoTileRef]);\n\n const placeholderOptions = {\n userId,\n text: initialsName || displayName,\n noVideoAvailableAriaLabel,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n };\n\n const videoHintWithBorderRadius = mergeStyles(videoHint, { borderRadius: theme.effects.roundedCorner4 });\n\n const tileInfoStyle = useMemo(\n () =>\n mergeStyles(\n isVideoRendered ? videoHintWithBorderRadius : disabledVideoHint,\n getVideoTileOverrideColor(isVideoRendered, theme, 'neutralPrimary'),\n styles?.displayNameContainer\n ),\n [isVideoRendered, videoHintWithBorderRadius, theme, styles?.displayNameContainer]\n );\n\n const ids = useIdentifiers();\n\n const canShowLabel = showLabel && (displayName || (showMuteIndicator && isMuted));\n const participantStateString = participantStateStringTrampoline(props, locale);\n\n return (\n <Ref innerRef={videoTileRef}>\n <Stack\n data-ui-id={ids.videoTile}\n className={mergeStyles(\n rootStyles,\n {\n background: theme.palette.neutralLighter,\n borderRadius: theme.effects.roundedCorner4\n },\n isSpeaking && {\n '&::before': {\n content: `''`,\n position: 'absolute',\n zIndex: 1,\n border: `0.25rem solid ${theme.palette.themePrimary}`,\n borderRadius: theme.effects.roundedCorner4,\n width: '100%',\n height: '100%'\n }\n },\n styles?.root\n )}\n >\n {isVideoRendered ? (\n <Stack\n className={mergeStyles(\n videoContainerStyles,\n isMirrored && { transform: 'scaleX(-1)' },\n styles?.videoContainer\n )}\n >\n {renderElement}\n </Stack>\n ) : (\n <Stack className={mergeStyles(videoContainerStyles)} style={{ opacity: participantStateString ? 0.4 : 1 }}>\n {onRenderPlaceholder ? (\n onRenderPlaceholder(userId ?? '', placeholderOptions, DefaultPlaceholder)\n ) : (\n <DefaultPlaceholder {...placeholderOptions} />\n )}\n </Stack>\n )}\n\n {(canShowLabel || participantStateString) && (\n <Stack horizontal className={tileInfoContainerStyle} tokens={tileInfoContainerTokens}>\n <Stack horizontal className={tileInfoStyle}>\n {canShowLabel && (\n <Text\n className={mergeStyles(displayNameStyle)}\n title={displayName}\n style={{ color: participantStateString ? theme.palette.neutralSecondary : 'inherit' }}\n >\n {displayName}\n </Text>\n )}\n {participantStateString && (\n <Text className={mergeStyles(participantStateStringStyles(theme))}>\n {bracketedParticipantString(participantStateString, !!canShowLabel)}\n </Text>\n )}\n {showMuteIndicator && isMuted && (\n <Stack className={mergeStyles(iconContainerStyle)}>\n <Icon iconName=\"VideoTileMicOff\" />\n </Stack>\n )}\n </Stack>\n </Stack>\n )}\n\n {children && (\n <Stack className={mergeStyles(overlayContainerStyles, styles?.overlayContainer)}>{children}</Stack>\n )}\n </Stack>\n </Ref>\n );\n};\n\nconst participantStateStringTrampoline = (props: VideoTileProps, locale: ComponentLocale): string | undefined => {\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n const strings = { ...locale.strings.videoTile, ...props.strings };\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n return props.participantState === 'Idle' || props.participantState === 'Connecting'\n ? strings?.participantStateConnecting\n : props.participantState === 'EarlyMedia' || props.participantState === 'Ringing'\n ? strings?.participantStateRinging\n : props.participantState === 'Hold'\n ? strings?.participantStateHold\n : undefined;\n\n return undefined;\n};\n\nconst tileInfoContainerTokens = {\n // A horizontal Stack sets the left margin to 0 for all it's children.\n // We need to allow the children to set their own margins\n childrenGap: 'none'\n};\n\nconst bracketedParticipantString = (participantString: string, withBrackets: boolean): string => {\n return withBrackets ? `(${participantString})` : participantString;\n};\n"]}
@@ -30,7 +30,7 @@ export declare const displayNameStyle: IStyle;
30
30
  /**
31
31
  * @private
32
32
  */
33
- export declare const iconContainerStyle: (theme: Theme) => IStyle;
33
+ export declare const iconContainerStyle: IStyle;
34
34
  /**
35
35
  * @private
36
36
  */
@@ -78,14 +78,15 @@ export const displayNameStyle = {
78
78
  /**
79
79
  * @private
80
80
  */
81
- export const iconContainerStyle = (theme) => ({
81
+ export const iconContainerStyle = {
82
82
  margin: 'auto',
83
83
  alignItems: 'center',
84
84
  '& svg': {
85
85
  display: 'block',
86
- color: theme.palette.neutralPrimary
86
+ // Similar to text color, icon color will be inherited from parent container
87
+ color: 'inherit'
87
88
  }
88
- });
89
+ };
89
90
  /**
90
91
  * @private
91
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VideoTile.styles.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/styles/VideoTile.styles.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAU,WAAW,EAAS,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;IAChD,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;IAC3C,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,MAAM;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,EAAE;IACtD,gHAAgH;IAChH,eAAe,EAAE,uBAAuB;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,GAAG;IACf,kHAAkH;IAClH,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAU,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;KACpC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAY,EAAU,EAAE;IACnE,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IStyle, mergeStyles, Theme } from '@fluentui/react';\n\n/**\n * @private\n */\nexport const rootStyles: IStyle = {\n position: 'relative',\n height: '100%',\n width: '100%'\n};\n\n/**\n * @private\n */\nexport const videoContainerStyles: IStyle = {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n minWidth: '100%',\n minHeight: '100%',\n objectPosition: 'center',\n objectFit: 'cover',\n zIndex: 0\n};\n\n/**\n * @private\n */\nexport const overlayContainerStyles: IStyle = {\n width: '100%',\n height: '100%',\n zIndex: 5\n};\n\n/**\n * @private\n */\nexport const tileInfoContainerStyle = mergeStyles({\n position: 'absolute',\n bottom: '0',\n left: '0',\n padding: '0.5rem',\n width: '100%'\n});\n\n/**\n * @private\n */\nexport const disabledVideoHint = mergeStyles({\n backgroundColor: 'inherit',\n boxShadow: 'none',\n textAlign: 'left',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n alignItems: 'center',\n padding: '0.15rem',\n maxWidth: '100%'\n});\n\n/**\n * @private\n */\nexport const videoHint = mergeStyles(disabledVideoHint, {\n // This will appear on top of the video stream, so no dependency on theme and explicitly use a translucent white\n backgroundColor: 'rgba(255,255,255,0.8)'\n});\n\n/**\n * @private\n */\nexport const displayNameStyle: IStyle = {\n padding: '0.1rem',\n fontSize: '0.75rem',\n fontWeight: 600,\n // Text component will take body color by default (white in Dark Mode), so forcing it to be parent container color\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n};\n\n/**\n * @private\n */\nexport const iconContainerStyle = (theme: Theme): IStyle => ({\n margin: 'auto',\n alignItems: 'center',\n '& svg': {\n display: 'block',\n color: theme.palette.neutralPrimary\n }\n});\n\n/**\n * @private\n */\nexport const participantStateStringStyles = (theme: Theme): IStyle => {\n return {\n minWidth: 'max-content',\n color: theme.palette.black,\n fontSize: '0.75rem',\n lineHeight: 'normal',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n padding: '0.1rem'\n };\n};\n"]}
1
+ {"version":3,"file":"VideoTile.styles.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/styles/VideoTile.styles.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAU,WAAW,EAAS,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAW;IAC1C,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;IAChD,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,MAAM;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;IAC3C,eAAe,EAAE,SAAS;IAC1B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,MAAM;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,EAAE;IACtD,gHAAgH;IAChH,eAAe,EAAE,uBAAuB;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,GAAG;IACf,kHAAkH;IAClH,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,4EAA4E;QAC5E,KAAK,EAAE,SAAS;KACjB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAY,EAAU,EAAE;IACnE,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { IStyle, mergeStyles, Theme } from '@fluentui/react';\n\n/**\n * @private\n */\nexport const rootStyles: IStyle = {\n position: 'relative',\n height: '100%',\n width: '100%'\n};\n\n/**\n * @private\n */\nexport const videoContainerStyles: IStyle = {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n minWidth: '100%',\n minHeight: '100%',\n objectPosition: 'center',\n objectFit: 'cover',\n zIndex: 0\n};\n\n/**\n * @private\n */\nexport const overlayContainerStyles: IStyle = {\n width: '100%',\n height: '100%',\n zIndex: 5\n};\n\n/**\n * @private\n */\nexport const tileInfoContainerStyle = mergeStyles({\n position: 'absolute',\n bottom: '0',\n left: '0',\n padding: '0.5rem',\n width: '100%'\n});\n\n/**\n * @private\n */\nexport const disabledVideoHint = mergeStyles({\n backgroundColor: 'inherit',\n boxShadow: 'none',\n textAlign: 'left',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n alignItems: 'center',\n padding: '0.15rem',\n maxWidth: '100%'\n});\n\n/**\n * @private\n */\nexport const videoHint = mergeStyles(disabledVideoHint, {\n // This will appear on top of the video stream, so no dependency on theme and explicitly use a translucent white\n backgroundColor: 'rgba(255,255,255,0.8)'\n});\n\n/**\n * @private\n */\nexport const displayNameStyle: IStyle = {\n padding: '0.1rem',\n fontSize: '0.75rem',\n fontWeight: 600,\n // Text component will take body color by default (white in Dark Mode), so forcing it to be parent container color\n color: 'inherit',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n};\n\n/**\n * @private\n */\nexport const iconContainerStyle: IStyle = {\n margin: 'auto',\n alignItems: 'center',\n '& svg': {\n display: 'block',\n // Similar to text color, icon color will be inherited from parent container\n color: 'inherit'\n }\n};\n\n/**\n * @private\n */\nexport const participantStateStringStyles = (theme: Theme): IStyle => {\n return {\n minWidth: 'max-content',\n color: theme.palette.black,\n fontSize: '0.75rem',\n lineHeight: 'normal',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n padding: '0.1rem'\n };\n};\n"]}
@@ -5,7 +5,10 @@
5
5
  "removeButtonLabel": "Entfernen",
6
6
  "sharingIconLabel": "Teilen",
7
7
  "mutedIconLabel": "Stumm geschaltet",
8
- "displayNamePlaceholder": "Unbenannter Teilnehmer"
8
+ "displayNamePlaceholder": "Unbenannter Teilnehmer",
9
+ "participantStateConnecting": "Anrufen...",
10
+ "participantStateRinging": "Anrufen...",
11
+ "participantStateHold": "In der Warteschleife"
9
12
  },
10
13
  "typingIndicator": {
11
14
  "singleUser": "{user} schreibt ...",
@@ -18,7 +21,10 @@
18
21
  "placeholderText": "Nachricht eingeben",
19
22
  "textTooLong": "Ihre Nachrichtenlänge überschreitet den maximalen Grenzwert.",
20
23
  "sendButtonAriaLabel": "Nachricht senden",
21
- "fileUploadsPendingError": "Wird hochgeladen... Bitte warten."
24
+ "fileUploadsPendingError": "Wird hochgeladen... Bitte warten.",
25
+ "removeFile": "Datei entfernen",
26
+ "uploading": "Hochladen",
27
+ "uploadCompleted": "Upload abgeschlossen"
22
28
  },
23
29
  "messageStatusIndicator": {
24
30
  "deliveredAriaLabel": "Nachricht gesendet",
@@ -80,7 +86,7 @@
80
86
  },
81
87
  "participantsButton": {
82
88
  "label": "Personen",
83
- "tooltipContent": "Teilnehmer anzeigen",
89
+ "tooltipContent": "Teilnehmende anzeigen",
84
90
  "menuHeader": "In diesem Anruf",
85
91
  "participantsListButtonLabel": "{numParticipants} Personen",
86
92
  "muteAllButtonLabel": "Alle stumm schalten",
@@ -110,6 +116,8 @@
110
116
  "failToSendTag": "Fehler beim Senden",
111
117
  "editedTag": "Bearbeitet",
112
118
  "liveAuthorIntro": "{author} sagt",
119
+ "messageContentAriaText": "{author} hat {message} gesagt",
120
+ "messageContentMineAriaText": "Sie sagten {message}",
113
121
  "editBoxTextLimit": "Ihre Nachricht überschreitet das Limit von {limitNumber} Zeichen.",
114
122
  "editBoxPlaceholderText": "Bearbeiten Sie Ihre Nachricht",
115
123
  "newMessagesIndicator": "Neue Nachrichten",
@@ -117,7 +125,8 @@
117
125
  "editBoxCancelButton": "Abbrechen",
118
126
  "editBoxSubmitButton": "Übermitteln",
119
127
  "messageReadCount": "Gelesen von {messageReadByCount} von {remoteParticipantsCount}",
120
- "actionMenuMoreOptions": "Weitere Optionen"
128
+ "actionMenuMoreOptions": "Weitere Optionen",
129
+ "downloadFile": "Datei herunterladen"
121
130
  },
122
131
  "errorBar": {
123
132
  "unableToReachChatService": "Sie sind offline.",
@@ -138,10 +147,13 @@
138
147
  "callNoMicrophoneFound": "Es wurden keine Mikrofone gefunden. Schließen Sie ein Audioeingabegerät an.",
139
148
  "callMicrophoneAccessDenied": "Auf das Mikrofon kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",
140
149
  "callMicrophoneMutedBySystem": "Sie werden von Ihrem System stummgeschaltet.",
150
+ "callMicrophoneUnmutedBySystem": "Ihr Mikrofon wurde wiederhergestellt, und Ihr System hat die Stummschaltung aufgehoben.",
141
151
  "callMacOsMicrophoneAccessDenied": "Auf das Mikrofon kann nicht zugegriffen werden. Erteilen Sie die Mikrofonberechtigung in Ihren macOS-Datenschutzeinstellungen.",
142
152
  "callLocalVideoFreeze": "Die Netzwerkbandbreite ist schlecht. Ihr Video wird möglicherweise für andere Personen während des Anrufs angehalten angezeigt.",
143
153
  "callCameraAccessDenied": "Auf die Kamera kann nicht zugegriffen werden. Klicken Sie auf die Sperre in der Adressleiste, um dieser Webseite Berechtigungen zu erteilen.",
144
154
  "callCameraAlreadyInUse": "Auf die Kamera kann nicht zugegriffen werden. Sie wird möglicherweise bereits von einer anderen Anwendung verwendet.",
155
+ "callVideoStoppedBySystem": "Ihr Video wurde von Ihrem System beendet.",
156
+ "callVideoRecoveredBySystem": "Ihr Video wurde fortgesetzt.",
145
157
  "callMacOsCameraAccessDenied": "MacOS blockiert den Zugriff auf Ihre Kamera. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser auf Ihre Kamera zugreifen kann.",
146
158
  "callMacOsScreenShareAccessDenied": "MacOS blockiert die Bildschirmfreigabe. Aktualisieren Sie Ihre Datenschutzeinstellungen, damit dieser Browser Ihren Bildschirm aufzeichnen kann.",
147
159
  "dismissButtonAriaLabel": "Schließen",
@@ -158,12 +170,50 @@
158
170
  "displayNamePlaceholder": "Unbenannter Teilnehmer"
159
171
  },
160
172
  "dialpad": {
161
- "placeholderText": "Eine Nummer eingeben"
173
+ "placeholderText": "Telefonnummer eingeben",
174
+ "deleteButtonAriaLabel": "Löschen"
162
175
  },
163
- "HoldButton": {
176
+ "holdButton": {
164
177
  "onLabel": "Fortsetzen",
165
178
  "offLabel": "Halten",
166
- "toolTipOnContent": "Anruf fortsetzen",
167
- "toolTipOffContent": "Anruf halten"
179
+ "tooltipOnContent": "Anruf fortsetzen",
180
+ "tooltipOffContent": "Anruf halten"
181
+ },
182
+ "videoTile": {
183
+ "participantStateConnecting": "Anrufen...",
184
+ "participantStateRinging": "Anrufen...",
185
+ "participantStateHold": "In der Warteschleife"
186
+ },
187
+ "DomainPermissions": {
188
+ "primaryText": "Zulassen, dass {appName} Ihre Kamera und Ihr Mikrofon verwendet",
189
+ "secondaryText": "So können die Teilnehmer Sie sehen und hören.",
190
+ "linkText": "Benötigen Sie Hilfe? Hilfe zur Problembehandlung",
191
+ "primaryButtonText": "Zugriff erlauben"
192
+ },
193
+ "UnsupportedBrowser": {
194
+ "primaryText": "Der Browser wird nicht unterstützt.",
195
+ "secondaryText": "Bitte nehmen Sie über einen kompatiblen Browser an diesem Anruf teil.",
196
+ "moreHelpLink": "Weitere Hilfe"
197
+ },
198
+ "BrowserPermissionDenied": {
199
+ "primaryText": "Kamera oder Mikrofon kann nicht verwendet werden",
200
+ "secondaryText": "Ihr Browser hat möglicherweise keinen Zugriff auf Ihre Kamera oder Ihr Mikrofon. Öffnen Sie die Systemeinstellungen, um dieses Problem zu beheben.",
201
+ "primaryButtonText": "Erneut versuchen",
202
+ "linkText": "Benötigen Sie Hilfe? Hilfe zur Problembehandlung"
203
+ },
204
+ "BrowserPermissionDeniedIOS": {
205
+ "primaryText": "Mikrofonzugriff zulassen, um fortzufahren",
206
+ "secondaryText": "Damit andere Teilnehmer Sie hören können.",
207
+ "primaryButtonText": "Erneut versuchen",
208
+ "imageAltText": "Berechtigungsspeicherort für Mikrofon- und Kamerageräte für iOS",
209
+ "linkText": "Benötigen Sie Hilfe? Hilfe zur Problembehandlung",
210
+ "step1Text": "Zur Einstellungs-App wechseln",
211
+ "step2Text": "Scrollen Sie nach unten zu den Einstellungen dieses Browsers",
212
+ "step3Text": "Mikrofon einschalten (Kamera optional)",
213
+ "step4Text": "Versuchen Sie erneut, dem Anruf beizutreten",
214
+ "step1DigitText": "1",
215
+ "step2DigitText": "2",
216
+ "step3DigitText": "3",
217
+ "step4DigitText": "4"
168
218
  }
169
219
  }
@@ -5,7 +5,10 @@
5
5
  "removeButtonLabel": "Remove",
6
6
  "sharingIconLabel": "Sharing",
7
7
  "mutedIconLabel": "Muted",
8
- "displayNamePlaceholder": "Unnamed Participant"
8
+ "displayNamePlaceholder": "Unnamed Participant",
9
+ "participantStateConnecting": "Calling...",
10
+ "participantStateRinging": "Calling...",
11
+ "participantStateHold": "On hold"
9
12
  },
10
13
  "typingIndicator": {
11
14
  "singleUser": "{user} is typing ...",
@@ -18,7 +21,10 @@
18
21
  "placeholderText": "Enter a message",
19
22
  "textTooLong": "Your message length is over the maximum limit.",
20
23
  "sendButtonAriaLabel": "Send message",
21
- "fileUploadsPendingError": "Uploading... Please wait."
24
+ "fileUploadsPendingError": "Uploading... Please wait.",
25
+ "removeFile": "Remove file",
26
+ "uploading": "Uploading",
27
+ "uploadCompleted": "Upload completed"
22
28
  },
23
29
  "messageStatusIndicator": {
24
30
  "deliveredAriaLabel": "Message sent",
@@ -33,7 +39,7 @@
33
39
  },
34
40
  "endCallButton": {
35
41
  "label": "Leave",
36
- "tooltipContent": "Leave Call"
42
+ "tooltipContent": "Leave call"
37
43
  },
38
44
  "cameraButton": {
39
45
  "onLabel": "Turn off",
@@ -43,7 +49,7 @@
43
49
  "tooltipOffContent": "Turn on camera",
44
50
  "tooltipVideoLoadingContent": "Video is loading",
45
51
  "cameraMenuTitle": "Camera",
46
- "cameraMenuTooltip": "Choose Camera",
52
+ "cameraMenuTooltip": "Choose camera",
47
53
  "cameraButtonSplitRoleDescription": "Split button",
48
54
  "onSplitButtonAriaLabel": "Turn off camera and camera options",
49
55
  "offSplitButtonAriaLabel": "Turn on camera and camera options",
@@ -57,9 +63,9 @@
57
63
  "tooltipOnContent": "Mute microphone",
58
64
  "tooltipOffContent": "Unmute microphone",
59
65
  "microphoneMenuTitle": "Microphone",
60
- "microphoneMenuTooltip": "Choose Microphone",
66
+ "microphoneMenuTooltip": "Choose microphone",
61
67
  "speakerMenuTitle": "Speaker",
62
- "speakerMenuTooltip": "Choose Speaker",
68
+ "speakerMenuTooltip": "Choose speaker",
63
69
  "microphoneButtonSplitRoleDescription": "Split button",
64
70
  "onSplitButtonAriaLabel": "Mute microphone and audio options",
65
71
  "offSplitButtonAriaLabel": "Unmute microphone and audio options",
@@ -70,17 +76,17 @@
70
76
  "label": "Devices",
71
77
  "tooltipContent": "Manage devices",
72
78
  "cameraMenuTitle": "Camera",
73
- "cameraMenuTooltip": "Choose Camera",
79
+ "cameraMenuTooltip": "Choose camera",
74
80
  "audioDeviceMenuTitle": "Audio Device",
75
- "audioDeviceMenuTooltip": "Choose Audio Device",
81
+ "audioDeviceMenuTooltip": "Choose audio device",
76
82
  "microphoneMenuTitle": "Microphone",
77
- "microphoneMenuTooltip": "Choose Microphone",
83
+ "microphoneMenuTooltip": "Choose microphone",
78
84
  "speakerMenuTitle": "Speaker",
79
- "speakerMenuTooltip": "Choose Speaker"
85
+ "speakerMenuTooltip": "Choose speaker"
80
86
  },
81
87
  "participantsButton": {
82
88
  "label": "People",
83
- "tooltipContent": "Show Participants",
89
+ "tooltipContent": "Show participants",
84
90
  "menuHeader": "In this call",
85
91
  "participantsListButtonLabel": "{numParticipants} people",
86
92
  "muteAllButtonLabel": "Mute all",
@@ -110,6 +116,8 @@
110
116
  "failToSendTag": "Failed to send",
111
117
  "editedTag": "Edited",
112
118
  "liveAuthorIntro": "{author} says",
119
+ "messageContentAriaText": "{author} said {message}",
120
+ "messageContentMineAriaText": "You said {message}",
113
121
  "editBoxTextLimit": "Your message is over the limit of {limitNumber} characters",
114
122
  "editBoxPlaceholderText": "Edit your message",
115
123
  "newMessagesIndicator": "New messages",
@@ -117,7 +125,8 @@
117
125
  "editBoxCancelButton": "Cancel",
118
126
  "editBoxSubmitButton": "Submit",
119
127
  "messageReadCount": "Read by {messageReadByCount} of {remoteParticipantsCount}",
120
- "actionMenuMoreOptions": "More Options"
128
+ "actionMenuMoreOptions": "More Options",
129
+ "downloadFile": "Download file"
121
130
  },
122
131
  "errorBar": {
123
132
  "unableToReachChatService": "You are offline",
@@ -138,10 +147,13 @@
138
147
  "callNoMicrophoneFound": "No microphones found. Connect an audio input device.",
139
148
  "callMicrophoneAccessDenied": "Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",
140
149
  "callMicrophoneMutedBySystem": "You are muted by your system.",
150
+ "callMicrophoneUnmutedBySystem": "Your microphone recovered and you were unmuted by your system.",
141
151
  "callMacOsMicrophoneAccessDenied": "Unable to access microphone. Grant microphone permission in your macOS privacy settings.",
142
152
  "callLocalVideoFreeze": "Network bandwidth is poor. Your video may appear paused for others on the call.",
143
153
  "callCameraAccessDenied": "Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",
144
154
  "callCameraAlreadyInUse": "Unable to access camera. It may already be in use by another application.",
155
+ "callVideoStoppedBySystem": "Your video has been stopped by your system.",
156
+ "callVideoRecoveredBySystem": "Your video has resumed.",
145
157
  "callMacOsCameraAccessDenied": "MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",
146
158
  "callMacOsScreenShareAccessDenied": "MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",
147
159
  "dismissButtonAriaLabel": "Close",
@@ -158,12 +170,50 @@
158
170
  "displayNamePlaceholder": "Unnamed Participant"
159
171
  },
160
172
  "dialpad": {
161
- "placeholderText": "Enter a number"
173
+ "placeholderText": "Enter phone number",
174
+ "deleteButtonAriaLabel": "Delete"
162
175
  },
163
- "HoldButton": {
176
+ "holdButton": {
164
177
  "onLabel": "Resume",
165
178
  "offLabel": "Hold",
166
- "toolTipOnContent": "Resume call",
167
- "toolTipOffContent": "Hold call"
179
+ "tooltipOnContent": "Resume call",
180
+ "tooltipOffContent": "Hold call"
181
+ },
182
+ "videoTile": {
183
+ "participantStateConnecting": "Calling...",
184
+ "participantStateRinging": "Calling...",
185
+ "participantStateHold": "On hold"
186
+ },
187
+ "DomainPermissions": {
188
+ "primaryText": "Allow {appName} to use your camera and microphone",
189
+ "secondaryText": "This is so participants can see and hear you.",
190
+ "linkText": "Need help? Get troubleshooting help",
191
+ "primaryButtonText": "Allow Access"
192
+ },
193
+ "UnsupportedBrowser": {
194
+ "primaryText": "Browser not supported",
195
+ "secondaryText": "Please join this call using a compatible browser.",
196
+ "moreHelpLink": "More help"
197
+ },
198
+ "BrowserPermissionDenied": {
199
+ "primaryText": "Can't use your camera or microphone",
200
+ "secondaryText": "Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",
201
+ "primaryButtonText": "Try again",
202
+ "linkText": "Need help? Get troubleshooting help"
203
+ },
204
+ "BrowserPermissionDeniedIOS": {
205
+ "primaryText": "Allow microphone access to continue",
206
+ "secondaryText": "So other participants can hear you.",
207
+ "primaryButtonText": "Try again",
208
+ "imageAltText": "Microphone and camera device permission location for iOS",
209
+ "linkText": "Need help? Get troubleshooting help",
210
+ "step1Text": "Go to the Settings app",
211
+ "step2Text": "Scroll down to settings for this browser",
212
+ "step3Text": "Turn on Microphone (Camera optional)",
213
+ "step4Text": "Try joining the call again",
214
+ "step1DigitText": "1",
215
+ "step2DigitText": "2",
216
+ "step3DigitText": "3",
217
+ "step4DigitText": "4"
168
218
  }
169
219
  }
@@ -5,7 +5,10 @@
5
5
  "removeButtonLabel": "Quitar",
6
6
  "sharingIconLabel": "Compartiendo",
7
7
  "mutedIconLabel": "Silenciado",
8
- "displayNamePlaceholder": "Participante sin nombre"
8
+ "displayNamePlaceholder": "Participante sin nombre",
9
+ "participantStateConnecting": "Llamando...",
10
+ "participantStateRinging": "Llamando...",
11
+ "participantStateHold": "En espera"
9
12
  },
10
13
  "typingIndicator": {
11
14
  "singleUser": "{user} está escribiendo...",
@@ -18,7 +21,10 @@
18
21
  "placeholderText": "Escribir un mensaje",
19
22
  "textTooLong": "La longitud del mensaje supera el límite máximo.",
20
23
  "sendButtonAriaLabel": "Enviar mensaje",
21
- "fileUploadsPendingError": "Cargando... Espere."
24
+ "fileUploadsPendingError": "Cargando... Espere.",
25
+ "removeFile": "Quitar archivo",
26
+ "uploading": "Cargando",
27
+ "uploadCompleted": "Carga completada"
22
28
  },
23
29
  "messageStatusIndicator": {
24
30
  "deliveredAriaLabel": "Mensaje enviado",
@@ -110,6 +116,8 @@
110
116
  "failToSendTag": "Error al enviar",
111
117
  "editedTag": "Editado",
112
118
  "liveAuthorIntro": "{author} dice",
119
+ "messageContentAriaText": "{author} dijo {message}",
120
+ "messageContentMineAriaText": "Has dicho {message}",
113
121
  "editBoxTextLimit": "El mensaje supera el límite de {limitNumber} caracteres",
114
122
  "editBoxPlaceholderText": "Editar el mensaje",
115
123
  "newMessagesIndicator": "Mensajes nuevos",
@@ -117,7 +125,8 @@
117
125
  "editBoxCancelButton": "Cancelar",
118
126
  "editBoxSubmitButton": "Enviar",
119
127
  "messageReadCount": "Leído por {messageReadByCount} de {remoteParticipantsCount}",
120
- "actionMenuMoreOptions": "Más opciones"
128
+ "actionMenuMoreOptions": "Más opciones",
129
+ "downloadFile": "Descargar archivo"
121
130
  },
122
131
  "errorBar": {
123
132
  "unableToReachChatService": "Sin conexión",
@@ -138,10 +147,13 @@
138
147
  "callNoMicrophoneFound": "No se encontraron micrófonos. Conecta un dispositivo de entrada de audio.",
139
148
  "callMicrophoneAccessDenied": "No se puede acceder al micrófono. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",
140
149
  "callMicrophoneMutedBySystem": "Su sistema ha silenciado su audio.",
150
+ "callMicrophoneUnmutedBySystem": "Su micrófono se ha recuperado y el sistema ha activado el audio.",
141
151
  "callMacOsMicrophoneAccessDenied": "No se puede acceder al micrófono. Conceda permiso al micrófono en la configuración de privacidad de macOS.",
142
152
  "callLocalVideoFreeze": "El ancho de banda de red es deficiente. Es posible que el vídeo aparezca pausado para otros usuarios en la llamada.",
143
153
  "callCameraAccessDenied": "No se puede acceder a la cámara. Haga clic en el bloqueo de la barra de direcciones para conceder permiso a esta página web.",
144
154
  "callCameraAlreadyInUse": "No se puede acceder a la cámara. Puede que ya la esté usando otra aplicación.",
155
+ "callVideoStoppedBySystem": "El sistema ha detenido el vídeo.",
156
+ "callVideoRecoveredBySystem": "El vídeo se ha reanudado.",
145
157
  "callMacOsCameraAccessDenied": "MacOS está bloqueando el acceso a la cámara. Actualiza la configuración de privacidad para permitir que este explorador acceda a la cámara.",
146
158
  "callMacOsScreenShareAccessDenied": "MacOS está bloqueando el uso compartido de la pantalla. Actualice la configuración de privacidad para permitir que este explorador grabe la pantalla.",
147
159
  "dismissButtonAriaLabel": "Cerrar",
@@ -158,12 +170,50 @@
158
170
  "displayNamePlaceholder": "Participante sin nombre"
159
171
  },
160
172
  "dialpad": {
161
- "placeholderText": "Introducir un número"
173
+ "placeholderText": "Introduzca el número de teléfono",
174
+ "deleteButtonAriaLabel": "Eliminar"
162
175
  },
163
- "HoldButton": {
176
+ "holdButton": {
164
177
  "onLabel": "Reanudar",
165
178
  "offLabel": "En espera",
166
- "toolTipOnContent": "Reanudar llamada",
167
- "toolTipOffContent": "Poner llamada en espera"
179
+ "tooltipOnContent": "Reanudar llamada",
180
+ "tooltipOffContent": "Poner llamada en espera"
181
+ },
182
+ "videoTile": {
183
+ "participantStateConnecting": "Llamando...",
184
+ "participantStateRinging": "Llamando...",
185
+ "participantStateHold": "En espera"
186
+ },
187
+ "DomainPermissions": {
188
+ "primaryText": "Permitir que {appName} usen la cámara y el micrófono",
189
+ "secondaryText": "Esto es para que los participantes puedan verle y oírle.",
190
+ "linkText": "¿Necesitas ayuda? Obtén ayuda para la solución de problemas",
191
+ "primaryButtonText": "Permitir acceso"
192
+ },
193
+ "UnsupportedBrowser": {
194
+ "primaryText": "Explorador no compatible",
195
+ "secondaryText": "Únase a esta llamada con un explorador compatible.",
196
+ "moreHelpLink": "Más ayuda"
197
+ },
198
+ "BrowserPermissionDenied": {
199
+ "primaryText": "No se puede usar la cámara o el micrófono",
200
+ "secondaryText": "Es posible que el explorador no tenga acceso a la cámara o al micrófono. Para solucionar este problema, abra Preferencias del sistema.",
201
+ "primaryButtonText": "Intentar de nuevo",
202
+ "linkText": "¿Necesitas ayuda? Obtén ayuda para la solución de problemas"
203
+ },
204
+ "BrowserPermissionDeniedIOS": {
205
+ "primaryText": "Permite el acceso al micrófono para continuar",
206
+ "secondaryText": "Para que otros participantes puedan oírte.",
207
+ "primaryButtonText": "Intentar de nuevo",
208
+ "imageAltText": "Ubicación de permisos del dispositivo de micrófono y cámara para iOS",
209
+ "linkText": "¿Necesitas ayuda? Obtén ayuda para la solución de problemas",
210
+ "step1Text": "Ve a la aplicación de Configuración",
211
+ "step2Text": "Desplázate hacia abajo hasta la configuración de este explorador",
212
+ "step3Text": "Activar micrófono (cámara opcional)",
213
+ "step4Text": "Intenta unirte de nuevo a la llamada",
214
+ "step1DigitText": "1",
215
+ "step2DigitText": "2",
216
+ "step3DigitText": "3",
217
+ "step4DigitText": "4"
168
218
  }
169
219
  }