UNPKG

narraleaf-react

Version:

A React visual novel player framework

38 lines (37 loc) 1.84 kB
import { EmptyObject } from "../game/nlcore/elements/transition/type"; type ConfigHandler<T, U> = (config: T) => U; type ConfigHandlersDataType<T extends Record<string, any>> = { [K in keyof T]?: any; }; export type MergeConfig<Raw extends Record<string, any>, Handlers extends ConfigHandlersDataType<Raw> = Record<string, any>> = { [K in keyof Raw]: K extends keyof Handlers ? Handlers[K] : Raw[K]; }; export type ConfigHandlers<Raw extends Record<string, any>, Handlers extends ConfigHandlersDataType<Raw>> = { [K in keyof Raw]?: ConfigHandler<Raw[K], Handlers[K]>; }; export declare class ConfigConstructor<Raw extends Record<string, any>, Handlers extends ConfigHandlersDataType<Raw> = EmptyObject> { private defaultConfig; private readonly handlers; constructor(defaultConfig: Raw, handlers?: ConfigHandlers<Raw, Handlers>); create(config?: Partial<Raw>): Config<Raw, Handlers>; copy(): ConfigConstructor<Raw, Handlers>; keys(): (keyof Raw)[]; getDefaultConfig(): Raw; private mergeWithDefaultConfig; private mergeValue; private isPlainObject; private applyHandler; } export declare class Config<Raw extends Record<string, any>, Handlers extends ConfigHandlersDataType<Raw> = EmptyObject> { private config; constructor(config: MergeConfig<Raw, Handlers>); get(): MergeConfig<Raw, Handlers>; copy(): Config<Raw, Handlers>; join<T extends Record<string, any>>(config: T | Config<T, any>): Config<Omit<Raw, keyof T> & T, Handlers>; extract<T extends Extract<keyof MergeConfig<Raw, Handlers>, string>>(keys: T[]): [ picked: Config<Pick<MergeConfig<Raw, Handlers>, T>, Handlers>, rest: Config<Omit<MergeConfig<Raw, Handlers>, T>, Handlers> ]; assign(config: Partial<MergeConfig<Raw, Handlers>>): Config<Raw, Handlers>; } export {};