@farris/devkit-vue
Version:
67 lines (66 loc) • 1.43 kB
TypeScript
import { ViewModel } from '../viewmodel/index';
import { SmState, SmRenderState, SmRender } from './types';
import { StateMachineChange } from './state-machine-change';
import { StateMachineContext } from './state-machine-context';
/**
* 状态机
*/
export declare class StateMachine {
[key: string]: any;
/**
* 状态机上下文
*/
protected context: StateMachineContext;
/**
* ViewModel上下文
*/
protected viewModel: ViewModel;
/**
* 当前状态
*/
currentState: string;
/**
* 状态字典
*/
states: Map<string, SmState>;
/**
* 渲染状态字典
*/
renderStates: Map<string, SmRenderState>;
/**
* 渲染器字典
*/
renders: Map<string, SmRender>;
/**
* 变更副作用管理器
*/
private effectManager;
/**
* 构造函数
*/
constructor(viewModel: ViewModel);
/**
* 初始化状态机
*/
init(): void;
/**
* 设置初始状态
*/
setCurrentState(newState: string): void;
/**
* 状态迁移
*/
transitTo(newState: string): void;
/**
* 渲染全部可视化状态
*/
render(): void;
/**
* 触发变更
*/
triggerChange(change: StateMachineChange): void;
/**
* 监听变更
*/
watchChange(changeEffectFunc: (change: StateMachineChange) => void): () => void;
}