UNPKG

@wordpress/hooks

Version:
44 lines (38 loc) 1.08 kB
/** * Internal dependencies */ import type { Hooks, StoreKey } from './types'; /** * Returns whether a hook is currently being executed. * */ export type DoingHook = ( /** * The name of the hook to check for. * If omitted, will check for any hook being executed. */ hookName?: string ) => boolean; /** * Returns a function which, when invoked, will return whether a hook is * currently being executed. * * @param hooks Hooks instance. * @param storeKey * * @return Function that returns whether a hook is currently * being executed. */ function createDoingHook( hooks: Hooks, storeKey: StoreKey ): DoingHook { return function doingHook( hookName ) { const hooksStore = hooks[ storeKey ]; // If the hookName was not passed, check for any current hook. if ( 'undefined' === typeof hookName ) { return hooksStore.__current.size > 0; } // Find if the `hookName` hook is in `__current`. return Array.from( hooksStore.__current ).some( ( hook ) => hook.name === hookName ); }; } export default createDoingHook;