UNPKG

repond

Version:

respond to items state in realtime

21 lines (20 loc) 2.77 kB
import { RepondTypes } from "../declarations"; import { EffectDef } from "../types"; import { MakeEffect } from "./effects"; export type ParamEffectsGroup<K_EffectName extends string, T_Params extends any> = { defaultParams: T_Params; makeEffects: (makeEffect: MakeEffect, params: T_Params) => Record<K_EffectName, EffectDef>; }; export declare function makeParamEffects<K_EffectName extends string, T_ParamKey extends string, T_Params extends Record<T_ParamKey, any>>(defaultParams: T_Params, effectsToAdd: (makeEffect: MakeEffect, params: T_Params) => Record<K_EffectName, EffectDef>): ParamEffectsGroup<K_EffectName, T_Params>; export declare function initParamEffectGroups<T extends Record<string, ParamEffectsGroup<any, any>>>(groups: T): T; type RemoveParamEffectsSuffix<T extends string> = T extends `${infer Prefix}ParamEffects` ? Prefix : T; export type RefinedParamEffectGroups = { [K in keyof RepondTypes["ParamEffectGroups"] as RemoveParamEffectsSuffix<K>]: RepondTypes["ParamEffectGroups"][K]; }; export declare function startParamEffect<K_GroupName extends keyof RefinedParamEffectGroups & string, K_EffectName extends keyof ReturnType<RefinedParamEffectGroups[K_GroupName]["makeEffects"]> & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, effectName: K_EffectName, params: T_Params): void; export declare function stopParamEffect<K_GroupName extends keyof RefinedParamEffectGroups & string, K_EffectName extends keyof ReturnType<RefinedParamEffectGroups[K_GroupName]["makeEffects"]> & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, effectName: K_EffectName, params: T_Params): void; export declare function startParamEffectsGroup<K_GroupName extends keyof RefinedParamEffectGroups & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, params: T_Params): void; export declare function stopParamEffectsGroup<K_GroupName extends keyof RefinedParamEffectGroups & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, params: T_Params): void; export declare function runParamEffect<K_GroupName extends keyof RefinedParamEffectGroups & string, K_EffectName extends keyof ReturnType<RefinedParamEffectGroups[K_GroupName]["makeEffects"]> & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, effectName: K_EffectName, params: T_Params): void; export declare function runParamEffectsGroup<K_GroupName extends keyof RefinedParamEffectGroups & string, T_Params extends RefinedParamEffectGroups[K_GroupName]["defaultParams"]>(groupName: K_GroupName, params: T_Params): void; export {};