@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.
- package/CHANGELOG.beta.md +47 -1
- package/CHANGELOG.json +1554 -0
- package/CHANGELOG.stable.md +88 -2
- package/dist/communication-react.d.ts +468 -296
- package/dist/dist-cjs/communication-react/index.js +2904 -1694
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/identifier.js +3 -47
- package/dist/dist-esm/acs-ui-common/src/identifier.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +5 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +8 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js +21 -10
- package/dist/dist-esm/calling-component-bindings/src/errorBarSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.d.ts +1 -2
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +0 -7
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +13 -4
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.d.ts +7 -0
- package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js +9 -0
- package/dist/dist-esm/calling-component-bindings/src/utils/callUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +12 -0
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +31 -6
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +2 -13
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +2 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +2 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js +14 -0
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Logger.d.ts +1 -0
- package/dist/dist-esm/calling-stateful-client/src/Logger.js +1 -0
- package/dist/dist-esm/calling-stateful-client/src/Logger.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.d.ts +2 -1
- package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +11 -4
- package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js +39 -12
- package/dist/dist-esm/calling-stateful-client/src/StreamUtils.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js +2 -2
- package/dist/dist-esm/calling-stateful-client/src/TypeGuards.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.d.ts +19 -0
- package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js +43 -0
- package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js.map +1 -0
- package/dist/dist-esm/communication-react/src/index.d.ts +7 -5
- package/dist/dist-esm/communication-react/src/index.js +5 -3
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.d.ts +105 -0
- package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissions.js → SitePermissions.js} +28 -22
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissions.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissionsScaffolding.d.ts → SitePermissionsScaffolding.d.ts} +12 -12
- package/dist/dist-esm/react-components/src/components/DevicePermissions/{DomainPermissionsScaffolding.js → SitePermissionsScaffolding.js} +4 -4
- package/dist/dist-esm/react-components/src/components/DevicePermissions/SitePermissionsScaffolding.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js +20 -9
- package/dist/dist-esm/react-components/src/components/Dialpad/Dialpad.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.d.ts +1 -0
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.js +18 -2
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerContentContainer.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerMenu.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js +1 -1
- package/dist/dist-esm/react-components/src/components/Drawer/DrawerSurface.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ErrorBar.d.ts +8 -0
- package/dist/dist-esm/react-components/src/components/ErrorBar.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.js +6 -4
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantItem.d.ts +0 -2
- package/dist/dist-esm/react-components/src/components/ParticipantItem.js +10 -12
- package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantsButton.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +25 -4
- package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +10 -4
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +79 -7
- package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.d.ts +6 -6
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js +13 -21
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.d.ts +37 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js +27 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.d.ts +41 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js +32 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.d.ts +32 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js +25 -0
- package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.d.ts +16 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +60 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.d.ts +12 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js +41 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts +25 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +76 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.d.ts +38 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js +4 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/Layout.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js +18 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.d.ts +14 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js +19 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/VideoGalleryResponsiveHorizontalGallery.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.d.ts +6 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.js +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.d.ts +62 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js +118 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.d.ts +14 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.js +28 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.d.ts +6 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js +22 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.d.ts +10 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js +29 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.d.ts +45 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js +57 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js +7 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.d.ts +23 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js +96 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +27 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +121 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +66 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +131 -124
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.d.ts +12 -17
- package/dist/dist-esm/react-components/src/components/VideoTile.js +71 -38
- package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +8 -3
- package/dist/dist-esm/react-components/src/components/index.js +3 -2
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/{DomainPermissions.styles.d.ts → SitePermissions.styles.d.ts} +1 -1
- package/dist/dist-esm/react-components/src/components/styles/{DomainPermissions.styles.js → SitePermissions.styles.js} +1 -1
- package/dist/dist-esm/react-components/src/components/styles/SitePermissions.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/styles/TroubleshootingGuideErrorBar.styles.js +2 -1
- package/dist/dist-esm/react-components/src/components/styles/TroubleshootingGuideErrorBar.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.d.ts +26 -0
- package/dist/dist-esm/react-components/src/components/styles/{UnsupportedBrowser.styles.js → UnsupportedEnvironment.styles.js} +25 -10
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts +1 -95
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js +3 -138
- package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +11 -26
- package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/useLongPress.d.ts +13 -10
- package/dist/dist-esm/react-components/src/components/utils/useLongPress.js +66 -37
- package/dist/dist-esm/react-components/src/components/utils/useLongPress.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils.d.ts +1 -6
- package/dist/dist-esm/react-components/src/components/utils.js +4 -16
- package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
- package/dist/dist-esm/react-components/src/index.d.ts +0 -1
- package/dist/dist-esm/react-components/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +31 -19
- package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +49 -14
- package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +11 -6
- package/dist/dist-esm/react-components/src/theming/icons.js +30 -20
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.styles.d.ts +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.styles.js +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
- package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +24 -11
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +9 -9
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +56 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +16 -10
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +89 -40
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +11 -17
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.d.ts +2 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +19 -18
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.d.ts +5 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js +68 -28
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallReadinessModal.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.d.ts +16 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageCameraDropdown.js → ConfigurationPageCameraDropdown.js} +4 -6
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageCameraDropdown.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageErrorBar.d.ts → ConfigurationPageErrorBar.d.ts} +3 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageErrorBar.js → ConfigurationPageErrorBar.js} +4 -6
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageErrorBar.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.d.ts +16 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/{ConfigurationpageMicDropdown.js → ConfigurationPageMicDropdown.js} +4 -8
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationPageMicDropdown.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.d.ts +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +16 -14
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js +8 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalPreview.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +26 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Microphone.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js +11 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useAdaptedSelector.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +4 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +6 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +3 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +46 -27
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js +28 -7
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.d.ts +7 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.js +9 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/mediaGallerySelector.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js +10 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallPage.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.d.ts +29 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js +119 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/MediaGalleryUtils.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +20 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +74 -21
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +16 -7
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +22 -10
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatControlBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +6 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +7 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +8 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +4 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js +26 -3
- package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.d.ts +8 -0
- package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.js +40 -0
- package/dist/dist-esm/react-composites/src/composites/common/HiddenFocusStartPoint.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +11 -6
- package/dist/dist-esm/react-composites/src/composites/common/styles/ModalLocalAndRemotePIP.styles.js +1 -0
- package/dist/dist-esm/react-composites/src/composites/common/styles/ModalLocalAndRemotePIP.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js +2 -1
- package/dist/dist-esm/react-composites/src/composites/common/styles/Pane.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +15 -1
- package/package.json +12 -11
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissions.d.ts +0 -101
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissions.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/DevicePermissions/DomainPermissionsScaffolding.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedBrowser.styles.d.ts +0 -22
- package/dist/dist-esm/react-components/src/components/styles/UnsupportedBrowser.styles.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.d.ts +0 -17
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageErrorBar.js.map +0 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.d.ts +0 -17
- 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"]}
|
package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.d.ts
ADDED
@@ -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
|
package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js
ADDED
@@ -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
|
package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map
ADDED
@@ -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 @@
|
|
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"]}
|
package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.d.ts
ADDED
@@ -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
|
package/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js
ADDED
@@ -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"]}
|