@wordpress/edit-site 4.12.0 → 4.12.1-next.d6164808d3.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 (98) hide show
  1. package/build/components/add-new-template/new-template.js +7 -2
  2. package/build/components/add-new-template/new-template.js.map +1 -1
  3. package/build/components/block-editor/resizable-editor.js +26 -12
  4. package/build/components/block-editor/resizable-editor.js.map +1 -1
  5. package/build/components/global-styles/border-panel.js +3 -3
  6. package/build/components/global-styles/border-panel.js.map +1 -1
  7. package/build/components/global-styles/dimensions-panel.js +92 -6
  8. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  9. package/build/components/global-styles/hooks.js +3 -3
  10. package/build/components/global-styles/hooks.js.map +1 -1
  11. package/build/components/global-styles/typography-panel.js +28 -21
  12. package/build/components/global-styles/typography-panel.js.map +1 -1
  13. package/build/components/global-styles/use-global-styles-output.js +42 -10
  14. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  15. package/build/components/global-styles/utils.js +39 -5
  16. package/build/components/global-styles/utils.js.map +1 -1
  17. package/build/components/header/document-actions/index.js +1 -0
  18. package/build/components/header/document-actions/index.js.map +1 -1
  19. package/build/components/header/index.js +5 -2
  20. package/build/components/header/index.js.map +1 -1
  21. package/build/components/header/mode-switcher/index.js +0 -4
  22. package/build/components/header/mode-switcher/index.js.map +1 -1
  23. package/build/components/header/more-menu/index.js +13 -3
  24. package/build/components/header/more-menu/index.js.map +1 -1
  25. package/build/components/sidebar/default-sidebar.js +11 -1
  26. package/build/components/sidebar/default-sidebar.js.map +1 -1
  27. package/build/components/sidebar/plugin-sidebar/index.js +11 -1
  28. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  29. package/build/components/template-details/edit-template-title.js +1 -1
  30. package/build/components/template-details/edit-template-title.js.map +1 -1
  31. package/build/components/template-details/index.js +18 -8
  32. package/build/components/template-details/index.js.map +1 -1
  33. package/build/components/template-details/template-part-area-selector.js +47 -0
  34. package/build/components/template-details/template-part-area-selector.js.map +1 -0
  35. package/build/index.js +1 -1
  36. package/build/index.js.map +1 -1
  37. package/build-module/components/add-new-template/new-template.js +8 -3
  38. package/build-module/components/add-new-template/new-template.js.map +1 -1
  39. package/build-module/components/block-editor/resizable-editor.js +26 -12
  40. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  41. package/build-module/components/global-styles/border-panel.js +3 -3
  42. package/build-module/components/global-styles/border-panel.js.map +1 -1
  43. package/build-module/components/global-styles/dimensions-panel.js +90 -7
  44. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  45. package/build-module/components/global-styles/hooks.js +3 -3
  46. package/build-module/components/global-styles/hooks.js.map +1 -1
  47. package/build-module/components/global-styles/typography-panel.js +29 -22
  48. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  49. package/build-module/components/global-styles/use-global-styles-output.js +42 -10
  50. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  51. package/build-module/components/global-styles/utils.js +39 -5
  52. package/build-module/components/global-styles/utils.js.map +1 -1
  53. package/build-module/components/header/document-actions/index.js +1 -0
  54. package/build-module/components/header/document-actions/index.js.map +1 -1
  55. package/build-module/components/header/index.js +5 -2
  56. package/build-module/components/header/index.js.map +1 -1
  57. package/build-module/components/header/mode-switcher/index.js +0 -4
  58. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  59. package/build-module/components/header/more-menu/index.js +13 -3
  60. package/build-module/components/header/more-menu/index.js.map +1 -1
  61. package/build-module/components/sidebar/default-sidebar.js +9 -1
  62. package/build-module/components/sidebar/default-sidebar.js.map +1 -1
  63. package/build-module/components/sidebar/plugin-sidebar/index.js +9 -1
  64. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  65. package/build-module/components/template-details/edit-template-title.js +1 -1
  66. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  67. package/build-module/components/template-details/index.js +18 -9
  68. package/build-module/components/template-details/index.js.map +1 -1
  69. package/build-module/components/template-details/template-part-area-selector.js +35 -0
  70. package/build-module/components/template-details/template-part-area-selector.js.map +1 -0
  71. package/build-module/index.js +1 -1
  72. package/build-module/index.js.map +1 -1
  73. package/build-style/style-rtl.css +4 -6
  74. package/build-style/style.css +4 -6
  75. package/package.json +29 -29
  76. package/src/components/add-new-template/new-template.js +13 -4
  77. package/src/components/block-editor/resizable-editor.js +28 -18
  78. package/src/components/editor/style.scss +1 -0
  79. package/src/components/global-styles/border-panel.js +3 -3
  80. package/src/components/global-styles/dimensions-panel.js +134 -30
  81. package/src/components/global-styles/hooks.js +3 -3
  82. package/src/components/global-styles/style.scss +3 -2
  83. package/src/components/global-styles/test/use-global-styles-output.js +16 -3
  84. package/src/components/global-styles/test/utils.js +68 -8
  85. package/src/components/global-styles/typography-panel.js +96 -94
  86. package/src/components/global-styles/use-global-styles-output.js +41 -14
  87. package/src/components/global-styles/utils.js +29 -4
  88. package/src/components/header/document-actions/index.js +3 -0
  89. package/src/components/header/index.js +4 -1
  90. package/src/components/header/mode-switcher/index.js +0 -3
  91. package/src/components/header/more-menu/index.js +7 -2
  92. package/src/components/sidebar/default-sidebar.js +12 -0
  93. package/src/components/sidebar/plugin-sidebar/index.js +12 -0
  94. package/src/components/template-details/edit-template-title.js +7 -3
  95. package/src/components/template-details/index.js +20 -7
  96. package/src/components/template-details/style.scss +0 -5
  97. package/src/components/template-details/template-part-area-selector.js +38 -0
  98. package/src/index.js +1 -1
@@ -71,7 +71,8 @@ function NewTemplate(_ref) {
71
71
  saveEntityRecord
72
72
  } = (0, _data.useDispatch)(_coreData.store);
73
73
  const {
74
- createErrorNotice
74
+ createErrorNotice,
75
+ createSuccessNotice
75
76
  } = (0, _data.useDispatch)(_notices.store);
76
77
  const {
77
78
  setTemplate
@@ -118,7 +119,11 @@ function NewTemplate(_ref) {
118
119
  history.push({
119
120
  postId: newTemplate.id,
120
121
  postType: newTemplate.type
121
- }); // TODO: Add a success notice?
122
+ });
123
+ createSuccessNotice((0, _i18n.sprintf)( // translators: %s: Title of the created template e.g: "Category".
124
+ (0, _i18n.__)('"%s" successfully created.'), title), {
125
+ type: 'snackbar'
126
+ });
122
127
  } catch (error) {
123
128
  const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0, _i18n.__)('An error occurred while creating the template.');
124
129
  createErrorNotice(errorMessage, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/new-template.js"],"names":["DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","home","single","post","page","archive","search","notFound","index","list","category","author","postAuthor","taxonomy","blockMeta","date","postDate","tag","attachment","media","NewTemplate","postType","showCustomTemplateModal","setShowCustomTemplateModal","showCustomGenericTemplateModal","setShowCustomGenericTemplateModal","entityForSuggestions","setEntityForSuggestions","history","saveEntityRecord","coreStore","createErrorNotice","noticesStore","setTemplate","editSiteStore","createTemplate","template","isWPSuggestion","title","description","slug","templatePrefix","templateContent","content","fallbackTemplate","path","is_custom","template_prefix","newTemplate","toString","status","is_wp_suggestion","throwOnError","id","push","postId","type","error","errorMessage","message","code","missingTemplates","useMissingTemplates","length","labels","add_new","add_new_item","noArrow","variant","map","onClick","icon","customGenericTemplateIcon","existingTemplates","defaultTemplateTypes","existingTemplateSlugs","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","authorMenuItem","forEach","menuItem","matchIndex","findIndex","sort","template1","template2","indexOf"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tNavigableMenu,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tarchive,\n\tblockMeta,\n\tcategory,\n\thome,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpost,\n\tpostAuthor,\n\tpostDate,\n\tsearch,\n\ttag,\n\tlayout as customGenericTemplateIcon,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModal from './add-custom-template-modal';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n} from './utils';\nimport AddCustomGenericTemplateModal from './add-custom-generic-template-modal';\nimport { useHistory } from '../routes';\nimport { store as editSiteStore } from '../../store';\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'taxonomy',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\tsingle: post,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: postAuthor,\n\ttaxonomy: blockMeta,\n\tdate: postDate,\n\ttag,\n\tattachment: media,\n};\n\nexport default function NewTemplate( { postType } ) {\n\tconst [ showCustomTemplateModal, setShowCustomTemplateModal ] =\n\t\tuseState( false );\n\tconst [\n\t\tshowCustomGenericTemplateModal,\n\t\tsetShowCustomGenericTemplateModal,\n\t] = useState( false );\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { setTemplate } = useDispatch( editSiteStore );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\ttry {\n\t\t\tconst { title, description, slug, templatePrefix } = template;\n\t\t\tlet templateContent = template.content;\n\t\t\t// Try to find fallback content from existing templates.\n\t\t\tif ( ! templateContent ) {\n\t\t\t\tconst fallbackTemplate = await apiFetch( {\n\t\t\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', {\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tis_custom: ! isWPSuggestion,\n\t\t\t\t\t\ttemplate_prefix: templatePrefix,\n\t\t\t\t\t} ),\n\t\t\t\t} );\n\t\t\t\ttemplateContent = fallbackTemplate.content;\n\t\t\t}\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: templateContent,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Set template before navigating away to avoid initial stale value.\n\t\t\tsetTemplate( newTemplate.id, newTemplate.slug );\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.push( {\n\t\t\t\tpostId: newTemplate.id,\n\t\t\t\tpostType: newTemplate.type,\n\t\t\t} );\n\n\t\t\t// TODO: Add a success notice?\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t}\n\t}\n\n\tconst missingTemplates = useMissingTemplates(\n\t\tsetEntityForSuggestions,\n\t\tsetShowCustomTemplateModal\n\t);\n\tif ( ! missingTemplates.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tclassName=\"edit-site-new-template-dropdown\"\n\t\t\t\ticon={ null }\n\t\t\t\ttext={ postType.labels.add_new }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tnoArrow: false,\n\t\t\t\t} }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<NavigableMenu className=\"edit-site-new-template-dropdown__popover\">\n\t\t\t\t\t\t<MenuGroup label={ postType.labels.add_new_item }>\n\t\t\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\t\t\tconst {\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,\n\t\t\t\t\t\t\t\t\tonClick,\n\t\t\t\t\t\t\t\t\ticon,\n\t\t\t\t\t\t\t\t} = template;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\ticon ||\n\t\t\t\t\t\t\t\t\t\t\tTEMPLATE_ICONS[ slug ] ||\n\t\t\t\t\t\t\t\t\t\t\tpost\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tinfo={ description }\n\t\t\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ customGenericTemplateIcon }\n\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t'Custom templates can be applied to any post or page.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey=\"custom-template\"\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tsetShowCustomGenericTemplateModal( true )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Custom template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t\t{ showCustomTemplateModal && (\n\t\t\t\t<AddCustomTemplateModal\n\t\t\t\t\tonClose={ () => setShowCustomTemplateModal( false ) }\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomGenericTemplateModal && (\n\t\t\t\t<AddCustomGenericTemplateModal\n\t\t\t\t\tonClose={ () => setShowCustomGenericTemplateModal( false ) }\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates(\n\tsetEntityForSuggestions,\n\tsetShowCustomTemplateModal\n) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tsetShowCustomTemplateModal( true );\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/new-template.js"],"names":["DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","home","single","post","page","archive","search","notFound","index","list","category","author","postAuthor","taxonomy","blockMeta","date","postDate","tag","attachment","media","NewTemplate","postType","showCustomTemplateModal","setShowCustomTemplateModal","showCustomGenericTemplateModal","setShowCustomGenericTemplateModal","entityForSuggestions","setEntityForSuggestions","history","saveEntityRecord","coreStore","createErrorNotice","createSuccessNotice","noticesStore","setTemplate","editSiteStore","createTemplate","template","isWPSuggestion","title","description","slug","templatePrefix","templateContent","content","fallbackTemplate","path","is_custom","template_prefix","newTemplate","toString","status","is_wp_suggestion","throwOnError","id","push","postId","type","error","errorMessage","message","code","missingTemplates","useMissingTemplates","length","labels","add_new","add_new_item","noArrow","variant","map","onClick","icon","customGenericTemplateIcon","existingTemplates","defaultTemplateTypes","existingTemplateSlugs","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","authorMenuItem","forEach","menuItem","matchIndex","findIndex","sort","template1","template2","indexOf"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tNavigableMenu,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tarchive,\n\tblockMeta,\n\tcategory,\n\thome,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpost,\n\tpostAuthor,\n\tpostDate,\n\tsearch,\n\ttag,\n\tlayout as customGenericTemplateIcon,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModal from './add-custom-template-modal';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n} from './utils';\nimport AddCustomGenericTemplateModal from './add-custom-generic-template-modal';\nimport { useHistory } from '../routes';\nimport { store as editSiteStore } from '../../store';\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'taxonomy',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\tsingle: post,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: postAuthor,\n\ttaxonomy: blockMeta,\n\tdate: postDate,\n\ttag,\n\tattachment: media,\n};\n\nexport default function NewTemplate( { postType } ) {\n\tconst [ showCustomTemplateModal, setShowCustomTemplateModal ] =\n\t\tuseState( false );\n\tconst [\n\t\tshowCustomGenericTemplateModal,\n\t\tsetShowCustomGenericTemplateModal,\n\t] = useState( false );\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { setTemplate } = useDispatch( editSiteStore );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\ttry {\n\t\t\tconst { title, description, slug, templatePrefix } = template;\n\t\t\tlet templateContent = template.content;\n\t\t\t// Try to find fallback content from existing templates.\n\t\t\tif ( ! templateContent ) {\n\t\t\t\tconst fallbackTemplate = await apiFetch( {\n\t\t\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', {\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tis_custom: ! isWPSuggestion,\n\t\t\t\t\t\ttemplate_prefix: templatePrefix,\n\t\t\t\t\t} ),\n\t\t\t\t} );\n\t\t\t\ttemplateContent = fallbackTemplate.content;\n\t\t\t}\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template',\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: templateContent,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Set template before navigating away to avoid initial stale value.\n\t\t\tsetTemplate( newTemplate.id, newTemplate.slug );\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.push( {\n\t\t\t\tpostId: newTemplate.id,\n\t\t\t\tpostType: newTemplate.type,\n\t\t\t} );\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created template e.g: \"Category\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\ttitle\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t}\n\t}\n\n\tconst missingTemplates = useMissingTemplates(\n\t\tsetEntityForSuggestions,\n\t\tsetShowCustomTemplateModal\n\t);\n\tif ( ! missingTemplates.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tclassName=\"edit-site-new-template-dropdown\"\n\t\t\t\ticon={ null }\n\t\t\t\ttext={ postType.labels.add_new }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tnoArrow: false,\n\t\t\t\t} }\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<NavigableMenu className=\"edit-site-new-template-dropdown__popover\">\n\t\t\t\t\t\t<MenuGroup label={ postType.labels.add_new_item }>\n\t\t\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\t\t\tconst {\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,\n\t\t\t\t\t\t\t\t\tonClick,\n\t\t\t\t\t\t\t\t\ticon,\n\t\t\t\t\t\t\t\t} = template;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\ticon ||\n\t\t\t\t\t\t\t\t\t\t\tTEMPLATE_ICONS[ slug ] ||\n\t\t\t\t\t\t\t\t\t\t\tpost\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tinfo={ description }\n\t\t\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ customGenericTemplateIcon }\n\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t'Custom templates can be applied to any post or page.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tkey=\"custom-template\"\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tsetShowCustomGenericTemplateModal( true )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Custom template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t\t{ showCustomTemplateModal && (\n\t\t\t\t<AddCustomTemplateModal\n\t\t\t\t\tonClose={ () => setShowCustomTemplateModal( false ) }\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomGenericTemplateModal && (\n\t\t\t\t<AddCustomGenericTemplateModal\n\t\t\t\t\tonClose={ () => setShowCustomGenericTemplateModal( false ) }\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates(\n\tsetEntityForSuggestions,\n\tsetShowCustomTemplateModal\n) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tsetShowCustomTemplateModal( true );\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n"]}
@@ -68,15 +68,27 @@ function ResizableEditor(_ref) {
68
68
  return;
69
69
  }
70
70
 
71
- let animationFrame = null;
71
+ let timeoutId = null;
72
72
 
73
73
  function resizeHeight() {
74
- if (!animationFrame) {
75
- // Throttle the updates on animation frame.
76
- animationFrame = iframe.contentWindow.requestAnimationFrame(() => {
77
- setHeight(iframe.contentDocument.documentElement.scrollHeight);
78
- animationFrame = null;
79
- });
74
+ if (!timeoutId) {
75
+ // Throttle the updates on timeout. This code previously
76
+ // used `requestAnimationFrame`, but that seems to not
77
+ // always work before an iframe is ready.
78
+ timeoutId = iframe.contentWindow.setTimeout(() => {
79
+ const {
80
+ readyState
81
+ } = iframe.contentDocument; // Continue deferring the timeout until the document is ready.
82
+ // Only then will it have a height.
83
+
84
+ if (readyState !== 'interactive' && readyState !== 'complete') {
85
+ resizeHeight();
86
+ return;
87
+ }
88
+
89
+ setHeight(iframe.contentDocument.body.scrollHeight);
90
+ timeoutId = null; // 30 frames per second.
91
+ }, 1000 / 30);
80
92
  }
81
93
  }
82
94
 
@@ -86,10 +98,10 @@ function ResizableEditor(_ref) {
86
98
  var _resizeObserver;
87
99
 
88
100
  (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.disconnect();
89
- resizeObserver = new iframe.contentWindow.ResizeObserver(resizeHeight); // Observing the <html> rather than the <body> because the latter
90
- // gets destroyed and remounted after initialization in <Iframe>.
101
+ resizeObserver = new iframe.contentWindow.ResizeObserver(resizeHeight); // Observe the body, since the `html` element seems to always
102
+ // have a height of `100%`.
91
103
 
92
- resizeObserver.observe(iframe.contentDocument.documentElement);
104
+ resizeObserver.observe(iframe.contentDocument.body);
93
105
  resizeHeight();
94
106
  } // This is only required in Firefox for some unknown reasons.
95
107
 
@@ -100,7 +112,7 @@ function ResizableEditor(_ref) {
100
112
  return () => {
101
113
  var _iframe$contentWindow, _resizeObserver2;
102
114
 
103
- (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.cancelAnimationFrame(animationFrame);
115
+ (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.clearTimeout(timeoutId);
104
116
  (_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : _resizeObserver2.disconnect();
105
117
  iframe.removeEventListener('load', registerObserver);
106
118
  };
@@ -146,7 +158,9 @@ function ResizableEditor(_ref) {
146
158
  right: HANDLE_STYLES_OVERRIDE
147
159
  }
148
160
  }, (0, _element.createElement)(_blockEditor.__unstableIframe, (0, _extends2.default)({
149
- style: enableResizing ? undefined : deviceStyles,
161
+ style: enableResizing ? {
162
+ height
163
+ } : deviceStyles,
150
164
  head: (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.__unstableEditorStyles, {
151
165
  styles: settings.styles
152
166
  }), (0, _element.createElement)("style", null, // Forming a "block formatting context" to prevent margin collapsing.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/resizable-editor.js"],"names":["DEFAULT_STYLES","width","height","HANDLE_STYLES_OVERRIDE","position","undefined","userSelect","cursor","top","right","bottom","left","ResizableEditor","enableResizing","settings","children","props","deviceType","select","editSiteStore","__experimentalGetPreviewDeviceType","deviceStyles","setWidth","setHeight","iframeRef","mouseMoveTypingResetRef","ref","autoResizeIframeHeight","iframe","current","animationFrame","resizeHeight","contentWindow","requestAnimationFrame","contentDocument","documentElement","scrollHeight","resizeObserver","registerObserver","disconnect","ResizeObserver","observe","addEventListener","cancelAnimationFrame","removeEventListener","resizeWidthBy","deltaPixels","offsetWidth","event","direction","element","style","styles","__unstableResolvedAssets","svgFilters"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, useCallback } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\nimport {\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport ResizeHandle from './resize-handle';\n\nconst DEFAULT_STYLES = {\n\twidth: '100%',\n\theight: '100%',\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nfunction ResizableEditor( { enableResizing, settings, children, ...props } ) {\n\tconst deviceType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editSiteStore ).__experimentalGetPreviewDeviceType(),\n\t\t[]\n\t);\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ width, setWidth ] = useState( DEFAULT_STYLES.width );\n\tconst [ height, setHeight ] = useState( DEFAULT_STYLES.height );\n\tconst iframeRef = useRef();\n\tconst mouseMoveTypingResetRef = useMouseMoveTypingReset();\n\tconst ref = useMergeRefs( [ iframeRef, mouseMoveTypingResetRef ] );\n\n\tuseEffect(\n\t\tfunction autoResizeIframeHeight() {\n\t\t\tconst iframe = iframeRef.current;\n\n\t\t\tif ( ! iframe || ! enableResizing ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet animationFrame = null;\n\n\t\t\tfunction resizeHeight() {\n\t\t\t\tif ( ! animationFrame ) {\n\t\t\t\t\t// Throttle the updates on animation frame.\n\t\t\t\t\tanimationFrame = iframe.contentWindow.requestAnimationFrame(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tsetHeight(\n\t\t\t\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t\t\t\t\t\t.scrollHeight\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tanimationFrame = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet resizeObserver;\n\n\t\t\tfunction registerObserver() {\n\t\t\t\tresizeObserver?.disconnect();\n\n\t\t\t\tresizeObserver = new iframe.contentWindow.ResizeObserver(\n\t\t\t\t\tresizeHeight\n\t\t\t\t);\n\t\t\t\t// Observing the <html> rather than the <body> because the latter\n\t\t\t\t// gets destroyed and remounted after initialization in <Iframe>.\n\t\t\t\tresizeObserver.observe(\n\t\t\t\t\tiframe.contentDocument.documentElement\n\t\t\t\t);\n\n\t\t\t\tresizeHeight();\n\t\t\t}\n\n\t\t\t// This is only required in Firefox for some unknown reasons.\n\t\t\tiframe.addEventListener( 'load', registerObserver );\n\t\t\t// This is required in Chrome and Safari.\n\t\t\tregisterObserver();\n\n\t\t\treturn () => {\n\t\t\t\tiframe.contentWindow?.cancelAnimationFrame( animationFrame );\n\t\t\t\tresizeObserver?.disconnect();\n\t\t\t\tiframe.removeEventListener( 'load', registerObserver );\n\t\t\t};\n\t\t},\n\t\t[ enableResizing ]\n\t);\n\n\tconst resizeWidthBy = useCallback( ( deltaPixels ) => {\n\t\tif ( iframeRef.current ) {\n\t\t\tsetWidth( iframeRef.current.offsetWidth + deltaPixels );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tsize={ {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t} }\n\t\t\tonResizeStop={ ( event, direction, element ) => {\n\t\t\t\tsetWidth( element.style.width );\n\t\t\t} }\n\t\t\tminWidth={ 300 }\n\t\t\tmaxWidth=\"100%\"\n\t\t\tmaxHeight=\"100%\"\n\t\t\tenable={ {\n\t\t\t\tright: enableResizing,\n\t\t\t\tleft: enableResizing,\n\t\t\t} }\n\t\t\tshowHandle={ enableResizing }\n\t\t\t// The editor is centered horizontally, resizing it only\n\t\t\t// moves half the distance. Hence double the ratio to correctly\n\t\t\t// align the cursor to the resizer handle.\n\t\t\tresizeRatio={ 2 }\n\t\t\thandleComponent={ {\n\t\t\t\tleft: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tright: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t} }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tstyle={ enableResizing ? undefined : deviceStyles }\n\t\t\t\thead={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t\t\t\t<style>{\n\t\t\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t\t\t`.is-root-container { display: flow-root; }`\n\t\t\t\t\t\t}</style>\n\t\t\t\t\t\t{ enableResizing && (\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// Force the <html> and <body>'s heights to fit the content.\n\t\t\t\t\t\t\t\t\t`html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`\n\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\t\t// Some themes will have `min-height: 100vh` for the root container,\n\t\t\t\t\t\t\t\t\t// which isn't a requirement in auto resize mode.\n\t\t\t\t\t\t\t\t\t`.is-root-container { min-height: 0 !important; }`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tassets={ settings.__unstableResolvedAssets }\n\t\t\t\tref={ ref }\n\t\t\t\tname=\"editor-canvas\"\n\t\t\t\tclassName=\"edit-site-visual-editor__editor-canvas\"\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ /* Filters need to be rendered before children to avoid Safari rendering issues. */ }\n\t\t\t\t{ settings.svgFilters }\n\t\t\t\t{ children }\n\t\t\t</Iframe>\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableEditor;\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/resizable-editor.js"],"names":["DEFAULT_STYLES","width","height","HANDLE_STYLES_OVERRIDE","position","undefined","userSelect","cursor","top","right","bottom","left","ResizableEditor","enableResizing","settings","children","props","deviceType","select","editSiteStore","__experimentalGetPreviewDeviceType","deviceStyles","setWidth","setHeight","iframeRef","mouseMoveTypingResetRef","ref","autoResizeIframeHeight","iframe","current","timeoutId","resizeHeight","contentWindow","setTimeout","readyState","contentDocument","body","scrollHeight","resizeObserver","registerObserver","disconnect","ResizeObserver","observe","addEventListener","clearTimeout","removeEventListener","resizeWidthBy","deltaPixels","offsetWidth","event","direction","element","style","styles","__unstableResolvedAssets","svgFilters"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, useCallback } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\nimport {\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport ResizeHandle from './resize-handle';\n\nconst DEFAULT_STYLES = {\n\twidth: '100%',\n\theight: '100%',\n};\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nfunction ResizableEditor( { enableResizing, settings, children, ...props } ) {\n\tconst deviceType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editSiteStore ).__experimentalGetPreviewDeviceType(),\n\t\t[]\n\t);\n\tconst deviceStyles = useResizeCanvas( deviceType );\n\tconst [ width, setWidth ] = useState( DEFAULT_STYLES.width );\n\tconst [ height, setHeight ] = useState( DEFAULT_STYLES.height );\n\tconst iframeRef = useRef();\n\tconst mouseMoveTypingResetRef = useMouseMoveTypingReset();\n\tconst ref = useMergeRefs( [ iframeRef, mouseMoveTypingResetRef ] );\n\n\tuseEffect(\n\t\tfunction autoResizeIframeHeight() {\n\t\t\tconst iframe = iframeRef.current;\n\n\t\t\tif ( ! iframe || ! enableResizing ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet timeoutId = null;\n\n\t\t\tfunction resizeHeight() {\n\t\t\t\tif ( ! timeoutId ) {\n\t\t\t\t\t// Throttle the updates on timeout. This code previously\n\t\t\t\t\t// used `requestAnimationFrame`, but that seems to not\n\t\t\t\t\t// always work before an iframe is ready.\n\t\t\t\t\ttimeoutId = iframe.contentWindow.setTimeout( () => {\n\t\t\t\t\t\tconst { readyState } = iframe.contentDocument;\n\n\t\t\t\t\t\t// Continue deferring the timeout until the document is ready.\n\t\t\t\t\t\t// Only then will it have a height.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\treadyState !== 'interactive' &&\n\t\t\t\t\t\t\treadyState !== 'complete'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresizeHeight();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetHeight( iframe.contentDocument.body.scrollHeight );\n\t\t\t\t\t\ttimeoutId = null;\n\n\t\t\t\t\t\t// 30 frames per second.\n\t\t\t\t\t}, 1000 / 30 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet resizeObserver;\n\n\t\t\tfunction registerObserver() {\n\t\t\t\tresizeObserver?.disconnect();\n\n\t\t\t\tresizeObserver = new iframe.contentWindow.ResizeObserver(\n\t\t\t\t\tresizeHeight\n\t\t\t\t);\n\n\t\t\t\t// Observe the body, since the `html` element seems to always\n\t\t\t\t// have a height of `100%`.\n\t\t\t\tresizeObserver.observe( iframe.contentDocument.body );\n\n\t\t\t\tresizeHeight();\n\t\t\t}\n\n\t\t\t// This is only required in Firefox for some unknown reasons.\n\t\t\tiframe.addEventListener( 'load', registerObserver );\n\t\t\t// This is required in Chrome and Safari.\n\t\t\tregisterObserver();\n\n\t\t\treturn () => {\n\t\t\t\tiframe.contentWindow?.clearTimeout( timeoutId );\n\t\t\t\tresizeObserver?.disconnect();\n\t\t\t\tiframe.removeEventListener( 'load', registerObserver );\n\t\t\t};\n\t\t},\n\t\t[ enableResizing ]\n\t);\n\n\tconst resizeWidthBy = useCallback( ( deltaPixels ) => {\n\t\tif ( iframeRef.current ) {\n\t\t\tsetWidth( iframeRef.current.offsetWidth + deltaPixels );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tsize={ {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t} }\n\t\t\tonResizeStop={ ( event, direction, element ) => {\n\t\t\t\tsetWidth( element.style.width );\n\t\t\t} }\n\t\t\tminWidth={ 300 }\n\t\t\tmaxWidth=\"100%\"\n\t\t\tmaxHeight=\"100%\"\n\t\t\tenable={ {\n\t\t\t\tright: enableResizing,\n\t\t\t\tleft: enableResizing,\n\t\t\t} }\n\t\t\tshowHandle={ enableResizing }\n\t\t\t// The editor is centered horizontally, resizing it only\n\t\t\t// moves half the distance. Hence double the ratio to correctly\n\t\t\t// align the cursor to the resizer handle.\n\t\t\tresizeRatio={ 2 }\n\t\t\thandleComponent={ {\n\t\t\t\tleft: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tright: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t} }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t>\n\t\t\t<Iframe\n\t\t\t\tstyle={ enableResizing ? { height } : deviceStyles }\n\t\t\t\thead={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t\t\t\t<style>{\n\t\t\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t\t\t`.is-root-container { display: flow-root; }`\n\t\t\t\t\t\t}</style>\n\t\t\t\t\t\t{ enableResizing && (\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// Force the <html> and <body>'s heights to fit the content.\n\t\t\t\t\t\t\t\t\t`html, body { height: -moz-fit-content !important; height: fit-content !important; min-height: 0 !important; }`\n\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\t\t// Some themes will have `min-height: 100vh` for the root container,\n\t\t\t\t\t\t\t\t\t// which isn't a requirement in auto resize mode.\n\t\t\t\t\t\t\t\t\t`.is-root-container { min-height: 0 !important; }`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tassets={ settings.__unstableResolvedAssets }\n\t\t\t\tref={ ref }\n\t\t\t\tname=\"editor-canvas\"\n\t\t\t\tclassName=\"edit-site-visual-editor__editor-canvas\"\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ /* Filters need to be rendered before children to avoid Safari rendering issues. */ }\n\t\t\t\t{ settings.svgFilters }\n\t\t\t\t{ children }\n\t\t\t</Iframe>\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableEditor;\n"]}
@@ -161,11 +161,11 @@ function BorderPanel(_ref) {
161
161
  }, (0, _element.createElement)(_components.__experimentalBorderBoxControl, {
162
162
  colors: colors,
163
163
  enableAlpha: true,
164
+ enableStyle: showBorderStyle,
164
165
  onChange: onBorderChange,
165
- showStyle: showBorderStyle,
166
- value: border,
167
- popoverPlacement: "left-start",
168
166
  popoverOffset: 40,
167
+ popoverPlacement: "left-start",
168
+ value: border,
169
169
  __experimentalHasMultipleOrigins: true,
170
170
  __experimentalIsRenderedInSidebar: true
171
171
  })), showBorderRadius && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/border-panel.js"],"names":["useHasBorderPanel","name","controls","useHasBorderColorControl","useHasBorderRadiusControl","useHasBorderStyleControl","useHasBorderWidthControl","some","Boolean","supports","includes","applyFallbackStyle","border","style","color","width","applyAllFallbackStyles","top","right","bottom","left","BorderPanel","userBorderStyles","setBorder","colors","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","setBorderRadius","hasBorderRadius","borderValues","radius","Object","entries","resetBorder","undefined","resetAll","onBorderChange","newBorder","newBorderWithStyle","updatedBorder","value"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor';\nimport {\n\t__experimentalBorderBoxControl as BorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetSupportedGlobalStylesPanels,\n\tuseColorsPerOrigin,\n\tuseSetting,\n\tuseStyle,\n} from './hooks';\n\nexport function useHasBorderPanel( name ) {\n\tconst controls = [\n\t\tuseHasBorderColorControl( name ),\n\t\tuseHasBorderRadiusControl( name ),\n\t\tuseHasBorderStyleControl( name ),\n\t\tuseHasBorderWidthControl( name ),\n\t];\n\n\treturn controls.some( Boolean );\n}\n\nfunction useHasBorderColorControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.color', name )[ 0 ] &&\n\t\tsupports.includes( 'borderColor' )\n\t);\n}\n\nfunction useHasBorderRadiusControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.radius', name )[ 0 ] &&\n\t\tsupports.includes( 'borderRadius' )\n\t);\n}\n\nfunction useHasBorderStyleControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.style', name )[ 0 ] &&\n\t\tsupports.includes( 'borderStyle' )\n\t);\n}\n\nfunction useHasBorderWidthControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.width', name )[ 0 ] &&\n\t\tsupports.includes( 'borderWidth' )\n\t);\n}\n\nfunction applyFallbackStyle( border ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tif ( ! border.style && ( border.color || border.width ) ) {\n\t\treturn { ...border, style: 'solid' };\n\t}\n\n\treturn border;\n}\n\nfunction applyAllFallbackStyles( border ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tif ( hasSplitBorders( border ) ) {\n\t\treturn {\n\t\t\ttop: applyFallbackStyle( border.top ),\n\t\t\tright: applyFallbackStyle( border.right ),\n\t\t\tbottom: applyFallbackStyle( border.bottom ),\n\t\t\tleft: applyFallbackStyle( border.left ),\n\t\t};\n\t}\n\n\treturn applyFallbackStyle( border );\n}\n\nexport default function BorderPanel( { name } ) {\n\t// To better reflect if the user has customized a value we need to\n\t// ensure the style value being checked is from the `user` origin.\n\tconst [ userBorderStyles ] = useStyle( 'border', name, 'user' );\n\tconst [ border, setBorder ] = useStyle( 'border', name );\n\tconst colors = useColorsPerOrigin( name );\n\n\tconst showBorderColor = useHasBorderColorControl( name );\n\tconst showBorderStyle = useHasBorderStyleControl( name );\n\tconst showBorderWidth = useHasBorderWidthControl( name );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( name );\n\tconst [ borderRadiusValues, setBorderRadius ] = useStyle(\n\t\t'border.radius',\n\t\tname\n\t);\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = userBorderStyles?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: userBorderStyles.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst resetAll = useCallback( () => setBorder( undefined ), [ setBorder ] );\n\tconst onBorderChange = useCallback(\n\t\t( newBorder ) => {\n\t\t\t// Ensure we have a visible border style when a border width or\n\t\t\t// color is being selected.\n\t\t\tconst newBorderWithStyle = applyAllFallbackStyles( newBorder );\n\n\t\t\t// As we can't conditionally generate styles based on if other\n\t\t\t// style properties have been set we need to force split border\n\t\t\t// definitions for user set border styles. Border radius is derived\n\t\t\t// from the same property i.e. `border.radius` if it is a string\n\t\t\t// that is used. The longhand border radii styles are only generated\n\t\t\t// if that property is an object.\n\t\t\t//\n\t\t\t// For borders (color, style, and width) those are all properties on\n\t\t\t// the `border` style property. This means if the theme.json defined\n\t\t\t// split borders and the user condenses them into a flat border or\n\t\t\t// vice-versa we'd get both sets of styles which would conflict.\n\t\t\tconst updatedBorder = ! hasSplitBorders( newBorderWithStyle )\n\t\t\t\t? {\n\t\t\t\t\t\ttop: newBorderWithStyle,\n\t\t\t\t\t\tright: newBorderWithStyle,\n\t\t\t\t\t\tbottom: newBorderWithStyle,\n\t\t\t\t\t\tleft: newBorderWithStyle,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\tstyle: null,\n\t\t\t\t\t\twidth: null,\n\t\t\t\t\t\t...newBorderWithStyle,\n\t\t\t\t };\n\n\t\t\t// As radius is maintained separately to color, style, and width\n\t\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t\t// global styles are saved.\n\t\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t\t},\n\t\t[ setBorder ]\n\t);\n\n\treturn (\n\t\t<ToolsPanel label={ __( 'Border' ) } resetAll={ resetAll }>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( userBorderStyles ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha={ true }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tshowStyle={ showBorderStyle }\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\t__experimentalHasMultipleOrigins={ true }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar={ true }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetBorderRadius( value || undefined );\n\t\t\t\t\t\t} }\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/border-panel.js"],"names":["useHasBorderPanel","name","controls","useHasBorderColorControl","useHasBorderRadiusControl","useHasBorderStyleControl","useHasBorderWidthControl","some","Boolean","supports","includes","applyFallbackStyle","border","style","color","width","applyAllFallbackStyles","top","right","bottom","left","BorderPanel","userBorderStyles","setBorder","colors","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","setBorderRadius","hasBorderRadius","borderValues","radius","Object","entries","resetBorder","undefined","resetAll","onBorderChange","newBorder","newBorderWithStyle","updatedBorder","value"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor';\nimport {\n\t__experimentalBorderBoxControl as BorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetSupportedGlobalStylesPanels,\n\tuseColorsPerOrigin,\n\tuseSetting,\n\tuseStyle,\n} from './hooks';\n\nexport function useHasBorderPanel( name ) {\n\tconst controls = [\n\t\tuseHasBorderColorControl( name ),\n\t\tuseHasBorderRadiusControl( name ),\n\t\tuseHasBorderStyleControl( name ),\n\t\tuseHasBorderWidthControl( name ),\n\t];\n\n\treturn controls.some( Boolean );\n}\n\nfunction useHasBorderColorControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.color', name )[ 0 ] &&\n\t\tsupports.includes( 'borderColor' )\n\t);\n}\n\nfunction useHasBorderRadiusControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.radius', name )[ 0 ] &&\n\t\tsupports.includes( 'borderRadius' )\n\t);\n}\n\nfunction useHasBorderStyleControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.style', name )[ 0 ] &&\n\t\tsupports.includes( 'borderStyle' )\n\t);\n}\n\nfunction useHasBorderWidthControl( name ) {\n\tconst supports = getSupportedGlobalStylesPanels( name );\n\treturn (\n\t\tuseSetting( 'border.width', name )[ 0 ] &&\n\t\tsupports.includes( 'borderWidth' )\n\t);\n}\n\nfunction applyFallbackStyle( border ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tif ( ! border.style && ( border.color || border.width ) ) {\n\t\treturn { ...border, style: 'solid' };\n\t}\n\n\treturn border;\n}\n\nfunction applyAllFallbackStyles( border ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tif ( hasSplitBorders( border ) ) {\n\t\treturn {\n\t\t\ttop: applyFallbackStyle( border.top ),\n\t\t\tright: applyFallbackStyle( border.right ),\n\t\t\tbottom: applyFallbackStyle( border.bottom ),\n\t\t\tleft: applyFallbackStyle( border.left ),\n\t\t};\n\t}\n\n\treturn applyFallbackStyle( border );\n}\n\nexport default function BorderPanel( { name } ) {\n\t// To better reflect if the user has customized a value we need to\n\t// ensure the style value being checked is from the `user` origin.\n\tconst [ userBorderStyles ] = useStyle( 'border', name, 'user' );\n\tconst [ border, setBorder ] = useStyle( 'border', name );\n\tconst colors = useColorsPerOrigin( name );\n\n\tconst showBorderColor = useHasBorderColorControl( name );\n\tconst showBorderStyle = useHasBorderStyleControl( name );\n\tconst showBorderWidth = useHasBorderWidthControl( name );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( name );\n\tconst [ borderRadiusValues, setBorderRadius ] = useStyle(\n\t\t'border.radius',\n\t\tname\n\t);\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = userBorderStyles?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: userBorderStyles.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst resetAll = useCallback( () => setBorder( undefined ), [ setBorder ] );\n\tconst onBorderChange = useCallback(\n\t\t( newBorder ) => {\n\t\t\t// Ensure we have a visible border style when a border width or\n\t\t\t// color is being selected.\n\t\t\tconst newBorderWithStyle = applyAllFallbackStyles( newBorder );\n\n\t\t\t// As we can't conditionally generate styles based on if other\n\t\t\t// style properties have been set we need to force split border\n\t\t\t// definitions for user set border styles. Border radius is derived\n\t\t\t// from the same property i.e. `border.radius` if it is a string\n\t\t\t// that is used. The longhand border radii styles are only generated\n\t\t\t// if that property is an object.\n\t\t\t//\n\t\t\t// For borders (color, style, and width) those are all properties on\n\t\t\t// the `border` style property. This means if the theme.json defined\n\t\t\t// split borders and the user condenses them into a flat border or\n\t\t\t// vice-versa we'd get both sets of styles which would conflict.\n\t\t\tconst updatedBorder = ! hasSplitBorders( newBorderWithStyle )\n\t\t\t\t? {\n\t\t\t\t\t\ttop: newBorderWithStyle,\n\t\t\t\t\t\tright: newBorderWithStyle,\n\t\t\t\t\t\tbottom: newBorderWithStyle,\n\t\t\t\t\t\tleft: newBorderWithStyle,\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\tstyle: null,\n\t\t\t\t\t\twidth: null,\n\t\t\t\t\t\t...newBorderWithStyle,\n\t\t\t\t };\n\n\t\t\t// As radius is maintained separately to color, style, and width\n\t\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t\t// global styles are saved.\n\t\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t\t},\n\t\t[ setBorder ]\n\t);\n\n\treturn (\n\t\t<ToolsPanel label={ __( 'Border' ) } resetAll={ resetAll }>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( userBorderStyles ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha={ true }\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalHasMultipleOrigins={ true }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar={ true }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetBorderRadius( value || undefined );\n\t\t\t\t\t\t} }\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,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -8,6 +10,8 @@ exports.useHasDimensionsPanel = useHasDimensionsPanel;
8
10
 
9
11
  var _element = require("@wordpress/element");
10
12
 
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+
11
15
  var _i18n = require("@wordpress/i18n");
12
16
 
13
17
  var _components = require("@wordpress/components");
@@ -18,6 +22,10 @@ var _icons = require("@wordpress/icons");
18
22
 
19
23
  var _hooks = require("./hooks");
20
24
 
25
+ /**
26
+ * External dependencies
27
+ */
28
+
21
29
  /**
22
30
  * WordPress dependencies
23
31
  */
@@ -66,6 +74,11 @@ function useHasGap(name) {
66
74
  return settings && supports.includes('blockGap');
67
75
  }
68
76
 
77
+ function useHasSpacingPresets() {
78
+ const [settings] = (0, _hooks.useSetting)('spacing.spacingSizes');
79
+ return settings && settings.length > 0;
80
+ }
81
+
69
82
  function filterValuesBySides(values, sides) {
70
83
  if (!sides) {
71
84
  // If no custom side configuration all sides are opted into by default.
@@ -91,7 +104,7 @@ function filterValuesBySides(values, sides) {
91
104
  }
92
105
 
93
106
  function splitStyleValue(value) {
94
- // Check for shorthand value ( a string value ).
107
+ // Check for shorthand value (a string value).
95
108
  if (value && typeof value === 'string') {
96
109
  // Convert to value for individual sides for BoxControl.
97
110
  return {
@@ -103,6 +116,24 @@ function splitStyleValue(value) {
103
116
  }
104
117
 
105
118
  return value;
119
+ }
120
+
121
+ function splitGapValue(value) {
122
+ // Check for shorthand value (a string value).
123
+ if (value && typeof value === 'string') {
124
+ // Convert to value for individual sides for BoxControl.
125
+ return {
126
+ top: value,
127
+ right: value,
128
+ bottom: value,
129
+ left: value
130
+ };
131
+ }
132
+
133
+ return { ...value,
134
+ right: value === null || value === void 0 ? void 0 : value.left,
135
+ bottom: value === null || value === void 0 ? void 0 : value.top
136
+ };
106
137
  } // Props for managing `layout.contentSize`.
107
138
 
108
139
 
@@ -196,6 +227,21 @@ function useMarginProps(name) {
196
227
 
197
228
  function useBlockGapProps(name) {
198
229
  const [gapValue, setGapValue] = (0, _hooks.useStyle)('spacing.blockGap', name);
230
+ const gapValues = splitGapValue(gapValue);
231
+
232
+ const setGapValues = nextBoxGapValue => {
233
+ if (!nextBoxGapValue) {
234
+ setGapValue(null);
235
+ }
236
+
237
+ setGapValue({
238
+ top: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.top,
239
+ left: nextBoxGapValue === null || nextBoxGapValue === void 0 ? void 0 : nextBoxGapValue.left
240
+ });
241
+ };
242
+
243
+ const gapSides = (0, _blockEditor.__experimentalUseCustomSides)(name, 'blockGap');
244
+ const isAxialGap = gapSides && gapSides.some(side => AXIAL_SIDES.includes(side));
199
245
 
200
246
  const resetGapValue = () => setGapValue(undefined);
201
247
 
@@ -205,7 +251,11 @@ function useBlockGapProps(name) {
205
251
 
206
252
  return {
207
253
  gapValue,
254
+ gapValues,
255
+ gapSides,
256
+ isAxialGap,
208
257
  setGapValue,
258
+ setGapValues,
209
259
  resetGapValue,
210
260
  hasGapValue
211
261
  };
@@ -220,6 +270,7 @@ function DimensionsPanel(_ref) {
220
270
  const showPaddingControl = useHasPadding(name);
221
271
  const showMarginControl = useHasMargin(name);
222
272
  const showGapControl = useHasGap(name);
273
+ const showSpacingPresetsControl = useHasSpacingPresets();
223
274
  const units = (0, _components.__experimentalUseCustomUnits)({
224
275
  availableUnits: (0, _hooks.useSetting)('spacing.units', name)[0] || ['%', 'px', 'em', 'rem', 'vw']
225
276
  }); // Props for managing `layout.contentSize`.
@@ -258,7 +309,11 @@ function DimensionsPanel(_ref) {
258
309
 
259
310
  const {
260
311
  gapValue,
312
+ gapValues,
313
+ gapSides,
314
+ isAxialGap,
261
315
  setGapValue,
316
+ setGapValues,
262
317
  resetGapValue,
263
318
  hasGapValue
264
319
  } = useBlockGapProps(name);
@@ -320,8 +375,19 @@ function DimensionsPanel(_ref) {
320
375
  hasValue: hasPaddingValue,
321
376
  label: (0, _i18n.__)('Padding'),
322
377
  onDeselect: resetPaddingValue,
323
- isShownByDefault: true
324
- }, (0, _element.createElement)(_components.__experimentalBoxControl, {
378
+ isShownByDefault: true,
379
+ className: (0, _classnames.default)({
380
+ 'tools-panel-item-spacing': showSpacingPresetsControl
381
+ })
382
+ }, !showSpacingPresetsControl && (0, _element.createElement)(_components.__experimentalBoxControl, {
383
+ values: paddingValues,
384
+ onChange: setPaddingValues,
385
+ label: (0, _i18n.__)('Padding'),
386
+ sides: paddingSides,
387
+ units: units,
388
+ allowReset: false,
389
+ splitOnAxis: isAxialPadding
390
+ }), showSpacingPresetsControl && (0, _element.createElement)(_blockEditor.__experimentalSpacingSizesControl, {
325
391
  values: paddingValues,
326
392
  onChange: setPaddingValues,
327
393
  label: (0, _i18n.__)('Padding'),
@@ -333,8 +399,19 @@ function DimensionsPanel(_ref) {
333
399
  hasValue: hasMarginValue,
334
400
  label: (0, _i18n.__)('Margin'),
335
401
  onDeselect: resetMarginValue,
336
- isShownByDefault: true
337
- }, (0, _element.createElement)(_components.__experimentalBoxControl, {
402
+ isShownByDefault: true,
403
+ className: (0, _classnames.default)({
404
+ 'tools-panel-item-spacing': showSpacingPresetsControl
405
+ })
406
+ }, !showSpacingPresetsControl && (0, _element.createElement)(_components.__experimentalBoxControl, {
407
+ values: marginValues,
408
+ onChange: setMarginValues,
409
+ label: (0, _i18n.__)('Margin'),
410
+ sides: marginSides,
411
+ units: units,
412
+ allowReset: false,
413
+ splitOnAxis: isAxialMargin
414
+ }), showSpacingPresetsControl && (0, _element.createElement)(_blockEditor.__experimentalSpacingSizesControl, {
338
415
  values: marginValues,
339
416
  onChange: setMarginValues,
340
417
  label: (0, _i18n.__)('Margin'),
@@ -347,7 +424,16 @@ function DimensionsPanel(_ref) {
347
424
  label: (0, _i18n.__)('Block spacing'),
348
425
  onDeselect: resetGapValue,
349
426
  isShownByDefault: true
350
- }, (0, _element.createElement)(_components.__experimentalUnitControl, {
427
+ }, isAxialGap ? (0, _element.createElement)(_components.__experimentalBoxControl, {
428
+ label: (0, _i18n.__)('Block spacing'),
429
+ min: 0,
430
+ onChange: setGapValues,
431
+ units: units,
432
+ sides: gapSides,
433
+ values: gapValues,
434
+ allowReset: false,
435
+ splitOnAxis: isAxialGap
436
+ }) : (0, _element.createElement)(_components.__experimentalUnitControl, {
351
437
  label: (0, _i18n.__)('Block spacing'),
352
438
  __unstableInputWidth: "80px",
353
439
  min: 0,
@@ -1 +1 @@
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","userSetPaddingValue","hasPaddingValue","useMarginProps","rawMargin","setRawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","margin","resetMarginValue","hasMarginValue","Object","keys","length","useBlockGapProps","gapValue","setGapValue","resetGapValue","undefined","userSetGapValue","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 [ userSetPaddingValue ] = useStyle( 'spacing.padding', name, 'user' );\n\t// The `hasPaddingValue` check does not need a parsed value, as `userSetPaddingValue` will be `undefined` if not set.\n\tconst hasPaddingValue = () => !! userSetPaddingValue;\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 [ userSetGapValue ] = useStyle( 'spacing.blockGap', name, 'user' );\n\tconst hasGapValue = () => !! userSetGapValue;\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"]}
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","useHasSpacingPresets","length","filterValuesBySides","values","sides","filteredValues","forEach","side","top","bottom","left","right","splitStyleValue","value","splitGapValue","useContentSizeProps","contentSizeValue","setContentSizeValue","userSetContentSizeValue","hasUserSetContentSizeValue","resetContentSizeValue","useWideSizeProps","wideSizeValue","setWideSizeValue","userSetWideSizeValue","hasUserSetWideSizeValue","resetWideSizeValue","usePaddingProps","rawPadding","setRawPadding","paddingValues","paddingSides","isAxialPadding","some","setPaddingValues","newPaddingValues","padding","resetPaddingValue","userSetPaddingValue","hasPaddingValue","useMarginProps","rawMargin","setRawMargin","marginValues","marginSides","isAxialMargin","setMarginValues","newMarginValues","margin","resetMarginValue","hasMarginValue","Object","keys","useBlockGapProps","gapValue","setGapValue","gapValues","setGapValues","nextBoxGapValue","gapSides","isAxialGap","resetGapValue","undefined","userSetGapValue","hasGapValue","DimensionsPanel","showContentSizeControl","showWideSizeControl","showPaddingControl","showMarginControl","showGapControl","showSpacingPresetsControl","units","availableUnits","resetAll","nextContentSize","positionCenter","nextWideSize","stretchWide"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\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 {\n\t__experimentalUseCustomSides as useCustomSides,\n\t__experimentalSpacingSizesControl as SpacingSizesControl,\n} 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 useHasSpacingPresets() {\n\tconst [ settings ] = useSetting( 'spacing.spacingSizes' );\n\n\treturn settings && settings.length > 0;\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\nfunction splitGapValue( 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 {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\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 [ userSetPaddingValue ] = useStyle( 'spacing.padding', name, 'user' );\n\t// The `hasPaddingValue` check does not need a parsed value, as `userSetPaddingValue` will be `undefined` if not set.\n\tconst hasPaddingValue = () => !! userSetPaddingValue;\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 gapValues = splitGapValue( gapValue );\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\tsetGapValue( {\n\t\t\ttop: nextBoxGapValue?.top,\n\t\t\tleft: nextBoxGapValue?.left,\n\t\t} );\n\t};\n\tconst gapSides = useCustomSides( name, 'blockGap' );\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst [ userSetGapValue ] = useStyle( 'spacing.blockGap', name, 'user' );\n\tconst hasGapValue = () => !! userSetGapValue;\n\treturn {\n\t\tgapValue,\n\t\tgapValues,\n\t\tgapSides,\n\t\tisAxialGap,\n\t\tsetGapValue,\n\t\tsetGapValues,\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 showSpacingPresetsControl = useHasSpacingPresets();\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 {\n\t\tgapValue,\n\t\tgapValues,\n\t\tgapSides,\n\t\tisAxialGap,\n\t\tsetGapValue,\n\t\tsetGapValues,\n\t\tresetGapValue,\n\t\thasGapValue,\n\t} = useBlockGapProps( 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\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ paddingValues }\n\t\t\t\t\t\t\tonChange={ setPaddingValues }\n\t\t\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\t\t\tsides={ paddingSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialPadding }\n\t\t\t\t\t\t/>\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\tclassName={ classnames( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl && (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tvalues={ marginValues }\n\t\t\t\t\t\t\tonChange={ setMarginValues }\n\t\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\t\tsides={ marginSides }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialMargin }\n\t\t\t\t\t\t/>\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{ isAxialGap ? (\n\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</ToolsPanel>\n\t);\n}\n"]}