UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 3.68 kB
{ "version": 3, "sources": ["../../src/navigation/use-template-part-area-label.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\n\n// TODO: this util should perhaps be refactored somewhere like core-data.\nimport { createTemplatePartId } from '../template-part/edit/utils/create-template-part-id';\nimport { getTemplatePartIcon } from '../template-part/edit/utils/get-template-part-icon';\n\nexport default function useTemplatePartAreaLabel( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\t// Use the lack of a clientId as an opportunity to bypass the rest\n\t\t\t// of this hook.\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlock, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst withAscendingResults = true;\n\t\t\tconst parentTemplatePartClientIds = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/template-part',\n\t\t\t\twithAscendingResults\n\t\t\t);\n\n\t\t\tif ( ! parentTemplatePartClientIds?.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getCurrentTheme, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\n\t\t\tconst currentTheme = getCurrentTheme();\n\t\t\tconst defaultTemplatePartAreas =\n\t\t\t\tcurrentTheme?.default_template_part_areas || [];\n\n\t\t\tconst definedAreas = defaultTemplatePartAreas.map( ( item ) => ( {\n\t\t\t\t...item,\n\t\t\t\ticon: getTemplatePartIcon( item.icon ),\n\t\t\t} ) );\n\n\t\t\tfor ( const templatePartClientId of parentTemplatePartClientIds ) {\n\t\t\t\tconst templatePartBlock = getBlock( templatePartClientId );\n\n\t\t\t\t// The 'area' usually isn't stored on the block, but instead\n\t\t\t\t// on the entity.\n\t\t\t\tconst { theme = currentTheme?.stylesheet, slug } =\n\t\t\t\t\ttemplatePartBlock.attributes;\n\t\t\t\tconst templatePartEntityId = createTemplatePartId(\n\t\t\t\t\ttheme,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t\tconst templatePartEntity = getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template_part',\n\t\t\t\t\ttemplatePartEntityId\n\t\t\t\t);\n\n\t\t\t\t// Look up the `label` for the area in the defined areas so\n\t\t\t\t// that an internationalized label can be used.\n\t\t\t\tif ( templatePartEntity?.area ) {\n\t\t\t\t\treturn definedAreas.find(\n\t\t\t\t\t\t( definedArea ) =>\n\t\t\t\t\t\t\tdefinedArea.area !== 'uncategorized' &&\n\t\t\t\t\t\t\tdefinedArea.area === templatePartEntity.area\n\t\t\t\t\t)?.label;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"], "mappings": ";AAGA,SAAS,SAAS,wBAAwB;AAC1C,SAAS,SAAS,iBAAiB;AACnC,SAAS,iBAAiB;AAO1B,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAErB,SAAR,yBAA2C,UAAW;AAC5D,SAAO;AAAA,IACN,CAAE,WAAY;AAGb,UAAK,CAAE,UAAW;AACjB;AAAA,MACD;AAEA,YAAM,EAAE,UAAU,2BAA2B,IAC5C,OAAQ,gBAAiB;AAE1B,YAAM,uBAAuB;AAC7B,YAAM,8BAA8B;AAAA,QACnC;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,UAAK,CAAE,6BAA6B,QAAS;AAC5C;AAAA,MACD;AAEA,YAAM,EAAE,iBAAiB,sBAAsB,IAC9C,OAAQ,SAAU;AAEnB,YAAM,eAAe,gBAAgB;AACrC,YAAM,2BACL,cAAc,+BAA+B,CAAC;AAE/C,YAAM,eAAe,yBAAyB,IAAK,CAAE,UAAY;AAAA,QAChE,GAAG;AAAA,QACH,MAAM,oBAAqB,KAAK,IAAK;AAAA,MACtC,EAAI;AAEJ,iBAAY,wBAAwB,6BAA8B;AACjE,cAAM,oBAAoB,SAAU,oBAAqB;AAIzD,cAAM,EAAE,QAAQ,cAAc,YAAY,KAAK,IAC9C,kBAAkB;AACnB,cAAM,uBAAuB;AAAA,UAC5B;AAAA,UACA;AAAA,QACD;AACA,cAAM,qBAAqB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAIA,YAAK,oBAAoB,MAAO;AAC/B,iBAAO,aAAa;AAAA,YACnB,CAAE,gBACD,YAAY,SAAS,mBACrB,YAAY,SAAS,mBAAmB;AAAA,UAC1C,GAAG;AAAA,QACJ;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD;", "names": [] }