@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 5.16 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/navigation/use-navigation-menu.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n\tuseEntityRecords,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';\n\nexport default function useNavigationMenu( ref ) {\n\tconst permissions = useResourcePermissions( {\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t\tid: ref,\n\t} );\n\n\tconst {\n\t\tnavigationMenu,\n\t\tisNavigationMenuResolved,\n\t\tisNavigationMenuMissing,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\treturn selectExistingMenu( select, ref );\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tconst {\n\t\t// Can the user create navigation menus?\n\t\tcanCreate: canCreateNavigationMenus,\n\n\t\t// Can the user update the specific navigation menu with the given post ID?\n\t\tcanUpdate: canUpdateNavigationMenu,\n\n\t\t// Can the user delete the specific navigation menu with the given post ID?\n\t\tcanDelete: canDeleteNavigationMenu,\n\t\tisResolving: isResolvingPermissions,\n\t\thasResolved: hasResolvedPermissions,\n\t} = permissions;\n\n\tconst {\n\t\trecords: navigationMenus,\n\t\tisResolving: isResolvingNavigationMenus,\n\t\thasResolved: hasResolvedNavigationMenus,\n\t} = useEntityRecords(\n\t\t'postType',\n\t\t`wp_navigation`,\n\t\tPRELOADED_NAVIGATION_MENUS_QUERY\n\t);\n\n\tconst canSwitchNavigationMenu = ref\n\t\t? navigationMenus?.length > 1\n\t\t: navigationMenus?.length > 0;\n\n\treturn {\n\t\tnavigationMenu,\n\t\tisNavigationMenuResolved,\n\t\tisNavigationMenuMissing,\n\t\tnavigationMenus,\n\t\tisResolvingNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tcanSwitchNavigationMenu,\n\t\tcanUserCreateNavigationMenus: canCreateNavigationMenus,\n\t\tisResolvingCanUserCreateNavigationMenus: isResolvingPermissions,\n\t\thasResolvedCanUserCreateNavigationMenus: hasResolvedPermissions,\n\t\tcanUserUpdateNavigationMenu: canUpdateNavigationMenu,\n\t\thasResolvedCanUserUpdateNavigationMenu: ref\n\t\t\t? hasResolvedPermissions\n\t\t\t: undefined,\n\t\tcanUserDeleteNavigationMenu: canDeleteNavigationMenu,\n\t\thasResolvedCanUserDeleteNavigationMenu: ref\n\t\t\t? hasResolvedPermissions\n\t\t\t: undefined,\n\t};\n}\n\nfunction selectExistingMenu( select, ref ) {\n\tif ( ! ref ) {\n\t\treturn {\n\t\t\tisNavigationMenuResolved: false,\n\t\t\tisNavigationMenuMissing: true,\n\t\t};\n\t}\n\n\tconst { getEntityRecord, getEditedEntityRecord, hasFinishedResolution } =\n\t\tselect( coreStore );\n\n\tconst args = [ 'postType', 'wp_navigation', ref ];\n\tconst navigationMenu = getEntityRecord( ...args );\n\tconst editedNavigationMenu = getEditedEntityRecord( ...args );\n\tconst hasResolvedNavigationMenu = hasFinishedResolution(\n\t\t'getEditedEntityRecord',\n\t\targs\n\t);\n\n\t// Only published Navigation posts are considered valid.\n\t// Draft Navigation posts are valid only on the editor,\n\t// requiring a post update to publish to show in frontend.\n\t// To achieve that, index.php must reflect this validation only for published.\n\tconst isNavigationMenuPublishedOrDraft =\n\t\teditedNavigationMenu.status === 'publish' ||\n\t\teditedNavigationMenu.status === 'draft';\n\n\treturn {\n\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\tisNavigationMenuMissing:\n\t\t\thasResolvedNavigationMenu &&\n\t\t\t( ! navigationMenu || ! isNavigationMenuPublishedOrDraft ),\n\n\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t// Therefore if the found post is not published then we should ignore it.\n\t\tnavigationMenu: isNavigationMenuPublishedOrDraft\n\t\t\t? editedNavigationMenu\n\t\t\t: null,\n\t};\n}\n"],
"mappings": ";AAGA;AAAA,EACC,SAAS;AAAA,EACT;AAAA,EACA;AAAA,OACM;AACP,SAAS,iBAAiB;AAK1B,SAAS,wCAAwC;AAElC,SAAR,kBAAoC,KAAM;AAChD,QAAM,cAAc,uBAAwB;AAAA,IAC3C,MAAM;AAAA,IACN,MAAM;AAAA,IACN,IAAI;AAAA,EACL,CAAE;AAEF,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAAA,IACH,CAAE,WAAY;AACb,aAAO,mBAAoB,QAAQ,GAAI;AAAA,IACxC;AAAA,IACA,CAAE,GAAI;AAAA,EACP;AAEA,QAAM;AAAA;AAAA,IAEL,WAAW;AAAA;AAAA,IAGX,WAAW;AAAA;AAAA,IAGX,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa;AAAA,EACd,IAAI;AAEJ,QAAM;AAAA,IACL,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,EACd,IAAI;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,0BAA0B,MAC7B,iBAAiB,SAAS,IAC1B,iBAAiB,SAAS;AAE7B,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,8BAA8B;AAAA,IAC9B,yCAAyC;AAAA,IACzC,yCAAyC;AAAA,IACzC,6BAA6B;AAAA,IAC7B,wCAAwC,MACrC,yBACA;AAAA,IACH,6BAA6B;AAAA,IAC7B,wCAAwC,MACrC,yBACA;AAAA,EACJ;AACD;AAEA,SAAS,mBAAoB,QAAQ,KAAM;AAC1C,MAAK,CAAE,KAAM;AACZ,WAAO;AAAA,MACN,0BAA0B;AAAA,MAC1B,yBAAyB;AAAA,IAC1B;AAAA,EACD;AAEA,QAAM,EAAE,iBAAiB,uBAAuB,sBAAsB,IACrE,OAAQ,SAAU;AAEnB,QAAM,OAAO,CAAE,YAAY,iBAAiB,GAAI;AAChD,QAAM,iBAAiB,gBAAiB,GAAG,IAAK;AAChD,QAAM,uBAAuB,sBAAuB,GAAG,IAAK;AAC5D,QAAM,4BAA4B;AAAA,IACjC;AAAA,IACA;AAAA,EACD;AAMA,QAAM,mCACL,qBAAqB,WAAW,aAChC,qBAAqB,WAAW;AAEjC,SAAO;AAAA,IACN,0BAA0B;AAAA,IAC1B,yBACC,8BACE,CAAE,kBAAkB,CAAE;AAAA;AAAA;AAAA,IAIzB,gBAAgB,mCACb,uBACA;AAAA,EACJ;AACD;",
"names": []
}