narraleaf-react
Version:
A React visual novel player framework
49 lines (48 loc) • 1.57 kB
TypeScript
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;
}