@wordpress/hooks
Version:
WordPress hooks library.
44 lines (38 loc) • 1.08 kB
text/typescript
/**
* 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;