You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

constants.js 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // @flow
  2. import React from 'react';
  3. import {
  4. Icon,
  5. IconCameraEmpty,
  6. IconCameraEmptyDisabled,
  7. IconMicrophoneEmpty,
  8. IconMicrophoneEmptySlash
  9. } from '../base/icons';
  10. /**
  11. * Reducer key for the feature.
  12. */
  13. export const REDUCER_KEY = 'features/participants-pane';
  14. export type ActionTrigger = 'Hover' | 'Permanent'
  15. /**
  16. * Enum of possible participant action triggers.
  17. */
  18. export const ACTION_TRIGGER: {HOVER: ActionTrigger, PERMANENT: ActionTrigger} = {
  19. HOVER: 'Hover',
  20. PERMANENT: 'Permanent'
  21. };
  22. export type MediaState = 'DominantSpeaker' | 'Muted' | 'ForceMuted' | 'Unmuted' | 'None';
  23. /**
  24. * Enum of possible participant media states.
  25. */
  26. export const MEDIA_STATE = {
  27. DOMINANT_SPEAKER: 'DominantSpeaker',
  28. MUTED: 'Muted',
  29. FORCE_MUTED: 'ForceMuted',
  30. UNMUTED: 'Unmuted',
  31. NONE: 'None'
  32. };
  33. export type QuickActionButtonType = 'Mute' | 'AskToUnmute' | 'None';
  34. /**
  35. * Enum of possible participant mute button states.
  36. */
  37. export const QUICK_ACTION_BUTTON: {
  38. MUTE: QuickActionButtonType,
  39. ASK_TO_UNMUTE: QuickActionButtonType,
  40. NONE: QuickActionButtonType
  41. } = {
  42. MUTE: 'Mute',
  43. ASK_TO_UNMUTE: 'AskToUnmute',
  44. NONE: 'None'
  45. };
  46. /**
  47. * Icon mapping for possible participant audio states.
  48. */
  49. export const AudioStateIcons: {[MediaState]: React$Element<any> | null} = {
  50. [MEDIA_STATE.DOMINANT_SPEAKER]: (
  51. <Icon
  52. className = 'jitsi-icon-dominant-speaker'
  53. size = { 16 }
  54. src = { IconMicrophoneEmpty } />
  55. ),
  56. [MEDIA_STATE.FORCE_MUTED]: (
  57. <Icon
  58. color = '#E04757'
  59. size = { 16 }
  60. src = { IconMicrophoneEmptySlash } />
  61. ),
  62. [MEDIA_STATE.MUTED]: (
  63. <Icon
  64. size = { 16 }
  65. src = { IconMicrophoneEmptySlash } />
  66. ),
  67. [MEDIA_STATE.UNMUTED]: (
  68. <Icon
  69. size = { 16 }
  70. src = { IconMicrophoneEmpty } />
  71. ),
  72. [MEDIA_STATE.NONE]: null
  73. };
  74. /**
  75. * Icon mapping for possible participant video states.
  76. */
  77. export const VideoStateIcons = {
  78. [MEDIA_STATE.DOMINANT_SPEAKER]: null,
  79. [MEDIA_STATE.FORCE_MUTED]: (
  80. <Icon
  81. color = '#E04757'
  82. id = 'videoMuted'
  83. size = { 16 }
  84. src = { IconCameraEmptyDisabled } />
  85. ),
  86. [MEDIA_STATE.MUTED]: (
  87. <Icon
  88. id = 'videoMuted'
  89. size = { 16 }
  90. src = { IconCameraEmptyDisabled } />
  91. ),
  92. [MEDIA_STATE.UNMUTED]: (
  93. <Icon
  94. size = { 16 }
  95. src = { IconCameraEmpty } />
  96. ),
  97. [MEDIA_STATE.NONE]: null
  98. };
  99. /**
  100. * Mobile web context menu avatar size.
  101. */
  102. export const AVATAR_SIZE = 20;