Files
element-call-Github/src/state/SpotlightExpandedLayout.ts
Hugh Nimmo-Smith cfea4bd50c Always deal with MediaItem at the LayoutMedia layer
That way we only convert to the view model when we do LayoutMedia => Layout
2024-11-14 12:08:17 +00:00

40 lines
951 B
TypeScript

/*
Copyright 2024 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
import {
SpotlightExpandedLayout,
SpotlightExpandedLayoutMedia,
} from "./CallViewModel";
import { TileStore } from "./TileStore";
import { GridTileViewModel } from "./TileViewModel";
/**
* Produces an expanded spotlight layout with the given media.
*/
export function spotlightExpandedLayout(
media: SpotlightExpandedLayoutMedia,
visibleTiles: Set<GridTileViewModel>,
prevTiles: TileStore,
): [SpotlightExpandedLayout, TileStore] {
const update = prevTiles.from(visibleTiles);
update.registerSpotlight(
media.spotlight.map((m) => m.vm),
true,
);
if (media.pip !== undefined) update.registerGridTile(media.pip.vm);
const tiles = update.build();
return [
{
type: media.type,
spotlight: tiles.spotlightTile!,
pip: tiles.gridTiles[0],
},
tiles,
];
}