@snap/camera-kit
Version:
Camera Kit Web
12 lines • 925 B
JavaScript
import { defineAction, defineActions, defineState, defineStates, forActions, StateMachine, } from "@snap/state-management";
import { map, merge } from "rxjs";
import { Injectable } from "@snap/ts-inject";
const createSessionState = () => {
const actions = defineActions(defineAction("suspend")(), defineAction("resume")(), defineAction("destroy")());
const states = defineStates(defineState("inactive")(), defineState("active")(), defineState("destroyed")());
return new StateMachine(actions, states, defineState("inactive")()(), (events) => {
return merge(events.pipe(forActions("resume"), map(([a]) => states.active(a.data))), events.pipe(forActions("suspend"), map(() => states.inactive())), events.pipe(forActions("destroy"), map(() => states.destroyed())));
});
};
export const sessionStateFactory = Injectable("sessionState", () => createSessionState());
//# sourceMappingURL=sessionState.js.map