@visactor/vrender-animate
Version:
This module provides a graph-based animation system for VRender.
108 lines (106 loc) • 5.03 kB
JavaScript
export class AnimationTransitionRegistry {
constructor() {
this.transitions = new Map, this.registerDefaultTransitions();
}
static getInstance() {
return AnimationTransitionRegistry.instance || (AnimationTransitionRegistry.instance = new AnimationTransitionRegistry),
AnimationTransitionRegistry.instance;
}
registerDefaultTransitions() {
this.registerTransition("appear", "*", (() => ({
allowTransition: !0,
stopOriginalTransition: !1
}))), this.registerTransition("appear", "appear", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("appear", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("appear", "exit", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("normal", "*", (() => ({
allowTransition: !0,
stopOriginalTransition: !1
}))), this.registerTransition("normal", "normal", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("normal", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("normal", "exit", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("exit", "*", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("exit", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("exit", "enter", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("exit", "exit", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("enter", "*", (() => ({
allowTransition: !0,
stopOriginalTransition: !1
}))), this.registerTransition("enter", "enter", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("enter", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("enter", "exit", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("disappear", "*", (() => ({
allowTransition: !1,
stopOriginalTransition: !1
}))), this.registerTransition("disappear", "appear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("update", "*", (() => ({
allowTransition: !0,
stopOriginalTransition: !1
}))), this.registerTransition("update", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("update", "exit", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("state", "*", (() => ({
allowTransition: !0,
stopOriginalTransition: !1
}))), this.registerTransition("state", "state", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("state", "disappear", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
}))), this.registerTransition("state", "exit", (() => ({
allowTransition: !0,
stopOriginalTransition: !0
})));
}
isTransitionAllowed(fromState, toState, graphic) {
var _a, _b, _c, _d;
let func = null === (_a = this.transitions.get(fromState)) || void 0 === _a ? void 0 : _a.get(toState);
return func ? func(graphic, fromState) : (func = null === (_b = this.transitions.get(fromState)) || void 0 === _b ? void 0 : _b.get("*"),
func ? func(graphic, fromState) : (func = null === (_c = this.transitions.get("*")) || void 0 === _c ? void 0 : _c.get(toState),
func ? func(graphic, fromState) : (func = null === (_d = this.transitions.get("*")) || void 0 === _d ? void 0 : _d.get("*"),
func ? func(graphic, fromState) : {
allowTransition: !0,
stopOriginalTransition: !0
})));
}
registerTransition(fromState, toState, transition) {
let fromStateMap = this.transitions.get(fromState);
fromStateMap || (fromStateMap = new Map, this.transitions.set(fromState, fromStateMap)),
fromStateMap.set(toState, transition);
}
}
const transitionRegistry = AnimationTransitionRegistry.getInstance();
export { transitionRegistry };
//# sourceMappingURL=animation-states-registry.js.map