@wordpress/commands 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/command-menu.js +4 -4
- package/build/components/command-menu.js.map +1 -1
- package/build/hooks/use-command.js +3 -3
- package/build/hooks/use-command.js.map +1 -1
- package/build-module/components/command-menu.js +4 -4
- package/build-module/components/command-menu.js.map +1 -1
- package/build-module/hooks/use-command.js +3 -3
- package/build-module/hooks/use-command.js.map +1 -1
- package/package.json +9 -9
- package/src/components/command-menu.js +4 -4
- package/src/components/style.scss +2 -2
- package/src/hooks/use-command.js +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -88,16 +88,16 @@ function CommandMenuLoaderWrapper({
|
|
|
88
88
|
// the CommandMenuLoaderWrapper component need to be
|
|
89
89
|
// remounted on each hook prop change
|
|
90
90
|
// We use the key state to make sure we do that properly.
|
|
91
|
-
const
|
|
91
|
+
const currentLoaderRef = (0, _element.useRef)(hook);
|
|
92
92
|
const [key, setKey] = (0, _element.useState)(0);
|
|
93
93
|
(0, _element.useEffect)(() => {
|
|
94
|
-
if (
|
|
95
|
-
|
|
94
|
+
if (currentLoaderRef.current !== hook) {
|
|
95
|
+
currentLoaderRef.current = hook;
|
|
96
96
|
setKey(prevKey => prevKey + 1);
|
|
97
97
|
}
|
|
98
98
|
}, [hook]);
|
|
99
99
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CommandMenuLoader, {
|
|
100
|
-
hook:
|
|
100
|
+
hook: currentLoaderRef.current,
|
|
101
101
|
search: search,
|
|
102
102
|
setLoader: setLoader,
|
|
103
103
|
close: close
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cmdk","require","_clsx","_interopRequireDefault","_data","_element","_i18n","_components","_keyboardShortcuts","_icons","_store","_jsxRuntime","inputLabel","__","CommandMenuLoader","name","search","hook","setLoader","close","_hook","isLoading","commands","useEffect","length","jsx","Fragment","children","map","command","_command$searchLabel","Command","Item","value","searchLabel","label","onSelect","callback","id","jsxs","__experimentalHStack","alignment","className","clsx","icon","Icon","TextHighlight","text","highlight","CommandMenuLoaderWrapper","currentLoader","useRef","key","setKey","useState","current","prevKey","CommandMenuGroup","isContextual","loaders","useSelect","select","getCommands","getCommandLoaders","commandsStore","Group","_command$searchLabel2","loader","CommandInput","isOpen","setSearch","commandMenuInput","_value","useCommandState","state","selectedItemId","useMemo","item","document","querySelector","getAttribute","focus","Input","ref","onValueChange","placeholder","CommandMenu","registerShortcut","useDispatch","keyboardShortcutsStore","open","setLoaders","category","description","keyCombination","modifier","character","useShortcut","event","defaultPrevented","preventDefault","bindGlobal","useCallback","closeAndReset","onKeyDown","nativeEvent","isComposing","keyCode","Object","values","some","Boolean","Modal","overlayClassName","onRequestClose","__experimentalHideHeader","contentLabel","inputIcon","List","Empty"],"sources":["@wordpress/commands/src/components/command-menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Command, useCommandState } from 'cmdk';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tTextHighlight,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tstore as keyboardShortcutsStore,\n\tuseShortcut,\n} from '@wordpress/keyboard-shortcuts';\nimport { Icon, search as inputIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\nconst inputLabel = __( 'Search commands and settings' );\n\nfunction CommandMenuLoader( { name, search, hook, setLoader, close } ) {\n\tconst { isLoading, commands = [] } = hook( { search } ) ?? {};\n\tuseEffect( () => {\n\t\tsetLoader( name, isLoading );\n\t}, [ setLoader, name, isLoading ] );\n\n\tif ( ! commands.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nexport function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {\n\t// The \"hook\" prop is actually a custom React hook\n\t// so to avoid breaking the rules of hooks\n\t// the CommandMenuLoaderWrapper component need to be\n\t// remounted on each hook prop change\n\t// We use the key state to make sure we do that properly.\n\tconst currentLoader = useRef( hook );\n\tconst [ key, setKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tif ( currentLoader.current !== hook ) {\n\t\t\tcurrentLoader.current = hook;\n\t\t\tsetKey( ( prevKey ) => prevKey + 1 );\n\t\t}\n\t}, [ hook ] );\n\n\treturn (\n\t\t<CommandMenuLoader\n\t\t\tkey={ key }\n\t\t\thook={ currentLoader.current }\n\t\t\tsearch={ search }\n\t\t\tsetLoader={ setLoader }\n\t\t\tclose={ close }\n\t\t/>\n\t);\n}\n\nexport function CommandMenuGroup( { isContextual, search, setLoader, close } ) {\n\tconst { commands, loaders } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCommands, getCommandLoaders } = select( commandsStore );\n\t\t\treturn {\n\t\t\t\tcommands: getCommands( isContextual ),\n\t\t\t\tloaders: getCommandLoaders( isContextual ),\n\t\t\t};\n\t\t},\n\t\t[ isContextual ]\n\t);\n\n\tif ( ! commands.length && ! loaders.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Command.Group>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t\t{ loaders.map( ( loader ) => (\n\t\t\t\t<CommandMenuLoaderWrapper\n\t\t\t\t\tkey={ loader.name }\n\t\t\t\t\thook={ loader.hook }\n\t\t\t\t\tsearch={ search }\n\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\tclose={ close }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Command.Group>\n\t);\n}\n\nfunction CommandInput( { isOpen, search, setSearch } ) {\n\tconst commandMenuInput = useRef();\n\tconst _value = useCommandState( ( state ) => state.value );\n\tconst selectedItemId = useMemo( () => {\n\t\tconst item = document.querySelector(\n\t\t\t`[cmdk-item=\"\"][data-value=\"${ _value }\"]`\n\t\t);\n\t\treturn item?.getAttribute( 'id' );\n\t}, [ _value ] );\n\tuseEffect( () => {\n\t\t// Focus the command palette input when mounting the modal.\n\t\tif ( isOpen ) {\n\t\t\tcommandMenuInput.current.focus();\n\t\t}\n\t}, [ isOpen ] );\n\treturn (\n\t\t<Command.Input\n\t\t\tref={ commandMenuInput }\n\t\t\tvalue={ search }\n\t\t\tonValueChange={ setSearch }\n\t\t\tplaceholder={ inputLabel }\n\t\t\taria-activedescendant={ selectedItemId }\n\t\t\ticon={ search }\n\t\t/>\n\t);\n}\n\n/**\n * @ignore\n */\nexport function CommandMenu() {\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst isOpen = useSelect(\n\t\t( select ) => select( commandsStore ).isOpen(),\n\t\t[]\n\t);\n\tconst { open, close } = useDispatch( commandsStore );\n\tconst [ loaders, setLoaders ] = useState( {} );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/commands',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the command palette.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'k',\n\t\t\t},\n\t\t} );\n\t}, [ registerShortcut ] );\n\n\tuseShortcut(\n\t\t'core/commands',\n\t\t/** @type {import('react').KeyboardEventHandler} */\n\t\t( event ) => {\n\t\t\t// Bails to avoid obscuring the effect of the preceding handler(s).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tif ( isOpen ) {\n\t\t\t\tclose();\n\t\t\t} else {\n\t\t\t\topen();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tbindGlobal: true,\n\t\t}\n\t);\n\n\tconst setLoader = useCallback(\n\t\t( name, value ) =>\n\t\t\tsetLoaders( ( current ) => ( {\n\t\t\t\t...current,\n\t\t\t\t[ name ]: value,\n\t\t\t} ) ),\n\t\t[]\n\t);\n\tconst closeAndReset = () => {\n\t\tsetSearch( '' );\n\t\tclose();\n\t};\n\n\tif ( ! isOpen ) {\n\t\treturn false;\n\t}\n\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\t// Ignore keydowns from IMEs\n\t\t\tevent.nativeEvent.isComposing ||\n\t\t\t// Workaround for Mac Safari where the final Enter/Backspace of an IME composition\n\t\t\t// is `isComposing=false`, even though it's technically still part of the composition.\n\t\t\t// These can only be detected by keyCode.\n\t\t\tevent.keyCode === 229\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst isLoading = Object.values( loaders ).some( Boolean );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"commands-command-menu\"\n\t\t\toverlayClassName=\"commands-command-menu__overlay\"\n\t\t\tonRequestClose={ closeAndReset }\n\t\t\t__experimentalHideHeader\n\t\t\tcontentLabel={ __( 'Command palette' ) }\n\t\t>\n\t\t\t<div className=\"commands-command-menu__container\">\n\t\t\t\t<Command label={ inputLabel } onKeyDown={ onKeyDown }>\n\t\t\t\t\t<div className=\"commands-command-menu__header\">\n\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetSearch={ setSearch }\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Icon icon={ inputIcon } />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Command.List label={ __( 'Command suggestions' ) }>\n\t\t\t\t\t\t{ search && ! isLoading && (\n\t\t\t\t\t\t\t<Command.Empty>\n\t\t\t\t\t\t\t\t{ __( 'No results found.' ) }\n\t\t\t\t\t\t\t</Command.Empty>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\tisContextual\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Command.List>\n\t\t\t\t</Command>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cmdk","require","_clsx","_interopRequireDefault","_data","_element","_i18n","_components","_keyboardShortcuts","_icons","_store","_jsxRuntime","inputLabel","__","CommandMenuLoader","name","search","hook","setLoader","close","_hook","isLoading","commands","useEffect","length","jsx","Fragment","children","map","command","_command$searchLabel","Command","Item","value","searchLabel","label","onSelect","callback","id","jsxs","__experimentalHStack","alignment","className","clsx","icon","Icon","TextHighlight","text","highlight","CommandMenuLoaderWrapper","currentLoaderRef","useRef","key","setKey","useState","current","prevKey","CommandMenuGroup","isContextual","loaders","useSelect","select","getCommands","getCommandLoaders","commandsStore","Group","_command$searchLabel2","loader","CommandInput","isOpen","setSearch","commandMenuInput","_value","useCommandState","state","selectedItemId","useMemo","item","document","querySelector","getAttribute","focus","Input","ref","onValueChange","placeholder","CommandMenu","registerShortcut","useDispatch","keyboardShortcutsStore","open","setLoaders","category","description","keyCombination","modifier","character","useShortcut","event","defaultPrevented","preventDefault","bindGlobal","useCallback","closeAndReset","onKeyDown","nativeEvent","isComposing","keyCode","Object","values","some","Boolean","Modal","overlayClassName","onRequestClose","__experimentalHideHeader","contentLabel","inputIcon","List","Empty"],"sources":["@wordpress/commands/src/components/command-menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Command, useCommandState } from 'cmdk';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tTextHighlight,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tstore as keyboardShortcutsStore,\n\tuseShortcut,\n} from '@wordpress/keyboard-shortcuts';\nimport { Icon, search as inputIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\nconst inputLabel = __( 'Search commands and settings' );\n\nfunction CommandMenuLoader( { name, search, hook, setLoader, close } ) {\n\tconst { isLoading, commands = [] } = hook( { search } ) ?? {};\n\tuseEffect( () => {\n\t\tsetLoader( name, isLoading );\n\t}, [ setLoader, name, isLoading ] );\n\n\tif ( ! commands.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nexport function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {\n\t// The \"hook\" prop is actually a custom React hook\n\t// so to avoid breaking the rules of hooks\n\t// the CommandMenuLoaderWrapper component need to be\n\t// remounted on each hook prop change\n\t// We use the key state to make sure we do that properly.\n\tconst currentLoaderRef = useRef( hook );\n\tconst [ key, setKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tif ( currentLoaderRef.current !== hook ) {\n\t\t\tcurrentLoaderRef.current = hook;\n\t\t\tsetKey( ( prevKey ) => prevKey + 1 );\n\t\t}\n\t}, [ hook ] );\n\n\treturn (\n\t\t<CommandMenuLoader\n\t\t\tkey={ key }\n\t\t\thook={ currentLoaderRef.current }\n\t\t\tsearch={ search }\n\t\t\tsetLoader={ setLoader }\n\t\t\tclose={ close }\n\t\t/>\n\t);\n}\n\nexport function CommandMenuGroup( { isContextual, search, setLoader, close } ) {\n\tconst { commands, loaders } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCommands, getCommandLoaders } = select( commandsStore );\n\t\t\treturn {\n\t\t\t\tcommands: getCommands( isContextual ),\n\t\t\t\tloaders: getCommandLoaders( isContextual ),\n\t\t\t};\n\t\t},\n\t\t[ isContextual ]\n\t);\n\n\tif ( ! commands.length && ! loaders.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Command.Group>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t\t{ loaders.map( ( loader ) => (\n\t\t\t\t<CommandMenuLoaderWrapper\n\t\t\t\t\tkey={ loader.name }\n\t\t\t\t\thook={ loader.hook }\n\t\t\t\t\tsearch={ search }\n\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\tclose={ close }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Command.Group>\n\t);\n}\n\nfunction CommandInput( { isOpen, search, setSearch } ) {\n\tconst commandMenuInput = useRef();\n\tconst _value = useCommandState( ( state ) => state.value );\n\tconst selectedItemId = useMemo( () => {\n\t\tconst item = document.querySelector(\n\t\t\t`[cmdk-item=\"\"][data-value=\"${ _value }\"]`\n\t\t);\n\t\treturn item?.getAttribute( 'id' );\n\t}, [ _value ] );\n\tuseEffect( () => {\n\t\t// Focus the command palette input when mounting the modal.\n\t\tif ( isOpen ) {\n\t\t\tcommandMenuInput.current.focus();\n\t\t}\n\t}, [ isOpen ] );\n\treturn (\n\t\t<Command.Input\n\t\t\tref={ commandMenuInput }\n\t\t\tvalue={ search }\n\t\t\tonValueChange={ setSearch }\n\t\t\tplaceholder={ inputLabel }\n\t\t\taria-activedescendant={ selectedItemId }\n\t\t\ticon={ search }\n\t\t/>\n\t);\n}\n\n/**\n * @ignore\n */\nexport function CommandMenu() {\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst isOpen = useSelect(\n\t\t( select ) => select( commandsStore ).isOpen(),\n\t\t[]\n\t);\n\tconst { open, close } = useDispatch( commandsStore );\n\tconst [ loaders, setLoaders ] = useState( {} );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/commands',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the command palette.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'k',\n\t\t\t},\n\t\t} );\n\t}, [ registerShortcut ] );\n\n\tuseShortcut(\n\t\t'core/commands',\n\t\t/** @type {import('react').KeyboardEventHandler} */\n\t\t( event ) => {\n\t\t\t// Bails to avoid obscuring the effect of the preceding handler(s).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tif ( isOpen ) {\n\t\t\t\tclose();\n\t\t\t} else {\n\t\t\t\topen();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tbindGlobal: true,\n\t\t}\n\t);\n\n\tconst setLoader = useCallback(\n\t\t( name, value ) =>\n\t\t\tsetLoaders( ( current ) => ( {\n\t\t\t\t...current,\n\t\t\t\t[ name ]: value,\n\t\t\t} ) ),\n\t\t[]\n\t);\n\tconst closeAndReset = () => {\n\t\tsetSearch( '' );\n\t\tclose();\n\t};\n\n\tif ( ! isOpen ) {\n\t\treturn false;\n\t}\n\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\t// Ignore keydowns from IMEs\n\t\t\tevent.nativeEvent.isComposing ||\n\t\t\t// Workaround for Mac Safari where the final Enter/Backspace of an IME composition\n\t\t\t// is `isComposing=false`, even though it's technically still part of the composition.\n\t\t\t// These can only be detected by keyCode.\n\t\t\tevent.keyCode === 229\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst isLoading = Object.values( loaders ).some( Boolean );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"commands-command-menu\"\n\t\t\toverlayClassName=\"commands-command-menu__overlay\"\n\t\t\tonRequestClose={ closeAndReset }\n\t\t\t__experimentalHideHeader\n\t\t\tcontentLabel={ __( 'Command palette' ) }\n\t\t>\n\t\t\t<div className=\"commands-command-menu__container\">\n\t\t\t\t<Command label={ inputLabel } onKeyDown={ onKeyDown }>\n\t\t\t\t\t<div className=\"commands-command-menu__header\">\n\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetSearch={ setSearch }\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Icon icon={ inputIcon } />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Command.List label={ __( 'Command suggestions' ) }>\n\t\t\t\t\t\t{ search && ! isLoading && (\n\t\t\t\t\t\t\t<Command.Empty>\n\t\t\t\t\t\t\t\t{ __( 'No results found.' ) }\n\t\t\t\t\t\t\t</Command.Empty>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\tisContextual\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Command.List>\n\t\t\t\t</Command>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,9 +41,9 @@ function useCommand(command) {
|
|
|
41
41
|
registerCommand,
|
|
42
42
|
unregisterCommand
|
|
43
43
|
} = (0, _data.useDispatch)(_store.store);
|
|
44
|
-
const
|
|
44
|
+
const currentCallbackRef = (0, _element.useRef)(command.callback);
|
|
45
45
|
(0, _element.useEffect)(() => {
|
|
46
|
-
|
|
46
|
+
currentCallbackRef.current = command.callback;
|
|
47
47
|
}, [command.callback]);
|
|
48
48
|
(0, _element.useEffect)(() => {
|
|
49
49
|
if (command.disabled) {
|
|
@@ -55,7 +55,7 @@ function useCommand(command) {
|
|
|
55
55
|
label: command.label,
|
|
56
56
|
searchLabel: command.searchLabel,
|
|
57
57
|
icon: command.icon,
|
|
58
|
-
callback: (...args) =>
|
|
58
|
+
callback: (...args) => currentCallbackRef.current(...args)
|
|
59
59
|
});
|
|
60
60
|
return () => {
|
|
61
61
|
unregisterCommand(command.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_data","_store","useCommand","command","registerCommand","unregisterCommand","useDispatch","commandsStore","
|
|
1
|
+
{"version":3,"names":["_element","require","_data","_store","useCommand","command","registerCommand","unregisterCommand","useDispatch","commandsStore","currentCallbackRef","useRef","callback","useEffect","current","disabled","name","context","label","searchLabel","icon","args"],"sources":["@wordpress/commands/src/hooks/use-command.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\n/**\n * Attach a command to the command palette. Used for static commands.\n *\n * @param {import('../store/actions').WPCommandConfig} command command config.\n *\n * @example\n * ```js\n * import { useCommand } from '@wordpress/commands';\n * import { plus } from '@wordpress/icons';\n *\n * useCommand( {\n * name: 'myplugin/my-command-name',\n * label: __( 'Add new post' ),\n *\t icon: plus,\n * callback: ({ close }) => {\n * document.location.href = 'post-new.php';\n * close();\n * },\n * } );\n * ```\n */\nexport default function useCommand( command ) {\n\tconst { registerCommand, unregisterCommand } = useDispatch( commandsStore );\n\tconst currentCallbackRef = useRef( command.callback );\n\tuseEffect( () => {\n\t\tcurrentCallbackRef.current = command.callback;\n\t}, [ command.callback ] );\n\n\tuseEffect( () => {\n\t\tif ( command.disabled ) {\n\t\t\treturn;\n\t\t}\n\t\tregisterCommand( {\n\t\t\tname: command.name,\n\t\t\tcontext: command.context,\n\t\t\tlabel: command.label,\n\t\t\tsearchLabel: command.searchLabel,\n\t\t\ticon: command.icon,\n\t\t\tcallback: ( ...args ) => currentCallbackRef.current( ...args ),\n\t\t} );\n\t\treturn () => {\n\t\t\tunregisterCommand( command.name );\n\t\t};\n\t}, [\n\t\tcommand.name,\n\t\tcommand.label,\n\t\tcommand.searchLabel,\n\t\tcommand.icon,\n\t\tcommand.context,\n\t\tcommand.disabled,\n\t\tregisterCommand,\n\t\tunregisterCommand,\n\t] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,UAAUA,CAAEC,OAAO,EAAG;EAC7C,MAAM;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAc,CAAC;EAC3E,MAAMC,kBAAkB,GAAG,IAAAC,eAAM,EAAEN,OAAO,CAACO,QAAS,CAAC;EACrD,IAAAC,kBAAS,EAAE,MAAM;IAChBH,kBAAkB,CAACI,OAAO,GAAGT,OAAO,CAACO,QAAQ;EAC9C,CAAC,EAAE,CAAEP,OAAO,CAACO,QAAQ,CAAG,CAAC;EAEzB,IAAAC,kBAAS,EAAE,MAAM;IAChB,IAAKR,OAAO,CAACU,QAAQ,EAAG;MACvB;IACD;IACAT,eAAe,CAAE;MAChBU,IAAI,EAAEX,OAAO,CAACW,IAAI;MAClBC,OAAO,EAAEZ,OAAO,CAACY,OAAO;MACxBC,KAAK,EAAEb,OAAO,CAACa,KAAK;MACpBC,WAAW,EAAEd,OAAO,CAACc,WAAW;MAChCC,IAAI,EAAEf,OAAO,CAACe,IAAI;MAClBR,QAAQ,EAAEA,CAAE,GAAGS,IAAI,KAAMX,kBAAkB,CAACI,OAAO,CAAE,GAAGO,IAAK;IAC9D,CAAE,CAAC;IACH,OAAO,MAAM;MACZd,iBAAiB,CAAEF,OAAO,CAACW,IAAK,CAAC;IAClC,CAAC;EACF,CAAC,EAAE,CACFX,OAAO,CAACW,IAAI,EACZX,OAAO,CAACa,KAAK,EACbb,OAAO,CAACc,WAAW,EACnBd,OAAO,CAACe,IAAI,EACZf,OAAO,CAACY,OAAO,EACfZ,OAAO,CAACU,QAAQ,EAChBT,eAAe,EACfC,iBAAiB,CAChB,CAAC;AACJ","ignoreList":[]}
|
|
@@ -80,16 +80,16 @@ export function CommandMenuLoaderWrapper({
|
|
|
80
80
|
// the CommandMenuLoaderWrapper component need to be
|
|
81
81
|
// remounted on each hook prop change
|
|
82
82
|
// We use the key state to make sure we do that properly.
|
|
83
|
-
const
|
|
83
|
+
const currentLoaderRef = useRef(hook);
|
|
84
84
|
const [key, setKey] = useState(0);
|
|
85
85
|
useEffect(() => {
|
|
86
|
-
if (
|
|
87
|
-
|
|
86
|
+
if (currentLoaderRef.current !== hook) {
|
|
87
|
+
currentLoaderRef.current = hook;
|
|
88
88
|
setKey(prevKey => prevKey + 1);
|
|
89
89
|
}
|
|
90
90
|
}, [hook]);
|
|
91
91
|
return /*#__PURE__*/_jsx(CommandMenuLoader, {
|
|
92
|
-
hook:
|
|
92
|
+
hook: currentLoaderRef.current,
|
|
93
93
|
search: search,
|
|
94
94
|
setLoader: setLoader,
|
|
95
95
|
close: close
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Command","useCommandState","clsx","useSelect","useDispatch","useState","useEffect","useRef","useCallback","useMemo","__","Modal","TextHighlight","__experimentalHStack","HStack","store","keyboardShortcutsStore","useShortcut","Icon","search","inputIcon","commandsStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","inputLabel","CommandMenuLoader","name","hook","setLoader","close","_hook","isLoading","commands","length","children","map","command","_command$searchLabel","Item","value","searchLabel","label","onSelect","callback","id","alignment","className","icon","text","highlight","CommandMenuLoaderWrapper","currentLoader","key","setKey","current","prevKey","CommandMenuGroup","isContextual","loaders","select","getCommands","getCommandLoaders","Group","_command$searchLabel2","loader","CommandInput","isOpen","setSearch","commandMenuInput","_value","state","selectedItemId","item","document","querySelector","getAttribute","focus","Input","ref","onValueChange","placeholder","CommandMenu","registerShortcut","open","setLoaders","category","description","keyCombination","modifier","character","event","defaultPrevented","preventDefault","bindGlobal","closeAndReset","onKeyDown","nativeEvent","isComposing","keyCode","Object","values","some","Boolean","overlayClassName","onRequestClose","__experimentalHideHeader","contentLabel","List","Empty"],"sources":["@wordpress/commands/src/components/command-menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Command, useCommandState } from 'cmdk';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tTextHighlight,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tstore as keyboardShortcutsStore,\n\tuseShortcut,\n} from '@wordpress/keyboard-shortcuts';\nimport { Icon, search as inputIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\nconst inputLabel = __( 'Search commands and settings' );\n\nfunction CommandMenuLoader( { name, search, hook, setLoader, close } ) {\n\tconst { isLoading, commands = [] } = hook( { search } ) ?? {};\n\tuseEffect( () => {\n\t\tsetLoader( name, isLoading );\n\t}, [ setLoader, name, isLoading ] );\n\n\tif ( ! commands.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nexport function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {\n\t// The \"hook\" prop is actually a custom React hook\n\t// so to avoid breaking the rules of hooks\n\t// the CommandMenuLoaderWrapper component need to be\n\t// remounted on each hook prop change\n\t// We use the key state to make sure we do that properly.\n\tconst currentLoader = useRef( hook );\n\tconst [ key, setKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tif ( currentLoader.current !== hook ) {\n\t\t\tcurrentLoader.current = hook;\n\t\t\tsetKey( ( prevKey ) => prevKey + 1 );\n\t\t}\n\t}, [ hook ] );\n\n\treturn (\n\t\t<CommandMenuLoader\n\t\t\tkey={ key }\n\t\t\thook={ currentLoader.current }\n\t\t\tsearch={ search }\n\t\t\tsetLoader={ setLoader }\n\t\t\tclose={ close }\n\t\t/>\n\t);\n}\n\nexport function CommandMenuGroup( { isContextual, search, setLoader, close } ) {\n\tconst { commands, loaders } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCommands, getCommandLoaders } = select( commandsStore );\n\t\t\treturn {\n\t\t\t\tcommands: getCommands( isContextual ),\n\t\t\t\tloaders: getCommandLoaders( isContextual ),\n\t\t\t};\n\t\t},\n\t\t[ isContextual ]\n\t);\n\n\tif ( ! commands.length && ! loaders.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Command.Group>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t\t{ loaders.map( ( loader ) => (\n\t\t\t\t<CommandMenuLoaderWrapper\n\t\t\t\t\tkey={ loader.name }\n\t\t\t\t\thook={ loader.hook }\n\t\t\t\t\tsearch={ search }\n\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\tclose={ close }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Command.Group>\n\t);\n}\n\nfunction CommandInput( { isOpen, search, setSearch } ) {\n\tconst commandMenuInput = useRef();\n\tconst _value = useCommandState( ( state ) => state.value );\n\tconst selectedItemId = useMemo( () => {\n\t\tconst item = document.querySelector(\n\t\t\t`[cmdk-item=\"\"][data-value=\"${ _value }\"]`\n\t\t);\n\t\treturn item?.getAttribute( 'id' );\n\t}, [ _value ] );\n\tuseEffect( () => {\n\t\t// Focus the command palette input when mounting the modal.\n\t\tif ( isOpen ) {\n\t\t\tcommandMenuInput.current.focus();\n\t\t}\n\t}, [ isOpen ] );\n\treturn (\n\t\t<Command.Input\n\t\t\tref={ commandMenuInput }\n\t\t\tvalue={ search }\n\t\t\tonValueChange={ setSearch }\n\t\t\tplaceholder={ inputLabel }\n\t\t\taria-activedescendant={ selectedItemId }\n\t\t\ticon={ search }\n\t\t/>\n\t);\n}\n\n/**\n * @ignore\n */\nexport function CommandMenu() {\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst isOpen = useSelect(\n\t\t( select ) => select( commandsStore ).isOpen(),\n\t\t[]\n\t);\n\tconst { open, close } = useDispatch( commandsStore );\n\tconst [ loaders, setLoaders ] = useState( {} );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/commands',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the command palette.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'k',\n\t\t\t},\n\t\t} );\n\t}, [ registerShortcut ] );\n\n\tuseShortcut(\n\t\t'core/commands',\n\t\t/** @type {import('react').KeyboardEventHandler} */\n\t\t( event ) => {\n\t\t\t// Bails to avoid obscuring the effect of the preceding handler(s).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tif ( isOpen ) {\n\t\t\t\tclose();\n\t\t\t} else {\n\t\t\t\topen();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tbindGlobal: true,\n\t\t}\n\t);\n\n\tconst setLoader = useCallback(\n\t\t( name, value ) =>\n\t\t\tsetLoaders( ( current ) => ( {\n\t\t\t\t...current,\n\t\t\t\t[ name ]: value,\n\t\t\t} ) ),\n\t\t[]\n\t);\n\tconst closeAndReset = () => {\n\t\tsetSearch( '' );\n\t\tclose();\n\t};\n\n\tif ( ! isOpen ) {\n\t\treturn false;\n\t}\n\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\t// Ignore keydowns from IMEs\n\t\t\tevent.nativeEvent.isComposing ||\n\t\t\t// Workaround for Mac Safari where the final Enter/Backspace of an IME composition\n\t\t\t// is `isComposing=false`, even though it's technically still part of the composition.\n\t\t\t// These can only be detected by keyCode.\n\t\t\tevent.keyCode === 229\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst isLoading = Object.values( loaders ).some( Boolean );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"commands-command-menu\"\n\t\t\toverlayClassName=\"commands-command-menu__overlay\"\n\t\t\tonRequestClose={ closeAndReset }\n\t\t\t__experimentalHideHeader\n\t\t\tcontentLabel={ __( 'Command palette' ) }\n\t\t>\n\t\t\t<div className=\"commands-command-menu__container\">\n\t\t\t\t<Command label={ inputLabel } onKeyDown={ onKeyDown }>\n\t\t\t\t\t<div className=\"commands-command-menu__header\">\n\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetSearch={ setSearch }\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Icon icon={ inputIcon } />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Command.List label={ __( 'Command suggestions' ) }>\n\t\t\t\t\t\t{ search && ! isLoading && (\n\t\t\t\t\t\t\t<Command.Empty>\n\t\t\t\t\t\t\t\t{ __( 'No results found.' ) }\n\t\t\t\t\t\t\t</Command.Empty>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\tisContextual\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Command.List>\n\t\t\t\t</Command>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Command","useCommandState","clsx","useSelect","useDispatch","useState","useEffect","useRef","useCallback","useMemo","__","Modal","TextHighlight","__experimentalHStack","HStack","store","keyboardShortcutsStore","useShortcut","Icon","search","inputIcon","commandsStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","inputLabel","CommandMenuLoader","name","hook","setLoader","close","_hook","isLoading","commands","length","children","map","command","_command$searchLabel","Item","value","searchLabel","label","onSelect","callback","id","alignment","className","icon","text","highlight","CommandMenuLoaderWrapper","currentLoaderRef","key","setKey","current","prevKey","CommandMenuGroup","isContextual","loaders","select","getCommands","getCommandLoaders","Group","_command$searchLabel2","loader","CommandInput","isOpen","setSearch","commandMenuInput","_value","state","selectedItemId","item","document","querySelector","getAttribute","focus","Input","ref","onValueChange","placeholder","CommandMenu","registerShortcut","open","setLoaders","category","description","keyCombination","modifier","character","event","defaultPrevented","preventDefault","bindGlobal","closeAndReset","onKeyDown","nativeEvent","isComposing","keyCode","Object","values","some","Boolean","overlayClassName","onRequestClose","__experimentalHideHeader","contentLabel","List","Empty"],"sources":["@wordpress/commands/src/components/command-menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Command, useCommandState } from 'cmdk';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tModal,\n\tTextHighlight,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tstore as keyboardShortcutsStore,\n\tuseShortcut,\n} from '@wordpress/keyboard-shortcuts';\nimport { Icon, search as inputIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\nconst inputLabel = __( 'Search commands and settings' );\n\nfunction CommandMenuLoader( { name, search, hook, setLoader, close } ) {\n\tconst { isLoading, commands = [] } = hook( { search } ) ?? {};\n\tuseEffect( () => {\n\t\tsetLoader( name, isLoading );\n\t}, [ setLoader, name, isLoading ] );\n\n\tif ( ! commands.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nexport function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {\n\t// The \"hook\" prop is actually a custom React hook\n\t// so to avoid breaking the rules of hooks\n\t// the CommandMenuLoaderWrapper component need to be\n\t// remounted on each hook prop change\n\t// We use the key state to make sure we do that properly.\n\tconst currentLoaderRef = useRef( hook );\n\tconst [ key, setKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tif ( currentLoaderRef.current !== hook ) {\n\t\t\tcurrentLoaderRef.current = hook;\n\t\t\tsetKey( ( prevKey ) => prevKey + 1 );\n\t\t}\n\t}, [ hook ] );\n\n\treturn (\n\t\t<CommandMenuLoader\n\t\t\tkey={ key }\n\t\t\thook={ currentLoaderRef.current }\n\t\t\tsearch={ search }\n\t\t\tsetLoader={ setLoader }\n\t\t\tclose={ close }\n\t\t/>\n\t);\n}\n\nexport function CommandMenuGroup( { isContextual, search, setLoader, close } ) {\n\tconst { commands, loaders } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCommands, getCommandLoaders } = select( commandsStore );\n\t\t\treturn {\n\t\t\t\tcommands: getCommands( isContextual ),\n\t\t\t\tloaders: getCommandLoaders( isContextual ),\n\t\t\t};\n\t\t},\n\t\t[ isContextual ]\n\t);\n\n\tif ( ! commands.length && ! loaders.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Command.Group>\n\t\t\t{ commands.map( ( command ) => (\n\t\t\t\t<Command.Item\n\t\t\t\t\tkey={ command.name }\n\t\t\t\t\tvalue={ command.searchLabel ?? command.label }\n\t\t\t\t\tonSelect={ () => command.callback( { close } ) }\n\t\t\t\t\tid={ command.name }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\talignment=\"left\"\n\t\t\t\t\t\tclassName={ clsx( 'commands-command-menu__item', {\n\t\t\t\t\t\t\t'has-icon': command.icon,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ command.icon && <Icon icon={ command.icon } /> }\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<TextHighlight\n\t\t\t\t\t\t\t\ttext={ command.label }\n\t\t\t\t\t\t\t\thighlight={ search }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Command.Item>\n\t\t\t) ) }\n\t\t\t{ loaders.map( ( loader ) => (\n\t\t\t\t<CommandMenuLoaderWrapper\n\t\t\t\t\tkey={ loader.name }\n\t\t\t\t\thook={ loader.hook }\n\t\t\t\t\tsearch={ search }\n\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\tclose={ close }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Command.Group>\n\t);\n}\n\nfunction CommandInput( { isOpen, search, setSearch } ) {\n\tconst commandMenuInput = useRef();\n\tconst _value = useCommandState( ( state ) => state.value );\n\tconst selectedItemId = useMemo( () => {\n\t\tconst item = document.querySelector(\n\t\t\t`[cmdk-item=\"\"][data-value=\"${ _value }\"]`\n\t\t);\n\t\treturn item?.getAttribute( 'id' );\n\t}, [ _value ] );\n\tuseEffect( () => {\n\t\t// Focus the command palette input when mounting the modal.\n\t\tif ( isOpen ) {\n\t\t\tcommandMenuInput.current.focus();\n\t\t}\n\t}, [ isOpen ] );\n\treturn (\n\t\t<Command.Input\n\t\t\tref={ commandMenuInput }\n\t\t\tvalue={ search }\n\t\t\tonValueChange={ setSearch }\n\t\t\tplaceholder={ inputLabel }\n\t\t\taria-activedescendant={ selectedItemId }\n\t\t\ticon={ search }\n\t\t/>\n\t);\n}\n\n/**\n * @ignore\n */\nexport function CommandMenu() {\n\tconst { registerShortcut } = useDispatch( keyboardShortcutsStore );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst isOpen = useSelect(\n\t\t( select ) => select( commandsStore ).isOpen(),\n\t\t[]\n\t);\n\tconst { open, close } = useDispatch( commandsStore );\n\tconst [ loaders, setLoaders ] = useState( {} );\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/commands',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Open the command palette.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'k',\n\t\t\t},\n\t\t} );\n\t}, [ registerShortcut ] );\n\n\tuseShortcut(\n\t\t'core/commands',\n\t\t/** @type {import('react').KeyboardEventHandler} */\n\t\t( event ) => {\n\t\t\t// Bails to avoid obscuring the effect of the preceding handler(s).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tif ( isOpen ) {\n\t\t\t\tclose();\n\t\t\t} else {\n\t\t\t\topen();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tbindGlobal: true,\n\t\t}\n\t);\n\n\tconst setLoader = useCallback(\n\t\t( name, value ) =>\n\t\t\tsetLoaders( ( current ) => ( {\n\t\t\t\t...current,\n\t\t\t\t[ name ]: value,\n\t\t\t} ) ),\n\t\t[]\n\t);\n\tconst closeAndReset = () => {\n\t\tsetSearch( '' );\n\t\tclose();\n\t};\n\n\tif ( ! isOpen ) {\n\t\treturn false;\n\t}\n\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\t// Ignore keydowns from IMEs\n\t\t\tevent.nativeEvent.isComposing ||\n\t\t\t// Workaround for Mac Safari where the final Enter/Backspace of an IME composition\n\t\t\t// is `isComposing=false`, even though it's technically still part of the composition.\n\t\t\t// These can only be detected by keyCode.\n\t\t\tevent.keyCode === 229\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst isLoading = Object.values( loaders ).some( Boolean );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"commands-command-menu\"\n\t\t\toverlayClassName=\"commands-command-menu__overlay\"\n\t\t\tonRequestClose={ closeAndReset }\n\t\t\t__experimentalHideHeader\n\t\t\tcontentLabel={ __( 'Command palette' ) }\n\t\t>\n\t\t\t<div className=\"commands-command-menu__container\">\n\t\t\t\t<Command label={ inputLabel } onKeyDown={ onKeyDown }>\n\t\t\t\t\t<div className=\"commands-command-menu__header\">\n\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetSearch={ setSearch }\n\t\t\t\t\t\t\tisOpen={ isOpen }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Icon icon={ inputIcon } />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Command.List label={ __( 'Command suggestions' ) }>\n\t\t\t\t\t\t{ search && ! isLoading && (\n\t\t\t\t\t\t\t<Command.Empty>\n\t\t\t\t\t\t\t\t{ __( 'No results found.' ) }\n\t\t\t\t\t\t\t</Command.Empty>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\tisContextual\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<CommandMenuGroup\n\t\t\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\t\t\tsetLoader={ setLoader }\n\t\t\t\t\t\t\t\tclose={ closeAndReset }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Command.List>\n\t\t\t\t</Command>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,9 +35,9 @@ export default function useCommand(command) {
|
|
|
35
35
|
registerCommand,
|
|
36
36
|
unregisterCommand
|
|
37
37
|
} = useDispatch(commandsStore);
|
|
38
|
-
const
|
|
38
|
+
const currentCallbackRef = useRef(command.callback);
|
|
39
39
|
useEffect(() => {
|
|
40
|
-
|
|
40
|
+
currentCallbackRef.current = command.callback;
|
|
41
41
|
}, [command.callback]);
|
|
42
42
|
useEffect(() => {
|
|
43
43
|
if (command.disabled) {
|
|
@@ -49,7 +49,7 @@ export default function useCommand(command) {
|
|
|
49
49
|
label: command.label,
|
|
50
50
|
searchLabel: command.searchLabel,
|
|
51
51
|
icon: command.icon,
|
|
52
|
-
callback: (...args) =>
|
|
52
|
+
callback: (...args) => currentCallbackRef.current(...args)
|
|
53
53
|
});
|
|
54
54
|
return () => {
|
|
55
55
|
unregisterCommand(command.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useDispatch","store","commandsStore","useCommand","command","registerCommand","unregisterCommand","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useDispatch","store","commandsStore","useCommand","command","registerCommand","unregisterCommand","currentCallbackRef","callback","current","disabled","name","context","label","searchLabel","icon","args"],"sources":["@wordpress/commands/src/hooks/use-command.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as commandsStore } from '../store';\n\n/**\n * Attach a command to the command palette. Used for static commands.\n *\n * @param {import('../store/actions').WPCommandConfig} command command config.\n *\n * @example\n * ```js\n * import { useCommand } from '@wordpress/commands';\n * import { plus } from '@wordpress/icons';\n *\n * useCommand( {\n * name: 'myplugin/my-command-name',\n * label: __( 'Add new post' ),\n *\t icon: plus,\n * callback: ({ close }) => {\n * document.location.href = 'post-new.php';\n * close();\n * },\n * } );\n * ```\n */\nexport default function useCommand( command ) {\n\tconst { registerCommand, unregisterCommand } = useDispatch( commandsStore );\n\tconst currentCallbackRef = useRef( command.callback );\n\tuseEffect( () => {\n\t\tcurrentCallbackRef.current = command.callback;\n\t}, [ command.callback ] );\n\n\tuseEffect( () => {\n\t\tif ( command.disabled ) {\n\t\t\treturn;\n\t\t}\n\t\tregisterCommand( {\n\t\t\tname: command.name,\n\t\t\tcontext: command.context,\n\t\t\tlabel: command.label,\n\t\t\tsearchLabel: command.searchLabel,\n\t\t\ticon: command.icon,\n\t\t\tcallback: ( ...args ) => currentCallbackRef.current( ...args ),\n\t\t} );\n\t\treturn () => {\n\t\t\tunregisterCommand( command.name );\n\t\t};\n\t}, [\n\t\tcommand.name,\n\t\tcommand.label,\n\t\tcommand.searchLabel,\n\t\tcommand.icon,\n\t\tcommand.context,\n\t\tcommand.disabled,\n\t\tregisterCommand,\n\t\tunregisterCommand,\n\t] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACtD,SAASC,WAAW,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,aAAa,QAAQ,UAAU;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,UAAUA,CAAEC,OAAO,EAAG;EAC7C,MAAM;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GAAGN,WAAW,CAAEE,aAAc,CAAC;EAC3E,MAAMK,kBAAkB,GAAGR,MAAM,CAAEK,OAAO,CAACI,QAAS,CAAC;EACrDV,SAAS,CAAE,MAAM;IAChBS,kBAAkB,CAACE,OAAO,GAAGL,OAAO,CAACI,QAAQ;EAC9C,CAAC,EAAE,CAAEJ,OAAO,CAACI,QAAQ,CAAG,CAAC;EAEzBV,SAAS,CAAE,MAAM;IAChB,IAAKM,OAAO,CAACM,QAAQ,EAAG;MACvB;IACD;IACAL,eAAe,CAAE;MAChBM,IAAI,EAAEP,OAAO,CAACO,IAAI;MAClBC,OAAO,EAAER,OAAO,CAACQ,OAAO;MACxBC,KAAK,EAAET,OAAO,CAACS,KAAK;MACpBC,WAAW,EAAEV,OAAO,CAACU,WAAW;MAChCC,IAAI,EAAEX,OAAO,CAACW,IAAI;MAClBP,QAAQ,EAAEA,CAAE,GAAGQ,IAAI,KAAMT,kBAAkB,CAACE,OAAO,CAAE,GAAGO,IAAK;IAC9D,CAAE,CAAC;IACH,OAAO,MAAM;MACZV,iBAAiB,CAAEF,OAAO,CAACO,IAAK,CAAC;IAClC,CAAC;EACF,CAAC,EAAE,CACFP,OAAO,CAACO,IAAI,EACZP,OAAO,CAACS,KAAK,EACbT,OAAO,CAACU,WAAW,EACnBV,OAAO,CAACW,IAAI,EACZX,OAAO,CAACQ,OAAO,EACfR,OAAO,CAACM,QAAQ,EAChBL,eAAe,EACfC,iBAAiB,CAChB,CAAC;AACJ","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/commands",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Handles the commands menu.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"react-native": "src/index",
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@babel/runtime": "^7.16.0",
|
|
31
|
-
"@wordpress/components": "^28.
|
|
32
|
-
"@wordpress/data": "^10.
|
|
33
|
-
"@wordpress/element": "^6.
|
|
34
|
-
"@wordpress/i18n": "^5.
|
|
35
|
-
"@wordpress/icons": "^10.
|
|
36
|
-
"@wordpress/keyboard-shortcuts": "^5.
|
|
37
|
-
"@wordpress/private-apis": "^1.
|
|
31
|
+
"@wordpress/components": "^28.7.0",
|
|
32
|
+
"@wordpress/data": "^10.7.0",
|
|
33
|
+
"@wordpress/element": "^6.7.0",
|
|
34
|
+
"@wordpress/i18n": "^5.7.0",
|
|
35
|
+
"@wordpress/icons": "^10.7.0",
|
|
36
|
+
"@wordpress/keyboard-shortcuts": "^5.7.0",
|
|
37
|
+
"@wordpress/private-apis": "^1.7.0",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"cmdk": "^1.0.0"
|
|
40
40
|
},
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "c90d920de07c53dff82c5914635b56fafa503b7f"
|
|
49
49
|
}
|
|
@@ -79,11 +79,11 @@ export function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {
|
|
|
79
79
|
// the CommandMenuLoaderWrapper component need to be
|
|
80
80
|
// remounted on each hook prop change
|
|
81
81
|
// We use the key state to make sure we do that properly.
|
|
82
|
-
const
|
|
82
|
+
const currentLoaderRef = useRef( hook );
|
|
83
83
|
const [ key, setKey ] = useState( 0 );
|
|
84
84
|
useEffect( () => {
|
|
85
|
-
if (
|
|
86
|
-
|
|
85
|
+
if ( currentLoaderRef.current !== hook ) {
|
|
86
|
+
currentLoaderRef.current = hook;
|
|
87
87
|
setKey( ( prevKey ) => prevKey + 1 );
|
|
88
88
|
}
|
|
89
89
|
}, [ hook ] );
|
|
@@ -91,7 +91,7 @@ export function CommandMenuLoaderWrapper( { hook, search, setLoader, close } ) {
|
|
|
91
91
|
return (
|
|
92
92
|
<CommandMenuLoader
|
|
93
93
|
key={ key }
|
|
94
|
-
hook={
|
|
94
|
+
hook={ currentLoaderRef.current }
|
|
95
95
|
search={ search }
|
|
96
96
|
setLoader={ setLoader }
|
|
97
97
|
close={ close }
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
border: $border-width solid $gray-600;
|
|
34
34
|
border-right: 0;
|
|
35
35
|
justify-content: center;
|
|
36
|
-
border-radius: $radius-
|
|
36
|
+
border-radius: $radius-small 0 0 $radius-small;
|
|
37
37
|
|
|
38
38
|
& + [cmdk-input] {
|
|
39
39
|
border-top-left-radius: 0;
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
[cmdk-item] {
|
|
71
|
-
border-radius: $radius-
|
|
71
|
+
border-radius: $radius-small;
|
|
72
72
|
cursor: pointer;
|
|
73
73
|
display: flex;
|
|
74
74
|
align-items: center;
|
package/src/hooks/use-command.js
CHANGED
|
@@ -32,9 +32,9 @@ import { store as commandsStore } from '../store';
|
|
|
32
32
|
*/
|
|
33
33
|
export default function useCommand( command ) {
|
|
34
34
|
const { registerCommand, unregisterCommand } = useDispatch( commandsStore );
|
|
35
|
-
const
|
|
35
|
+
const currentCallbackRef = useRef( command.callback );
|
|
36
36
|
useEffect( () => {
|
|
37
|
-
|
|
37
|
+
currentCallbackRef.current = command.callback;
|
|
38
38
|
}, [ command.callback ] );
|
|
39
39
|
|
|
40
40
|
useEffect( () => {
|
|
@@ -47,7 +47,7 @@ export default function useCommand( command ) {
|
|
|
47
47
|
label: command.label,
|
|
48
48
|
searchLabel: command.searchLabel,
|
|
49
49
|
icon: command.icon,
|
|
50
|
-
callback: ( ...args ) =>
|
|
50
|
+
callback: ( ...args ) => currentCallbackRef.current( ...args ),
|
|
51
51
|
} );
|
|
52
52
|
return () => {
|
|
53
53
|
unregisterCommand( command.name );
|