@wordpress/block-editor 15.13.2-next.v.202602271551.0 → 15.14.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 (66) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -0
  3. package/build/components/block-settings-menu-controls/index.cjs +1 -0
  4. package/build/components/block-settings-menu-controls/index.cjs.map +2 -2
  5. package/build/components/block-styles/index.cjs +68 -57
  6. package/build/components/block-styles/index.cjs.map +3 -3
  7. package/build/components/block-switcher/preview-block-popover.cjs +10 -8
  8. package/build/components/block-switcher/preview-block-popover.cjs.map +2 -2
  9. package/build/components/block-toolbar/block-toolbar-icon.cjs +1 -1
  10. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  11. package/build/components/block-toolbar/index.cjs +8 -4
  12. package/build/components/block-toolbar/index.cjs.map +2 -2
  13. package/build/components/block-visibility/modal.cjs +2 -2
  14. package/build/components/block-visibility/modal.cjs.map +1 -1
  15. package/build/components/dimension-control/index.cjs +4 -2
  16. package/build/components/dimension-control/index.cjs.map +2 -2
  17. package/build/components/global-styles/dimensions-panel.cjs +6 -3
  18. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  19. package/build/hooks/auto-inspector-controls.cjs +26 -2
  20. package/build/hooks/auto-inspector-controls.cjs.map +3 -3
  21. package/build/index.cjs +2 -0
  22. package/build/index.cjs.map +2 -2
  23. package/build-module/components/block-settings-menu-controls/index.mjs +1 -0
  24. package/build-module/components/block-settings-menu-controls/index.mjs.map +2 -2
  25. package/build-module/components/block-styles/index.mjs +71 -61
  26. package/build-module/components/block-styles/index.mjs.map +2 -2
  27. package/build-module/components/block-switcher/preview-block-popover.mjs +11 -9
  28. package/build-module/components/block-switcher/preview-block-popover.mjs.map +2 -2
  29. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +1 -1
  30. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  31. package/build-module/components/block-toolbar/index.mjs +8 -4
  32. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  33. package/build-module/components/block-visibility/modal.mjs +2 -2
  34. package/build-module/components/block-visibility/modal.mjs.map +1 -1
  35. package/build-module/components/dimension-control/index.mjs +4 -2
  36. package/build-module/components/dimension-control/index.mjs.map +2 -2
  37. package/build-module/components/global-styles/dimensions-panel.mjs +6 -3
  38. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  39. package/build-module/hooks/auto-inspector-controls.mjs +28 -4
  40. package/build-module/hooks/auto-inspector-controls.mjs.map +2 -2
  41. package/build-module/index.mjs +2 -0
  42. package/build-module/index.mjs.map +3 -3
  43. package/build-style/content-rtl.css +11 -7
  44. package/build-style/content.css +11 -7
  45. package/build-style/style-rtl.css +0 -13
  46. package/build-style/style.css +0 -13
  47. package/package.json +39 -39
  48. package/src/components/block-settings-menu-controls/index.js +1 -0
  49. package/src/components/block-styles/index.js +35 -24
  50. package/src/components/block-styles/style.scss +0 -7
  51. package/src/components/block-switcher/preview-block-popover.js +9 -7
  52. package/src/components/block-switcher/style.scss +0 -8
  53. package/src/components/block-toolbar/block-toolbar-icon.js +6 -1
  54. package/src/components/block-toolbar/index.js +7 -2
  55. package/src/components/block-tools/style.scss +1 -14
  56. package/src/components/default-block-appender/content.scss +3 -25
  57. package/src/components/dimension-control/index.js +7 -4
  58. package/src/components/global-styles/dimensions-panel.js +3 -0
  59. package/src/hooks/auto-inspector-controls.js +31 -4
  60. package/src/hooks/test/dimensions.js +16 -0
  61. package/src/index.js +1 -0
  62. package/build/components/block-styles/preview-panel.cjs +0 -61
  63. package/build/components/block-styles/preview-panel.cjs.map +0 -7
  64. package/build-module/components/block-styles/preview-panel.mjs +0 -30
  65. package/build-module/components/block-styles/preview-panel.mjs.map +0 -7
  66. package/src/components/block-styles/preview-panel.js +0 -35
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/dimension-control/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tBaseControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\nimport PresetInputControl from '../preset-input-control';\nimport { CUSTOM_VALUE_SETTINGS } from '../preset-input-control/constants';\n\nconst EMPTY_ARRAY = [];\n\n// Dimension-specific custom value settings - override defaults for larger dimension values\nconst DIMENSION_CUSTOM_VALUE_SETTINGS = {\n\t...CUSTOM_VALUE_SETTINGS,\n\tpx: { max: 1000, steps: 1 },\n\tem: { max: 50, steps: 0.1 },\n\trem: { max: 50, steps: 0.1 },\n};\n\n/**\n * Hook to retrieve dimension sizes from theme settings.\n *\n * @param {Object} presets Dimension presets object containing default, theme, and custom sizes.\n * @return {Array} Array of dimension size options.\n */\nfunction useDimensionSizes( presets ) {\n\tconst defaultSizes = presets?.default ?? EMPTY_ARRAY;\n\tconst customSizes = presets?.custom ?? EMPTY_ARRAY;\n\tconst themeSizes = presets?.theme ?? EMPTY_ARRAY;\n\n\treturn useMemo( () => {\n\t\tconst sizes = [\n\t\t\t{ name: __( 'None' ), slug: '0', size: 0 },\n\t\t\t...customSizes,\n\t\t\t...themeSizes,\n\t\t\t...defaultSizes,\n\t\t];\n\n\t\treturn sizes;\n\t}, [ customSizes, themeSizes, defaultSizes ] );\n}\n\n/**\n * DimensionControl renders a linked unit control and range control for adjusting dimensions of a block.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/dimension-control/README.md\n *\n * @param {Object} props\n * @param {?string} props.label A label for the control.\n * @param {( value: string ) => void } props.onChange Called when the dimension value changes.\n * @param {string} props.value The current dimension value.\n *\n * @return {Component} The component to be rendered.\n */\nexport default function DimensionControl( {\n\tlabel = __( 'Dimension' ),\n\tonChange,\n\tvalue,\n} ) {\n\tconst [ dimensionSizes, availableUnits ] = useSettings(\n\t\t'dimensions.dimensionSizes',\n\t\t'spacing.units'\n\t);\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vh',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\tconst options = useDimensionSizes( dimensionSizes );\n\n\t// Track selected unit for PresetInputControl\n\tconst [ selectedUnit, setSelectedUnit ] = useState( () => {\n\t\tconst [ , unit ] = parseQuantityAndUnitFromRawValue( value );\n\t\treturn unit || units[ 0 ]?.value || 'px';\n\t} );\n\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tconst [ currentValue, currentUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( value );\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && currentUnit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tonChange( ( currentValue / 16 ).toFixed( 2 ) + newUnit );\n\t\t} else if (\n\t\t\t[ 'em', 'rem' ].includes( currentUnit ) &&\n\t\t\tnewUnit === 'px'\n\t\t) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tonChange( Math.round( currentValue * 16 ) + newUnit );\n\t\t} else if (\n\t\t\t[\n\t\t\t\t'%',\n\t\t\t\t'vw',\n\t\t\t\t'svw',\n\t\t\t\t'lvw',\n\t\t\t\t'dvw',\n\t\t\t\t'vh',\n\t\t\t\t'svh',\n\t\t\t\t'lvh',\n\t\t\t\t'dvh',\n\t\t\t\t'vi',\n\t\t\t\t'svi',\n\t\t\t\t'lvi',\n\t\t\t\t'dvi',\n\t\t\t\t'vb',\n\t\t\t\t'svb',\n\t\t\t\t'lvb',\n\t\t\t\t'dvb',\n\t\t\t\t'vmin',\n\t\t\t\t'svmin',\n\t\t\t\t'lvmin',\n\t\t\t\t'dvmin',\n\t\t\t\t'vmax',\n\t\t\t\t'svmax',\n\t\t\t\t'lvmax',\n\t\t\t\t'dvmax',\n\t\t\t].includes( newUnit ) &&\n\t\t\tcurrentValue > 100\n\t\t) {\n\t\t\t// When converting to `%` or viewport-relative units, cap the new value at 100.\n\t\t\tonChange( 100 + newUnit );\n\t\t}\n\n\t\tsetSelectedUnit( newUnit );\n\t};\n\n\treturn (\n\t\t<fieldset className=\"block-editor-dimension-control\">\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ label }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<PresetInputControl\n\t\t\t\tariaLabel={ label }\n\t\t\t\tclassName=\"block-editor-dimension-control\"\n\t\t\t\tcustomValueSettings={ DIMENSION_CUSTOM_VALUE_SETTINGS }\n\t\t\t\tminimumCustomValue={ 0 }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\tpresets={ options }\n\t\t\t\tpresetType=\"dimension\"\n\t\t\t\tselectedUnit={ selectedUnit }\n\t\t\t\tshowTooltip\n\t\t\t\tunits={ units }\n\t\t\t\tvalue={ value }\n\t\t\t/>\n\t\t</fieldset>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tBaseControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../use-settings';\nimport PresetInputControl from '../preset-input-control';\nimport { CUSTOM_VALUE_SETTINGS } from '../preset-input-control/constants';\n\nconst EMPTY_ARRAY = [];\n\n// Dimension-specific custom value settings - override defaults for larger dimension values\nconst DIMENSION_CUSTOM_VALUE_SETTINGS = {\n\t...CUSTOM_VALUE_SETTINGS,\n\tpx: { max: 1000, steps: 1 },\n\tem: { max: 50, steps: 0.1 },\n\trem: { max: 50, steps: 0.1 },\n};\n\n/**\n * Hook to retrieve dimension sizes from theme settings.\n *\n * @param {Object} presets Dimension presets object containing default, theme, and custom sizes.\n * @return {Array} Array of dimension size options.\n */\nfunction useDimensionSizes( presets ) {\n\tconst defaultSizes = presets?.default ?? EMPTY_ARRAY;\n\tconst customSizes = presets?.custom ?? EMPTY_ARRAY;\n\tconst themeSizes = presets?.theme ?? EMPTY_ARRAY;\n\n\treturn useMemo( () => {\n\t\tconst sizes = [\n\t\t\t{ name: __( 'None' ), slug: '0', size: 0 },\n\t\t\t...customSizes,\n\t\t\t...themeSizes,\n\t\t\t...defaultSizes,\n\t\t];\n\n\t\treturn sizes;\n\t}, [ customSizes, themeSizes, defaultSizes ] );\n}\n\n/**\n * DimensionControl renders a linked unit control and range control for adjusting dimensions of a block.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/dimension-control/README.md\n *\n * @param {Object} props\n * @param {?string} props.label A label for the control.\n * @param {( value: string ) => void } props.onChange Called when the dimension value changes.\n * @param {string} props.value The current dimension value.\n * @param {?Object} props.dimensionSizes Optional dimension size presets. Falls back to settings from the store.\n *\n * @return {Component} The component to be rendered.\n */\nexport default function DimensionControl( {\n\tlabel = __( 'Dimension' ),\n\tonChange,\n\tvalue,\n\tdimensionSizes: dimensionSizesProp,\n} ) {\n\tconst [ dimensionSizesFromSettings, availableUnits ] = useSettings(\n\t\t'dimensions.dimensionSizes',\n\t\t'spacing.units'\n\t);\n\tconst dimensionSizes = dimensionSizesProp ?? dimensionSizesFromSettings;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vh',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\tconst options = useDimensionSizes( dimensionSizes );\n\n\t// Track selected unit for PresetInputControl\n\tconst [ selectedUnit, setSelectedUnit ] = useState( () => {\n\t\tconst [ , unit ] = parseQuantityAndUnitFromRawValue( value );\n\t\treturn unit || units[ 0 ]?.value || 'px';\n\t} );\n\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tconst [ currentValue, currentUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( value );\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && currentUnit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tonChange( ( currentValue / 16 ).toFixed( 2 ) + newUnit );\n\t\t} else if (\n\t\t\t[ 'em', 'rem' ].includes( currentUnit ) &&\n\t\t\tnewUnit === 'px'\n\t\t) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tonChange( Math.round( currentValue * 16 ) + newUnit );\n\t\t} else if (\n\t\t\t[\n\t\t\t\t'%',\n\t\t\t\t'vw',\n\t\t\t\t'svw',\n\t\t\t\t'lvw',\n\t\t\t\t'dvw',\n\t\t\t\t'vh',\n\t\t\t\t'svh',\n\t\t\t\t'lvh',\n\t\t\t\t'dvh',\n\t\t\t\t'vi',\n\t\t\t\t'svi',\n\t\t\t\t'lvi',\n\t\t\t\t'dvi',\n\t\t\t\t'vb',\n\t\t\t\t'svb',\n\t\t\t\t'lvb',\n\t\t\t\t'dvb',\n\t\t\t\t'vmin',\n\t\t\t\t'svmin',\n\t\t\t\t'lvmin',\n\t\t\t\t'dvmin',\n\t\t\t\t'vmax',\n\t\t\t\t'svmax',\n\t\t\t\t'lvmax',\n\t\t\t\t'dvmax',\n\t\t\t].includes( newUnit ) &&\n\t\t\tcurrentValue > 100\n\t\t) {\n\t\t\t// When converting to `%` or viewport-relative units, cap the new value at 100.\n\t\t\tonChange( 100 + newUnit );\n\t\t}\n\n\t\tsetSelectedUnit( newUnit );\n\t};\n\n\treturn (\n\t\t<fieldset className=\"block-editor-dimension-control\">\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ label }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<PresetInputControl\n\t\t\t\tariaLabel={ label }\n\t\t\t\tclassName=\"block-editor-dimension-control\"\n\t\t\t\tcustomValueSettings={ DIMENSION_CUSTOM_VALUE_SETTINGS }\n\t\t\t\tminimumCustomValue={ 0 }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\tpresets={ options }\n\t\t\t\tpresetType=\"dimension\"\n\t\t\t\tselectedUnit={ selectedUnit }\n\t\t\t\tshowTooltip\n\t\t\t\tunits={ units }\n\t\t\t\tvalue={ value }\n\t\t\t/>\n\t\t</fieldset>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -607,7 +607,8 @@ function DimensionsPanel({
607
607
  {
608
608
  label: __("Minimum height"),
609
609
  value: minHeightValue,
610
- onChange: setMinHeightValue
610
+ onChange: setMinHeightValue,
611
+ dimensionSizes: dimensions?.dimensionSizes
611
612
  }
612
613
  )
613
614
  }
@@ -625,7 +626,8 @@ function DimensionsPanel({
625
626
  {
626
627
  label: __("Height"),
627
628
  value: heightValue,
628
- onChange: setHeightValue
629
+ onChange: setHeightValue,
630
+ dimensionSizes: dimensions?.dimensionSizes
629
631
  }
630
632
  )
631
633
  }
@@ -643,7 +645,8 @@ function DimensionsPanel({
643
645
  {
644
646
  label: __("Width"),
645
647
  value: widthValue,
646
- onChange: setWidthValue
648
+ onChange: setWidthValue,
649
+ dimensionSizes: dimensions?.dimensionSizes
647
650
  }
648
651
  )
649
652
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/dimensions-panel.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport DimensionControl from '../dimension-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasHeight = useHasHeight( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasWidth = useHasWidth( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasHeight ||\n\t\t\thasMinHeight ||\n\t\t\thasWidth ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasHeight( settings ) {\n\treturn settings?.dimensions?.height;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasWidth( settings ) {\n\treturn settings?.dimensions?.width;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\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, isAxialGap ) {\n\tif ( ! value ) {\n\t\treturn value;\n\t}\n\n\t// Check for shorthand value (a string value).\n\tif ( typeof value === 'string' ) {\n\t\t/*\n\t\t * Map the string value to appropriate sides for the spacing control depending\n\t\t * on whether the current block has axial gap support or not.\n\t\t *\n\t\t * Note: The axial value pairs must match for the spacing control to display\n\t\t * the appropriate horizontal/vertical sliders.\n\t\t */\n\t\treturn isAxialGap\n\t\t\t? { top: value, right: value, bottom: value, left: value }\n\t\t\t: { top: value };\n\t}\n\n\treturn {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\theight: true,\n\tminHeight: true,\n\twidth: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\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//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue, isAxialGap );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Height\n\tconst showHeightControl = useHasHeight( settings );\n\tconst heightValue = decodeValue( inheritedValue?.dimensions?.height );\n\tconst setHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'height' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetHeightValue = () => {\n\t\tsetHeightValue( undefined );\n\t};\n\tconst hasHeightValue = () => !! value?.dimensions?.height;\n\n\t// Width\n\tconst showWidthControl = useHasWidth( settings );\n\tconst widthValue = decodeValue( inheritedValue?.dimensions?.width );\n\tconst setWidthValue = ( newValue ) => {\n\t\tonChange( setImmutably( value, [ 'dimensions', 'width' ], newValue ) );\n\t};\n\tconst resetWidthValue = () => {\n\t\tsetWidthValue( undefined );\n\t};\n\tconst hasWidthValue = () => !! value?.dimensions?.width;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\theight: undefined,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\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\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ 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={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\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\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverPadding,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\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\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\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\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tmin: minMarginValue,\n\t\t\t\t\t\t\t\tonDragStart: () => {\n\t\t\t\t\t\t\t\t\t// Reset to 0 in case the value was negative.\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( 0 );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonDragEnd: () => {\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( minimumMargin );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverMargin,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\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\tminimumCustomValue={ -Infinity }\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\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\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\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\tshowSideInLabel={ false }\n\t\t\t\t\t\t\tsides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.\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/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasHeightValue }\n\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\tonDeselect={ resetHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.height ?? DEFAULT_CONTROLS.height\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\tvalue={ heightValue }\n\t\t\t\t\t\tonChange={ setHeightValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWidthControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasWidthValue }\n\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\tonDeselect={ resetWidthValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.width ?? DEFAULT_CONTROLS.width\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tvalue={ widthValue }\n\t\t\t\t\t\tonChange={ setWidthValue }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState, Platform } from '@wordpress/element';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport SpacingSizesControl from '../spacing-sizes-control';\nimport DimensionControl from '../dimension-control';\nimport ChildLayoutControl from '../child-layout-control';\nimport AspectRatioTool from '../dimensions-tool/aspect-ratio-tool';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { setImmutably } from '../../utils/object';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\nexport function useHasDimensionsPanel( settings ) {\n\tconst hasContentSize = useHasContentSize( settings );\n\tconst hasWideSize = useHasWideSize( settings );\n\tconst hasPadding = useHasPadding( settings );\n\tconst hasMargin = useHasMargin( settings );\n\tconst hasGap = useHasGap( settings );\n\tconst hasHeight = useHasHeight( settings );\n\tconst hasMinHeight = useHasMinHeight( settings );\n\tconst hasWidth = useHasWidth( settings );\n\tconst hasAspectRatio = useHasAspectRatio( settings );\n\tconst hasChildLayout = useHasChildLayout( settings );\n\n\treturn (\n\t\tPlatform.OS === 'web' &&\n\t\t( hasContentSize ||\n\t\t\thasWideSize ||\n\t\t\thasPadding ||\n\t\t\thasMargin ||\n\t\t\thasGap ||\n\t\t\thasHeight ||\n\t\t\thasMinHeight ||\n\t\t\thasWidth ||\n\t\t\thasAspectRatio ||\n\t\t\thasChildLayout )\n\t);\n}\n\nfunction useHasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction useHasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction useHasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction useHasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction useHasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction useHasHeight( settings ) {\n\treturn settings?.dimensions?.height;\n}\n\nfunction useHasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction useHasWidth( settings ) {\n\treturn settings?.dimensions?.width;\n}\n\nfunction useHasAspectRatio( settings ) {\n\treturn settings?.dimensions?.aspectRatio;\n}\n\nfunction useHasChildLayout( settings ) {\n\tconst {\n\t\ttype: parentLayoutType = 'default',\n\t\tdefault: { type: defaultParentLayoutType = 'default' } = {},\n\t\tallowSizingOnChildren = false,\n\t} = settings?.parentLayout ?? {};\n\n\tconst support =\n\t\t( defaultParentLayoutType === 'flex' ||\n\t\t\tparentLayoutType === 'flex' ||\n\t\t\tdefaultParentLayoutType === 'grid' ||\n\t\t\tparentLayoutType === 'grid' ) &&\n\t\tallowSizingOnChildren;\n\treturn !! settings?.layout && support;\n}\n\nfunction useHasSpacingPresets( settings ) {\n\tconst { defaultSpacingSizes, spacingSizes } = settings?.spacing || {};\n\treturn (\n\t\t( defaultSpacingSizes !== false &&\n\t\t\tspacingSizes?.default?.length > 0 ) ||\n\t\tspacingSizes?.theme?.length > 0 ||\n\t\tspacingSizes?.custom?.length > 0\n\t);\n}\n\nfunction filterValuesBySides( values, sides ) {\n\t// If no custom side configuration, all sides are opted into by default.\n\t// Without any values, we have nothing to filter either.\n\tif ( ! sides || ! values ) {\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, isAxialGap ) {\n\tif ( ! value ) {\n\t\treturn value;\n\t}\n\n\t// Check for shorthand value (a string value).\n\tif ( typeof value === 'string' ) {\n\t\t/*\n\t\t * Map the string value to appropriate sides for the spacing control depending\n\t\t * on whether the current block has axial gap support or not.\n\t\t *\n\t\t * Note: The axial value pairs must match for the spacing control to display\n\t\t * the appropriate horizontal/vertical sliders.\n\t\t */\n\t\treturn isAxialGap\n\t\t\t? { top: value, right: value, bottom: value, left: value }\n\t\t\t: { top: value };\n\t}\n\n\treturn {\n\t\t...value,\n\t\tright: value?.left,\n\t\tbottom: value?.top,\n\t};\n}\n\nfunction DimensionsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\theight: true,\n\tminHeight: true,\n\twidth: true,\n\taspectRatio: true,\n\tchildLayout: true,\n};\n\nexport default function DimensionsPanel( {\n\tas: Wrapper = DimensionsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tonVisualize = () => {},\n\t// Special case because the layout controls are not part of the dimensions panel\n\t// in global styles but not in block inspector.\n\tincludeLayoutControls = false,\n} ) {\n\tconst { dimensions, spacing } = settings;\n\n\tconst decodeValue = ( rawValue ) => {\n\t\tif ( rawValue && typeof rawValue === 'object' ) {\n\t\t\treturn Object.keys( rawValue ).reduce( ( acc, key ) => {\n\t\t\t\tacc[ key ] = getValueFromVariable(\n\t\t\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t\t\t'',\n\t\t\t\t\trawValue[ key ]\n\t\t\t\t);\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t}\n\t\treturn getValueFromVariable(\n\t\t\t{ settings: { dimensions, spacing } },\n\t\t\t'',\n\t\t\trawValue\n\t\t);\n\t};\n\n\tconst showSpacingPresetsControl = useHasSpacingPresets( settings );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: settings?.spacing?.units || [\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//Minimum Margin Value\n\tconst minimumMargin = -Infinity;\n\tconst [ minMarginValue, setMinMarginValue ] = useState( minimumMargin );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\tuseHasContentSize( settings ) && includeLayoutControls;\n\tconst contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );\n\tconst setContentSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'contentSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\tuseHasWideSize( settings ) && includeLayoutControls;\n\tconst wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );\n\tconst setWideSizeValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'layout', 'wideSize' ],\n\t\t\t\tnewValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = useHasPadding( settings );\n\tconst rawPadding = decodeValue( inheritedValue?.spacing?.padding );\n\tconst paddingValues = splitStyleValue( rawPadding );\n\tconst paddingSides = Array.isArray( settings?.spacing?.padding )\n\t\t? settings?.spacing?.padding\n\t\t: settings?.spacing?.padding?.sides;\n\tconst isAxialPadding =\n\t\tpaddingSides &&\n\t\tpaddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setPaddingValues = ( newPaddingValues ) => {\n\t\tconst padding = filterValuesBySides( newPaddingValues, paddingSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );\n\t};\n\tconst hasPaddingValue = () =>\n\t\t!! value?.spacing?.padding &&\n\t\tObject.keys( value?.spacing?.padding ).length;\n\tconst resetPaddingValue = () => setPaddingValues( undefined );\n\tconst onMouseOverPadding = () => onVisualize( 'padding' );\n\n\t// Margin\n\tconst showMarginControl = useHasMargin( settings );\n\tconst rawMargin = decodeValue( inheritedValue?.spacing?.margin );\n\tconst marginValues = splitStyleValue( rawMargin );\n\tconst marginSides = Array.isArray( settings?.spacing?.margin )\n\t\t? settings?.spacing?.margin\n\t\t: settings?.spacing?.margin?.sides;\n\tconst isAxialMargin =\n\t\tmarginSides &&\n\t\tmarginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst setMarginValues = ( newMarginValues ) => {\n\t\tconst margin = filterValuesBySides( newMarginValues, marginSides );\n\t\tonChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );\n\t};\n\tconst hasMarginValue = () =>\n\t\t!! value?.spacing?.margin &&\n\t\tObject.keys( value?.spacing?.margin ).length;\n\tconst resetMarginValue = () => setMarginValues( undefined );\n\tconst onMouseOverMargin = () => onVisualize( 'margin' );\n\n\t// Block Gap\n\tconst showGapControl = useHasGap( settings );\n\tconst gapSides = Array.isArray( settings?.spacing?.blockGap )\n\t\t? settings?.spacing?.blockGap\n\t\t: settings?.spacing?.blockGap?.sides;\n\tconst isAxialGap =\n\t\tgapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst gapValue = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst gapValues = splitGapValue( gapValue, isAxialGap );\n\tconst setGapValue = ( newGapValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )\n\t\t);\n\t};\n\tconst setGapValues = ( nextBoxGapValue ) => {\n\t\tif ( ! nextBoxGapValue ) {\n\t\t\tsetGapValue( null );\n\t\t}\n\t\t// If axial gap is not enabled, treat the 'top' value as the shorthand gap value.\n\t\tif ( ! isAxialGap && nextBoxGapValue?.hasOwnProperty( 'top' ) ) {\n\t\t\tsetGapValue( nextBoxGapValue.top );\n\t\t} else {\n\t\t\tsetGapValue( {\n\t\t\t\ttop: nextBoxGapValue?.top,\n\t\t\t\tleft: nextBoxGapValue?.left,\n\t\t\t} );\n\t\t}\n\t};\n\tconst resetGapValue = () => setGapValue( undefined );\n\tconst hasGapValue = () => !! value?.spacing?.blockGap;\n\n\t// Min Height\n\tconst showMinHeightControl = useHasMinHeight( settings );\n\tconst minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );\n\tconst setMinHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'minHeight' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply min-height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetMinHeightValue = () => {\n\t\tsetMinHeightValue( undefined );\n\t};\n\tconst hasMinHeightValue = () => !! value?.dimensions?.minHeight;\n\n\t// Height\n\tconst showHeightControl = useHasHeight( settings );\n\tconst heightValue = decodeValue( inheritedValue?.dimensions?.height );\n\tconst setHeightValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'height' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply height, while removing any applied aspect ratio.\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\ttempValue,\n\t\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\t};\n\tconst resetHeightValue = () => {\n\t\tsetHeightValue( undefined );\n\t};\n\tconst hasHeightValue = () => !! value?.dimensions?.height;\n\n\t// Width\n\tconst showWidthControl = useHasWidth( settings );\n\tconst widthValue = decodeValue( inheritedValue?.dimensions?.width );\n\tconst setWidthValue = ( newValue ) => {\n\t\tonChange( setImmutably( value, [ 'dimensions', 'width' ], newValue ) );\n\t};\n\tconst resetWidthValue = () => {\n\t\tsetWidthValue( undefined );\n\t};\n\tconst hasWidthValue = () => !! value?.dimensions?.width;\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = useHasAspectRatio( settings );\n\tconst aspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst setAspectRatioValue = ( newValue ) => {\n\t\tconst tempValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'dimensions', 'aspectRatio' ],\n\t\t\tnewValue\n\t\t);\n\t\t// Apply aspect-ratio, while removing any applied min-height.\n\t\tonChange(\n\t\t\tsetImmutably( tempValue, [ 'dimensions', 'minHeight' ], undefined )\n\t\t);\n\t};\n\tconst hasAspectRatioValue = () => !! value?.dimensions?.aspectRatio;\n\n\t// Child Layout\n\tconst showChildLayoutControl = useHasChildLayout( settings );\n\tconst childLayout = inheritedValue?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...newChildLayout,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tlayout: cleanEmptyObject( {\n\t\t\t\t...previousValue?.layout,\n\t\t\t\tcontentSize: undefined,\n\t\t\t\twideSize: undefined,\n\t\t\t\tselfStretch: undefined,\n\t\t\t\tflexSize: undefined,\n\t\t\t\tcolumnStart: undefined,\n\t\t\t\trowStart: undefined,\n\t\t\t\tcolumnSpan: undefined,\n\t\t\t\trowSpan: undefined,\n\t\t\t} ),\n\t\t\tspacing: {\n\t\t\t\t...previousValue?.spacing,\n\t\t\t\tpadding: undefined,\n\t\t\t\tmargin: undefined,\n\t\t\t\tblockGap: undefined,\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t...previousValue?.dimensions,\n\t\t\t\theight: undefined,\n\t\t\t\tminHeight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst onMouseLeaveControls = () => onVisualize( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\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\tlabel={ __( 'Content width' ) }\n\t\t\t\t\thasValue={ hasUserSetContentSizeValue }\n\t\t\t\t\tonDeselect={ resetContentSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.contentSize ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.contentSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ contentSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextContentSize ) => {\n\t\t\t\t\t\t\tsetContentSizeValue( nextContentSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ alignNone } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ showWideSizeControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\thasValue={ hasUserSetWideSizeValue }\n\t\t\t\t\tonDeselect={ resetWideSizeValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\tvalue={ wideSizeValue || '' }\n\t\t\t\t\t\tonChange={ ( nextWideSize ) => {\n\t\t\t\t\t\t\tsetWideSizeValue( nextWideSize );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t\t\t<Icon icon={ stretchWide } />\n\t\t\t\t\t\t\t</InputControlPrefixWrapper>\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{ 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={\n\t\t\t\t\t\tdefaultControls.padding ?? DEFAULT_CONTROLS.padding\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\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\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverPadding,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\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\tonMouseOver={ onMouseOverPadding }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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={\n\t\t\t\t\t\tdefaultControls.margin ?? DEFAULT_CONTROLS.margin\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\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\t__next40pxDefaultSize\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\tinputProps={ {\n\t\t\t\t\t\t\t\tmin: minMarginValue,\n\t\t\t\t\t\t\t\tonDragStart: () => {\n\t\t\t\t\t\t\t\t\t// Reset to 0 in case the value was negative.\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( 0 );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonDragEnd: () => {\n\t\t\t\t\t\t\t\t\tsetMinMarginValue( minimumMargin );\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonMouseOver: onMouseOverMargin,\n\t\t\t\t\t\t\t\tonMouseOut: onMouseLeaveControls,\n\t\t\t\t\t\t\t} }\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\tminimumCustomValue={ -Infinity }\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\tonMouseOver={ onMouseOverMargin }\n\t\t\t\t\t\t\tonMouseOut={ onMouseLeaveControls }\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={\n\t\t\t\t\t\tdefaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap\n\t\t\t\t\t}\n\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t'tools-panel-item-spacing': showSpacingPresetsControl,\n\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ ! showSpacingPresetsControl &&\n\t\t\t\t\t\t( isAxialGap ? (\n\t\t\t\t\t\t\t<BoxControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValues }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tsides={ gapSides }\n\t\t\t\t\t\t\t\tvalues={ gapValues }\n\t\t\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\t\t\tsplitOnAxis={ isAxialGap }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\tonChange={ setGapValue }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tvalue={ gapValue }\n\t\t\t\t\t\t\t/>\n\t\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\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\tshowSideInLabel={ false }\n\t\t\t\t\t\t\tsides={ isAxialGap ? gapSides : [ 'top' ] } // Use 'top' as the shorthand property in non-axial configurations.\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/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showChildLayoutControl && (\n\t\t\t\t<ChildLayoutControl\n\t\t\t\t\tvalue={ childLayout }\n\t\t\t\t\tonChange={ setChildLayout }\n\t\t\t\t\tparentLayout={ settings?.parentLayout }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.childLayout ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.childLayout\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showMinHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasMinHeightValue }\n\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ resetMinHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\t\tvalue={ minHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showHeightControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasHeightValue }\n\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\tonDeselect={ resetHeightValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.height ?? DEFAULT_CONTROLS.height\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\tvalue={ heightValue }\n\t\t\t\t\t\tonChange={ setHeightValue }\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWidthControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasWidthValue }\n\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\tonDeselect={ resetWidthValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.width ?? DEFAULT_CONTROLS.width\n\t\t\t\t\t}\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<DimensionControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tvalue={ widthValue }\n\t\t\t\t\t\tonChange={ setWidthValue }\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showAspectRatioControl && (\n\t\t\t\t<AspectRatioTool\n\t\t\t\t\thasValue={ hasAspectRatioValue }\n\t\t\t\t\tvalue={ aspectRatioValue }\n\t\t\t\t\tonChange={ setAspectRatioValue }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.aspectRatio ??\n\t\t\t\t\t\tDEFAULT_CONTROLS.aspectRatio\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,13 +1,15 @@
1
1
  // packages/block-editor/src/hooks/auto-inspector-controls.js
2
- import { getBlockType } from "@wordpress/blocks";
2
+ import { getBlockType, store as blocksStore } from "@wordpress/blocks";
3
3
  import { PanelBody } from "@wordpress/components";
4
4
  import { useSelect } from "@wordpress/data";
5
5
  import { DataForm } from "@wordpress/dataviews";
6
- import { useMemo } from "@wordpress/element";
6
+ import { useContext, useMemo } from "@wordpress/element";
7
7
  import { __ } from "@wordpress/i18n";
8
8
  import InspectorControls from "../components/inspector-controls/index.mjs";
9
9
  import { useBlockEditingMode } from "../components/block-editing-mode/index.mjs";
10
10
  import { store as blockEditorStore } from "../store/index.mjs";
11
+ import { unlock } from "../lock-unlock.mjs";
12
+ import BlockContext from "../components/block-context/index.mjs";
11
13
  import { generateFieldsFromAttributes } from "./generate-fields-from-attributes.mjs";
12
14
  import { jsx } from "react/jsx-runtime";
13
15
  function hasAutoGenerateControl(blockTypeAttributes) {
@@ -20,9 +22,31 @@ function hasAutoGenerateControl(blockTypeAttributes) {
20
22
  }
21
23
  function AutoRegisterControls({ name, clientId, setAttributes }) {
22
24
  const blockEditingMode = useBlockEditingMode();
25
+ const blockContext = useContext(BlockContext);
23
26
  const attributes = useSelect(
24
- (select) => select(blockEditorStore).getBlockAttributes(clientId),
25
- [clientId]
27
+ (select) => {
28
+ const _attributes = select(blockEditorStore).getBlockAttributes(clientId);
29
+ if (!_attributes?.metadata?.bindings) {
30
+ return _attributes;
31
+ }
32
+ const { getBlockBindingsSource } = unlock(select(blocksStore));
33
+ return Object.entries(_attributes.metadata.bindings).reduce(
34
+ (acc, [attribute, binding]) => {
35
+ const source = getBlockBindingsSource(binding.source);
36
+ if (!source) {
37
+ return acc;
38
+ }
39
+ const values = source.getValues({
40
+ select,
41
+ context: blockContext,
42
+ bindings: { [attribute]: binding }
43
+ });
44
+ return { ...acc, ...values };
45
+ },
46
+ _attributes
47
+ );
48
+ },
49
+ [blockContext, clientId]
26
50
  );
27
51
  const blockType = getBlockType(name);
28
52
  const { fields, form } = useMemo(() => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/hooks/auto-inspector-controls.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { DataForm } from '@wordpress/dataviews';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { store as blockEditorStore } from '../store';\nimport { generateFieldsFromAttributes } from './generate-fields-from-attributes';\n\n/**\n * Checks if a block has any attributes marked for auto-generated inspector controls.\n *\n * @param {Object} blockTypeAttributes - The block type's attributes object.\n * @return {boolean} True if any attribute has autoGenerateControl marker.\n */\nfunction hasAutoGenerateControl( blockTypeAttributes ) {\n\tif ( ! blockTypeAttributes ) {\n\t\treturn false;\n\t}\n\treturn Object.values( blockTypeAttributes ).some(\n\t\t( attr ) => attr?.autoGenerateControl\n\t);\n}\n\n/**\n * Renders DataForm-based inspector controls for auto-registered PHP-only blocks.\n *\n * Fields are generated on-the-fly from attributes marked with `autoGenerateControl`\n * during PHP registration.\n *\n * @param {Object} props Component props.\n * @param {string} props.name Block name.\n * @param {string} props.clientId Block client ID.\n * @param {Function} props.setAttributes Function to update block attributes.\n */\nfunction AutoRegisterControls( { name, clientId, setAttributes } ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst attributes = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockAttributes( clientId ),\n\t\t[ clientId ]\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Generate fields from user-defined attributes marked by PHP.\n\t// The autoGenerateControl marker excludes block support attributes\n\t// (which have their own UI) and internal state (role: 'local').\n\t// Memoized since blockType.attributes don't change after registration.\n\tconst { fields, form } = useMemo( () => {\n\t\tif ( ! blockType?.attributes ) {\n\t\t\treturn { fields: [], form: { fields: [] } };\n\t\t}\n\t\treturn generateFieldsFromAttributes( blockType.attributes );\n\t}, [ blockType?.attributes ] );\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tif ( ! fields || fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<DataForm\n\t\t\t\t\tdata={ attributes }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ setAttributes }\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default {\n\tedit: AutoRegisterControls,\n\tattributeKeys: [],\n\thasSupport( name ) {\n\t\tconst blockType = getBlockType( name );\n\t\treturn hasAutoGenerateControl( blockType?.attributes );\n\t},\n};\n"],
5
- "mappings": ";AAGA,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,UAAU;AAKnB,OAAO,uBAAuB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oCAAoC;AA4DzC;AApDJ,SAAS,uBAAwB,qBAAsB;AACtD,MAAK,CAAE,qBAAsB;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,OAAO,OAAQ,mBAAoB,EAAE;AAAA,IAC3C,CAAE,SAAU,MAAM;AAAA,EACnB;AACD;AAaA,SAAS,qBAAsB,EAAE,MAAM,UAAU,cAAc,GAAI;AAClE,QAAM,mBAAmB,oBAAoB;AAE7C,QAAM,aAAa;AAAA,IAClB,CAAE,WAAY,OAAQ,gBAAiB,EAAE,mBAAoB,QAAS;AAAA,IACtE,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,YAAY,aAAc,IAAK;AAMrC,QAAM,EAAE,QAAQ,KAAK,IAAI,QAAS,MAAM;AACvC,QAAK,CAAE,WAAW,YAAa;AAC9B,aAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;AAAA,IAC3C;AACA,WAAO,6BAA8B,UAAU,UAAW;AAAA,EAC3D,GAAG,CAAE,WAAW,UAAW,CAAE;AAE7B,MAAK,qBAAqB,WAAY;AACrC,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,qBACA,8BAAC,aAAU,OAAQ,GAAI,UAAW,GACjC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,UAAW;AAAA;AAAA,EACZ,GACD,GACD;AAEF;AAEA,IAAO,kCAAQ;AAAA,EACd,MAAM;AAAA,EACN,eAAe,CAAC;AAAA,EAChB,WAAY,MAAO;AAClB,UAAM,YAAY,aAAc,IAAK;AACrC,WAAO,uBAAwB,WAAW,UAAW;AAAA,EACtD;AACD;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { DataForm } from '@wordpress/dataviews';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport { useBlockEditingMode } from '../components/block-editing-mode';\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\nimport BlockContext from '../components/block-context';\nimport { generateFieldsFromAttributes } from './generate-fields-from-attributes';\n\n/**\n * Checks if a block has any attributes marked for auto-generated inspector controls.\n *\n * @param {Object} blockTypeAttributes - The block type's attributes object.\n * @return {boolean} True if any attribute has autoGenerateControl marker.\n */\nfunction hasAutoGenerateControl( blockTypeAttributes ) {\n\tif ( ! blockTypeAttributes ) {\n\t\treturn false;\n\t}\n\treturn Object.values( blockTypeAttributes ).some(\n\t\t( attr ) => attr?.autoGenerateControl\n\t);\n}\n\n/**\n * Renders DataForm-based inspector controls for auto-registered PHP-only blocks.\n *\n * Fields are generated on-the-fly from attributes marked with `autoGenerateControl`\n * during PHP registration.\n *\n * @param {Object} props Component props.\n * @param {string} props.name Block name.\n * @param {string} props.clientId Block client ID.\n * @param {Function} props.setAttributes Function to update block attributes.\n */\nfunction AutoRegisterControls( { name, clientId, setAttributes } ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst blockContext = useContext( BlockContext );\n\n\tconst attributes = useSelect(\n\t\t( select ) => {\n\t\t\tconst _attributes =\n\t\t\t\tselect( blockEditorStore ).getBlockAttributes( clientId );\n\t\t\tif ( ! _attributes?.metadata?.bindings ) {\n\t\t\t\treturn _attributes;\n\t\t\t}\n\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\treturn Object.entries( _attributes.metadata.bindings ).reduce(\n\t\t\t\t( acc, [ attribute, binding ] ) => {\n\t\t\t\t\tconst source = getBlockBindingsSource( binding.source );\n\t\t\t\t\tif ( ! source ) {\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}\n\t\t\t\t\tconst values = source.getValues( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\t\tbindings: { [ attribute ]: binding },\n\t\t\t\t\t} );\n\t\t\t\t\treturn { ...acc, ...values };\n\t\t\t\t},\n\t\t\t\t_attributes\n\t\t\t);\n\t\t},\n\t\t[ blockContext, clientId ]\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Generate fields from user-defined attributes marked by PHP.\n\t// The autoGenerateControl marker excludes block support attributes\n\t// (which have their own UI) and internal state (role: 'local').\n\t// Memoized since blockType.attributes don't change after registration.\n\tconst { fields, form } = useMemo( () => {\n\t\tif ( ! blockType?.attributes ) {\n\t\t\treturn { fields: [], form: { fields: [] } };\n\t\t}\n\t\treturn generateFieldsFromAttributes( blockType.attributes );\n\t}, [ blockType?.attributes ] );\n\n\tif ( blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\tif ( ! fields || fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<DataForm\n\t\t\t\t\tdata={ attributes }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ setAttributes }\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default {\n\tedit: AutoRegisterControls,\n\tattributeKeys: [],\n\thasSupport( name ) {\n\t\tconst blockType = getBlockType( name );\n\t\treturn hasAutoGenerateControl( blockType?.attributes );\n\t},\n};\n"],
5
+ "mappings": ";AAGA,SAAS,cAAc,SAAS,mBAAmB;AACnD,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,YAAY,eAAe;AACpC,SAAS,UAAU;AAKnB,OAAO,uBAAuB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,cAAc;AACvB,OAAO,kBAAkB;AACzB,SAAS,oCAAoC;AAqFzC;AA7EJ,SAAS,uBAAwB,qBAAsB;AACtD,MAAK,CAAE,qBAAsB;AAC5B,WAAO;AAAA,EACR;AACA,SAAO,OAAO,OAAQ,mBAAoB,EAAE;AAAA,IAC3C,CAAE,SAAU,MAAM;AAAA,EACnB;AACD;AAaA,SAAS,qBAAsB,EAAE,MAAM,UAAU,cAAc,GAAI;AAClE,QAAM,mBAAmB,oBAAoB;AAE7C,QAAM,eAAe,WAAY,YAAa;AAE9C,QAAM,aAAa;AAAA,IAClB,CAAE,WAAY;AACb,YAAM,cACL,OAAQ,gBAAiB,EAAE,mBAAoB,QAAS;AACzD,UAAK,CAAE,aAAa,UAAU,UAAW;AACxC,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,uBAAuB,IAAI,OAAQ,OAAQ,WAAY,CAAE;AACjE,aAAO,OAAO,QAAS,YAAY,SAAS,QAAS,EAAE;AAAA,QACtD,CAAE,KAAK,CAAE,WAAW,OAAQ,MAAO;AAClC,gBAAM,SAAS,uBAAwB,QAAQ,MAAO;AACtD,cAAK,CAAE,QAAS;AACf,mBAAO;AAAA,UACR;AACA,gBAAM,SAAS,OAAO,UAAW;AAAA,YAChC;AAAA,YACA,SAAS;AAAA,YACT,UAAU,EAAE,CAAE,SAAU,GAAG,QAAQ;AAAA,UACpC,CAAE;AACF,iBAAO,EAAE,GAAG,KAAK,GAAG,OAAO;AAAA,QAC5B;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,cAAc,QAAS;AAAA,EAC1B;AAEA,QAAM,YAAY,aAAc,IAAK;AAMrC,QAAM,EAAE,QAAQ,KAAK,IAAI,QAAS,MAAM;AACvC,QAAK,CAAE,WAAW,YAAa;AAC9B,aAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;AAAA,IAC3C;AACA,WAAO,6BAA8B,UAAU,UAAW;AAAA,EAC3D,GAAG,CAAE,WAAW,UAAW,CAAE;AAE7B,MAAK,qBAAqB,WAAY;AACrC,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,qBACA,8BAAC,aAAU,OAAQ,GAAI,UAAW,GACjC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,UAAW;AAAA;AAAA,EACZ,GACD,GACD;AAEF;AAEA,IAAO,kCAAQ;AAAA,EACd,MAAM;AAAA,EACN,eAAe,CAAC;AAAA,EAChB,WAAY,MAAO;AAClB,UAAM,YAAY,aAAc,IAAK;AACrC,WAAO,uBAAwB,WAAW,UAAW;AAAA,EACtD;AACD;",
6
6
  "names": []
7
7
  }
@@ -9,6 +9,7 @@ import {
9
9
  useColorProps,
10
10
  useCustomSides,
11
11
  getSpacingClassesAndStyles,
12
+ getDimensionsClassesAndStyles as getDimensionsClassesAndStyles2,
12
13
  getGapCSSValue,
13
14
  getShadowClassesAndStyles,
14
15
  useCachedTruthy,
@@ -24,6 +25,7 @@ export {
24
25
  SETTINGS_DEFAULTS,
25
26
  getBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles,
26
27
  getColorClassesAndStyles as __experimentalGetColorClassesAndStyles,
28
+ getDimensionsClassesAndStyles2 as __experimentalGetDimensionsClassesAndStyles,
27
29
  getGapCSSValue as __experimentalGetGapCSSValue,
28
30
  getShadowClassesAndStyles as __experimentalGetShadowClassesAndStyles,
29
31
  getSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport './hooks';\nexport {\n\tgetBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles,\n\tuseBorderProps as __experimentalUseBorderProps,\n\tgetColorClassesAndStyles as __experimentalGetColorClassesAndStyles,\n\tgetDimensionsClassesAndStyles,\n\tgetTypographyClassesAndStyles,\n\tuseColorProps as __experimentalUseColorProps,\n\tuseCustomSides as __experimentalUseCustomSides,\n\tgetSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles,\n\tgetGapCSSValue as __experimentalGetGapCSSValue,\n\tgetShadowClassesAndStyles as __experimentalGetShadowClassesAndStyles,\n\tuseCachedTruthy,\n\tuseStyleOverride,\n} from './hooks';\nexport * from './components';\nexport * from './elements';\nexport * from './utils';\nexport { storeConfig, store } from './store';\nexport { SETTINGS_DEFAULTS } from './store/defaults';\nexport { privateApis } from './private-apis';\n"],
5
- "mappings": ";AAGA,OAAO;AACP;AAAA,EAC8B;AAAA,EACX;AAAA,EACU;AAAA,EAC5B;AAAA,EACA;AAAA,EACiB;AAAA,EACC;AAAA,EACY;AAAA,EACZ;AAAA,EACW;AAAA,EAC7B;AAAA,EACA;AAAA,OACM;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,aAAa,aAAa;AACnC,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;",
6
- "names": []
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport './hooks';\nexport {\n\tgetBorderClassesAndStyles as __experimentalGetBorderClassesAndStyles,\n\tuseBorderProps as __experimentalUseBorderProps,\n\tgetColorClassesAndStyles as __experimentalGetColorClassesAndStyles,\n\tgetDimensionsClassesAndStyles,\n\tgetTypographyClassesAndStyles,\n\tuseColorProps as __experimentalUseColorProps,\n\tuseCustomSides as __experimentalUseCustomSides,\n\tgetSpacingClassesAndStyles as __experimentalGetSpacingClassesAndStyles,\n\tgetDimensionsClassesAndStyles as __experimentalGetDimensionsClassesAndStyles,\n\tgetGapCSSValue as __experimentalGetGapCSSValue,\n\tgetShadowClassesAndStyles as __experimentalGetShadowClassesAndStyles,\n\tuseCachedTruthy,\n\tuseStyleOverride,\n} from './hooks';\nexport * from './components';\nexport * from './elements';\nexport * from './utils';\nexport { storeConfig, store } from './store';\nexport { SETTINGS_DEFAULTS } from './store/defaults';\nexport { privateApis } from './private-apis';\n"],
5
+ "mappings": ";AAGA,OAAO;AACP;AAAA,EAC8B;AAAA,EACX;AAAA,EACU;AAAA,EAC5B;AAAA,EACA;AAAA,EACiB;AAAA,EACC;AAAA,EACY;AAAA,EACG,iCAAjCA;AAAA,EACkB;AAAA,EACW;AAAA,EAC7B;AAAA,EACA;AAAA,OACM;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,aAAa,aAAa;AACnC,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;",
6
+ "names": ["getDimensionsClassesAndStyles"]
7
7
  }
@@ -736,21 +736,25 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
736
736
  }
737
737
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
738
738
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
739
- flex-direction: row;
740
- box-shadow: none;
741
- height: 24px;
742
- width: 24px;
743
- min-width: 24px;
744
- display: none;
745
- padding: 0 !important;
746
739
  background: #1e1e1e;
747
740
  color: #fff;
741
+ padding: 0;
742
+ min-width: 24px;
743
+ height: 24px;
748
744
  }
749
745
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon:hover,
750
746
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle:hover {
751
747
  color: #fff;
752
748
  background: var(--wp-admin-theme-color);
753
749
  }
750
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
751
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
752
+ flex-direction: row;
753
+ box-shadow: none;
754
+ width: 24px;
755
+ display: none;
756
+ padding: 0 !important;
757
+ }
754
758
  .block-editor-block-list__block .block-list-appender .block-editor-default-block-appender__content {
755
759
  display: none;
756
760
  }
@@ -737,21 +737,25 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection=true] .blo
737
737
  }
738
738
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
739
739
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
740
- flex-direction: row;
741
- box-shadow: none;
742
- height: 24px;
743
- width: 24px;
744
- min-width: 24px;
745
- display: none;
746
- padding: 0 !important;
747
740
  background: #1e1e1e;
748
741
  color: #fff;
742
+ padding: 0;
743
+ min-width: 24px;
744
+ height: 24px;
749
745
  }
750
746
  .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon:hover,
751
747
  .block-editor-block-list__block .block-list-appender .block-list-appender__toggle:hover {
752
748
  color: #fff;
753
749
  background: var(--wp-admin-theme-color);
754
750
  }
751
+ .block-editor-block-list__block .block-list-appender .block-editor-inserter__toggle.components-button.has-icon,
752
+ .block-editor-block-list__block .block-list-appender .block-list-appender__toggle {
753
+ flex-direction: row;
754
+ box-shadow: none;
755
+ width: 24px;
756
+ display: none;
757
+ padding: 0 !important;
758
+ }
755
759
  .block-editor-block-list__block .block-list-appender .block-editor-default-block-appender__content {
756
760
  display: none;
757
761
  }
@@ -1198,11 +1198,6 @@ iframe[name=editor-canvas] {
1198
1198
  text-align-last: center;
1199
1199
  }
1200
1200
 
1201
- .block-editor-block-styles__block-preview-container,
1202
- .block-editor-block-styles__block-preview-container * {
1203
- box-sizing: border-box !important;
1204
- }
1205
-
1206
1201
  .components-popover.block-editor-block-switcher__popover .components-popover__content {
1207
1202
  min-width: 300px;
1208
1203
  }
@@ -1238,14 +1233,6 @@ iframe[name=editor-canvas] {
1238
1233
  overflow: unset;
1239
1234
  }
1240
1235
 
1241
- .block-editor-block-switcher__preview-title {
1242
- margin-bottom: 12px;
1243
- color: #757575;
1244
- text-transform: uppercase;
1245
- font-size: 11px;
1246
- font-weight: 499;
1247
- }
1248
-
1249
1236
  .block-editor-block-switcher__preview-patterns-container {
1250
1237
  padding-bottom: 16px;
1251
1238
  }
@@ -1198,11 +1198,6 @@ iframe[name=editor-canvas] {
1198
1198
  text-align-last: center;
1199
1199
  }
1200
1200
 
1201
- .block-editor-block-styles__block-preview-container,
1202
- .block-editor-block-styles__block-preview-container * {
1203
- box-sizing: border-box !important;
1204
- }
1205
-
1206
1201
  .components-popover.block-editor-block-switcher__popover .components-popover__content {
1207
1202
  min-width: 300px;
1208
1203
  }
@@ -1238,14 +1233,6 @@ iframe[name=editor-canvas] {
1238
1233
  overflow: unset;
1239
1234
  }
1240
1235
 
1241
- .block-editor-block-switcher__preview-title {
1242
- margin-bottom: 12px;
1243
- color: #757575;
1244
- text-transform: uppercase;
1245
- font-size: 11px;
1246
- font-weight: 499;
1247
- }
1248
-
1249
1236
  .block-editor-block-switcher__preview-patterns-container {
1250
1237
  padding-bottom: 16px;
1251
1238
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "15.13.2-next.v.202602271551.0+464abe399",
3
+ "version": "15.14.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -61,43 +61,43 @@
61
61
  ],
62
62
  "dependencies": {
63
63
  "@react-spring/web": "^9.4.5",
64
- "@wordpress/a11y": "^4.40.1-next.v.202602271551.0+464abe399",
65
- "@wordpress/api-fetch": "^7.40.1-next.v.202602271551.0+464abe399",
66
- "@wordpress/base-styles": "^6.16.1-next.v.202602271551.0+464abe399",
67
- "@wordpress/blob": "^4.40.1-next.v.202602271551.0+464abe399",
68
- "@wordpress/block-serialization-default-parser": "^5.40.1-next.v.202602271551.0+464abe399",
69
- "@wordpress/blocks": "^15.13.1-next.v.202602271551.0+464abe399",
70
- "@wordpress/commands": "^1.40.1-next.v.202602271551.0+464abe399",
71
- "@wordpress/components": "^32.3.1-next.v.202602271551.0+464abe399",
72
- "@wordpress/compose": "^7.40.1-next.v.202602271551.0+464abe399",
73
- "@wordpress/data": "^10.40.1-next.v.202602271551.0+464abe399",
74
- "@wordpress/dataviews": "^12.1.1-next.v.202602271551.0+464abe399",
75
- "@wordpress/date": "^5.40.1-next.v.202602271551.0+464abe399",
76
- "@wordpress/deprecated": "^4.40.1-next.v.202602271551.0+464abe399",
77
- "@wordpress/dom": "^4.40.1-next.v.202602271551.0+464abe399",
78
- "@wordpress/element": "^6.40.1-next.v.202602271551.0+464abe399",
79
- "@wordpress/escape-html": "^3.40.1-next.v.202602271551.0+464abe399",
80
- "@wordpress/global-styles-engine": "^1.7.1-next.v.202602271551.0+464abe399",
81
- "@wordpress/hooks": "^4.40.1-next.v.202602271551.0+464abe399",
82
- "@wordpress/html-entities": "^4.40.1-next.v.202602271551.0+464abe399",
83
- "@wordpress/i18n": "^6.13.1-next.v.202602271551.0+464abe399",
84
- "@wordpress/icons": "^11.7.1-next.v.202602271551.0+464abe399",
85
- "@wordpress/image-cropper": "^1.4.1-next.v.202602271551.0+464abe399",
86
- "@wordpress/interactivity": "^6.40.1-next.v.202602271551.0+464abe399",
87
- "@wordpress/is-shallow-equal": "^5.40.1-next.v.202602271551.0+464abe399",
88
- "@wordpress/keyboard-shortcuts": "^5.40.1-next.v.202602271551.0+464abe399",
89
- "@wordpress/keycodes": "^4.40.1-next.v.202602271551.0+464abe399",
90
- "@wordpress/notices": "^5.40.1-next.v.202602271551.0+464abe399",
91
- "@wordpress/preferences": "^4.40.1-next.v.202602271551.0+464abe399",
92
- "@wordpress/priority-queue": "^3.40.1-next.v.202602271551.0+464abe399",
93
- "@wordpress/private-apis": "^1.40.1-next.v.202602271551.0+464abe399",
94
- "@wordpress/rich-text": "^7.40.1-next.v.202602271551.0+464abe399",
95
- "@wordpress/style-engine": "^2.40.1-next.v.202602271551.0+464abe399",
96
- "@wordpress/token-list": "^3.40.1-next.v.202602271551.0+464abe399",
97
- "@wordpress/upload-media": "^0.25.2-next.v.202602271551.0+464abe399",
98
- "@wordpress/url": "^4.40.1-next.v.202602271551.0+464abe399",
99
- "@wordpress/warning": "^3.40.1-next.v.202602271551.0+464abe399",
100
- "@wordpress/wordcount": "^4.40.1-next.v.202602271551.0+464abe399",
64
+ "@wordpress/a11y": "^4.41.0",
65
+ "@wordpress/api-fetch": "^7.41.0",
66
+ "@wordpress/base-styles": "^6.17.0",
67
+ "@wordpress/blob": "^4.41.0",
68
+ "@wordpress/block-serialization-default-parser": "^5.41.0",
69
+ "@wordpress/blocks": "^15.14.0",
70
+ "@wordpress/commands": "^1.41.0",
71
+ "@wordpress/components": "^32.3.0",
72
+ "@wordpress/compose": "^7.41.0",
73
+ "@wordpress/data": "^10.41.0",
74
+ "@wordpress/dataviews": "^13.0.0",
75
+ "@wordpress/date": "^5.41.0",
76
+ "@wordpress/deprecated": "^4.41.0",
77
+ "@wordpress/dom": "^4.41.0",
78
+ "@wordpress/element": "^6.41.0",
79
+ "@wordpress/escape-html": "^3.41.0",
80
+ "@wordpress/global-styles-engine": "^1.8.0",
81
+ "@wordpress/hooks": "^4.41.0",
82
+ "@wordpress/html-entities": "^4.41.0",
83
+ "@wordpress/i18n": "^6.14.0",
84
+ "@wordpress/icons": "^11.8.0",
85
+ "@wordpress/image-cropper": "^1.5.0",
86
+ "@wordpress/interactivity": "^6.41.0",
87
+ "@wordpress/is-shallow-equal": "^5.41.0",
88
+ "@wordpress/keyboard-shortcuts": "^5.41.0",
89
+ "@wordpress/keycodes": "^4.41.0",
90
+ "@wordpress/notices": "^5.41.0",
91
+ "@wordpress/preferences": "^4.41.0",
92
+ "@wordpress/priority-queue": "^3.41.0",
93
+ "@wordpress/private-apis": "^1.41.0",
94
+ "@wordpress/rich-text": "^7.41.0",
95
+ "@wordpress/style-engine": "^2.41.0",
96
+ "@wordpress/token-list": "^3.41.0",
97
+ "@wordpress/upload-media": "^0.26.0",
98
+ "@wordpress/url": "^4.41.0",
99
+ "@wordpress/warning": "^3.41.0",
100
+ "@wordpress/wordcount": "^4.41.0",
101
101
  "change-case": "^4.1.2",
102
102
  "clsx": "^2.1.1",
103
103
  "colord": "^2.7.0",
@@ -124,5 +124,5 @@
124
124
  "publishConfig": {
125
125
  "access": "public"
126
126
  },
127
- "gitHead": "95aa7055a5757219e2d96a91efc69f7dd1b2d4c3"
127
+ "gitHead": "8bfc179b9aed74c0a6dd6e8edf7a49e40e4f87cc"
128
128
  }
@@ -79,6 +79,7 @@ const BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {
79
79
  <Slot
80
80
  fillProps={ {
81
81
  ...fillProps,
82
+ canEdit,
82
83
  selectedBlocks,
83
84
  selectedClientIds,
84
85
  } }