@wordpress/commands
Version:
Handles the commands menu.
109 lines (99 loc) • 2.27 kB
JavaScript
/** @typedef {import('@wordpress/keycodes').WPKeycodeModifier} WPKeycodeModifier */
/**
* Configuration of a registered keyboard shortcut.
*
* @typedef {Object} WPCommandConfig
*
* @property {string} name Command name.
* @property {string} label Command label.
* @property {string=} searchLabel Command search label.
* @property {string=} context Command context.
* @property {JSX.Element} icon Command icon.
* @property {Function} callback Command callback.
* @property {boolean} disabled Whether to disable the command.
*/
/**
* @typedef {(search: string) => WPCommandConfig[]} WPCommandLoaderHook hoo
*/
/**
* Command loader config.
*
* @typedef {Object} WPCommandLoaderConfig
*
* @property {string} name Command loader name.
* @property {string=} context Command loader context.
* @property {WPCommandLoaderHook} hook Command loader hook.
* @property {boolean} disabled Whether to disable the command loader.
*/
/**
* Returns an action object used to register a new command.
*
* @param {WPCommandConfig} config Command config.
*
* @return {Object} action.
*/
export function registerCommand( config ) {
return {
type: 'REGISTER_COMMAND',
...config,
};
}
/**
* Returns an action object used to unregister a command.
*
* @param {string} name Command name.
*
* @return {Object} action.
*/
export function unregisterCommand( name ) {
return {
type: 'UNREGISTER_COMMAND',
name,
};
}
/**
* Register command loader.
*
* @param {WPCommandLoaderConfig} config Command loader config.
*
* @return {Object} action.
*/
export function registerCommandLoader( config ) {
return {
type: 'REGISTER_COMMAND_LOADER',
...config,
};
}
/**
* Unregister command loader hook.
*
* @param {string} name Command loader name.
*
* @return {Object} action.
*/
export function unregisterCommandLoader( name ) {
return {
type: 'UNREGISTER_COMMAND_LOADER',
name,
};
}
/**
* Opens the command palette.
*
* @return {Object} action.
*/
export function open() {
return {
type: 'OPEN',
};
}
/**
* Closes the command palette.
*
* @return {Object} action.
*/
export function close() {
return {
type: 'CLOSE',
};
}