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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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: MediaState,
  28. MUTED: MediaState,
  29. FORCE_MUTED: MediaState,
  30. UNMUTED: MediaState,
  31. NONE: MediaState,
  32. } = {
  33. DOMINANT_SPEAKER: 'DominantSpeaker',
  34. MUTED: 'Muted',
  35. FORCE_MUTED: 'ForceMuted',
  36. UNMUTED: 'Unmuted',
  37. NONE: 'None'
  38. };
  39. export type QuickActionButtonType = 'Mute' | 'AskToUnmute' | 'None';
  40. /**
  41. * Enum of possible participant mute button states.
  42. */
  43. export const QUICK_ACTION_BUTTON: {
  44. MUTE: QuickActionButtonType,
  45. ASK_TO_UNMUTE: QuickActionButtonType,
  46. NONE: QuickActionButtonType
  47. } = {
  48. MUTE: 'Mute',
  49. ASK_TO_UNMUTE: 'AskToUnmute',
  50. NONE: 'None'
  51. };
  52. /**
  53. * Icon mapping for possible participant audio states.
  54. */
  55. export const AudioStateIcons: {[MediaState]: React$Element<any> | null} = {
  56. [MEDIA_STATE.DOMINANT_SPEAKER]: (
  57. <Icon
  58. className = 'jitsi-icon-dominant-speaker'
  59. size = { 16 }
  60. src = { IconMicrophoneEmpty } />
  61. ),
  62. [MEDIA_STATE.FORCE_MUTED]: (
  63. <Icon
  64. color = '#E04757'
  65. size = { 16 }
  66. src = { IconMicrophoneEmptySlash } />
  67. ),
  68. [MEDIA_STATE.MUTED]: (
  69. <Icon
  70. size = { 16 }
  71. src = { IconMicrophoneEmptySlash } />
  72. ),
  73. [MEDIA_STATE.UNMUTED]: (
  74. <Icon
  75. size = { 16 }
  76. src = { IconMicrophoneEmpty } />
  77. ),
  78. [MEDIA_STATE.NONE]: null
  79. };
  80. /**
  81. * Icon mapping for possible participant video states.
  82. */
  83. export const VideoStateIcons = {
  84. [MEDIA_STATE.FORCE_MUTED]: (
  85. <Icon
  86. color = '#E04757'
  87. size = { 16 }
  88. src = { IconCameraEmptyDisabled } />
  89. ),
  90. [MEDIA_STATE.MUTED]: (
  91. <Icon
  92. size = { 16 }
  93. src = { IconCameraEmptyDisabled } />
  94. ),
  95. [MEDIA_STATE.UNMUTED]: (
  96. <Icon
  97. size = { 16 }
  98. src = { IconCameraEmpty } />
  99. ),
  100. [MEDIA_STATE.NONE]: null
  101. };