* feat(tile-view): initial implementation for tile view - Modify the classname on the app root so layout can adjust depending on the desired layout mode--vertical filmstrip, horizontal filmstrip, and tile view. - Create a button for toggling tile view. - Add a StateListenerRegistry to automatically update the selected participant and max receiver frame height on tile view toggle. - Rezise thumbnails when switching in and out of tile view. - Move the local video when switching in and out of tile view. - Update reactified pieces of thumbnails when switching in and out of tile view. - Cap the max receiver video quality in tile view based on tile size. - Use CSS to hide UI components that should not display in tile view. - Signal follow me changes. * change local video id for tests * change approach: leverage more css * squash: fix some formatting * squash: prevent pinning, hide pin border in tile view * squash: change logic for maxReceiverQuality due to sidestepping resizing logic * squash: fix typo, columns configurable, remove unused constants * squash: resize with js again * squash: use yana's math for calculating tile size
25 lines
723 B
JavaScript
25 lines
723 B
JavaScript
// @flow
|
|
|
|
import {
|
|
VIDEO_QUALITY_LEVELS,
|
|
setMaxReceiverVideoQuality
|
|
} from '../base/conference';
|
|
import { StateListenerRegistry } from '../base/redux';
|
|
import { selectParticipant } from '../large-video';
|
|
import { shouldDisplayTileView } from './functions';
|
|
|
|
/**
|
|
* StateListenerRegistry provides a reliable way of detecting changes to
|
|
* preferred layout state and dispatching additional actions.
|
|
*/
|
|
StateListenerRegistry.register(
|
|
/* selector */ state => shouldDisplayTileView(state),
|
|
/* listener */ (displayTileView, { dispatch }) => {
|
|
dispatch(selectParticipant());
|
|
|
|
if (!displayTileView) {
|
|
dispatch(setMaxReceiverVideoQuality(VIDEO_QUALITY_LEVELS.HIGH));
|
|
}
|
|
}
|
|
);
|