/* Copyright 2023, 2024 New Vector Ltd. Copyright 2026 Element Creations Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ import { type RemoteParticipant } from "livekit-client"; import { map } from "rxjs"; import { type Behavior } from "../Behavior"; import { type BaseScreenShareInputs, type BaseScreenShareViewModel, createBaseScreenShare, } from "./ScreenShareViewModel"; import { type ObservableScope } from "../ObservableScope"; export interface RemoteScreenShareViewModel extends BaseScreenShareViewModel { local: false; /** * Whether this screen share's video should be displayed. */ videoEnabled$: Behavior; } export interface RemoteScreenShareInputs extends BaseScreenShareInputs { participant$: Behavior; pretendToBeDisconnected$: Behavior; } export function createRemoteScreenShare( scope: ObservableScope, { pretendToBeDisconnected$, ...inputs }: RemoteScreenShareInputs, ): RemoteScreenShareViewModel { return { ...createBaseScreenShare(scope, inputs), local: false, videoEnabled$: scope.behavior( pretendToBeDisconnected$.pipe(map((disconnected) => !disconnected)), ), }; }