@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 3.65 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/navigation/edit/use-generate-default-navigation-title.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useTemplatePartAreaLabel from '../use-template-part-area-label';\n\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst PUBLISHED_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ per_page: -1, status: 'publish' },\n];\n\nexport default function useGenerateDefaultNavigationTitle( clientId ) {\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\n\t// Because we can't conditionally call hooks, pass an undefined client id\n\t// arg to bypass the expensive `useTemplateArea` code. The hook will return\n\t// early.\n\tconst area = useTemplatePartAreaLabel( isDisabled ? undefined : clientId );\n\n\tconst registry = useRegistry();\n\treturn useCallback( async () => {\n\t\t// Ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\tif ( isDisabled ) {\n\t\t\treturn '';\n\t\t}\n\t\tconst { getEntityRecords } = registry.resolveSelect( coreStore );\n\n\t\tconst [ draftNavigationMenus, navigationMenus ] = await Promise.all( [\n\t\t\tgetEntityRecords( ...DRAFT_MENU_PARAMS ),\n\t\t\tgetEntityRecords( ...PUBLISHED_MENU_PARAMS ),\n\t\t] );\n\n\t\tconst title = area\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header menu).\n\t\t\t\t\t__( '%s menu' ),\n\t\t\t\t\tarea\n\t\t\t )\n\t\t\t: // translators: 'menu' as in website navigation menu.\n\t\t\t __( 'Menu' );\n\n\t\t// Determine how many menus start with the automatic title.\n\t\tconst matchingMenuTitleCount = [\n\t\t\t...draftNavigationMenus,\n\t\t\t...navigationMenus,\n\t\t].reduce(\n\t\t\t( count, menu ) =>\n\t\t\t\tmenu?.title?.raw?.startsWith( title ) ? count + 1 : count,\n\t\t\t0\n\t\t);\n\n\t\t// Append a number to the end of the title if a menu with\n\t\t// the same name exists.\n\t\tconst titleWithCount =\n\t\t\tmatchingMenuTitleCount > 0\n\t\t\t\t? `${ title } ${ matchingMenuTitleCount + 1 }`\n\t\t\t\t: title;\n\n\t\treturn titleWithCount || '';\n\t}, [ isDisabled, area, registry ] );\n}\n"],
"mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,SAAS,iBAAiB;AACnC,SAAS,mBAAmB;AAC5B,SAAS,YAAY,mBAAmB;AACxC,SAAS,IAAI,eAAe;AAK5B,OAAO,8BAA8B;AAErC,IAAM,oBAAoB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,EAAE,QAAQ,SAAS,UAAU,GAAG;AACjC;AAEA,IAAM,wBAAwB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,EAAE,UAAU,IAAI,QAAQ,UAAU;AACnC;AAEe,SAAR,kCAAoD,UAAW;AAGrE,QAAM,aAAa,WAAY,SAAS,OAAQ;AAKhD,QAAM,OAAO,yBAA0B,aAAa,SAAY,QAAS;AAEzE,QAAM,WAAW,YAAY;AAC7B,SAAO,YAAa,YAAY;AAG/B,QAAK,YAAa;AACjB,aAAO;AAAA,IACR;AACA,UAAM,EAAE,iBAAiB,IAAI,SAAS,cAAe,SAAU;AAE/D,UAAM,CAAE,sBAAsB,eAAgB,IAAI,MAAM,QAAQ,IAAK;AAAA,MACpE,iBAAkB,GAAG,iBAAkB;AAAA,MACvC,iBAAkB,GAAG,qBAAsB;AAAA,IAC5C,CAAE;AAEF,UAAM,QAAQ,OACX;AAAA;AAAA,MAEA,GAAI,SAAU;AAAA,MACd;AAAA,IACA;AAAA;AAAA,MAEA,GAAI,MAAO;AAAA;AAGd,UAAM,yBAAyB;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,IACJ,EAAE;AAAA,MACD,CAAE,OAAO,SACR,MAAM,OAAO,KAAK,WAAY,KAAM,IAAI,QAAQ,IAAI;AAAA,MACrD;AAAA,IACD;AAIA,UAAM,iBACL,yBAAyB,IACtB,GAAI,KAAM,IAAK,yBAAyB,CAAE,KAC1C;AAEJ,WAAO,kBAAkB;AAAA,EAC1B,GAAG,CAAE,YAAY,MAAM,QAAS,CAAE;AACnC;",
"names": []
}