narraleaf-react
Version:
A React visual novel player framework
69 lines (68 loc) • 2.89 kB
TypeScript
import { Choice } from "../nlcore/elements/menu";
import { Image } from "../nlcore/elements/displayable/image";
import { EventDispatcher } from "../../util/data";
import { ImageEvents } from "./elements/image/Image";
import { Transform } from "../nlcore/elements/transform/transform";
import { Transition } from "../nlcore/elements/transition/transition";
import { Layer } from "../nlcore/elements/layer";
import { Text } from "../nlcore/elements/displayable/text";
import { Displayable } from "../nlcore/elements/displayable/displayable";
import { Scene } from "../nlcore/elements/scene";
import { Sound } from "../nlcore/elements/sound";
import { Video } from "../nlcore/elements/video";
import { Timeline } from "./Tasks";
export * from "./elements/type";
export type Chosen = Choice & {
evaluated: string;
};
export declare enum ExposedStateType {
image = "narraleaf:image",
text = "narraleaf:text",
layer = "narraleaf:layer",
scene = "narraleaf:scene",
video = "narraleaf:video"
}
export type ExposedState = {
[ExposedStateType.image]: {
createWearable: (wearable: Image) => void;
disposeWearable: (wearable: Image) => void;
events: EventDispatcher<ImageEvents>;
initDisplayable: (onResolve: () => void) => Timeline;
applyTransform: (transform: Transform, onResolve: () => void) => Timeline;
applyTransition: (transition: Transition<any>, onResolve: () => void) => Timeline;
updateStyleSync: () => void;
};
[ExposedStateType.text]: {
initDisplayable: (onResolve: () => void) => Timeline;
applyTransform: (transform: Transform, onResolve: () => void) => Timeline;
applyTransition: (transition: Transition<any>, onResolve: () => void) => Timeline;
updateStyleSync: () => void;
flush: () => void;
};
[ExposedStateType.layer]: {
initDisplayable: (onResolve: () => void) => Timeline;
applyTransform: (transform: Transform, onResolve: () => void) => Timeline;
applyTransition: (transition: Transition<any>, onResolve: () => void) => Timeline;
updateStyleSync: () => void;
};
[ExposedStateType.scene]: {
setBackgroundMusic: (music: Sound | null, fade: number) => Promise<void>;
};
[ExposedStateType.video]: {
show: () => void;
hide: () => void;
play: () => Promise<void>;
pause: () => void;
resume: () => Promise<void>;
stop: () => void;
seek: (time: number) => void;
};
};
export type ExposedKeys = {
[ExposedStateType.image]: Image | Displayable<any, any>;
[ExposedStateType.text]: Text | Displayable<any, any>;
[ExposedStateType.layer]: Layer | Displayable<any, any>;
[ExposedStateType.scene]: Scene;
[ExposedStateType.video]: Video;
};
export type { INotificationsProps } from "./elements/notification/type";