UNPKG

narraleaf-react

Version:

A React visual novel player framework

49 lines (48 loc) 1.57 kB
import { Sound } from "../../nlcore/elements/sound"; import { Src } from "../../nlcore/action/srcManager"; import { EventDispatcher } from "../../../util/data"; import { Image } from "../../nlcore/elements/displayable/image"; export type PreloadedSrcTypes = "image" | "audio" | "video"; export type PreloadedSrc<T extends PreloadedSrcTypes = any> = ({ type: "image"; src: Image; } | { type: "audio"; src: Sound; } | { type: "video"; src: string; }) & (T extends undefined ? {} : ({ type: T; } & T extends "image" ? { src: Image; } : T extends "audio" ? { src: Sound; } : T extends "video" ? { src: string; } : {})); export type PreloadedEventTypes = { "event:preloaded.add": [PreloadedSrc | string]; "event:preloaded.remove": [PreloadedSrc | string]; "event:preloaded.change": []; "event:preloaded.mount": []; "event:preloaded.ready": []; "event:preloaded.unmount": []; }; export declare class Preloaded { static EventTypes: { [K in keyof PreloadedEventTypes]: K; }; preloaded: PreloadedSrc[]; events: EventDispatcher<PreloadedEventTypes>; add<T extends PreloadedSrcTypes = PreloadedSrcTypes>(src: PreloadedSrc<T>): this; get<T extends PreloadedSrcTypes = any>(src: string): PreloadedSrc<T> | undefined; has(src: string): boolean; has(src: string[]): boolean; remove(src: string): this; remove(src: PreloadedSrc): this; remove(src: string[]): this; remove(src: PreloadedSrc[]): this; clear(): this; getSrc(src: Src | string): string | null; }