Batch Creation
states() and events() create many refs in one call, returning a typed
record keyed by name.
states
Section titled “states”import { states } from "@mantaq/sugar";
const { basicInfo, shippingAddress, payment, submitting, success, error } = states( "basicInfo", "shippingAddress", "payment", "submitting", { name: "success", final: true }, "error",);Finality declared at creation via { name: "<id>", final: true }. No .final() call.
events
Section titled “events”import { events } from "@mantaq/sugar";
const { submitBasicInfo, submitShipping, submitPayment, back, paymentOk, paymentFail, submittingDone,} = events( "submitBasicInfo", "submitShipping", "submitPayment", "back", "paymentOk", "paymentFail", "submittingDone",);Return type
Section titled “Return type”states() returns { [K in T]: StateRef<K> }. Dot or bracket access:
const s = states("basicInfo", "payment");s.basicInfo; // StateRef<"basicInfo">s["payment"]; // StateRef<"payment">Destructure or keep the record:
const { basicInfo, payment } = states("basicInfo", "payment");With an actor
Section titled “With an actor”const { basicInfo, payment, success } = states("basicInfo", "payment", { name: "success", final: true,});const { submitBasicInfo, submitPayment } = events("submitBasicInfo", "submitPayment");
const checkout = new Actor({ inputs: [submitBasicInfo, submitPayment], states: [basicInfo, payment, success], initial: basicInfo, setup: (m) => { m.on(basicInfo, submitBasicInfo, () => ({ state: payment })); m.on(payment, submitPayment, () => ({ state: success })); },});When to use
Section titled “When to use”Many states/events: two calls replace thirteen. Few refs: the plain
state("basicInfo")() form stays clearer.