xstate-helpers
Version:
A collection of helpers for XState (with React).
24 lines (19 loc) • 902 B
JavaScript
import { useCallback } from 'react';
import { useSelector } from '@xstate/react';
/**
* @deprecated depricated in favor of useStateCan()
*/
function useIsXStateTransitionAvailable(service, event) {
if ( // Machines invoked as services will be initially deferred:
// https://github.com/statelyai/xstate/blob/5da8724bb6c4dada5d6e8cc61e36c7e2c771838b/packages/core/src/Actor.ts#L74-L94
//
// Because we don't know what a deferred service will initialize to,
// we shouldn't throw if it doesn't have a "machine" property
//
// @ts-ignore
!service.deferred && !service.machine) {
throw new Error('The service given to useIsXStateTransitionAvailable() must be a state machine instance.');
}
return useSelector(service, useCallback(state => !!service.machine && !!service.machine.transition(state, event).changed, [service, event]));
}
export { useIsXStateTransitionAvailable };