@azure/communication-react 1.5.1-alpha-202211250013.0 → 1.5.2-alpha-202301190014.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/CHANGELOG.beta.md +47 -1
  2. package/CHANGELOG.json +1554 -0
  3. package/CHANGELOG.stable.md +88 -2
  4. package/dist/communication-react.d.ts +468 -296
  5. package/dist/dist-cjs/communication-react/index.js +2904 -1694
  6. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/identifier.js +3 -47
  8. package/dist/dist-esm/acs-ui-common/src/identifier.js.map +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +5 -0
  12. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +8 -0
  13. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  14. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +21 -10
  15. package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
  16. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +1 -2
  17. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +0 -7
  18. package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
  19. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +13 -4
  20. package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
  21. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.d.ts +7 -0
  22. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js +9 -0
  23. package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -1
  24. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +12 -0
  25. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +31 -6
  26. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  27. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +2 -13
  28. package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -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.d.ts +2 -1
  32. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +14 -0
  33. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  34. package/dist/dist-esm/calling-stateful-client/src/Converter.js +1 -1
  35. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  36. package/dist/dist-esm/calling-stateful-client/src/Logger.d.ts +1 -0
  37. package/dist/dist-esm/calling-stateful-client/src/Logger.js +1 -0
  38. package/dist/dist-esm/calling-stateful-client/src/Logger.js.map +1 -1
  39. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +2 -1
  40. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +11 -4
  41. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  42. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +39 -12
  43. package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
  44. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +2 -2
  45. package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
  46. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.d.ts +19 -0
  47. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js +43 -0
  48. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js.map +1 -0
  49. package/dist/dist-esm/communication-react/src/index.d.ts +7 -5
  50. package/dist/dist-esm/communication-react/src/index.js +5 -3
  51. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  52. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.d.ts +105 -0
  53. package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissions.js → SitePermissions.js} +28 -22
  54. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js.map +1 -0
  55. package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissionsScaffolding.d.ts → SitePermissionsScaffolding.d.ts} +12 -12
  56. package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissionsScaffolding.js → SitePermissionsScaffolding.js} +4 -4
  57. package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js.map +1 -0
  58. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +20 -9
  59. package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
  60. package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.d.ts +1 -0
  61. package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.js +18 -2
  62. package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.js.map +1 -1
  63. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.d.ts +4 -0
  64. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js +1 -1
  65. package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js.map +1 -1
  66. package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.d.ts +4 -0
  67. package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js +1 -1
  68. package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js.map +1 -1
  69. package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +8 -0
  70. package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
  71. package/dist/dist-esm/react-components/src/components/MessageThread.js +6 -4
  72. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  73. package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +0 -2
  74. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +10 -12
  75. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts +4 -0
  77. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +25 -4
  78. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  79. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +10 -4
  80. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +79 -7
  81. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  82. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.d.ts +6 -6
  83. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js +13 -21
  84. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js.map +1 -1
  85. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.d.ts +37 -0
  86. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js +27 -0
  87. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js.map +1 -0
  88. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.d.ts +41 -0
  89. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js +32 -0
  90. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js.map +1 -0
  91. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.d.ts +32 -0
  92. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js +25 -0
  93. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js.map +1 -0
  94. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +16 -0
  95. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +60 -0
  96. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -0
  97. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.d.ts +12 -0
  98. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +41 -0
  99. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -0
  100. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +25 -0
  101. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +76 -0
  102. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -0
  103. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +38 -0
  104. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js +4 -0
  105. package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -0
  106. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +9 -0
  107. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js +18 -0
  108. package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js.map +1 -0
  109. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.d.ts +14 -0
  110. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js +19 -0
  111. package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js.map +1 -0
  112. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.d.ts +6 -0
  113. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.js +9 -0
  114. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.js.map +1 -0
  115. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.d.ts +62 -0
  116. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js +118 -0
  117. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js.map +1 -0
  118. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.d.ts +14 -0
  119. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.js +28 -0
  120. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.js.map +1 -0
  121. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.d.ts +6 -0
  122. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js +9 -0
  123. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js.map +1 -0
  124. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.d.ts +9 -0
  125. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js +22 -0
  126. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js.map +1 -0
  127. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.d.ts +10 -0
  128. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +29 -0
  129. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -0
  130. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.d.ts +45 -0
  131. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js +57 -0
  132. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js.map +1 -0
  133. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.d.ts +2 -2
  134. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js +7 -2
  135. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js.map +1 -1
  136. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +23 -0
  137. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +96 -0
  138. package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -0
  139. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +27 -0
  140. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +121 -0
  141. package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -0
  142. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +66 -0
  143. package/dist/dist-esm/react-components/src/components/VideoGallery.js +131 -124
  144. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  145. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts +12 -17
  146. package/dist/dist-esm/react-components/src/components/VideoTile.js +71 -38
  147. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  148. package/dist/dist-esm/react-components/src/components/index.d.ts +8 -3
  149. package/dist/dist-esm/react-components/src/components/index.js +3 -2
  150. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  151. package/dist/dist-esm/react-components/src/components/styles/{DomainPermissions.styles.d.ts → SitePermissions.styles.d.ts} +1 -1
  152. package/dist/dist-esm/react-components/src/components/styles/{DomainPermissions.styles.js → SitePermissions.styles.js} +1 -1
  153. package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js.map +1 -0
  154. package/dist/dist-esm/react-components/src/components/styles/TroubleshootingGuideErrorBar.styles.js +2 -1
  155. package/dist/dist-esm/react-components/src/components/styles/TroubleshootingGuideErrorBar.styles.js.map +1 -1
  156. package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.d.ts +26 -0
  157. package/dist/dist-esm/react-components/src/components/styles/{UnsupportedBrowser.styles.js → UnsupportedEnvironment.styles.js} +25 -10
  158. package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js.map +1 -0
  159. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts +1 -95
  160. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js +3 -138
  161. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js.map +1 -1
  162. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +1 -1
  163. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +11 -26
  164. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  165. package/dist/dist-esm/react-components/src/components/utils/useLongPress.d.ts +13 -10
  166. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js +66 -37
  167. package/dist/dist-esm/react-components/src/components/utils/useLongPress.js.map +1 -1
  168. package/dist/dist-esm/react-components/src/components/utils.d.ts +1 -6
  169. package/dist/dist-esm/react-components/src/components/utils.js +4 -16
  170. package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
  171. package/dist/dist-esm/react-components/src/index.d.ts +0 -1
  172. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  173. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +31 -19
  174. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  175. package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +1 -1
  176. package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +1 -1
  177. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +49 -14
  178. package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +1 -1
  179. package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +1 -1
  180. package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +1 -1
  181. package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +1 -1
  182. package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +1 -1
  183. package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +1 -1
  184. package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +1 -1
  185. package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +1 -1
  186. package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +1 -1
  187. package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +1 -1
  188. package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +1 -1
  189. package/dist/dist-esm/react-components/src/theming/icons.d.ts +11 -6
  190. package/dist/dist-esm/react-components/src/theming/icons.js +30 -20
  191. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  192. package/dist/dist-esm/react-components/src/theming/icons.styles.d.ts +1 -1
  193. package/dist/dist-esm/react-components/src/theming/icons.styles.js +1 -1
  194. package/dist/dist-esm/react-components/src/theming/icons.styles.js.map +1 -1
  195. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
  196. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
  197. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +24 -11
  198. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +9 -9
  199. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  200. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +56 -0
  201. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  202. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +16 -10
  203. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +89 -40
  204. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  205. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +11 -17
  206. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  207. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +2 -2
  208. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js +1 -1
  209. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  210. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +1 -0
  211. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +19 -18
  212. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  213. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +5 -4
  214. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +68 -28
  215. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +1 -1
  216. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +16 -0
  217. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageCameraDropdown.js → ConfigurationPageCameraDropdown.js} +4 -6
  218. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -0
  219. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageErrorBar.d.ts → ConfigurationPageErrorBar.d.ts} +3 -4
  220. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageErrorBar.js → ConfigurationPageErrorBar.js} +4 -6
  221. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -0
  222. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +16 -0
  223. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageMicDropdown.js → ConfigurationPageMicDropdown.js} +4 -8
  224. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -0
  225. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +1 -0
  226. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
  227. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
  228. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +16 -14
  229. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
  230. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js +8 -3
  231. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js.map +1 -1
  232. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +3 -0
  233. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +26 -4
  234. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  235. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js +1 -1
  236. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js.map +1 -1
  237. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js +11 -3
  238. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js.map +1 -1
  239. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +4 -4
  240. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js +1 -1
  241. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  242. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +6 -2
  243. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  244. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +3 -3
  245. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +46 -27
  246. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  247. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.d.ts +2 -0
  248. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js +28 -7
  249. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js.map +1 -1
  250. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.d.ts +7 -0
  251. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.js +9 -1
  252. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.js.map +1 -1
  253. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.d.ts +4 -0
  254. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js +10 -0
  255. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js.map +1 -1
  256. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +29 -0
  257. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +119 -0
  258. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -0
  259. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +20 -4
  260. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +74 -21
  261. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  262. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +16 -7
  263. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +22 -10
  264. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  265. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +2 -0
  266. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
  267. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +1 -0
  268. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +6 -0
  269. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  270. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +4 -0
  271. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  272. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +1 -0
  273. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +7 -1
  274. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  275. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +8 -0
  276. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  277. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +4 -0
  278. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  279. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js +26 -3
  280. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js.map +1 -1
  281. package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.d.ts +8 -0
  282. package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.js +40 -0
  283. package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.js.map +1 -0
  284. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js +1 -1
  285. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js.map +1 -1
  286. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +11 -6
  287. package/dist/dist-esm/react-composites/src/composites/common/styles/ModalLocalAndRemotePIP.styles.js +1 -0
  288. package/dist/dist-esm/react-composites/src/composites/common/styles/ModalLocalAndRemotePIP.styles.js.map +1 -1
  289. package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js +2 -1
  290. package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js.map +1 -1
  291. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +15 -1
  292. package/package.json +12 -11
  293. package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissions.d.ts +0 -101
  294. package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissions.js.map +0 -1
  295. package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissionsScaffolding.js.map +0 -1
  296. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js.map +0 -1
  297. package/dist/dist-esm/react-components/src/components/styles/UnsupportedBrowser.styles.d.ts +0 -22
  298. package/dist/dist-esm/react-components/src/components/styles/UnsupportedBrowser.styles.js.map +0 -1
  299. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.d.ts +0 -17
  300. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.js.map +0 -1
  301. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageErrorBar.js.map +0 -1
  302. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.d.ts +0 -17
  303. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Strings for UnsupportedBrowser component
4
+ *
5
+ * @beta
6
+ */
7
+ export interface UnsupportedBrowserVersionStrings {
8
+ /** String for the primary text */
9
+ primaryText: string;
10
+ /** String for the secondary text */
11
+ secondaryText: string;
12
+ /** String to display in the text for the help link */
13
+ moreHelpLinkText: string;
14
+ /** String for continue without updating button */
15
+ continueAnywayButtonText?: string;
16
+ }
17
+ /**
18
+ * props for {@link UnsupportedBrowserVersion} UI
19
+ *
20
+ * @beta
21
+ */
22
+ export interface UnsupportedBrowserVersionProps {
23
+ /** Handler to perform an action when the help link is actioned */
24
+ onTroubleshootingClick?: () => void;
25
+ /** String overrides for the component */
26
+ strings?: UnsupportedBrowserVersionStrings;
27
+ /** Handler to allow user to continue into the call */
28
+ onContinueAnywayClick?: () => void;
29
+ }
30
+ /**
31
+ * UI to display to the user that the browser version they are using is out of date
32
+ * and not supported by Azure Communications Calling service.
33
+ *
34
+ * @beta
35
+ */
36
+ export declare const UnsupportedBrowserVersion: (props: UnsupportedBrowserVersionProps) => JSX.Element;
37
+ //# sourceMappingURL=UnsupportedBrowserVersion.d.ts.map
@@ -0,0 +1,27 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { useLocale } from '../localization';
5
+ import { UnsupportedEnvironment } from './UnsupportedEnvironment';
6
+ /**
7
+ * UI to display to the user that the browser version they are using is out of date
8
+ * and not supported by Azure Communications Calling service.
9
+ *
10
+ * @beta
11
+ */
12
+ export const UnsupportedBrowserVersion = (props) => {
13
+ const { onTroubleshootingClick, strings, onContinueAnywayClick } = props;
14
+ const locale = useLocale();
15
+ return (React.createElement(UnsupportedEnvironment, { onTroubleshootingClick: onTroubleshootingClick, strings: Object.assign(Object.assign({}, unsupportedBrowserVersionStringsTrampoline(locale)), strings), onContinueAnywayClick: onContinueAnywayClick }));
16
+ };
17
+ const unsupportedBrowserVersionStringsTrampoline = (locale) => {
18
+ /* @conditional-compile-remove(unsupported-browser) */
19
+ return locale.strings.UnsupportedBrowserVersion;
20
+ return {
21
+ primaryText: '',
22
+ secondaryText: '',
23
+ moreHelpLinkText: '',
24
+ continueAnywayButtonText: ''
25
+ };
26
+ };
27
+ //# sourceMappingURL=UnsupportedBrowserVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnsupportedBrowserVersion.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/UnsupportedBrowserVersion.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAgClE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAqC,EAAe,EAAE;IAC9F,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,CACL,oBAAC,sBAAsB,IACrB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,kCAAO,0CAA0C,CAAC,MAAM,CAAC,GAAK,OAAO,GAC5E,qBAAqB,EAAE,qBAAqB,GAC5C,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,0CAA0C,GAAG,CAAC,MAAuB,EAAoC,EAAE;IAC/G,sDAAsD;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IAChD,OAAO;QACL,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,wBAAwB,EAAE,EAAE;KAC7B,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { _pxToRem } from '@internal/acs-ui-common';\nimport React from 'react';\nimport { ComponentLocale, useLocale } from '../localization';\nimport { UnsupportedEnvironment } from './UnsupportedEnvironment';\n\n/**\n * Strings for UnsupportedBrowser component\n *\n * @beta\n */\nexport interface UnsupportedBrowserVersionStrings {\n /** String for the primary text */\n primaryText: string;\n /** String for the secondary text */\n secondaryText: string;\n /** String to display in the text for the help link */\n moreHelpLinkText: string;\n /** String for continue without updating button */\n continueAnywayButtonText?: string;\n}\n\n/**\n * props for {@link UnsupportedBrowserVersion} UI\n *\n * @beta\n */\nexport interface UnsupportedBrowserVersionProps {\n /** Handler to perform an action when the help link is actioned */\n onTroubleshootingClick?: () => void;\n /** String overrides for the component */\n strings?: UnsupportedBrowserVersionStrings;\n /** Handler to allow user to continue into the call */\n onContinueAnywayClick?: () => void;\n}\n\n/**\n * UI to display to the user that the browser version they are using is out of date\n * and not supported by Azure Communications Calling service.\n *\n * @beta\n */\nexport const UnsupportedBrowserVersion = (props: UnsupportedBrowserVersionProps): JSX.Element => {\n const { onTroubleshootingClick, strings, onContinueAnywayClick } = props;\n const locale = useLocale();\n return (\n <UnsupportedEnvironment\n onTroubleshootingClick={onTroubleshootingClick}\n strings={{ ...unsupportedBrowserVersionStringsTrampoline(locale), ...strings }}\n onContinueAnywayClick={onContinueAnywayClick}\n />\n );\n};\n\nconst unsupportedBrowserVersionStringsTrampoline = (locale: ComponentLocale): UnsupportedBrowserVersionStrings => {\n /* @conditional-compile-remove(unsupported-browser) */\n return locale.strings.UnsupportedBrowserVersion;\n return {\n primaryText: '',\n secondaryText: '',\n moreHelpLinkText: '',\n continueAnywayButtonText: ''\n };\n};\n\"../../../acs-ui-common/src\""]}
@@ -0,0 +1,41 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * @private
4
+ */
5
+ export interface UnsupportedEnvironmentStrings {
6
+ /** String for the primary text */
7
+ primaryText: string;
8
+ /** String for the secondary text */
9
+ secondaryText: string;
10
+ /** String to display in the text for the help link */
11
+ moreHelpLinkText: string;
12
+ /** String for continue anyway button */
13
+ continueAnywayButtonText?: string;
14
+ }
15
+ /**
16
+ * props for {@link UnsupportedEnvironment} UI
17
+ *
18
+ * @private
19
+ */
20
+ export interface UnsupportedEnvironmentProps {
21
+ /**
22
+ * Handler to perform a action when the help link is actioned
23
+ */
24
+ onTroubleshootingClick?: () => void;
25
+ /**
26
+ * String overrides for the component
27
+ */
28
+ strings?: UnsupportedEnvironmentStrings;
29
+ /**
30
+ * CallBack for the continue anyay button. Use this as a mechanism to allow users into
31
+ * a call with a unsupported browser version.
32
+ */
33
+ onContinueAnywayClick?: () => void;
34
+ }
35
+ /**
36
+ * UI to display to the user that the environment they are using is not supported by calling application.
37
+ *
38
+ * @private
39
+ */
40
+ export declare const UnsupportedEnvironment: (props: UnsupportedEnvironmentProps) => JSX.Element;
41
+ //# sourceMappingURL=UnsupportedEnvironment.d.ts.map
@@ -0,0 +1,32 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ /* @conditional-compile-remove(unsupported-browser) */
4
+ import { DefaultButton, Icon, Link, Stack, Text } from '@fluentui/react';
5
+ import React from 'react';
6
+ /* @conditional-compile-remove(unsupported-browser) */
7
+ import { useTheme } from '../theming';
8
+ /* @conditional-compile-remove(unsupported-browser) */
9
+ import { containerStyles, continueAnywayButtonStyles, linkTextStyles, mainTextStyles, secondaryTextStyles, testContainerStyles } from './styles/UnsupportedEnvironment.styles';
10
+ /* @conditional-compile-remove(unsupported-browser) */
11
+ const UnsupportedEnvironmentContainer = (props) => {
12
+ const { onTroubleshootingClick, strings, onContinueAnywayClick } = props;
13
+ const theme = useTheme();
14
+ return (React.createElement(Stack, { styles: containerStyles, tokens: { childrenGap: '2rem' } },
15
+ React.createElement(Icon, { iconName: "UnsupportedEnvironmentWarning", "data-ui-id": "unsupported-environment-icon" }),
16
+ React.createElement(Stack, { styles: testContainerStyles, tokens: { childrenGap: '0.25rem' } },
17
+ React.createElement(Text, { styles: mainTextStyles }, strings === null || strings === void 0 ? void 0 : strings.primaryText),
18
+ React.createElement(Text, { styles: secondaryTextStyles }, strings === null || strings === void 0 ? void 0 : strings.secondaryText)),
19
+ onTroubleshootingClick && (React.createElement(Link, { styles: linkTextStyles, onClick: onTroubleshootingClick, "data-ui-id": "unsupported-environment-link" }, strings === null || strings === void 0 ? void 0 : strings.moreHelpLinkText)),
20
+ onContinueAnywayClick && (React.createElement(DefaultButton, { "data-ui-id": "allowUnsupportedBrowserButton", styles: continueAnywayButtonStyles(theme), onClick: onContinueAnywayClick }, strings === null || strings === void 0 ? void 0 : strings.continueAnywayButtonText))));
21
+ };
22
+ /**
23
+ * UI to display to the user that the environment they are using is not supported by calling application.
24
+ *
25
+ * @private
26
+ */
27
+ export const UnsupportedEnvironment = (props) => {
28
+ /* @conditional-compile-remove(unsupported-browser) */
29
+ return React.createElement(UnsupportedEnvironmentContainer, Object.assign({}, props));
30
+ return React.createElement(React.Fragment, null);
31
+ };
32
+ //# sourceMappingURL=UnsupportedEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnsupportedEnvironment.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/UnsupportedEnvironment.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,sDAAsD;AACtD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,sDAAsD;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,sDAAsD;AACtD,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wCAAwC,CAAC;AAqChD,sDAAsD;AACtD,MAAM,+BAA+B,GAAG,CAAC,KAAkC,EAAe,EAAE;IAC1F,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,KAAK,IAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;QAC7D,oBAAC,IAAI,IAAC,QAAQ,EAAC,+BAA+B,gBAAY,8BAA8B,GAAQ;QAChG,oBAAC,KAAK,IAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE;YACpE,oBAAC,IAAI,IAAC,MAAM,EAAE,cAAc,IAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAQ;YAC3D,oBAAC,IAAI,IAAC,MAAM,EAAE,mBAAmB,IAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAQ,CAC5D;QACP,sBAAsB,IAAI,CACzB,oBAAC,IAAI,IAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,gBAAa,8BAA8B,IACrG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,CACrB,CACR;QACA,qBAAqB,IAAI,CACxB,oBAAC,aAAa,kBACD,+BAA+B,EAC1C,MAAM,EAAE,0BAA0B,CAAC,KAAK,CAAC,EACzC,OAAO,EAAE,qBAAqB,IAE7B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,CACpB,CACjB,CACK,CACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAkC,EAAe,EAAE;IACxF,sDAAsD;IACtD,OAAO,oBAAC,+BAA+B,oBAAK,KAAK,EAAI,CAAC;IACtD,OAAO,yCAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/* @conditional-compile-remove(unsupported-browser) */\nimport { DefaultButton, Icon, Link, Stack, Text } from '@fluentui/react';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { _pxToRem } from '@internal/acs-ui-common';\nimport React from 'react';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { useTheme } from '../theming';\n/* @conditional-compile-remove(unsupported-browser) */\nimport {\n containerStyles,\n continueAnywayButtonStyles,\n linkTextStyles,\n mainTextStyles,\n secondaryTextStyles,\n testContainerStyles\n} from './styles/UnsupportedEnvironment.styles';\n\n/**\n * @private\n */\nexport interface UnsupportedEnvironmentStrings {\n /** String for the primary text */\n primaryText: string;\n /** String for the secondary text */\n secondaryText: string;\n /** String to display in the text for the help link */\n moreHelpLinkText: string;\n /** String for continue anyway button */\n continueAnywayButtonText?: string;\n}\n\n/**\n * props for {@link UnsupportedEnvironment} UI\n *\n * @private\n */\nexport interface UnsupportedEnvironmentProps {\n /**\n * Handler to perform a action when the help link is actioned\n */\n onTroubleshootingClick?: () => void;\n /**\n * String overrides for the component\n */\n strings?: UnsupportedEnvironmentStrings;\n /**\n * CallBack for the continue anyay button. Use this as a mechanism to allow users into\n * a call with a unsupported browser version.\n */\n onContinueAnywayClick?: () => void;\n}\n\n/* @conditional-compile-remove(unsupported-browser) */\nconst UnsupportedEnvironmentContainer = (props: UnsupportedEnvironmentProps): JSX.Element => {\n const { onTroubleshootingClick, strings, onContinueAnywayClick } = props;\n const theme = useTheme();\n return (\n <Stack styles={containerStyles} tokens={{ childrenGap: '2rem' }}>\n <Icon iconName=\"UnsupportedEnvironmentWarning\" data-ui-id=\"unsupported-environment-icon\"></Icon>\n <Stack styles={testContainerStyles} tokens={{ childrenGap: '0.25rem' }}>\n <Text styles={mainTextStyles}>{strings?.primaryText}</Text>\n <Text styles={secondaryTextStyles}>{strings?.secondaryText}</Text>\n </Stack>\n {onTroubleshootingClick && (\n <Link styles={linkTextStyles} onClick={onTroubleshootingClick} data-ui-id=\"unsupported-environment-link\">\n {strings?.moreHelpLinkText}\n </Link>\n )}\n {onContinueAnywayClick && (\n <DefaultButton\n data-ui-id=\"allowUnsupportedBrowserButton\"\n styles={continueAnywayButtonStyles(theme)}\n onClick={onContinueAnywayClick}\n >\n {strings?.continueAnywayButtonText}\n </DefaultButton>\n )}\n </Stack>\n );\n};\n\n/**\n * UI to display to the user that the environment they are using is not supported by calling application.\n *\n * @private\n */\nexport const UnsupportedEnvironment = (props: UnsupportedEnvironmentProps): JSX.Element => {\n /* @conditional-compile-remove(unsupported-browser) */\n return <UnsupportedEnvironmentContainer {...props} />;\n return <></>;\n};\n\"../../../acs-ui-common/src\""]}
@@ -0,0 +1,32 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Strings for UnsupportedBrowser component
4
+ *
5
+ * @beta
6
+ */
7
+ export interface UnsupportedOperatingSystemStrings {
8
+ /** String for the primary text */
9
+ primaryText: string;
10
+ /** String for the secondary text */
11
+ secondaryText: string;
12
+ /** String to display in the text for the help link */
13
+ moreHelpLinkText: string;
14
+ }
15
+ /**
16
+ * Props for {@link UnsupportedOperatingSystem} UI
17
+ *
18
+ * @beta
19
+ */
20
+ export interface UnsupportedOperatingSystemProps {
21
+ /** Handler to perform a action when the help link is actioned */
22
+ onTroubleshootingClick?: () => void;
23
+ /** String overrides for the component */
24
+ strings?: UnsupportedOperatingSystemStrings;
25
+ }
26
+ /**
27
+ * UI to display to the user that the operating system they are using is not supported by Azure Communications Calling service.
28
+ *
29
+ * @beta
30
+ */
31
+ export declare const UnsupportedOperatingSystem: (props: UnsupportedOperatingSystemProps) => JSX.Element;
32
+ //# sourceMappingURL=UnsupportedOperatingSystem.d.ts.map
@@ -0,0 +1,25 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { useLocale } from '../localization';
5
+ import { UnsupportedEnvironment } from './UnsupportedEnvironment';
6
+ /**
7
+ * UI to display to the user that the operating system they are using is not supported by Azure Communications Calling service.
8
+ *
9
+ * @beta
10
+ */
11
+ export const UnsupportedOperatingSystem = (props) => {
12
+ const { onTroubleshootingClick, strings } = props;
13
+ const locale = useLocale();
14
+ return (React.createElement(UnsupportedEnvironment, { onTroubleshootingClick: onTroubleshootingClick, strings: Object.assign(Object.assign({}, unsupportedOperatingSystemStringsTrampoline(locale)), strings) }));
15
+ };
16
+ const unsupportedOperatingSystemStringsTrampoline = (locale) => {
17
+ /* @conditional-compile-remove(unsupported-browser) */
18
+ return locale.strings.UnsupportedOperatingSystem;
19
+ return {
20
+ primaryText: '',
21
+ secondaryText: '',
22
+ moreHelpLinkText: ''
23
+ };
24
+ };
25
+ //# sourceMappingURL=UnsupportedOperatingSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnsupportedOperatingSystem.js","sourceRoot":"","sources":["../../../../../../react-components/src/components/UnsupportedOperatingSystem.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA4BlE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAsC,EAAe,EAAE;IAChG,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,CACL,oBAAC,sBAAsB,IACrB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,kCAAO,2CAA2C,CAAC,MAAM,CAAC,GAAK,OAAO,IAC7E,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,2CAA2C,GAAG,CAAC,MAAuB,EAAqC,EAAE;IACjH,sDAAsD;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;IACjD,OAAO;QACL,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;KACrB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { _pxToRem } from '@internal/acs-ui-common';\nimport React from 'react';\nimport { ComponentLocale, useLocale } from '../localization';\nimport { UnsupportedEnvironment } from './UnsupportedEnvironment';\n\n/**\n * Strings for UnsupportedBrowser component\n *\n * @beta\n */\nexport interface UnsupportedOperatingSystemStrings {\n /** String for the primary text */\n primaryText: string;\n /** String for the secondary text */\n secondaryText: string;\n /** String to display in the text for the help link */\n moreHelpLinkText: string;\n}\n\n/**\n * Props for {@link UnsupportedOperatingSystem} UI\n *\n * @beta\n */\nexport interface UnsupportedOperatingSystemProps {\n /** Handler to perform a action when the help link is actioned */\n onTroubleshootingClick?: () => void;\n /** String overrides for the component */\n strings?: UnsupportedOperatingSystemStrings;\n}\n\n/**\n * UI to display to the user that the operating system they are using is not supported by Azure Communications Calling service.\n *\n * @beta\n */\nexport const UnsupportedOperatingSystem = (props: UnsupportedOperatingSystemProps): JSX.Element => {\n const { onTroubleshootingClick, strings } = props;\n const locale = useLocale();\n return (\n <UnsupportedEnvironment\n onTroubleshootingClick={onTroubleshootingClick}\n strings={{ ...unsupportedOperatingSystemStringsTrampoline(locale), ...strings }}\n />\n );\n};\n\nconst unsupportedOperatingSystemStringsTrampoline = (locale: ComponentLocale): UnsupportedOperatingSystemStrings => {\n /* @conditional-compile-remove(unsupported-browser) */\n return locale.strings.UnsupportedOperatingSystem;\n return {\n primaryText: '',\n secondaryText: '',\n moreHelpLinkText: ''\n };\n};\n\"../../../acs-ui-common/src\""]}
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import { LayoutProps } from './Layout';
3
+ /**
4
+ * Props for {@link DefaultLayout}.
5
+ *
6
+ * @private
7
+ */
8
+ export declare type DefaultLayoutProps = LayoutProps;
9
+ /**
10
+ * DefaultLayout displays remote participants, local video component, and screen sharing component in
11
+ * a grid and horizontal gallery.
12
+ *
13
+ * @private
14
+ */
15
+ export declare const DefaultLayout: (props: DefaultLayoutProps) => JSX.Element;
16
+ //# sourceMappingURL=DefaultLayout.d.ts.map
@@ -0,0 +1,60 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import { Stack } from '@fluentui/react';
4
+ import React, { useMemo } from 'react';
5
+ import { GridLayout } from '../GridLayout';
6
+ import { isNarrowWidth } from '../utils/responsive';
7
+ /* @conditional-compile-remove(pinned-participants) */
8
+ import { ScrollableHorizontalGallery } from './ScrollableHorizontalGallery';
9
+ import { rootLayoutStyle } from './styles/DefaultLayout.styles';
10
+ import { videoGalleryLayoutGap } from './styles/Layout.styles';
11
+ import { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';
12
+ import { VideoGalleryResponsiveHorizontalGallery } from './VideoGalleryResponsiveHorizontalGallery';
13
+ /**
14
+ * DefaultLayout displays remote participants, local video component, and screen sharing component in
15
+ * a grid and horizontal gallery.
16
+ *
17
+ * @private
18
+ */
19
+ export const DefaultLayout = (props) => {
20
+ const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
21
+ /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds } = props;
22
+ const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
23
+ const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
24
+ remoteParticipants,
25
+ dominantSpeakers,
26
+ maxRemoteVideoStreams,
27
+ isScreenShareActive: !!screenShareComponent,
28
+ /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
29
+ });
30
+ let activeVideoStreams = 0;
31
+ const gridTiles = gridParticipants.map((p) => {
32
+ var _a, _b;
33
+ return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
34
+ ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
35
+ : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
36
+ });
37
+ const horizontalGalleryTiles = horizontalGalleryParticipants.map((p) => {
38
+ var _a, _b;
39
+ return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
40
+ ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
41
+ : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
42
+ });
43
+ if (localVideoComponent) {
44
+ gridTiles.push(localVideoComponent);
45
+ }
46
+ const horizontalGallery = useMemo(() => {
47
+ if (horizontalGalleryTiles.length === 0) {
48
+ return null;
49
+ }
50
+ /* @conditional-compile-remove(pinned-participants) */
51
+ if (isNarrow) {
52
+ return React.createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: horizontalGalleryTiles });
53
+ }
54
+ return (React.createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery }));
55
+ }, [isNarrow, horizontalGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery]);
56
+ return (React.createElement(Stack, { horizontal: false, styles: rootLayoutStyle, tokens: videoGalleryLayoutGap },
57
+ screenShareComponent ? (screenShareComponent) : (React.createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
58
+ horizontalGallery));
59
+ };
60
+ //# sourceMappingURL=DefaultLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultLayout.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/VideoGallery/DefaultLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Stack } from '@fluentui/react';\nimport React, { useMemo } from 'react';\nimport { GridLayout } from '../GridLayout';\nimport { isNarrowWidth } from '../utils/responsive';\nimport { LayoutProps } from './Layout';\n/* @conditional-compile-remove(pinned-participants) */\nimport { ScrollableHorizontalGallery } from './ScrollableHorizontalGallery';\nimport { rootLayoutStyle } from './styles/DefaultLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';\nimport { VideoGalleryResponsiveHorizontalGallery } from './VideoGalleryResponsiveHorizontalGallery';\n\n/**\n * Props for {@link DefaultLayout}.\n *\n * @private\n */\nexport type DefaultLayoutProps = LayoutProps;\n\n/**\n * DefaultLayout displays remote participants, local video component, and screen sharing component in\n * a grid and horizontal gallery.\n *\n * @private\n */\nexport const DefaultLayout = (props: DefaultLayoutProps): JSX.Element => {\n const {\n remoteParticipants = [],\n dominantSpeakers,\n localVideoComponent,\n screenShareComponent,\n onRenderRemoteParticipant,\n styles,\n maxRemoteVideoStreams,\n parentWidth,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds\n } = props;\n\n const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;\n\n const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({\n remoteParticipants,\n dominantSpeakers,\n maxRemoteVideoStreams,\n isScreenShareActive: !!screenShareComponent,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds\n });\n\n let activeVideoStreams = 0;\n\n const gridTiles = gridParticipants.map((p) => {\n return onRenderRemoteParticipant(\n p,\n maxRemoteVideoStreams && maxRemoteVideoStreams >= 0\n ? p.videoStream?.isAvailable && activeVideoStreams++ < maxRemoteVideoStreams\n : p.videoStream?.isAvailable\n );\n });\n\n const horizontalGalleryTiles = horizontalGalleryParticipants.map((p) => {\n return onRenderRemoteParticipant(\n p,\n maxRemoteVideoStreams && maxRemoteVideoStreams >= 0\n ? p.videoStream?.isAvailable && activeVideoStreams++ < maxRemoteVideoStreams\n : p.videoStream?.isAvailable\n );\n });\n\n if (localVideoComponent) {\n gridTiles.push(localVideoComponent);\n }\n\n const horizontalGallery = useMemo(() => {\n if (horizontalGalleryTiles.length === 0) {\n return null;\n }\n /* @conditional-compile-remove(pinned-participants) */\n if (isNarrow) {\n return <ScrollableHorizontalGallery horizontalGalleryElements={horizontalGalleryTiles} />;\n }\n return (\n <VideoGalleryResponsiveHorizontalGallery\n isNarrow={isNarrow}\n shouldFloatLocalVideo={true}\n horizontalGalleryElements={horizontalGalleryTiles}\n styles={styles?.horizontalGallery}\n />\n );\n }, [isNarrow, horizontalGalleryTiles, styles?.horizontalGallery]);\n\n return (\n <Stack horizontal={false} styles={rootLayoutStyle} tokens={videoGalleryLayoutGap}>\n {screenShareComponent ? (\n screenShareComponent\n ) : (\n <GridLayout key=\"grid-layout\" styles={styles?.gridLayout}>\n {gridTiles}\n </GridLayout>\n )}\n {horizontalGallery}\n </Stack>\n );\n};\n"]}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * @private
4
+ */
5
+ export declare const FloatingLocalVideo: (props: {
6
+ localVideoComponent: JSX.Element;
7
+ layerHostId: string;
8
+ isNarrow?: boolean;
9
+ parentWidth?: number;
10
+ parentHeight?: number;
11
+ }) => JSX.Element;
12
+ //# sourceMappingURL=FloatingLocalVideo.d.ts.map
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import { ContextualMenu } from '@fluentui/react';
4
+ import React, { useMemo } from 'react';
5
+ import { useTheme } from '../../theming';
6
+ import { _ModalClone } from '../ModalClone/ModalClone';
7
+ import { floatingLocalVideoModalStyle, LARGE_FLOATING_MODAL_SIZE_PX, localVideoTileOuterPaddingPX, SMALL_FLOATING_MODAL_SIZE_PX } from './styles/FloatingLocalVideo.styles';
8
+ const DRAG_OPTIONS = {
9
+ moveMenuItemText: 'Move',
10
+ closeMenuItemText: 'Close',
11
+ menu: ContextualMenu,
12
+ keepInBounds: true
13
+ };
14
+ // Manually override the max position used to keep the modal in the bounds of its container.
15
+ // This is a workaround for: https://github.com/microsoft/fluentui/issues/20122
16
+ // Because our modal starts in the bottom right corner, we can say that this is the max (i.e. rightmost and bottomost)
17
+ // position the modal can be dragged to.
18
+ const modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTileOuterPaddingPX };
19
+ /**
20
+ * @private
21
+ */
22
+ export const FloatingLocalVideo = (props) => {
23
+ const { localVideoComponent, layerHostId, isNarrow, parentWidth, parentHeight } = props;
24
+ const theme = useTheme();
25
+ const modalWidth = isNarrow ? SMALL_FLOATING_MODAL_SIZE_PX.width : LARGE_FLOATING_MODAL_SIZE_PX.width;
26
+ const modalHeight = isNarrow ? SMALL_FLOATING_MODAL_SIZE_PX.height : LARGE_FLOATING_MODAL_SIZE_PX.height;
27
+ // The minimum drag position is the top left of the video gallery. i.e. the modal (PiP) should not be able
28
+ // to be dragged offscreen and these are the top and left bounds of that calculation.
29
+ const modalMinDragPosition = useMemo(() => parentWidth && parentHeight
30
+ ? {
31
+ // We use -parentWidth/Height because our modal is positioned to start in the bottom right,
32
+ // hence (0,0) is the bottom right of the video gallery.
33
+ x: -parentWidth + modalWidth + localVideoTileOuterPaddingPX,
34
+ y: -parentHeight + modalHeight + localVideoTileOuterPaddingPX
35
+ }
36
+ : undefined, [parentHeight, parentWidth, modalHeight, modalWidth]);
37
+ const modalStyles = useMemo(() => floatingLocalVideoModalStyle(theme, isNarrow), [theme, isNarrow]);
38
+ const layerProps = useMemo(() => ({ hostId: layerHostId }), [layerHostId]);
39
+ return (React.createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS, styles: modalStyles, layerProps: layerProps, maxDragPosition: modalMaxDragPosition, minDragPosition: modalMinDragPosition }, localVideoComponent));
40
+ };
41
+ //# sourceMappingURL=FloatingLocalVideo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingLocalVideo.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/VideoGallery/FloatingLocalVideo.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAiB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,oCAAoC,CAAC;AAE5C,MAAM,YAAY,GAAiB;IACjC,gBAAgB,EAAE,MAAM;IACxB,iBAAiB,EAAE,OAAO;IAC1B,IAAI,EAAE,cAAc;IACpB,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,4FAA4F;AAC5F,+EAA+E;AAC/E,sHAAsH;AACtH,wCAAwC;AACxC,MAAM,oBAAoB,GAAG,EAAE,CAAC,EAAE,4BAA4B,EAAE,CAAC,EAAE,4BAA4B,EAAE,CAAC;AAElG;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAMlC,EAAe,EAAE;IAChB,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC;IACtG,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC;IACzG,0GAA0G;IAC1G,qFAAqF;IACrF,MAAM,oBAAoB,GAA8B,OAAO,CAC7D,GAAG,EAAE,CACH,WAAW,IAAI,YAAY;QACzB,CAAC,CAAC;YACE,2FAA2F;YAC3F,wDAAwD;YACxD,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,GAAG,4BAA4B;YAC3D,CAAC,EAAE,CAAC,YAAY,GAAG,WAAW,GAAG,4BAA4B;SAC9D;QACH,CAAC,CAAC,SAAS,EACf,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CACrD,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,OAAO,CACL,oBAAC,WAAW,IACV,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,oBAAoB,EACrC,eAAe,EAAE,oBAAoB,IAEpC,mBAAmB,CACR,CACf,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { ContextualMenu, IDragOptions } from '@fluentui/react';\nimport React, { useMemo } from 'react';\nimport { useTheme } from '../../theming';\nimport { _ICoordinates, _ModalClone } from '../ModalClone/ModalClone';\nimport {\n floatingLocalVideoModalStyle,\n LARGE_FLOATING_MODAL_SIZE_PX,\n localVideoTileOuterPaddingPX,\n SMALL_FLOATING_MODAL_SIZE_PX\n} from './styles/FloatingLocalVideo.styles';\n\nconst DRAG_OPTIONS: IDragOptions = {\n moveMenuItemText: 'Move',\n closeMenuItemText: 'Close',\n menu: ContextualMenu,\n keepInBounds: true\n};\n\n// Manually override the max position used to keep the modal in the bounds of its container.\n// This is a workaround for: https://github.com/microsoft/fluentui/issues/20122\n// Because our modal starts in the bottom right corner, we can say that this is the max (i.e. rightmost and bottomost)\n// position the modal can be dragged to.\nconst modalMaxDragPosition = { x: localVideoTileOuterPaddingPX, y: localVideoTileOuterPaddingPX };\n\n/**\n * @private\n */\nexport const FloatingLocalVideo = (props: {\n localVideoComponent: JSX.Element;\n layerHostId: string;\n isNarrow?: boolean;\n parentWidth?: number;\n parentHeight?: number;\n}): JSX.Element => {\n const { localVideoComponent, layerHostId, isNarrow, parentWidth, parentHeight } = props;\n\n const theme = useTheme();\n\n const modalWidth = isNarrow ? SMALL_FLOATING_MODAL_SIZE_PX.width : LARGE_FLOATING_MODAL_SIZE_PX.width;\n const modalHeight = isNarrow ? SMALL_FLOATING_MODAL_SIZE_PX.height : LARGE_FLOATING_MODAL_SIZE_PX.height;\n // The minimum drag position is the top left of the video gallery. i.e. the modal (PiP) should not be able\n // to be dragged offscreen and these are the top and left bounds of that calculation.\n const modalMinDragPosition: _ICoordinates | undefined = useMemo(\n () =>\n parentWidth && parentHeight\n ? {\n // We use -parentWidth/Height because our modal is positioned to start in the bottom right,\n // hence (0,0) is the bottom right of the video gallery.\n x: -parentWidth + modalWidth + localVideoTileOuterPaddingPX,\n y: -parentHeight + modalHeight + localVideoTileOuterPaddingPX\n }\n : undefined,\n [parentHeight, parentWidth, modalHeight, modalWidth]\n );\n\n const modalStyles = useMemo(() => floatingLocalVideoModalStyle(theme, isNarrow), [theme, isNarrow]);\n const layerProps = useMemo(() => ({ hostId: layerHostId }), [layerHostId]);\n\n return (\n <_ModalClone\n isOpen={true}\n isModeless={true}\n dragOptions={DRAG_OPTIONS}\n styles={modalStyles}\n layerProps={layerProps}\n maxDragPosition={modalMaxDragPosition}\n minDragPosition={modalMinDragPosition}\n >\n {localVideoComponent}\n </_ModalClone>\n );\n};\n"]}
@@ -0,0 +1,25 @@
1
+ /// <reference types="react" />
2
+ import { LayoutProps } from './Layout';
3
+ /**
4
+ * Props for {@link FloatingLocalVideoLayout}.
5
+ *
6
+ * @private
7
+ */
8
+ export interface FloatingLocalVideoLayoutProps extends LayoutProps {
9
+ /**
10
+ * Whether to display the local video camera switcher button
11
+ */
12
+ showCameraSwitcherInLocalPreview?: boolean;
13
+ /**
14
+ * Height of parent element
15
+ */
16
+ parentHeight?: number;
17
+ }
18
+ /**
19
+ * FloatingLocalVideoLayout displays remote participants and a screen sharing component in
20
+ * a grid and horizontal gallery while floating the local video
21
+ *
22
+ * @private
23
+ */
24
+ export declare const FloatingLocalVideoLayout: (props: FloatingLocalVideoLayoutProps) => JSX.Element;
25
+ //# sourceMappingURL=FloatingLocalVideoLayout.d.ts.map
@@ -0,0 +1,76 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import { LayerHost, mergeStyles, Stack } from '@fluentui/react';
4
+ import { useId } from '@fluentui/react-hooks';
5
+ import React, { useMemo } from 'react';
6
+ import { useTheme } from '../../theming';
7
+ import { GridLayout } from '../GridLayout';
8
+ import { isNarrowWidth } from '../utils/responsive';
9
+ import { FloatingLocalVideo } from './FloatingLocalVideo';
10
+ /* @conditional-compile-remove(pinned-participants) */
11
+ import { ScrollableHorizontalGallery } from './ScrollableHorizontalGallery';
12
+ import { localVideoTileContainerStyle, localVideoTileWithControlsContainerStyle, LOCAL_VIDEO_TILE_ZINDEX } from './styles/FloatingLocalVideo.styles';
13
+ import { innerLayoutStyle, layerHostStyle, rootLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';
14
+ import { videoGalleryLayoutGap } from './styles/Layout.styles';
15
+ import { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';
16
+ import { VideoGalleryResponsiveHorizontalGallery } from './VideoGalleryResponsiveHorizontalGallery';
17
+ /**
18
+ * FloatingLocalVideoLayout displays remote participants and a screen sharing component in
19
+ * a grid and horizontal gallery while floating the local video
20
+ *
21
+ * @private
22
+ */
23
+ export const FloatingLocalVideoLayout = (props) => {
24
+ const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight,
25
+ /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds } = props;
26
+ const theme = useTheme();
27
+ const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
28
+ const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({
29
+ remoteParticipants,
30
+ dominantSpeakers,
31
+ maxRemoteVideoStreams,
32
+ isScreenShareActive: !!screenShareComponent,
33
+ /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
34
+ });
35
+ let activeVideoStreams = 0;
36
+ const gridTiles = gridParticipants.map((p) => {
37
+ var _a, _b;
38
+ return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
39
+ ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
40
+ : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
41
+ });
42
+ const shouldFloatLocalVideo = remoteParticipants.length > 0;
43
+ if (!shouldFloatLocalVideo && localVideoComponent) {
44
+ gridTiles.push(localVideoComponent);
45
+ }
46
+ const horizontalGalleryTiles = horizontalGalleryParticipants.map((p) => {
47
+ var _a, _b;
48
+ return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
49
+ ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
50
+ : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
51
+ });
52
+ const layerHostId = useId('layerhost');
53
+ const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
54
+ // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.
55
+ showCameraSwitcherInLocalPreview ? (React.createElement(Stack, { className: mergeStyles(localVideoTileWithControlsContainerStyle(theme, isNarrow), {
56
+ boxShadow: theme.effects.elevation8,
57
+ zIndex: LOCAL_VIDEO_TILE_ZINDEX
58
+ }) }, localVideoComponent)) : horizontalGalleryTiles.length > 0 ? (React.createElement(Stack, { className: mergeStyles(localVideoTileContainerStyle(theme, isNarrow)) }, localVideoComponent)) : (React.createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, isNarrow: isNarrow, parentWidth: parentWidth, parentHeight: parentHeight }))) : undefined;
59
+ const horizontalGallery = useMemo(() => {
60
+ if (horizontalGalleryTiles.length === 0) {
61
+ return null;
62
+ }
63
+ /* @conditional-compile-remove(pinned-participants) */
64
+ if (isNarrow) {
65
+ return React.createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: horizontalGalleryTiles });
66
+ }
67
+ return (React.createElement(VideoGalleryResponsiveHorizontalGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, horizontalGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery }));
68
+ }, [isNarrow, horizontalGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery]);
69
+ return (React.createElement(Stack, { styles: rootLayoutStyle },
70
+ React.createElement(Stack, { horizontal: false, styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
71
+ screenShareComponent ? (screenShareComponent) : (React.createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
72
+ horizontalGallery),
73
+ wrappedLocalVideoComponent,
74
+ React.createElement(LayerHost, { id: layerHostId, className: mergeStyles(layerHostStyle) })));
75
+ };
76
+ //# sourceMappingURL=FloatingLocalVideoLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingLocalVideoLayout.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/VideoGallery/FloatingLocalVideoLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LayerHost, mergeStyles, Stack } from '@fluentui/react';\nimport { useId } from '@fluentui/react-hooks';\nimport React, { useMemo } from 'react';\nimport { useTheme } from '../../theming';\nimport { GridLayout } from '../GridLayout';\nimport { isNarrowWidth } from '../utils/responsive';\nimport { FloatingLocalVideo } from './FloatingLocalVideo';\nimport { LayoutProps } from './Layout';\n/* @conditional-compile-remove(pinned-participants) */\nimport { ScrollableHorizontalGallery } from './ScrollableHorizontalGallery';\nimport {\n localVideoTileContainerStyle,\n localVideoTileWithControlsContainerStyle,\n LOCAL_VIDEO_TILE_ZINDEX\n} from './styles/FloatingLocalVideo.styles';\nimport { innerLayoutStyle, layerHostStyle, rootLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';\nimport { VideoGalleryResponsiveHorizontalGallery } from './VideoGalleryResponsiveHorizontalGallery';\n\n/**\n * Props for {@link FloatingLocalVideoLayout}.\n *\n * @private\n */\nexport interface FloatingLocalVideoLayoutProps extends LayoutProps {\n /**\n * Whether to display the local video camera switcher button\n */\n showCameraSwitcherInLocalPreview?: boolean;\n /**\n * Height of parent element\n */\n parentHeight?: number;\n}\n\n/**\n * FloatingLocalVideoLayout displays remote participants and a screen sharing component in\n * a grid and horizontal gallery while floating the local video\n *\n * @private\n */\nexport const FloatingLocalVideoLayout = (props: FloatingLocalVideoLayoutProps): JSX.Element => {\n const {\n remoteParticipants = [],\n dominantSpeakers,\n localVideoComponent,\n screenShareComponent,\n onRenderRemoteParticipant,\n styles,\n maxRemoteVideoStreams,\n showCameraSwitcherInLocalPreview,\n parentWidth,\n parentHeight,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds\n } = props;\n\n const theme = useTheme();\n\n const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;\n\n const { gridParticipants, horizontalGalleryParticipants } = useOrganizedParticipants({\n remoteParticipants,\n dominantSpeakers,\n maxRemoteVideoStreams,\n isScreenShareActive: !!screenShareComponent,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds\n });\n\n let activeVideoStreams = 0;\n\n const gridTiles = gridParticipants.map((p) => {\n return onRenderRemoteParticipant(\n p,\n maxRemoteVideoStreams && maxRemoteVideoStreams >= 0\n ? p.videoStream?.isAvailable && activeVideoStreams++ < maxRemoteVideoStreams\n : p.videoStream?.isAvailable\n );\n });\n\n const shouldFloatLocalVideo = remoteParticipants.length > 0;\n\n if (!shouldFloatLocalVideo && localVideoComponent) {\n gridTiles.push(localVideoComponent);\n }\n\n const horizontalGalleryTiles = horizontalGalleryParticipants.map((p) => {\n return onRenderRemoteParticipant(\n p,\n maxRemoteVideoStreams && maxRemoteVideoStreams >= 0\n ? p.videoStream?.isAvailable && activeVideoStreams++ < maxRemoteVideoStreams\n : p.videoStream?.isAvailable\n );\n });\n\n const layerHostId = useId('layerhost');\n\n const wrappedLocalVideoComponent =\n localVideoComponent && shouldFloatLocalVideo ? (\n // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.\n showCameraSwitcherInLocalPreview ? (\n <Stack\n className={mergeStyles(localVideoTileWithControlsContainerStyle(theme, isNarrow), {\n boxShadow: theme.effects.elevation8,\n zIndex: LOCAL_VIDEO_TILE_ZINDEX\n })}\n >\n {localVideoComponent}\n </Stack>\n ) : horizontalGalleryTiles.length > 0 ? (\n <Stack className={mergeStyles(localVideoTileContainerStyle(theme, isNarrow))}>{localVideoComponent}</Stack>\n ) : (\n <FloatingLocalVideo\n localVideoComponent={localVideoComponent}\n layerHostId={layerHostId}\n isNarrow={isNarrow}\n parentWidth={parentWidth}\n parentHeight={parentHeight}\n />\n )\n ) : undefined;\n\n const horizontalGallery = useMemo(() => {\n if (horizontalGalleryTiles.length === 0) {\n return null;\n }\n /* @conditional-compile-remove(pinned-participants) */\n if (isNarrow) {\n return <ScrollableHorizontalGallery horizontalGalleryElements={horizontalGalleryTiles} />;\n }\n return (\n <VideoGalleryResponsiveHorizontalGallery\n isNarrow={isNarrow}\n shouldFloatLocalVideo={true}\n horizontalGalleryElements={horizontalGalleryTiles}\n styles={styles?.horizontalGallery}\n />\n );\n }, [isNarrow, horizontalGalleryTiles, styles?.horizontalGallery]);\n\n return (\n <Stack styles={rootLayoutStyle}>\n <Stack horizontal={false} styles={innerLayoutStyle} tokens={videoGalleryLayoutGap}>\n {screenShareComponent ? (\n screenShareComponent\n ) : (\n <GridLayout key=\"grid-layout\" styles={styles?.gridLayout}>\n {gridTiles}\n </GridLayout>\n )}\n {horizontalGallery}\n </Stack>\n {wrappedLocalVideoComponent}\n <LayerHost id={layerHostId} className={mergeStyles(layerHostStyle)} />\n </Stack>\n );\n};\n"]}
@@ -0,0 +1,38 @@
1
+ /// <reference types="react" />
2
+ import { VideoGalleryRemoteParticipant } from '../../types';
3
+ import { VideoGalleryStyles } from '../VideoGallery';
4
+ /**
5
+ * Props for a layout component
6
+ *
7
+ * @private
8
+ */
9
+ export interface LayoutProps {
10
+ /**
11
+ * Styles for the {@link DefaultLayout}
12
+ */
13
+ styles?: Omit<VideoGalleryStyles, 'root'>;
14
+ /** List of remote video particpants */
15
+ remoteParticipants?: VideoGalleryRemoteParticipant[];
16
+ /** Callback to render each remote participant */
17
+ onRenderRemoteParticipant: (participant: VideoGalleryRemoteParticipant, isVideoParticipant?: boolean) => JSX.Element;
18
+ /** List of dominant speaker userIds in the order of their dominance. 0th index is the most dominant. */
19
+ dominantSpeakers?: string[];
20
+ /** Component that contains local video content */
21
+ localVideoComponent?: JSX.Element;
22
+ /** Component that contains screen share content */
23
+ screenShareComponent?: JSX.Element;
24
+ /**
25
+ * Maximum number of participant remote video streams that is rendered.
26
+ * @defaultValue 4
27
+ */
28
+ maxRemoteVideoStreams?: number;
29
+ /**
30
+ * Width of parent element
31
+ */
32
+ parentWidth?: number;
33
+ /**
34
+ * List of pinned participant userIds
35
+ */
36
+ pinnedParticipantUserIds?: string[];
37
+ }
38
+ //# sourceMappingURL=Layout.d.ts.map
@@ -0,0 +1,4 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ export {};
4
+ //# sourceMappingURL=Layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/VideoGallery/Layout.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { VideoGalleryRemoteParticipant } from '../../types';\nimport { VideoGalleryStyles } from '../VideoGallery';\n\n/**\n * Props for a layout component\n *\n * @private\n */\nexport interface LayoutProps {\n /**\n * Styles for the {@link DefaultLayout}\n */\n styles?: Omit<VideoGalleryStyles, 'root'>;\n /** List of remote video particpants */\n remoteParticipants?: VideoGalleryRemoteParticipant[];\n /** Callback to render each remote participant */\n onRenderRemoteParticipant: (participant: VideoGalleryRemoteParticipant, isVideoParticipant?: boolean) => JSX.Element;\n /** List of dominant speaker userIds in the order of their dominance. 0th index is the most dominant. */\n dominantSpeakers?: string[];\n /** Component that contains local video content */\n localVideoComponent?: JSX.Element;\n /** Component that contains screen share content */\n screenShareComponent?: JSX.Element;\n /**\n * Maximum number of participant remote video streams that is rendered.\n * @defaultValue 4\n */\n maxRemoteVideoStreams?: number;\n /**\n * Width of parent element\n */\n parentWidth?: number;\n /* @conditional-compile-remove(pinned-participants) */\n /**\n * List of pinned participant userIds\n */\n pinnedParticipantUserIds?: string[];\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Component to display elements horizontally in a scrollable container
4
+ * @private
5
+ */
6
+ export declare const ScrollableHorizontalGallery: (props: {
7
+ horizontalGalleryElements?: JSX.Element[];
8
+ }) => JSX.Element;
9
+ //# sourceMappingURL=ScrollableHorizontalGallery.d.ts.map
@@ -0,0 +1,18 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import { Stack } from '@fluentui/react';
4
+ import React, { useRef } from 'react';
5
+ import { useDraggable } from 'react-use-draggable-scroll';
6
+ import { scrollableHorizontalGalleryContainerStyles, scrollableHorizontalGalleryStyles } from './styles/ScrollableHorizontalGallery.style';
7
+ /**
8
+ * Component to display elements horizontally in a scrollable container
9
+ * @private
10
+ */
11
+ export const ScrollableHorizontalGallery = (props) => {
12
+ const { horizontalGalleryElements } = props;
13
+ const ref = useRef();
14
+ const { events: dragabbleEvents } = useDraggable(ref);
15
+ return (React.createElement("div", Object.assign({ ref: ref }, dragabbleEvents, { className: scrollableHorizontalGalleryContainerStyles }),
16
+ React.createElement(Stack, { "data-ui-id": "scrollable-horizontal-gallery", horizontal: true, styles: scrollableHorizontalGalleryStyles, tokens: { childrenGap: '0.5rem' } }, horizontalGalleryElements)));
17
+ };
18
+ //# sourceMappingURL=ScrollableHorizontalGallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableHorizontalGallery.js","sourceRoot":"","sources":["../../../../../../../react-components/src/components/VideoGallery/ScrollableHorizontalGallery.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACL,0CAA0C,EAC1C,iCAAiC,EAClC,MAAM,4CAA4C,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAAoD,EAAe,EAAE;IAC/G,MAAM,EAAE,yBAAyB,EAAE,GAAG,KAAK,CAAC;IAE5C,MAAM,GAAG,GAAG,MAAM,EAA8D,CAAC;IACjF,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEtD,OAAO,CACL,2CAAK,GAAG,EAAE,GAAG,IAAM,eAAe,IAAE,SAAS,EAAE,0CAA0C;QACvF,oBAAC,KAAK,kBACO,+BAA+B,EAC1C,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,iCAAiC,EACzC,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAEhC,yBAAyB,CACpB,CACJ,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Stack } from '@fluentui/react';\nimport React, { useRef } from 'react';\nimport { useDraggable } from 'react-use-draggable-scroll';\nimport {\n scrollableHorizontalGalleryContainerStyles,\n scrollableHorizontalGalleryStyles\n} from './styles/ScrollableHorizontalGallery.style';\n\n/**\n * Component to display elements horizontally in a scrollable container\n * @private\n */\nexport const ScrollableHorizontalGallery = (props: { horizontalGalleryElements?: JSX.Element[] }): JSX.Element => {\n const { horizontalGalleryElements } = props;\n\n const ref = useRef<HTMLDivElement>() as React.MutableRefObject<HTMLInputElement>;\n const { events: dragabbleEvents } = useDraggable(ref);\n\n return (\n <div ref={ref} {...dragabbleEvents} className={scrollableHorizontalGalleryContainerStyles}>\n <Stack\n data-ui-id=\"scrollable-horizontal-gallery\"\n horizontal={true}\n styles={scrollableHorizontalGalleryStyles}\n tokens={{ childrenGap: '0.5rem' }}\n >\n {horizontalGalleryElements}\n </Stack>\n </div>\n );\n};\n"]}