@wordpress/block-editor 16.2.0 → 17.0.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.
- package/CHANGELOG.md +39 -0
- package/build/components/block-inspector/index.cjs +9 -6
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-keyboard-shortcuts/index.cjs +201 -0
- package/build/components/block-keyboard-shortcuts/index.cjs.map +7 -0
- package/build/components/block-list/block.cjs +10 -3
- package/build/components/block-list/block.cjs.map +2 -2
- package/build/components/block-list/index.cjs +6 -1
- package/build/components/block-list/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs +4 -0
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.cjs +6 -7
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.cjs.map +2 -2
- package/build/components/block-parent-selector/index.cjs +98 -29
- package/build/components/block-parent-selector/index.cjs.map +3 -3
- package/build/components/block-popover/inbetween.cjs +2 -2
- package/build/components/block-popover/inbetween.cjs.map +2 -2
- package/build/components/block-preview/index.cjs +0 -4
- package/build/components/block-preview/index.cjs.map +2 -2
- package/build/components/block-styles/index.cjs +77 -33
- package/build/components/block-styles/index.cjs.map +3 -3
- package/build/components/block-visibility/constants.cjs.map +2 -2
- package/build/components/child-layout-control/index.cjs.map +2 -2
- package/build/components/colors/with-colors.cjs +55 -71
- package/build/components/colors/with-colors.cjs.map +2 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs +4 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
- package/build/components/dimensions-tool/index.cjs +18 -16
- package/build/components/dimensions-tool/index.cjs.map +2 -2
- package/build/components/dimensions-tool/utils.cjs +61 -0
- package/build/components/dimensions-tool/utils.cjs.map +7 -0
- package/build/components/duotone-control/index.cjs +2 -0
- package/build/components/duotone-control/index.cjs.map +2 -2
- package/build/components/global-styles/advanced-panel.cjs.map +3 -3
- package/build/components/global-styles/border-panel.cjs +2 -5
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/color-panel.cjs +14 -2
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +9 -5
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/filters-panel.cjs +12 -8
- package/build/components/global-styles/filters-panel.cjs.map +2 -2
- package/build/components/global-styles/shadow-panel-components.cjs +16 -11
- package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
- package/build/components/global-styles/utils.cjs +9 -0
- package/build/components/global-styles/utils.cjs.map +2 -2
- package/build/components/inner-blocks/index.cjs +5 -3
- package/build/components/inner-blocks/index.cjs.map +2 -2
- package/build/components/inserter/block-patterns-explorer/index.cjs +39 -22
- package/build/components/inserter/block-patterns-explorer/index.cjs.map +2 -2
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.cjs +21 -55
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.cjs.map +2 -2
- package/build/components/inserter/block-patterns-explorer/pattern-list.cjs +19 -44
- package/build/components/inserter/block-patterns-explorer/pattern-list.cjs.map +3 -3
- package/build/components/inserter/hooks/use-insertion-point.cjs +4 -4
- package/build/components/inserter/hooks/use-insertion-point.cjs.map +2 -2
- package/build/components/inserter/menu.cjs +18 -7
- package/build/components/inserter/menu.cjs.map +2 -2
- package/build/components/inserter/quick-inserter.cjs +30 -27
- package/build/components/inserter/quick-inserter.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/styles-tab.cjs +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/list-view/index.cjs +31 -5
- package/build/components/list-view/index.cjs.map +3 -3
- package/build/components/list-view/utils.cjs +13 -1
- package/build/components/list-view/utils.cjs.map +2 -2
- package/build/components/media-placeholder/index.cjs +1 -1
- package/build/components/media-placeholder/index.cjs.map +3 -3
- package/build/components/provider/index.cjs +5 -1
- package/build/components/provider/index.cjs.map +3 -3
- package/build/components/publish-date-time-picker/index.cjs +3 -2
- package/build/components/publish-date-time-picker/index.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/enter.cjs +46 -39
- package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
- package/build/components/rich-text/index.cjs +7 -5
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/rich-text/multiline.cjs +105 -70
- package/build/components/rich-text/multiline.cjs.map +3 -3
- package/build/components/url-input/index.cjs.map +2 -2
- package/build/components/writing-flow/use-input.cjs +65 -13
- package/build/components/writing-flow/use-input.cjs.map +3 -3
- package/build/hooks/border.cjs +25 -3
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/dimensions.cjs +9 -2
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/duotone.cjs +4 -3
- package/build/hooks/duotone.cjs.map +2 -2
- package/build/hooks/gap.cjs +8 -2
- package/build/hooks/gap.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +35 -13
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +23 -1
- package/build/hooks/layout.cjs.map +2 -2
- package/build/hooks/states.cjs +7 -4
- package/build/hooks/states.cjs.map +2 -2
- package/build/layouts/constrained.cjs +8 -1
- package/build/layouts/constrained.cjs.map +2 -2
- package/build/layouts/flex.cjs +9 -0
- package/build/layouts/flex.cjs.map +2 -2
- package/build/layouts/flow.cjs +4 -1
- package/build/layouts/flow.cjs.map +2 -2
- package/build/layouts/grid.cjs +5 -1
- package/build/layouts/grid.cjs.map +2 -2
- package/build/private-apis.cjs +3 -1
- package/build/private-apis.cjs.map +2 -2
- package/build/store/actions.cjs +1 -1
- package/build/store/actions.cjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +9 -6
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-keyboard-shortcuts/index.mjs +173 -0
- package/build-module/components/block-keyboard-shortcuts/index.mjs.map +7 -0
- package/build-module/components/block-list/block.mjs +10 -3
- package/build-module/components/block-list/block.mjs.map +2 -2
- package/build-module/components/block-list/index.mjs +6 -1
- package/build-module/components/block-list/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +4 -0
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.mjs +6 -7
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.mjs.map +2 -2
- package/build-module/components/block-parent-selector/index.mjs +101 -32
- package/build-module/components/block-parent-selector/index.mjs.map +2 -2
- package/build-module/components/block-popover/inbetween.mjs +2 -2
- package/build-module/components/block-popover/inbetween.mjs.map +2 -2
- package/build-module/components/block-preview/index.mjs +0 -4
- package/build-module/components/block-preview/index.mjs.map +2 -2
- package/build-module/components/block-styles/index.mjs +79 -35
- package/build-module/components/block-styles/index.mjs.map +2 -2
- package/build-module/components/block-visibility/constants.mjs.map +2 -2
- package/build-module/components/child-layout-control/index.mjs +5 -5
- package/build-module/components/child-layout-control/index.mjs.map +1 -1
- package/build-module/components/colors/with-colors.mjs +56 -72
- package/build-module/components/colors/with-colors.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +4 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/index.mjs +19 -17
- package/build-module/components/dimensions-tool/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/utils.mjs +35 -0
- package/build-module/components/dimensions-tool/utils.mjs.map +7 -0
- package/build-module/components/duotone-control/index.mjs +2 -0
- package/build-module/components/duotone-control/index.mjs.map +2 -2
- package/build-module/components/global-styles/advanced-panel.mjs +5 -2
- package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +2 -5
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +14 -2
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +9 -5
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/filters-panel.mjs +16 -9
- package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
- package/build-module/components/global-styles/shadow-panel-components.mjs +16 -11
- package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
- package/build-module/components/global-styles/utils.mjs +8 -0
- package/build-module/components/global-styles/utils.mjs.map +2 -2
- package/build-module/components/inner-blocks/index.mjs +5 -3
- package/build-module/components/inner-blocks/index.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-explorer/index.mjs +39 -22
- package/build-module/components/inserter/block-patterns-explorer/index.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.mjs +22 -56
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.mjs +20 -45
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-insertion-point.mjs +4 -4
- package/build-module/components/inserter/hooks/use-insertion-point.mjs.map +2 -2
- package/build-module/components/inserter/menu.mjs +19 -8
- package/build-module/components/inserter/menu.mjs.map +2 -2
- package/build-module/components/inserter/quick-inserter.mjs +30 -27
- package/build-module/components/inserter/quick-inserter.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/list-view/index.mjs +32 -5
- package/build-module/components/list-view/index.mjs.map +3 -3
- package/build-module/components/list-view/utils.mjs +13 -1
- package/build-module/components/list-view/utils.mjs.map +2 -2
- package/build-module/components/media-placeholder/index.mjs +3 -3
- package/build-module/components/media-placeholder/index.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +6 -2
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/publish-date-time-picker/index.mjs +3 -2
- package/build-module/components/publish-date-time-picker/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +46 -39
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +7 -5
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/rich-text/multiline.mjs +112 -72
- package/build-module/components/rich-text/multiline.mjs.map +2 -2
- package/build-module/components/url-input/index.mjs +2 -2
- package/build-module/components/url-input/index.mjs.map +1 -1
- package/build-module/components/writing-flow/use-input.mjs +66 -14
- package/build-module/components/writing-flow/use-input.mjs.map +3 -3
- package/build-module/hooks/border.mjs +26 -8
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs +9 -2
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/duotone.mjs +8 -4
- package/build-module/hooks/duotone.mjs.map +2 -2
- package/build-module/hooks/gap.mjs +6 -1
- package/build-module/hooks/gap.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +36 -13
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +22 -1
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/states.mjs +8 -5
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +8 -1
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +9 -0
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/flow.mjs +4 -1
- package/build-module/layouts/flow.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +5 -1
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +3 -1
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +1 -1
- package/build-module/store/actions.mjs.map +2 -2
- package/build-style/style-rtl.css +108 -71
- package/build-style/style.css +108 -71
- package/build-types/components/block-visibility/constants.d.ts +4 -3
- package/build-types/components/block-visibility/constants.d.ts.map +1 -1
- package/package.json +43 -43
- package/src/components/background-image-control/README.md +122 -0
- package/src/components/block-edit-visually-button/README.md +39 -0
- package/src/components/block-editing-mode/README.md +72 -0
- package/src/components/block-inspector/index.js +6 -6
- package/src/components/block-keyboard-shortcuts/index.js +256 -0
- package/src/components/block-list/block.js +7 -0
- package/src/components/block-list/index.js +7 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +5 -0
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +6 -8
- package/src/components/block-parent-selector/index.js +111 -30
- package/src/components/block-popover/README.md +10 -3
- package/src/components/block-popover/inbetween.js +8 -2
- package/src/components/block-popover/stories/index.story.jsx +143 -0
- package/src/components/block-preview/index.js +0 -2
- package/src/components/block-styles/index.js +95 -43
- package/src/components/block-styles/style.scss +5 -34
- package/src/components/block-tools/style.scss +94 -0
- package/src/components/block-visibility/constants.ts +4 -3
- package/src/components/child-layout-control/index.js +5 -5
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -29
- package/src/components/colors/test/with-colors.js +6 -7
- package/src/components/colors/with-colors.js +79 -105
- package/src/components/dimensions-tool/aspect-ratio-tool.js +16 -4
- package/src/components/dimensions-tool/index.js +34 -22
- package/src/components/dimensions-tool/test/index.js +166 -2
- package/src/components/dimensions-tool/test/utils.js +51 -0
- package/src/components/dimensions-tool/utils.js +67 -0
- package/src/components/duotone-control/index.js +2 -0
- package/src/components/duotone-control/test/index.js +100 -0
- package/src/components/global-styles/advanced-panel.js +5 -2
- package/src/components/global-styles/border-panel.js +11 -9
- package/src/components/global-styles/color-panel.js +13 -1
- package/src/components/global-styles/dimensions-panel.js +17 -5
- package/src/components/global-styles/filters-panel.js +24 -10
- package/src/components/global-styles/shadow-panel-components.js +38 -11
- package/src/components/global-styles/test/border-panel.js +230 -0
- package/src/components/global-styles/test/color-panel.js +24 -0
- package/src/components/global-styles/test/dimensions-panel.js +98 -7
- package/src/components/global-styles/test/filters-panel.js +84 -0
- package/src/components/global-styles/test/utils.js +30 -0
- package/src/components/global-styles/utils.js +23 -0
- package/src/components/inner-blocks/index.js +11 -2
- package/src/components/inner-blocks/stories/index.story.jsx +246 -0
- package/src/components/inserter/block-patterns-explorer/index.js +24 -11
- package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +18 -56
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +22 -47
- package/src/components/inserter/hooks/use-insertion-point.js +9 -4
- package/src/components/inserter/menu.js +23 -10
- package/src/components/inserter/quick-inserter.js +15 -13
- package/src/components/inserter/style.scss +44 -62
- package/src/components/inspector-controls-tabs/README.md +92 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +1 -1
- package/src/components/link-control/test/index.js +5 -0
- package/src/components/list-view/index.js +50 -7
- package/src/components/list-view/utils.js +16 -1
- package/src/components/media-placeholder/index.js +9 -4
- package/src/components/plain-text/stories/index.story.jsx +3 -0
- package/src/components/provider/index.js +7 -1
- package/src/components/publish-date-time-picker/README.md +10 -0
- package/src/components/publish-date-time-picker/index.js +17 -14
- package/src/components/rich-text/event-listeners/enter.js +58 -45
- package/src/components/rich-text/index.js +9 -4
- package/src/components/rich-text/multiline.js +126 -86
- package/src/components/url-input/index.js +2 -2
- package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +27 -0
- package/src/components/url-input/test/index.js +5 -0
- package/src/components/url-popover/README.md +7 -0
- package/src/components/url-popover/stories/index.story.jsx +133 -47
- package/src/components/writing-flow/use-input.js +105 -15
- package/src/hooks/border.js +27 -8
- package/src/hooks/dimensions.js +8 -1
- package/src/hooks/duotone.js +23 -7
- package/src/hooks/gap.js +16 -0
- package/src/hooks/layout-child.js +41 -9
- package/src/hooks/layout.js +117 -71
- package/src/hooks/states.js +8 -5
- package/src/hooks/test/gap.js +31 -1
- package/src/hooks/test/layout-child.js +60 -1
- package/src/hooks/test/layout.js +27 -0
- package/src/layouts/constrained.js +9 -1
- package/src/layouts/flex.js +15 -0
- package/src/layouts/flow.js +4 -1
- package/src/layouts/grid.js +9 -1
- package/src/layouts/test/constrained.js +26 -0
- package/src/layouts/test/flow.js +26 -0
- package/src/layouts/test/grid.js +46 -0
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +14 -1
- package/build/components/floating-toolbar/nav-up-icon.cjs +0 -52
- package/build/components/floating-toolbar/nav-up-icon.cjs.map +0 -7
- package/build/components/gradients/with-gradient.cjs +0 -36
- package/build/components/gradients/with-gradient.cjs.map +0 -7
- package/build/components/inserter-button/sparkles.cjs +0 -36
- package/build/components/inserter-button/sparkles.cjs.map +0 -7
- package/build-module/components/floating-toolbar/nav-up-icon.mjs +0 -31
- package/build-module/components/floating-toolbar/nav-up-icon.mjs.map +0 -7
- package/build-module/components/gradients/with-gradient.mjs +0 -11
- package/build-module/components/gradients/with-gradient.mjs.map +0 -7
- package/build-module/components/inserter-button/sparkles.mjs +0 -15
- package/build-module/components/inserter-button/sparkles.mjs.map +0 -7
- package/build-style/default-editor-styles-rtl.css +0 -68
- package/build-style/default-editor-styles.css +0 -68
- package/src/components/floating-toolbar/nav-up-icon.js +0 -22
- package/src/components/gradients/with-gradient.js +0 -9
- package/src/components/inserter-button/README.md +0 -62
- package/src/components/inserter-button/sparkles.js +0 -12
- package/src/default-editor-styles.scss +0 -25
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/color-panel.js"],
|
|
4
|
-
"sourcesContent": ["import { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getCSSValueFromRawStyle } from '@wordpress/style-engine';\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport {\n\tuseColorsPerOrigin,\n\tuseGradientsPerOrigin,\n\tuseColorGradientSettings,\n} from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\nimport { isGlobalStylesInheritanceEnabled } from './inheritance';\n\n// Despite the \"ColorPanel\" name, this gates only the element-level color\n// controls (link, heading, button, caption, h1–h6) — surfaced as the\n// \"Elements\" panel in the block inspector and the \"Colors\" screen in\n// Global Styles. Top-level text and background color moved to the\n// Typography and Background panels, so this returns false for blocks\n// whose only color support is text and/or background.\nexport function useHasColorPanel( settings ) {\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn hasLinkPanel || hasHeadingPanel || hasButtonPanel || hasCaptionPanel;\n}\n\nexport function useHasTextPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.text &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasLinkPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.link &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasCaptionPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.caption &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasHeadingPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.heading &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasButtonPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.button &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasBackgroundColorPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.background &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function ColorToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\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={ label || __( 'Elements' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\theadingLevel={ 3 }\n\t\t\tclassName=\"color-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"color-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nexport default function ColorPanel( {\n\tas: Wrapper = ColorToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tlabel,\n\tchildren,\n\tcontrastWarning,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tallColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\t// When an inherited preset isn't in the panel's palette, `decodeValue`\n\t// returns the raw `var:preset|…` token rather than a paintable colour.\n\t// Fall back to its CSS custom property so the swatch still renders.\n\tconst decodeInheritedColor = ( rawValue ) =>\n\t\tgetCSSValueFromRawStyle( decodeValue( rawValue ) );\n\n\t// Links\n\tconst showLinkPanel = useHasLinkPanel( settings );\n\tconst linkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.color?.text\n\t);\n\tconst userLinkColor = decodeValue( value?.elements?.link?.color?.text );\n\tconst setLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hoverLinkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst userHoverLinkColor = decodeValue(\n\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst setHoverLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLink = () => !! userLinkColor || !! userHoverLinkColor;\n\tconst resetLink = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably(\n\t\t\tnewValue,\n\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tonChange( newValue );\n\t};\n\n\tconst showCaptionPanel = useHasCaptionPanel( settings );\n\tconst showButtonPanel = useHasButtonPanel( settings );\n\tconst showHeadingPanel = useHasHeadingPanel( settings );\n\n\t// Elements\n\tconst elements = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'caption',\n\t\t\t\tlabel: __( 'Captions' ),\n\t\t\t\tshowPanel: showCaptionPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'button',\n\t\t\t\tlabel: __( 'Button' ),\n\t\t\t\tshowPanel: showButtonPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'heading',\n\t\t\t\tlabel: __( 'Heading' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h1',\n\t\t\t\tlabel: __( 'H1' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h2',\n\t\t\t\tlabel: __( 'H2' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h3',\n\t\t\t\tlabel: __( 'H3' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h4',\n\t\t\t\tlabel: __( 'H4' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h5',\n\t\t\t\tlabel: __( 'H5' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h6',\n\t\t\t\tlabel: __( 'H6' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t],\n\t\t[ showCaptionPanel, showButtonPanel, showHeadingPanel ]\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\telements: {\n\t\t\t\t\t...previousValue?.elements,\n\t\t\t\t\tlink: {\n\t\t\t\t\t\t...previousValue?.elements?.link,\n\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t':hover': {\n\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...elements.reduce( ( acc, element ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[ element.name ]: {\n\t\t\t\t\t\t\t\t...previousValue?.elements?.[ element.name ],\n\t\t\t\t\t\t\t\tcolor: undefined,\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},\n\t\t\t};\n\t\t},\n\t\t[ elements ]\n\t);\n\n\tconst items = [\n\t\tshowLinkPanel && {\n\t\t\tkey: 'link',\n\t\t\tlabel: __( 'Link' ),\n\t\t\thasValue: hasLink,\n\t\t\tresetValue: resetLink,\n\t\t\tisShownByDefault: defaultControls.link,\n\t\t\tindicators: [\n\t\t\t\tuserLinkColor ?? linkColor,\n\t\t\t\tuserHoverLinkColor ?? hoverLinkColor,\n\t\t\t],\n\t\t\tisPlaceholder:\n\t\t\t\tuserLinkColor === undefined &&\n\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t( linkColor !== undefined || hoverLinkColor !== undefined ),\n\t\t\thasInheritedValue:\n\t\t\t\tlinkColor !== undefined || hoverLinkColor !== undefined,\n\t\t\tcontrastWarning,\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'link',\n\t\t\t\t\tlabel: __( 'Default' ),\n\t\t\t\t\tinheritedValue: linkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setLinkColor,\n\t\t\t\t\tuserValue: userLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserLinkColor === undefined && linkColor !== undefined,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: 'hover',\n\t\t\t\t\tlabel: __( 'Hover' ),\n\t\t\t\t\tinheritedValue: hoverLinkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color\n\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setHoverLinkColor,\n\t\t\t\t\tuserValue: userHoverLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t\t\thoverLinkColor !== undefined,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t].filter( Boolean );\n\n\telements.forEach( ( { name, label: elementLabel, showPanel } ) => {\n\t\tif ( ! showPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementBackgroundColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradient = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst elementBackgroundUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradientUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst hasElement = () =>\n\t\t\t!! (\n\t\t\t\telementTextUserColor ||\n\t\t\t\telementBackgroundUserColor ||\n\t\t\t\telementGradientUserColor\n\t\t\t);\n\t\tconst resetElement = () => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tundefined\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tnewValue.elements[ name ].color.text = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\n\t\tconst setElementTextColor = ( newTextColor, newSlug ) => {\n\t\t\tonChange(\n\t\t\t\tsetImmutably(\n\t\t\t\t\tvalue,\n\t\t\t\t\t[ 'elements', name, 'color', 'text' ],\n\t\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\t\tallColors,\n\t\t\t\t\t\tnewTextColor,\n\t\t\t\t\t\tnewSlug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tconst setElementBackgroundColor = ( newBackgroundColor, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\tallColors,\n\t\t\t\t\tnewBackgroundColor,\n\t\t\t\t\tnewSlug\n\t\t\t\t)\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\tconst setElementGradient = ( newGradient, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'gradient' ],\n\t\t\t\tencodeGradientValue( newGradient, newSlug )\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.background = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\t// Background color is not supported for `caption`\n\t\t// as there isn't yet a way to set padding for the element.\n\t\tconst supportsBackground = name !== 'caption';\n\n\t\t// Per-tab placeholder flags. The item-level placeholder is active when\n\t\t// there is no local color on any axis and at least one inherited color.\n\t\tconst isElementTextPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementTextColor !== undefined;\n\t\tconst isElementBackgroundPlaceholder =\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementBackgroundColor !== undefined;\n\t\tconst isElementGradientPlaceholder =\n\t\t\telementGradientUserColor === undefined &&\n\t\t\telementGradient !== undefined;\n\t\tconst isElementPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementGradientUserColor === undefined &&\n\t\t\t( elementTextColor !== undefined ||\n\t\t\t\telementBackgroundColor !== undefined ||\n\t\t\t\telementGradient !== undefined );\n\t\tconst hasElementInheritedValue =\n\t\t\telementTextColor !== undefined ||\n\t\t\telementBackgroundColor !== undefined ||\n\t\t\telementGradient !== undefined;\n\n\t\titems.push( {\n\t\t\tkey: name,\n\t\t\tlabel: elementLabel,\n\t\t\thasValue: hasElement,\n\t\t\tresetValue: resetElement,\n\t\t\tisShownByDefault: defaultControls[ name ],\n\t\t\tindicators: supportsBackground\n\t\t\t\t? [\n\t\t\t\t\t\telementTextUserColor ?? elementTextColor,\n\t\t\t\t\t\telementGradientUserColor ??\n\t\t\t\t\t\t\telementGradient ??\n\t\t\t\t\t\t\telementBackgroundUserColor ??\n\t\t\t\t\t\t\telementBackgroundColor,\n\t\t\t\t ]\n\t\t\t\t: [ elementTextUserColor ?? elementTextColor ],\n\t\t\tisPlaceholder: isElementPlaceholder,\n\t\t\thasInheritedValue: hasElementInheritedValue,\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\tuserValue: elementTextUserColor,\n\t\t\t\t\tisPlaceholder: isElementTextPlaceholder,\n\t\t\t\t},\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\tinheritedValue: elementBackgroundColor,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color\n\t\t\t\t\t\t\t\t?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementBackgroundColor,\n\t\t\t\t\t\tuserValue: elementBackgroundUserColor,\n\t\t\t\t\t\tisPlaceholder: isElementBackgroundPlaceholder,\n\t\t\t\t\t},\n\t\t\t\thasGradientColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\tinheritedValue: elementGradient,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementGradient,\n\t\t\t\t\t\tuserValue: elementGradientUserColor,\n\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\tisPlaceholder: isElementGradientPlaceholder,\n\t\t\t\t\t},\n\t\t\t].filter( Boolean ),\n\t\t} );\n\t} );\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\tlabel={ label }\n\t\t>\n\t\t\t{ items.map( ( item ) => {\n\t\t\t\tconst { key, ...restItem } = item;\n\t\t\t\treturn (\n\t\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t{ ...restItem }\n\t\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t\t\tgradients,\n\t\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ children }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,4BAA4B,kBAAkB;AACvD,SAAS,aAAa,eAAe;AACrC,SAAS,UAAU;AACnB,SAAS,+BAA+B;AACxC,OAAO,+BAA+B;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,sCAAsC;AAC/C,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,wCAAwC;AAuG9C,
|
|
4
|
+
"sourcesContent": ["import { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getCSSValueFromRawStyle } from '@wordpress/style-engine';\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport {\n\tuseColorsPerOrigin,\n\tuseGradientsPerOrigin,\n\tuseColorGradientSettings,\n} from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\nimport { isGlobalStylesInheritanceEnabled } from './inheritance';\n\n// Despite the \"ColorPanel\" name, this gates only the element-level color\n// controls (link, heading, button, caption, h1–h6) — surfaced as the\n// \"Elements\" panel in the block inspector and the \"Colors\" screen in\n// Global Styles. Top-level text and background color moved to the\n// Typography and Background panels, so this returns false for blocks\n// whose only color support is text and/or background.\nexport function useHasColorPanel( settings ) {\n\tconst hasLinkPanel = useHasLinkPanel( settings );\n\tconst hasHeadingPanel = useHasHeadingPanel( settings );\n\tconst hasButtonPanel = useHasButtonPanel( settings );\n\tconst hasCaptionPanel = useHasCaptionPanel( settings );\n\n\treturn hasLinkPanel || hasHeadingPanel || hasButtonPanel || hasCaptionPanel;\n}\n\nexport function useHasTextPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.text &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasLinkPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.link &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasCaptionPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.caption &&\n\t\t( colors?.length > 0 || settings?.color?.custom )\n\t);\n}\n\nexport function useHasHeadingPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.heading &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasButtonPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.button &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function useHasBackgroundColorPanel( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\treturn (\n\t\tsettings?.color?.background &&\n\t\t( colors?.length > 0 ||\n\t\t\tsettings?.color?.custom ||\n\t\t\tgradients?.length > 0 ||\n\t\t\tsettings?.color?.customGradient )\n\t);\n}\n\nexport function ColorToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\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={ label || __( 'Elements' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\theadingLevel={ 3 }\n\t\t\tclassName=\"color-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"color-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tlink: true,\n\theading: true,\n\tbutton: true,\n\tcaption: true,\n};\n\nexport default function ColorPanel( {\n\tas: Wrapper = ColorToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tlabel,\n\tchildren,\n\tcontrastWarning,\n\tadditionalElements,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tallColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\t// When an inherited preset isn't in the panel's palette, `decodeValue`\n\t// returns the raw `var:preset|…` token rather than a paintable colour.\n\t// Fall back to its CSS custom property so the swatch still renders.\n\tconst decodeInheritedColor = ( rawValue ) =>\n\t\tgetCSSValueFromRawStyle( decodeValue( rawValue ) );\n\n\t// Links\n\tconst showLinkPanel = useHasLinkPanel( settings );\n\tconst linkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.color?.text\n\t);\n\tconst userLinkColor = decodeValue( value?.elements?.link?.color?.text );\n\tconst setLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hoverLinkColor = decodeInheritedColor(\n\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst userHoverLinkColor = decodeValue(\n\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text\n\t);\n\tconst setHoverLinkColor = ( newColor, newSlug ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t\t)\n\t\t);\n\t};\n\tconst hasLink = () => !! userLinkColor || !! userHoverLinkColor;\n\tconst resetLink = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'elements', 'link', ':hover', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably(\n\t\t\tnewValue,\n\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\tundefined\n\t\t);\n\t\tonChange( newValue );\n\t};\n\n\tconst showCaptionPanel = useHasCaptionPanel( settings );\n\tconst showButtonPanel = useHasButtonPanel( settings );\n\tconst showHeadingPanel = useHasHeadingPanel( settings );\n\n\t// Elements\n\tconst elements = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tname: 'caption',\n\t\t\t\tlabel: __( 'Captions' ),\n\t\t\t\tshowPanel: showCaptionPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'button',\n\t\t\t\tlabel: __( 'Button' ),\n\t\t\t\tshowPanel: showButtonPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'heading',\n\t\t\t\tlabel: __( 'Heading' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h1',\n\t\t\t\tlabel: __( 'H1' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h2',\n\t\t\t\tlabel: __( 'H2' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h3',\n\t\t\t\tlabel: __( 'H3' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h4',\n\t\t\t\tlabel: __( 'H4' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h5',\n\t\t\t\tlabel: __( 'H5' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'h6',\n\t\t\t\tlabel: __( 'H6' ),\n\t\t\t\tshowPanel: showHeadingPanel,\n\t\t\t},\n\t\t\t...( additionalElements?.map( ( element ) => ( {\n\t\t\t\t...element,\n\t\t\t\tshowPanel: hasSolidColors || hasGradientColors,\n\t\t\t} ) ) ?? [] ),\n\t\t],\n\t\t[\n\t\t\tadditionalElements,\n\t\t\thasGradientColors,\n\t\t\thasSolidColors,\n\t\t\tshowCaptionPanel,\n\t\t\tshowButtonPanel,\n\t\t\tshowHeadingPanel,\n\t\t]\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\telements: {\n\t\t\t\t\t...previousValue?.elements,\n\t\t\t\t\tlink: {\n\t\t\t\t\t\t...previousValue?.elements?.link,\n\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t':hover': {\n\t\t\t\t\t\t\tcolor: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t...elements.reduce( ( acc, element ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[ element.name ]: {\n\t\t\t\t\t\t\t\t...previousValue?.elements?.[ element.name ],\n\t\t\t\t\t\t\t\tcolor: undefined,\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},\n\t\t\t};\n\t\t},\n\t\t[ elements ]\n\t);\n\n\tconst items = [\n\t\tshowLinkPanel && {\n\t\t\tkey: 'link',\n\t\t\tlabel: __( 'Link' ),\n\t\t\thasValue: hasLink,\n\t\t\tresetValue: resetLink,\n\t\t\tisShownByDefault: defaultControls.link,\n\t\t\tindicators: [\n\t\t\t\tuserLinkColor ?? linkColor,\n\t\t\t\tuserHoverLinkColor ?? hoverLinkColor,\n\t\t\t],\n\t\t\tisPlaceholder:\n\t\t\t\tuserLinkColor === undefined &&\n\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t( linkColor !== undefined || hoverLinkColor !== undefined ),\n\t\t\thasInheritedValue:\n\t\t\t\tlinkColor !== undefined || hoverLinkColor !== undefined,\n\t\t\tcontrastWarning,\n\t\t\ttabs: [\n\t\t\t\t{\n\t\t\t\t\tkey: 'link',\n\t\t\t\t\tlabel: __( 'Default' ),\n\t\t\t\t\tinheritedValue: linkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setLinkColor,\n\t\t\t\t\tuserValue: userLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserLinkColor === undefined && linkColor !== undefined,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: 'hover',\n\t\t\t\t\tlabel: __( 'Hover' ),\n\t\t\t\t\tinheritedValue: hoverLinkColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.link?.[ ':hover' ]?.color\n\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.link?.[ ':hover' ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setHoverLinkColor,\n\t\t\t\t\tuserValue: userHoverLinkColor,\n\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\tuserHoverLinkColor === undefined &&\n\t\t\t\t\t\thoverLinkColor !== undefined,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t].filter( Boolean );\n\n\telements.forEach( ( { name, label: elementLabel, showPanel } ) => {\n\t\tif ( ! showPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elementBackgroundColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradient = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextColor = decodeInheritedColor(\n\t\t\tinheritedValue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst elementBackgroundUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.background\n\t\t);\n\t\tconst elementGradientUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.gradient\n\t\t);\n\t\tconst elementTextUserColor = decodeValue(\n\t\t\tvalue?.elements?.[ name ]?.color?.text\n\t\t);\n\t\tconst hasElement = () =>\n\t\t\t!! (\n\t\t\t\telementTextUserColor ||\n\t\t\t\telementBackgroundUserColor ||\n\t\t\t\telementGradientUserColor\n\t\t\t);\n\t\tconst resetElement = () => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tundefined\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tnewValue.elements[ name ].color.text = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\n\t\tconst setElementTextColor = ( newTextColor, newSlug ) => {\n\t\t\tonChange(\n\t\t\t\tsetImmutably(\n\t\t\t\t\tvalue,\n\t\t\t\t\t[ 'elements', name, 'color', 'text' ],\n\t\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\t\tallColors,\n\t\t\t\t\t\tnewTextColor,\n\t\t\t\t\t\tnewSlug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tconst setElementBackgroundColor = ( newBackgroundColor, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'background' ],\n\t\t\t\tencodeColorValueWithPalette(\n\t\t\t\t\tallColors,\n\t\t\t\t\tnewBackgroundColor,\n\t\t\t\t\tnewSlug\n\t\t\t\t)\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.gradient = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\tconst setElementGradient = ( newGradient, newSlug ) => {\n\t\t\tconst newValue = setImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'elements', name, 'color', 'gradient' ],\n\t\t\t\tencodeGradientValue( newGradient, newSlug )\n\t\t\t);\n\t\t\tnewValue.elements[ name ].color.background = undefined;\n\t\t\tonChange( newValue );\n\t\t};\n\t\t// Background color is not supported for `caption`\n\t\t// as there isn't yet a way to set padding for the element.\n\t\tconst supportsBackground = name !== 'caption';\n\n\t\t// Per-tab placeholder flags. The item-level placeholder is active when\n\t\t// there is no local color on any axis and at least one inherited color.\n\t\tconst isElementTextPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementTextColor !== undefined;\n\t\tconst isElementBackgroundPlaceholder =\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementBackgroundColor !== undefined;\n\t\tconst isElementGradientPlaceholder =\n\t\t\telementGradientUserColor === undefined &&\n\t\t\telementGradient !== undefined;\n\t\tconst isElementPlaceholder =\n\t\t\telementTextUserColor === undefined &&\n\t\t\telementBackgroundUserColor === undefined &&\n\t\t\telementGradientUserColor === undefined &&\n\t\t\t( elementTextColor !== undefined ||\n\t\t\t\telementBackgroundColor !== undefined ||\n\t\t\t\telementGradient !== undefined );\n\t\tconst hasElementInheritedValue =\n\t\t\telementTextColor !== undefined ||\n\t\t\telementBackgroundColor !== undefined ||\n\t\t\telementGradient !== undefined;\n\n\t\titems.push( {\n\t\t\tkey: name,\n\t\t\tlabel: elementLabel,\n\t\t\thasValue: hasElement,\n\t\t\tresetValue: resetElement,\n\t\t\tisShownByDefault: defaultControls[ name ],\n\t\t\tindicators: supportsBackground\n\t\t\t\t? [\n\t\t\t\t\t\telementTextUserColor ?? elementTextColor,\n\t\t\t\t\t\telementGradientUserColor ??\n\t\t\t\t\t\t\telementGradient ??\n\t\t\t\t\t\t\telementBackgroundUserColor ??\n\t\t\t\t\t\t\telementBackgroundColor,\n\t\t\t\t ]\n\t\t\t\t: [ elementTextUserColor ?? elementTextColor ],\n\t\t\tisPlaceholder: isElementPlaceholder,\n\t\t\thasInheritedValue: hasElementInheritedValue,\n\t\t\ttabs: [\n\t\t\t\thasSolidColors && {\n\t\t\t\t\tkey: 'text',\n\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\tinheritedValue: elementTextColor,\n\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.text,\n\t\t\t\t\t\t'color'\n\t\t\t\t\t),\n\t\t\t\t\tsetValue: setElementTextColor,\n\t\t\t\t\tuserValue: elementTextUserColor,\n\t\t\t\t\tisPlaceholder: isElementTextPlaceholder,\n\t\t\t\t},\n\t\t\t\thasSolidColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\tinheritedValue: elementBackgroundColor,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color\n\t\t\t\t\t\t\t\t?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.background,\n\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementBackgroundColor,\n\t\t\t\t\t\tuserValue: elementBackgroundUserColor,\n\t\t\t\t\t\tisPlaceholder: isElementBackgroundPlaceholder,\n\t\t\t\t\t},\n\t\t\t\thasGradientColors &&\n\t\t\t\t\tsupportsBackground && {\n\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\tinheritedValue: elementGradient,\n\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\tinheritedValue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\tvalue?.elements?.[ name ]?.color?.gradient,\n\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsetValue: setElementGradient,\n\t\t\t\t\t\tuserValue: elementGradientUserColor,\n\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\tisPlaceholder: isElementGradientPlaceholder,\n\t\t\t\t\t},\n\t\t\t].filter( Boolean ),\n\t\t} );\n\t} );\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\tlabel={ label }\n\t\t>\n\t\t\t{ items.map( ( item ) => {\n\t\t\t\tconst { key, ...restItem } = item;\n\t\t\t\treturn (\n\t\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t{ ...restItem }\n\t\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\t\tcolors,\n\t\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t\t\tgradients,\n\t\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ children }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -224,6 +224,7 @@ function DimensionsPanel({
|
|
|
224
224
|
// Special case because the layout controls are not part of the dimensions panel
|
|
225
225
|
// in global styles but not in block inspector.
|
|
226
226
|
includeLayoutControls = false,
|
|
227
|
+
allowAxialBlockGap = true,
|
|
227
228
|
styleState = DEFAULT_BLOCK_STYLE_STATE,
|
|
228
229
|
showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled()
|
|
229
230
|
}) {
|
|
@@ -374,12 +375,14 @@ function DimensionsPanel({
|
|
|
374
375
|
const onMouseOverMargin = () => onVisualize("margin");
|
|
375
376
|
const showGapControl = hasGap(settings);
|
|
376
377
|
const gapSides = Array.isArray(settings?.spacing?.blockGap) ? settings?.spacing?.blockGap : settings?.spacing?.blockGap?.sides;
|
|
377
|
-
const isAxialGap = gapSides && gapSides.some((side) => AXIAL_SIDES.includes(side));
|
|
378
|
+
const isAxialGap = allowAxialBlockGap && gapSides && gapSides.some((side) => AXIAL_SIDES.includes(side));
|
|
378
379
|
const localGapRaw = decodeValue(value?.spacing?.blockGap);
|
|
379
380
|
const inheritedGapRaw = decodeValue(inheritedValue?.spacing?.blockGap);
|
|
381
|
+
const localGapForSingleInput = !isAxialGap && typeof localGapRaw === "object" ? localGapRaw?.top : localGapRaw;
|
|
382
|
+
const inheritedGapForSingleInput = !isAxialGap && typeof inheritedGapRaw === "object" ? inheritedGapRaw?.top : inheritedGapRaw;
|
|
380
383
|
const gapRawForDisplay = hasValue(value?.spacing?.blockGap) ? localGapRaw : inheritedGapRaw;
|
|
381
384
|
const gapValues = splitGapValue(gapRawForDisplay, isAxialGap);
|
|
382
|
-
const isGapPlaceholder = !hasValue(value?.spacing?.blockGap) && typeof
|
|
385
|
+
const isGapPlaceholder = !hasValue(value?.spacing?.blockGap) && typeof inheritedGapForSingleInput === "string" && inheritedGapForSingleInput !== "";
|
|
383
386
|
const setGapValue = (newGapValue) => {
|
|
384
387
|
onChange(
|
|
385
388
|
setImmutably(value, ["spacing", "blockGap"], newGapValue)
|
|
@@ -729,8 +732,8 @@ function DimensionsPanel({
|
|
|
729
732
|
min: 0,
|
|
730
733
|
onChange: setGapValue,
|
|
731
734
|
units,
|
|
732
|
-
value:
|
|
733
|
-
placeholder: isGapPlaceholder ?
|
|
735
|
+
value: localGapForSingleInput ?? void 0,
|
|
736
|
+
placeholder: isGapPlaceholder ? inheritedGapForSingleInput : void 0
|
|
734
737
|
}
|
|
735
738
|
)),
|
|
736
739
|
showSpacingPresetsControl && /* @__PURE__ */ jsx(
|
|
@@ -743,7 +746,8 @@ function DimensionsPanel({
|
|
|
743
746
|
sides: isAxialGap ? gapSides : ["top"],
|
|
744
747
|
values: gapValues,
|
|
745
748
|
allowReset: false
|
|
746
|
-
}
|
|
749
|
+
},
|
|
750
|
+
isAxialGap ? "axial-gap" : "single-gap"
|
|
747
751
|
)
|
|
748
752
|
]
|
|
749
753
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/dimensions-panel.js"],
|
|
4
|
-
"sourcesContent": ["import { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState } from '@wordpress/element';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\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';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\thasPseudoBlockStyleState,\n\thasViewportBlockStyleState,\n} from '../../hooks/block-style-state';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\n/**\n * Determines whether a spacing control (`BoxControl` or `SpacingSizesControl`)\n * renders its linked/unlink toggle button, which the local-override reset dot\n * offsets itself against.\n *\n * @param {string[]|undefined} sides Configurable sides for the control.\n * @param {boolean} isPresetsControl Whether the presets-based\n * `SpacingSizesControl` is used.\n *\n * @return {boolean} Whether the toggle button is rendered.\n */\nfunction hasSpacingToggle( sides, isPresetsControl ) {\n\tif ( sides?.length === 1 ) {\n\t\treturn false;\n\t}\n\tif ( isPresetsControl ) {\n\t\tconst hasOnlyAxialSides =\n\t\t\tsides?.includes( 'horizontal' ) &&\n\t\t\tsides?.includes( 'vertical' ) &&\n\t\t\tsides?.length === 2;\n\t\treturn ! hasOnlyAxialSides;\n\t}\n\treturn true;\n}\n\nexport function useHasDimensionsPanel(\n\tsettings,\n\tstyleState = DEFAULT_BLOCK_STYLE_STATE\n) {\n\treturn (\n\t\thasContentSize( settings ) ||\n\t\thasWideSize( settings ) ||\n\t\thasPadding( settings ) ||\n\t\thasMargin( settings ) ||\n\t\thasGap( settings ) ||\n\t\thasHeight( settings ) ||\n\t\thasMinHeight( settings ) ||\n\t\thasMinWidth( settings ) ||\n\t\thasWidth( settings ) ||\n\t\thasAspectRatio( settings, styleState ) ||\n\t\thasChildLayout( settings, styleState )\n\t);\n}\n\nfunction hasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction hasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction hasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction hasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction hasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction hasHeight( settings ) {\n\treturn settings?.dimensions?.height;\n}\n\nfunction hasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction hasMinWidth( settings ) {\n\treturn settings?.dimensions?.minWidth;\n}\n\nfunction hasWidth( settings ) {\n\treturn settings?.dimensions?.width;\n}\n\nfunction hasAspectRatio( settings, styleState = DEFAULT_BLOCK_STYLE_STATE ) {\n\treturn (\n\t\t! hasPseudoBlockStyleState( styleState ) &&\n\t\tsettings?.dimensions?.aspectRatio\n\t);\n}\n\nfunction hasChildLayout( settings, styleState = DEFAULT_BLOCK_STYLE_STATE ) {\n\tif ( hasPseudoBlockStyleState( styleState ) ) {\n\t\treturn false;\n\t}\n\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 hasSpacingPresets( 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\nconst EMPTY_VALUES = [ undefined, null, '' ];\n\nfunction hasValue( value ) {\n\treturn ! EMPTY_VALUES.includes( value );\n}\n\n/**\n * Extracts the numeric quantity from a raw CSS value so it can be used as a\n * unit-control placeholder. The control's unit selector already reflects the\n * inherited unit, so the placeholder must contain only the number (e.g.\n * `120px` -> `120`) rather than the full unit string.\n *\n * @param {string|number|undefined} rawValue Inherited value to parse.\n * @return {number|undefined} The numeric quantity, or `undefined` when absent.\n */\nfunction getNumericPlaceholder( rawValue ) {\n\tif ( ! hasValue( rawValue ) ) {\n\t\treturn undefined;\n\t}\n\tconst [ quantity ] = parseQuantityAndUnitFromRawValue( rawValue );\n\treturn quantity;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( hasValue( 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/**\n * Returns the common side value of a sides object (top/right/bottom/left)\n * when all four sides are defined and equal; otherwise returns undefined.\n *\n * Used to derive a placeholder string for BoxControl's\n * `inputProps.placeholder` from an inherited shorthand or\n * shorthand-equivalent split-side value. When the inherited sides differ\n * from each other, the placeholder is suppressed because BoxControl's\n * `inputProps.placeholder` cannot vary per side.\n *\n * @param {Object|string|undefined} sidesValue The inherited sides shape.\n * @return {string|undefined} The common value, or undefined.\n */\nfunction getCommonSidesValue( sidesValue ) {\n\tif ( ! hasValue( sidesValue ) ) {\n\t\treturn undefined;\n\t}\n\tif ( typeof sidesValue === 'string' ) {\n\t\treturn sidesValue !== '' ? sidesValue : undefined;\n\t}\n\tif ( typeof sidesValue !== 'object' ) {\n\t\treturn undefined;\n\t}\n\tconst sideKeys = [ 'top', 'right', 'bottom', 'left' ];\n\tconst values = sideKeys.map( ( k ) => sidesValue[ k ] );\n\tconst allDefined = values.every( hasValue );\n\tif ( ! allDefined ) {\n\t\treturn undefined;\n\t}\n\tconst first = values[ 0 ];\n\treturn values.every( ( v ) => v === first ) ? first : undefined;\n}\n\n/**\n * Returns whether a sides object (top/right/bottom/left) or shorthand string\n * holds any value on at least one side.\n *\n * Unlike `getCommonSidesValue`, this does not require every side to be defined\n * or equal. It is used to drive the inherited-from-Global-Styles label\n * treatment and the local-override dot, which should reflect the mere presence\n * of an inherited value regardless of whether the individual sides match (a\n * constraint that only applies to BoxControl's single-string placeholder).\n *\n * @param {Object|string|undefined} sidesValue The sides shape.\n * @return {boolean} Whether any side holds a value.\n */\nfunction hasAnySideValue( sidesValue ) {\n\tif ( ! hasValue( sidesValue ) ) {\n\t\treturn false;\n\t}\n\tif ( typeof sidesValue === 'string' ) {\n\t\treturn sidesValue !== '';\n\t}\n\tif ( typeof sidesValue !== 'object' ) {\n\t\treturn false;\n\t}\n\treturn [ 'top', 'right', 'bottom', 'left' ].some( ( side ) =>\n\t\thasValue( sidesValue[ side ] )\n\t);\n}\n\nfunction splitGapValue( value, isAxialGap ) {\n\tif ( ! hasValue( 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\tminWidth: 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\tstyleState = DEFAULT_BLOCK_STYLE_STATE,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\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\t// Always keep the layout className (e.g. `single-column`); only the\n\t// inheritance treatment is gated on `showInheritanceLabelIndicators`.\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, className ) =>\n\t\tgetInheritanceProps(\n\t\t\tshowInheritanceLabelIndicators && isInherited,\n\t\t\tshowInheritanceLabelIndicators && hasLocalOverride,\n\t\t\tclassName\n\t\t);\n\n\tconst showSpacingPresetsControl = hasSpacingPresets( 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\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\tminWidth: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\thasContentSize( settings ) && includeLayoutControls;\n\tconst localContentSizeValue = decodeValue( value?.layout?.contentSize );\n\tconst inheritedContentSizeValue = decodeValue(\n\t\tinheritedValue?.layout?.contentSize\n\t);\n\tconst isContentSizePlaceholder =\n\t\t! hasValue( value?.layout?.contentSize ) &&\n\t\thasValue( inheritedContentSizeValue );\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\thasValue( newValue ) ? newValue : undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () =>\n\t\thasValue( value?.layout?.contentSize );\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\thasWideSize( settings ) && includeLayoutControls;\n\tconst localWideSizeValue = decodeValue( value?.layout?.wideSize );\n\tconst inheritedWideSizeValue = decodeValue(\n\t\tinheritedValue?.layout?.wideSize\n\t);\n\tconst isWideSizePlaceholder =\n\t\t! hasValue( value?.layout?.wideSize ) &&\n\t\thasValue( inheritedWideSizeValue );\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\thasValue( newValue ) ? newValue : undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => hasValue( value?.layout?.wideSize );\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = hasPadding( settings );\n\tconst inheritedPaddingValues = splitStyleValue(\n\t\tdecodeValue( inheritedValue?.spacing?.padding )\n\t);\n\t// Local-only values feed BoxControl's `values` (with the inherited\n\t// surfaced via the at-rest placeholder).\n\tconst localPaddingValues = splitStyleValue(\n\t\tdecodeValue( value?.spacing?.padding )\n\t);\n\t// Merged local-then-inherited values feed SpacingSizesControl's\n\t// `values` because the preset slider has no placeholder slot — the\n\t// active chip itself is the at-rest cue.\n\tconst paddingValues = hasValue( value?.spacing?.padding )\n\t\t? localPaddingValues\n\t\t: inheritedPaddingValues;\n\tconst inheritedPaddingPlaceholder = getCommonSidesValue(\n\t\tinheritedPaddingValues\n\t);\n\tconst isPaddingPlaceholder =\n\t\t! hasValue( value?.spacing?.padding ) &&\n\t\tinheritedPaddingPlaceholder !== undefined;\n\t// Label/dot inheritance treatment is independent of whether the inherited\n\t// sides share a common value — it only reflects the presence of an\n\t// inherited value (the all-sides-equal constraint applies solely to the\n\t// single-string BoxControl placeholder above).\n\tconst hasInheritedPadding = hasAnySideValue( inheritedPaddingValues );\n\tconst isPaddingInherited =\n\t\t! hasValue( value?.spacing?.padding ) && hasInheritedPadding;\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\thasValue( 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 = hasMargin( settings );\n\tconst inheritedMarginValues = splitStyleValue(\n\t\tdecodeValue( inheritedValue?.spacing?.margin )\n\t);\n\tconst localMarginValues = splitStyleValue(\n\t\tdecodeValue( value?.spacing?.margin )\n\t);\n\tconst marginValues = hasValue( value?.spacing?.margin )\n\t\t? localMarginValues\n\t\t: inheritedMarginValues;\n\tconst inheritedMarginPlaceholder = getCommonSidesValue(\n\t\tinheritedMarginValues\n\t);\n\tconst isMarginPlaceholder =\n\t\t! hasValue( value?.spacing?.margin ) &&\n\t\tinheritedMarginPlaceholder !== undefined;\n\tconst hasInheritedMargin = hasAnySideValue( inheritedMarginValues );\n\tconst isMarginInherited =\n\t\t! hasValue( value?.spacing?.margin ) && hasInheritedMargin;\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\thasValue( 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 = hasGap( 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 localGapRaw = decodeValue( value?.spacing?.blockGap );\n\tconst inheritedGapRaw = decodeValue( inheritedValue?.spacing?.blockGap );\n\t// Merge local-then-inherited so SpacingSizesControl's chip slider and\n\t// the axial-gap BoxControl reflect the local value when set and fall\n\t// back to the inherited value at rest.\n\tconst gapRawForDisplay = hasValue( value?.spacing?.blockGap )\n\t\t? localGapRaw\n\t\t: inheritedGapRaw;\n\tconst gapValues = splitGapValue( gapRawForDisplay, isAxialGap );\n\t// Placeholder state for the single-input (non-axial, non-preset) blockGap\n\t// path. The axial / preset paths render compound or chip controls without\n\t// a native placeholder slot — the displayed `values` themselves are the\n\t// at-rest cue for those.\n\tconst isGapPlaceholder =\n\t\t! hasValue( value?.spacing?.blockGap ) &&\n\t\ttypeof inheritedGapRaw === 'string' &&\n\t\tinheritedGapRaw !== '';\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 ( ! hasValue( 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 = () => hasValue( value?.spacing?.blockGap );\n\n\t// Min Height\n\tconst showMinHeightControl = hasMinHeight( settings );\n\tconst localMinHeightValue = decodeValue( value?.dimensions?.minHeight );\n\tconst inheritedMinHeightValue = decodeValue(\n\t\tinheritedValue?.dimensions?.minHeight\n\t);\n\tconst isMinHeightPlaceholder =\n\t\t! hasValue( value?.dimensions?.minHeight ) &&\n\t\thasValue( inheritedMinHeightValue );\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 = () => hasValue( value?.dimensions?.minHeight );\n\n\t// Height\n\tconst showHeightControl = hasHeight( settings );\n\tconst localHeightValue = decodeValue( value?.dimensions?.height );\n\tconst inheritedHeightValue = decodeValue(\n\t\tinheritedValue?.dimensions?.height\n\t);\n\tconst isHeightPlaceholder =\n\t\t! hasValue( value?.dimensions?.height ) &&\n\t\thasValue( inheritedHeightValue );\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 = () => hasValue( value?.dimensions?.height );\n\n\t// Min Width\n\tconst showMinWidthControl = hasMinWidth( settings );\n\tconst localMinWidthValue = decodeValue( value?.dimensions?.minWidth );\n\tconst inheritedMinWidthValue = decodeValue(\n\t\tinheritedValue?.dimensions?.minWidth\n\t);\n\tconst isMinWidthPlaceholder =\n\t\t! hasValue( value?.dimensions?.minWidth ) &&\n\t\thasValue( inheritedMinWidthValue );\n\tconst setMinWidthValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'dimensions', 'minWidth' ], newValue )\n\t\t);\n\t};\n\tconst resetMinWidthValue = () => {\n\t\tsetMinWidthValue( undefined );\n\t};\n\tconst hasMinWidthValue = () => hasValue( value?.dimensions?.minWidth );\n\n\t// Width\n\tconst showWidthControl = hasWidth( settings );\n\tconst localWidthValue = decodeValue( value?.dimensions?.width );\n\tconst inheritedWidthValue = decodeValue(\n\t\tinheritedValue?.dimensions?.width\n\t);\n\tconst isWidthPlaceholder =\n\t\t! hasValue( value?.dimensions?.width ) &&\n\t\thasValue( inheritedWidthValue );\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 = () => hasValue( value?.dimensions?.width );\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = hasAspectRatio( settings, styleState );\n\tconst localAspectRatioValue = decodeValue( value?.dimensions?.aspectRatio );\n\tconst inheritedAspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst aspectRatioValue = localAspectRatioValue ?? inheritedAspectRatioValue;\n\tconst isAspectRatioPlaceholder =\n\t\t! hasValue( value?.dimensions?.aspectRatio ) &&\n\t\thasValue( inheritedAspectRatioValue );\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 = () =>\n\t\thasValue( value?.dimensions?.aspectRatio );\n\n\t// Child Layout. There is no Global Styles inheritance model for the\n\t// child-layout sub-keys (`selfStretch`, `flexSize`, `columnStart`,\n\t// `rowStart`, `columnSpan`, `rowSpan`); they are per-block attributes\n\t// only. Render the local value directly so user-set overrides are\n\t// reflected in the control rather than washed out by a misshapen\n\t// inherited layout payload.\n\tconst showChildLayoutControl = hasChildLayout( settings, styleState );\n\tconst childLayout = value?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\t...newChildLayout,\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<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisContentSizePlaceholder,\n\t\t\t\t\t\thasUserSetContentSizeValue() &&\n\t\t\t\t\t\t\tinheritedContentSizeValue !== undefined\n\t\t\t\t\t) }\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\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// (e.g. \"620px\" keeps its unit rather than the value\n\t\t\t\t\t\t// string sitting greyed-out behind a default px unit). It\n\t\t\t\t\t\t// is only written to local on user change.\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tlocalContentSizeValue ?? inheritedContentSizeValue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisContentSizePlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedContentSizeValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisWideSizePlaceholder,\n\t\t\t\t\t\thasUserSetWideSizeValue() &&\n\t\t\t\t\t\t\tinheritedWideSizeValue !== undefined\n\t\t\t\t\t) }\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\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// rather than the value string sitting greyed-out behind\n\t\t\t\t\t\t// a default px unit. It is only written to local on user\n\t\t\t\t\t\t// change.\n\t\t\t\t\t\tvalue={ localWideSizeValue ?? inheritedWideSizeValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisWideSizePlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedWideSizeValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\thasInlineEndToggle={ hasSpacingToggle(\n\t\t\t\t\t\tpaddingSides,\n\t\t\t\t\t\tshowSpacingPresetsControl\n\t\t\t\t\t) }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisPaddingInherited,\n\t\t\t\t\t\thasPaddingValue() && hasInheritedPadding,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t}\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\tvalues={ localPaddingValues }\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\tplaceholder: isPaddingPlaceholder\n\t\t\t\t\t\t\t\t\t? inheritedPaddingPlaceholder\n\t\t\t\t\t\t\t\t\t: undefined,\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\thasInlineEndToggle={ hasSpacingToggle(\n\t\t\t\t\t\tmarginSides,\n\t\t\t\t\t\tshowSpacingPresetsControl\n\t\t\t\t\t) }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMarginInherited,\n\t\t\t\t\t\thasMarginValue() && hasInheritedMargin,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t}\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\tvalues={ localMarginValues }\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\tplaceholder: isMarginPlaceholder\n\t\t\t\t\t\t\t\t\t? inheritedMarginPlaceholder\n\t\t\t\t\t\t\t\t\t: undefined,\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\thasInlineEndToggle={ isAxialGap }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisGapPlaceholder,\n\t\t\t\t\t\thasGapValue() && inheritedGapRaw !== undefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t\t}\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\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\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={ localGapRaw ?? undefined }\n\t\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\t\tisGapPlaceholder\n\t\t\t\t\t\t\t\t\t\t? inheritedGapRaw\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ 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</InheritanceToolsPanelItem>\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\tshowGridSpanDefaults={\n\t\t\t\t\t\t! hasViewportBlockStyleState( styleState )\n\t\t\t\t\t}\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<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMinHeightPlaceholder,\n\t\t\t\t\t\thasMinHeightValue() &&\n\t\t\t\t\t\t\tinheritedMinHeightValue !== undefined\n\t\t\t\t\t) }\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\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// (e.g. \"120px\" keeps its unit rather than the value\n\t\t\t\t\t\t// string sitting behind a default px unit). It is only\n\t\t\t\t\t\t// written to local on user change.\n\t\t\t\t\t\tvalue={ localMinHeightValue ?? inheritedMinHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisMinHeightPlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedMinHeightValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMinWidthControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMinWidthPlaceholder,\n\t\t\t\t\t\thasMinWidthValue() &&\n\t\t\t\t\t\t\tinheritedMinWidthValue !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\thasValue={ hasMinWidthValue }\n\t\t\t\t\tlabel={ __( 'Minimum width' ) }\n\t\t\t\t\tonDeselect={ resetMinWidthValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minWidth ?? DEFAULT_CONTROLS.minWidth\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 width' ) }\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// rather than the value string sitting behind a default\n\t\t\t\t\t\t// px unit. It is only written to local on user change.\n\t\t\t\t\t\tvalue={ localMinWidthValue ?? inheritedMinWidthValue }\n\t\t\t\t\t\tonChange={ setMinWidthValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisMinWidthPlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedMinWidthValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showHeightControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisHeightPlaceholder,\n\t\t\t\t\t\thasHeightValue() && inheritedHeightValue !== undefined\n\t\t\t\t\t) }\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={ localHeightValue }\n\t\t\t\t\t\tonChange={ setHeightValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisHeightPlaceholder\n\t\t\t\t\t\t\t\t? inheritedHeightValue\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWidthControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisWidthPlaceholder,\n\t\t\t\t\t\thasWidthValue() && inheritedWidthValue !== undefined\n\t\t\t\t\t) }\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={ localWidthValue }\n\t\t\t\t\t\tonChange={ setWidthValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisWidthPlaceholder ? inheritedWidthValue : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisAspectRatioPlaceholder,\n\t\t\t\t\t\thasAspectRatioValue() &&\n\t\t\t\t\t\t\tinheritedAspectRatioValue !== undefined\n\t\t\t\t\t) }\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": ["import { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\tBoxControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { Icon, alignNone, stretchWide } from '@wordpress/icons';\nimport { useCallback, useState } from '@wordpress/element';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\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';\nimport {\n\tDEFAULT_BLOCK_STYLE_STATE,\n\thasPseudoBlockStyleState,\n\thasViewportBlockStyleState,\n} from '../../hooks/block-style-state';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst AXIAL_SIDES = [ 'horizontal', 'vertical' ];\n\n/**\n * Determines whether a spacing control (`BoxControl` or `SpacingSizesControl`)\n * renders its linked/unlink toggle button, which the local-override reset dot\n * offsets itself against.\n *\n * @param {string[]|undefined} sides Configurable sides for the control.\n * @param {boolean} isPresetsControl Whether the presets-based\n * `SpacingSizesControl` is used.\n *\n * @return {boolean} Whether the toggle button is rendered.\n */\nfunction hasSpacingToggle( sides, isPresetsControl ) {\n\tif ( sides?.length === 1 ) {\n\t\treturn false;\n\t}\n\tif ( isPresetsControl ) {\n\t\tconst hasOnlyAxialSides =\n\t\t\tsides?.includes( 'horizontal' ) &&\n\t\t\tsides?.includes( 'vertical' ) &&\n\t\t\tsides?.length === 2;\n\t\treturn ! hasOnlyAxialSides;\n\t}\n\treturn true;\n}\n\nexport function useHasDimensionsPanel(\n\tsettings,\n\tstyleState = DEFAULT_BLOCK_STYLE_STATE\n) {\n\treturn (\n\t\thasContentSize( settings ) ||\n\t\thasWideSize( settings ) ||\n\t\thasPadding( settings ) ||\n\t\thasMargin( settings ) ||\n\t\thasGap( settings ) ||\n\t\thasHeight( settings ) ||\n\t\thasMinHeight( settings ) ||\n\t\thasMinWidth( settings ) ||\n\t\thasWidth( settings ) ||\n\t\thasAspectRatio( settings, styleState ) ||\n\t\thasChildLayout( settings, styleState )\n\t);\n}\n\nfunction hasContentSize( settings ) {\n\treturn settings?.layout?.contentSize;\n}\n\nfunction hasWideSize( settings ) {\n\treturn settings?.layout?.wideSize;\n}\n\nfunction hasPadding( settings ) {\n\treturn settings?.spacing?.padding;\n}\n\nfunction hasMargin( settings ) {\n\treturn settings?.spacing?.margin;\n}\n\nfunction hasGap( settings ) {\n\treturn settings?.spacing?.blockGap;\n}\n\nfunction hasHeight( settings ) {\n\treturn settings?.dimensions?.height;\n}\n\nfunction hasMinHeight( settings ) {\n\treturn settings?.dimensions?.minHeight;\n}\n\nfunction hasMinWidth( settings ) {\n\treturn settings?.dimensions?.minWidth;\n}\n\nfunction hasWidth( settings ) {\n\treturn settings?.dimensions?.width;\n}\n\nfunction hasAspectRatio( settings, styleState = DEFAULT_BLOCK_STYLE_STATE ) {\n\treturn (\n\t\t! hasPseudoBlockStyleState( styleState ) &&\n\t\tsettings?.dimensions?.aspectRatio\n\t);\n}\n\nfunction hasChildLayout( settings, styleState = DEFAULT_BLOCK_STYLE_STATE ) {\n\tif ( hasPseudoBlockStyleState( styleState ) ) {\n\t\treturn false;\n\t}\n\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 hasSpacingPresets( 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\nconst EMPTY_VALUES = [ undefined, null, '' ];\n\nfunction hasValue( value ) {\n\treturn ! EMPTY_VALUES.includes( value );\n}\n\n/**\n * Extracts the numeric quantity from a raw CSS value so it can be used as a\n * unit-control placeholder. The control's unit selector already reflects the\n * inherited unit, so the placeholder must contain only the number (e.g.\n * `120px` -> `120`) rather than the full unit string.\n *\n * @param {string|number|undefined} rawValue Inherited value to parse.\n * @return {number|undefined} The numeric quantity, or `undefined` when absent.\n */\nfunction getNumericPlaceholder( rawValue ) {\n\tif ( ! hasValue( rawValue ) ) {\n\t\treturn undefined;\n\t}\n\tconst [ quantity ] = parseQuantityAndUnitFromRawValue( rawValue );\n\treturn quantity;\n}\n\nfunction splitStyleValue( value ) {\n\t// Check for shorthand value (a string value).\n\tif ( hasValue( 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/**\n * Returns the common side value of a sides object (top/right/bottom/left)\n * when all four sides are defined and equal; otherwise returns undefined.\n *\n * Used to derive a placeholder string for BoxControl's\n * `inputProps.placeholder` from an inherited shorthand or\n * shorthand-equivalent split-side value. When the inherited sides differ\n * from each other, the placeholder is suppressed because BoxControl's\n * `inputProps.placeholder` cannot vary per side.\n *\n * @param {Object|string|undefined} sidesValue The inherited sides shape.\n * @return {string|undefined} The common value, or undefined.\n */\nfunction getCommonSidesValue( sidesValue ) {\n\tif ( ! hasValue( sidesValue ) ) {\n\t\treturn undefined;\n\t}\n\tif ( typeof sidesValue === 'string' ) {\n\t\treturn sidesValue !== '' ? sidesValue : undefined;\n\t}\n\tif ( typeof sidesValue !== 'object' ) {\n\t\treturn undefined;\n\t}\n\tconst sideKeys = [ 'top', 'right', 'bottom', 'left' ];\n\tconst values = sideKeys.map( ( k ) => sidesValue[ k ] );\n\tconst allDefined = values.every( hasValue );\n\tif ( ! allDefined ) {\n\t\treturn undefined;\n\t}\n\tconst first = values[ 0 ];\n\treturn values.every( ( v ) => v === first ) ? first : undefined;\n}\n\n/**\n * Returns whether a sides object (top/right/bottom/left) or shorthand string\n * holds any value on at least one side.\n *\n * Unlike `getCommonSidesValue`, this does not require every side to be defined\n * or equal. It is used to drive the inherited-from-Global-Styles label\n * treatment and the local-override dot, which should reflect the mere presence\n * of an inherited value regardless of whether the individual sides match (a\n * constraint that only applies to BoxControl's single-string placeholder).\n *\n * @param {Object|string|undefined} sidesValue The sides shape.\n * @return {boolean} Whether any side holds a value.\n */\nfunction hasAnySideValue( sidesValue ) {\n\tif ( ! hasValue( sidesValue ) ) {\n\t\treturn false;\n\t}\n\tif ( typeof sidesValue === 'string' ) {\n\t\treturn sidesValue !== '';\n\t}\n\tif ( typeof sidesValue !== 'object' ) {\n\t\treturn false;\n\t}\n\treturn [ 'top', 'right', 'bottom', 'left' ].some( ( side ) =>\n\t\thasValue( sidesValue[ side ] )\n\t);\n}\n\nfunction splitGapValue( value, isAxialGap ) {\n\tif ( ! hasValue( 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\tminWidth: 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\tallowAxialBlockGap = true,\n\tstyleState = DEFAULT_BLOCK_STYLE_STATE,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\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\t// Always keep the layout className (e.g. `single-column`); only the\n\t// inheritance treatment is gated on `showInheritanceLabelIndicators`.\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, className ) =>\n\t\tgetInheritanceProps(\n\t\t\tshowInheritanceLabelIndicators && isInherited,\n\t\t\tshowInheritanceLabelIndicators && hasLocalOverride,\n\t\t\tclassName\n\t\t);\n\n\tconst showSpacingPresetsControl = hasSpacingPresets( 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\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\tminWidth: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\t// Content Width\n\tconst showContentSizeControl =\n\t\thasContentSize( settings ) && includeLayoutControls;\n\tconst localContentSizeValue = decodeValue( value?.layout?.contentSize );\n\tconst inheritedContentSizeValue = decodeValue(\n\t\tinheritedValue?.layout?.contentSize\n\t);\n\tconst isContentSizePlaceholder =\n\t\t! hasValue( value?.layout?.contentSize ) &&\n\t\thasValue( inheritedContentSizeValue );\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\thasValue( newValue ) ? newValue : undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetContentSizeValue = () =>\n\t\thasValue( value?.layout?.contentSize );\n\tconst resetContentSizeValue = () => setContentSizeValue( undefined );\n\n\t// Wide Width\n\tconst showWideSizeControl =\n\t\thasWideSize( settings ) && includeLayoutControls;\n\tconst localWideSizeValue = decodeValue( value?.layout?.wideSize );\n\tconst inheritedWideSizeValue = decodeValue(\n\t\tinheritedValue?.layout?.wideSize\n\t);\n\tconst isWideSizePlaceholder =\n\t\t! hasValue( value?.layout?.wideSize ) &&\n\t\thasValue( inheritedWideSizeValue );\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\thasValue( newValue ) ? newValue : undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasUserSetWideSizeValue = () => hasValue( value?.layout?.wideSize );\n\tconst resetWideSizeValue = () => setWideSizeValue( undefined );\n\n\t// Padding\n\tconst showPaddingControl = hasPadding( settings );\n\tconst inheritedPaddingValues = splitStyleValue(\n\t\tdecodeValue( inheritedValue?.spacing?.padding )\n\t);\n\t// Local-only values feed BoxControl's `values` (with the inherited\n\t// surfaced via the at-rest placeholder).\n\tconst localPaddingValues = splitStyleValue(\n\t\tdecodeValue( value?.spacing?.padding )\n\t);\n\t// Merged local-then-inherited values feed SpacingSizesControl's\n\t// `values` because the preset slider has no placeholder slot — the\n\t// active chip itself is the at-rest cue.\n\tconst paddingValues = hasValue( value?.spacing?.padding )\n\t\t? localPaddingValues\n\t\t: inheritedPaddingValues;\n\tconst inheritedPaddingPlaceholder = getCommonSidesValue(\n\t\tinheritedPaddingValues\n\t);\n\tconst isPaddingPlaceholder =\n\t\t! hasValue( value?.spacing?.padding ) &&\n\t\tinheritedPaddingPlaceholder !== undefined;\n\t// Label/dot inheritance treatment is independent of whether the inherited\n\t// sides share a common value — it only reflects the presence of an\n\t// inherited value (the all-sides-equal constraint applies solely to the\n\t// single-string BoxControl placeholder above).\n\tconst hasInheritedPadding = hasAnySideValue( inheritedPaddingValues );\n\tconst isPaddingInherited =\n\t\t! hasValue( value?.spacing?.padding ) && hasInheritedPadding;\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\thasValue( 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 = hasMargin( settings );\n\tconst inheritedMarginValues = splitStyleValue(\n\t\tdecodeValue( inheritedValue?.spacing?.margin )\n\t);\n\tconst localMarginValues = splitStyleValue(\n\t\tdecodeValue( value?.spacing?.margin )\n\t);\n\tconst marginValues = hasValue( value?.spacing?.margin )\n\t\t? localMarginValues\n\t\t: inheritedMarginValues;\n\tconst inheritedMarginPlaceholder = getCommonSidesValue(\n\t\tinheritedMarginValues\n\t);\n\tconst isMarginPlaceholder =\n\t\t! hasValue( value?.spacing?.margin ) &&\n\t\tinheritedMarginPlaceholder !== undefined;\n\tconst hasInheritedMargin = hasAnySideValue( inheritedMarginValues );\n\tconst isMarginInherited =\n\t\t! hasValue( value?.spacing?.margin ) && hasInheritedMargin;\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\thasValue( 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 = hasGap( 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\tallowAxialBlockGap &&\n\t\tgapSides &&\n\t\tgapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\tconst localGapRaw = decodeValue( value?.spacing?.blockGap );\n\tconst inheritedGapRaw = decodeValue( inheritedValue?.spacing?.blockGap );\n\tconst localGapForSingleInput =\n\t\t! isAxialGap && typeof localGapRaw === 'object'\n\t\t\t? localGapRaw?.top\n\t\t\t: localGapRaw;\n\tconst inheritedGapForSingleInput =\n\t\t! isAxialGap && typeof inheritedGapRaw === 'object'\n\t\t\t? inheritedGapRaw?.top\n\t\t\t: inheritedGapRaw;\n\t// Merge local-then-inherited so SpacingSizesControl's chip slider and\n\t// the axial-gap BoxControl reflect the local value when set and fall\n\t// back to the inherited value at rest.\n\tconst gapRawForDisplay = hasValue( value?.spacing?.blockGap )\n\t\t? localGapRaw\n\t\t: inheritedGapRaw;\n\tconst gapValues = splitGapValue( gapRawForDisplay, isAxialGap );\n\t// Placeholder state for the single-input (non-axial, non-preset) blockGap\n\t// path. The axial / preset paths render compound or chip controls without\n\t// a native placeholder slot — the displayed `values` themselves are the\n\t// at-rest cue for those.\n\tconst isGapPlaceholder =\n\t\t! hasValue( value?.spacing?.blockGap ) &&\n\t\ttypeof inheritedGapForSingleInput === 'string' &&\n\t\tinheritedGapForSingleInput !== '';\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 ( ! hasValue( 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 = () => hasValue( value?.spacing?.blockGap );\n\n\t// Min Height\n\tconst showMinHeightControl = hasMinHeight( settings );\n\tconst localMinHeightValue = decodeValue( value?.dimensions?.minHeight );\n\tconst inheritedMinHeightValue = decodeValue(\n\t\tinheritedValue?.dimensions?.minHeight\n\t);\n\tconst isMinHeightPlaceholder =\n\t\t! hasValue( value?.dimensions?.minHeight ) &&\n\t\thasValue( inheritedMinHeightValue );\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 = () => hasValue( value?.dimensions?.minHeight );\n\n\t// Height\n\tconst showHeightControl = hasHeight( settings );\n\tconst localHeightValue = decodeValue( value?.dimensions?.height );\n\tconst inheritedHeightValue = decodeValue(\n\t\tinheritedValue?.dimensions?.height\n\t);\n\tconst isHeightPlaceholder =\n\t\t! hasValue( value?.dimensions?.height ) &&\n\t\thasValue( inheritedHeightValue );\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 = () => hasValue( value?.dimensions?.height );\n\n\t// Min Width\n\tconst showMinWidthControl = hasMinWidth( settings );\n\tconst localMinWidthValue = decodeValue( value?.dimensions?.minWidth );\n\tconst inheritedMinWidthValue = decodeValue(\n\t\tinheritedValue?.dimensions?.minWidth\n\t);\n\tconst isMinWidthPlaceholder =\n\t\t! hasValue( value?.dimensions?.minWidth ) &&\n\t\thasValue( inheritedMinWidthValue );\n\tconst setMinWidthValue = ( newValue ) => {\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'dimensions', 'minWidth' ], newValue )\n\t\t);\n\t};\n\tconst resetMinWidthValue = () => {\n\t\tsetMinWidthValue( undefined );\n\t};\n\tconst hasMinWidthValue = () => hasValue( value?.dimensions?.minWidth );\n\n\t// Width\n\tconst showWidthControl = hasWidth( settings );\n\tconst localWidthValue = decodeValue( value?.dimensions?.width );\n\tconst inheritedWidthValue = decodeValue(\n\t\tinheritedValue?.dimensions?.width\n\t);\n\tconst isWidthPlaceholder =\n\t\t! hasValue( value?.dimensions?.width ) &&\n\t\thasValue( inheritedWidthValue );\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 = () => hasValue( value?.dimensions?.width );\n\n\t// Aspect Ratio\n\tconst showAspectRatioControl = hasAspectRatio( settings, styleState );\n\tconst localAspectRatioValue = decodeValue( value?.dimensions?.aspectRatio );\n\tconst inheritedAspectRatioValue = decodeValue(\n\t\tinheritedValue?.dimensions?.aspectRatio\n\t);\n\tconst aspectRatioValue = localAspectRatioValue ?? inheritedAspectRatioValue;\n\tconst isAspectRatioPlaceholder =\n\t\t! hasValue( value?.dimensions?.aspectRatio ) &&\n\t\thasValue( inheritedAspectRatioValue );\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 = () =>\n\t\thasValue( value?.dimensions?.aspectRatio );\n\n\t// Child Layout. There is no Global Styles inheritance model for the\n\t// child-layout sub-keys (`selfStretch`, `flexSize`, `columnStart`,\n\t// `rowStart`, `columnSpan`, `rowSpan`); they are per-block attributes\n\t// only. Render the local value directly so user-set overrides are\n\t// reflected in the control rather than washed out by a misshapen\n\t// inherited layout payload.\n\tconst showChildLayoutControl = hasChildLayout( settings, styleState );\n\tconst childLayout = value?.layout;\n\n\tconst setChildLayout = ( newChildLayout ) => {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tlayout: {\n\t\t\t\t...value?.layout,\n\t\t\t\t...newChildLayout,\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<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisContentSizePlaceholder,\n\t\t\t\t\t\thasUserSetContentSizeValue() &&\n\t\t\t\t\t\t\tinheritedContentSizeValue !== undefined\n\t\t\t\t\t) }\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\tlabel={ __( 'Content width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// (e.g. \"620px\" keeps its unit rather than the value\n\t\t\t\t\t\t// string sitting greyed-out behind a default px unit). It\n\t\t\t\t\t\t// is only written to local on user change.\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tlocalContentSizeValue ?? inheritedContentSizeValue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisContentSizePlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedContentSizeValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWideSizeControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisWideSizePlaceholder,\n\t\t\t\t\t\thasUserSetWideSizeValue() &&\n\t\t\t\t\t\t\tinheritedWideSizeValue !== undefined\n\t\t\t\t\t) }\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\tlabel={ __( 'Wide width' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// rather than the value string sitting greyed-out behind\n\t\t\t\t\t\t// a default px unit. It is only written to local on user\n\t\t\t\t\t\t// change.\n\t\t\t\t\t\tvalue={ localWideSizeValue ?? inheritedWideSizeValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisWideSizePlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedWideSizeValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showPaddingControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasPaddingValue }\n\t\t\t\t\tlabel={ __( 'Padding' ) }\n\t\t\t\t\thasInlineEndToggle={ hasSpacingToggle(\n\t\t\t\t\t\tpaddingSides,\n\t\t\t\t\t\tshowSpacingPresetsControl\n\t\t\t\t\t) }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisPaddingInherited,\n\t\t\t\t\t\thasPaddingValue() && hasInheritedPadding,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t}\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\tvalues={ localPaddingValues }\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\tplaceholder: isPaddingPlaceholder\n\t\t\t\t\t\t\t\t\t? inheritedPaddingPlaceholder\n\t\t\t\t\t\t\t\t\t: undefined,\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMarginControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasMarginValue }\n\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\thasInlineEndToggle={ hasSpacingToggle(\n\t\t\t\t\t\tmarginSides,\n\t\t\t\t\t\tshowSpacingPresetsControl\n\t\t\t\t\t) }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMarginInherited,\n\t\t\t\t\t\thasMarginValue() && hasInheritedMargin,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t}\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\tvalues={ localMarginValues }\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\tplaceholder: isMarginPlaceholder\n\t\t\t\t\t\t\t\t\t? inheritedMarginPlaceholder\n\t\t\t\t\t\t\t\t\t: undefined,\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</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showGapControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\thasValue={ hasGapValue }\n\t\t\t\t\tlabel={ __( 'Block spacing' ) }\n\t\t\t\t\thasInlineEndToggle={ isAxialGap }\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisGapPlaceholder,\n\t\t\t\t\t\thasGapValue() && inheritedGapRaw !== undefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'tools-panel-item-spacing':\n\t\t\t\t\t\t\t\tshowSpacingPresetsControl,\n\t\t\t\t\t\t\t'single-column':\n\t\t\t\t\t\t\t\t// If UnitControl is used, should be single-column.\n\t\t\t\t\t\t\t\t! showSpacingPresetsControl && ! isAxialGap,\n\t\t\t\t\t\t}\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\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\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={ localGapForSingleInput ?? undefined }\n\t\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\t\tisGapPlaceholder\n\t\t\t\t\t\t\t\t\t\t? inheritedGapForSingleInput\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t{ showSpacingPresetsControl && (\n\t\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\t\tkey={ isAxialGap ? 'axial-gap' : 'single-gap' }\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</InheritanceToolsPanelItem>\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\tshowGridSpanDefaults={\n\t\t\t\t\t\t! hasViewportBlockStyleState( styleState )\n\t\t\t\t\t}\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<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMinHeightPlaceholder,\n\t\t\t\t\t\thasMinHeightValue() &&\n\t\t\t\t\t\t\tinheritedMinHeightValue !== undefined\n\t\t\t\t\t) }\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\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// (e.g. \"120px\" keeps its unit rather than the value\n\t\t\t\t\t\t// string sitting behind a default px unit). It is only\n\t\t\t\t\t\t// written to local on user change.\n\t\t\t\t\t\tvalue={ localMinHeightValue ?? inheritedMinHeightValue }\n\t\t\t\t\t\tonChange={ setMinHeightValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisMinHeightPlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedMinHeightValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showMinWidthControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisMinWidthPlaceholder,\n\t\t\t\t\t\thasMinWidthValue() &&\n\t\t\t\t\t\t\tinheritedMinWidthValue !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\thasValue={ hasMinWidthValue }\n\t\t\t\t\tlabel={ __( 'Minimum width' ) }\n\t\t\t\t\tonDeselect={ resetMinWidthValue }\n\t\t\t\t\tisShownByDefault={\n\t\t\t\t\t\tdefaultControls.minWidth ?? DEFAULT_CONTROLS.minWidth\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 width' ) }\n\t\t\t\t\t\t// Local-then-inherited: render the inherited value as the\n\t\t\t\t\t\t// control's value at rest so the unit parses from it\n\t\t\t\t\t\t// rather than the value string sitting behind a default\n\t\t\t\t\t\t// px unit. It is only written to local on user change.\n\t\t\t\t\t\tvalue={ localMinWidthValue ?? inheritedMinWidthValue }\n\t\t\t\t\t\tonChange={ setMinWidthValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisMinWidthPlaceholder\n\t\t\t\t\t\t\t\t? getNumericPlaceholder(\n\t\t\t\t\t\t\t\t\t\tinheritedMinWidthValue\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showHeightControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisHeightPlaceholder,\n\t\t\t\t\t\thasHeightValue() && inheritedHeightValue !== undefined\n\t\t\t\t\t) }\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={ localHeightValue }\n\t\t\t\t\t\tonChange={ setHeightValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisHeightPlaceholder\n\t\t\t\t\t\t\t\t? inheritedHeightValue\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showWidthControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisWidthPlaceholder,\n\t\t\t\t\t\thasWidthValue() && inheritedWidthValue !== undefined\n\t\t\t\t\t) }\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={ localWidthValue }\n\t\t\t\t\t\tonChange={ setWidthValue }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tisWidthPlaceholder ? inheritedWidthValue : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdimensionSizes={ dimensions?.dimensionSizes }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\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\t{ ...inheritanceProps(\n\t\t\t\t\t\tisAspectRatioPlaceholder,\n\t\t\t\t\t\thasAspectRatioValue() &&\n\t\t\t\t\t\t\tinheritedAspectRatioValue !== undefined\n\t\t\t\t\t) }\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
|
}
|
|
@@ -18,7 +18,10 @@ import { __, _x } from "@wordpress/i18n";
|
|
|
18
18
|
import { useCallback, useMemo, useRef } from "@wordpress/element";
|
|
19
19
|
import { reset as resetIcon } from "@wordpress/icons";
|
|
20
20
|
import { getValueFromVariable } from "@wordpress/global-styles-engine";
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
useToolsPanelDropdownMenuProps,
|
|
23
|
+
getDuotoneSlugFromPreset
|
|
24
|
+
} from "./utils.mjs";
|
|
22
25
|
import { setImmutably } from "../../utils/object.mjs";
|
|
23
26
|
import {
|
|
24
27
|
getInheritanceProps,
|
|
@@ -165,22 +168,25 @@ function FiltersPanel({
|
|
|
165
168
|
const localDuotone = decodeValue(value?.filter?.duotone);
|
|
166
169
|
const inheritedDuotone = decodeValue(inheritedValue?.filter?.duotone);
|
|
167
170
|
const duotone = localDuotone ?? inheritedDuotone;
|
|
171
|
+
const localDuotoneSlug = getDuotoneSlugFromPreset(value?.filter?.duotone);
|
|
172
|
+
const inheritedDuotoneSlug = getDuotoneSlugFromPreset(
|
|
173
|
+
inheritedValue?.filter?.duotone
|
|
174
|
+
);
|
|
175
|
+
const duotoneSlug = localDuotone !== void 0 ? localDuotoneSlug : inheritedDuotoneSlug;
|
|
168
176
|
const isDuotonePlaceholder = localDuotone === void 0 && inheritedDuotone !== void 0;
|
|
169
|
-
const setDuotone = (newValue) => {
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
});
|
|
173
|
-
const duotoneValue = duotonePreset ? `var:preset|duotone|${duotonePreset.slug}` : newValue;
|
|
177
|
+
const setDuotone = (newValue, slug) => {
|
|
178
|
+
const presetSlug = slug ?? duotonePalette.find(({ colors }) => colors === newValue)?.slug;
|
|
179
|
+
const duotoneValue = presetSlug ? `var:preset|duotone|${presetSlug}` : newValue;
|
|
174
180
|
onChange(
|
|
175
181
|
setImmutably(value, ["filter", "duotone"], duotoneValue)
|
|
176
182
|
);
|
|
177
183
|
};
|
|
178
|
-
const setDuotoneWithInheritedCommit = (newValue) => {
|
|
184
|
+
const setDuotoneWithInheritedCommit = (newValue, index, slug) => {
|
|
179
185
|
if (newValue === void 0 && isDuotonePlaceholder && inheritedDuotone !== void 0) {
|
|
180
|
-
setDuotone(inheritedDuotone);
|
|
186
|
+
setDuotone(inheritedDuotone, inheritedDuotoneSlug);
|
|
181
187
|
return;
|
|
182
188
|
}
|
|
183
|
-
setDuotone(newValue);
|
|
189
|
+
setDuotone(newValue, slug);
|
|
184
190
|
};
|
|
185
191
|
const hasDuotone = () => !!value?.filter?.duotone;
|
|
186
192
|
const resetDuotone = () => setDuotone(void 0);
|
|
@@ -236,6 +242,7 @@ function FiltersPanel({
|
|
|
236
242
|
disableCustomColors: true,
|
|
237
243
|
disableCustomDuotone: true,
|
|
238
244
|
value: duotone,
|
|
245
|
+
selectedSlug: duotoneSlug,
|
|
239
246
|
onChange: setDuotoneWithInheritedCommit
|
|
240
247
|
}
|
|
241
248
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/filters-panel.js"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalHStack as HStack, // eslint-disable-line @wordpress/use-recommended-components\n\t__experimentalZStack as ZStack, // eslint-disable-line @wordpress/use-recommended-components\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tMenuGroup,\n\tColorIndicator,\n\tDuotonePicker,\n\tDuotoneSwatch,\n\tDropdown,\n\tFlex,\n\tFlexItem,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useCallback, useMemo, useRef } from '@wordpress/element';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tInheritanceResetButton,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst EMPTY_ARRAY = [];\nfunction useMultiOriginColorPresets(\n\tsettings,\n\t{ presetSetting, defaultSetting }\n) {\n\tconst disableDefault = ! settings?.color?.[ defaultSetting ];\n\tconst userPresets =\n\t\tsettings?.color?.[ presetSetting ]?.custom || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tsettings?.color?.[ presetSetting ]?.theme || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tsettings?.color?.[ presetSetting ]?.default || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function useHasFiltersPanel( settings ) {\n\treturn useHasDuotoneControl( settings );\n}\n\nfunction useHasDuotoneControl( settings ) {\n\treturn (\n\t\tsettings.color.customDuotone ||\n\t\tsettings.color.defaultDuotone ||\n\t\tsettings.color.duotone.length > 0\n\t);\n}\n\nfunction FiltersToolsPanel( {\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={ _x( 'Filters', 'Name for applying graphical effects' ) }\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\tduotone: true,\n};\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-duotone-control__popover',\n\theaderTitle: __( 'Duotone' ),\n};\n\nconst LabeledColorIndicator = ( { indicator, label } ) => (\n\t<HStack justify=\"flex-start\">\n\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t<Flex expanded={ false }>\n\t\t\t\t{ indicator === 'unset' || ! indicator ? (\n\t\t\t\t\t<ColorIndicator className=\"block-editor-duotone-control__unset-indicator\" />\n\t\t\t\t) : (\n\t\t\t\t\t<DuotoneSwatch values={ indicator } />\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t</ZStack>\n\t\t<FlexItem\n\t\t\tclassName=\"block-editor-panel-duotone-settings__label\"\n\t\t\ttitle={ label }\n\t\t>\n\t\t\t{ label }\n\t\t</FlexItem>\n\t</HStack>\n);\n\nconst renderToggle = ( duotone, resetConfig ) =>\n\tfunction Toggle( { onToggle, isOpen } ) {\n\t\tconst { hasLocalValue, hasLocalOverride, onReset } = resetConfig;\n\t\tconst duotoneButtonRef = useRef( undefined );\n\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: clsx(\n\t\t\t\t'block-editor-global-styles-filters-panel__dropdown-toggle',\n\t\t\t\t{ 'is-open': isOpen }\n\t\t\t),\n\t\t\t'aria-expanded': isOpen,\n\t\t\tref: duotoneButtonRef,\n\t\t};\n\n\t\tconst handleReset = () => {\n\t\t\tif ( isOpen ) {\n\t\t\t\tonToggle();\n\t\t\t}\n\t\t\tonReset();\n\t\t\t// Return focus to parent button.\n\t\t\tduotoneButtonRef.current?.focus();\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button __next40pxDefaultSize { ...toggleProps }>\n\t\t\t\t\t<LabeledColorIndicator\n\t\t\t\t\t\tindicator={ duotone }\n\t\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Button>\n\t\t\t\t{ hasLocalValue &&\n\t\t\t\t\t( hasLocalOverride ? (\n\t\t\t\t\t\t<InheritanceResetButton\n\t\t\t\t\t\t\tclassName=\"block-editor-panel-duotone-settings__reset\"\n\t\t\t\t\t\t\tonResetToInherited={ handleReset }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\t\t\tclassName=\"block-editor-panel-duotone-settings__reset\"\n\t\t\t\t\t\t\tonClick={ handleReset }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t</>\n\t\t);\n\t};\n\nexport default function FiltersPanel( {\n\tas: Wrapper = FiltersToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\t// Always keep the layout className (e.g. `single-column`); only the\n\t// inheritance treatment is gated on `showInheritanceLabelIndicators`.\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, className ) =>\n\t\tgetInheritanceProps(\n\t\t\tshowInheritanceLabelIndicators && isInherited,\n\t\t\tshowInheritanceLabelIndicators && hasLocalOverride,\n\t\t\tclassName\n\t\t);\n\n\t// Duotone\n\tconst hasDuotoneEnabled = useHasDuotoneControl( settings );\n\tconst duotonePalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'duotone',\n\t\tdefaultSetting: 'defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'palette',\n\t\tdefaultSetting: 'defaultPalette',\n\t} );\n\tconst localDuotone = decodeValue( value?.filter?.duotone );\n\tconst inheritedDuotone = decodeValue( inheritedValue?.filter?.duotone );\n\tconst duotone = localDuotone ?? inheritedDuotone;\n\tconst isDuotonePlaceholder =\n\t\tlocalDuotone === undefined && inheritedDuotone !== undefined;\n\tconst setDuotone = ( newValue ) => {\n\t\tconst duotonePreset = duotonePalette.find( ( { colors } ) => {\n\t\t\treturn colors === newValue;\n\t\t} );\n\t\tconst duotoneValue = duotonePreset\n\t\t\t? `var:preset|duotone|${ duotonePreset.slug }`\n\t\t\t: newValue;\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'filter', 'duotone' ], duotoneValue )\n\t\t);\n\t};\n\t// Commit the inherited value when the user clicks the active preset\n\t// while the picker is showing inherited duotone at rest.\n\tconst setDuotoneWithInheritedCommit = ( newValue ) => {\n\t\tif (\n\t\t\tnewValue === undefined &&\n\t\t\tisDuotonePlaceholder &&\n\t\t\tinheritedDuotone !== undefined\n\t\t) {\n\t\t\tsetDuotone( inheritedDuotone );\n\t\t\treturn;\n\t\t}\n\t\tsetDuotone( newValue );\n\t};\n\tconst hasDuotone = () => !! value?.filter?.duotone;\n\tconst resetDuotone = () => setDuotone( undefined );\n\t// Only a local value shadowing an inherited one shows the blue-dot reset.\n\tconst hasDuotoneLocalOverride =\n\t\tshowInheritanceLabelIndicators &&\n\t\thasDuotone() &&\n\t\tinheritedDuotone !== undefined;\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tfilter: {\n\t\t\t\t...previousValue.filter,\n\t\t\t\tduotone: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\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{ hasDuotoneEnabled && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisDuotonePlaceholder,\n\t\t\t\t\t\tlocalDuotone !== undefined &&\n\t\t\t\t\t\t\tinheritedDuotone !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\thasValue={ hasDuotone }\n\t\t\t\t\tonDeselect={ resetDuotone }\n\t\t\t\t\tisShownByDefault={ defaultControls.duotone }\n\t\t\t\t\t// Toggle renders its own reset dot, so the item must not\n\t\t\t\t\t// add a second.\n\t\t\t\t\tshowLocalOverrideActionsInLabel={ false }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-filters-panel__dropdown\"\n\t\t\t\t\t\trenderToggle={ renderToggle( duotone, {\n\t\t\t\t\t\t\thasLocalValue: hasDuotone(),\n\t\t\t\t\t\t\thasLocalOverride: hasDuotoneLocalOverride,\n\t\t\t\t\t\t\tonReset: resetDuotone,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<DropdownContentWrapper paddingSize=\"small\">\n\t\t\t\t\t\t\t\t<MenuGroup label={ __( 'Duotone' ) }>\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Create a two-tone color effect without losing your original image.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<DuotonePicker\n\t\t\t\t\t\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\t\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\t\t\t\t\t\t// TODO: Re-enable both when custom colors are supported for block-level styles.\n\t\t\t\t\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\t\t\t\t\tdisableCustomDuotone\n\t\t\t\t\t\t\t\t\t\tvalue={ duotone }\n\t\t\t\t\t\t\t\t\t\tonChange={\n\t\t\t\t\t\t\t\t\t\t\tsetDuotoneWithInheritedCommit\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</MenuGroup>\n\t\t\t\t\t\t\t</DropdownContentWrapper>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,UAAU;AACjB;AAAA,EACC,4BAA4B;AAAA,EAC5B,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,wCAAwC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,IAAI,UAAU;AACvB,SAAS,aAAa,SAAS,cAAc;AAC7C,SAAS,SAAS,iBAAiB;AACnC,SAAS,4BAA4B;AACrC,
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalHStack as HStack, // eslint-disable-line @wordpress/use-recommended-components\n\t__experimentalZStack as ZStack, // eslint-disable-line @wordpress/use-recommended-components\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tMenuGroup,\n\tColorIndicator,\n\tDuotonePicker,\n\tDuotoneSwatch,\n\tDropdown,\n\tFlex,\n\tFlexItem,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useCallback, useMemo, useRef } from '@wordpress/element';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport {\n\tuseToolsPanelDropdownMenuProps,\n\tgetDuotoneSlugFromPreset,\n} from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tInheritanceResetButton,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst EMPTY_ARRAY = [];\nfunction useMultiOriginColorPresets(\n\tsettings,\n\t{ presetSetting, defaultSetting }\n) {\n\tconst disableDefault = ! settings?.color?.[ defaultSetting ];\n\tconst userPresets =\n\t\tsettings?.color?.[ presetSetting ]?.custom || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tsettings?.color?.[ presetSetting ]?.theme || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tsettings?.color?.[ presetSetting ]?.default || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function useHasFiltersPanel( settings ) {\n\treturn useHasDuotoneControl( settings );\n}\n\nfunction useHasDuotoneControl( settings ) {\n\treturn (\n\t\tsettings.color.customDuotone ||\n\t\tsettings.color.defaultDuotone ||\n\t\tsettings.color.duotone.length > 0\n\t);\n}\n\nfunction FiltersToolsPanel( {\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={ _x( 'Filters', 'Name for applying graphical effects' ) }\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\tduotone: true,\n};\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-duotone-control__popover',\n\theaderTitle: __( 'Duotone' ),\n};\n\nconst LabeledColorIndicator = ( { indicator, label } ) => (\n\t<HStack justify=\"flex-start\">\n\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t<Flex expanded={ false }>\n\t\t\t\t{ indicator === 'unset' || ! indicator ? (\n\t\t\t\t\t<ColorIndicator className=\"block-editor-duotone-control__unset-indicator\" />\n\t\t\t\t) : (\n\t\t\t\t\t<DuotoneSwatch values={ indicator } />\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t</ZStack>\n\t\t<FlexItem\n\t\t\tclassName=\"block-editor-panel-duotone-settings__label\"\n\t\t\ttitle={ label }\n\t\t>\n\t\t\t{ label }\n\t\t</FlexItem>\n\t</HStack>\n);\n\nconst renderToggle = ( duotone, resetConfig ) =>\n\tfunction Toggle( { onToggle, isOpen } ) {\n\t\tconst { hasLocalValue, hasLocalOverride, onReset } = resetConfig;\n\t\tconst duotoneButtonRef = useRef( undefined );\n\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: clsx(\n\t\t\t\t'block-editor-global-styles-filters-panel__dropdown-toggle',\n\t\t\t\t{ 'is-open': isOpen }\n\t\t\t),\n\t\t\t'aria-expanded': isOpen,\n\t\t\tref: duotoneButtonRef,\n\t\t};\n\n\t\tconst handleReset = () => {\n\t\t\tif ( isOpen ) {\n\t\t\t\tonToggle();\n\t\t\t}\n\t\t\tonReset();\n\t\t\t// Return focus to parent button.\n\t\t\tduotoneButtonRef.current?.focus();\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Button __next40pxDefaultSize { ...toggleProps }>\n\t\t\t\t\t<LabeledColorIndicator\n\t\t\t\t\t\tindicator={ duotone }\n\t\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Button>\n\t\t\t\t{ hasLocalValue &&\n\t\t\t\t\t( hasLocalOverride ? (\n\t\t\t\t\t\t<InheritanceResetButton\n\t\t\t\t\t\t\tclassName=\"block-editor-panel-duotone-settings__reset\"\n\t\t\t\t\t\t\tonResetToInherited={ handleReset }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\t\t\tclassName=\"block-editor-panel-duotone-settings__reset\"\n\t\t\t\t\t\t\tonClick={ handleReset }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t</>\n\t\t);\n\t};\n\nexport default function FiltersPanel( {\n\tas: Wrapper = FiltersToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\t// Always keep the layout className (e.g. `single-column`); only the\n\t// inheritance treatment is gated on `showInheritanceLabelIndicators`.\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, className ) =>\n\t\tgetInheritanceProps(\n\t\t\tshowInheritanceLabelIndicators && isInherited,\n\t\t\tshowInheritanceLabelIndicators && hasLocalOverride,\n\t\t\tclassName\n\t\t);\n\n\t// Duotone\n\tconst hasDuotoneEnabled = useHasDuotoneControl( settings );\n\tconst duotonePalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'duotone',\n\t\tdefaultSetting: 'defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'palette',\n\t\tdefaultSetting: 'defaultPalette',\n\t} );\n\tconst localDuotone = decodeValue( value?.filter?.duotone );\n\tconst inheritedDuotone = decodeValue( inheritedValue?.filter?.duotone );\n\tconst duotone = localDuotone ?? inheritedDuotone;\n\t// Read from the raw value, since decoding resolves a preset reference to\n\t// its colors and two presets can hold the same pair.\n\tconst localDuotoneSlug = getDuotoneSlugFromPreset( value?.filter?.duotone );\n\tconst inheritedDuotoneSlug = getDuotoneSlugFromPreset(\n\t\tinheritedValue?.filter?.duotone\n\t);\n\tconst duotoneSlug =\n\t\tlocalDuotone !== undefined ? localDuotoneSlug : inheritedDuotoneSlug;\n\tconst isDuotonePlaceholder =\n\t\tlocalDuotone === undefined && inheritedDuotone !== undefined;\n\tconst setDuotone = ( newValue, slug ) => {\n\t\t// A slug identifies the picked preset exactly. Falling back to a value\n\t\t// match cannot tell two presets holding the same colors apart.\n\t\tconst presetSlug =\n\t\t\tslug ??\n\t\t\tduotonePalette.find( ( { colors } ) => colors === newValue )?.slug;\n\t\tconst duotoneValue = presetSlug\n\t\t\t? `var:preset|duotone|${ presetSlug }`\n\t\t\t: newValue;\n\t\tonChange(\n\t\t\tsetImmutably( value, [ 'filter', 'duotone' ], duotoneValue )\n\t\t);\n\t};\n\t// Commit the inherited value when the user clicks the active preset\n\t// while the picker is showing inherited duotone at rest.\n\tconst setDuotoneWithInheritedCommit = ( newValue, index, slug ) => {\n\t\tif (\n\t\t\tnewValue === undefined &&\n\t\t\tisDuotonePlaceholder &&\n\t\t\tinheritedDuotone !== undefined\n\t\t) {\n\t\t\tsetDuotone( inheritedDuotone, inheritedDuotoneSlug );\n\t\t\treturn;\n\t\t}\n\t\tsetDuotone( newValue, slug );\n\t};\n\tconst hasDuotone = () => !! value?.filter?.duotone;\n\tconst resetDuotone = () => setDuotone( undefined );\n\t// Only a local value shadowing an inherited one shows the blue-dot reset.\n\tconst hasDuotoneLocalOverride =\n\t\tshowInheritanceLabelIndicators &&\n\t\thasDuotone() &&\n\t\tinheritedDuotone !== undefined;\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tfilter: {\n\t\t\t\t...previousValue.filter,\n\t\t\t\tduotone: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\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{ hasDuotoneEnabled && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tisDuotonePlaceholder,\n\t\t\t\t\t\tlocalDuotone !== undefined &&\n\t\t\t\t\t\t\tinheritedDuotone !== undefined\n\t\t\t\t\t) }\n\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\thasValue={ hasDuotone }\n\t\t\t\t\tonDeselect={ resetDuotone }\n\t\t\t\t\tisShownByDefault={ defaultControls.duotone }\n\t\t\t\t\t// Toggle renders its own reset dot, so the item must not\n\t\t\t\t\t// add a second.\n\t\t\t\t\tshowLocalOverrideActionsInLabel={ false }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-filters-panel__dropdown\"\n\t\t\t\t\t\trenderToggle={ renderToggle( duotone, {\n\t\t\t\t\t\t\thasLocalValue: hasDuotone(),\n\t\t\t\t\t\t\thasLocalOverride: hasDuotoneLocalOverride,\n\t\t\t\t\t\t\tonReset: resetDuotone,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<DropdownContentWrapper paddingSize=\"small\">\n\t\t\t\t\t\t\t\t<MenuGroup label={ __( 'Duotone' ) }>\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Create a two-tone color effect without losing your original image.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<DuotonePicker\n\t\t\t\t\t\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\t\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\t\t\t\t\t\t// TODO: Re-enable both when custom colors are supported for block-level styles.\n\t\t\t\t\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\t\t\t\t\tdisableCustomDuotone\n\t\t\t\t\t\t\t\t\t\tvalue={ duotone }\n\t\t\t\t\t\t\t\t\t\tselectedSlug={ duotoneSlug }\n\t\t\t\t\t\t\t\t\t\tonChange={\n\t\t\t\t\t\t\t\t\t\t\tsetDuotoneWithInheritedCommit\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</MenuGroup>\n\t\t\t\t\t\t\t</DropdownContentWrapper>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|