import { JSX } from "preact/jsx-runtime" export interface Source { type: string, } export interface Listen extends Source { type: "listen" } export interface Address extends Source { type: "video" | "image" | "link", link: URL, pixelated?: boolean } export interface VirtualFile extends Source { name: string, height?: string | number, width?: string | number } export interface VirtualTextFile extends VirtualFile { type: "text", content: JSX.Element } export type Sources = Address | VirtualTextFile | Listen export type SourceTypes = Sources["type"] export type GetSource = { [SourceType in Sources as SourceType["type"]]: SourceType }