@visactor/vrender-core
Version:
```typescript import { xxx } from '@visactor/vrender-core'; ```
42 lines (41 loc) • 1.56 kB
TypeScript
export interface StateDefinition<T extends Record<string, any> = Record<string, any>> {
name: string;
priority?: number;
patch?: Partial<T>;
resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;
declaredAffectedKeys?: string[] | Set<string>;
exclude?: string[];
suppress?: string[];
}
export type StateMergeMode = 'shallow' | 'deep';
export interface CompiledStateDefinition<T extends Record<string, any> = Record<string, any>> {
name: string;
priority: number;
rank: number;
patch?: Partial<T>;
resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;
declaredAffectedKeys?: Set<string>;
exclude: Set<string>;
suppress: Set<string>;
hasResolver: boolean;
affectedKeys: Set<string>;
}
export interface StateResolveContext<T extends Record<string, any> = Record<string, any>> {
graphic: any;
activeStates: ReadonlyArray<string>;
effectiveStates: ReadonlyArray<string>;
baseAttributes: Partial<T>;
resolvedPatch: Partial<T>;
}
export interface StateTransitionResult {
changed: boolean;
activeStates: string[];
effectiveStates: string[];
suppressed: string[];
}
export type StateDefinitionsInput<T extends Record<string, any> = Record<string, any>> = Record<string, Partial<T> | StateDefinition<T>>;
export interface IStateEngineOptions<T extends Record<string, any> = Record<string, any>> {
compiledDefinitions: Map<string, CompiledStateDefinition<T>>;
stateSort?: (a: string, b: string) => number;
mergeMode?: StateMergeMode;
}