UNPKG

async-states

Version:

Core of async-states

71 lines (68 loc) 2.19 kB
import { success, error } from '../enums.js'; import { isArray } from '../helpers/core.js'; import { isFunction } from '../utils.js'; function invokeChangeCallbacks(state, callbacks) { if (!callbacks) { return; } let { onError, onSuccess } = callbacks; if (onSuccess && state.status === success) { onSuccess(state); } if (onError && state.status === error) { onError(state); } } function invokeSingleChangeEvent(state, event) { if (isFunction(event)) { event(state); } else if (typeof event === "object" && event.status === state.status) { event.handler(state); } } function invokeInstanceEvents(instance, type) { let events = instance.events; if (!events || !events[type]) { return; } switch (type) { case "change": { Object.values(events[type]).forEach((registeredEvents) => { if (isArray(registeredEvents)) { registeredEvents.forEach((evt) => { invokeSingleChangeEvent(instance.actions.getState(), evt); }); } else { invokeSingleChangeEvent(instance.actions.getState(), registeredEvents); } }); return; } case "dispose": { Object.values(events[type]).forEach((registeredEvents) => { if (isArray(registeredEvents)) { registeredEvents.forEach((evt) => evt()); } else { registeredEvents(); } }); return; } case "cache-change": { Object.values(events[type]).forEach((registeredEvents) => { if (isArray(registeredEvents)) { registeredEvents.forEach((evt) => evt(instance.cache)); } else { registeredEvents(instance.cache); } }); return; } } } export { invokeChangeCallbacks, invokeInstanceEvents, invokeSingleChangeEvent }; //# sourceMappingURL=StateEvent.js.map