@wordpress/edit-site 6.26.0 → 6.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,7 +67,14 @@ const usePublicPostTypes = () => {
67
67
  return postTypes?.filter(({
68
68
  viewable,
69
69
  slug
70
- }) => viewable && !excludedPostTypes.includes(slug));
70
+ }) => viewable && !excludedPostTypes.includes(slug)).sort((a, b) => {
71
+ // Sort post types alphabetically by name,
72
+ // but exclude the built-in 'post' type from sorting.
73
+ if (a.slug === 'post' || b.slug === 'post') {
74
+ return 0;
75
+ }
76
+ return a.name.localeCompare(b.name);
77
+ });
71
78
  }, [postTypes]);
72
79
  };
73
80
  const usePublicTaxonomies = () => {
@@ -314,7 +321,7 @@ export const useTaxonomiesMenuItems = onClickMenuItem => {
314
321
  let menuItemTitle = labels.template_name || labels.singular_name;
315
322
  if (_needsUniqueIdentifier) {
316
323
  menuItemTitle = labels.template_name ? sprintf(
317
- // translators: 1: Name of the template e.g: "Products by Category". 2s: Slug of the taxonomy e.g: "product_cat".
324
+ // translators: 1: Name of the template e.g: "Products by Category". 2: Slug of the taxonomy e.g: "product_cat".
318
325
  _x('%1$s (%2$s)', 'taxonomy template menu label'), labels.template_name, slug) : sprintf(
319
326
  // translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat".
320
327
  _x('%1$s (%2$s)', 'taxonomy menu label'), labels.singular_name, slug);
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","store","coreStore","decodeEntities","useMemo","useCallback","__","_x","sprintf","blockMeta","post","archive","TEMPLATE_POST_TYPE","EMPTY_OBJECT","getValueFromObjectPath","object","path","value","split","forEach","fieldName","mapToIHasNameAndId","entities","map","entity","name","useExistingTemplates","select","getEntityRecords","per_page","useDefaultTemplateTypes","getCurrentTheme","default_template_types","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","usePostTypeArchiveMenuItems","publicPostTypes","postTypesWithArchives","postType","has_archive","existingTemplates","postTypeLabels","reduce","accumulator","labels","singularName","singular_name","toLowerCase","needsUniqueIdentifier","some","existingTemplate","title","description","icon","startsWith","slice","templatePrefix","usePostTypeMenuItems","onClickMenuItem","defaultTemplateTypes","templateLabels","templateName","template_name","templatePrefixes","suffix","postTypesInfo","useEntitiesInfo","existingTemplateSlugs","menuItems","generalTemplateSlug","defaultTemplateType","find","_slug","hasGeneralTemplate","_needsUniqueIdentifier","menuItemTitle","menuItem","hasEntities","onClick","template","type","config","recordNamePath","queryArgs","search","_fields","orderBy","exclude","existingEntitiesIds","getSpecificTemplate","suggestion","templateSlug","push","postTypesMenuItems","key","defaultPostTypesMenuItems","useTaxonomiesMenuItems","publicTaxonomies","taxonomyLabels","taxonomiesInfo","taxonomy","taxonomiesMenuItems","defaultTaxonomiesMenuItems","USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX","user","USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS","who","useAuthorMenuItem","authorInfo","authorMenuItem","search_items","not_found","all_items","useExistingTemplateSlugs","existingSlugs","Object","entries","prefix","slugsWithTemplates","_accumulator","_prefix","substring","length","useTemplatesToExclude","entityName","additionalQueryParameters","slugsToExcludePerEntity","recordsToExcludePerEntity","entitiesWithTemplates","context","entitiesHasRecords","keys","id","entitiesInfo"],"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nconst EMPTY_OBJECT = {};\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\nconst getValueFromObjectPath = ( object, path ) => {\n\tlet value = object;\n\tpath.split( '.' ).forEach( ( fieldName ) => {\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value;\n};\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of entities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( getValueFromObjectPath( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean} hasEntities If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()?.default_template_types || [],\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst postTypeLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\t\taccumulator[ singularName ] =\n\t\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof postType.icon === 'string' &&\n\t\t\t\t\t\t\tpostType.icon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst templateLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst templateName = (\n\t\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t\t).toLowerCase();\n\t\t\t\taccumulator[ templateName ] =\n\t\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\treturn templateLabels[ templateName ] > 1 && templateName !== slug;\n\t\t},\n\t\t[ templateLabels ]\n\t);\n\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle =\n\t\t\t\tlabels.template_name ||\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\t\tlabels.singular_name\n\t\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Single Item: Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'post type menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the post type e.g: \"Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'Single item: %1$s (%2$s)',\n\t\t\t\t\t\t\t\t'post type menu label'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof icon === 'string' &&\n\t\t\t\t\t\t\ticon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\taccumulator[ templateName ] =\n\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst templateName = (\n\t\t\tlabels.template_name || labels.singular_name\n\t\t).toLowerCase();\n\t\treturn taxonomyLabels[ templateName ] > 1 && templateName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.template_name || labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Products by Category\". 2s: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy template menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the taxonomy e.g: \"Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy menu label' ),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = `author-${ suggestion.slug }`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that filters all the existing templates by the given\n * object with the entity's slug as key and the template prefix as value.\n *\n * Example:\n * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]\n * `templatePrefixes` is: { post_tag: 'tag' }\n * It will return: { post_tag: ['apple'] }\n *\n * Note: We append the `-` to the given template prefix in this function for our checks.\n *\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.\n */\nconst useExistingTemplateSlugs = ( templatePrefixes ) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst existingSlugs = useMemo( () => {\n\t\treturn Object.entries( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, [ slug, prefix ] ) => {\n\t\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\t\tconst _prefix = `${ prefix }-`;\n\t\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\t\texistingTemplate.slug.substring(\n\t\t\t\t\t\t\t\t\t_prefix.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tif ( slugsWithTemplates.length ) {\n\t\t\t\t\taccumulator[ slug ] = slugsWithTemplates;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, existingTemplates ] );\n\treturn existingSlugs;\n};\n\n/**\n * Helper hook that finds the existing records with an associated template,\n * as they need to be excluded from the template suggestions.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst slugsToExcludePerEntity =\n\t\tuseExistingTemplateSlugs( templatePrefixes );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.entries( slugsToExcludePerEntity || {} ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst entitiesWithTemplates = select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\tslug: slugsWithTemplates,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} );\n\t\t\t\t\tif ( entitiesWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = entitiesWithTemplates;\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ slugsToExcludePerEntity ]\n\t);\n\treturn recordsToExcludePerEntity;\n};\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = EMPTY_OBJECT\n) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes,\n\t\tadditionalQueryParameters\n\t);\n\tconst entitiesHasRecords = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t\t) || [];\n\t\t\t\t\taccumulator[ slug ] = !! select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} )?.length;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[\n\t\t\ttemplatePrefixes,\n\t\t\trecordsToExcludePerEntity,\n\t\t\tentityName,\n\t\t\tadditionalQueryParameters,\n\t\t]\n\t);\n\tconst entitiesInfo = useMemo( () => {\n\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, slug ) => {\n\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t) || [];\n\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\thasEntities: entitiesHasRecords[ slug ],\n\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t};\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords ] );\n\treturn entitiesInfo;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAoB;AACzD,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,SAAS,EAAEC,IAAI,EAAEC,OAAO,QAAQ,kBAAkB;;AAE3D;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,MAAMC,YAAY,GAAG,CAAC,CAAC;;AAEvB;AACA;AACA;AACA;AACA;;AAEA,MAAMC,sBAAsB,GAAGA,CAAEC,MAAM,EAAEC,IAAI,KAAM;EAClD,IAAIC,KAAK,GAAGF,MAAM;EAClBC,IAAI,CAACE,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,SAAS,IAAM;IAC3CH,KAAK,GAAGA,KAAK,GAAIG,SAAS,CAAE;EAC7B,CAAE,CAAC;EACH,OAAOH,KAAK;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,kBAAkB,GAAGA,CAAEC,QAAQ,EAAEN,IAAI,KAAM;EACvD,OAAO,CAAEM,QAAQ,IAAI,EAAE,EAAGC,GAAG,CAAIC,MAAM,KAAQ;IAC9C,GAAGA,MAAM;IACTC,IAAI,EAAEtB,cAAc,CAAEW,sBAAsB,CAAEU,MAAM,EAAER,IAAK,CAAE;EAC9D,CAAC,CAAG,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMU,oBAAoB,GAAGA,CAAA,KAAM;EACzC,OAAO1B,SAAS,CACb2B,MAAM,IACPA,MAAM,CAAEzB,SAAU,CAAC,CAAC0B,gBAAgB,CACnC,UAAU,EACVhB,kBAAkB,EAClB;IACCiB,QAAQ,EAAE,CAAC;EACZ,CACD,CAAC,EACF,EACD,CAAC;AACF,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;EAC5C,OAAO9B,SAAS,CACb2B,MAAM,IACPA,MAAM,CAAEzB,SAAU,CAAC,CAAC6B,eAAe,CAAC,CAAC,EAAEC,sBAAsB,IAAI,EAAE,EACpE,EACD,CAAC;AACF,CAAC;AAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EAChC,MAAMC,SAAS,GAAGlC,SAAS,CACxB2B,MAAM,IAAMA,MAAM,CAAEzB,SAAU,CAAC,CAACiC,YAAY,CAAE;IAAEN,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC,EAClE,EACD,CAAC;EACD,OAAOzB,OAAO,CAAE,MAAM;IACrB,MAAMgC,iBAAiB,GAAG,CAAE,YAAY,CAAE;IAC1C,OAAOF,SAAS,EAAEG,MAAM,CACvB,CAAE;MAAEC,QAAQ;MAAEC;IAAK,CAAC,KACnBD,QAAQ,IAAI,CAAEF,iBAAiB,CAACI,QAAQ,CAAED,IAAK,CACjD,CAAC;EACF,CAAC,EAAE,CAAEL,SAAS,CAAG,CAAC;AACnB,CAAC;AAED,MAAMO,mBAAmB,GAAGA,CAAA,KAAM;EACjC,MAAMC,UAAU,GAAG1C,SAAS,CACzB2B,MAAM,IAAMA,MAAM,CAAEzB,SAAU,CAAC,CAACyC,aAAa,CAAE;IAAEd,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC,EACnE,EACD,CAAC;EACD,OAAOzB,OAAO,CAAE,MAAM;IACrB,OAAOsC,UAAU,EAAEL,MAAM,CACxB,CAAE;MAAEO;IAAW,CAAC,KAAMA,UAAU,EAAEC,kBACnC,CAAC;EACF,CAAC,EAAE,CAAEH,UAAU,CAAG,CAAC;AACpB,CAAC;AAED,OAAO,SAASI,2BAA2BA,CAAA,EAAG;EAC7C,MAAMC,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAC5C,MAAMe,qBAAqB,GAAG5C,OAAO,CACpC,MAAM2C,eAAe,EAAEV,MAAM,CAAIY,QAAQ,IAAMA,QAAQ,CAACC,WAAY,CAAC,EACrE,CAAEH,eAAe,CAClB,CAAC;EACD,MAAMI,iBAAiB,GAAGzB,oBAAoB,CAAC,CAAC;EAChD;EACA;EACA,MAAM0B,cAAc,GAAGhD,OAAO,CAC7B,MACC2C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IACvD,MAAMC,YAAY,GAAGD,MAAM,CAACE,aAAa,CAACC,WAAW,CAAC,CAAC;IACvDJ,WAAW,CAAEE,YAAY,CAAE,GAC1B,CAAEF,WAAW,CAAEE,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOF,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAMY,qBAAqB,GAAGtD,WAAW,CACxC,CAAE;IAAEkD,MAAM;IAAEhB;EAAK,CAAC,KAAM;IACvB,MAAMiB,YAAY,GAAGD,MAAM,CAACE,aAAa,CAACC,WAAW,CAAC,CAAC;IACvD,OAAON,cAAc,CAAEI,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKjB,IAAI;EACnE,CAAC,EACD,CAAEa,cAAc,CACjB,CAAC;EACD,OAAOhD,OAAO,CACb,MACC4C,qBAAqB,EAClBX,MAAM,CACLY,QAAQ,IACT,CAAE,CAAEE,iBAAiB,IAAI,EAAE,EAAGS,IAAI,CAC/BC,gBAAgB,IACjBA,gBAAgB,CAACtB,IAAI,KACrB,UAAU,GAAGU,QAAQ,CAACV,IACxB,CACF,CAAC,CACAhB,GAAG,CAAI0B,QAAQ,IAAM;IACrB,IAAIa,KAAK;IACT,IAAKH,qBAAqB,CAAEV,QAAS,CAAC,EAAG;MACxCa,KAAK,GAAGtD,OAAO;MACd;MACAF,EAAE,CAAE,sBAAuB,CAAC,EAC5B2C,QAAQ,CAACM,MAAM,CAACE,aAAa,EAC7BR,QAAQ,CAACV,IACV,CAAC;IACF,CAAC,MAAM;MACNuB,KAAK,GAAGtD,OAAO;MACd;MACAF,EAAE,CAAE,aAAc,CAAC,EACnB2C,QAAQ,CAACM,MAAM,CAACE,aACjB,CAAC;IACF;IACA,OAAO;MACNlB,IAAI,EAAE,UAAU,GAAGU,QAAQ,CAACV,IAAI;MAChCwB,WAAW,EAAEvD,OAAO;MACnB;MACAF,EAAE,CACD,wDACD,CAAC,EACD2C,QAAQ,CAACM,MAAM,CAACE,aACjB,CAAC;MACDK,KAAK;MACL;MACA;MACA;MACAE,IAAI,EACH,OAAOf,QAAQ,CAACe,IAAI,KAAK,QAAQ,IACjCf,QAAQ,CAACe,IAAI,CAACC,UAAU,CAAE,YAAa,CAAC,GACrChB,QAAQ,CAACe,IAAI,CAACE,KAAK,CAAE,EAAG,CAAC,GACzBvD,OAAO;MACXwD,cAAc,EAAE;IACjB,CAAC;EACF,CAAE,CAAC,IAAI,EAAE,EACX,CAAEnB,qBAAqB,EAAEG,iBAAiB,EAAEQ,qBAAqB,CAClE,CAAC;AACF;AAEA,OAAO,MAAMS,oBAAoB,GAAKC,eAAe,IAAM;EAC1D,MAAMtB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAC5C,MAAMkB,iBAAiB,GAAGzB,oBAAoB,CAAC,CAAC;EAChD,MAAM4C,oBAAoB,GAAGxC,uBAAuB,CAAC,CAAC;EACtD;EACA;EACA,MAAMyC,cAAc,GAAGnE,OAAO,CAC7B,MACC2C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IACvD,MAAMiB,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACfJ,WAAW,CAAEkB,YAAY,CAAE,GAC1B,CAAElB,WAAW,CAAEkB,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOlB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAMY,qBAAqB,GAAGtD,WAAW,CACxC,CAAE;IAAEkD,MAAM;IAAEhB;EAAK,CAAC,KAAM;IACvB,MAAMiC,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACf,OAAOa,cAAc,CAAEC,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKjC,IAAI;EACnE,CAAC,EACD,CAAEgC,cAAc,CACjB,CAAC;;EAED;EACA,MAAMG,gBAAgB,GAAGtE,OAAO,CAC/B,MACC2C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEf;EAAK,CAAC,KAAM;IACrD,IAAIoC,MAAM,GAAGpC,IAAI;IACjB,IAAKA,IAAI,KAAK,MAAM,EAAG;MACtBoC,MAAM,GAAG,UAAWA,MAAM,EAAG;IAC9B;IACArB,WAAW,CAAEf,IAAI,CAAE,GAAGoC,MAAM;IAC5B,OAAOrB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAM6B,aAAa,GAAGC,eAAe,CAAE,UAAU,EAAEH,gBAAiB,CAAC;EACrE,MAAMI,qBAAqB,GAAG,CAAE3B,iBAAiB,IAAI,EAAE,EAAG5B,GAAG,CAC5D,CAAE;IAAEgB;EAAK,CAAC,KAAMA,IACjB,CAAC;EACD,MAAMwC,SAAS,GAAG,CAAEhC,eAAe,IAAI,EAAE,EAAGM,MAAM,CACjD,CAAEC,WAAW,EAAEL,QAAQ,KAAM;IAC5B,MAAM;MAAEV,IAAI;MAAEgB,MAAM;MAAES;IAAK,CAAC,GAAGf,QAAQ;IACvC;IACA;IACA;IACA,MAAM+B,mBAAmB,GAAGN,gBAAgB,CAAEnC,IAAI,CAAE;IACpD,MAAM0C,mBAAmB,GAAGX,oBAAoB,EAAEY,IAAI,CACrD,CAAE;MAAE3C,IAAI,EAAE4C;IAAM,CAAC,KAAMA,KAAK,KAAKH,mBAClC,CAAC;IACD,MAAMI,kBAAkB,GACvBN,qBAAqB,EAAEtC,QAAQ,CAAEwC,mBAAoB,CAAC;IACvD,MAAMK,sBAAsB,GAAG1B,qBAAqB,CAAEV,QAAS,CAAC;IAChE,IAAIqC,aAAa,GAChB/B,MAAM,CAACkB,aAAa,IACpBjE,OAAO;IACN;IACAF,EAAE,CAAE,iBAAkB,CAAC,EACvBiD,MAAM,CAACE,aACR,CAAC;IACF,IAAK4B,sBAAsB,EAAG;MAC7BC,aAAa,GAAG/B,MAAM,CAACkB,aAAa,GACjCjE,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,sBAAuB,CAAC,EAC3CgD,MAAM,CAACkB,aAAa,EACpBlC,IACA,CAAC,GACD/B,OAAO;MACP;MACAD,EAAE,CACD,0BAA0B,EAC1B,sBACD,CAAC,EACDgD,MAAM,CAACE,aAAa,EACpBlB,IACA,CAAC;IACL;IACA,MAAMgD,QAAQ,GAAGN,mBAAmB,GACjC;MACA,GAAGA,mBAAmB;MACtBd,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;IACtC,CAAC,GACD;MACAA,IAAI,EAAEyC,mBAAmB;MACzBlB,KAAK,EAAEwB,aAAa;MACpBvB,WAAW,EAAEvD,OAAO;MACnB;MACAF,EAAE,CAAE,6BAA8B,CAAC,EACnCiD,MAAM,CAACE,aACR,CAAC;MACD;MACA;MACA;MACAO,IAAI,EACH,OAAOA,IAAI,KAAK,QAAQ,IACxBA,IAAI,CAACC,UAAU,CAAE,YAAa,CAAC,GAC5BD,IAAI,CAACE,KAAK,CAAE,EAAG,CAAC,GAChBxD,IAAI;MACRyD,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;IACtC,CAAC;IACJ,MAAMiD,WAAW,GAAGZ,aAAa,GAAIrC,IAAI,CAAE,EAAEiD,WAAW;IACxD;IACA,IAAKA,WAAW,EAAG;MAClBD,QAAQ,CAACE,OAAO,GAAKC,QAAQ,IAAM;QAClCrB,eAAe,CAAE;UAChBsB,IAAI,EAAE,UAAU;UAChBpD,IAAI;UACJqD,MAAM,EAAE;YACPC,cAAc,EAAE,gBAAgB;YAChCC,SAAS,EAAEA,CAAE;cAAEC;YAAO,CAAC,KAAM;cAC5B,OAAO;gBACNC,OAAO,EAAE,oBAAoB;gBAC7BC,OAAO,EAAEF,MAAM,GAAG,WAAW,GAAG,UAAU;gBAC1CG,OAAO,EACNtB,aAAa,CAAErC,IAAI,CAAE,CACnB4D;cACJ,CAAC;YACF,CAAC;YACDC,mBAAmB,EAAIC,UAAU,IAAM;cACtC,MAAMC,YAAY,GAAG,GAAI5B,gBAAgB,CAAEnC,IAAI,CAAE,IAAM8D,UAAU,CAAC9D,IAAI,EAAG;cACzE,OAAO;gBACNuB,KAAK,EAAEwC,YAAY;gBACnB/D,IAAI,EAAE+D,YAAY;gBAClBnC,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;cACvC,CAAC;YACF;UACD,CAAC;UACDgB,MAAM;UACN6B,kBAAkB;UAClBM;QACD,CAAE,CAAC;MACJ,CAAC;IACF;IACA;IACA;IACA,IAAK,CAAEN,kBAAkB,IAAII,WAAW,EAAG;MAC1ClC,WAAW,CAACiD,IAAI,CAAEhB,QAAS,CAAC;IAC7B;IACA,OAAOjC,WAAW;EACnB,CAAC,EACD,EACD,CAAC;EACD;EACA;EACA,MAAMkD,kBAAkB,GAAGpG,OAAO,CACjC,MACC2E,SAAS,CAAC1B,MAAM,CACf,CAAEC,WAAW,EAAEL,QAAQ,KAAM;IAC5B,MAAM;MAAEV;IAAK,CAAC,GAAGU,QAAQ;IACzB,IAAIwD,GAAG,GAAG,oBAAoB;IAC9B,IAAKlE,IAAI,KAAK,MAAM,EAAG;MACtBkE,GAAG,GAAG,2BAA2B;IAClC;IACAnD,WAAW,CAAEmD,GAAG,CAAE,CAACF,IAAI,CAAEtD,QAAS,CAAC;IACnC,OAAOK,WAAW;EACnB,CAAC,EACD;IAAEoD,yBAAyB,EAAE,EAAE;IAAEF,kBAAkB,EAAE;EAAG,CACzD,CAAC,EACF,CAAEzB,SAAS,CACZ,CAAC;EACD,OAAOyB,kBAAkB;AAC1B,CAAC;AAED,OAAO,MAAMG,sBAAsB,GAAKtC,eAAe,IAAM;EAC5D,MAAMuC,gBAAgB,GAAGnE,mBAAmB,CAAC,CAAC;EAC9C,MAAMU,iBAAiB,GAAGzB,oBAAoB,CAAC,CAAC;EAChD,MAAM4C,oBAAoB,GAAGxC,uBAAuB,CAAC,CAAC;EACtD;EACA,MAAM4C,gBAAgB,GAAGtE,OAAO,CAC/B,MACCwG,gBAAgB,EAAEvD,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEf;EAAK,CAAC,KAAM;IACtD,IAAIoC,MAAM,GAAGpC,IAAI;IACjB,IAAK,CAAE,CAAE,UAAU,EAAE,UAAU,CAAE,CAACC,QAAQ,CAAED,IAAK,CAAC,EAAG;MACpDoC,MAAM,GAAG,YAAaA,MAAM,EAAG;IAChC;IACA,IAAKpC,IAAI,KAAK,UAAU,EAAG;MAC1BoC,MAAM,GAAG,KAAK;IACf;IACArB,WAAW,CAAEf,IAAI,CAAE,GAAGoC,MAAM;IAC5B,OAAOrB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEsD,gBAAgB,CACnB,CAAC;EACD;EACA;EACA,MAAMC,cAAc,GAAGD,gBAAgB,EAAEvD,MAAM,CAC9C,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IAC9B,MAAMiB,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACfJ,WAAW,CAAEkB,YAAY,CAAE,GAC1B,CAAElB,WAAW,CAAEkB,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOlB,WAAW;EACnB,CAAC,EACD,CAAC,CACF,CAAC;EACD,MAAMK,qBAAqB,GAAGA,CAAEJ,MAAM,EAAEhB,IAAI,KAAM;IACjD,IAAK,CAAE,UAAU,EAAE,UAAU,CAAE,CAACC,QAAQ,CAAED,IAAK,CAAC,EAAG;MAClD,OAAO,KAAK;IACb;IACA,MAAMiC,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACf,OAAOmD,cAAc,CAAErC,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKjC,IAAI;EACnE,CAAC;EACD,MAAMuE,cAAc,GAAGjC,eAAe,CAAE,UAAU,EAAEH,gBAAiB,CAAC;EACtE,MAAMI,qBAAqB,GAAG,CAAE3B,iBAAiB,IAAI,EAAE,EAAG5B,GAAG,CAC5D,CAAE;IAAEgB;EAAK,CAAC,KAAMA,IACjB,CAAC;EACD,MAAMwC,SAAS,GAAG,CAAE6B,gBAAgB,IAAI,EAAE,EAAGvD,MAAM,CAClD,CAAEC,WAAW,EAAEyD,QAAQ,KAAM;IAC5B,MAAM;MAAExE,IAAI;MAAEgB;IAAO,CAAC,GAAGwD,QAAQ;IACjC;IACA;IACA;IACA,MAAM/B,mBAAmB,GAAGN,gBAAgB,CAAEnC,IAAI,CAAE;IACpD,MAAM0C,mBAAmB,GAAGX,oBAAoB,EAAEY,IAAI,CACrD,CAAE;MAAE3C,IAAI,EAAE4C;IAAM,CAAC,KAAMA,KAAK,KAAKH,mBAClC,CAAC;IACD,MAAMI,kBAAkB,GACvBN,qBAAqB,EAAEtC,QAAQ,CAAEwC,mBAAoB,CAAC;IACvD,MAAMK,sBAAsB,GAAG1B,qBAAqB,CACnDJ,MAAM,EACNhB,IACD,CAAC;IACD,IAAI+C,aAAa,GAAG/B,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa;IAChE,IAAK4B,sBAAsB,EAAG;MAC7BC,aAAa,GAAG/B,MAAM,CAACkB,aAAa,GACjCjE,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,8BAA+B,CAAC,EACnDgD,MAAM,CAACkB,aAAa,EACpBlC,IACA,CAAC,GACD/B,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,qBAAsB,CAAC,EAC1CgD,MAAM,CAACE,aAAa,EACpBlB,IACA,CAAC;IACL;IACA,MAAMgD,QAAQ,GAAGN,mBAAmB,GACjC;MACA,GAAGA,mBAAmB;MACtBd,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;IACtC,CAAC,GACD;MACAA,IAAI,EAAEyC,mBAAmB;MACzBlB,KAAK,EAAEwB,aAAa;MACpBvB,WAAW,EAAEvD,OAAO;MACnB;MACAF,EAAE,CAAE,wBAAyB,CAAC,EAC9BiD,MAAM,CAACE,aACR,CAAC;MACDO,IAAI,EAAEvD,SAAS;MACf0D,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;IACtC,CAAC;IACJ,MAAMiD,WAAW,GAAGsB,cAAc,GAAIvE,IAAI,CAAE,EAAEiD,WAAW;IACzD;IACA,IAAKA,WAAW,EAAG;MAClBD,QAAQ,CAACE,OAAO,GAAKC,QAAQ,IAAM;QAClCrB,eAAe,CAAE;UAChBsB,IAAI,EAAE,UAAU;UAChBpD,IAAI;UACJqD,MAAM,EAAE;YACPE,SAAS,EAAEA,CAAE;cAAEC;YAAO,CAAC,KAAM;cAC5B,OAAO;gBACNC,OAAO,EAAE,mBAAmB;gBAC5BC,OAAO,EAAEF,MAAM,GAAG,MAAM,GAAG,OAAO;gBAClCG,OAAO,EACNY,cAAc,CAAEvE,IAAI,CAAE,CACpB4D;cACJ,CAAC;YACF,CAAC;YACDC,mBAAmB,EAAIC,UAAU,IAAM;cACtC,MAAMC,YAAY,GAAG,GAAI5B,gBAAgB,CAAEnC,IAAI,CAAE,IAAM8D,UAAU,CAAC9D,IAAI,EAAG;cACzE,OAAO;gBACNuB,KAAK,EAAEwC,YAAY;gBACnB/D,IAAI,EAAE+D,YAAY;gBAClBnC,cAAc,EAAEO,gBAAgB,CAAEnC,IAAI;cACvC,CAAC;YACF;UACD,CAAC;UACDgB,MAAM;UACN6B,kBAAkB;UAClBM;QACD,CAAE,CAAC;MACJ,CAAC;IACF;IACA;IACA;IACA,IAAK,CAAEN,kBAAkB,IAAII,WAAW,EAAG;MAC1ClC,WAAW,CAACiD,IAAI,CAAEhB,QAAS,CAAC;IAC7B;IACA,OAAOjC,WAAW;EACnB,CAAC,EACD,EACD,CAAC;EACD;EACA;EACA,MAAM0D,mBAAmB,GAAG5G,OAAO,CAClC,MACC2E,SAAS,CAAC1B,MAAM,CACf,CAAEC,WAAW,EAAEyD,QAAQ,KAAM;IAC5B,MAAM;MAAExE;IAAK,CAAC,GAAGwE,QAAQ;IACzB,IAAIN,GAAG,GAAG,qBAAqB;IAC/B,IAAK,CAAE,UAAU,EAAE,KAAK,CAAE,CAACjE,QAAQ,CAAED,IAAK,CAAC,EAAG;MAC7CkE,GAAG,GAAG,4BAA4B;IACnC;IACAnD,WAAW,CAAEmD,GAAG,CAAE,CAACF,IAAI,CAAEQ,QAAS,CAAC;IACnC,OAAOzD,WAAW;EACnB,CAAC,EACD;IAAE2D,0BAA0B,EAAE,EAAE;IAAED,mBAAmB,EAAE;EAAG,CAC3D,CAAC,EACF,CAAEjC,SAAS,CACZ,CAAC;EACD,OAAOiC,mBAAmB;AAC3B,CAAC;AAED,MAAME,oCAAoC,GAAG;EAAEC,IAAI,EAAE;AAAS,CAAC;AAC/D,MAAMC,qCAAqC,GAAG;EAAED,IAAI,EAAE;IAAEE,GAAG,EAAE;EAAU;AAAE,CAAC;AAC1E,OAAO,SAASC,iBAAiBA,CAAEjD,eAAe,EAAG;EACpD,MAAMlB,iBAAiB,GAAGzB,oBAAoB,CAAC,CAAC;EAChD,MAAM4C,oBAAoB,GAAGxC,uBAAuB,CAAC,CAAC;EACtD,MAAMyF,UAAU,GAAG1C,eAAe,CACjC,MAAM,EACNqC,oCAAoC,EACpCE,qCACD,CAAC;EACD,IAAII,cAAc,GAAGlD,oBAAoB,EAAEY,IAAI,CAC9C,CAAE;IAAE3C;EAAK,CAAC,KAAMA,IAAI,KAAK,QAC1B,CAAC;EACD,IAAK,CAAEiF,cAAc,EAAG;IACvBA,cAAc,GAAG;MAChBzD,WAAW,EAAEzD,EAAE,CACd,mDACD,CAAC;MACDiC,IAAI,EAAE,QAAQ;MACduB,KAAK,EAAE;IACR,CAAC;EACF;EACA,MAAMsB,kBAAkB,GAAG,CAAC,CAAEjC,iBAAiB,EAAE+B,IAAI,CACpD,CAAE;IAAE3C;EAAK,CAAC,KAAMA,IAAI,KAAK,QAC1B,CAAC;EACD,IAAKgF,UAAU,CAACJ,IAAI,EAAE3B,WAAW,EAAG;IACnCgC,cAAc,GAAG;MAAE,GAAGA,cAAc;MAAErD,cAAc,EAAE;IAAS,CAAC;IAChEqD,cAAc,CAAC/B,OAAO,GAAKC,QAAQ,IAAM;MACxCrB,eAAe,CAAE;QAChBsB,IAAI,EAAE,MAAM;QACZpD,IAAI,EAAE,MAAM;QACZqD,MAAM,EAAE;UACPE,SAAS,EAAEA,CAAE;YAAEC;UAAO,CAAC,KAAM;YAC5B,OAAO;cACNC,OAAO,EAAE,mBAAmB;cAC5BC,OAAO,EAAEF,MAAM,GAAG,MAAM,GAAG,iBAAiB;cAC5CG,OAAO,EAAEqB,UAAU,CAACJ,IAAI,CAAChB,mBAAmB;cAC5CkB,GAAG,EAAE;YACN,CAAC;UACF,CAAC;UACDjB,mBAAmB,EAAIC,UAAU,IAAM;YACtC,MAAMC,YAAY,GAAG,UAAWD,UAAU,CAAC9D,IAAI,EAAG;YAClD,OAAO;cACNuB,KAAK,EAAEwC,YAAY;cACnB/D,IAAI,EAAE+D,YAAY;cAClBnC,cAAc,EAAE;YACjB,CAAC;UACF;QACD,CAAC;QACDZ,MAAM,EAAE;UACPE,aAAa,EAAEnD,EAAE,CAAE,QAAS,CAAC;UAC7BmH,YAAY,EAAEnH,EAAE,CAAE,gBAAiB,CAAC;UACpCoH,SAAS,EAAEpH,EAAE,CAAE,mBAAoB,CAAC;UACpCqH,SAAS,EAAErH,EAAE,CAAE,aAAc;QAC9B,CAAC;QACD8E,kBAAkB;QAClBM;MACD,CAAE,CAAC;IACJ,CAAC;EACF;EACA,IAAK,CAAEN,kBAAkB,IAAImC,UAAU,CAACJ,IAAI,EAAE3B,WAAW,EAAG;IAC3D,OAAOgC,cAAc;EACtB;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,wBAAwB,GAAKlD,gBAAgB,IAAM;EACxD,MAAMvB,iBAAiB,GAAGzB,oBAAoB,CAAC,CAAC;EAChD,MAAMmG,aAAa,GAAGzH,OAAO,CAAE,MAAM;IACpC,OAAO0H,MAAM,CAACC,OAAO,CAAErD,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CACrD,CAAEC,WAAW,EAAE,CAAEf,IAAI,EAAEyF,MAAM,CAAE,KAAM;MACpC,MAAMC,kBAAkB,GAAG,CAAE9E,iBAAiB,IAAI,EAAE,EAAGE,MAAM,CAC5D,CAAE6E,YAAY,EAAErE,gBAAgB,KAAM;QACrC,MAAMsE,OAAO,GAAG,GAAIH,MAAM,GAAI;QAC9B,IAAKnE,gBAAgB,CAACtB,IAAI,CAAC0B,UAAU,CAAEkE,OAAQ,CAAC,EAAG;UAClDD,YAAY,CAAC3B,IAAI,CAChB1C,gBAAgB,CAACtB,IAAI,CAAC6F,SAAS,CAC9BD,OAAO,CAACE,MACT,CACD,CAAC;QACF;QACA,OAAOH,YAAY;MACpB,CAAC,EACD,EACD,CAAC;MACD,IAAKD,kBAAkB,CAACI,MAAM,EAAG;QAChC/E,WAAW,CAAEf,IAAI,CAAE,GAAG0F,kBAAkB;MACzC;MACA,OAAO3E,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EAAE,CAAEoB,gBAAgB,EAAEvB,iBAAiB,CAAG,CAAC;EAC5C,OAAO0E,aAAa;AACrB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMS,qBAAqB,GAAGA,CAC7BC,UAAU,EACV7D,gBAAgB,EAChB8D,yBAAyB,GAAG,CAAC,CAAC,KAC1B;EACJ,MAAMC,uBAAuB,GAC5Bb,wBAAwB,CAAElD,gBAAiB,CAAC;EAC7C,MAAMgE,yBAAyB,GAAG1I,SAAS,CACxC2B,MAAM,IAAM;IACb,OAAOmG,MAAM,CAACC,OAAO,CAAEU,uBAAuB,IAAI,CAAC,CAAE,CAAC,CAACpF,MAAM,CAC5D,CAAEC,WAAW,EAAE,CAAEf,IAAI,EAAE0F,kBAAkB,CAAE,KAAM;MAChD,MAAMU,qBAAqB,GAAGhH,MAAM,CACnCzB,SACD,CAAC,CAAC0B,gBAAgB,CAAE2G,UAAU,EAAEhG,IAAI,EAAE;QACrCyD,OAAO,EAAE,IAAI;QACb4C,OAAO,EAAE,MAAM;QACfrG,IAAI,EAAE0F,kBAAkB;QACxB,GAAGO,yBAAyB,CAAEjG,IAAI;MACnC,CAAE,CAAC;MACH,IAAKoG,qBAAqB,EAAEN,MAAM,EAAG;QACpC/E,WAAW,CAAEf,IAAI,CAAE,GAAGoG,qBAAqB;MAC5C;MACA,OAAOrF,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EACD,CAAEmF,uBAAuB,CAC1B,CAAC;EACD,OAAOC,yBAAyB;AACjC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM7D,eAAe,GAAGA,CACvB0D,UAAU,EACV7D,gBAAgB,EAChB8D,yBAAyB,GAAG3H,YAAY,KACpC;EACJ,MAAM6H,yBAAyB,GAAGJ,qBAAqB,CACtDC,UAAU,EACV7D,gBAAgB,EAChB8D,yBACD,CAAC;EACD,MAAMK,kBAAkB,GAAG7I,SAAS,CACjC2B,MAAM,IAAM;IACb,OAAOmG,MAAM,CAACgB,IAAI,CAAEpE,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CAClD,CAAEC,WAAW,EAAEf,IAAI,KAAM;MACxB,MAAM4D,mBAAmB,GACxBuC,yBAAyB,GAAInG,IAAI,CAAE,EAAEhB,GAAG,CACvC,CAAE;QAAEwH;MAAG,CAAC,KAAMA,EACf,CAAC,IAAI,EAAE;MACRzF,WAAW,CAAEf,IAAI,CAAE,GAAG,CAAC,CAAEZ,MAAM,CAC9BzB,SACD,CAAC,CAAC0B,gBAAgB,CAAE2G,UAAU,EAAEhG,IAAI,EAAE;QACrCV,QAAQ,EAAE,CAAC;QACXmE,OAAO,EAAE,IAAI;QACb4C,OAAO,EAAE,MAAM;QACf1C,OAAO,EAAEC,mBAAmB;QAC5B,GAAGqC,yBAAyB,CAAEjG,IAAI;MACnC,CAAE,CAAC,EAAE8F,MAAM;MACX,OAAO/E,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EACD,CACCoB,gBAAgB,EAChBgE,yBAAyB,EACzBH,UAAU,EACVC,yBAAyB,CAE3B,CAAC;EACD,MAAMQ,YAAY,GAAG5I,OAAO,CAAE,MAAM;IACnC,OAAO0H,MAAM,CAACgB,IAAI,CAAEpE,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CAClD,CAAEC,WAAW,EAAEf,IAAI,KAAM;MACxB,MAAM4D,mBAAmB,GACxBuC,yBAAyB,GAAInG,IAAI,CAAE,EAAEhB,GAAG,CACvC,CAAE;QAAEwH;MAAG,CAAC,KAAMA,EACf,CAAC,IAAI,EAAE;MACRzF,WAAW,CAAEf,IAAI,CAAE,GAAG;QACrBiD,WAAW,EAAEqD,kBAAkB,CAAEtG,IAAI,CAAE;QACvC4D;MACD,CAAC;MACD,OAAO7C,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EAAE,CAAEoB,gBAAgB,EAAEgE,yBAAyB,EAAEG,kBAAkB,CAAG,CAAC;EACxE,OAAOG,YAAY;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","store","coreStore","decodeEntities","useMemo","useCallback","__","_x","sprintf","blockMeta","post","archive","TEMPLATE_POST_TYPE","EMPTY_OBJECT","getValueFromObjectPath","object","path","value","split","forEach","fieldName","mapToIHasNameAndId","entities","map","entity","name","useExistingTemplates","select","getEntityRecords","per_page","useDefaultTemplateTypes","getCurrentTheme","default_template_types","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","sort","a","b","localeCompare","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","usePostTypeArchiveMenuItems","publicPostTypes","postTypesWithArchives","postType","has_archive","existingTemplates","postTypeLabels","reduce","accumulator","labels","singularName","singular_name","toLowerCase","needsUniqueIdentifier","some","existingTemplate","title","description","icon","startsWith","slice","templatePrefix","usePostTypeMenuItems","onClickMenuItem","defaultTemplateTypes","templateLabels","templateName","template_name","templatePrefixes","suffix","postTypesInfo","useEntitiesInfo","existingTemplateSlugs","menuItems","generalTemplateSlug","defaultTemplateType","find","_slug","hasGeneralTemplate","_needsUniqueIdentifier","menuItemTitle","menuItem","hasEntities","onClick","template","type","config","recordNamePath","queryArgs","search","_fields","orderBy","exclude","existingEntitiesIds","getSpecificTemplate","suggestion","templateSlug","push","postTypesMenuItems","key","defaultPostTypesMenuItems","useTaxonomiesMenuItems","publicTaxonomies","taxonomyLabels","taxonomiesInfo","taxonomy","taxonomiesMenuItems","defaultTaxonomiesMenuItems","USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX","user","USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS","who","useAuthorMenuItem","authorInfo","authorMenuItem","search_items","not_found","all_items","useExistingTemplateSlugs","existingSlugs","Object","entries","prefix","slugsWithTemplates","_accumulator","_prefix","substring","length","useTemplatesToExclude","entityName","additionalQueryParameters","slugsToExcludePerEntity","recordsToExcludePerEntity","entitiesWithTemplates","context","entitiesHasRecords","keys","id","entitiesInfo"],"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nconst EMPTY_OBJECT = {};\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\nconst getValueFromObjectPath = ( object, path ) => {\n\tlet value = object;\n\tpath.split( '.' ).forEach( ( fieldName ) => {\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value;\n};\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of entities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( getValueFromObjectPath( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean} hasEntities If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()?.default_template_types || [],\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes\n\t\t\t?.filter(\n\t\t\t\t( { viewable, slug } ) =>\n\t\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t\t)\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\t// Sort post types alphabetically by name,\n\t\t\t\t// but exclude the built-in 'post' type from sorting.\n\t\t\t\tif ( a.slug === 'post' || b.slug === 'post' ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn a.name.localeCompare( b.name );\n\t\t\t} );\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst postTypeLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\t\taccumulator[ singularName ] =\n\t\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof postType.icon === 'string' &&\n\t\t\t\t\t\t\tpostType.icon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst templateLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst templateName = (\n\t\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t\t).toLowerCase();\n\t\t\t\taccumulator[ templateName ] =\n\t\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\treturn templateLabels[ templateName ] > 1 && templateName !== slug;\n\t\t},\n\t\t[ templateLabels ]\n\t);\n\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle =\n\t\t\t\tlabels.template_name ||\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\t\tlabels.singular_name\n\t\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Single Item: Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'post type menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the post type e.g: \"Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'Single item: %1$s (%2$s)',\n\t\t\t\t\t\t\t\t'post type menu label'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof icon === 'string' &&\n\t\t\t\t\t\t\ticon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\taccumulator[ templateName ] =\n\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst templateName = (\n\t\t\tlabels.template_name || labels.singular_name\n\t\t).toLowerCase();\n\t\treturn taxonomyLabels[ templateName ] > 1 && templateName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.template_name || labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Products by Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy template menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the taxonomy e.g: \"Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy menu label' ),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = `author-${ suggestion.slug }`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that filters all the existing templates by the given\n * object with the entity's slug as key and the template prefix as value.\n *\n * Example:\n * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]\n * `templatePrefixes` is: { post_tag: 'tag' }\n * It will return: { post_tag: ['apple'] }\n *\n * Note: We append the `-` to the given template prefix in this function for our checks.\n *\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.\n */\nconst useExistingTemplateSlugs = ( templatePrefixes ) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst existingSlugs = useMemo( () => {\n\t\treturn Object.entries( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, [ slug, prefix ] ) => {\n\t\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\t\tconst _prefix = `${ prefix }-`;\n\t\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\t\texistingTemplate.slug.substring(\n\t\t\t\t\t\t\t\t\t_prefix.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tif ( slugsWithTemplates.length ) {\n\t\t\t\t\taccumulator[ slug ] = slugsWithTemplates;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, existingTemplates ] );\n\treturn existingSlugs;\n};\n\n/**\n * Helper hook that finds the existing records with an associated template,\n * as they need to be excluded from the template suggestions.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst slugsToExcludePerEntity =\n\t\tuseExistingTemplateSlugs( templatePrefixes );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.entries( slugsToExcludePerEntity || {} ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst entitiesWithTemplates = select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\tslug: slugsWithTemplates,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} );\n\t\t\t\t\tif ( entitiesWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = entitiesWithTemplates;\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ slugsToExcludePerEntity ]\n\t);\n\treturn recordsToExcludePerEntity;\n};\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = EMPTY_OBJECT\n) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes,\n\t\tadditionalQueryParameters\n\t);\n\tconst entitiesHasRecords = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t\t) || [];\n\t\t\t\t\taccumulator[ slug ] = !! select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} )?.length;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[\n\t\t\ttemplatePrefixes,\n\t\t\trecordsToExcludePerEntity,\n\t\t\tentityName,\n\t\t\tadditionalQueryParameters,\n\t\t]\n\t);\n\tconst entitiesInfo = useMemo( () => {\n\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, slug ) => {\n\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t) || [];\n\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\thasEntities: entitiesHasRecords[ slug ],\n\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t};\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords ] );\n\treturn entitiesInfo;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,OAAO,EAAEC,WAAW,QAAQ,oBAAoB;AACzD,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,SAAS,EAAEC,IAAI,EAAEC,OAAO,QAAQ,kBAAkB;;AAE3D;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,MAAMC,YAAY,GAAG,CAAC,CAAC;;AAEvB;AACA;AACA;AACA;AACA;;AAEA,MAAMC,sBAAsB,GAAGA,CAAEC,MAAM,EAAEC,IAAI,KAAM;EAClD,IAAIC,KAAK,GAAGF,MAAM;EAClBC,IAAI,CAACE,KAAK,CAAE,GAAI,CAAC,CAACC,OAAO,CAAIC,SAAS,IAAM;IAC3CH,KAAK,GAAGA,KAAK,GAAIG,SAAS,CAAE;EAC7B,CAAE,CAAC;EACH,OAAOH,KAAK;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,kBAAkB,GAAGA,CAAEC,QAAQ,EAAEN,IAAI,KAAM;EACvD,OAAO,CAAEM,QAAQ,IAAI,EAAE,EAAGC,GAAG,CAAIC,MAAM,KAAQ;IAC9C,GAAGA,MAAM;IACTC,IAAI,EAAEtB,cAAc,CAAEW,sBAAsB,CAAEU,MAAM,EAAER,IAAK,CAAE;EAC9D,CAAC,CAAG,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMU,oBAAoB,GAAGA,CAAA,KAAM;EACzC,OAAO1B,SAAS,CACb2B,MAAM,IACPA,MAAM,CAAEzB,SAAU,CAAC,CAAC0B,gBAAgB,CACnC,UAAU,EACVhB,kBAAkB,EAClB;IACCiB,QAAQ,EAAE,CAAC;EACZ,CACD,CAAC,EACF,EACD,CAAC;AACF,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAM;EAC5C,OAAO9B,SAAS,CACb2B,MAAM,IACPA,MAAM,CAAEzB,SAAU,CAAC,CAAC6B,eAAe,CAAC,CAAC,EAAEC,sBAAsB,IAAI,EAAE,EACpE,EACD,CAAC;AACF,CAAC;AAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EAChC,MAAMC,SAAS,GAAGlC,SAAS,CACxB2B,MAAM,IAAMA,MAAM,CAAEzB,SAAU,CAAC,CAACiC,YAAY,CAAE;IAAEN,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC,EAClE,EACD,CAAC;EACD,OAAOzB,OAAO,CAAE,MAAM;IACrB,MAAMgC,iBAAiB,GAAG,CAAE,YAAY,CAAE;IAC1C,OAAOF,SAAS,EACbG,MAAM,CACP,CAAE;MAAEC,QAAQ;MAAEC;IAAK,CAAC,KACnBD,QAAQ,IAAI,CAAEF,iBAAiB,CAACI,QAAQ,CAAED,IAAK,CACjD,CAAC,CACAE,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAM;MAClB;MACA;MACA,IAAKD,CAAC,CAACH,IAAI,KAAK,MAAM,IAAII,CAAC,CAACJ,IAAI,KAAK,MAAM,EAAG;QAC7C,OAAO,CAAC;MACT;MAEA,OAAOG,CAAC,CAACjB,IAAI,CAACmB,aAAa,CAAED,CAAC,CAAClB,IAAK,CAAC;IACtC,CAAE,CAAC;EACL,CAAC,EAAE,CAAES,SAAS,CAAG,CAAC;AACnB,CAAC;AAED,MAAMW,mBAAmB,GAAGA,CAAA,KAAM;EACjC,MAAMC,UAAU,GAAG9C,SAAS,CACzB2B,MAAM,IAAMA,MAAM,CAAEzB,SAAU,CAAC,CAAC6C,aAAa,CAAE;IAAElB,QAAQ,EAAE,CAAC;EAAE,CAAE,CAAC,EACnE,EACD,CAAC;EACD,OAAOzB,OAAO,CAAE,MAAM;IACrB,OAAO0C,UAAU,EAAET,MAAM,CACxB,CAAE;MAAEW;IAAW,CAAC,KAAMA,UAAU,EAAEC,kBACnC,CAAC;EACF,CAAC,EAAE,CAAEH,UAAU,CAAG,CAAC;AACpB,CAAC;AAED,OAAO,SAASI,2BAA2BA,CAAA,EAAG;EAC7C,MAAMC,eAAe,GAAGlB,kBAAkB,CAAC,CAAC;EAC5C,MAAMmB,qBAAqB,GAAGhD,OAAO,CACpC,MAAM+C,eAAe,EAAEd,MAAM,CAAIgB,QAAQ,IAAMA,QAAQ,CAACC,WAAY,CAAC,EACrE,CAAEH,eAAe,CAClB,CAAC;EACD,MAAMI,iBAAiB,GAAG7B,oBAAoB,CAAC,CAAC;EAChD;EACA;EACA,MAAM8B,cAAc,GAAGpD,OAAO,CAC7B,MACC+C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IACvD,MAAMC,YAAY,GAAGD,MAAM,CAACE,aAAa,CAACC,WAAW,CAAC,CAAC;IACvDJ,WAAW,CAAEE,YAAY,CAAE,GAC1B,CAAEF,WAAW,CAAEE,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOF,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAMY,qBAAqB,GAAG1D,WAAW,CACxC,CAAE;IAAEsD,MAAM;IAAEpB;EAAK,CAAC,KAAM;IACvB,MAAMqB,YAAY,GAAGD,MAAM,CAACE,aAAa,CAACC,WAAW,CAAC,CAAC;IACvD,OAAON,cAAc,CAAEI,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKrB,IAAI;EACnE,CAAC,EACD,CAAEiB,cAAc,CACjB,CAAC;EACD,OAAOpD,OAAO,CACb,MACCgD,qBAAqB,EAClBf,MAAM,CACLgB,QAAQ,IACT,CAAE,CAAEE,iBAAiB,IAAI,EAAE,EAAGS,IAAI,CAC/BC,gBAAgB,IACjBA,gBAAgB,CAAC1B,IAAI,KACrB,UAAU,GAAGc,QAAQ,CAACd,IACxB,CACF,CAAC,CACAhB,GAAG,CAAI8B,QAAQ,IAAM;IACrB,IAAIa,KAAK;IACT,IAAKH,qBAAqB,CAAEV,QAAS,CAAC,EAAG;MACxCa,KAAK,GAAG1D,OAAO;MACd;MACAF,EAAE,CAAE,sBAAuB,CAAC,EAC5B+C,QAAQ,CAACM,MAAM,CAACE,aAAa,EAC7BR,QAAQ,CAACd,IACV,CAAC;IACF,CAAC,MAAM;MACN2B,KAAK,GAAG1D,OAAO;MACd;MACAF,EAAE,CAAE,aAAc,CAAC,EACnB+C,QAAQ,CAACM,MAAM,CAACE,aACjB,CAAC;IACF;IACA,OAAO;MACNtB,IAAI,EAAE,UAAU,GAAGc,QAAQ,CAACd,IAAI;MAChC4B,WAAW,EAAE3D,OAAO;MACnB;MACAF,EAAE,CACD,wDACD,CAAC,EACD+C,QAAQ,CAACM,MAAM,CAACE,aACjB,CAAC;MACDK,KAAK;MACL;MACA;MACA;MACAE,IAAI,EACH,OAAOf,QAAQ,CAACe,IAAI,KAAK,QAAQ,IACjCf,QAAQ,CAACe,IAAI,CAACC,UAAU,CAAE,YAAa,CAAC,GACrChB,QAAQ,CAACe,IAAI,CAACE,KAAK,CAAE,EAAG,CAAC,GACzB3D,OAAO;MACX4D,cAAc,EAAE;IACjB,CAAC;EACF,CAAE,CAAC,IAAI,EAAE,EACX,CAAEnB,qBAAqB,EAAEG,iBAAiB,EAAEQ,qBAAqB,CAClE,CAAC;AACF;AAEA,OAAO,MAAMS,oBAAoB,GAAKC,eAAe,IAAM;EAC1D,MAAMtB,eAAe,GAAGlB,kBAAkB,CAAC,CAAC;EAC5C,MAAMsB,iBAAiB,GAAG7B,oBAAoB,CAAC,CAAC;EAChD,MAAMgD,oBAAoB,GAAG5C,uBAAuB,CAAC,CAAC;EACtD;EACA;EACA,MAAM6C,cAAc,GAAGvE,OAAO,CAC7B,MACC+C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IACvD,MAAMiB,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACfJ,WAAW,CAAEkB,YAAY,CAAE,GAC1B,CAAElB,WAAW,CAAEkB,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOlB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAMY,qBAAqB,GAAG1D,WAAW,CACxC,CAAE;IAAEsD,MAAM;IAAEpB;EAAK,CAAC,KAAM;IACvB,MAAMqC,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACf,OAAOa,cAAc,CAAEC,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKrC,IAAI;EACnE,CAAC,EACD,CAAEoC,cAAc,CACjB,CAAC;;EAED;EACA,MAAMG,gBAAgB,GAAG1E,OAAO,CAC/B,MACC+C,eAAe,EAAEM,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEnB;EAAK,CAAC,KAAM;IACrD,IAAIwC,MAAM,GAAGxC,IAAI;IACjB,IAAKA,IAAI,KAAK,MAAM,EAAG;MACtBwC,MAAM,GAAG,UAAWA,MAAM,EAAG;IAC9B;IACArB,WAAW,CAAEnB,IAAI,CAAE,GAAGwC,MAAM;IAC5B,OAAOrB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEP,eAAe,CAClB,CAAC;EACD,MAAM6B,aAAa,GAAGC,eAAe,CAAE,UAAU,EAAEH,gBAAiB,CAAC;EACrE,MAAMI,qBAAqB,GAAG,CAAE3B,iBAAiB,IAAI,EAAE,EAAGhC,GAAG,CAC5D,CAAE;IAAEgB;EAAK,CAAC,KAAMA,IACjB,CAAC;EACD,MAAM4C,SAAS,GAAG,CAAEhC,eAAe,IAAI,EAAE,EAAGM,MAAM,CACjD,CAAEC,WAAW,EAAEL,QAAQ,KAAM;IAC5B,MAAM;MAAEd,IAAI;MAAEoB,MAAM;MAAES;IAAK,CAAC,GAAGf,QAAQ;IACvC;IACA;IACA;IACA,MAAM+B,mBAAmB,GAAGN,gBAAgB,CAAEvC,IAAI,CAAE;IACpD,MAAM8C,mBAAmB,GAAGX,oBAAoB,EAAEY,IAAI,CACrD,CAAE;MAAE/C,IAAI,EAAEgD;IAAM,CAAC,KAAMA,KAAK,KAAKH,mBAClC,CAAC;IACD,MAAMI,kBAAkB,GACvBN,qBAAqB,EAAE1C,QAAQ,CAAE4C,mBAAoB,CAAC;IACvD,MAAMK,sBAAsB,GAAG1B,qBAAqB,CAAEV,QAAS,CAAC;IAChE,IAAIqC,aAAa,GAChB/B,MAAM,CAACkB,aAAa,IACpBrE,OAAO;IACN;IACAF,EAAE,CAAE,iBAAkB,CAAC,EACvBqD,MAAM,CAACE,aACR,CAAC;IACF,IAAK4B,sBAAsB,EAAG;MAC7BC,aAAa,GAAG/B,MAAM,CAACkB,aAAa,GACjCrE,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,sBAAuB,CAAC,EAC3CoD,MAAM,CAACkB,aAAa,EACpBtC,IACA,CAAC,GACD/B,OAAO;MACP;MACAD,EAAE,CACD,0BAA0B,EAC1B,sBACD,CAAC,EACDoD,MAAM,CAACE,aAAa,EACpBtB,IACA,CAAC;IACL;IACA,MAAMoD,QAAQ,GAAGN,mBAAmB,GACjC;MACA,GAAGA,mBAAmB;MACtBd,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;IACtC,CAAC,GACD;MACAA,IAAI,EAAE6C,mBAAmB;MACzBlB,KAAK,EAAEwB,aAAa;MACpBvB,WAAW,EAAE3D,OAAO;MACnB;MACAF,EAAE,CAAE,6BAA8B,CAAC,EACnCqD,MAAM,CAACE,aACR,CAAC;MACD;MACA;MACA;MACAO,IAAI,EACH,OAAOA,IAAI,KAAK,QAAQ,IACxBA,IAAI,CAACC,UAAU,CAAE,YAAa,CAAC,GAC5BD,IAAI,CAACE,KAAK,CAAE,EAAG,CAAC,GAChB5D,IAAI;MACR6D,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;IACtC,CAAC;IACJ,MAAMqD,WAAW,GAAGZ,aAAa,GAAIzC,IAAI,CAAE,EAAEqD,WAAW;IACxD;IACA,IAAKA,WAAW,EAAG;MAClBD,QAAQ,CAACE,OAAO,GAAKC,QAAQ,IAAM;QAClCrB,eAAe,CAAE;UAChBsB,IAAI,EAAE,UAAU;UAChBxD,IAAI;UACJyD,MAAM,EAAE;YACPC,cAAc,EAAE,gBAAgB;YAChCC,SAAS,EAAEA,CAAE;cAAEC;YAAO,CAAC,KAAM;cAC5B,OAAO;gBACNC,OAAO,EAAE,oBAAoB;gBAC7BC,OAAO,EAAEF,MAAM,GAAG,WAAW,GAAG,UAAU;gBAC1CG,OAAO,EACNtB,aAAa,CAAEzC,IAAI,CAAE,CACnBgE;cACJ,CAAC;YACF,CAAC;YACDC,mBAAmB,EAAIC,UAAU,IAAM;cACtC,MAAMC,YAAY,GAAG,GAAI5B,gBAAgB,CAAEvC,IAAI,CAAE,IAAMkE,UAAU,CAAClE,IAAI,EAAG;cACzE,OAAO;gBACN2B,KAAK,EAAEwC,YAAY;gBACnBnE,IAAI,EAAEmE,YAAY;gBAClBnC,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;cACvC,CAAC;YACF;UACD,CAAC;UACDoB,MAAM;UACN6B,kBAAkB;UAClBM;QACD,CAAE,CAAC;MACJ,CAAC;IACF;IACA;IACA;IACA,IAAK,CAAEN,kBAAkB,IAAII,WAAW,EAAG;MAC1ClC,WAAW,CAACiD,IAAI,CAAEhB,QAAS,CAAC;IAC7B;IACA,OAAOjC,WAAW;EACnB,CAAC,EACD,EACD,CAAC;EACD;EACA;EACA,MAAMkD,kBAAkB,GAAGxG,OAAO,CACjC,MACC+E,SAAS,CAAC1B,MAAM,CACf,CAAEC,WAAW,EAAEL,QAAQ,KAAM;IAC5B,MAAM;MAAEd;IAAK,CAAC,GAAGc,QAAQ;IACzB,IAAIwD,GAAG,GAAG,oBAAoB;IAC9B,IAAKtE,IAAI,KAAK,MAAM,EAAG;MACtBsE,GAAG,GAAG,2BAA2B;IAClC;IACAnD,WAAW,CAAEmD,GAAG,CAAE,CAACF,IAAI,CAAEtD,QAAS,CAAC;IACnC,OAAOK,WAAW;EACnB,CAAC,EACD;IAAEoD,yBAAyB,EAAE,EAAE;IAAEF,kBAAkB,EAAE;EAAG,CACzD,CAAC,EACF,CAAEzB,SAAS,CACZ,CAAC;EACD,OAAOyB,kBAAkB;AAC1B,CAAC;AAED,OAAO,MAAMG,sBAAsB,GAAKtC,eAAe,IAAM;EAC5D,MAAMuC,gBAAgB,GAAGnE,mBAAmB,CAAC,CAAC;EAC9C,MAAMU,iBAAiB,GAAG7B,oBAAoB,CAAC,CAAC;EAChD,MAAMgD,oBAAoB,GAAG5C,uBAAuB,CAAC,CAAC;EACtD;EACA,MAAMgD,gBAAgB,GAAG1E,OAAO,CAC/B,MACC4G,gBAAgB,EAAEvD,MAAM,CAAE,CAAEC,WAAW,EAAE;IAAEnB;EAAK,CAAC,KAAM;IACtD,IAAIwC,MAAM,GAAGxC,IAAI;IACjB,IAAK,CAAE,CAAE,UAAU,EAAE,UAAU,CAAE,CAACC,QAAQ,CAAED,IAAK,CAAC,EAAG;MACpDwC,MAAM,GAAG,YAAaA,MAAM,EAAG;IAChC;IACA,IAAKxC,IAAI,KAAK,UAAU,EAAG;MAC1BwC,MAAM,GAAG,KAAK;IACf;IACArB,WAAW,CAAEnB,IAAI,CAAE,GAAGwC,MAAM;IAC5B,OAAOrB,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC,EACR,CAAEsD,gBAAgB,CACnB,CAAC;EACD;EACA;EACA,MAAMC,cAAc,GAAGD,gBAAgB,EAAEvD,MAAM,CAC9C,CAAEC,WAAW,EAAE;IAAEC;EAAO,CAAC,KAAM;IAC9B,MAAMiB,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACfJ,WAAW,CAAEkB,YAAY,CAAE,GAC1B,CAAElB,WAAW,CAAEkB,YAAY,CAAE,IAAI,CAAC,IAAK,CAAC;IACzC,OAAOlB,WAAW;EACnB,CAAC,EACD,CAAC,CACF,CAAC;EACD,MAAMK,qBAAqB,GAAGA,CAAEJ,MAAM,EAAEpB,IAAI,KAAM;IACjD,IAAK,CAAE,UAAU,EAAE,UAAU,CAAE,CAACC,QAAQ,CAAED,IAAK,CAAC,EAAG;MAClD,OAAO,KAAK;IACb;IACA,MAAMqC,YAAY,GAAG,CACpBjB,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa,EAC3CC,WAAW,CAAC,CAAC;IACf,OAAOmD,cAAc,CAAErC,YAAY,CAAE,GAAG,CAAC,IAAIA,YAAY,KAAKrC,IAAI;EACnE,CAAC;EACD,MAAM2E,cAAc,GAAGjC,eAAe,CAAE,UAAU,EAAEH,gBAAiB,CAAC;EACtE,MAAMI,qBAAqB,GAAG,CAAE3B,iBAAiB,IAAI,EAAE,EAAGhC,GAAG,CAC5D,CAAE;IAAEgB;EAAK,CAAC,KAAMA,IACjB,CAAC;EACD,MAAM4C,SAAS,GAAG,CAAE6B,gBAAgB,IAAI,EAAE,EAAGvD,MAAM,CAClD,CAAEC,WAAW,EAAEyD,QAAQ,KAAM;IAC5B,MAAM;MAAE5E,IAAI;MAAEoB;IAAO,CAAC,GAAGwD,QAAQ;IACjC;IACA;IACA;IACA,MAAM/B,mBAAmB,GAAGN,gBAAgB,CAAEvC,IAAI,CAAE;IACpD,MAAM8C,mBAAmB,GAAGX,oBAAoB,EAAEY,IAAI,CACrD,CAAE;MAAE/C,IAAI,EAAEgD;IAAM,CAAC,KAAMA,KAAK,KAAKH,mBAClC,CAAC;IACD,MAAMI,kBAAkB,GACvBN,qBAAqB,EAAE1C,QAAQ,CAAE4C,mBAAoB,CAAC;IACvD,MAAMK,sBAAsB,GAAG1B,qBAAqB,CACnDJ,MAAM,EACNpB,IACD,CAAC;IACD,IAAImD,aAAa,GAAG/B,MAAM,CAACkB,aAAa,IAAIlB,MAAM,CAACE,aAAa;IAChE,IAAK4B,sBAAsB,EAAG;MAC7BC,aAAa,GAAG/B,MAAM,CAACkB,aAAa,GACjCrE,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,8BAA+B,CAAC,EACnDoD,MAAM,CAACkB,aAAa,EACpBtC,IACA,CAAC,GACD/B,OAAO;MACP;MACAD,EAAE,CAAE,aAAa,EAAE,qBAAsB,CAAC,EAC1CoD,MAAM,CAACE,aAAa,EACpBtB,IACA,CAAC;IACL;IACA,MAAMoD,QAAQ,GAAGN,mBAAmB,GACjC;MACA,GAAGA,mBAAmB;MACtBd,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;IACtC,CAAC,GACD;MACAA,IAAI,EAAE6C,mBAAmB;MACzBlB,KAAK,EAAEwB,aAAa;MACpBvB,WAAW,EAAE3D,OAAO;MACnB;MACAF,EAAE,CAAE,wBAAyB,CAAC,EAC9BqD,MAAM,CAACE,aACR,CAAC;MACDO,IAAI,EAAE3D,SAAS;MACf8D,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;IACtC,CAAC;IACJ,MAAMqD,WAAW,GAAGsB,cAAc,GAAI3E,IAAI,CAAE,EAAEqD,WAAW;IACzD;IACA,IAAKA,WAAW,EAAG;MAClBD,QAAQ,CAACE,OAAO,GAAKC,QAAQ,IAAM;QAClCrB,eAAe,CAAE;UAChBsB,IAAI,EAAE,UAAU;UAChBxD,IAAI;UACJyD,MAAM,EAAE;YACPE,SAAS,EAAEA,CAAE;cAAEC;YAAO,CAAC,KAAM;cAC5B,OAAO;gBACNC,OAAO,EAAE,mBAAmB;gBAC5BC,OAAO,EAAEF,MAAM,GAAG,MAAM,GAAG,OAAO;gBAClCG,OAAO,EACNY,cAAc,CAAE3E,IAAI,CAAE,CACpBgE;cACJ,CAAC;YACF,CAAC;YACDC,mBAAmB,EAAIC,UAAU,IAAM;cACtC,MAAMC,YAAY,GAAG,GAAI5B,gBAAgB,CAAEvC,IAAI,CAAE,IAAMkE,UAAU,CAAClE,IAAI,EAAG;cACzE,OAAO;gBACN2B,KAAK,EAAEwC,YAAY;gBACnBnE,IAAI,EAAEmE,YAAY;gBAClBnC,cAAc,EAAEO,gBAAgB,CAAEvC,IAAI;cACvC,CAAC;YACF;UACD,CAAC;UACDoB,MAAM;UACN6B,kBAAkB;UAClBM;QACD,CAAE,CAAC;MACJ,CAAC;IACF;IACA;IACA;IACA,IAAK,CAAEN,kBAAkB,IAAII,WAAW,EAAG;MAC1ClC,WAAW,CAACiD,IAAI,CAAEhB,QAAS,CAAC;IAC7B;IACA,OAAOjC,WAAW;EACnB,CAAC,EACD,EACD,CAAC;EACD;EACA;EACA,MAAM0D,mBAAmB,GAAGhH,OAAO,CAClC,MACC+E,SAAS,CAAC1B,MAAM,CACf,CAAEC,WAAW,EAAEyD,QAAQ,KAAM;IAC5B,MAAM;MAAE5E;IAAK,CAAC,GAAG4E,QAAQ;IACzB,IAAIN,GAAG,GAAG,qBAAqB;IAC/B,IAAK,CAAE,UAAU,EAAE,KAAK,CAAE,CAACrE,QAAQ,CAAED,IAAK,CAAC,EAAG;MAC7CsE,GAAG,GAAG,4BAA4B;IACnC;IACAnD,WAAW,CAAEmD,GAAG,CAAE,CAACF,IAAI,CAAEQ,QAAS,CAAC;IACnC,OAAOzD,WAAW;EACnB,CAAC,EACD;IAAE2D,0BAA0B,EAAE,EAAE;IAAED,mBAAmB,EAAE;EAAG,CAC3D,CAAC,EACF,CAAEjC,SAAS,CACZ,CAAC;EACD,OAAOiC,mBAAmB;AAC3B,CAAC;AAED,MAAME,oCAAoC,GAAG;EAAEC,IAAI,EAAE;AAAS,CAAC;AAC/D,MAAMC,qCAAqC,GAAG;EAAED,IAAI,EAAE;IAAEE,GAAG,EAAE;EAAU;AAAE,CAAC;AAC1E,OAAO,SAASC,iBAAiBA,CAAEjD,eAAe,EAAG;EACpD,MAAMlB,iBAAiB,GAAG7B,oBAAoB,CAAC,CAAC;EAChD,MAAMgD,oBAAoB,GAAG5C,uBAAuB,CAAC,CAAC;EACtD,MAAM6F,UAAU,GAAG1C,eAAe,CACjC,MAAM,EACNqC,oCAAoC,EACpCE,qCACD,CAAC;EACD,IAAII,cAAc,GAAGlD,oBAAoB,EAAEY,IAAI,CAC9C,CAAE;IAAE/C;EAAK,CAAC,KAAMA,IAAI,KAAK,QAC1B,CAAC;EACD,IAAK,CAAEqF,cAAc,EAAG;IACvBA,cAAc,GAAG;MAChBzD,WAAW,EAAE7D,EAAE,CACd,mDACD,CAAC;MACDiC,IAAI,EAAE,QAAQ;MACd2B,KAAK,EAAE;IACR,CAAC;EACF;EACA,MAAMsB,kBAAkB,GAAG,CAAC,CAAEjC,iBAAiB,EAAE+B,IAAI,CACpD,CAAE;IAAE/C;EAAK,CAAC,KAAMA,IAAI,KAAK,QAC1B,CAAC;EACD,IAAKoF,UAAU,CAACJ,IAAI,EAAE3B,WAAW,EAAG;IACnCgC,cAAc,GAAG;MAAE,GAAGA,cAAc;MAAErD,cAAc,EAAE;IAAS,CAAC;IAChEqD,cAAc,CAAC/B,OAAO,GAAKC,QAAQ,IAAM;MACxCrB,eAAe,CAAE;QAChBsB,IAAI,EAAE,MAAM;QACZxD,IAAI,EAAE,MAAM;QACZyD,MAAM,EAAE;UACPE,SAAS,EAAEA,CAAE;YAAEC;UAAO,CAAC,KAAM;YAC5B,OAAO;cACNC,OAAO,EAAE,mBAAmB;cAC5BC,OAAO,EAAEF,MAAM,GAAG,MAAM,GAAG,iBAAiB;cAC5CG,OAAO,EAAEqB,UAAU,CAACJ,IAAI,CAAChB,mBAAmB;cAC5CkB,GAAG,EAAE;YACN,CAAC;UACF,CAAC;UACDjB,mBAAmB,EAAIC,UAAU,IAAM;YACtC,MAAMC,YAAY,GAAG,UAAWD,UAAU,CAAClE,IAAI,EAAG;YAClD,OAAO;cACN2B,KAAK,EAAEwC,YAAY;cACnBnE,IAAI,EAAEmE,YAAY;cAClBnC,cAAc,EAAE;YACjB,CAAC;UACF;QACD,CAAC;QACDZ,MAAM,EAAE;UACPE,aAAa,EAAEvD,EAAE,CAAE,QAAS,CAAC;UAC7BuH,YAAY,EAAEvH,EAAE,CAAE,gBAAiB,CAAC;UACpCwH,SAAS,EAAExH,EAAE,CAAE,mBAAoB,CAAC;UACpCyH,SAAS,EAAEzH,EAAE,CAAE,aAAc;QAC9B,CAAC;QACDkF,kBAAkB;QAClBM;MACD,CAAE,CAAC;IACJ,CAAC;EACF;EACA,IAAK,CAAEN,kBAAkB,IAAImC,UAAU,CAACJ,IAAI,EAAE3B,WAAW,EAAG;IAC3D,OAAOgC,cAAc;EACtB;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,wBAAwB,GAAKlD,gBAAgB,IAAM;EACxD,MAAMvB,iBAAiB,GAAG7B,oBAAoB,CAAC,CAAC;EAChD,MAAMuG,aAAa,GAAG7H,OAAO,CAAE,MAAM;IACpC,OAAO8H,MAAM,CAACC,OAAO,CAAErD,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CACrD,CAAEC,WAAW,EAAE,CAAEnB,IAAI,EAAE6F,MAAM,CAAE,KAAM;MACpC,MAAMC,kBAAkB,GAAG,CAAE9E,iBAAiB,IAAI,EAAE,EAAGE,MAAM,CAC5D,CAAE6E,YAAY,EAAErE,gBAAgB,KAAM;QACrC,MAAMsE,OAAO,GAAG,GAAIH,MAAM,GAAI;QAC9B,IAAKnE,gBAAgB,CAAC1B,IAAI,CAAC8B,UAAU,CAAEkE,OAAQ,CAAC,EAAG;UAClDD,YAAY,CAAC3B,IAAI,CAChB1C,gBAAgB,CAAC1B,IAAI,CAACiG,SAAS,CAC9BD,OAAO,CAACE,MACT,CACD,CAAC;QACF;QACA,OAAOH,YAAY;MACpB,CAAC,EACD,EACD,CAAC;MACD,IAAKD,kBAAkB,CAACI,MAAM,EAAG;QAChC/E,WAAW,CAAEnB,IAAI,CAAE,GAAG8F,kBAAkB;MACzC;MACA,OAAO3E,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EAAE,CAAEoB,gBAAgB,EAAEvB,iBAAiB,CAAG,CAAC;EAC5C,OAAO0E,aAAa;AACrB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMS,qBAAqB,GAAGA,CAC7BC,UAAU,EACV7D,gBAAgB,EAChB8D,yBAAyB,GAAG,CAAC,CAAC,KAC1B;EACJ,MAAMC,uBAAuB,GAC5Bb,wBAAwB,CAAElD,gBAAiB,CAAC;EAC7C,MAAMgE,yBAAyB,GAAG9I,SAAS,CACxC2B,MAAM,IAAM;IACb,OAAOuG,MAAM,CAACC,OAAO,CAAEU,uBAAuB,IAAI,CAAC,CAAE,CAAC,CAACpF,MAAM,CAC5D,CAAEC,WAAW,EAAE,CAAEnB,IAAI,EAAE8F,kBAAkB,CAAE,KAAM;MAChD,MAAMU,qBAAqB,GAAGpH,MAAM,CACnCzB,SACD,CAAC,CAAC0B,gBAAgB,CAAE+G,UAAU,EAAEpG,IAAI,EAAE;QACrC6D,OAAO,EAAE,IAAI;QACb4C,OAAO,EAAE,MAAM;QACfzG,IAAI,EAAE8F,kBAAkB;QACxB,GAAGO,yBAAyB,CAAErG,IAAI;MACnC,CAAE,CAAC;MACH,IAAKwG,qBAAqB,EAAEN,MAAM,EAAG;QACpC/E,WAAW,CAAEnB,IAAI,CAAE,GAAGwG,qBAAqB;MAC5C;MACA,OAAOrF,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EACD,CAAEmF,uBAAuB,CAC1B,CAAC;EACD,OAAOC,yBAAyB;AACjC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM7D,eAAe,GAAGA,CACvB0D,UAAU,EACV7D,gBAAgB,EAChB8D,yBAAyB,GAAG/H,YAAY,KACpC;EACJ,MAAMiI,yBAAyB,GAAGJ,qBAAqB,CACtDC,UAAU,EACV7D,gBAAgB,EAChB8D,yBACD,CAAC;EACD,MAAMK,kBAAkB,GAAGjJ,SAAS,CACjC2B,MAAM,IAAM;IACb,OAAOuG,MAAM,CAACgB,IAAI,CAAEpE,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CAClD,CAAEC,WAAW,EAAEnB,IAAI,KAAM;MACxB,MAAMgE,mBAAmB,GACxBuC,yBAAyB,GAAIvG,IAAI,CAAE,EAAEhB,GAAG,CACvC,CAAE;QAAE4H;MAAG,CAAC,KAAMA,EACf,CAAC,IAAI,EAAE;MACRzF,WAAW,CAAEnB,IAAI,CAAE,GAAG,CAAC,CAAEZ,MAAM,CAC9BzB,SACD,CAAC,CAAC0B,gBAAgB,CAAE+G,UAAU,EAAEpG,IAAI,EAAE;QACrCV,QAAQ,EAAE,CAAC;QACXuE,OAAO,EAAE,IAAI;QACb4C,OAAO,EAAE,MAAM;QACf1C,OAAO,EAAEC,mBAAmB;QAC5B,GAAGqC,yBAAyB,CAAErG,IAAI;MACnC,CAAE,CAAC,EAAEkG,MAAM;MACX,OAAO/E,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EACD,CACCoB,gBAAgB,EAChBgE,yBAAyB,EACzBH,UAAU,EACVC,yBAAyB,CAE3B,CAAC;EACD,MAAMQ,YAAY,GAAGhJ,OAAO,CAAE,MAAM;IACnC,OAAO8H,MAAM,CAACgB,IAAI,CAAEpE,gBAAgB,IAAI,CAAC,CAAE,CAAC,CAACrB,MAAM,CAClD,CAAEC,WAAW,EAAEnB,IAAI,KAAM;MACxB,MAAMgE,mBAAmB,GACxBuC,yBAAyB,GAAIvG,IAAI,CAAE,EAAEhB,GAAG,CACvC,CAAE;QAAE4H;MAAG,CAAC,KAAMA,EACf,CAAC,IAAI,EAAE;MACRzF,WAAW,CAAEnB,IAAI,CAAE,GAAG;QACrBqD,WAAW,EAAEqD,kBAAkB,CAAE1G,IAAI,CAAE;QACvCgE;MACD,CAAC;MACD,OAAO7C,WAAW;IACnB,CAAC,EACD,CAAC,CACF,CAAC;EACF,CAAC,EAAE,CAAEoB,gBAAgB,EAAEgE,yBAAyB,EAAEG,kBAAkB,CAAG,CAAC;EACxE,OAAOG,YAAY;AACpB,CAAC","ignoreList":[]}
@@ -27,6 +27,7 @@ import { getExamples } from './examples';
27
27
  import { store as siteEditorStore } from '../../store';
28
28
  import { useSection } from '../sidebar-global-styles-wrapper';
29
29
  import { GlobalStylesRenderer } from '../global-styles-renderer';
30
+ import { getVariationClassName } from '../global-styles/utils';
30
31
  import { STYLE_BOOK_COLOR_GROUPS, STYLE_BOOK_PREVIEW_CATEGORIES } from '../style-book/constants';
31
32
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
33
  const {
@@ -145,6 +146,31 @@ export function getExamplesForSinglePageUse(examples) {
145
146
  examplesForSinglePageUse.push(...otherExamples);
146
147
  return examplesForSinglePageUse;
147
148
  }
149
+
150
+ /**
151
+ * Applies a block variation to each example by updating its attributes.
152
+ *
153
+ * @param {Array} examples Array of examples
154
+ * @param {string} variation Block variation name.
155
+ * @return {Array} Updated examples with variation applied.
156
+ */
157
+ function applyBlockVariationsToExamples(examples, variation) {
158
+ if (!variation) {
159
+ return examples;
160
+ }
161
+ return examples.map(example => ({
162
+ ...example,
163
+ variation,
164
+ blocks: {
165
+ ...example.blocks,
166
+ attributes: {
167
+ ...example.blocks.attributes,
168
+ style: undefined,
169
+ className: getVariationClassName(variation)
170
+ }
171
+ }
172
+ }));
173
+ }
148
174
  function StyleBook({
149
175
  enableResizing = true,
150
176
  isSelected,
@@ -269,7 +295,7 @@ export const StyleBookPreview = ({
269
295
  // '/blocks/core%2Fbuttons'.
270
296
  return section === `/blocks/${encodeURIComponent(blockName)}` || section.startsWith(`/blocks/${encodeURIComponent(blockName)}/`);
271
297
  };
272
- const onSelect = blockName => {
298
+ const onSelect = (blockName, isBlockVariation = false) => {
273
299
  if (STYLE_BOOK_COLOR_GROUPS.find(group => group.slug === blockName)) {
274
300
  // Go to color palettes Global Styles.
275
301
  onChangeSection('/colors/palette');
@@ -280,6 +306,9 @@ export const StyleBookPreview = ({
280
306
  onChangeSection('/typography');
281
307
  return;
282
308
  }
309
+ if (isBlockVariation) {
310
+ return;
311
+ }
283
312
 
284
313
  // Now go to the selected block.
285
314
  onChangeSection(`/blocks/${encodeURIComponent(blockName)}`);
@@ -288,13 +317,19 @@ export const StyleBookPreview = ({
288
317
  const examples = getExamples(colors);
289
318
  const examplesForSinglePageUse = getExamplesForSinglePageUse(examples);
290
319
  let previewCategory = null;
320
+ let blockVariation = null;
291
321
  if (section.includes('/colors')) {
292
322
  previewCategory = 'colors';
293
323
  } else if (section.includes('/typography')) {
294
324
  previewCategory = 'text';
295
325
  } else if (section.includes('/blocks')) {
296
326
  previewCategory = 'blocks';
297
- const blockName = decodeURIComponent(section).split('/blocks/')[1];
327
+ let blockName = decodeURIComponent(section).split('/blocks/')[1];
328
+
329
+ // The blockName can contain variations, if so, extract the variation.
330
+ if (blockName?.includes('/variations')) {
331
+ [blockName, blockVariation] = blockName.split('/variations/');
332
+ }
298
333
  if (blockName && examples.find(example => example.name === blockName)) {
299
334
  previewCategory = blockName;
300
335
  }
@@ -302,16 +337,29 @@ export const StyleBookPreview = ({
302
337
  previewCategory = 'overview';
303
338
  }
304
339
  const categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(category => category.slug === previewCategory);
305
-
306
- // If there's no category definition there may be a single block.
307
- const filteredExamples = categoryDefinition ? getExamplesByCategory(categoryDefinition, examples) : {
308
- examples: [examples.find(example => example.name === previewCategory)]
309
- };
310
-
311
- // If there's no preview category, show all examples.
312
- const displayedExamples = previewCategory ? filteredExamples : {
313
- examples: examplesForSinglePageUse
314
- };
340
+ const filteredExamples = useMemo(() => {
341
+ // If there's no category definition there may be a single block.
342
+ if (!categoryDefinition) {
343
+ return {
344
+ examples: [examples.find(example => example.name === previewCategory)]
345
+ };
346
+ }
347
+ return getExamplesByCategory(categoryDefinition, examples);
348
+ }, [categoryDefinition, examples, previewCategory]);
349
+ const displayedExamples = useMemo(() => {
350
+ // If there's no preview category, show all examples.
351
+ if (!previewCategory) {
352
+ return {
353
+ examples: examplesForSinglePageUse
354
+ };
355
+ }
356
+ if (blockVariation) {
357
+ return {
358
+ examples: applyBlockVariationsToExamples(filteredExamples.examples, blockVariation)
359
+ };
360
+ }
361
+ return filteredExamples;
362
+ }, [previewCategory, examplesForSinglePageUse, blockVariation, filteredExamples]);
315
363
  const {
316
364
  base: baseConfig
317
365
  } = useContext(GlobalStylesContext);
@@ -436,7 +484,7 @@ const Examples = memo(({
436
484
  content: example.content,
437
485
  blocks: example.blocks,
438
486
  isSelected: isSelected?.(example.name),
439
- onClick: !!onSelect ? () => onSelect(example.name) : null
487
+ onClick: !!onSelect ? () => onSelect(example.name, !!example.variation) : null
440
488
  }, example.name)), !!filteredExamples?.subcategories?.length && filteredExamples.subcategories.map(subcategory => /*#__PURE__*/_jsxs(Composite.Group, {
441
489
  className: "edit-site-style-book__subcategory",
442
490
  children: [/*#__PURE__*/_jsx(Composite.GroupLabel, {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","Disabled","Composite","privateApis","componentsPrivateApis","__","_x","sprintf","BlockList","blockEditorPrivateApis","store","blockEditorStore","useSettings","BlockEditorProvider","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","editorPrivateApis","useSelect","dispatch","useMemo","useState","memo","useContext","useRef","useLayoutEffect","useEffect","ENTER","SPACE","uploadMedia","coreStore","unlock","EditorCanvasContainer","STYLE_BOOK_IFRAME_STYLES","getExamplesByCategory","getTopLevelStyleBookCategories","getExamples","siteEditorStore","useSection","GlobalStylesRenderer","STYLE_BOOK_COLOR_GROUPS","STYLE_BOOK_PREVIEW_CATEGORIES","jsx","_jsx","jsxs","_jsxs","ExperimentalBlockEditorProvider","useGlobalStyle","GlobalStylesContext","useGlobalStylesOutputWithConfig","mergeBaseAndUserConfigs","Tabs","isObjectEmpty","object","Object","keys","length","scrollToSection","anchorId","iframe","contentDocument","element","body","getElementById","scrollIntoView","behavior","getStyleBookNavigationFromPath","path","startsWith","top","useMultiOriginPalettes","colors","gradients","shouldDisplayDefaultDuotones","customDuotones","themeDuotones","defaultDuotones","palettes","result","duotones","push","name","slug","getExamplesForSinglePageUse","examples","examplesForSinglePageUse","overviewCategoryExamples","otherExamples","filter","example","category","find","overviewExample","StyleBook","enableResizing","isSelected","onClick","onSelect","showCloseButton","onClose","showTabs","userConfig","textColor","backgroundColor","tabs","some","base","baseConfig","goTo","mergedConfig","originalSettings","select","getSettings","globalStyles","settings","styles","isPreviewMode","closeButtonLabel","children","className","style","color","background","TabList","map","tab","Tab","tabId","title","categoryDefinition","_category","filteredExamples","TabPanel","focusable","StyleBookBody","StyleBookPreview","isStatic","siteEditorSettings","canUserUploadMedia","canUser","kind","updateSettings","mediaUpload","undefined","section","onChangeSection","blockName","encodeURIComponent","group","previewCategory","includes","decodeURIComponent","split","displayedExamples","disableRootPadding","isFocused","setIsFocused","hasIframeLoaded","setHasIframeLoaded","iframeRef","buttonModeProps","role","onFocus","onBlur","onKeyDown","event","defaultPrevented","keyCode","preventDefault","readonly","handleLoad","current","onLoad","ref","tabIndex","Examples","label","orientation","Example","id","content","blocks","subcategories","subcategory","Group","GroupLabel","Subcategory","disabledExamples","focusMode","renderedBlocks","Array","isArray","disabledProps","disabled","accessibleWhenDisabled","Item","render","value","renderAppender"],"sources":["@wordpress/edit-site/src/components/style-book/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDisabled,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tuseSettings,\n\tBlockEditorProvider,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { useSelect, dispatch } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tuseState,\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n} from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { uploadMedia } from '@wordpress/media-utils';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\nimport { STYLE_BOOK_IFRAME_STYLES } from './constants';\nimport {\n\tgetExamplesByCategory,\n\tgetTopLevelStyleBookCategories,\n} from './categories';\nimport { getExamples } from './examples';\nimport { store as siteEditorStore } from '../../store';\nimport { useSection } from '../sidebar-global-styles-wrapper';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\nimport {\n\tSTYLE_BOOK_COLOR_GROUPS,\n\tSTYLE_BOOK_PREVIEW_CATEGORIES,\n} from '../style-book/constants';\n\nconst {\n\tExperimentalBlockEditorProvider,\n\tuseGlobalStyle,\n\tGlobalStylesContext,\n\tuseGlobalStylesOutputWithConfig,\n} = unlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Scrolls to a section within an iframe.\n *\n * @param {string} anchorId The id of the element to scroll to.\n * @param {HTMLIFrameElement} iframe The target iframe.\n */\nconst scrollToSection = ( anchorId, iframe ) => {\n\tif ( ! anchorId || ! iframe || ! iframe?.contentDocument ) {\n\t\treturn;\n\t}\n\n\tconst element =\n\t\tanchorId === 'top'\n\t\t\t? iframe.contentDocument.body\n\t\t\t: iframe.contentDocument.getElementById( anchorId );\n\tif ( element ) {\n\t\telement.scrollIntoView( {\n\t\t\tbehavior: 'smooth',\n\t\t} );\n\t}\n};\n\n/**\n * Parses a Block Editor navigation path to build a style book navigation path.\n * The object can be extended to include a category, representing a style book tab/section.\n *\n * @param {string} path An internal Block Editor navigation path.\n * @return {null|{block: string}} An object containing the example to navigate to.\n */\nconst getStyleBookNavigationFromPath = ( path ) => {\n\tif ( path && typeof path === 'string' ) {\n\t\tif (\n\t\t\tpath === '/' ||\n\t\t\tpath.startsWith( '/typography' ) ||\n\t\t\tpath.startsWith( '/colors' ) ||\n\t\t\tpath.startsWith( '/blocks' )\n\t\t) {\n\t\t\treturn {\n\t\t\t\ttop: true,\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Retrieves colors, gradients, and duotone filters from Global Styles.\n * The inclusion of default (Core) palettes is controlled by the relevant\n * theme.json property e.g. defaultPalette, defaultGradients, defaultDuotone.\n *\n * @return {Object} Object containing properties for each type of palette.\n */\nfunction useMultiOriginPalettes() {\n\tconst { colors, gradients } = useMultipleOriginColorsAndGradients();\n\n\t// Add duotone filters to the palettes data.\n\tconst [\n\t\tshouldDisplayDefaultDuotones,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t] = useSettings(\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default'\n\t);\n\n\tconst palettes = useMemo( () => {\n\t\tconst result = { colors, gradients, duotones: [] };\n\n\t\tif ( themeDuotones && themeDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates these duotone filters come from the theme.'\n\t\t\t\t),\n\t\t\t\tslug: 'theme',\n\t\t\t\tduotones: themeDuotones,\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tshouldDisplayDefaultDuotones &&\n\t\t\tdefaultDuotones &&\n\t\t\tdefaultDuotones.length\n\t\t) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates these duotone filters come from WordPress.'\n\t\t\t\t),\n\t\t\t\tslug: 'default',\n\t\t\t\tduotones: defaultDuotones,\n\t\t\t} );\n\t\t}\n\t\tif ( customDuotones && customDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates these doutone filters are created by the user.'\n\t\t\t\t),\n\t\t\t\tslug: 'custom',\n\t\t\t\tduotones: customDuotones,\n\t\t\t} );\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tcolors,\n\t\tgradients,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t\tshouldDisplayDefaultDuotones,\n\t] );\n\n\treturn palettes;\n}\n\n/**\n * Get deduped examples for single page stylebook.\n * @param {Array} examples Array of examples.\n * @return {Array} Deduped examples.\n */\nexport function getExamplesForSinglePageUse( examples ) {\n\tconst examplesForSinglePageUse = [];\n\tconst overviewCategoryExamples = getExamplesByCategory(\n\t\t{ slug: 'overview' },\n\t\texamples\n\t);\n\texamplesForSinglePageUse.push( ...overviewCategoryExamples.examples );\n\tconst otherExamples = examples.filter( ( example ) => {\n\t\treturn (\n\t\t\texample.category !== 'overview' &&\n\t\t\t! overviewCategoryExamples.examples.find(\n\t\t\t\t( overviewExample ) => overviewExample.name === example.name\n\t\t\t)\n\t\t);\n\t} );\n\texamplesForSinglePageUse.push( ...otherExamples );\n\n\treturn examplesForSinglePageUse;\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tonClose,\n\tshowTabs = true,\n\tuserConfig = {},\n\tpath = '',\n} ) {\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = useMemo( () => getExamples( colors ), [ colors ] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetTopLevelStyleBookCategories().filter( ( category ) =>\n\t\t\t\texamples.some(\n\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t)\n\t\t\t),\n\t\t[ examples ]\n\t);\n\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( path );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\t// Copied from packages/edit-site/src/components/revisions/index.js\n\t// could we create a shared hook?\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: originalSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, originalSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tonClose={ onClose }\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={ showCloseButton ? __( 'Close' ) : null }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'edit-site-style-book', {\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<Tabs>\n\t\t\t\t\t\t<div className=\"edit-site-style-book__tablist-container\">\n\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst categoryDefinition = tab.slug\n\t\t\t\t\t\t\t\t? getTopLevelStyleBookCategories().find(\n\t\t\t\t\t\t\t\t\t\t( _category ) =>\n\t\t\t\t\t\t\t\t\t\t\t_category.slug === tab.slug\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\tconst filteredExamples = categoryDefinition\n\t\t\t\t\t\t\t\t? getExamplesByCategory(\n\t\t\t\t\t\t\t\t\t\tcategoryDefinition,\n\t\t\t\t\t\t\t\t\t\texamples\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: { examples };\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-style-book__tabpanel\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\t\t\tcategory={ tab.slug }\n\t\t\t\t\t\t\t\t\t\texamples={ filteredExamples }\n\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ { examples: examplesForSinglePageUse } }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\n/**\n * Style Book Preview component renders the stylebook without the Editor dependency.\n *\n * @param {Object} props Component props.\n * @param {Object} props.userConfig User configuration.\n * @param {boolean} props.isStatic Whether the stylebook is static or clickable.\n * @return {Object} Style Book Preview component.\n */\nexport const StyleBookPreview = ( { userConfig = {}, isStatic = false } ) => {\n\tconst siteEditorSettings = useSelect(\n\t\t( select ) => select( siteEditorStore ).getSettings(),\n\t\t[]\n\t);\n\n\tconst canUserUploadMedia = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'media',\n\t\t\t} ),\n\t\t[]\n\t);\n\n\t// Update block editor settings because useMultipleOriginColorsAndGradients fetch colours from there.\n\tuseEffect( () => {\n\t\tdispatch( blockEditorStore ).updateSettings( {\n\t\t\t...siteEditorSettings,\n\t\t\tmediaUpload: canUserUploadMedia ? uploadMedia : undefined,\n\t\t} );\n\t}, [ siteEditorSettings, canUserUploadMedia ] );\n\n\tconst [ section, onChangeSection ] = useSection();\n\n\tconst isSelected = ( blockName ) => {\n\t\t// Match '/blocks/core%2Fbutton' and\n\t\t// '/blocks/core%2Fbutton/typography', but not\n\t\t// '/blocks/core%2Fbuttons'.\n\t\treturn (\n\t\t\tsection === `/blocks/${ encodeURIComponent( blockName ) }` ||\n\t\t\tsection.startsWith(\n\t\t\t\t`/blocks/${ encodeURIComponent( blockName ) }/`\n\t\t\t)\n\t\t);\n\t};\n\n\tconst onSelect = ( blockName ) => {\n\t\tif (\n\t\t\tSTYLE_BOOK_COLOR_GROUPS.find(\n\t\t\t\t( group ) => group.slug === blockName\n\t\t\t)\n\t\t) {\n\t\t\t// Go to color palettes Global Styles.\n\t\t\tonChangeSection( '/colors/palette' );\n\t\t\treturn;\n\t\t}\n\t\tif ( blockName === 'typography' ) {\n\t\t\t// Go to typography Global Styles.\n\t\t\tonChangeSection( '/typography' );\n\t\t\treturn;\n\t\t}\n\n\t\t// Now go to the selected block.\n\t\tonChangeSection( `/blocks/${ encodeURIComponent( blockName ) }` );\n\t};\n\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = getExamples( colors );\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tlet previewCategory = null;\n\tif ( section.includes( '/colors' ) ) {\n\t\tpreviewCategory = 'colors';\n\t} else if ( section.includes( '/typography' ) ) {\n\t\tpreviewCategory = 'text';\n\t} else if ( section.includes( '/blocks' ) ) {\n\t\tpreviewCategory = 'blocks';\n\t\tconst blockName =\n\t\t\tdecodeURIComponent( section ).split( '/blocks/' )[ 1 ];\n\t\tif (\n\t\t\tblockName &&\n\t\t\texamples.find( ( example ) => example.name === blockName )\n\t\t) {\n\t\t\tpreviewCategory = blockName;\n\t\t}\n\t} else if ( ! isStatic ) {\n\t\tpreviewCategory = 'overview';\n\t}\n\tconst categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(\n\t\t( category ) => category.slug === previewCategory\n\t);\n\n\t// If there's no category definition there may be a single block.\n\tconst filteredExamples = categoryDefinition\n\t\t? getExamplesByCategory( categoryDefinition, examples )\n\t\t: {\n\t\t\t\texamples: [\n\t\t\t\t\texamples.find(\n\t\t\t\t\t\t( example ) => example.name === previewCategory\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t };\n\n\t// If there's no preview category, show all examples.\n\tconst displayedExamples = previewCategory\n\t\t? filteredExamples\n\t\t: { examples: examplesForSinglePageUse };\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( section );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...siteEditorSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: siteEditorSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, siteEditorSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<div className=\"edit-site-style-book\">\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<GlobalStylesRenderer disableRootPadding />\n\t\t\t\t<StyleBookBody\n\t\t\t\t\texamples={ displayedExamples }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\tisSelected={ ! isStatic ? isSelected : null }\n\t\t\t\t\tonSelect={ ! isStatic ? onSelect : null }\n\t\t\t\t/>\n\t\t\t</BlockEditorProvider>\n\t\t</div>\n\t);\n};\n\nexport const StyleBookBody = ( {\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\ttitle,\n\tgoTo,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst [ hasIframeLoaded, setHasIframeLoaded ] = useState( false );\n\tconst iframeRef = useRef( null );\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst handleLoad = () => setHasIframeLoaded( true );\n\tuseLayoutEffect( () => {\n\t\tif ( hasIframeLoaded && iframeRef?.current ) {\n\t\t\tif ( goTo?.top ) {\n\t\t\t\tscrollToSection( 'top', iframeRef?.current );\n\t\t\t}\n\t\t}\n\t}, [ iframeRef?.current, goTo, scrollToSection, hasIframeLoaded ] );\n\n\treturn (\n\t\t<Iframe\n\t\t\tonLoad={ handleLoad }\n\t\t\tref={ iframeRef }\n\t\t\tclassName={ clsx( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{ STYLE_BOOK_IFRAME_STYLES }\n\t\t\t\t{ !! onClick &&\n\t\t\t\t\t'body { cursor: pointer; } body * { pointer-events: none; }' }\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName=\"edit-site-style-book__examples\"\n\t\t\t\tfilteredExamples={ examples }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tkey={ title }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, filteredExamples, label, isSelected, onSelect } ) => {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t\trole=\"grid\"\n\t\t\t>\n\t\t\t\t{ !! filteredExamples?.examples?.length &&\n\t\t\t\t\tfilteredExamples.examples.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tcontent={ example.content }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t!! onSelect\n\t\t\t\t\t\t\t\t\t? () => onSelect( example.name )\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ !! filteredExamples?.subcategories?.length &&\n\t\t\t\t\tfilteredExamples.subcategories.map( ( subcategory ) => (\n\t\t\t\t\t\t<Composite.Group\n\t\t\t\t\t\t\tclassName=\"edit-site-style-book__subcategory\"\n\t\t\t\t\t\t\tkey={ `subcategory-${ subcategory.slug }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Composite.GroupLabel>\n\t\t\t\t\t\t\t\t<h2 className=\"edit-site-style-book__subcategory-title\">\n\t\t\t\t\t\t\t\t\t{ subcategory.title }\n\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t</Composite.GroupLabel>\n\t\t\t\t\t\t\t<Subcategory\n\t\t\t\t\t\t\t\texamples={ subcategory.examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Composite.Group>\n\t\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t);\n\t}\n);\n\nconst Subcategory = ( { examples, isSelected, onSelect } ) => {\n\treturn (\n\t\t!! examples?.length &&\n\t\texamples.map( ( example ) => (\n\t\t\t<Example\n\t\t\t\tkey={ example.name }\n\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\ttitle={ example.title }\n\t\t\t\tcontent={ example.content }\n\t\t\t\tblocks={ example.blocks }\n\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\tonClick={ !! onSelect ? () => onSelect( example.name ) : null }\n\t\t\t/>\n\t\t) )\n\t);\n};\n\nconst disabledExamples = [ 'example-duotones' ];\n\nconst Example = ( { id, title, blocks, isSelected, onClick, content } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tfocusMode: false, // Disable \"Spotlight mode\".\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\tconst disabledProps =\n\t\tdisabledExamples.includes( id ) || ! onClick\n\t\t\t? {\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\taccessibleWhenDisabled: !! onClick,\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<div role=\"row\">\n\t\t\t<div role=\"gridcell\">\n\t\t\t\t<Composite.Item\n\t\t\t\t\tclassName={ clsx( 'edit-site-style-book__example', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-disabled-example': !! disabledProps?.disabled,\n\t\t\t\t\t} ) }\n\t\t\t\t\tid={ id }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\t!! onClick\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t\t\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\trender={ <div /> }\n\t\t\t\t\trole={ !! onClick ? 'button' : null }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t{ ...disabledProps }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"edit-site-style-book__example-preview\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t\t\t{ content ? (\n\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<EditorStyles />\n\t\t\t\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Disabled>\n\t\t\t\t\t</div>\n\t\t\t\t</Composite.Item>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default StyleBook;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","Disabled","Composite","privateApis","componentsPrivateApis","__","_x","sprintf","BlockList","blockEditorPrivateApis","store","blockEditorStore","useSettings","BlockEditorProvider","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","editorPrivateApis","useSelect","dispatch","useMemo","useState","memo","useContext","useRef","useLayoutEffect","useEffect","ENTER","SPACE","uploadMedia","coreStore","unlock","EditorCanvasContainer","STYLE_BOOK_IFRAME_STYLES","getExamplesByCategory","getTopLevelStyleBookCategories","getExamples","siteEditorStore","useSection","GlobalStylesRenderer","getVariationClassName","STYLE_BOOK_COLOR_GROUPS","STYLE_BOOK_PREVIEW_CATEGORIES","jsx","_jsx","jsxs","_jsxs","ExperimentalBlockEditorProvider","useGlobalStyle","GlobalStylesContext","useGlobalStylesOutputWithConfig","mergeBaseAndUserConfigs","Tabs","isObjectEmpty","object","Object","keys","length","scrollToSection","anchorId","iframe","contentDocument","element","body","getElementById","scrollIntoView","behavior","getStyleBookNavigationFromPath","path","startsWith","top","useMultiOriginPalettes","colors","gradients","shouldDisplayDefaultDuotones","customDuotones","themeDuotones","defaultDuotones","palettes","result","duotones","push","name","slug","getExamplesForSinglePageUse","examples","examplesForSinglePageUse","overviewCategoryExamples","otherExamples","filter","example","category","find","overviewExample","applyBlockVariationsToExamples","variation","map","blocks","attributes","style","undefined","className","StyleBook","enableResizing","isSelected","onClick","onSelect","showCloseButton","onClose","showTabs","userConfig","textColor","backgroundColor","tabs","some","base","baseConfig","goTo","mergedConfig","originalSettings","select","getSettings","globalStyles","settings","styles","isPreviewMode","closeButtonLabel","children","color","background","TabList","tab","Tab","tabId","title","categoryDefinition","_category","filteredExamples","TabPanel","focusable","StyleBookBody","StyleBookPreview","isStatic","siteEditorSettings","canUserUploadMedia","canUser","kind","updateSettings","mediaUpload","section","onChangeSection","blockName","encodeURIComponent","isBlockVariation","group","previewCategory","blockVariation","includes","decodeURIComponent","split","displayedExamples","disableRootPadding","isFocused","setIsFocused","hasIframeLoaded","setHasIframeLoaded","iframeRef","buttonModeProps","role","onFocus","onBlur","onKeyDown","event","defaultPrevented","keyCode","preventDefault","readonly","handleLoad","current","onLoad","ref","tabIndex","Examples","label","orientation","Example","id","content","subcategories","subcategory","Group","GroupLabel","Subcategory","disabledExamples","focusMode","renderedBlocks","Array","isArray","disabledProps","disabled","accessibleWhenDisabled","Item","render","value","renderAppender"],"sources":["@wordpress/edit-site/src/components/style-book/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDisabled,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tuseSettings,\n\tBlockEditorProvider,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { useSelect, dispatch } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tuseState,\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n} from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { uploadMedia } from '@wordpress/media-utils';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\nimport { STYLE_BOOK_IFRAME_STYLES } from './constants';\nimport {\n\tgetExamplesByCategory,\n\tgetTopLevelStyleBookCategories,\n} from './categories';\nimport { getExamples } from './examples';\nimport { store as siteEditorStore } from '../../store';\nimport { useSection } from '../sidebar-global-styles-wrapper';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\nimport { getVariationClassName } from '../global-styles/utils';\nimport {\n\tSTYLE_BOOK_COLOR_GROUPS,\n\tSTYLE_BOOK_PREVIEW_CATEGORIES,\n} from '../style-book/constants';\n\nconst {\n\tExperimentalBlockEditorProvider,\n\tuseGlobalStyle,\n\tGlobalStylesContext,\n\tuseGlobalStylesOutputWithConfig,\n} = unlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Scrolls to a section within an iframe.\n *\n * @param {string} anchorId The id of the element to scroll to.\n * @param {HTMLIFrameElement} iframe The target iframe.\n */\nconst scrollToSection = ( anchorId, iframe ) => {\n\tif ( ! anchorId || ! iframe || ! iframe?.contentDocument ) {\n\t\treturn;\n\t}\n\n\tconst element =\n\t\tanchorId === 'top'\n\t\t\t? iframe.contentDocument.body\n\t\t\t: iframe.contentDocument.getElementById( anchorId );\n\tif ( element ) {\n\t\telement.scrollIntoView( {\n\t\t\tbehavior: 'smooth',\n\t\t} );\n\t}\n};\n\n/**\n * Parses a Block Editor navigation path to build a style book navigation path.\n * The object can be extended to include a category, representing a style book tab/section.\n *\n * @param {string} path An internal Block Editor navigation path.\n * @return {null|{block: string}} An object containing the example to navigate to.\n */\nconst getStyleBookNavigationFromPath = ( path ) => {\n\tif ( path && typeof path === 'string' ) {\n\t\tif (\n\t\t\tpath === '/' ||\n\t\t\tpath.startsWith( '/typography' ) ||\n\t\t\tpath.startsWith( '/colors' ) ||\n\t\t\tpath.startsWith( '/blocks' )\n\t\t) {\n\t\t\treturn {\n\t\t\t\ttop: true,\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Retrieves colors, gradients, and duotone filters from Global Styles.\n * The inclusion of default (Core) palettes is controlled by the relevant\n * theme.json property e.g. defaultPalette, defaultGradients, defaultDuotone.\n *\n * @return {Object} Object containing properties for each type of palette.\n */\nfunction useMultiOriginPalettes() {\n\tconst { colors, gradients } = useMultipleOriginColorsAndGradients();\n\n\t// Add duotone filters to the palettes data.\n\tconst [\n\t\tshouldDisplayDefaultDuotones,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t] = useSettings(\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default'\n\t);\n\n\tconst palettes = useMemo( () => {\n\t\tconst result = { colors, gradients, duotones: [] };\n\n\t\tif ( themeDuotones && themeDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates these duotone filters come from the theme.'\n\t\t\t\t),\n\t\t\t\tslug: 'theme',\n\t\t\t\tduotones: themeDuotones,\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tshouldDisplayDefaultDuotones &&\n\t\t\tdefaultDuotones &&\n\t\t\tdefaultDuotones.length\n\t\t) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates these duotone filters come from WordPress.'\n\t\t\t\t),\n\t\t\t\tslug: 'default',\n\t\t\t\tduotones: defaultDuotones,\n\t\t\t} );\n\t\t}\n\t\tif ( customDuotones && customDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates these doutone filters are created by the user.'\n\t\t\t\t),\n\t\t\t\tslug: 'custom',\n\t\t\t\tduotones: customDuotones,\n\t\t\t} );\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tcolors,\n\t\tgradients,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t\tshouldDisplayDefaultDuotones,\n\t] );\n\n\treturn palettes;\n}\n\n/**\n * Get deduped examples for single page stylebook.\n * @param {Array} examples Array of examples.\n * @return {Array} Deduped examples.\n */\nexport function getExamplesForSinglePageUse( examples ) {\n\tconst examplesForSinglePageUse = [];\n\tconst overviewCategoryExamples = getExamplesByCategory(\n\t\t{ slug: 'overview' },\n\t\texamples\n\t);\n\texamplesForSinglePageUse.push( ...overviewCategoryExamples.examples );\n\tconst otherExamples = examples.filter( ( example ) => {\n\t\treturn (\n\t\t\texample.category !== 'overview' &&\n\t\t\t! overviewCategoryExamples.examples.find(\n\t\t\t\t( overviewExample ) => overviewExample.name === example.name\n\t\t\t)\n\t\t);\n\t} );\n\texamplesForSinglePageUse.push( ...otherExamples );\n\n\treturn examplesForSinglePageUse;\n}\n\n/**\n * Applies a block variation to each example by updating its attributes.\n *\n * @param {Array} examples Array of examples\n * @param {string} variation Block variation name.\n * @return {Array} Updated examples with variation applied.\n */\nfunction applyBlockVariationsToExamples( examples, variation ) {\n\tif ( ! variation ) {\n\t\treturn examples;\n\t}\n\n\treturn examples.map( ( example ) => ( {\n\t\t...example,\n\t\tvariation,\n\t\tblocks: {\n\t\t\t...example.blocks,\n\t\t\tattributes: {\n\t\t\t\t...example.blocks.attributes,\n\t\t\t\tstyle: undefined,\n\t\t\t\tclassName: getVariationClassName( variation ),\n\t\t\t},\n\t\t},\n\t} ) );\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tonClose,\n\tshowTabs = true,\n\tuserConfig = {},\n\tpath = '',\n} ) {\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = useMemo( () => getExamples( colors ), [ colors ] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetTopLevelStyleBookCategories().filter( ( category ) =>\n\t\t\t\texamples.some(\n\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t)\n\t\t\t),\n\t\t[ examples ]\n\t);\n\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( path );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\t// Copied from packages/edit-site/src/components/revisions/index.js\n\t// could we create a shared hook?\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: originalSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, originalSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tonClose={ onClose }\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={ showCloseButton ? __( 'Close' ) : null }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'edit-site-style-book', {\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<Tabs>\n\t\t\t\t\t\t<div className=\"edit-site-style-book__tablist-container\">\n\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst categoryDefinition = tab.slug\n\t\t\t\t\t\t\t\t? getTopLevelStyleBookCategories().find(\n\t\t\t\t\t\t\t\t\t\t( _category ) =>\n\t\t\t\t\t\t\t\t\t\t\t_category.slug === tab.slug\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\tconst filteredExamples = categoryDefinition\n\t\t\t\t\t\t\t\t? getExamplesByCategory(\n\t\t\t\t\t\t\t\t\t\tcategoryDefinition,\n\t\t\t\t\t\t\t\t\t\texamples\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: { examples };\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-style-book__tabpanel\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\t\t\tcategory={ tab.slug }\n\t\t\t\t\t\t\t\t\t\texamples={ filteredExamples }\n\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ { examples: examplesForSinglePageUse } }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\n/**\n * Style Book Preview component renders the stylebook without the Editor dependency.\n *\n * @param {Object} props Component props.\n * @param {Object} props.userConfig User configuration.\n * @param {boolean} props.isStatic Whether the stylebook is static or clickable.\n * @return {Object} Style Book Preview component.\n */\nexport const StyleBookPreview = ( { userConfig = {}, isStatic = false } ) => {\n\tconst siteEditorSettings = useSelect(\n\t\t( select ) => select( siteEditorStore ).getSettings(),\n\t\t[]\n\t);\n\n\tconst canUserUploadMedia = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'media',\n\t\t\t} ),\n\t\t[]\n\t);\n\n\t// Update block editor settings because useMultipleOriginColorsAndGradients fetch colours from there.\n\tuseEffect( () => {\n\t\tdispatch( blockEditorStore ).updateSettings( {\n\t\t\t...siteEditorSettings,\n\t\t\tmediaUpload: canUserUploadMedia ? uploadMedia : undefined,\n\t\t} );\n\t}, [ siteEditorSettings, canUserUploadMedia ] );\n\n\tconst [ section, onChangeSection ] = useSection();\n\n\tconst isSelected = ( blockName ) => {\n\t\t// Match '/blocks/core%2Fbutton' and\n\t\t// '/blocks/core%2Fbutton/typography', but not\n\t\t// '/blocks/core%2Fbuttons'.\n\t\treturn (\n\t\t\tsection === `/blocks/${ encodeURIComponent( blockName ) }` ||\n\t\t\tsection.startsWith(\n\t\t\t\t`/blocks/${ encodeURIComponent( blockName ) }/`\n\t\t\t)\n\t\t);\n\t};\n\n\tconst onSelect = ( blockName, isBlockVariation = false ) => {\n\t\tif (\n\t\t\tSTYLE_BOOK_COLOR_GROUPS.find(\n\t\t\t\t( group ) => group.slug === blockName\n\t\t\t)\n\t\t) {\n\t\t\t// Go to color palettes Global Styles.\n\t\t\tonChangeSection( '/colors/palette' );\n\t\t\treturn;\n\t\t}\n\t\tif ( blockName === 'typography' ) {\n\t\t\t// Go to typography Global Styles.\n\t\t\tonChangeSection( '/typography' );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlockVariation ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Now go to the selected block.\n\t\tonChangeSection( `/blocks/${ encodeURIComponent( blockName ) }` );\n\t};\n\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = getExamples( colors );\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tlet previewCategory = null;\n\tlet blockVariation = null;\n\tif ( section.includes( '/colors' ) ) {\n\t\tpreviewCategory = 'colors';\n\t} else if ( section.includes( '/typography' ) ) {\n\t\tpreviewCategory = 'text';\n\t} else if ( section.includes( '/blocks' ) ) {\n\t\tpreviewCategory = 'blocks';\n\t\tlet blockName = decodeURIComponent( section ).split( '/blocks/' )[ 1 ];\n\n\t\t// The blockName can contain variations, if so, extract the variation.\n\t\tif ( blockName?.includes( '/variations' ) ) {\n\t\t\t[ blockName, blockVariation ] = blockName.split( '/variations/' );\n\t\t}\n\n\t\tif (\n\t\t\tblockName &&\n\t\t\texamples.find( ( example ) => example.name === blockName )\n\t\t) {\n\t\t\tpreviewCategory = blockName;\n\t\t}\n\t} else if ( ! isStatic ) {\n\t\tpreviewCategory = 'overview';\n\t}\n\tconst categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(\n\t\t( category ) => category.slug === previewCategory\n\t);\n\n\tconst filteredExamples = useMemo( () => {\n\t\t// If there's no category definition there may be a single block.\n\t\tif ( ! categoryDefinition ) {\n\t\t\treturn {\n\t\t\t\texamples: [\n\t\t\t\t\texamples.find(\n\t\t\t\t\t\t( example ) => example.name === previewCategory\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\treturn getExamplesByCategory( categoryDefinition, examples );\n\t}, [ categoryDefinition, examples, previewCategory ] );\n\n\tconst displayedExamples = useMemo( () => {\n\t\t// If there's no preview category, show all examples.\n\t\tif ( ! previewCategory ) {\n\t\t\treturn { examples: examplesForSinglePageUse };\n\t\t}\n\n\t\tif ( blockVariation ) {\n\t\t\treturn {\n\t\t\t\texamples: applyBlockVariationsToExamples(\n\t\t\t\t\tfilteredExamples.examples,\n\t\t\t\t\tblockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\treturn filteredExamples;\n\t}, [\n\t\tpreviewCategory,\n\t\texamplesForSinglePageUse,\n\t\tblockVariation,\n\t\tfilteredExamples,\n\t] );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( section );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...siteEditorSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: siteEditorSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, siteEditorSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<div className=\"edit-site-style-book\">\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<GlobalStylesRenderer disableRootPadding />\n\t\t\t\t<StyleBookBody\n\t\t\t\t\texamples={ displayedExamples }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\tisSelected={ ! isStatic ? isSelected : null }\n\t\t\t\t\tonSelect={ ! isStatic ? onSelect : null }\n\t\t\t\t/>\n\t\t\t</BlockEditorProvider>\n\t\t</div>\n\t);\n};\n\nexport const StyleBookBody = ( {\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\ttitle,\n\tgoTo,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst [ hasIframeLoaded, setHasIframeLoaded ] = useState( false );\n\tconst iframeRef = useRef( null );\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst handleLoad = () => setHasIframeLoaded( true );\n\tuseLayoutEffect( () => {\n\t\tif ( hasIframeLoaded && iframeRef?.current ) {\n\t\t\tif ( goTo?.top ) {\n\t\t\t\tscrollToSection( 'top', iframeRef?.current );\n\t\t\t}\n\t\t}\n\t}, [ iframeRef?.current, goTo, scrollToSection, hasIframeLoaded ] );\n\n\treturn (\n\t\t<Iframe\n\t\t\tonLoad={ handleLoad }\n\t\t\tref={ iframeRef }\n\t\t\tclassName={ clsx( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{ STYLE_BOOK_IFRAME_STYLES }\n\t\t\t\t{ !! onClick &&\n\t\t\t\t\t'body { cursor: pointer; } body * { pointer-events: none; }' }\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName=\"edit-site-style-book__examples\"\n\t\t\t\tfilteredExamples={ examples }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tkey={ title }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, filteredExamples, label, isSelected, onSelect } ) => {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t\trole=\"grid\"\n\t\t\t>\n\t\t\t\t{ !! filteredExamples?.examples?.length &&\n\t\t\t\t\tfilteredExamples.examples.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tcontent={ example.content }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t!! onSelect\n\t\t\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\t\t\t\texample.name,\n\t\t\t\t\t\t\t\t\t\t\t\t!! example.variation\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ !! filteredExamples?.subcategories?.length &&\n\t\t\t\t\tfilteredExamples.subcategories.map( ( subcategory ) => (\n\t\t\t\t\t\t<Composite.Group\n\t\t\t\t\t\t\tclassName=\"edit-site-style-book__subcategory\"\n\t\t\t\t\t\t\tkey={ `subcategory-${ subcategory.slug }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Composite.GroupLabel>\n\t\t\t\t\t\t\t\t<h2 className=\"edit-site-style-book__subcategory-title\">\n\t\t\t\t\t\t\t\t\t{ subcategory.title }\n\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t</Composite.GroupLabel>\n\t\t\t\t\t\t\t<Subcategory\n\t\t\t\t\t\t\t\texamples={ subcategory.examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Composite.Group>\n\t\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t);\n\t}\n);\n\nconst Subcategory = ( { examples, isSelected, onSelect } ) => {\n\treturn (\n\t\t!! examples?.length &&\n\t\texamples.map( ( example ) => (\n\t\t\t<Example\n\t\t\t\tkey={ example.name }\n\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\ttitle={ example.title }\n\t\t\t\tcontent={ example.content }\n\t\t\t\tblocks={ example.blocks }\n\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\tonClick={ !! onSelect ? () => onSelect( example.name ) : null }\n\t\t\t/>\n\t\t) )\n\t);\n};\n\nconst disabledExamples = [ 'example-duotones' ];\n\nconst Example = ( { id, title, blocks, isSelected, onClick, content } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tfocusMode: false, // Disable \"Spotlight mode\".\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\tconst disabledProps =\n\t\tdisabledExamples.includes( id ) || ! onClick\n\t\t\t? {\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\taccessibleWhenDisabled: !! onClick,\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<div role=\"row\">\n\t\t\t<div role=\"gridcell\">\n\t\t\t\t<Composite.Item\n\t\t\t\t\tclassName={ clsx( 'edit-site-style-book__example', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-disabled-example': !! disabledProps?.disabled,\n\t\t\t\t\t} ) }\n\t\t\t\t\tid={ id }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\t!! onClick\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t\t\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\trender={ <div /> }\n\t\t\t\t\trole={ !! onClick ? 'button' : null }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t{ ...disabledProps }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"edit-site-style-book__example-preview\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t\t\t{ content ? (\n\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<EditorStyles />\n\t\t\t\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Disabled>\n\t\t\t\t\t</div>\n\t\t\t\t</Composite.Item>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default StyleBook;\n"],"mappings":"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","ignoreList":[]}