import {sourceIcon,observationSourceStatusLabel} from "../../../../packages/spatial-ui/src/ObservationSourcePicker"; export {ObservationSourcePicker,observationSourceStatusLabel} from "../../../../packages/spatial-ui/src/ObservationSourcePicker"; import { Icon } from "@nodedc/ui-react"; import type { ObservationSourceDescriptor, } from "../core/runtime/contracts"; import { MseFmp4WebSocketPlayer } from "./MseFmp4WebSocketPlayer"; import { RecordedFmp4Player, type RecordedObservationPlayback, } from "./RecordedFmp4Player"; import type { RecordedAdmissionPhase, RecordedCameraAdmissionState, } from "../core/observation/recordedSessionAdmission"; import { liveCameraPlaybackAuthorityIdentity } from "../core/observation/liveCameraRecovery"; export function ObservationMedia({ source, playback, prepareRecorded = true, recordedSessionGate = "ready", recordedAdmissionKey = null, onRecordedAdmissionChange, }: { source: ObservationSourceDescriptor; playback?: RecordedObservationPlayback | null; prepareRecorded?: boolean; recordedSessionGate?: RecordedAdmissionPhase; recordedAdmissionKey?: string | null; onRecordedAdmissionChange?: ( sourceId: string, state: RecordedCameraAdmissionState, ) => void; }) { const sourceSelected = source.activation ? source.activation.selected : true; const deliveryActive = Boolean(source.delivery && sourceSelected); if ( deliveryActive && source.delivery?.kind === "mse-fmp4-websocket" && source.modality === "video" ) { return ( ); } if ( deliveryActive && source.delivery?.kind === "recorded-fmp4-manifest" && source.modality === "video" ) { if (!prepareRecorded) { return (
); } return ( onRecordedAdmissionChange?.(source.id, state)} /> ); } if (deliveryActive && source.delivery?.kind === "video-url" && source.modality === "video") { return (