/* Copyright 2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ import { type Behavior } from "./Behavior"; import { type MediaViewModel } from "./media/MediaViewModel"; import { type RingingMediaViewModel } from "./media/RingingMediaViewModel"; import { type UserMediaViewModel } from "./media/UserMediaViewModel"; let nextId = 0; function createId(): string { return (nextId++).toString(); } export class GridTileViewModel { public readonly id = createId(); public constructor( public readonly media$: Behavior< UserMediaViewModel | RingingMediaViewModel >, ) {} } export class SpotlightTileViewModel { public constructor( public readonly media$: Behavior, public readonly maximised$: Behavior, ) {} } export type TileViewModel = GridTileViewModel | SpotlightTileViewModel;