@azure/communication-react 1.7.1-alpha-202308170011 → 1.7.1-alpha-202308180011

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 (128) hide show
  1. package/dist/communication-react.d.ts +115 -8
  2. package/dist/dist-cjs/communication-react/index.js +688 -117
  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-component-bindings/src/baseSelectors.d.ts +5 -0
  7. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +8 -0
  8. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.d.ts +15 -0
  10. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +16 -1
  11. package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +3 -0
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +28 -6
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js.map +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +13 -1
  17. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  18. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +8 -1
  19. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  20. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.d.ts +2 -2
  21. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js +4 -10
  22. package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -1
  23. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +3 -2
  24. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +22 -7
  25. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  26. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +14 -4
  27. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  28. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +11 -4
  29. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js +0 -1
  30. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  31. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +13 -3
  32. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  33. package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts +6 -0
  34. package/dist/dist-esm/calling-stateful-client/src/Converter.js +9 -0
  35. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  36. package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -0
  37. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  38. package/dist/dist-esm/communication-react/src/index.d.ts +2 -0
  39. package/dist/dist-esm/communication-react/src/index.js +2 -0
  40. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  41. package/dist/dist-esm/react-components/src/components/ParticipantList.js +45 -13
  42. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  43. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +10 -2
  44. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  45. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +2 -1
  46. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  47. package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.d.ts +28 -0
  48. package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js +145 -0
  49. package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js.map +1 -0
  50. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +2 -0
  51. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +19 -2
  52. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +1 -1
  54. package/dist/dist-esm/react-components/src/components/VideoGallery.js +14 -5
  55. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/VideoTile.js +2 -2
  57. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  58. package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.d.ts +7 -0
  59. package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js +5 -1
  60. package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js.map +1 -1
  61. package/dist/dist-esm/react-components/src/theming/icons.d.ts +2 -0
  62. package/dist/dist-esm/react-components/src/theming/icons.js +5 -1
  63. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  64. package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.d.ts +1 -1
  65. package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.js.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +10 -0
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +5 -3
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +12 -0
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -0
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +20 -0
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +12 -0
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +3 -0
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +5 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +29 -0
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.d.ts +2 -0
  82. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +6 -2
  83. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  84. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +2 -0
  85. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +21 -11
  86. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  87. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.d.ts +12 -0
  88. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js +26 -0
  89. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js.map +1 -0
  90. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +19 -4
  91. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  92. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +2 -0
  93. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +13 -3
  94. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  95. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.d.ts +5 -0
  96. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +5 -0
  97. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  98. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.d.ts +3 -1
  99. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js +12 -2
  100. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js.map +1 -1
  101. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +10 -0
  102. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +6 -2
  103. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  104. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +4 -0
  105. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +18 -0
  106. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  107. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +12 -0
  108. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  109. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -0
  110. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +4 -0
  111. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  112. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -5
  113. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  114. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +3 -0
  115. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +13 -1
  116. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  117. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.d.ts +3 -0
  118. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +56 -0
  119. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
  120. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +25 -0
  121. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  122. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +16 -2
  123. package/dist/dist-esm/react-composites/src/composites/common/icons.js +11 -1
  124. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  125. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +7 -0
  126. package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
  127. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +4 -1
  128. package/package.json +8 -8
@@ -5,6 +5,10 @@ import { CameraButton, EndCallButton, ErrorBar, MicrophoneButton, DevicesButton,
5
5
  import { Dialpad } from "../../../react-components/src";
6
6
  /* @conditional-compile-remove(PSTN-calls) */
7
7
  import { HoldButton } from "../../../react-components/src";
8
+ /* @conditional-compile-remove(raise-hand) */
9
+ import { RaiseHandButton } from "../../../react-components/src";
10
+ /* @conditional-compile-remove(raise-hand) */
11
+ import { raiseHandButtonSelector } from '../callControlSelectors';
8
12
  import { cameraButtonSelector, microphoneButtonSelector, devicesButtonSelector, screenShareButtonSelector } from '../callControlSelectors';
9
13
  /* @conditional-compile-remove(PSTN-calls) */
10
14
  import { holdButtonSelector } from '../callControlSelectors';
@@ -57,6 +61,10 @@ export const getSelector = (component) => {
57
61
  if (component === HoldButton) {
58
62
  return findConditionalCompiledSelector(component);
59
63
  }
64
+ /* @conditional-compile-remove(raise-hand) */
65
+ if (component === RaiseHandButton) {
66
+ return findConditionalCompiledSelector(component);
67
+ }
60
68
  return findSelector(component);
61
69
  };
62
70
  const findSelector = (component) => {
@@ -87,11 +95,15 @@ const findSelector = (component) => {
87
95
  }
88
96
  return undefined;
89
97
  };
90
- /* @conditional-compile-remove(PSTN-calls) */
98
+ /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */
91
99
  const findConditionalCompiledSelector = (component) => {
92
100
  switch (component) {
93
101
  case HoldButton:
94
102
  return holdButtonSelector;
103
+ /* @conditional-compile-remove(raise-hand) */
104
+ case RaiseHandButton:
105
+ /* @conditional-compile-remove(raise-hand) */
106
+ return raiseHandButtonSelector;
95
107
  }
96
108
  };
97
109
  //# sourceMappingURL=usePropsFor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePropsFor.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/hooks/usePropsFor.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,sCAAmC;AACpC,0CAA0C,CAAC,6CAA6C;AACxF,OAAO,EAAE,OAAO,EAAE,sCAAmC;AACrD,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAE,sCAAmC;AACxD,OAAO,EAEL,oBAAoB,EAEpB,wBAAwB,EAExB,qBAAqB,EAErB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAsB,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAwB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAA2B,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAA8B,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,kBAAkB,EAAE,sCAAmC;AAChE,OAAO,EAAoB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGzE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAoB,EAGR,EAAE;IACd,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAA2B,SAAS,CAAC,CAAC;IAClE,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,gCAAK,KAAK,GAAK,QAAQ,CAAS,CAAC;KACzC;IACD,OAAO,SAAgB,CAAC;AAC1B,CAAC,CAAC;AAWF,MAAM,aAAa,GAAkB,GAA0B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAkCvE;;;;;;;GAOG;AACH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAoB,EACI,EAAE;IAC1B,6CAA6C;IAC7C,IAAI,SAAS,KAAK,UAAU,EAAE;QAC5B,OAAO,+BAA+B,CAAC,SAAS,CAAC,CAAC;KACnD;IACD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,SAAkD,EAAO,EAAE;IAC/E,0CAA0C,CAAC,6CAA6C;IACxF,wHAAwH;IACxH,IAAI,SAAS,KAAK,OAAO,EAAE;QACzB,OAAO,aAAa,CAAC;KACtB;IAED,QAAQ,SAAS,EAAE;QACjB,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC;QAC9B,KAAK,gBAAgB;YACnB,OAAO,wBAAwB,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,oBAAoB,CAAC;QAC9B,KAAK,iBAAiB;YACpB,OAAO,yBAAyB,CAAC;QACnC,KAAK,aAAa;YAChB,OAAO,qBAAqB,CAAC;QAC/B,KAAK,eAAe;YAClB,OAAO,uBAAuB,CAAC;QACjC,KAAK,kBAAkB;YACrB,OAAO,0BAA0B,CAAC;QACpC,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;KAC3B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,+BAA+B,GAAG,CAAC,SAAkD,EAAO,EAAE;IAClG,QAAQ,SAAS,EAAE;QACjB,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC;KAC7B;AACH,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CameraButton,\n EndCallButton,\n ErrorBar,\n MicrophoneButton,\n DevicesButton,\n ParticipantList,\n ScreenShareButton,\n VideoGallery\n} from '@internal/react-components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Dialpad } from '@internal/react-components';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { HoldButton } from '@internal/react-components';\nimport {\n CameraButtonSelector,\n cameraButtonSelector,\n MicrophoneButtonSelector,\n microphoneButtonSelector,\n DevicesButtonSelector,\n devicesButtonSelector,\n ScreenShareButtonSelector,\n screenShareButtonSelector\n} from '../callControlSelectors';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { holdButtonSelector, HoldButtonSelector } from '../callControlSelectors';\nimport { VideoGallerySelector, videoGallerySelector } from '../videoGallerySelector';\nimport { ParticipantListSelector, participantListSelector } from '../participantListSelector';\nimport { ParticipantsButtonSelector, participantsButtonSelector } from '../participantsButtonSelector';\nimport { useHandlers } from './useHandlers';\nimport { useSelector } from './useSelector';\nimport { Common } from '@internal/acs-ui-common';\nimport { AreEqual } from '@internal/acs-ui-common';\nimport { ParticipantsButton } from '@internal/react-components';\nimport { ErrorBarSelector, errorBarSelector } from '../errorBarSelector';\nimport { CommonCallingHandlers } from '../handlers/createCommonHandlers';\n\n/**\n * Primary hook to get all hooks necessary for a calling Component.\n *\n * Most straightforward usage of calling components looks like:\n *\n * @example\n * ```\n * import { ParticipantList, usePropsFor } from '@azure/communication-react';\n *\n * const App = (): JSX.Element => {\n * // ... code to setup Providers ...\n *\n * return <ParticipantList {...usePropsFor(ParticipantList)}/>\n * }\n * ```\n *\n * @public\n */\nexport const usePropsFor = <Component extends (props: any) => JSX.Element>(\n component: Component\n): GetSelector<Component> extends (props: any) => any\n ? ReturnType<GetSelector<Component>> & Common<CommonCallingHandlers, Parameters<Component>[0]>\n : undefined => {\n const selector = getSelector(component);\n const props = useSelector(selector);\n const handlers = useHandlers<Parameters<Component>[0]>(component);\n if (props !== undefined) {\n return { ...props, ...handlers } as any;\n }\n return undefined as any;\n};\n\n/**\n * A type for trivial selectors that return no data.\n *\n * Used as a default return value if {@link usePropsFor} is called for a component that requires no data.\n *\n * @public\n */\nexport type EmptySelector = () => Record<string, never>;\n\nconst emptySelector: EmptySelector = (): Record<string, never> => ({});\n\n/**\n * Specific type of the selector applicable to a given Component.\n *\n * @public\n */\nexport type GetSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<\n Component,\n typeof VideoGallery\n> extends true\n ? VideoGallerySelector\n : AreEqual<Component, typeof DevicesButton> extends true\n ? DevicesButtonSelector\n : AreEqual<Component, typeof MicrophoneButton> extends true\n ? MicrophoneButtonSelector\n : AreEqual<Component, typeof CameraButton> extends true\n ? CameraButtonSelector\n : AreEqual<Component, typeof ScreenShareButton> extends true\n ? ScreenShareButtonSelector\n : AreEqual<Component, typeof ParticipantList> extends true\n ? ParticipantListSelector\n : AreEqual<Component, typeof ParticipantsButton> extends true\n ? ParticipantsButtonSelector\n : AreEqual<Component, typeof EndCallButton> extends true\n ? EmptySelector\n : AreEqual<Component, typeof ErrorBar> extends true\n ? ErrorBarSelector\n : AreEqual<Component, typeof Dialpad> extends true\n ? /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ EmptySelector\n : AreEqual<Component, typeof HoldButton> extends true\n ? /* @conditional-compile-remove(PSTN-calls) */ HoldButtonSelector\n : undefined;\n\n/**\n * Get the selector for a specified component.\n *\n * Useful when implementing a custom component that utilizes the providers\n * exported from this library.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getSelector = <Component extends (props: any) => JSX.Element | undefined>(\n component: Component\n): GetSelector<Component> => {\n /* @conditional-compile-remove(PSTN-calls) */\n if (component === HoldButton) {\n return findConditionalCompiledSelector(component);\n }\n return findSelector(component);\n};\n\nconst findSelector = (component: (props: any) => JSX.Element | undefined): any => {\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector\n if (component === Dialpad) {\n return emptySelector;\n }\n\n switch (component) {\n case VideoGallery:\n return videoGallerySelector;\n case MicrophoneButton:\n return microphoneButtonSelector;\n case CameraButton:\n return cameraButtonSelector;\n case ScreenShareButton:\n return screenShareButtonSelector;\n case DevicesButton:\n return devicesButtonSelector;\n case ParticipantList:\n return participantListSelector;\n case ParticipantsButton:\n return participantsButtonSelector;\n case EndCallButton:\n return emptySelector;\n case ErrorBar:\n return errorBarSelector;\n }\n return undefined;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */\nconst findConditionalCompiledSelector = (component: (props: any) => JSX.Element | undefined): any => {\n switch (component) {\n case HoldButton:\n return holdButtonSelector;\n }\n};\n\"../../../react-components/src\"\"../../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"usePropsFor.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/hooks/usePropsFor.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n CameraButton,\n EndCallButton,\n ErrorBar,\n MicrophoneButton,\n DevicesButton,\n ParticipantList,\n ScreenShareButton,\n VideoGallery\n} from '@internal/react-components';\n/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\nimport { Dialpad } from '@internal/react-components';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { HoldButton } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaiseHandButton } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { raiseHandButtonSelector } from '../callControlSelectors';\nimport {\n CameraButtonSelector,\n cameraButtonSelector,\n MicrophoneButtonSelector,\n microphoneButtonSelector,\n DevicesButtonSelector,\n devicesButtonSelector,\n ScreenShareButtonSelector,\n screenShareButtonSelector\n} from '../callControlSelectors';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { holdButtonSelector, HoldButtonSelector } from '../callControlSelectors';\nimport { VideoGallerySelector, videoGallerySelector } from '../videoGallerySelector';\nimport { ParticipantListSelector, participantListSelector } from '../participantListSelector';\nimport { ParticipantsButtonSelector, participantsButtonSelector } from '../participantsButtonSelector';\nimport { useHandlers } from './useHandlers';\nimport { useSelector } from './useSelector';\nimport { Common } from '@internal/acs-ui-common';\nimport { AreEqual } from '@internal/acs-ui-common';\nimport { ParticipantsButton } from '@internal/react-components';\nimport { ErrorBarSelector, errorBarSelector } from '../errorBarSelector';\nimport { CommonCallingHandlers } from '../handlers/createCommonHandlers';\n\n/**\n * Primary hook to get all hooks necessary for a calling Component.\n *\n * Most straightforward usage of calling components looks like:\n *\n * @example\n * ```\n * import { ParticipantList, usePropsFor } from '@azure/communication-react';\n *\n * const App = (): JSX.Element => {\n * // ... code to setup Providers ...\n *\n * return <ParticipantList {...usePropsFor(ParticipantList)}/>\n * }\n * ```\n *\n * @public\n */\nexport const usePropsFor = <Component extends (props: any) => JSX.Element>(\n component: Component\n): GetSelector<Component> extends (props: any) => any\n ? ReturnType<GetSelector<Component>> & Common<CommonCallingHandlers, Parameters<Component>[0]>\n : undefined => {\n const selector = getSelector(component);\n const props = useSelector(selector);\n const handlers = useHandlers<Parameters<Component>[0]>(component);\n if (props !== undefined) {\n return { ...props, ...handlers } as any;\n }\n return undefined as any;\n};\n\n/**\n * A type for trivial selectors that return no data.\n *\n * Used as a default return value if {@link usePropsFor} is called for a component that requires no data.\n *\n * @public\n */\nexport type EmptySelector = () => Record<string, never>;\n\nconst emptySelector: EmptySelector = (): Record<string, never> => ({});\n\n/**\n * Specific type of the selector applicable to a given Component.\n *\n * @public\n */\nexport type GetSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<\n Component,\n typeof VideoGallery\n> extends true\n ? VideoGallerySelector\n : AreEqual<Component, typeof DevicesButton> extends true\n ? DevicesButtonSelector\n : AreEqual<Component, typeof MicrophoneButton> extends true\n ? MicrophoneButtonSelector\n : AreEqual<Component, typeof CameraButton> extends true\n ? CameraButtonSelector\n : AreEqual<Component, typeof ScreenShareButton> extends true\n ? ScreenShareButtonSelector\n : AreEqual<Component, typeof ParticipantList> extends true\n ? ParticipantListSelector\n : AreEqual<Component, typeof ParticipantsButton> extends true\n ? ParticipantsButtonSelector\n : AreEqual<Component, typeof EndCallButton> extends true\n ? EmptySelector\n : AreEqual<Component, typeof ErrorBar> extends true\n ? ErrorBarSelector\n : AreEqual<Component, typeof Dialpad> extends true\n ? /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */ EmptySelector\n : AreEqual<Component, typeof HoldButton> extends true\n ? /* @conditional-compile-remove(PSTN-calls) */ HoldButtonSelector\n : undefined;\n\n/**\n * Get the selector for a specified component.\n *\n * Useful when implementing a custom component that utilizes the providers\n * exported from this library.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const getSelector = <Component extends (props: any) => JSX.Element | undefined>(\n component: Component\n): GetSelector<Component> => {\n /* @conditional-compile-remove(PSTN-calls) */\n if (component === HoldButton) {\n return findConditionalCompiledSelector(component);\n }\n /* @conditional-compile-remove(raise-hand) */\n if (component === RaiseHandButton) {\n return findConditionalCompiledSelector(component);\n }\n return findSelector(component);\n};\n\nconst findSelector = (component: (props: any) => JSX.Element | undefined): any => {\n /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */\n // Dialpad only has handlers currently and doesn't require any props from the stateful layer so return the emptySelector\n if (component === Dialpad) {\n return emptySelector;\n }\n\n switch (component) {\n case VideoGallery:\n return videoGallerySelector;\n case MicrophoneButton:\n return microphoneButtonSelector;\n case CameraButton:\n return cameraButtonSelector;\n case ScreenShareButton:\n return screenShareButtonSelector;\n case DevicesButton:\n return devicesButtonSelector;\n case ParticipantList:\n return participantListSelector;\n case ParticipantsButton:\n return participantsButtonSelector;\n case EndCallButton:\n return emptySelector;\n case ErrorBar:\n return errorBarSelector;\n }\n return undefined;\n};\n\n/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */\nconst findConditionalCompiledSelector = (component: (props: any) => JSX.Element | undefined): any => {\n switch (component) {\n case HoldButton:\n return holdButtonSelector;\n /* @conditional-compile-remove(raise-hand) */\n case RaiseHandButton:\n /* @conditional-compile-remove(raise-hand) */\n return raiseHandButtonSelector;\n }\n};\n\"../../../react-components/src\"\"../../../acs-ui-common/src\""]}
@@ -9,6 +9,8 @@ import { memoizedConvertAllremoteParticipants } from './utils/participantListSel
9
9
  import { memoizedConvertAllremoteParticipantsBetaRelease } from './utils/participantListSelectorUtils';
10
10
  /* @conditional-compile-remove(raise-hand) */
11
11
  import { memoizedConvertAllremoteParticipantsBeta } from './utils/participantListSelectorUtils';
12
+ /* @conditional-compile-remove(raise-hand) */
13
+ import { getLocalParticipantRaisedHand } from './baseSelectors';
12
14
  import { toFlatCommunicationIdentifier } from "../../acs-ui-common/src";
13
15
  import { getParticipantCount } from './baseSelectors';
14
16
  import { isPhoneNumberIdentifier } from '@azure/communication-common';
@@ -75,9 +77,12 @@ export const participantListSelector = createSelector([
75
77
  getRemoteParticipants,
76
78
  getIsScreenSharingOn,
77
79
  getIsMuted,
80
+ /* @conditional-compile-remove(raise-hand) */ getLocalParticipantRaisedHand,
78
81
  getRole,
79
82
  getParticipantCount
80
- ], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted, role, partitipantCount) => {
83
+ ], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted,
84
+ /* @conditional-compile-remove(raise-hand) */
85
+ raisedHand, role, partitipantCount) => {
81
86
  const localUserCanRemoveOthers = localUserCanRemoveOthersTrampoline(role);
82
87
  const participants = remoteParticipants
83
88
  ? convertRemoteParticipantsToParticipantListParticipants(updateUserDisplayNamesTrampoline(Object.values(remoteParticipants)), localUserCanRemoveOthers)
@@ -87,6 +92,8 @@ export const participantListSelector = createSelector([
87
92
  displayName: displayName,
88
93
  isScreenSharing: isScreenSharingOn,
89
94
  isMuted: isMuted,
95
+ /* @conditional-compile-remove(raise-hand) */
96
+ raisedHand: raisedHand,
90
97
  state: 'Connected',
91
98
  // Local participant can never remove themselves.
92
99
  isRemovable: false
@@ -1 +1 @@
1
- {"version":3,"file":"participantListSelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/participantListSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CallClientState, RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { createSelector } from 'reselect';\nimport {\n getIdentifier,\n getDisplayName,\n getRemoteParticipants,\n getIsScreenSharingOn,\n getIsMuted,\n CallingBaseSelectorProps\n} from './baseSelectors';\nimport { getRole } from './baseSelectors';\nimport { CallParticipantListParticipant } from '@internal/react-components';\nimport { _isRingingPSTNParticipant, _updateUserDisplayNames } from './utils/callUtils';\nimport { memoizedConvertAllremoteParticipants } from './utils/participantListSelectorUtils';\n/* @conditional-compile-remove(rooms) */\nimport { memoizedConvertAllremoteParticipantsBetaRelease } from './utils/participantListSelectorUtils';\n/* @conditional-compile-remove(raise-hand) */\nimport { memoizedConvertAllremoteParticipantsBeta } from './utils/participantListSelectorUtils';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { getParticipantCount } from './baseSelectors';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(communication-common-beta-v3) */\nimport { isMicrosoftBotIdentifier } from '@azure/communication-common';\n\nconst convertRemoteParticipantsToParticipantListParticipants = (\n remoteParticipants: RemoteParticipantState[],\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant[] => {\n /* eslint-disable @typescript-eslint/explicit-function-return-type */\n const conversionCallback = (memoizeFn) => {\n return (\n remoteParticipants\n // Filter out MicrosoftBot participants\n .filter((participant: RemoteParticipantState) => {\n /* @conditional-compile-remove(communication-common-beta-v3) */\n return !isMicrosoftBotIdentifier(participant.identifier);\n return true;\n })\n /**\n * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.\n * phone users will be in the connecting state until they are connected to the call.\n */\n .filter((participant) => {\n return (\n !['InLobby', 'Idle', 'Connecting', 'Disconnected'].includes(participant.state) ||\n isPhoneNumberIdentifier(participant.identifier)\n );\n })\n .map((participant: RemoteParticipantState) => {\n const isScreenSharing = Object.values(participant.videoStreams).some(\n (videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable\n );\n /**\n * We want to check the participant to see if they are a PSTN participant joining the call\n * and mapping their state to be 'Ringing'\n */\n const state = _isRingingPSTNParticipant(participant);\n return memoizeFn(\n toFlatCommunicationIdentifier(participant.identifier),\n participant.displayName,\n state,\n participant.isMuted,\n isScreenSharing,\n participant.isSpeaking,\n /* @conditional-compile-remove(raise-hand) */\n participant.raisedHand,\n localUserCanRemoveOthers\n );\n })\n .sort((a, b) => {\n const nameA = a.displayName?.toLowerCase() || '';\n const nameB = b.displayName?.toLowerCase() || '';\n if (nameA < nameB) {\n return -1;\n } else if (nameA > nameB) {\n return 1;\n } else {\n return 0;\n }\n })\n );\n };\n /* @conditional-compile-remove(raise-hand) */\n return memoizedConvertAllremoteParticipantsBeta(conversionCallback);\n /* @conditional-compile-remove(rooms) */\n return memoizedConvertAllremoteParticipantsBetaRelease(conversionCallback);\n return memoizedConvertAllremoteParticipants(conversionCallback);\n};\n\n/**\n * Selector type for {@link ParticipantList} component.\n *\n * @public\n */\nexport type ParticipantListSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n participants: CallParticipantListParticipant[];\n myUserId: string;\n /* @conditional-compile-remove(total-participant-count) */\n totalParticipantCount?: number;\n};\n\n/**\n * Selects data that drives {@link ParticipantList} component.\n *\n * @public\n */\nexport const participantListSelector: ParticipantListSelector = createSelector(\n [\n getIdentifier,\n getDisplayName,\n getRemoteParticipants,\n getIsScreenSharingOn,\n getIsMuted,\n getRole,\n getParticipantCount\n ],\n (\n userId,\n displayName,\n remoteParticipants,\n isScreenSharingOn,\n isMuted,\n role,\n partitipantCount\n ): {\n participants: CallParticipantListParticipant[];\n myUserId: string;\n totalParticipantCount?: number;\n } => {\n const localUserCanRemoveOthers = localUserCanRemoveOthersTrampoline(role);\n const participants = remoteParticipants\n ? convertRemoteParticipantsToParticipantListParticipants(\n updateUserDisplayNamesTrampoline(Object.values(remoteParticipants)),\n localUserCanRemoveOthers\n )\n : [];\n participants.push({\n userId: userId,\n displayName: displayName,\n isScreenSharing: isScreenSharingOn,\n isMuted: isMuted,\n state: 'Connected',\n // Local participant can never remove themselves.\n isRemovable: false\n });\n /* @conditional-compile-remove(total-participant-count) */\n const totalParticipantCount = partitipantCount;\n return {\n participants: participants,\n myUserId: userId,\n /* @conditional-compile-remove(total-participant-count) */\n totalParticipantCount: totalParticipantCount\n };\n }\n);\n\nconst updateUserDisplayNamesTrampoline = (remoteParticipants: RemoteParticipantState[]): RemoteParticipantState[] => {\n /* @conditional-compile-remove(PSTN-calls) */\n return _updateUserDisplayNames(remoteParticipants);\n return remoteParticipants;\n};\n\nconst localUserCanRemoveOthersTrampoline = (role?: string): boolean => {\n /* @conditional-compile-remove(rooms) */\n return role === 'Presenter' || role === 'Unknown' || role === undefined;\n return true;\n};\n\"../../calling-stateful-client/src\"\"../../react-components/src\"\"../../acs-ui-common/src\""]}
1
+ {"version":3,"file":"participantListSelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/participantListSelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { CallClientState, RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { createSelector } from 'reselect';\nimport {\n getIdentifier,\n getDisplayName,\n getRemoteParticipants,\n getIsScreenSharingOn,\n getIsMuted,\n CallingBaseSelectorProps\n} from './baseSelectors';\nimport { getRole } from './baseSelectors';\nimport { CallParticipantListParticipant } from '@internal/react-components';\nimport { _isRingingPSTNParticipant, _updateUserDisplayNames } from './utils/callUtils';\nimport { memoizedConvertAllremoteParticipants } from './utils/participantListSelectorUtils';\n/* @conditional-compile-remove(rooms) */\nimport { memoizedConvertAllremoteParticipantsBetaRelease } from './utils/participantListSelectorUtils';\n/* @conditional-compile-remove(raise-hand) */\nimport { memoizedConvertAllremoteParticipantsBeta } from './utils/participantListSelectorUtils';\n/* @conditional-compile-remove(raise-hand) */\nimport { getLocalParticipantRaisedHand } from './baseSelectors';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { getParticipantCount } from './baseSelectors';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(communication-common-beta-v3) */\nimport { isMicrosoftBotIdentifier } from '@azure/communication-common';\n\nconst convertRemoteParticipantsToParticipantListParticipants = (\n remoteParticipants: RemoteParticipantState[],\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant[] => {\n /* eslint-disable @typescript-eslint/explicit-function-return-type */\n const conversionCallback = (memoizeFn) => {\n return (\n remoteParticipants\n // Filter out MicrosoftBot participants\n .filter((participant: RemoteParticipantState) => {\n /* @conditional-compile-remove(communication-common-beta-v3) */\n return !isMicrosoftBotIdentifier(participant.identifier);\n return true;\n })\n /**\n * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.\n * phone users will be in the connecting state until they are connected to the call.\n */\n .filter((participant) => {\n return (\n !['InLobby', 'Idle', 'Connecting', 'Disconnected'].includes(participant.state) ||\n isPhoneNumberIdentifier(participant.identifier)\n );\n })\n .map((participant: RemoteParticipantState) => {\n const isScreenSharing = Object.values(participant.videoStreams).some(\n (videoStream) => videoStream.mediaStreamType === 'ScreenSharing' && videoStream.isAvailable\n );\n /**\n * We want to check the participant to see if they are a PSTN participant joining the call\n * and mapping their state to be 'Ringing'\n */\n const state = _isRingingPSTNParticipant(participant);\n return memoizeFn(\n toFlatCommunicationIdentifier(participant.identifier),\n participant.displayName,\n state,\n participant.isMuted,\n isScreenSharing,\n participant.isSpeaking,\n /* @conditional-compile-remove(raise-hand) */\n participant.raisedHand,\n localUserCanRemoveOthers\n );\n })\n .sort((a, b) => {\n const nameA = a.displayName?.toLowerCase() || '';\n const nameB = b.displayName?.toLowerCase() || '';\n if (nameA < nameB) {\n return -1;\n } else if (nameA > nameB) {\n return 1;\n } else {\n return 0;\n }\n })\n );\n };\n /* @conditional-compile-remove(raise-hand) */\n return memoizedConvertAllremoteParticipantsBeta(conversionCallback);\n /* @conditional-compile-remove(rooms) */\n return memoizedConvertAllremoteParticipantsBetaRelease(conversionCallback);\n return memoizedConvertAllremoteParticipants(conversionCallback);\n};\n\n/**\n * Selector type for {@link ParticipantList} component.\n *\n * @public\n */\nexport type ParticipantListSelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n participants: CallParticipantListParticipant[];\n myUserId: string;\n /* @conditional-compile-remove(total-participant-count) */\n totalParticipantCount?: number;\n};\n\n/**\n * Selects data that drives {@link ParticipantList} component.\n *\n * @public\n */\nexport const participantListSelector: ParticipantListSelector = createSelector(\n [\n getIdentifier,\n getDisplayName,\n getRemoteParticipants,\n getIsScreenSharingOn,\n getIsMuted,\n /* @conditional-compile-remove(raise-hand) */ getLocalParticipantRaisedHand,\n getRole,\n getParticipantCount\n ],\n (\n userId,\n displayName,\n remoteParticipants,\n isScreenSharingOn,\n isMuted,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand,\n role,\n partitipantCount\n ): {\n participants: CallParticipantListParticipant[];\n myUserId: string;\n totalParticipantCount?: number;\n } => {\n const localUserCanRemoveOthers = localUserCanRemoveOthersTrampoline(role);\n const participants = remoteParticipants\n ? convertRemoteParticipantsToParticipantListParticipants(\n updateUserDisplayNamesTrampoline(Object.values(remoteParticipants)),\n localUserCanRemoveOthers\n )\n : [];\n participants.push({\n userId: userId,\n displayName: displayName,\n isScreenSharing: isScreenSharingOn,\n isMuted: isMuted,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand: raisedHand,\n state: 'Connected',\n // Local participant can never remove themselves.\n isRemovable: false\n });\n /* @conditional-compile-remove(total-participant-count) */\n const totalParticipantCount = partitipantCount;\n return {\n participants: participants,\n myUserId: userId,\n /* @conditional-compile-remove(total-participant-count) */\n totalParticipantCount: totalParticipantCount\n };\n }\n);\n\nconst updateUserDisplayNamesTrampoline = (remoteParticipants: RemoteParticipantState[]): RemoteParticipantState[] => {\n /* @conditional-compile-remove(PSTN-calls) */\n return _updateUserDisplayNames(remoteParticipants);\n return remoteParticipants;\n};\n\nconst localUserCanRemoveOthersTrampoline = (role?: string): boolean => {\n /* @conditional-compile-remove(rooms) */\n return role === 'Presenter' || role === 'Unknown' || role === undefined;\n return true;\n};\n\"../../calling-stateful-client/src\"\"../../react-components/src\"\"../../acs-ui-common/src\""]}
@@ -1,6 +1,6 @@
1
1
  import { RemoteParticipantState } from '@azure/communication-calling';
2
2
  import { CallParticipantListParticipant } from "../../../react-components/src";
3
- import { RaisedHand } from '@azure/communication-calling';
3
+ import { RaisedHandState } from "../../../calling-stateful-client/src";
4
4
  /**
5
5
  * @private
6
6
  */
@@ -12,5 +12,5 @@ export declare const memoizedConvertAllremoteParticipantsBetaRelease: (callback:
12
12
  /**
13
13
  * @private
14
14
  */
15
- export declare const memoizedConvertAllremoteParticipantsBeta: (callback: import("../../../acs-ui-common/src").CallbackType<string, [displayName: string | undefined, state: RemoteParticipantState, isMuted: boolean, isScreenSharing: boolean, isSpeaking: boolean, raisedHand: RaisedHand | undefined, localUserCanRemoveOthers: boolean], CallParticipantListParticipant>) => CallParticipantListParticipant[];
15
+ export declare const memoizedConvertAllremoteParticipantsBeta: (callback: import("../../../acs-ui-common/src").CallbackType<string, [displayName: string | undefined, state: RemoteParticipantState, isMuted: boolean, isScreenSharing: boolean, isSpeaking: boolean, raisedHand: RaisedHandState | undefined, localUserCanRemoveOthers: boolean], CallParticipantListParticipant>) => CallParticipantListParticipant[];
16
16
  //# sourceMappingURL=participantListSelectorUtils.d.ts.map
@@ -35,21 +35,15 @@ export const memoizedConvertAllremoteParticipantsBetaRelease = memoizeFnAll((use
35
35
  /**
36
36
  * @private
37
37
  */
38
- export const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
39
- /* @conditional-compile-remove(raise-hand) */
40
- raisedHand, localUserCanRemoveOthers) => {
41
- return convertRemoteParticipantToParticipantListParticipantBeta(userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
42
- /* @conditional-compile-remove(raise-hand) */ raisedHand, localUserCanRemoveOthers);
38
+ export const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers) => {
39
+ return convertRemoteParticipantToParticipantListParticipantBeta(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers);
43
40
  });
44
41
  /* @conditional-compile-remove(rooms) */
45
42
  const convertRemoteParticipantToParticipantListParticipantBetaRelease = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers) => {
46
43
  return Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers));
47
44
  };
48
45
  /* @conditional-compile-remove(raise-hand) */
49
- const convertRemoteParticipantToParticipantListParticipantBeta = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
50
- /* @conditional-compile-remove(raise-hand) */
51
- raisedHand, localUserCanRemoveOthers) => {
52
- return Object.assign(Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers)), {
53
- /* @conditional-compile-remove(raise-hand) */ raisedHand });
46
+ const convertRemoteParticipantToParticipantListParticipantBeta = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers) => {
47
+ return Object.assign(Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers)), { raisedHand });
54
48
  };
55
49
  //# sourceMappingURL=participantListSelectorUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"participantListSelectorUtils.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/utils/participantListSelectorUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,mCAAgC;AAKxF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,YAAY,CAC9D,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,OAAO,oDAAoD,CACzD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,oDAAoD,GAAG,CAC3D,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,MAAM,UAAU,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACL,MAAM;QACN,WAAW;QACX,KAAK;QACL,OAAO;QACP,eAAe;QACf,UAAU;QACV,wCAAwC;QACxC,gDAAgD;QAChD,WAAW,EACT,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,mBAAmB;YACzD,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;YACvD,wBAAwB;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,wCAAwC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,YAAY,CACzE,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,OAAO,+DAA+D,CACpE,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,6CAA6C;AAC7C;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,YAAY,CAClE,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB;AACnB,6CAA6C;AAC7C,UAAkC,EAClC,wBAAiC,EACD,EAAE;IAClC,OAAO,wDAAwD,CAC7D,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU;IACV,6CAA6C,CAAC,UAAU,EACxD,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,wCAAwC;AACxC,MAAM,+DAA+D,GAAG,CACtE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,yBACK,oDAAoD,CACrD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,EACD;AACJ,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,wDAAwD,GAAG,CAC/D,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB;AACnB,6CAA6C;AAC7C,UAAkC,EAClC,wBAAiC,EACD,EAAE;IAClC,uCACK,oDAAoD,CACrD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB;QACD,6CAA6C,CAAC,UAAU,IACxD;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { RemoteParticipantState } from '@azure/communication-calling';\nimport { getIdentifierKind } from '@azure/communication-common';\nimport { fromFlatCommunicationIdentifier, memoizeFnAll } from '@internal/acs-ui-common';\nimport { CallParticipantListParticipant } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaisedHand } from '@azure/communication-calling';\n\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipants = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n );\n }\n);\n\nconst convertRemoteParticipantToParticipantListParticipant = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n const identifier = fromFlatCommunicationIdentifier(userId);\n return {\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n // ACS users can not remove Teams users.\n // Removing unknown types of users is undefined.\n isRemovable:\n (getIdentifierKind(identifier).kind === 'communicationUser' ||\n getIdentifierKind(identifier).kind === 'phoneNumber') &&\n localUserCanRemoveOthers\n };\n};\n\n/* @conditional-compile-remove(rooms) */\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipantsBetaRelease = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipantBetaRelease(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n );\n }\n);\n\n/* @conditional-compile-remove(raise-hand) */\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand: RaisedHand | undefined,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipantBeta(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n /* @conditional-compile-remove(raise-hand) */ raisedHand,\n localUserCanRemoveOthers\n );\n }\n);\n\n/* @conditional-compile-remove(rooms) */\nconst convertRemoteParticipantToParticipantListParticipantBetaRelease = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n return {\n ...convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n )\n };\n};\n\n/* @conditional-compile-remove(raise-hand) */\nconst convertRemoteParticipantToParticipantListParticipantBeta = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand: RaisedHand | undefined,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n return {\n ...convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n ),\n /* @conditional-compile-remove(raise-hand) */ raisedHand\n };\n};\n\"../../../acs-ui-common/src\"\"../../../react-components/src\""]}
1
+ {"version":3,"file":"participantListSelectorUtils.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/utils/participantListSelectorUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,mCAAgC;AAKxF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,YAAY,CAC9D,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,OAAO,oDAAoD,CACzD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,oDAAoD,GAAG,CAC3D,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,MAAM,UAAU,GAAG,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACL,MAAM;QACN,WAAW;QACX,KAAK;QACL,OAAO;QACP,eAAe;QACf,UAAU;QACV,wCAAwC;QACxC,gDAAgD;QAChD,WAAW,EACT,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,mBAAmB;YACzD,iBAAiB,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;YACvD,wBAAwB;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,wCAAwC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,+CAA+C,GAAG,YAAY,CACzE,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,OAAO,+DAA+D,CACpE,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,6CAA6C;AAC7C;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,YAAY,CAClE,CACE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,UAAuC,EACvC,wBAAiC,EACD,EAAE;IAClC,OAAO,wDAAwD,CAC7D,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,UAAU,EACV,wBAAwB,CACzB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,wCAAwC;AACxC,MAAM,+DAA+D,GAAG,CACtE,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,wBAAiC,EACD,EAAE;IAClC,yBACK,oDAAoD,CACrD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,EACD;AACJ,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,wDAAwD,GAAG,CAC/D,MAAc,EACd,WAA+B,EAC/B,KAA6B,EAC7B,OAAgB,EAChB,eAAwB,EACxB,UAAmB,EACnB,UAAuC,EACvC,wBAAiC,EACD,EAAE;IAClC,uCACK,oDAAoD,CACrD,MAAM,EACN,WAAW,EACX,KAAK,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,wBAAwB,CACzB,KACD,UAAU,IACV;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { RemoteParticipantState } from '@azure/communication-calling';\nimport { getIdentifierKind } from '@azure/communication-common';\nimport { fromFlatCommunicationIdentifier, memoizeFnAll } from '@internal/acs-ui-common';\nimport { CallParticipantListParticipant } from '@internal/react-components';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaisedHandState } from '@internal/calling-stateful-client';\n\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipants = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n );\n }\n);\n\nconst convertRemoteParticipantToParticipantListParticipant = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n const identifier = fromFlatCommunicationIdentifier(userId);\n return {\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n // ACS users can not remove Teams users.\n // Removing unknown types of users is undefined.\n isRemovable:\n (getIdentifierKind(identifier).kind === 'communicationUser' ||\n getIdentifierKind(identifier).kind === 'phoneNumber') &&\n localUserCanRemoveOthers\n };\n};\n\n/* @conditional-compile-remove(rooms) */\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipantsBetaRelease = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipantBetaRelease(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n );\n }\n);\n\n/* @conditional-compile-remove(raise-hand) */\n/**\n * @private\n */\nexport const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll(\n (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n raisedHand: RaisedHandState | undefined,\n localUserCanRemoveOthers: boolean\n ): CallParticipantListParticipant => {\n return convertRemoteParticipantToParticipantListParticipantBeta(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n raisedHand,\n localUserCanRemoveOthers\n );\n }\n);\n\n/* @conditional-compile-remove(rooms) */\nconst convertRemoteParticipantToParticipantListParticipantBetaRelease = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n return {\n ...convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n )\n };\n};\n\n/* @conditional-compile-remove(raise-hand) */\nconst convertRemoteParticipantToParticipantListParticipantBeta = (\n userId: string,\n displayName: string | undefined,\n state: RemoteParticipantState,\n isMuted: boolean,\n isScreenSharing: boolean,\n isSpeaking: boolean,\n raisedHand: RaisedHandState | undefined,\n localUserCanRemoveOthers: boolean\n): CallParticipantListParticipant => {\n return {\n ...convertRemoteParticipantToParticipantListParticipant(\n userId,\n displayName,\n state,\n isMuted,\n isScreenSharing,\n isSpeaking,\n localUserCanRemoveOthers\n ),\n raisedHand\n };\n};\n\"../../../acs-ui-common/src\"\"../../../react-components/src\"\"../../../calling-stateful-client/src\""]}
@@ -8,9 +8,9 @@ export declare const _videoGalleryRemoteParticipantsMemo: (remoteParticipants: R
8
8
  /** @private */
9
9
  export declare const convertRemoteParticipantToVideoGalleryRemoteParticipant: (userId: string, isMuted: boolean, isSpeaking: boolean, videoStreams: {
10
10
  [key: number]: RemoteVideoStreamState;
11
- }, state: RemoteParticipantConnectionState, displayName?: string | undefined) => VideoGalleryRemoteParticipant;
11
+ }, state: RemoteParticipantConnectionState, displayName?: string | undefined, raisedHand?: unknown) => VideoGalleryRemoteParticipant;
12
12
  /** @private */
13
- export declare const memoizeLocalParticipant: (this: any, identifier: any, displayName: any, isMuted: any, isScreenSharingOn: any, localVideoStream: any, role: any) => {
13
+ export declare const memoizeLocalParticipant: (this: any, identifier: any, displayName: any, isMuted: any, isScreenSharingOn: any, localVideoStream: any, role: any, raisedHand: any) => {
14
14
  userId: any;
15
15
  displayName: any;
16
16
  isMuted: any;
@@ -21,5 +21,6 @@ export declare const memoizeLocalParticipant: (this: any, identifier: any, displ
21
21
  renderElement: any;
22
22
  };
23
23
  role: any;
24
+ raisedHand: any;
24
25
  };
25
26
  //# sourceMappingURL=videoGalleryUtils.d.ts.map
@@ -27,15 +27,25 @@ export const _videoGalleryRemoteParticipantsMemo = (remoteParticipants) => {
27
27
  })
28
28
  .map((participant) => {
29
29
  const state = _isRingingPSTNParticipant(participant);
30
- return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, state, participant.displayName);
30
+ return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, state, participant.displayName,
31
+ /* @conditional-compile-remove(raise-hand) */
32
+ participant.raisedHand);
31
33
  }));
32
34
  });
33
35
  };
34
- const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName) => {
35
- return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName);
36
+ const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName,
37
+ /* @conditional-compile-remove(raise-hand) */
38
+ raisedHand // temp unknown type to build stable
39
+ ) => {
40
+ return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName,
41
+ /* @conditional-compile-remove(raise-hand) */
42
+ raisedHand);
36
43
  });
37
44
  /** @private */
38
- export const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName) => {
45
+ export const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName,
46
+ /* @conditional-compile-remove(raise-hand) */
47
+ raisedHand // temp unknown type to build stable
48
+ ) => {
39
49
  const rawVideoStreamsArray = Object.values(videoStreams);
40
50
  let videoStream = undefined;
41
51
  let screenShareStream = undefined;
@@ -59,7 +69,9 @@ export const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId,
59
69
  isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable,
60
70
  /* @conditional-compile-remove(one-to-n-calling) */
61
71
  /* @conditional-compile-remove(PSTN-calls) */
62
- state
72
+ state,
73
+ /* @conditional-compile-remove(raise-hand) */
74
+ raisedHand: raisedHand
63
75
  };
64
76
  };
65
77
  const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
@@ -77,7 +89,8 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
77
89
  };
78
90
  /** @private */
79
91
  export const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
80
- /* @conditional-compile-remove(rooms) */ role) => {
92
+ /* @conditional-compile-remove(rooms) */ role,
93
+ /* @conditional-compile-remove(raise-hand) */ raisedHand) => {
81
94
  var _a, _b;
82
95
  return ({
83
96
  userId: identifier,
@@ -90,7 +103,9 @@ export const memoizeLocalParticipant = memoizeOne((identifier, displayName, isMu
90
103
  renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target
91
104
  },
92
105
  /* @conditional-compile-remove(rooms) */
93
- role
106
+ role,
107
+ /* @conditional-compile-remove(raise-hand) */
108
+ raisedHand: raisedHand
94
109
  });
95
110
  });
96
111
  //# sourceMappingURL=videoGalleryUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"videoGalleryUtils.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/utils/videoGalleryUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DominantSpeakersInfo,\n RemoteParticipantState as RemoteParticipantConnectionState\n} from '@azure/communication-calling';\nimport { memoizeFnAll, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { RemoteParticipantState, RemoteVideoStreamState } from '@internal/calling-stateful-client';\nimport { VideoGalleryRemoteParticipant, VideoGalleryStream } from '@internal/react-components';\nimport memoizeOne from 'memoize-one';\nimport { _isRingingPSTNParticipant } from './callUtils';\nimport { checkIsSpeaking } from './SelectorUtils';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\n\n/** @internal */\nexport const _dominantSpeakersWithFlatId = (dominantSpeakers?: DominantSpeakersInfo): undefined | string[] => {\n return dominantSpeakers?.speakersList?.map(toFlatCommunicationIdentifier);\n};\n\n/** @internal */\nexport const _videoGalleryRemoteParticipantsMemo = (\n remoteParticipants: RemoteParticipantState[] | undefined\n): VideoGalleryRemoteParticipant[] => {\n if (!remoteParticipants) {\n return [];\n }\n return memoizedAllConvertRemoteParticipant((memoizedFn) => {\n return (\n Object.values(remoteParticipants)\n /**\n * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.\n * phone users will be in the connecting state until they are connected to the call.\n */\n .filter((participant: RemoteParticipantState) => {\n return (\n !['InLobby', 'Idle', 'Connecting', 'Disconnected'].includes(participant.state) ||\n isPhoneNumberIdentifier(participant.identifier)\n );\n })\n .map((participant: RemoteParticipantState) => {\n const state = _isRingingPSTNParticipant(participant);\n return memoizedFn(\n toFlatCommunicationIdentifier(participant.identifier),\n participant.isMuted,\n checkIsSpeaking(participant),\n participant.videoStreams,\n state,\n participant.displayName\n );\n })\n );\n });\n};\n\nconst memoizedAllConvertRemoteParticipant = memoizeFnAll(\n (\n userId: string,\n isMuted: boolean,\n isSpeaking: boolean,\n videoStreams: { [key: number]: RemoteVideoStreamState },\n state: RemoteParticipantConnectionState,\n displayName?: string\n ): VideoGalleryRemoteParticipant => {\n return convertRemoteParticipantToVideoGalleryRemoteParticipant(\n userId,\n isMuted,\n isSpeaking,\n videoStreams,\n state,\n displayName\n );\n }\n);\n\n/** @private */\nexport const convertRemoteParticipantToVideoGalleryRemoteParticipant = (\n userId: string,\n isMuted: boolean,\n isSpeaking: boolean,\n videoStreams: { [key: number]: RemoteVideoStreamState },\n state: RemoteParticipantConnectionState,\n displayName?: string\n): VideoGalleryRemoteParticipant => {\n const rawVideoStreamsArray = Object.values(videoStreams);\n let videoStream: VideoGalleryStream | undefined = undefined;\n let screenShareStream: VideoGalleryStream | undefined = undefined;\n\n const sdkRemoteVideoStream =\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'Video' && i.isAvailable) ||\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'Video');\n\n const sdkScreenShareStream =\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'ScreenSharing' && i.isAvailable) ||\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'ScreenSharing');\n\n if (sdkRemoteVideoStream) {\n videoStream = convertRemoteVideoStreamToVideoGalleryStream(sdkRemoteVideoStream);\n }\n if (sdkScreenShareStream) {\n screenShareStream = convertRemoteVideoStreamToVideoGalleryStream(sdkScreenShareStream);\n }\n\n return {\n userId,\n displayName,\n isMuted,\n isSpeaking,\n videoStream,\n screenShareStream,\n isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable,\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n state\n };\n};\n\nconst convertRemoteVideoStreamToVideoGalleryStream = (stream: RemoteVideoStreamState): VideoGalleryStream => {\n return {\n id: stream.id,\n isAvailable: stream.isAvailable,\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n isReceiving: stream.isReceiving,\n isMirrored: stream.view?.isMirrored,\n renderElement: stream.view?.target,\n /* @conditional-compile-remove(pinned-participants) */\n scalingMode: stream.view?.scalingMode\n };\n};\n\n/** @private */\nexport const memoizeLocalParticipant = memoizeOne(\n (\n identifier,\n displayName,\n isMuted,\n isScreenSharingOn,\n localVideoStream,\n /* @conditional-compile-remove(rooms) */ role\n ) => ({\n userId: identifier,\n displayName: displayName ?? '',\n isMuted: isMuted,\n isScreenSharingOn: isScreenSharingOn,\n videoStream: {\n isAvailable: !!localVideoStream,\n isMirrored: localVideoStream?.view?.isMirrored,\n renderElement: localVideoStream?.view?.target\n },\n /* @conditional-compile-remove(rooms) */\n role\n })\n);\n\"../../../acs-ui-common/src\"\"../../../calling-stateful-client/src\"\"../../../react-components/src\""]}
1
+ {"version":3,"file":"videoGalleryUtils.js","sourceRoot":"","sources":["../../../../../../calling-component-bindings/src/utils/videoGalleryUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n DominantSpeakersInfo,\n RemoteParticipantState as RemoteParticipantConnectionState\n} from '@azure/communication-calling';\nimport { memoizeFnAll, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { RemoteParticipantState, RemoteVideoStreamState } from '@internal/calling-stateful-client';\nimport { VideoGalleryRemoteParticipant, VideoGalleryStream } from '@internal/react-components';\nimport memoizeOne from 'memoize-one';\nimport { _isRingingPSTNParticipant } from './callUtils';\nimport { checkIsSpeaking } from './SelectorUtils';\nimport { isPhoneNumberIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaisedHandState } from '@internal/calling-stateful-client';\n\n/** @internal */\nexport const _dominantSpeakersWithFlatId = (dominantSpeakers?: DominantSpeakersInfo): undefined | string[] => {\n return dominantSpeakers?.speakersList?.map(toFlatCommunicationIdentifier);\n};\n\n/** @internal */\nexport const _videoGalleryRemoteParticipantsMemo = (\n remoteParticipants: RemoteParticipantState[] | undefined\n): VideoGalleryRemoteParticipant[] => {\n if (!remoteParticipants) {\n return [];\n }\n\n return memoizedAllConvertRemoteParticipant((memoizedFn) => {\n return (\n Object.values(remoteParticipants)\n /**\n * hiding participants who are inLobby, idle, or connecting in ACS clients till we can admit users through ACS clients.\n * phone users will be in the connecting state until they are connected to the call.\n */\n .filter((participant: RemoteParticipantState) => {\n return (\n !['InLobby', 'Idle', 'Connecting', 'Disconnected'].includes(participant.state) ||\n isPhoneNumberIdentifier(participant.identifier)\n );\n })\n .map((participant: RemoteParticipantState) => {\n const state = _isRingingPSTNParticipant(participant);\n return memoizedFn(\n toFlatCommunicationIdentifier(participant.identifier),\n participant.isMuted,\n checkIsSpeaking(participant),\n participant.videoStreams,\n state,\n participant.displayName,\n /* @conditional-compile-remove(raise-hand) */\n participant.raisedHand\n );\n })\n );\n });\n};\n\nconst memoizedAllConvertRemoteParticipant = memoizeFnAll(\n (\n userId: string,\n isMuted: boolean,\n isSpeaking: boolean,\n videoStreams: { [key: number]: RemoteVideoStreamState },\n state: RemoteParticipantConnectionState,\n displayName?: string,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand?: unknown // temp unknown type to build stable\n ): VideoGalleryRemoteParticipant => {\n return convertRemoteParticipantToVideoGalleryRemoteParticipant(\n userId,\n isMuted,\n isSpeaking,\n videoStreams,\n state,\n displayName,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand as RaisedHandState\n );\n }\n);\n\n/** @private */\nexport const convertRemoteParticipantToVideoGalleryRemoteParticipant = (\n userId: string,\n isMuted: boolean,\n isSpeaking: boolean,\n videoStreams: { [key: number]: RemoteVideoStreamState },\n state: RemoteParticipantConnectionState,\n displayName?: string,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand?: unknown // temp unknown type to build stable\n): VideoGalleryRemoteParticipant => {\n const rawVideoStreamsArray = Object.values(videoStreams);\n let videoStream: VideoGalleryStream | undefined = undefined;\n let screenShareStream: VideoGalleryStream | undefined = undefined;\n\n const sdkRemoteVideoStream =\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'Video' && i.isAvailable) ||\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'Video');\n\n const sdkScreenShareStream =\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'ScreenSharing' && i.isAvailable) ||\n Object.values(rawVideoStreamsArray).find((i) => i.mediaStreamType === 'ScreenSharing');\n\n if (sdkRemoteVideoStream) {\n videoStream = convertRemoteVideoStreamToVideoGalleryStream(sdkRemoteVideoStream);\n }\n if (sdkScreenShareStream) {\n screenShareStream = convertRemoteVideoStreamToVideoGalleryStream(sdkScreenShareStream);\n }\n\n return {\n userId,\n displayName,\n isMuted,\n isSpeaking,\n videoStream,\n screenShareStream,\n isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable,\n /* @conditional-compile-remove(one-to-n-calling) */\n /* @conditional-compile-remove(PSTN-calls) */\n state,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand: raisedHand as RaisedHandState\n };\n};\n\nconst convertRemoteVideoStreamToVideoGalleryStream = (stream: RemoteVideoStreamState): VideoGalleryStream => {\n return {\n id: stream.id,\n isAvailable: stream.isAvailable,\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n isReceiving: stream.isReceiving,\n isMirrored: stream.view?.isMirrored,\n renderElement: stream.view?.target,\n /* @conditional-compile-remove(pinned-participants) */\n scalingMode: stream.view?.scalingMode\n };\n};\n\n/** @private */\nexport const memoizeLocalParticipant = memoizeOne(\n (\n identifier,\n displayName,\n isMuted,\n isScreenSharingOn,\n localVideoStream,\n /* @conditional-compile-remove(rooms) */ role,\n /* @conditional-compile-remove(raise-hand) */ raisedHand\n ) => ({\n userId: identifier,\n displayName: displayName ?? '',\n isMuted: isMuted,\n isScreenSharingOn: isScreenSharingOn,\n videoStream: {\n isAvailable: !!localVideoStream,\n isMirrored: localVideoStream?.view?.isMirrored,\n renderElement: localVideoStream?.view?.target\n },\n /* @conditional-compile-remove(rooms) */\n role,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand: raisedHand\n })\n);\n\"../../../acs-ui-common/src\"\"../../../calling-stateful-client/src\"\"../../../react-components/src\""]}
@@ -10,6 +10,8 @@ import { getOptimalVideoCount } from './baseSelectors';
10
10
  import { _updateUserDisplayNames } from './utils/callUtils';
11
11
  import { checkIsSpeaking } from './utils/SelectorUtils';
12
12
  import { _videoGalleryRemoteParticipantsMemo, _dominantSpeakersWithFlatId, convertRemoteParticipantToVideoGalleryRemoteParticipant, memoizeLocalParticipant } from './utils/videoGalleryUtils';
13
+ /* @conditional-compile-remove(raise-hand) */
14
+ import { getLocalParticipantRaisedHand } from './baseSelectors';
13
15
  /**
14
16
  * Provides data attributes to {@link VideoGallery} component.
15
17
  * @public
@@ -26,12 +28,16 @@ export const videoGallerySelector = createSelector([
26
28
  /* @conditional-compile-remove(optimal-video-count) */
27
29
  getOptimalVideoCount,
28
30
  /* @conditional-compile-remove(rooms) */
29
- getRole
31
+ getRole,
32
+ /* @conditional-compile-remove(raise-hand) */
33
+ getLocalParticipantRaisedHand
30
34
  ], (screenShareRemoteParticipantId, remoteParticipants, localVideoStreams, isMuted, isScreenSharingOn, displayName, identifier, dominantSpeakers,
31
35
  /* @conditional-compile-remove(optimal-video-count) */
32
36
  optimalVideoCount,
33
37
  /* @conditional-compile-remove(rooms) */
34
- role) => {
38
+ role,
39
+ /* @conditional-compile-remove(raise-hand) */
40
+ raisedHand) => {
35
41
  const screenShareRemoteParticipant = screenShareRemoteParticipantId && remoteParticipants
36
42
  ? remoteParticipants[screenShareRemoteParticipantId]
37
43
  : undefined;
@@ -42,11 +48,15 @@ role) => {
42
48
  const noRemoteParticipants = [];
43
49
  return {
44
50
  screenShareParticipant: screenShareRemoteParticipant
45
- ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName)
51
+ ? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName,
52
+ /* @conditional-compile-remove(raise-hand) */
53
+ screenShareRemoteParticipant.raisedHand)
46
54
  : undefined,
47
55
  localParticipant: memoizeLocalParticipant(identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
48
56
  /* @conditional-compile-remove(rooms) */
49
- role),
57
+ role,
58
+ /* @conditional-compile-remove(raise-hand) */
59
+ raisedHand),
50
60
  remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)),
51
61
  dominantSpeakers: dominantSpeakerIds,
52
62
  /* @conditional-compile-remove(optimal-video-count) */
@@ -1 +1 @@
1
- {"version":3,"file":"videoGallerySelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/videoGallerySelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallClientState, RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { VideoGalleryLocalParticipant, VideoGalleryRemoteParticipant } from '@internal/react-components';\nimport { createSelector } from 'reselect';\nimport {\n CallingBaseSelectorProps,\n getDisplayName,\n getDominantSpeakers,\n getIdentifier,\n getIsMuted,\n getIsScreenSharingOn,\n getLocalVideoStreams,\n getRemoteParticipants,\n getScreenShareRemoteParticipant\n} from './baseSelectors';\n/* @conditional-compile-remove(rooms) */\nimport { getRole } from './baseSelectors';\n/* @conditional-compile-remove(optimal-video-count) */\nimport { getOptimalVideoCount } from './baseSelectors';\nimport { _updateUserDisplayNames } from './utils/callUtils';\nimport { checkIsSpeaking } from './utils/SelectorUtils';\nimport {\n _videoGalleryRemoteParticipantsMemo,\n _dominantSpeakersWithFlatId,\n convertRemoteParticipantToVideoGalleryRemoteParticipant,\n memoizeLocalParticipant\n} from './utils/videoGalleryUtils';\n\n/**\n * Selector type for {@link VideoGallery} component.\n *\n * @public\n */\nexport type VideoGallerySelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n screenShareParticipant: VideoGalleryRemoteParticipant | undefined;\n localParticipant: VideoGalleryLocalParticipant;\n remoteParticipants: VideoGalleryRemoteParticipant[];\n dominantSpeakers?: string[];\n /* @conditional-compile-remove(optimal-video-count) */\n optimalVideoCount?: number;\n};\n\n/**\n * Provides data attributes to {@link VideoGallery} component.\n * @public\n */\nexport const videoGallerySelector: VideoGallerySelector = createSelector(\n [\n getScreenShareRemoteParticipant,\n getRemoteParticipants,\n getLocalVideoStreams,\n getIsMuted,\n getIsScreenSharingOn,\n getDisplayName,\n getIdentifier,\n getDominantSpeakers,\n /* @conditional-compile-remove(optimal-video-count) */\n getOptimalVideoCount,\n /* @conditional-compile-remove(rooms) */\n getRole\n ],\n (\n screenShareRemoteParticipantId,\n remoteParticipants,\n localVideoStreams,\n isMuted,\n isScreenSharingOn,\n displayName: string | undefined,\n identifier: string,\n dominantSpeakers,\n /* @conditional-compile-remove(optimal-video-count) */\n optimalVideoCount,\n /* @conditional-compile-remove(rooms) */\n role\n ) => {\n const screenShareRemoteParticipant =\n screenShareRemoteParticipantId && remoteParticipants\n ? remoteParticipants[screenShareRemoteParticipantId]\n : undefined;\n const localVideoStream = localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n\n const dominantSpeakerIds = _dominantSpeakersWithFlatId(dominantSpeakers);\n const dominantSpeakersMap: Record<string, number> = {};\n dominantSpeakerIds?.forEach((speaker, idx) => (dominantSpeakersMap[speaker] = idx));\n const noRemoteParticipants = [];\n return {\n screenShareParticipant: screenShareRemoteParticipant\n ? convertRemoteParticipantToVideoGalleryRemoteParticipant(\n toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier),\n screenShareRemoteParticipant.isMuted,\n checkIsSpeaking(screenShareRemoteParticipant),\n screenShareRemoteParticipant.videoStreams,\n screenShareRemoteParticipant.state,\n screenShareRemoteParticipant.displayName\n )\n : undefined,\n localParticipant: memoizeLocalParticipant(\n identifier,\n displayName,\n isMuted,\n isScreenSharingOn,\n localVideoStream,\n /* @conditional-compile-remove(rooms) */\n role\n ),\n remoteParticipants: _videoGalleryRemoteParticipantsMemo(\n updateUserDisplayNamesTrampoline(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)\n ),\n dominantSpeakers: dominantSpeakerIds,\n /* @conditional-compile-remove(optimal-video-count) */\n maxRemoteVideoStreams: optimalVideoCount\n };\n }\n);\n\nconst updateUserDisplayNamesTrampoline = (remoteParticipants: RemoteParticipantState[]): RemoteParticipantState[] => {\n /* @conditional-compile-remove(PSTN-calls) */\n return _updateUserDisplayNames(remoteParticipants);\n return remoteParticipants;\n};\n\"../../acs-ui-common/src\"\"../../calling-stateful-client/src\"\"../../react-components/src\""]}
1
+ {"version":3,"file":"videoGallerySelector.js","sourceRoot":"","sources":["../../../../../calling-component-bindings/src/videoGallerySelector.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { CallClientState, RemoteParticipantState } from '@internal/calling-stateful-client';\nimport { VideoGalleryLocalParticipant, VideoGalleryRemoteParticipant } from '@internal/react-components';\nimport { createSelector } from 'reselect';\nimport {\n CallingBaseSelectorProps,\n getDisplayName,\n getDominantSpeakers,\n getIdentifier,\n getIsMuted,\n getIsScreenSharingOn,\n getLocalVideoStreams,\n getRemoteParticipants,\n getScreenShareRemoteParticipant\n} from './baseSelectors';\n/* @conditional-compile-remove(rooms) */\nimport { getRole } from './baseSelectors';\n/* @conditional-compile-remove(optimal-video-count) */\nimport { getOptimalVideoCount } from './baseSelectors';\nimport { _updateUserDisplayNames } from './utils/callUtils';\nimport { checkIsSpeaking } from './utils/SelectorUtils';\nimport {\n _videoGalleryRemoteParticipantsMemo,\n _dominantSpeakersWithFlatId,\n convertRemoteParticipantToVideoGalleryRemoteParticipant,\n memoizeLocalParticipant\n} from './utils/videoGalleryUtils';\n/* @conditional-compile-remove(raise-hand) */\nimport { getLocalParticipantRaisedHand } from './baseSelectors';\n\n/**\n * Selector type for {@link VideoGallery} component.\n *\n * @public\n */\nexport type VideoGallerySelector = (\n state: CallClientState,\n props: CallingBaseSelectorProps\n) => {\n screenShareParticipant: VideoGalleryRemoteParticipant | undefined;\n localParticipant: VideoGalleryLocalParticipant;\n remoteParticipants: VideoGalleryRemoteParticipant[];\n dominantSpeakers?: string[];\n /* @conditional-compile-remove(optimal-video-count) */\n optimalVideoCount?: number;\n};\n\n/**\n * Provides data attributes to {@link VideoGallery} component.\n * @public\n */\nexport const videoGallerySelector: VideoGallerySelector = createSelector(\n [\n getScreenShareRemoteParticipant,\n getRemoteParticipants,\n getLocalVideoStreams,\n getIsMuted,\n getIsScreenSharingOn,\n getDisplayName,\n getIdentifier,\n getDominantSpeakers,\n /* @conditional-compile-remove(optimal-video-count) */\n getOptimalVideoCount,\n /* @conditional-compile-remove(rooms) */\n getRole,\n /* @conditional-compile-remove(raise-hand) */\n getLocalParticipantRaisedHand\n ],\n (\n screenShareRemoteParticipantId,\n remoteParticipants,\n localVideoStreams,\n isMuted,\n isScreenSharingOn,\n displayName: string | undefined,\n identifier: string,\n dominantSpeakers,\n /* @conditional-compile-remove(optimal-video-count) */\n optimalVideoCount,\n /* @conditional-compile-remove(rooms) */\n role,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand\n ) => {\n const screenShareRemoteParticipant =\n screenShareRemoteParticipantId && remoteParticipants\n ? remoteParticipants[screenShareRemoteParticipantId]\n : undefined;\n const localVideoStream = localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n\n const dominantSpeakerIds = _dominantSpeakersWithFlatId(dominantSpeakers);\n const dominantSpeakersMap: Record<string, number> = {};\n dominantSpeakerIds?.forEach((speaker, idx) => (dominantSpeakersMap[speaker] = idx));\n const noRemoteParticipants = [];\n\n return {\n screenShareParticipant: screenShareRemoteParticipant\n ? convertRemoteParticipantToVideoGalleryRemoteParticipant(\n toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier),\n screenShareRemoteParticipant.isMuted,\n checkIsSpeaking(screenShareRemoteParticipant),\n screenShareRemoteParticipant.videoStreams,\n screenShareRemoteParticipant.state,\n screenShareRemoteParticipant.displayName,\n /* @conditional-compile-remove(raise-hand) */\n screenShareRemoteParticipant.raisedHand\n )\n : undefined,\n localParticipant: memoizeLocalParticipant(\n identifier,\n displayName,\n isMuted,\n isScreenSharingOn,\n localVideoStream,\n /* @conditional-compile-remove(rooms) */\n role,\n /* @conditional-compile-remove(raise-hand) */\n raisedHand\n ),\n remoteParticipants: _videoGalleryRemoteParticipantsMemo(\n updateUserDisplayNamesTrampoline(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)\n ),\n dominantSpeakers: dominantSpeakerIds,\n /* @conditional-compile-remove(optimal-video-count) */\n maxRemoteVideoStreams: optimalVideoCount\n };\n }\n);\n\nconst updateUserDisplayNamesTrampoline = (remoteParticipants: RemoteParticipantState[]): RemoteParticipantState[] => {\n /* @conditional-compile-remove(PSTN-calls) */\n return _updateUserDisplayNames(remoteParticipants);\n return remoteParticipants;\n};\n\"../../acs-ui-common/src\"\"../../calling-stateful-client/src\"\"../../react-components/src\""]}
@@ -1,5 +1,4 @@
1
1
  import { AudioDeviceInfo, CallDirection, CallEndReason, CallerInfo, CallState as CallStatus, DeviceAccess, DominantSpeakersInfo, LatestMediaDiagnostics, LatestNetworkDiagnostics, MediaStreamType, RemoteParticipantState as RemoteParticipantStatus, ScalingMode, VideoDeviceInfo } from '@azure/communication-calling';
2
- import { RaisedHand } from '@azure/communication-calling';
3
2
  import { ParticipantCapabilities } from '@azure/communication-calling';
4
3
  import { CaptionsResultType } from '@azure/communication-calling';
5
4
  import { VideoEffectName } from '@azure/communication-calling';
@@ -134,12 +133,20 @@ export interface RaiseHandCallFeatureState {
134
133
  /**
135
134
  * Proxy of {@link @azure/communication-calling#RaiseHandCallFeature.raisedHands}.
136
135
  */
137
- raisedHands: RaisedHand[];
136
+ raisedHands: RaisedHandState[];
138
137
  /**
139
138
  * Contains information for local participant from list {@link @azure/communication-calling#RaiseHandCallFeature.raisedHands}.
140
139
  */
141
- localParticipantRaisedHand?: RaisedHand;
140
+ localParticipantRaisedHand?: RaisedHandState;
142
141
  }
142
+ /**
143
+ * Raised hand state with order
144
+ *
145
+ * @public
146
+ */
147
+ export declare type RaisedHandState = {
148
+ raisedHandOrderPosition: number;
149
+ };
143
150
  /**
144
151
  * State only version of {@link @azure/communication-calling#LocalVideoStream}.
145
152
  *
@@ -281,7 +288,7 @@ export interface RemoteParticipantState {
281
288
  /**
282
289
  * Proxy of {@link @azure/communication-calling#Call.RaisedHand.raisedHands}.
283
290
  */
284
- raisedHand?: RaisedHand;
291
+ raisedHand?: RaisedHandState;
285
292
  }
286
293
  /**
287
294
  * State only version of {@link @azure/communication-calling#Call}. {@link StatefulCallClient} will automatically
@@ -1,6 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
- ``;
4
3
  /**
5
4
  * Error thrown from failed stateful API methods.
6
5
  *