UNPKG

@wordpress/block-library

Version:
95 lines (92 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useArchiveLabel = useArchiveLabel; var _coreData = require("@wordpress/core-data"); var _data = require("@wordpress/data"); /** * WordPress dependencies */ function useArchiveLabel() { const templateSlug = (0, _data.useSelect)(select => { // @wordpress/block-library should not depend on @wordpress/editor. // Blocks can be loaded into a *non-post* block editor, so to avoid // declaring @wordpress/editor as a dependency, we must access its // store by string. // The solution here is to split WP specific blocks from generic blocks. // eslint-disable-next-line @wordpress/data-no-store-string-literals const { getCurrentPostId, getCurrentPostType, getCurrentTemplateId } = select('core/editor'); const currentPostType = getCurrentPostType(); const templateId = getCurrentTemplateId() || (currentPostType === 'wp_template' ? getCurrentPostId() : null); return templateId ? select(_coreData.store).getEditedEntityRecord('postType', 'wp_template', templateId)?.slug : null; }, []); const taxonomyMatches = templateSlug?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/); let taxonomy; let term; let isAuthor = false; let authorSlug; if (taxonomyMatches) { // If is for a all taxonomies of a type if (taxonomyMatches[1]) { taxonomy = taxonomyMatches[2] ? taxonomyMatches[2] : taxonomyMatches[1]; } // If is for a all taxonomies of a type else if (taxonomyMatches[3]) { taxonomy = taxonomyMatches[6] ? taxonomyMatches[6] : taxonomyMatches[4]; term = taxonomyMatches[7]; } taxonomy = taxonomy === 'tag' ? 'post_tag' : taxonomy; //getTaxonomy( 'category' ); //wp.data.select('core').getEntityRecords( 'taxonomy', 'category', {slug: 'newcat'} ); } else { const authorMatches = templateSlug?.match(/^(author)$|^author-(.+)$/); if (authorMatches) { isAuthor = true; if (authorMatches[2]) { authorSlug = authorMatches[2]; } } } return (0, _data.useSelect)(select => { const { getEntityRecords, getTaxonomy, getAuthors } = select(_coreData.store); let archiveTypeLabel; let archiveNameLabel; if (taxonomy) { archiveTypeLabel = getTaxonomy(taxonomy)?.labels?.singular_name; } if (term) { const records = getEntityRecords('taxonomy', taxonomy, { slug: term, per_page: 1 }); if (records && records[0]) { archiveNameLabel = records[0].name; } } if (isAuthor) { archiveTypeLabel = 'Author'; if (authorSlug) { const authorRecords = getAuthors({ slug: authorSlug }); if (authorRecords && authorRecords[0]) { archiveNameLabel = authorRecords[0].name; } } } return { archiveTypeLabel, archiveNameLabel }; }, [authorSlug, isAuthor, taxonomy, term]); } //# sourceMappingURL=use-archive-label.js.map