@zedux/atoms
Version:
A Molecular State Engine for React
65 lines (63 loc) • 1.73 kB
text/typescript
import { ActionChain, actionFactory } from '@zedux/core'
import { Ecosystem } from '../classes/Ecosystem'
import { SelectorCache } from '../classes/Selectors'
import {
LifecycleStatus,
AnyAtomInstance,
DependentEdge,
EvaluationReason,
AnyAtomTemplate,
} from '../types/index'
export const pluginActions = {
ecosystemWiped: actionFactory<{ ecosystem: Ecosystem }, 'ecosystemWiped'>(
'ecosystemWiped'
),
edgeCreated: actionFactory<
{
dependency: AnyAtomInstance | SelectorCache
// string if `edge.flags & External`:
dependent: AnyAtomInstance | SelectorCache | string
edge: DependentEdge
},
'edgeCreated'
>('edgeCreated'),
edgeRemoved: actionFactory<
{
dependency: AnyAtomInstance | SelectorCache
dependent: AnyAtomInstance | SelectorCache | string // string if edge is External
edge: DependentEdge
},
'edgeRemoved'
>('edgeRemoved'),
evaluationFinished: actionFactory<
{
node: AnyAtomInstance | SelectorCache
time: number
},
'evaluationFinished'
>('evaluationFinished'),
instanceReused: actionFactory<{
instance: AnyAtomInstance
template: AnyAtomTemplate
}>('instanceReused'),
// either cache or instance will always be defined, depending on the node type
stateChanged: actionFactory<
{
action?: ActionChain
cache?: SelectorCache
instance?: AnyAtomInstance
newState: any
oldState: any
reasons: EvaluationReason[]
},
'stateChanged'
>('stateChanged'),
statusChanged: actionFactory<
{
newStatus: LifecycleStatus
node: AnyAtomInstance | SelectorCache
oldStatus: LifecycleStatus
},
'statusChanged'
>('statusChanged'),
}