{
  "version": 3,
  "sources": ["../../src/hooks/use-command-loader.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect } 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 loader to the command palette. Used for dynamic commands.\n *\n * @param {import('../store/actions').WPCommandLoaderConfig} loader command loader config.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { addQueryArgs } from '@wordpress/url';\n * import { useCommandLoader } from '@wordpress/commands';\n * import { page } from '@wordpress/icons';\n * import { useSelect } from '@wordpress/data';\n * import { store as coreStore } from '@wordpress/core-data';\n * import { useMemo } from '@wordpress/element';\n *\n * function usePageSearchCommandLoader( { search } ) {\n *     // Retrieve the pages for the \"search\" term.\n *     const { records, isLoading } = useSelect(\n *         ( select ) => {\n *             const { getEntityRecords } = select( coreStore );\n *             const query = {\n *                 search: !! search ? search : undefined,\n *                 per_page: 10,\n *                 orderby: search ? 'relevance' : 'date',\n *             };\n *             return {\n *                 records: getEntityRecords( 'postType', 'page', query ),\n *                 isLoading: ! select( coreStore ).hasFinishedResolution(\n *                     'getEntityRecords',\n *                     [ 'postType', 'page', query ]\n *                 ),\n *             };\n *         },\n *         [ search ]\n *     );\n *\n *     // Create the commands.\n *     const commands = useMemo( () => {\n *         return ( records ?? [] ).slice( 0, 10 ).map( ( record ) => {\n *             return {\n *                 name: record.title?.rendered + ' ' + record.id,\n *                 label: record.title?.rendered\n *                     ? record.title?.rendered\n *                     : __( '(no title)' ),\n *                 icon: page,\n *                 category: 'edit',\n *                 callback: ( { close } ) => {\n *                     const args = {\n * \t\t\t\t\t\t\tp: '/page',\n * \t\t\t\t\t\t\tpostId: record.id,\n *                     };\n *                     document.location = addQueryArgs( 'site-editor.php', args );\n *                     close();\n *                 },\n *             };\n *         } );\n *     }, [ records ] );\n *\n *     return {\n *         commands,\n *         isLoading,\n *     };\n * }\n *\n * useCommandLoader( {\n *     name: 'myplugin/page-search',\n *     hook: usePageSearchCommandLoader,\n * } );\n * ```\n */\nexport default function useCommandLoader( loader ) {\n\tconst { registerCommandLoader, unregisterCommandLoader } =\n\t\tuseDispatch( commandsStore );\n\tuseEffect( () => {\n\t\tif ( loader.disabled ) {\n\t\t\treturn;\n\t\t}\n\t\tregisterCommandLoader( {\n\t\t\tname: loader.name,\n\t\t\thook: loader.hook,\n\t\t\tcontext: loader.context,\n\t\t\tcategory: loader.category,\n\t\t} );\n\t\treturn () => {\n\t\t\tunregisterCommandLoader( loader.name );\n\t\t};\n\t}, [\n\t\tloader.name,\n\t\tloader.hook,\n\t\tloader.context,\n\t\tloader.category,\n\t\tloader.disabled,\n\t\tregisterCommandLoader,\n\t\tunregisterCommandLoader,\n\t] );\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA0B;AAC1B,kBAA4B;AAK5B,mBAAuC;AAwExB,SAAR,iBAAmC,QAAS;AAClD,QAAM,EAAE,uBAAuB,wBAAwB,QACtD,yBAAa,aAAAA,KAAc;AAC5B,gCAAW,MAAM;AAChB,QAAK,OAAO,UAAW;AACtB;AAAA,IACD;AACA,0BAAuB;AAAA,MACtB,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,IAClB,CAAE;AACF,WAAO,MAAM;AACZ,8BAAyB,OAAO,IAAK;AAAA,IACtC;AAAA,EACD,GAAG;AAAA,IACF,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACD,CAAE;AACH;",
  "names": ["commandsStore"]
}
