@wordpress/edit-site 4.10.0 → 4.11.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/add-custom-template-modal.js +22 -42
  3. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +17 -20
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +366 -239
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/block-editor/index.js +1 -3
  9. package/build/components/block-editor/index.js.map +1 -1
  10. package/build/components/global-styles/dimensions-panel.js +183 -13
  11. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  12. package/build/components/global-styles/hooks.js +1 -1
  13. package/build/components/global-styles/hooks.js.map +1 -1
  14. package/build/components/global-styles/use-global-styles-output.js +95 -17
  15. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  16. package/build/components/global-styles/utils.js +31 -0
  17. package/build/components/global-styles/utils.js.map +1 -1
  18. package/build/components/header/index.js +7 -6
  19. package/build/components/header/index.js.map +1 -1
  20. package/build/hooks/index.js +2 -0
  21. package/build/hooks/index.js.map +1 -1
  22. package/build/hooks/template-part-edit.js +86 -0
  23. package/build/hooks/template-part-edit.js.map +1 -0
  24. package/build-module/components/add-new-template/add-custom-template-modal.js +23 -43
  25. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  26. package/build-module/components/add-new-template/new-template.js +18 -21
  27. package/build-module/components/add-new-template/new-template.js.map +1 -1
  28. package/build-module/components/add-new-template/utils.js +365 -227
  29. package/build-module/components/add-new-template/utils.js.map +1 -1
  30. package/build-module/components/block-editor/index.js +1 -2
  31. package/build-module/components/block-editor/index.js.map +1 -1
  32. package/build-module/components/global-styles/dimensions-panel.js +183 -14
  33. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  34. package/build-module/components/global-styles/hooks.js +1 -1
  35. package/build-module/components/global-styles/hooks.js.map +1 -1
  36. package/build-module/components/global-styles/use-global-styles-output.js +94 -22
  37. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  38. package/build-module/components/global-styles/utils.js +29 -0
  39. package/build-module/components/global-styles/utils.js.map +1 -1
  40. package/build-module/components/header/index.js +8 -6
  41. package/build-module/components/header/index.js.map +1 -1
  42. package/build-module/hooks/index.js +1 -0
  43. package/build-module/hooks/index.js.map +1 -1
  44. package/build-module/hooks/template-part-edit.js +67 -0
  45. package/build-module/hooks/template-part-edit.js.map +1 -0
  46. package/build-style/style-rtl.css +25 -25
  47. package/build-style/style.css +25 -25
  48. package/package.json +29 -29
  49. package/src/components/add-new-template/add-custom-template-modal.js +27 -45
  50. package/src/components/add-new-template/new-template.js +27 -64
  51. package/src/components/add-new-template/style.scss +20 -8
  52. package/src/components/add-new-template/utils.js +398 -229
  53. package/src/components/block-editor/index.js +0 -2
  54. package/src/components/global-styles/dimensions-panel.js +207 -14
  55. package/src/components/global-styles/hooks.js +2 -0
  56. package/src/components/global-styles/test/use-global-styles-output.js +64 -1
  57. package/src/components/global-styles/use-global-styles-output.js +100 -8
  58. package/src/components/global-styles/utils.js +31 -0
  59. package/src/components/header/index.js +9 -10
  60. package/src/components/header/style.scss +5 -3
  61. package/src/components/sidebar/style.scss +4 -0
  62. package/src/hooks/index.js +1 -0
  63. package/src/hooks/template-part-edit.js +82 -0
  64. package/src/style.scss +0 -1
  65. package/build/components/edit-template-part-menu-button/index.js +0 -90
  66. package/build/components/edit-template-part-menu-button/index.js.map +0 -1
  67. package/build-module/components/edit-template-part-menu-button/index.js +0 -72
  68. package/build-module/components/edit-template-part-menu-button/index.js.map +0 -1
  69. package/src/components/edit-template-part-menu-button/index.js +0 -82
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"names":["mapToIHasNameAndId","entities","path","map","entity","name","taxonomyBaseConfig","entityName","getOrderBy","search","getIcon","blockMeta","getTitle","labels","singular_name","getDescription","postTypeBaseConfig","recordNamePath","_icon","startsWith","slice","post","entitiesConfig","postType","templatePrefix","page","taxonomy","category","tag","templateSlug","useExistingTemplates","select","coreStore","getEntityRecords","per_page","useDefaultTemplateTypes","editorStore","__experimentalGetDefaultTemplateTypes","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","usePostTypes","usePostTypePage","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","useTaxonomies","specialTaxonomies","useTaxonomyCategory","useTaxonomyTag","useEntitiesInfo","existingTemplates","slugsToExcludePerEntity","reduce","accumulator","_prefix","slugsWithTemplates","_accumulator","existingTemplate","push","substring","length","recordsToExcludePerEntity","Object","entries","postsWithTemplates","_fields","context","entitiesInfo","existingEntitiesIds","id","hasEntities","exclude","useExtraTemplates","entityConfig","onClickMenuItem","defaultTemplateTypes","existingTemplateSlugs","extraTemplates","icon","slugForGeneralTemplate","defaultTemplateType","find","_slug","generalTemplateSlug","hasGeneralTemplate","menuItem","title","description","onClick","template","type","config","postsToExclude"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post } from '@wordpress/icons';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\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 enitities 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( get( 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\n/**\n * @typedef {Object} EntityConfig\n * @property {string} entityName The entity's name.\n * @property {Function} getOrderBy Getter for an entity's `orderBy` query parameter, given the object\n * {search} as argument.\n * @property {Function} getIcon Getter function for returning an entity's icon for the menu item.\n * @property {Function} getTitle Getter function for returning an entity's title for the menu item.\n * @property {Function} getDescription Getter function for returning an entity's description for the menu item.\n * @property {string} recordNamePath The path to an entity's properties to use as a `name`. If not provided\n * is assumed that `name` property exists.\n * @property {string} templatePrefix The template prefix to create new templates and check against existing\n * templates. For example custom post types need a `single-` prefix to all\n * templates(`single-post-hello`), whereas `pages` don't (`page-hello`).\n * @property {string} templateSlug If this property is provided, it is going to be used for the creation of\n * new templates and the check against existing templates in the place\n * of the actual entity's `slug`. An example is `Tag` templates where the\n * the Tag's taxonomy slug is `post_tag`, but template hierarchy is based\n * on `tag` alias.\n */\n\nconst taxonomyBaseConfig = {\n\tentityName: 'taxonomy',\n\tgetOrderBy: ( { search } ) => ( search ? 'name' : 'count' ),\n\tgetIcon: () => blockMeta,\n\tgetTitle: ( labels ) =>\n\t\tsprintf(\n\t\t\t// translators: %s: Name of the taxonomy e.g: \"Cagegory\".\n\t\t\t__( 'Single taxonomy: %s' ),\n\t\t\tlabels.singular_name\n\t\t),\n\tgetDescription: ( labels ) =>\n\t\tsprintf(\n\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t__( 'Displays a single taxonomy: %s.' ),\n\t\t\tlabels.singular_name\n\t\t),\n};\nconst postTypeBaseConfig = {\n\tentityName: 'postType',\n\tgetOrderBy: ( { search } ) => ( search ? 'relevance' : 'modified' ),\n\trecordNamePath: 'title.rendered',\n\t// `icon` is the `menu_icon` property of a post type. We\n\t// only handle `dashicons` for now, even if the `menu_icon`\n\t// also supports urls and svg as values.\n\tgetIcon: ( _icon ) =>\n\t\t_icon?.startsWith( 'dashicons-' ) ? _icon.slice( 10 ) : post,\n\tgetTitle: ( labels ) =>\n\t\tsprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Single item: %s' ),\n\t\t\tlabels.singular_name\n\t\t),\n\tgetDescription: ( labels ) =>\n\t\tsprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\tlabels.singular_name\n\t\t),\n};\nexport const entitiesConfig = {\n\tpostType: {\n\t\t...postTypeBaseConfig,\n\t\ttemplatePrefix: 'single-',\n\t},\n\tpage: { ...postTypeBaseConfig },\n\ttaxonomy: {\n\t\t...taxonomyBaseConfig,\n\t\ttemplatePrefix: 'taxonomy-',\n\t},\n\tcategory: { ...taxonomyBaseConfig },\n\ttag: { ...taxonomyBaseConfig, templateSlug: 'tag' },\n};\n\nexport const useExistingTemplates = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\tper_page: -1,\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( editorStore ).__experimentalGetDefaultTemplateTypes(),\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\n// `page` post type is a special case in the template hierarchy,\n// so we exclude it from the list of post types and we handle it\n// separately.\nexport const usePostTypes = () => {\n\tconst postTypes = usePublicPostTypes();\n\treturn useMemo( () => {\n\t\treturn postTypes?.filter( ( { slug } ) => slug !== 'page' );\n\t}, [ postTypes ] );\n};\nexport const usePostTypePage = () => {\n\tconst postTypes = usePublicPostTypes();\n\treturn useMemo( () => {\n\t\treturn postTypes?.filter( ( { slug } ) => slug === 'page' );\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\n/**\n * `category` and `post_tag` are handled specifically in template\n * hierarchy so we need to differentiate them and return the rest,\n * e.g. `category-$slug` and `taxonomy-$taxonomy-$term`.\n */\nexport const useTaxonomies = () => {\n\tconst taxonomies = usePublicTaxonomies();\n\tconst specialTaxonomies = [ 'category', 'post_tag' ];\n\treturn useMemo(\n\t\t() =>\n\t\t\ttaxonomies?.filter(\n\t\t\t\t( { slug } ) => ! specialTaxonomies.includes( slug )\n\t\t\t),\n\t\t[ taxonomies ]\n\t);\n};\n\nexport const useTaxonomyCategory = () => {\n\tconst taxonomies = usePublicTaxonomies();\n\treturn useMemo(\n\t\t() => taxonomies?.filter( ( { slug } ) => slug === 'category' ),\n\t\t[ taxonomies ]\n\t);\n};\nexport const useTaxonomyTag = () => {\n\tconst taxonomies = usePublicTaxonomies();\n\treturn useMemo(\n\t\t() => taxonomies?.filter( ( { slug } ) => slug === 'post_tag' ),\n\t\t[ taxonomies ]\n\t);\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 remaing record, by excluding them.\n *\n * @param {string[]} existingTemplates The existing templates.\n * @param {Object[]} entities The array of entities we need to get extra information.\n * @param {EntityConfig} entityConfig The entity config.\n * @return {Record<string,EntitiesInfo>} An object with the `entities.slug` as `keys` and EntitiesInfo as values.\n */\nconst useEntitiesInfo = (\n\texistingTemplates,\n\tentities,\n\t{ entityName, templatePrefix, templateSlug }\n) => {\n\tconst slugsToExcludePerEntity = useMemo( () => {\n\t\treturn entities?.reduce( ( accumulator, entity ) => {\n\t\t\tlet _prefix = `${ templateSlug || entity.slug }-`;\n\t\t\tif ( templatePrefix ) {\n\t\t\t\t_prefix = templatePrefix + _prefix;\n\t\t\t}\n\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\texistingTemplate.slug.substring( _prefix.length )\n\t\t\t\t\t\t);\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\tif ( slugsWithTemplates.length ) {\n\t\t\t\taccumulator[ entity.slug ] = slugsWithTemplates;\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, {} );\n\t}, [ entities, existingTemplates ] );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! slugsToExcludePerEntity ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn Object.entries( slugsToExcludePerEntity ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst postsWithTemplates = 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} );\n\t\t\t\t\tif ( postsWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = postsWithTemplates;\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\tconst entitiesInfo = useSelect(\n\t\t( select ) => {\n\t\t\treturn entities?.reduce( ( 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: !! select( coreStore ).getEntityRecords(\n\t\t\t\t\t\tentityName,\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t}\n\t\t\t\t\t)?.length,\n\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t};\n\t\t\t\treturn accumulator;\n\t\t\t}, {} );\n\t\t},\n\t\t[ entities, recordsToExcludePerEntity ]\n\t);\n\treturn entitiesInfo;\n};\n\nexport const useExtraTemplates = (\n\tentities,\n\tentityConfig,\n\tonClickMenuItem\n) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst entitiesInfo = useEntitiesInfo(\n\t\texistingTemplates,\n\t\tentities,\n\t\tentityConfig\n\t);\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst extraTemplates = ( entities || [] ).reduce(\n\t\t( accumulator, entity ) => {\n\t\t\tconst { slug, labels, icon } = entity;\n\t\t\tconst slugForGeneralTemplate = entityConfig.templateSlug || slug;\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 defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === slugForGeneralTemplate\n\t\t\t);\n\t\t\tconst generalTemplateSlug =\n\t\t\t\tdefaultTemplateType?.slug ||\n\t\t\t\t`${ entityConfig.templatePrefix }${ slug }`;\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? { ...defaultTemplateType }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: entityConfig.getTitle( labels ),\n\t\t\t\t\t\tdescription: entityConfig.getDescription( labels ),\n\t\t\t\t\t\ticon: entityConfig.getIcon?.( icon ),\n\t\t\t\t };\n\t\t\tconst hasEntities = entitiesInfo?.[ 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: entityConfig.entityName,\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: entityConfig,\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\tpostsToExclude:\n\t\t\t\t\t\t\tentitiesInfo[ slug ].existingEntitiesIds,\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\treturn extraTemplates;\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"names":["mapToIHasNameAndId","entities","path","map","entity","name","useExistingTemplates","select","coreStore","getEntityRecords","per_page","useDefaultTemplateTypes","editorStore","__experimentalGetDefaultTemplateTypes","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","usePostTypeMenuItems","onClickMenuItem","publicPostTypes","existingTemplates","defaultTemplateTypes","templatePrefixes","reduce","accumulator","suffix","postTypeLabels","labels","singularName","singular_name","toLowerCase","needsUniqueIdentifier","postTypesInfo","useEntitiesInfo","existingTemplateSlugs","menuItems","postType","icon","generalTemplateSlug","defaultTemplateType","find","_slug","hasGeneralTemplate","_needsUniqueIdentifier","menuItemTitle","menuItem","title","description","startsWith","slice","post","hasEntities","onClick","template","type","config","recordNamePath","queryArgs","search","_fields","orderBy","exclude","existingEntitiesIds","getSpecificTemplate","suggestion","push","postTypesMenuItems","key","defaultPostTypesMenuItems","useTaxonomiesMenuItems","publicTaxonomies","taxonomyLabels","taxonomiesInfo","taxonomy","blockMeta","taxonomiesMenuItems","defaultTaxonomiesMenuItems","useExistingTemplateSlugs","existingSlugs","Object","entries","prefix","slugsWithTemplates","_accumulator","existingTemplate","_prefix","substring","length","useTemplatesToExclude","entityName","slugsToExcludePerEntity","recordsToExcludePerEntity","entitiesWithTemplates","context","entitiesInfo","keys","id"],"mappings":";;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,kBAAkB,GAAG,CAAEC,QAAF,EAAYC,IAAZ,KAAsB;AACvD,SAAO,CAAED,QAAQ,IAAI,EAAd,EAAmBE,GAAnB,CAA0BC,MAAF,KAAgB,EAC9C,GAAGA,MAD2C;AAE9CC,IAAAA,IAAI,EAAE,kCAAgB,iBAAKD,MAAL,EAAaF,IAAb,CAAhB;AAFwC,GAAhB,CAAxB,CAAP;AAIA,CALM;AAOP;AACA;AACA;AACA;AACA;;;;;AAEO,MAAMI,oBAAoB,GAAG,MAAM;AACzC,SAAO,qBACJC,MAAF,IACCA,MAAM,CAAEC,eAAF,CAAN,CAAoBC,gBAApB,CAAsC,UAAtC,EAAkD,aAAlD,EAAiE;AAChEC,IAAAA,QAAQ,EAAE,CAAC;AADqD,GAAjE,CAFK,EAKN,EALM,CAAP;AAOA,CARM;;;;AAUA,MAAMC,uBAAuB,GAAG,MAAM;AAC5C,SAAO,qBACJJ,MAAF,IACCA,MAAM,CAAEK,aAAF,CAAN,CAAsBC,qCAAtB,EAFK,EAGN,EAHM,CAAP;AAKA,CANM;;;;AAQP,MAAMC,kBAAkB,GAAG,MAAM;AAChC,QAAMC,SAAS,GAAG,qBACfR,MAAF,IAAcA,MAAM,CAAEC,eAAF,CAAN,CAAoBQ,YAApB,CAAkC;AAAEN,IAAAA,QAAQ,EAAE,CAAC;AAAb,GAAlC,CADG,EAEjB,EAFiB,CAAlB;AAIA,SAAO,sBAAS,MAAM;AACrB,UAAMO,iBAAiB,GAAG,CAAE,YAAF,CAA1B;AACA,WAAOF,SAAP,aAAOA,SAAP,uBAAOA,SAAS,CAAEG,MAAX,CACN;AAAA,UAAE;AAAEC,QAAAA,QAAF;AAAYC,QAAAA;AAAZ,OAAF;AAAA,aACCD,QAAQ,IAAI,CAAEF,iBAAiB,CAACI,QAAlB,CAA4BD,IAA5B,CADf;AAAA,KADM,CAAP;AAIA,GANM,EAMJ,CAAEL,SAAF,CANI,CAAP;AAOA,CAZD;;AAcA,MAAMO,mBAAmB,GAAG,MAAM;AACjC,QAAMC,UAAU,GAAG,qBAChBhB,MAAF,IAAcA,MAAM,CAAEC,eAAF,CAAN,CAAoBgB,aAApB,CAAmC;AAAEd,IAAAA,QAAQ,EAAE,CAAC;AAAb,GAAnC,CADI,EAElB,EAFkB,CAAnB;AAIA,SAAO,sBAAS,MAAM;AACrB,WAAOa,UAAP,aAAOA,UAAP,uBAAOA,UAAU,CAAEL,MAAZ,CACN;AAAA,UAAE;AAAEO,QAAAA;AAAF,OAAF;AAAA,aAAsBA,UAAtB,aAAsBA,UAAtB,uBAAsBA,UAAU,CAAEC,kBAAlC;AAAA,KADM,CAAP;AAGA,GAJM,EAIJ,CAAEH,UAAF,CAJI,CAAP;AAKA,CAVD;;AAYO,MAAMI,oBAAoB,GAAKC,eAAF,IAAuB;AAC1D,QAAMC,eAAe,GAAGf,kBAAkB,EAA1C;AACA,QAAMgB,iBAAiB,GAAGxB,oBAAoB,EAA9C;AACA,QAAMyB,oBAAoB,GAAGpB,uBAAuB,EAApD,CAH0D,CAI1D;;AACA,QAAMqB,gBAAgB,GAAG,sBACxB,MACCH,eADD,aACCA,eADD,uBACCA,eAAe,CAAEI,MAAjB,CAAyB,CAAEC,WAAF,YAA6B;AAAA,QAAd;AAAEd,MAAAA;AAAF,KAAc;AACrD,QAAIe,MAAM,GAAGf,IAAb;;AACA,QAAKA,IAAI,KAAK,MAAd,EAAuB;AACtBe,MAAAA,MAAM,GAAI,UAAUA,MAAQ,EAA5B;AACA;;AACDD,IAAAA,WAAW,CAAEd,IAAF,CAAX,GAAsBe,MAAtB;AACA,WAAOD,WAAP;AACA,GAPD,EAOG,EAPH,CAFuB,EAUxB,CAAEL,eAAF,CAVwB,CAAzB,CAL0D,CAiB1D;AACA;;AACA,QAAMO,cAAc,GAAGP,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAEI,MAAjB,CACtB,CAAEC,WAAF,YAA+B;AAAA,QAAhB;AAAEG,MAAAA;AAAF,KAAgB;AAC9B,UAAMC,YAAY,GAAGD,MAAM,CAACE,aAAP,CAAqBC,WAArB,EAArB;AACAN,IAAAA,WAAW,CAAEI,YAAF,CAAX,GACC,CAAEJ,WAAW,CAAEI,YAAF,CAAX,IAA+B,CAAjC,IAAuC,CADxC;AAEA,WAAOJ,WAAP;AACA,GANqB,EAOtB,EAPsB,CAAvB;;AASA,QAAMO,qBAAqB,GAAG,CAAEJ,MAAF,EAAUjB,IAAV,KAAoB;AACjD,UAAMkB,YAAY,GAAGD,MAAM,CAACE,aAAP,CAAqBC,WAArB,EAArB;AACA,WAAOJ,cAAc,CAAEE,YAAF,CAAd,GAAiC,CAAjC,IAAsCA,YAAY,KAAKlB,IAA9D;AACA,GAHD;;AAIA,QAAMsB,aAAa,GAAGC,eAAe,CAAE,UAAF,EAAcX,gBAAd,CAArC;AACA,QAAMY,qBAAqB,GAAG,CAAEd,iBAAiB,IAAI,EAAvB,EAA4B3B,GAA5B,CAC7B;AAAA,QAAE;AAAEiB,MAAAA;AAAF,KAAF;AAAA,WAAgBA,IAAhB;AAAA,GAD6B,CAA9B;AAGA,QAAMyB,SAAS,GAAG,CAAEhB,eAAe,IAAI,EAArB,EAA0BI,MAA1B,CACjB,CAAEC,WAAF,EAAeY,QAAf,KAA6B;AAAA;;AAC5B,UAAM;AAAE1B,MAAAA,IAAF;AAAQiB,MAAAA,MAAR;AAAgBU,MAAAA;AAAhB,QAAyBD,QAA/B,CAD4B,CAE5B;AACA;AACA;;AACA,UAAME,mBAAmB,GAAGhB,gBAAgB,CAAEZ,IAAF,CAA5C;AACA,UAAM6B,mBAAmB,GAAGlB,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEmB,IAAtB,CAC3B;AAAA,UAAE;AAAE9B,QAAAA,IAAI,EAAE+B;AAAR,OAAF;AAAA,aAAuBA,KAAK,KAAKH,mBAAjC;AAAA,KAD2B,CAA5B;AAGA,UAAMI,kBAAkB,GACvBR,qBADuB,aACvBA,qBADuB,uBACvBA,qBAAqB,CAAEvB,QAAvB,CAAiC2B,mBAAjC,CADD;;AAEA,UAAMK,sBAAsB,GAAGZ,qBAAqB,CACnDJ,MADmD,EAEnDjB,IAFmD,CAApD;;AAIA,QAAIkC,aAAa,GAAG,oBACnB;AACA,kBAAI,iBAAJ,CAFmB,EAGnBjB,MAAM,CAACE,aAHY,CAApB;;AAKA,QAAKc,sBAAL,EAA8B;AAC7BC,MAAAA,aAAa,GAAG,oBACf;AACA,oBAAI,0BAAJ,CAFe,EAGfjB,MAAM,CAACE,aAHQ,EAIfnB,IAJe,CAAhB;AAMA;;AACD,UAAMmC,QAAQ,GAAGN,mBAAmB,GACjC,EAAE,GAAGA;AAAL,KADiC,GAEjC;AACA7B,MAAAA,IAAI,EAAE4B,mBADN;AAEAQ,MAAAA,KAAK,EAAEF,aAFP;AAGAG,MAAAA,WAAW,EAAE,oBACZ;AACA,oBAAI,6BAAJ,CAFY,EAGZpB,MAAM,CAACE,aAHK,CAHb;AAQA;AACA;AACA;AACAQ,MAAAA,IAAI,EAAEA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,IAAAA,IAAI,CAAEW,UAAN,CAAkB,YAAlB,IACHX,IAAI,CAACY,KAAL,CAAY,EAAZ,CADG,GAEHC;AAbH,KAFH;AAiBA,UAAMC,WAAW,GAAGnB,aAAH,aAAGA,aAAH,8CAAGA,aAAa,CAAItB,IAAJ,CAAhB,wDAAG,oBAAyByC,WAA7C,CA7C4B,CA8C5B;;AACA,QAAKA,WAAL,EAAmB;AAClBN,MAAAA,QAAQ,CAACO,OAAT,GAAqBC,QAAF,IAAgB;AAClCnC,QAAAA,eAAe,CAAE;AAChBoC,UAAAA,IAAI,EAAE,UADU;AAEhB5C,UAAAA,IAFgB;AAGhB6C,UAAAA,MAAM,EAAE;AACPC,YAAAA,cAAc,EAAE,gBADT;AAEPC,YAAAA,SAAS,EAAE,SAAkB;AAAA,kBAAhB;AAAEC,gBAAAA;AAAF,eAAgB;AAC5B,qBAAO;AACNC,gBAAAA,OAAO,EAAE,oBADH;AAENC,gBAAAA,OAAO,EAAEF,MAAM,GAAG,WAAH,GAAiB,UAF1B;AAGNG,gBAAAA,OAAO,EACN7B,aAAa,CAAEtB,IAAF,CAAb,CACEoD;AALG,eAAP;AAOA,aAVM;AAWPC,YAAAA,mBAAmB,EAAIC,UAAF,IAAkB;AACtC,kBAAIlB,KAAK,GAAG,oBACX;AACA,4BAAI,YAAJ,CAFW,EAGXnB,MAAM,CAACE,aAHI,EAIXmC,UAAU,CAACrE,IAJA,CAAZ;AAMA,oBAAMoD,WAAW,GAAG,oBACnB;AACA,4BAAI,mBAAJ,CAFmB,EAGnBD,KAHmB,CAApB;;AAKA,kBAAKH,sBAAL,EAA8B;AAC7BG,gBAAAA,KAAK,GAAG,oBACP;AACA,8BAAI,WAAJ,CAFO,EAGPA,KAHO,EAIN,IAAIpC,IAAM,GAJJ,CAAR;AAMA;;AACD,qBAAO;AACNoC,gBAAAA,KADM;AAENC,gBAAAA,WAFM;AAGNrC,gBAAAA,IAAI,EAAG,GAAGY,gBAAgB,CAAEZ,IAAF,CAAU,IAAIsD,UAAU,CAACtD,IAAM;AAHnD,eAAP;AAKA;AApCM,WAHQ;AAyChBiB,UAAAA,MAzCgB;AA0ChBe,UAAAA,kBA1CgB;AA2ChBW,UAAAA;AA3CgB,SAAF,CAAf;AA6CA,OA9CD;AA+CA,KA/F2B,CAgG5B;AACA;;;AACA,QAAK,CAAEX,kBAAF,IAAwBS,WAA7B,EAA2C;AAC1C3B,MAAAA,WAAW,CAACyC,IAAZ,CAAkBpB,QAAlB;AACA;;AACD,WAAOrB,WAAP;AACA,GAvGgB,EAwGjB,EAxGiB,CAAlB,CApC0D,CA8I1D;AACA;;AACA,QAAM0C,kBAAkB,GAAG,sBAC1B,MACC/B,SAAS,CAACZ,MAAV,CACC,CAAEC,WAAF,EAAeY,QAAf,KAA6B;AAC5B,UAAM;AAAE1B,MAAAA;AAAF,QAAW0B,QAAjB;AACA,QAAI+B,GAAG,GAAG,oBAAV;;AACA,QAAKzD,IAAI,KAAK,MAAd,EAAuB;AACtByD,MAAAA,GAAG,GAAG,2BAAN;AACA;;AACD3C,IAAAA,WAAW,CAAE2C,GAAF,CAAX,CAAmBF,IAAnB,CAAyB7B,QAAzB;AACA,WAAOZ,WAAP;AACA,GATF,EAUC;AAAE4C,IAAAA,yBAAyB,EAAE,EAA7B;AAAiCF,IAAAA,kBAAkB,EAAE;AAArD,GAVD,CAFyB,EAc1B,CAAE/B,SAAF,CAd0B,CAA3B;AAgBA,SAAO+B,kBAAP;AACA,CAjKM;;;;AAmKA,MAAMG,sBAAsB,GAAKnD,eAAF,IAAuB;AAC5D,QAAMoD,gBAAgB,GAAG1D,mBAAmB,EAA5C;AACA,QAAMQ,iBAAiB,GAAGxB,oBAAoB,EAA9C;AACA,QAAMyB,oBAAoB,GAAGpB,uBAAuB,EAApD,CAH4D,CAI5D;;AACA,QAAMqB,gBAAgB,GAAG,sBACxB,MACCgD,gBADD,aACCA,gBADD,uBACCA,gBAAgB,CAAE/C,MAAlB,CAA0B,CAAEC,WAAF,YAA6B;AAAA,QAAd;AAAEd,MAAAA;AAAF,KAAc;AACtD,QAAIe,MAAM,GAAGf,IAAb;;AACA,QAAK,CAAE,CAAE,UAAF,EAAc,UAAd,EAA2BC,QAA3B,CAAqCD,IAArC,CAAP,EAAqD;AACpDe,MAAAA,MAAM,GAAI,YAAYA,MAAQ,EAA9B;AACA;;AACD,QAAKf,IAAI,KAAK,UAAd,EAA2B;AAC1Be,MAAAA,MAAM,GAAI,KAAV;AACA;;AACDD,IAAAA,WAAW,CAAEd,IAAF,CAAX,GAAsBe,MAAtB;AACA,WAAOD,WAAP;AACA,GAVD,EAUG,EAVH,CAFuB,EAaxB,CAAE8C,gBAAF,CAbwB,CAAzB,CAL4D,CAoB5D;AACA;;AACA,QAAMC,cAAc,GAAGD,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,CAAE/C,MAAlB,CACtB,CAAEC,WAAF,YAA+B;AAAA,QAAhB;AAAEG,MAAAA;AAAF,KAAgB;AAC9B,UAAMC,YAAY,GAAGD,MAAM,CAACE,aAAP,CAAqBC,WAArB,EAArB;AACAN,IAAAA,WAAW,CAAEI,YAAF,CAAX,GACC,CAAEJ,WAAW,CAAEI,YAAF,CAAX,IAA+B,CAAjC,IAAuC,CADxC;AAEA,WAAOJ,WAAP;AACA,GANqB,EAOtB,EAPsB,CAAvB;;AASA,QAAMO,qBAAqB,GAAG,CAAEJ,MAAF,EAAUjB,IAAV,KAAoB;AACjD,QAAK,CAAE,UAAF,EAAc,UAAd,EAA2BC,QAA3B,CAAqCD,IAArC,CAAL,EAAmD;AAClD,aAAO,KAAP;AACA;;AACD,UAAMkB,YAAY,GAAGD,MAAM,CAACE,aAAP,CAAqBC,WAArB,EAArB;AACA,WAAOyC,cAAc,CAAE3C,YAAF,CAAd,GAAiC,CAAjC,IAAsCA,YAAY,KAAKlB,IAA9D;AACA,GAND;;AAOA,QAAM8D,cAAc,GAAGvC,eAAe,CAAE,UAAF,EAAcX,gBAAd,CAAtC;AACA,QAAMY,qBAAqB,GAAG,CAAEd,iBAAiB,IAAI,EAAvB,EAA4B3B,GAA5B,CAC7B;AAAA,QAAE;AAAEiB,MAAAA;AAAF,KAAF;AAAA,WAAgBA,IAAhB;AAAA,GAD6B,CAA9B;AAGA,QAAMyB,SAAS,GAAG,CAAEmC,gBAAgB,IAAI,EAAtB,EAA2B/C,MAA3B,CACjB,CAAEC,WAAF,EAAeiD,QAAf,KAA6B;AAAA;;AAC5B,UAAM;AAAE/D,MAAAA,IAAF;AAAQiB,MAAAA;AAAR,QAAmB8C,QAAzB,CAD4B,CAE5B;AACA;AACA;;AACA,UAAMnC,mBAAmB,GAAGhB,gBAAgB,CAAEZ,IAAF,CAA5C;AACA,UAAM6B,mBAAmB,GAAGlB,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAEmB,IAAtB,CAC3B;AAAA,UAAE;AAAE9B,QAAAA,IAAI,EAAE+B;AAAR,OAAF;AAAA,aAAuBA,KAAK,KAAKH,mBAAjC;AAAA,KAD2B,CAA5B;AAGA,UAAMI,kBAAkB,GACvBR,qBADuB,aACvBA,qBADuB,uBACvBA,qBAAqB,CAAEvB,QAAvB,CAAiC2B,mBAAjC,CADD;;AAEA,UAAMK,sBAAsB,GAAGZ,qBAAqB,CACnDJ,MADmD,EAEnDjB,IAFmD,CAApD;;AAIA,QAAIkC,aAAa,GAAGjB,MAAM,CAACE,aAA3B;;AACA,QAAKc,sBAAL,EAA8B;AAC7BC,MAAAA,aAAa,GAAG,oBACf;AACA,oBAAI,aAAJ,CAFe,EAGfjB,MAAM,CAACE,aAHQ,EAIfnB,IAJe,CAAhB;AAMA;;AACD,UAAMmC,QAAQ,GAAGN,mBAAmB,GACjC,EAAE,GAAGA;AAAL,KADiC,GAEjC;AACA7B,MAAAA,IAAI,EAAE4B,mBADN;AAEAQ,MAAAA,KAAK,EAAEF,aAFP;AAGAG,MAAAA,WAAW,EAAE,oBACZ;AACA,oBAAI,wBAAJ,CAFY,EAGZpB,MAAM,CAACE,aAHK,CAHb;AAQAQ,MAAAA,IAAI,EAAEqC;AARN,KAFH;AAYA,UAAMvB,WAAW,GAAGqB,cAAH,aAAGA,cAAH,+CAAGA,cAAc,CAAI9D,IAAJ,CAAjB,yDAAG,qBAA0ByC,WAA9C,CApC4B,CAqC5B;;AACA,QAAKA,WAAL,EAAmB;AAClBN,MAAAA,QAAQ,CAACO,OAAT,GAAqBC,QAAF,IAAgB;AAClCnC,QAAAA,eAAe,CAAE;AAChBoC,UAAAA,IAAI,EAAE,UADU;AAEhB5C,UAAAA,IAFgB;AAGhB6C,UAAAA,MAAM,EAAE;AACPE,YAAAA,SAAS,EAAE,UAAkB;AAAA,kBAAhB;AAAEC,gBAAAA;AAAF,eAAgB;AAC5B,qBAAO;AACNC,gBAAAA,OAAO,EAAE,mBADH;AAENC,gBAAAA,OAAO,EAAEF,MAAM,GAAG,MAAH,GAAY,OAFrB;AAGNG,gBAAAA,OAAO,EACNW,cAAc,CAAE9D,IAAF,CAAd,CACEoD;AALG,eAAP;AAOA,aATM;AAUPC,YAAAA,mBAAmB,EAAIC,UAAF,IAAkB;AACtC,kBAAIlB,KAAK,GAAG,oBACX;AACA,4BAAI,YAAJ,CAFW,EAGXnB,MAAM,CAACE,aAHI,EAIXmC,UAAU,CAACrE,IAJA,CAAZ;AAMA,oBAAMoD,WAAW,GAAG,oBACnB;AACA,4BAAI,mBAAJ,CAFmB,EAGnBD,KAHmB,CAApB;;AAKA,kBAAKH,sBAAL,EAA8B;AAC7BG,gBAAAA,KAAK,GAAG,oBACP;AACA,8BAAI,WAAJ,CAFO,EAGPA,KAHO,EAIN,IAAIpC,IAAM,GAJJ,CAAR;AAMA;;AACD,qBAAO;AACNoC,gBAAAA,KADM;AAENC,gBAAAA,WAFM;AAGNrC,gBAAAA,IAAI,EAAG,GAAGY,gBAAgB,CAAEZ,IAAF,CAAU,IAAIsD,UAAU,CAACtD,IAAM;AAHnD,eAAP;AAKA;AAnCM,WAHQ;AAwChBiB,UAAAA,MAxCgB;AAyChBe,UAAAA,kBAzCgB;AA0ChBW,UAAAA;AA1CgB,SAAF,CAAf;AA4CA,OA7CD;AA8CA,KArF2B,CAsF5B;AACA;;;AACA,QAAK,CAAEX,kBAAF,IAAwBS,WAA7B,EAA2C;AAC1C3B,MAAAA,WAAW,CAACyC,IAAZ,CAAkBpB,QAAlB;AACA;;AACD,WAAOrB,WAAP;AACA,GA7FgB,EA8FjB,EA9FiB,CAAlB,CA1C4D,CA0I5D;AACA;;AACA,QAAMmD,mBAAmB,GAAG,sBAC3B,MACCxC,SAAS,CAACZ,MAAV,CACC,CAAEC,WAAF,EAAeiD,QAAf,KAA6B;AAC5B,UAAM;AAAE/D,MAAAA;AAAF,QAAW+D,QAAjB;AACA,QAAIN,GAAG,GAAG,qBAAV;;AACA,QAAK,CAAE,UAAF,EAAc,KAAd,EAAsBxD,QAAtB,CAAgCD,IAAhC,CAAL,EAA8C;AAC7CyD,MAAAA,GAAG,GAAG,4BAAN;AACA;;AACD3C,IAAAA,WAAW,CAAE2C,GAAF,CAAX,CAAmBF,IAAnB,CAAyBQ,QAAzB;AACA,WAAOjD,WAAP;AACA,GATF,EAUC;AAAEoD,IAAAA,0BAA0B,EAAE,EAA9B;AAAkCD,IAAAA,mBAAmB,EAAE;AAAvD,GAVD,CAF0B,EAc3B,CAAExC,SAAF,CAd2B,CAA5B;AAgBA,SAAOwC,mBAAP;AACA,CA7JM;AA+JP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,MAAME,wBAAwB,GAAKvD,gBAAF,IAAwB;AACxD,QAAMF,iBAAiB,GAAGxB,oBAAoB,EAA9C;AACA,QAAMkF,aAAa,GAAG,sBAAS,MAAM;AACpC,WAAOC,MAAM,CAACC,OAAP,CAAgB1D,gBAAgB,IAAI,EAApC,EAAyCC,MAAzC,CACN,CAAEC,WAAF,aAAqC;AAAA,UAAtB,CAAEd,IAAF,EAAQuE,MAAR,CAAsB;AACpC,YAAMC,kBAAkB,GAAG,CAAE9D,iBAAiB,IAAI,EAAvB,EAA4BG,MAA5B,CAC1B,CAAE4D,YAAF,EAAgBC,gBAAhB,KAAsC;AACrC,cAAMC,OAAO,GAAI,GAAGJ,MAAQ,GAA5B;;AACA,YAAKG,gBAAgB,CAAC1E,IAAjB,CAAsBsC,UAAtB,CAAkCqC,OAAlC,CAAL,EAAmD;AAClDF,UAAAA,YAAY,CAAClB,IAAb,CACCmB,gBAAgB,CAAC1E,IAAjB,CAAsB4E,SAAtB,CACCD,OAAO,CAACE,MADT,CADD;AAKA;;AACD,eAAOJ,YAAP;AACA,OAXyB,EAY1B,EAZ0B,CAA3B;;AAcA,UAAKD,kBAAkB,CAACK,MAAxB,EAAiC;AAChC/D,QAAAA,WAAW,CAAEd,IAAF,CAAX,GAAsBwE,kBAAtB;AACA;;AACD,aAAO1D,WAAP;AACA,KApBK,EAqBN,EArBM,CAAP;AAuBA,GAxBqB,EAwBnB,CAAEF,gBAAF,EAAoBF,iBAApB,CAxBmB,CAAtB;AAyBA,SAAO0D,aAAP;AACA,CA5BD;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMU,qBAAqB,GAAG,CAAEC,UAAF,EAAcnE,gBAAd,KAAoC;AACjE,QAAMoE,uBAAuB,GAC5Bb,wBAAwB,CAAEvD,gBAAF,CADzB;AAEA,QAAMqE,yBAAyB,GAAG,qBAC/B9F,MAAF,IAAc;AACb,WAAOkF,MAAM,CAACC,OAAP,CAAgBU,uBAAuB,IAAI,EAA3C,EAAgDnE,MAAhD,CACN,CAAEC,WAAF,aAAiD;AAAA,UAAlC,CAAEd,IAAF,EAAQwE,kBAAR,CAAkC;AAChD,YAAMU,qBAAqB,GAAG/F,MAAM,CACnCC,eADmC,CAAN,CAE5BC,gBAF4B,CAEV0F,UAFU,EAEE/E,IAFF,EAEQ;AACrCiD,QAAAA,OAAO,EAAE,IAD4B;AAErCkC,QAAAA,OAAO,EAAE,MAF4B;AAGrCnF,QAAAA,IAAI,EAAEwE;AAH+B,OAFR,CAA9B;;AAOA,UAAKU,qBAAL,aAAKA,qBAAL,eAAKA,qBAAqB,CAAEL,MAA5B,EAAqC;AACpC/D,QAAAA,WAAW,CAAEd,IAAF,CAAX,GAAsBkF,qBAAtB;AACA;;AACD,aAAOpE,WAAP;AACA,KAbK,EAcN,EAdM,CAAP;AAgBA,GAlBgC,EAmBjC,CAAEkE,uBAAF,CAnBiC,CAAlC;AAqBA,SAAOC,yBAAP;AACA,CAzBD;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM1D,eAAe,GAAG,CAAEwD,UAAF,EAAcnE,gBAAd,KAAoC;AAC3D,QAAMqE,yBAAyB,GAAGH,qBAAqB,CACtDC,UADsD,EAEtDnE,gBAFsD,CAAvD;AAIA,QAAMwE,YAAY,GAAG,qBAClBjG,MAAF,IAAc;AACb,WAAOkF,MAAM,CAACgB,IAAP,CAAazE,gBAAgB,IAAI,EAAjC,EAAsCC,MAAtC,CACN,CAAEC,WAAF,EAAed,IAAf,KAAyB;AAAA;;AACxB,YAAMoD,mBAAmB,GACxB,CAAA6B,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,qCAAAA,yBAAyB,CAAIjF,IAAJ,CAAzB,gFAAqCjB,GAArC,CACC;AAAA,YAAE;AAAEuG,UAAAA;AAAF,SAAF;AAAA,eAAcA,EAAd;AAAA,OADD,MAEK,EAHN;AAIAxE,MAAAA,WAAW,CAAEd,IAAF,CAAX,GAAsB;AACrByC,QAAAA,WAAW,EAAE,CAAC,2BAAEtD,MAAM,CAAEC,eAAF,CAAN,CAAoBC,gBAApB,CACf0F,UADe,EAEf/E,IAFe,EAGf;AACCV,UAAAA,QAAQ,EAAE,CADX;AAEC2D,UAAAA,OAAO,EAAE,IAFV;AAGCkC,UAAAA,OAAO,EAAE,MAHV;AAIChC,UAAAA,OAAO,EAAEC;AAJV,SAHe,CAAF,kDAAE,sBASbyB,MATW,CADO;AAWrBzB,QAAAA;AAXqB,OAAtB;AAaA,aAAOtC,WAAP;AACA,KApBK,EAqBN,EArBM,CAAP;AAuBA,GAzBmB,EA0BpB,CAAEF,gBAAF,EAAoBqE,yBAApB,CA1BoB,CAArB;AA4BA,SAAOG,YAAP;AACA,CAlCD","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post } from '@wordpress/icons';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\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 enitities 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( get( 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( 'postType', 'wp_template', {\n\t\t\t\tper_page: -1,\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( editorStore ).__experimentalGetDefaultTemplateTypes(),\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 const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\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\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst postTypeLabels = publicPostTypes?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\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(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = sprintf(\n\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\tlabels.singular_name\n\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\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__( 'Single item: %1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? { ...defaultTemplateType }\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: icon?.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t: post,\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\tlet title = sprintf(\n\t\t\t\t\t\t\t\t\t// translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the singular name of a post type and %2$s is the name of the post, e.g. \"Page: Hello\".\n\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\t\t\tsuggestion.name\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst description = sprintf(\n\t\t\t\t\t\t\t\t\t// translators: Represents the description of a user's custom template in the Site Editor, e.g. \"Template for Page: Hello\"\n\t\t\t\t\t\t\t\t\t__( 'Template for %1$s' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the template title and %2$s is the slug of the post type, e.g. \"Project: Hello (project_type)\"\n\t\t\t\t\t\t\t\t\t\t__( '%1$s %2$s' ),\n\t\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\t\t`(${ slug })`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\tslug: `${ templatePrefixes[ slug ] }-${ suggestion.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 singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 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 singularName = labels.singular_name.toLowerCase();\n\t\treturn taxonomyLabels[ singularName ] > 1 && singularName !== 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.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\t\t\t\t\t// translators: %1s: Name of the taxonomy e.g: \"Category\"; %2s: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t__( '%1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? { ...defaultTemplateType }\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 };\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\tlet title = sprintf(\n\t\t\t\t\t\t\t\t\t// translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the singular name of a taxonomy and %2$s is the name of the term, e.g. \"Category: shoes\".\n\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\t\t\tsuggestion.name\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tconst description = sprintf(\n\t\t\t\t\t\t\t\t\t// translators: Represents the description of a user's custom template in the Site Editor, e.g. \"Template for Category: shoes\"\n\t\t\t\t\t\t\t\t\t__( 'Template for %1$s' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: Represents the title of a user's custom template in the Site Editor, where %1$s is the template title and %2$s is the slug of the taxonomy, e.g. \"Category: shoes (product_tag)\"\n\t\t\t\t\t\t\t\t\t\t__( '%1$s %2$s' ),\n\t\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\t\t`(${ slug })`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\tslug: `${ templatePrefixes[ slug ] }-${ suggestion.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\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 * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = ( entityName, templatePrefixes ) => {\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} );\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 * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = ( entityName, templatePrefixes ) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes\n\t);\n\tconst entitiesInfo = 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 ] = {\n\t\t\t\t\t\thasEntities: !! select( coreStore ).getEntityRecords(\n\t\t\t\t\t\t\tentityName,\n\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)?.length,\n\t\t\t\t\t\texistingEntitiesIds,\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[ templatePrefixes, recordsToExcludePerEntity ]\n\t);\n\treturn entitiesInfo;\n};\n"]}
@@ -43,8 +43,6 @@ var _store = require("../../store");
43
43
 
44
44
  var _blockInspectorButton = _interopRequireDefault(require("./block-inspector-button"));
45
45
 
46
- var _editTemplatePartMenuButton = _interopRequireDefault(require("../edit-template-part-menu-button"));
47
-
48
46
  var _backButton = _interopRequireDefault(require("./back-button"));
49
47
 
50
48
  var _resizableEditor = _interopRequireDefault(require("./resizable-editor"));
@@ -151,7 +149,7 @@ function BlockEditor(_ref) {
151
149
  onInput: onInput,
152
150
  onChange: onChange,
153
151
  useSubRegistry: false
154
- }, (0, _element.createElement)(_editTemplatePartMenuButton.default, null), (0, _element.createElement)(_templatePartConverter.default, null), (0, _element.createElement)(_blockEditor.__experimentalLinkControl.ViewerFill, null, (0, _element.useCallback)(fillProps => (0, _element.createElement)(_navigateToLink.default, (0, _extends2.default)({}, fillProps, {
152
+ }, (0, _element.createElement)(_templatePartConverter.default, null), (0, _element.createElement)(_blockEditor.__experimentalLinkControl.ViewerFill, null, (0, _element.useCallback)(fillProps => (0, _element.createElement)(_navigateToLink.default, (0, _extends2.default)({}, fillProps, {
155
153
  activePage: page,
156
154
  onActivePageChange: setPage
157
155
  })), [page])), (0, _element.createElement)(_sidebar.SidebarInspectorFill, null, (0, _element.createElement)(_blockEditor.BlockInspector, null)), (0, _element.createElement)(_blockEditor.BlockTools, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/index.js"],"names":["LAYOUT","type","alignments","BlockEditor","setIsInserterOpen","storedSettings","templateType","templateId","page","select","getSettings","getEditedPostType","getEditedPostId","getPage","editSiteStore","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","restBlockPatterns","restBlockPatternCategories","coreStore","getBlockPatterns","getBlockPatternCategories","blockPatterns","blockPatternCategories","settings","blocks","onInput","onChange","setPage","enableComplementaryArea","interfaceStore","openNavigationSidebar","contentRef","mergedRefs","isMobileViewport","clearSelectedBlock","blockEditorStore","isTemplatePart","hasBlocks","length","NavMenuSidebarToggle","listView","MaybeNavMenuSidebarToggle","Fragment","process","env","IS_GUTENBERG_PLUGIN","fillProps","event","target","currentTarget","undefined","onClose","blockName"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit, unionBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useMemo, useRef, Fragment } from '@wordpress/element';\nimport { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tBlockList,\n\tBlockEditorProvider,\n\t__experimentalLinkControl,\n\tBlockInspector,\n\tBlockTools,\n\t__unstableBlockToolbarLastItem,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__unstableUseTypingObserver as useTypingObserver,\n\tBlockEditorKeyboardShortcuts,\n\tstore as blockEditorStore,\n\t__unstableBlockNameContext,\n} from '@wordpress/block-editor';\nimport { useMergeRefs, useViewportMatch } from '@wordpress/compose';\nimport { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks';\nimport { listView } from '@wordpress/icons';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartConverter from '../template-part-converter';\nimport NavigateToLink from '../navigate-to-link';\nimport { SidebarInspectorFill } from '../sidebar';\nimport { store as editSiteStore } from '../../store';\nimport BlockInspectorButton from './block-inspector-button';\nimport EditTemplatePartMenuButton from '../edit-template-part-menu-button';\nimport BackButton from './back-button';\nimport ResizableEditor from './resizable-editor';\n\nconst LAYOUT = {\n\ttype: 'default',\n\t// At the root level of the site editor, no alignments should be allowed.\n\talignments: [],\n};\n\nexport default function BlockEditor( { setIsInserterOpen } ) {\n\tconst { storedSettings, templateType, templateId, page } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getEditedPostType, getEditedPostId, getPage } =\n\t\t\t\tselect( editSiteStore );\n\n\t\t\treturn {\n\t\t\t\tstoredSettings: getSettings( setIsInserterOpen ),\n\t\t\t\ttemplateType: getEditedPostType(),\n\t\t\t\ttemplateId: getEditedPostId(),\n\t\t\t\tpage: getPage(),\n\t\t\t};\n\t\t},\n\t\t[ setIsInserterOpen ]\n\t);\n\n\tconst settingsBlockPatterns =\n\t\tstoredSettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tstoredSettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tstoredSettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tstoredSettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst { restBlockPatterns, restBlockPatternCategories } = useSelect(\n\t\t( select ) => ( {\n\t\t\trestBlockPatterns: select( coreStore ).getBlockPatterns(),\n\t\t\trestBlockPatternCategories:\n\t\t\t\tselect( coreStore ).getBlockPatternCategories(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst blockPatterns = useMemo(\n\t\t() => unionBy( settingsBlockPatterns, restBlockPatterns, 'name' ),\n\t\t[ settingsBlockPatterns, restBlockPatterns ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\tunionBy(\n\t\t\t\tsettingsBlockPatternCategories,\n\t\t\t\trestBlockPatternCategories,\n\t\t\t\t'name'\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...omit( storedSettings, [\n\t\t\t\t'__experimentalAdditionalBlockPatterns',\n\t\t\t\t'__experimentalAdditionalBlockPatternCategories',\n\t\t\t] ),\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t} ),\n\t\t[ storedSettings, blockPatterns, blockPatternCategories ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\ttemplateType\n\t);\n\tconst { setPage } = useDispatch( editSiteStore );\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst openNavigationSidebar = useCallback( () => {\n\t\tenableComplementaryArea(\n\t\t\t'core/edit-site',\n\t\t\t'edit-site/navigation-menu'\n\t\t);\n\t}, [ enableComplementaryArea ] );\n\tconst contentRef = useRef();\n\tconst mergedRefs = useMergeRefs( [ contentRef, useTypingObserver() ] );\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\n\tconst isTemplatePart = templateType === 'wp_template_part';\n\tconst hasBlocks = blocks.length !== 0;\n\n\tconst NavMenuSidebarToggle = () => (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Open list view' ) }\n\t\t\t\tonClick={ openNavigationSidebar }\n\t\t\t\ticon={ listView }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n\n\t// Conditionally include NavMenu sidebar in Plugin only.\n\t// Optimise for dead code elimination.\n\t// See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.\n\tlet MaybeNavMenuSidebarToggle = Fragment;\n\n\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\tMaybeNavMenuSidebarToggle = NavMenuSidebarToggle;\n\t}\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tsettings={ settings }\n\t\t\tvalue={ blocks }\n\t\t\tonInput={ onInput }\n\t\t\tonChange={ onChange }\n\t\t\tuseSubRegistry={ false }\n\t\t>\n\t\t\t<EditTemplatePartMenuButton />\n\t\t\t<TemplatePartConverter />\n\t\t\t<__experimentalLinkControl.ViewerFill>\n\t\t\t\t{ useCallback(\n\t\t\t\t\t( fillProps ) => (\n\t\t\t\t\t\t<NavigateToLink\n\t\t\t\t\t\t\t{ ...fillProps }\n\t\t\t\t\t\t\tactivePage={ page }\n\t\t\t\t\t\t\tonActivePageChange={ setPage }\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\t[ page ]\n\t\t\t\t) }\n\t\t\t</__experimentalLinkControl.ViewerFill>\n\t\t\t<SidebarInspectorFill>\n\t\t\t\t<BlockInspector />\n\t\t\t</SidebarInspectorFill>\n\t\t\t<BlockTools\n\t\t\t\tclassName={ classnames( 'edit-site-visual-editor', {\n\t\t\t\t\t'is-focus-mode': isTemplatePart,\n\t\t\t\t} ) }\n\t\t\t\t__unstableContentRef={ contentRef }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t// Clear selected block when clicking on the gray background.\n\t\t\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<BlockEditorKeyboardShortcuts.Register />\n\t\t\t\t<BackButton />\n\t\t\t\t<ResizableEditor\n\t\t\t\t\t// Reinitialize the editor and reset the states when the template changes.\n\t\t\t\t\tkey={ templateId }\n\t\t\t\t\tenableResizing={\n\t\t\t\t\t\tisTemplatePart &&\n\t\t\t\t\t\t// Disable resizing in mobile viewport.\n\t\t\t\t\t\t! isMobileViewport\n\t\t\t\t\t}\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tcontentRef={ mergedRefs }\n\t\t\t\t>\n\t\t\t\t\t<BlockList\n\t\t\t\t\t\tclassName=\"edit-site-block-editor__block-list wp-site-blocks\"\n\t\t\t\t\t\t__experimentalLayout={ LAYOUT }\n\t\t\t\t\t\trenderAppender={\n\t\t\t\t\t\t\tisTemplatePart && hasBlocks ? false : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ResizableEditor>\n\t\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t<__unstableBlockToolbarLastItem>\n\t\t\t\t\t<__unstableBlockNameContext.Consumer>\n\t\t\t\t\t\t{ ( blockName ) =>\n\t\t\t\t\t\t\tblockName === 'core/navigation' && (\n\t\t\t\t\t\t\t\t<MaybeNavMenuSidebarToggle />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</__unstableBlockNameContext.Consumer>\n\t\t\t\t</__unstableBlockToolbarLastItem>\n\t\t\t</BlockTools>\n\t\t\t<ReusableBlocksMenuItems />\n\t\t</BlockEditorProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/index.js"],"names":["LAYOUT","type","alignments","BlockEditor","setIsInserterOpen","storedSettings","templateType","templateId","page","select","getSettings","getEditedPostType","getEditedPostId","getPage","editSiteStore","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","restBlockPatterns","restBlockPatternCategories","coreStore","getBlockPatterns","getBlockPatternCategories","blockPatterns","blockPatternCategories","settings","blocks","onInput","onChange","setPage","enableComplementaryArea","interfaceStore","openNavigationSidebar","contentRef","mergedRefs","isMobileViewport","clearSelectedBlock","blockEditorStore","isTemplatePart","hasBlocks","length","NavMenuSidebarToggle","listView","MaybeNavMenuSidebarToggle","Fragment","process","env","IS_GUTENBERG_PLUGIN","fillProps","event","target","currentTarget","undefined","onClose","blockName"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit, unionBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useMemo, useRef, Fragment } from '@wordpress/element';\nimport { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tBlockList,\n\tBlockEditorProvider,\n\t__experimentalLinkControl,\n\tBlockInspector,\n\tBlockTools,\n\t__unstableBlockToolbarLastItem,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__unstableUseTypingObserver as useTypingObserver,\n\tBlockEditorKeyboardShortcuts,\n\tstore as blockEditorStore,\n\t__unstableBlockNameContext,\n} from '@wordpress/block-editor';\nimport { useMergeRefs, useViewportMatch } from '@wordpress/compose';\nimport { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks';\nimport { listView } from '@wordpress/icons';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartConverter from '../template-part-converter';\nimport NavigateToLink from '../navigate-to-link';\nimport { SidebarInspectorFill } from '../sidebar';\nimport { store as editSiteStore } from '../../store';\nimport BlockInspectorButton from './block-inspector-button';\nimport BackButton from './back-button';\nimport ResizableEditor from './resizable-editor';\n\nconst LAYOUT = {\n\ttype: 'default',\n\t// At the root level of the site editor, no alignments should be allowed.\n\talignments: [],\n};\n\nexport default function BlockEditor( { setIsInserterOpen } ) {\n\tconst { storedSettings, templateType, templateId, page } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getEditedPostType, getEditedPostId, getPage } =\n\t\t\t\tselect( editSiteStore );\n\n\t\t\treturn {\n\t\t\t\tstoredSettings: getSettings( setIsInserterOpen ),\n\t\t\t\ttemplateType: getEditedPostType(),\n\t\t\t\ttemplateId: getEditedPostId(),\n\t\t\t\tpage: getPage(),\n\t\t\t};\n\t\t},\n\t\t[ setIsInserterOpen ]\n\t);\n\n\tconst settingsBlockPatterns =\n\t\tstoredSettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tstoredSettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tstoredSettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tstoredSettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst { restBlockPatterns, restBlockPatternCategories } = useSelect(\n\t\t( select ) => ( {\n\t\t\trestBlockPatterns: select( coreStore ).getBlockPatterns(),\n\t\t\trestBlockPatternCategories:\n\t\t\t\tselect( coreStore ).getBlockPatternCategories(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst blockPatterns = useMemo(\n\t\t() => unionBy( settingsBlockPatterns, restBlockPatterns, 'name' ),\n\t\t[ settingsBlockPatterns, restBlockPatterns ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\tunionBy(\n\t\t\t\tsettingsBlockPatternCategories,\n\t\t\t\trestBlockPatternCategories,\n\t\t\t\t'name'\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...omit( storedSettings, [\n\t\t\t\t'__experimentalAdditionalBlockPatterns',\n\t\t\t\t'__experimentalAdditionalBlockPatternCategories',\n\t\t\t] ),\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t} ),\n\t\t[ storedSettings, blockPatterns, blockPatternCategories ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\ttemplateType\n\t);\n\tconst { setPage } = useDispatch( editSiteStore );\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst openNavigationSidebar = useCallback( () => {\n\t\tenableComplementaryArea(\n\t\t\t'core/edit-site',\n\t\t\t'edit-site/navigation-menu'\n\t\t);\n\t}, [ enableComplementaryArea ] );\n\tconst contentRef = useRef();\n\tconst mergedRefs = useMergeRefs( [ contentRef, useTypingObserver() ] );\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\n\tconst isTemplatePart = templateType === 'wp_template_part';\n\tconst hasBlocks = blocks.length !== 0;\n\n\tconst NavMenuSidebarToggle = () => (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Open list view' ) }\n\t\t\t\tonClick={ openNavigationSidebar }\n\t\t\t\ticon={ listView }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n\n\t// Conditionally include NavMenu sidebar in Plugin only.\n\t// Optimise for dead code elimination.\n\t// See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.\n\tlet MaybeNavMenuSidebarToggle = Fragment;\n\n\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\tMaybeNavMenuSidebarToggle = NavMenuSidebarToggle;\n\t}\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tsettings={ settings }\n\t\t\tvalue={ blocks }\n\t\t\tonInput={ onInput }\n\t\t\tonChange={ onChange }\n\t\t\tuseSubRegistry={ false }\n\t\t>\n\t\t\t<TemplatePartConverter />\n\t\t\t<__experimentalLinkControl.ViewerFill>\n\t\t\t\t{ useCallback(\n\t\t\t\t\t( fillProps ) => (\n\t\t\t\t\t\t<NavigateToLink\n\t\t\t\t\t\t\t{ ...fillProps }\n\t\t\t\t\t\t\tactivePage={ page }\n\t\t\t\t\t\t\tonActivePageChange={ setPage }\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\t[ page ]\n\t\t\t\t) }\n\t\t\t</__experimentalLinkControl.ViewerFill>\n\t\t\t<SidebarInspectorFill>\n\t\t\t\t<BlockInspector />\n\t\t\t</SidebarInspectorFill>\n\t\t\t<BlockTools\n\t\t\t\tclassName={ classnames( 'edit-site-visual-editor', {\n\t\t\t\t\t'is-focus-mode': isTemplatePart,\n\t\t\t\t} ) }\n\t\t\t\t__unstableContentRef={ contentRef }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t// Clear selected block when clicking on the gray background.\n\t\t\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<BlockEditorKeyboardShortcuts.Register />\n\t\t\t\t<BackButton />\n\t\t\t\t<ResizableEditor\n\t\t\t\t\t// Reinitialize the editor and reset the states when the template changes.\n\t\t\t\t\tkey={ templateId }\n\t\t\t\t\tenableResizing={\n\t\t\t\t\t\tisTemplatePart &&\n\t\t\t\t\t\t// Disable resizing in mobile viewport.\n\t\t\t\t\t\t! isMobileViewport\n\t\t\t\t\t}\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tcontentRef={ mergedRefs }\n\t\t\t\t>\n\t\t\t\t\t<BlockList\n\t\t\t\t\t\tclassName=\"edit-site-block-editor__block-list wp-site-blocks\"\n\t\t\t\t\t\t__experimentalLayout={ LAYOUT }\n\t\t\t\t\t\trenderAppender={\n\t\t\t\t\t\t\tisTemplatePart && hasBlocks ? false : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ResizableEditor>\n\t\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t<__unstableBlockToolbarLastItem>\n\t\t\t\t\t<__unstableBlockNameContext.Consumer>\n\t\t\t\t\t\t{ ( blockName ) =>\n\t\t\t\t\t\t\tblockName === 'core/navigation' && (\n\t\t\t\t\t\t\t\t<MaybeNavMenuSidebarToggle />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</__unstableBlockNameContext.Consumer>\n\t\t\t\t</__unstableBlockToolbarLastItem>\n\t\t\t</BlockTools>\n\t\t\t<ReusableBlocksMenuItems />\n\t\t</BlockEditorProvider>\n\t);\n}\n"]}
@@ -14,6 +14,8 @@ var _components = require("@wordpress/components");
14
14
 
15
15
  var _blockEditor = require("@wordpress/block-editor");
16
16
 
17
+ var _icons = require("@wordpress/icons");
18
+
17
19
  var _hooks = require("./hooks");
18
20
 
19
21
  /**
@@ -26,10 +28,24 @@ var _hooks = require("./hooks");
26
28
  const AXIAL_SIDES = ['horizontal', 'vertical'];
27
29
 
28
30
  function useHasDimensionsPanel(name) {
31
+ const hasContentSize = useHasContentSize(name);
32
+ const hasWideSize = useHasWideSize(name);
29
33
  const hasPadding = useHasPadding(name);
30
34
  const hasMargin = useHasMargin(name);
31
35
  const hasGap = useHasGap(name);
32
- return hasPadding || hasMargin || hasGap;
36
+ return hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap;
37
+ }
38
+
39
+ function useHasContentSize(name) {
40
+ const supports = (0, _hooks.getSupportedGlobalStylesPanels)(name);
41
+ const [settings] = (0, _hooks.useSetting)('layout.contentSize', name);
42
+ return settings && supports.includes('contentSize');
43
+ }
44
+
45
+ function useHasWideSize(name) {
46
+ const supports = (0, _hooks.getSupportedGlobalStylesPanels)(name);
47
+ const [settings] = (0, _hooks.useSetting)('layout.wideSize', name);
48
+ return settings && supports.includes('wideSize');
33
49
  }
34
50
 
35
51
  function useHasPadding(name) {
@@ -87,18 +103,44 @@ function splitStyleValue(value) {
87
103
  }
88
104
 
89
105
  return value;
90
- }
106
+ } // Props for managing `layout.contentSize`.
91
107
 
92
- function DimensionsPanel(_ref) {
93
- let {
94
- name
95
- } = _ref;
96
- const showPaddingControl = useHasPadding(name);
97
- const showMarginControl = useHasMargin(name);
98
- const showGapControl = useHasGap(name);
99
- const units = (0, _components.__experimentalUseCustomUnits)({
100
- availableUnits: (0, _hooks.useSetting)('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
101
- });
108
+
109
+ function useContentSizeProps(name) {
110
+ const [contentSizeValue, setContentSizeValue] = (0, _hooks.useSetting)('layout.contentSize', name);
111
+ const [userSetContentSizeValue] = (0, _hooks.useSetting)('layout.contentSize', name, 'user');
112
+
113
+ const hasUserSetContentSizeValue = () => !!userSetContentSizeValue;
114
+
115
+ const resetContentSizeValue = () => setContentSizeValue('');
116
+
117
+ return {
118
+ contentSizeValue,
119
+ setContentSizeValue,
120
+ hasUserSetContentSizeValue,
121
+ resetContentSizeValue
122
+ };
123
+ } // Props for managing `layout.wideSize`.
124
+
125
+
126
+ function useWideSizeProps(name) {
127
+ const [wideSizeValue, setWideSizeValue] = (0, _hooks.useSetting)('layout.wideSize', name);
128
+ const [userSetWideSizeValue] = (0, _hooks.useSetting)('layout.wideSize', name, 'user');
129
+
130
+ const hasUserSetWideSizeValue = () => !!userSetWideSizeValue;
131
+
132
+ const resetWideSizeValue = () => setWideSizeValue('');
133
+
134
+ return {
135
+ wideSizeValue,
136
+ setWideSizeValue,
137
+ hasUserSetWideSizeValue,
138
+ resetWideSizeValue
139
+ };
140
+ } // Props for managing `spacing.padding`.
141
+
142
+
143
+ function usePaddingProps(name) {
102
144
  const [rawPadding, setRawPadding] = (0, _hooks.useStyle)('spacing.padding', name);
103
145
  const paddingValues = splitStyleValue(rawPadding);
104
146
  const paddingSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'padding');
@@ -113,6 +155,18 @@ function DimensionsPanel(_ref) {
113
155
 
114
156
  const hasPaddingValue = () => !!paddingValues && Object.keys(paddingValues).length;
115
157
 
158
+ return {
159
+ paddingValues,
160
+ paddingSides,
161
+ isAxialPadding,
162
+ setPaddingValues,
163
+ resetPaddingValue,
164
+ hasPaddingValue
165
+ };
166
+ } // Props for managing `spacing.margin`.
167
+
168
+
169
+ function useMarginProps(name) {
116
170
  const [rawMargin, setRawMargin] = (0, _hooks.useStyle)('spacing.margin', name);
117
171
  const marginValues = splitStyleValue(rawMargin);
118
172
  const marginSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'margin');
@@ -127,22 +181,138 @@ function DimensionsPanel(_ref) {
127
181
 
128
182
  const hasMarginValue = () => !!marginValues && Object.keys(marginValues).length;
129
183
 
184
+ return {
185
+ marginValues,
186
+ marginSides,
187
+ isAxialMargin,
188
+ setMarginValues,
189
+ resetMarginValue,
190
+ hasMarginValue
191
+ };
192
+ } // Props for managing `spacing.blockGap`.
193
+
194
+
195
+ function useBlockGapProps(name) {
130
196
  const [gapValue, setGapValue] = (0, _hooks.useStyle)('spacing.blockGap', name);
131
197
 
132
198
  const resetGapValue = () => setGapValue(undefined);
133
199
 
134
200
  const hasGapValue = () => !!gapValue;
135
201
 
202
+ return {
203
+ gapValue,
204
+ setGapValue,
205
+ resetGapValue,
206
+ hasGapValue
207
+ };
208
+ }
209
+
210
+ function DimensionsPanel(_ref) {
211
+ let {
212
+ name
213
+ } = _ref;
214
+ const showContentSizeControl = useHasContentSize(name);
215
+ const showWideSizeControl = useHasWideSize(name);
216
+ const showPaddingControl = useHasPadding(name);
217
+ const showMarginControl = useHasMargin(name);
218
+ const showGapControl = useHasGap(name);
219
+ const units = (0, _components.__experimentalUseCustomUnits)({
220
+ availableUnits: (0, _hooks.useSetting)('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
221
+ }); // Props for managing `layout.contentSize`.
222
+
223
+ const {
224
+ contentSizeValue,
225
+ setContentSizeValue,
226
+ hasUserSetContentSizeValue,
227
+ resetContentSizeValue
228
+ } = useContentSizeProps(name); // Props for managing `layout.wideSize`.
229
+
230
+ const {
231
+ wideSizeValue,
232
+ setWideSizeValue,
233
+ hasUserSetWideSizeValue,
234
+ resetWideSizeValue
235
+ } = useWideSizeProps(name); // Props for managing `spacing.padding`.
236
+
237
+ const {
238
+ paddingValues,
239
+ paddingSides,
240
+ isAxialPadding,
241
+ setPaddingValues,
242
+ resetPaddingValue,
243
+ hasPaddingValue
244
+ } = usePaddingProps(name); // Props for managing `spacing.margin`.
245
+
246
+ const {
247
+ marginValues,
248
+ marginSides,
249
+ isAxialMargin,
250
+ setMarginValues,
251
+ resetMarginValue,
252
+ hasMarginValue
253
+ } = useMarginProps(name); // Props for managing `spacing.blockGap`.
254
+
255
+ const {
256
+ gapValue,
257
+ setGapValue,
258
+ resetGapValue,
259
+ hasGapValue
260
+ } = useBlockGapProps(name);
261
+
136
262
  const resetAll = () => {
137
263
  resetPaddingValue();
138
264
  resetMarginValue();
139
265
  resetGapValue();
266
+ resetContentSizeValue();
267
+ resetWideSizeValue();
140
268
  };
141
269
 
142
270
  return (0, _element.createElement)(_components.__experimentalToolsPanel, {
143
271
  label: (0, _i18n.__)('Dimensions'),
144
272
  resetAll: resetAll
145
- }, showPaddingControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
273
+ }, (showContentSizeControl || showWideSizeControl) && (0, _element.createElement)("span", {
274
+ className: "span-columns"
275
+ }, (0, _i18n.__)('Set the width of the main content area.')), showContentSizeControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
276
+ className: "single-column",
277
+ label: (0, _i18n.__)('Content size'),
278
+ hasValue: hasUserSetContentSizeValue,
279
+ onDeselect: resetContentSizeValue,
280
+ isShownByDefault: true
281
+ }, (0, _element.createElement)(_components.__experimentalHStack, {
282
+ alignment: "flex-end",
283
+ justify: "flex-start"
284
+ }, (0, _element.createElement)(_components.__experimentalUnitControl, {
285
+ label: (0, _i18n.__)('Content'),
286
+ labelPosition: "top",
287
+ __unstableInputWidth: "80px",
288
+ value: contentSizeValue || '',
289
+ onChange: nextContentSize => {
290
+ setContentSizeValue(nextContentSize);
291
+ },
292
+ units: units
293
+ }), (0, _element.createElement)(_components.__experimentalView, null, (0, _element.createElement)(_icons.Icon, {
294
+ icon: _icons.positionCenter
295
+ })))), showWideSizeControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
296
+ className: "single-column",
297
+ label: (0, _i18n.__)('Wide size'),
298
+ hasValue: hasUserSetWideSizeValue,
299
+ onDeselect: resetWideSizeValue,
300
+ isShownByDefault: true
301
+ }, (0, _element.createElement)(_components.__experimentalHStack, {
302
+ alignment: "flex-end",
303
+ justify: "flex-start"
304
+ }, (0, _element.createElement)(_components.__experimentalUnitControl, {
305
+ label: (0, _i18n.__)('Wide'),
306
+ labelPosition: "top",
307
+ __unstableInputWidth: "80px",
308
+ value: wideSizeValue || '',
309
+ onChange: nextWideSize => {
310
+ setWideSizeValue(nextWideSize);
311
+ },
312
+ units: units
313
+ }), (0, _element.createElement)(_components.__experimentalView, null, (0, _element.createElement)(_icons.Icon, {
314
+ icon: _icons.stretchWide
315
+ })))), showPaddingControl && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
146
316
  hasValue: hasPaddingValue,
147
317
  label: (0, _i18n.__)('Padding'),
148
318
  onDeselect: resetPaddingValue,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/dimensions-panel.js"],"names":["AXIAL_SIDES","useHasDimensionsPanel","name","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","supports","settings","includes","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","DimensionsPanel","showPaddingControl","showMarginControl","showGapControl","units","availableUnits","rawPadding","setRawPadding","paddingValues","paddingSides","isAxialPadding","some","setPaddingValues","newPaddingValues","padding","resetPaddingValue","hasPaddingValue","Object","keys","length","rawMargin","setRawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","margin","resetMarginValue","hasMarginValue","gapValue","setGapValue","resetGapValue","undefined","hasGapValue","resetAll"],"mappings":";;;;;;;;;;AAGA;;AACA;;AAOA;;AAKA;;AAhBA;AACA;AACA;;AAWA;AACA;AACA;AAGA,MAAMA,WAAW,GAAG,CAAE,YAAF,EAAgB,UAAhB,CAApB;;AAEO,SAASC,qBAAT,CAAgCC,IAAhC,EAAuC;AAC7C,QAAMC,UAAU,GAAGC,aAAa,CAAEF,IAAF,CAAhC;AACA,QAAMG,SAAS,GAAGC,YAAY,CAAEJ,IAAF,CAA9B;AACA,QAAMK,MAAM,GAAGC,SAAS,CAAEN,IAAF,CAAxB;AAEA,SAAOC,UAAU,IAAIE,SAAd,IAA2BE,MAAlC;AACA;;AAED,SAASH,aAAT,CAAwBF,IAAxB,EAA+B;AAC9B,QAAMO,QAAQ,GAAG,2CAAgCP,IAAhC,CAAjB;AACA,QAAM,CAAEQ,QAAF,IAAe,uBAAY,iBAAZ,EAA+BR,IAA/B,CAArB;AAEA,SAAOQ,QAAQ,IAAID,QAAQ,CAACE,QAAT,CAAmB,SAAnB,CAAnB;AACA;;AAED,SAASL,YAAT,CAAuBJ,IAAvB,EAA8B;AAC7B,QAAMO,QAAQ,GAAG,2CAAgCP,IAAhC,CAAjB;AACA,QAAM,CAAEQ,QAAF,IAAe,uBAAY,gBAAZ,EAA8BR,IAA9B,CAArB;AAEA,SAAOQ,QAAQ,IAAID,QAAQ,CAACE,QAAT,CAAmB,QAAnB,CAAnB;AACA;;AAED,SAASH,SAAT,CAAoBN,IAApB,EAA2B;AAC1B,QAAMO,QAAQ,GAAG,2CAAgCP,IAAhC,CAAjB;AACA,QAAM,CAAEQ,QAAF,IAAe,uBAAY,kBAAZ,EAAgCR,IAAhC,CAArB;AAEA,SAAOQ,QAAQ,IAAID,QAAQ,CAACE,QAAT,CAAmB,UAAnB,CAAnB;AACA;;AAED,SAASC,mBAAT,CAA8BC,MAA9B,EAAsCC,KAAtC,EAA8C;AAC7C,MAAK,CAAEA,KAAP,EAAe;AACd;AACA,WAAOD,MAAP;AACA,GAJ4C,CAM7C;;;AACA,QAAME,cAAc,GAAG,EAAvB;AACAD,EAAAA,KAAK,CAACE,OAAN,CAAiBC,IAAF,IAAY;AAC1B,QAAKA,IAAI,KAAK,UAAd,EAA2B;AAC1BF,MAAAA,cAAc,CAACG,GAAf,GAAqBL,MAAM,CAACK,GAA5B;AACAH,MAAAA,cAAc,CAACI,MAAf,GAAwBN,MAAM,CAACM,MAA/B;AACA;;AACD,QAAKF,IAAI,KAAK,YAAd,EAA6B;AAC5BF,MAAAA,cAAc,CAACK,IAAf,GAAsBP,MAAM,CAACO,IAA7B;AACAL,MAAAA,cAAc,CAACM,KAAf,GAAuBR,MAAM,CAACQ,KAA9B;AACA;;AACDN,IAAAA,cAAc,CAAEE,IAAF,CAAd,GAAyBJ,MAAM,CAAEI,IAAF,CAA/B;AACA,GAVD;AAYA,SAAOF,cAAP;AACA;;AAED,SAASO,eAAT,CAA0BC,KAA1B,EAAkC;AACjC;AACA,MAAKA,KAAK,IAAI,OAAOA,KAAP,KAAiB,QAA/B,EAA0C;AACzC;AACA,WAAO;AACNL,MAAAA,GAAG,EAAEK,KADC;AAENF,MAAAA,KAAK,EAAEE,KAFD;AAGNJ,MAAAA,MAAM,EAAEI,KAHF;AAINH,MAAAA,IAAI,EAAEG;AAJA,KAAP;AAMA;;AAED,SAAOA,KAAP;AACA;;AAEc,SAASC,eAAT,OAAqC;AAAA,MAAX;AAAEtB,IAAAA;AAAF,GAAW;AACnD,QAAMuB,kBAAkB,GAAGrB,aAAa,CAAEF,IAAF,CAAxC;AACA,QAAMwB,iBAAiB,GAAGpB,YAAY,CAAEJ,IAAF,CAAtC;AACA,QAAMyB,cAAc,GAAGnB,SAAS,CAAEN,IAAF,CAAhC;AACA,QAAM0B,KAAK,GAAG,8CAAgB;AAC7BC,IAAAA,cAAc,EAAE,uBAAY,eAAZ,EAA6B3B,IAA7B,EAAqC,CAArC,KAA4C,CAC3D,GAD2D,EAE3D,IAF2D,EAG3D,IAH2D,EAI3D,KAJ2D,EAK3D,IAL2D;AAD/B,GAAhB,CAAd;AAUA,QAAM,CAAE4B,UAAF,EAAcC,aAAd,IAAgC,qBAAU,iBAAV,EAA6B7B,IAA7B,CAAtC;AACA,QAAM8B,aAAa,GAAGV,eAAe,CAAEQ,UAAF,CAArC;AACA,QAAMG,YAAY,GAAG,+CAAgB/B,IAAhB,EAAsB,SAAtB,CAArB;AACA,QAAMgC,cAAc,GACnBD,YAAY,IACZA,YAAY,CAACE,IAAb,CAAqBlB,IAAF,IAAYjB,WAAW,CAACW,QAAZ,CAAsBM,IAAtB,CAA/B,CAFD;;AAIA,QAAMmB,gBAAgB,GAAKC,gBAAF,IAAwB;AAChD,UAAMC,OAAO,GAAG1B,mBAAmB,CAAEyB,gBAAF,EAAoBJ,YAApB,CAAnC;AACAF,IAAAA,aAAa,CAAEO,OAAF,CAAb;AACA,GAHD;;AAIA,QAAMC,iBAAiB,GAAG,MAAMH,gBAAgB,CAAE,EAAF,CAAhD;;AACA,QAAMI,eAAe,GAAG,MACvB,CAAC,CAAER,aAAH,IAAoBS,MAAM,CAACC,IAAP,CAAaV,aAAb,EAA6BW,MADlD;;AAGA,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,qBAAU,gBAAV,EAA4B3C,IAA5B,CAApC;AACA,QAAM4C,YAAY,GAAGxB,eAAe,CAAEsB,SAAF,CAApC;AACA,QAAMG,WAAW,GAAG,+CAAgB7C,IAAhB,EAAsB,QAAtB,CAApB;AACA,QAAM8C,aAAa,GAClBD,WAAW,IACXA,WAAW,CAACZ,IAAZ,CAAoBlB,IAAF,IAAYjB,WAAW,CAACW,QAAZ,CAAsBM,IAAtB,CAA9B,CAFD;;AAIA,QAAMgC,eAAe,GAAKC,eAAF,IAAuB;AAC9C,UAAMC,MAAM,GAAGvC,mBAAmB,CAAEsC,eAAF,EAAmBH,WAAnB,CAAlC;AACAF,IAAAA,YAAY,CAAEM,MAAF,CAAZ;AACA,GAHD;;AAIA,QAAMC,gBAAgB,GAAG,MAAMH,eAAe,CAAE,EAAF,CAA9C;;AACA,QAAMI,cAAc,GAAG,MACtB,CAAC,CAAEP,YAAH,IAAmBL,MAAM,CAACC,IAAP,CAAaI,YAAb,EAA4BH,MADhD;;AAGA,QAAM,CAAEW,QAAF,EAAYC,WAAZ,IAA4B,qBAAU,kBAAV,EAA8BrD,IAA9B,CAAlC;;AACA,QAAMsD,aAAa,GAAG,MAAMD,WAAW,CAAEE,SAAF,CAAvC;;AACA,QAAMC,WAAW,GAAG,MAAM,CAAC,CAAEJ,QAA7B;;AAEA,QAAMK,QAAQ,GAAG,MAAM;AACtBpB,IAAAA,iBAAiB;AACjBa,IAAAA,gBAAgB;AAChBI,IAAAA,aAAa;AACb,GAJD;;AAMA,SACC,4BAAC,oCAAD;AAAY,IAAA,KAAK,EAAG,cAAI,YAAJ,CAApB;AAAyC,IAAA,QAAQ,EAAGG;AAApD,KACGlC,kBAAkB,IACnB,4BAAC,wCAAD;AACC,IAAA,QAAQ,EAAGe,eADZ;AAEC,IAAA,KAAK,EAAG,cAAI,SAAJ,CAFT;AAGC,IAAA,UAAU,EAAGD,iBAHd;AAIC,IAAA,gBAAgB,EAAG;AAJpB,KAMC,4BAAC,oCAAD;AACC,IAAA,MAAM,EAAGP,aADV;AAEC,IAAA,QAAQ,EAAGI,gBAFZ;AAGC,IAAA,KAAK,EAAG,cAAI,SAAJ,CAHT;AAIC,IAAA,KAAK,EAAGH,YAJT;AAKC,IAAA,KAAK,EAAGL,KALT;AAMC,IAAA,UAAU,EAAG,KANd;AAOC,IAAA,WAAW,EAAGM;AAPf,IAND,CAFF,EAmBGR,iBAAiB,IAClB,4BAAC,wCAAD;AACC,IAAA,QAAQ,EAAG2B,cADZ;AAEC,IAAA,KAAK,EAAG,cAAI,QAAJ,CAFT;AAGC,IAAA,UAAU,EAAGD,gBAHd;AAIC,IAAA,gBAAgB,EAAG;AAJpB,KAMC,4BAAC,oCAAD;AACC,IAAA,MAAM,EAAGN,YADV;AAEC,IAAA,QAAQ,EAAGG,eAFZ;AAGC,IAAA,KAAK,EAAG,cAAI,QAAJ,CAHT;AAIC,IAAA,KAAK,EAAGF,WAJT;AAKC,IAAA,KAAK,EAAGnB,KALT;AAMC,IAAA,UAAU,EAAG,KANd;AAOC,IAAA,WAAW,EAAGoB;AAPf,IAND,CApBF,EAqCGrB,cAAc,IACf,4BAAC,wCAAD;AACC,IAAA,QAAQ,EAAG+B,WADZ;AAEC,IAAA,KAAK,EAAG,cAAI,eAAJ,CAFT;AAGC,IAAA,UAAU,EAAGF,aAHd;AAIC,IAAA,gBAAgB,EAAG;AAJpB,KAMC,4BAAC,qCAAD;AACC,IAAA,KAAK,EAAG,cAAI,eAAJ,CADT;AAEC,IAAA,oBAAoB,EAAC,MAFtB;AAGC,IAAA,GAAG,EAAG,CAHP;AAIC,IAAA,QAAQ,EAAGD,WAJZ;AAKC,IAAA,KAAK,EAAG3B,KALT;AAMC,IAAA,KAAK,EAAG0B;AANT,IAND,CAtCF,CADD;AAyDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { __experimentalUseCustomSides as useCustomSides } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { getSupportedGlobalStylesPanels, useSetting, useStyle } from './hooks';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( name ) {\n\tconst hasPadding = useHasPadding( name );\n\tconst hasMargin = useHasMargin( name );\n\tconst hasGap = useHasGap( name );\n\n\treturn hasPadding || hasMargin || hasGap;\n}\n\nfunction useHasPadding( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.padding', name );\n\n\treturn settings && supports.includes( 'padding' );\n}\n\nfunction useHasMargin( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.margin', name );\n\n\treturn settings && supports.includes( 'margin' );\n}\n\nfunction useHasGap( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.blockGap', name );\n\n\treturn settings && supports.includes( 'blockGap' );\n}\n\nfunction filterValuesBySides( values, sides ) {\n\tif ( ! sides ) {\n\t\t// If no custom side configuration all sides are opted into by default.\n\t\treturn values;\n\t}\n\n\t// Only include sides opted into within filtered values.\n\tconst filteredValues = {};\n\tsides.forEach( ( side ) => {\n\t\tif ( side === 'vertical' ) {\n\t\t\tfilteredValues.top = values.top;\n\t\t\tfilteredValues.bottom = values.bottom;\n\t\t}\n\t\tif ( side === 'horizontal' ) {\n\t\t\tfilteredValues.left = values.left;\n\t\t\tfilteredValues.right = values.right;\n\t\t}\n\t\tfilteredValues[ side ] = values[ side ];\n\t} );\n\n\treturn filteredValues;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value ( a string value ).\n\tif ( value && typeof value === 'string' ) {\n\t\t// Convert to value for individual sides for BoxControl.\n\t\treturn {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t};\n\t}\n\n\treturn value;\n}\n\nexport default function DimensionsPanel( { name } ) {\n\tconst showPaddingControl = useHasPadding( name );\n\tconst showMarginControl = useHasMargin( name );\n\tconst showGapControl = useHasGap( name );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units', name )[ 0 ] || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\tconst [ rawPadding, setRawPadding ] = useStyle( 'spacing.padding', name );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = useCustomSides( name, 'padding' );\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tsetRawPadding( padding );\n\t};\n\tconst resetPaddingValue = () => setPaddingValues( {} );\n\tconst hasPaddingValue = () =>\n\t\t!! paddingValues && Object.keys( paddingValues ).length;\n\n\tconst [ rawMargin, setRawMargin ] = useStyle( 'spacing.margin', name );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = useCustomSides( name, 'margin' );\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tsetRawMargin( margin );\n\t};\n\tconst resetMarginValue = () => setMarginValues( {} );\n\tconst hasMarginValue = () =>\n\t\t!! marginValues && Object.keys( marginValues ).length;\n\n\tconst [ gapValue, setGapValue ] = useStyle( 'spacing.blockGap', name );\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! gapValue;\n\n\tconst resetAll = () => {\n\t\tresetPaddingValue();\n\t\tresetMarginValue();\n\t\tresetGapValue();\n\t};\n\n\treturn (\n\t\t<ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</ToolsPanel>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/dimensions-panel.js"],"names":["AXIAL_SIDES","useHasDimensionsPanel","name","hasContentSize","useHasContentSize","hasWideSize","useHasWideSize","hasPadding","useHasPadding","hasMargin","useHasMargin","hasGap","useHasGap","supports","settings","includes","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","useContentSizeProps","contentSizeValue","setContentSizeValue","userSetContentSizeValue","hasUserSetContentSizeValue","resetContentSizeValue","useWideSizeProps","wideSizeValue","setWideSizeValue","userSetWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","usePaddingProps","rawPadding","setRawPadding","paddingValues","paddingSides","isAxialPadding","some","setPaddingValues","newPaddingValues","padding","resetPaddingValue","hasPaddingValue","Object","keys","length","useMarginProps","rawMargin","setRawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","margin","resetMarginValue","hasMarginValue","useBlockGapProps","gapValue","setGapValue","resetGapValue","undefined","hasGapValue","DimensionsPanel","showContentSizeControl","showWideSizeControl","showPaddingControl","showMarginControl","showGapControl","units","availableUnits","resetAll","nextContentSize","positionCenter","nextWideSize","stretchWide"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalBoxControl as BoxControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalView as View,\n} from '@wordpress/components';\nimport { __experimentalUseCustomSides as useCustomSides } from '@wordpress/block-editor';\nimport { Icon, positionCenter, stretchWide } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getSupportedGlobalStylesPanels, useSetting, useStyle } from './hooks';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( name ) {\n\tconst hasContentSize = useHasContentSize( name );\n\tconst hasWideSize = useHasWideSize( name );\n\tconst hasPadding = useHasPadding( name );\n\tconst hasMargin = useHasMargin( name );\n\tconst hasGap = useHasGap( name );\n\n\treturn hasContentSize || hasWideSize || hasPadding || hasMargin || hasGap;\n}\n\nfunction useHasContentSize( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'layout.contentSize', name );\n\n\treturn settings && supports.includes( 'contentSize' );\n}\n\nfunction useHasWideSize( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'layout.wideSize', name );\n\n\treturn settings && supports.includes( 'wideSize' );\n}\n\nfunction useHasPadding( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.padding', name );\n\n\treturn settings && supports.includes( 'padding' );\n}\n\nfunction useHasMargin( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.margin', name );\n\n\treturn settings && supports.includes( 'margin' );\n}\n\nfunction useHasGap( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\tconst [ settings ] = useSetting( 'spacing.blockGap', name );\n\n\treturn settings && supports.includes( 'blockGap' );\n}\n\nfunction filterValuesBySides( values, sides ) {\n\tif ( ! sides ) {\n\t\t// If no custom side configuration all sides are opted into by default.\n\t\treturn values;\n\t}\n\n\t// Only include sides opted into within filtered values.\n\tconst filteredValues = {};\n\tsides.forEach( ( side ) => {\n\t\tif ( side === 'vertical' ) {\n\t\t\tfilteredValues.top = values.top;\n\t\t\tfilteredValues.bottom = values.bottom;\n\t\t}\n\t\tif ( side === 'horizontal' ) {\n\t\t\tfilteredValues.left = values.left;\n\t\t\tfilteredValues.right = values.right;\n\t\t}\n\t\tfilteredValues[ side ] = values[ side ];\n\t} );\n\n\treturn filteredValues;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value ( a string value ).\n\tif ( value && typeof value === 'string' ) {\n\t\t// Convert to value for individual sides for BoxControl.\n\t\treturn {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t};\n\t}\n\n\treturn value;\n}\n\n// Props for managing `layout.contentSize`.\nfunction useContentSizeProps( name ) {\n\tconst [ contentSizeValue, setContentSizeValue ] = useSetting(\n\t\t'layout.contentSize',\n\t\tname\n\t);\n\tconst [ userSetContentSizeValue ] = useSetting(\n\t\t'layout.contentSize',\n\t\tname,\n\t\t'user'\n\t);\n\tconst hasUserSetContentSizeValue = () => !! userSetContentSizeValue;\n\tconst resetContentSizeValue = () => setContentSizeValue( '' );\n\treturn {\n\t\tcontentSizeValue,\n\t\tsetContentSizeValue,\n\t\thasUserSetContentSizeValue,\n\t\tresetContentSizeValue,\n\t};\n}\n\n// Props for managing `layout.wideSize`.\nfunction useWideSizeProps( name ) {\n\tconst [ wideSizeValue, setWideSizeValue ] = useSetting(\n\t\t'layout.wideSize',\n\t\tname\n\t);\n\tconst [ userSetWideSizeValue ] = useSetting(\n\t\t'layout.wideSize',\n\t\tname,\n\t\t'user'\n\t);\n\tconst hasUserSetWideSizeValue = () => !! userSetWideSizeValue;\n\tconst resetWideSizeValue = () => setWideSizeValue( '' );\n\treturn {\n\t\twideSizeValue,\n\t\tsetWideSizeValue,\n\t\thasUserSetWideSizeValue,\n\t\tresetWideSizeValue,\n\t};\n}\n\n// Props for managing `spacing.padding`.\nfunction usePaddingProps( name ) {\n\tconst [ rawPadding, setRawPadding ] = useStyle( 'spacing.padding', name );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = useCustomSides( name, 'padding' );\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tsetRawPadding( padding );\n\t};\n\tconst resetPaddingValue = () => setPaddingValues( {} );\n\tconst hasPaddingValue = () =>\n\t\t!! paddingValues && Object.keys( paddingValues ).length;\n\n\treturn {\n\t\tpaddingValues,\n\t\tpaddingSides,\n\t\tisAxialPadding,\n\t\tsetPaddingValues,\n\t\tresetPaddingValue,\n\t\thasPaddingValue,\n\t};\n}\n\n// Props for managing `spacing.margin`.\nfunction useMarginProps( name ) {\n\tconst [ rawMargin, setRawMargin ] = useStyle( 'spacing.margin', name );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = useCustomSides( name, 'margin' );\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tsetRawMargin( margin );\n\t};\n\tconst resetMarginValue = () => setMarginValues( {} );\n\tconst hasMarginValue = () =>\n\t\t!! marginValues && Object.keys( marginValues ).length;\n\n\treturn {\n\t\tmarginValues,\n\t\tmarginSides,\n\t\tisAxialMargin,\n\t\tsetMarginValues,\n\t\tresetMarginValue,\n\t\thasMarginValue,\n\t};\n}\n\n// Props for managing `spacing.blockGap`.\nfunction useBlockGapProps( name ) {\n\tconst [ gapValue, setGapValue ] = useStyle( 'spacing.blockGap', name );\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! gapValue;\n\treturn {\n\t\tgapValue,\n\t\tsetGapValue,\n\t\tresetGapValue,\n\t\thasGapValue,\n\t};\n}\n\nexport default function DimensionsPanel( { name } ) {\n\tconst showContentSizeControl = useHasContentSize( name );\n\tconst showWideSizeControl = useHasWideSize( name );\n\tconst showPaddingControl = useHasPadding( name );\n\tconst showMarginControl = useHasMargin( name );\n\tconst showGapControl = useHasGap( name );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units', name )[ 0 ] || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\t// Props for managing `layout.contentSize`.\n\tconst {\n\t\tcontentSizeValue,\n\t\tsetContentSizeValue,\n\t\thasUserSetContentSizeValue,\n\t\tresetContentSizeValue,\n\t} = useContentSizeProps( name );\n\n\t// Props for managing `layout.wideSize`.\n\tconst {\n\t\twideSizeValue,\n\t\tsetWideSizeValue,\n\t\thasUserSetWideSizeValue,\n\t\tresetWideSizeValue,\n\t} = useWideSizeProps( name );\n\n\t// Props for managing `spacing.padding`.\n\tconst {\n\t\tpaddingValues,\n\t\tpaddingSides,\n\t\tisAxialPadding,\n\t\tsetPaddingValues,\n\t\tresetPaddingValue,\n\t\thasPaddingValue,\n\t} = usePaddingProps( name );\n\n\t// Props for managing `spacing.margin`.\n\tconst {\n\t\tmarginValues,\n\t\tmarginSides,\n\t\tisAxialMargin,\n\t\tsetMarginValues,\n\t\tresetMarginValue,\n\t\thasMarginValue,\n\t} = useMarginProps( name );\n\n\t// Props for managing `spacing.blockGap`.\n\tconst { gapValue, setGapValue, resetGapValue, hasGapValue } =\n\t\tuseBlockGapProps( name );\n\n\tconst resetAll = () => {\n\t\tresetPaddingValue();\n\t\tresetMarginValue();\n\t\tresetGapValue();\n\t\tresetContentSizeValue();\n\t\tresetWideSizeValue();\n\t};\n\n\treturn (\n\t\t<ToolsPanel label={ __( 'Dimensions' ) } resetAll={ resetAll }>\n\t\t\t{ ( showContentSizeControl || showWideSizeControl ) && (\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __( 'Set the width of the main content area.' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t{ showContentSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Content size' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Content' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ positionCenter } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"single-column\"\n\t\t\t\t\tlabel={ __( 'Wide size' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<HStack alignment=\"flex-end\" justify=\"flex-start\">\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Wide' ) }\n\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<View>\n\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</HStack>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\tonDeselect={ resetPaddingValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\tonDeselect={ resetMarginValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\tonDeselect={ resetGapValue }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</ToolsPanel>\n\t);\n}\n"]}
@@ -154,7 +154,7 @@ function useStyle(path, blockName) {
154
154
  return [result, setStyle];
155
155
  }
156
156
 
157
- const ROOT_BLOCK_SUPPORTS = ['background', 'backgroundColor', 'color', 'linkColor', 'buttonColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding'];
157
+ const ROOT_BLOCK_SUPPORTS = ['background', 'backgroundColor', 'color', 'linkColor', 'buttonColor', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'lineHeight', 'textDecoration', 'textTransform', 'padding', 'contentSize', 'wideSize'];
158
158
 
159
159
  function getSupportedGlobalStylesPanels(name) {
160
160
  var _blockType$supports, _blockType$supports$s, _blockType$supports2, _blockType$supports2$, _blockType$supports3, _blockType$supports3$, _blockType$supports3$2, _blockType$supports3$3;