@wordpress/block-editor 17.1.0 → 17.2.1-next.v.202609171837.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 +32 -0
- package/README.md +214 -214
- package/build/autocompleters/block.cjs.map +2 -2
- package/build/components/alignment-control/ui.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +1 -1
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-alignment-control/ui.cjs +21 -7
- package/build/components/block-alignment-control/ui.cjs.map +3 -3
- package/build/components/block-alignment-control/use-available-alignments.cjs +60 -13
- package/build/components/block-alignment-control/use-available-alignments.cjs.map +2 -2
- package/build/components/block-allowed-blocks/allowed-blocks-control.cjs.map +2 -2
- package/build/components/block-bindings/attribute-control.cjs +30 -30
- package/build/components/block-bindings/attribute-control.cjs.map +3 -3
- package/build/components/block-bindings/source-fields-list.cjs +27 -32
- package/build/components/block-bindings/source-fields-list.cjs.map +3 -3
- package/build/components/block-canvas/index.cjs.map +2 -2
- package/build/components/block-card/index.cjs +1 -2
- package/build/components/block-card/index.cjs.map +3 -3
- package/build/components/block-edit/edit.cjs.map +2 -2
- package/build/components/block-heading-level-dropdown/index.cjs.map +2 -2
- package/build/components/block-icon/index.cjs.map +2 -2
- package/build/components/block-inspector/edit-contents.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +27 -8
- package/build/components/block-inspector/index.cjs.map +3 -3
- package/build/components/block-keyboard-shortcuts/index.cjs.map +2 -2
- package/build/components/block-list/block-html.cjs +1 -12
- package/build/components/block-list/block-html.cjs.map +3 -3
- package/build/components/block-list/block.cjs +2 -4
- package/build/components/block-list/block.cjs.map +2 -2
- package/build/components/block-list/layout.cjs +1 -1
- package/build/components/block-list/layout.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-lock/modal.cjs +1 -3
- package/build/components/block-lock/modal.cjs.map +2 -2
- package/build/components/block-parent-selector/index.cjs +8 -5
- package/build/components/block-parent-selector/index.cjs.map +2 -2
- package/build/components/block-popover/index.cjs.map +2 -2
- package/build/components/block-rename/modal.cjs.map +2 -2
- package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
- package/build/components/block-styles/utils.cjs.map +2 -2
- package/build/components/block-switcher/index.cjs.map +2 -2
- package/build/components/block-toolbar/edit-section-button.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +6 -4
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +2 -2
- package/build/components/block-variation-transforms/index.cjs +28 -18
- package/build/components/block-variation-transforms/index.cjs.map +3 -3
- package/build/components/block-visibility/modal.cjs.map +2 -2
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
- package/build/components/border-radius-control/index.cjs.map +2 -2
- package/build/components/color-palette/with-color-context.cjs.map +2 -2
- package/build/components/colors/with-colors.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/contrast-checker/index.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
- package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
- package/build/components/font-sizes/with-font-sizes.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +1 -1
- package/build/components/global-styles/background-panel.cjs.map +2 -2
- package/build/components/global-styles/border-panel.cjs +1 -1
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +1 -1
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +2 -2
- package/build/components/global-styles/color-panel.cjs +1 -1
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +1 -1
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/filters-panel.cjs +1 -1
- package/build/components/global-styles/filters-panel.cjs.map +2 -2
- package/build/components/global-styles/hooks.cjs +1 -0
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/inheritance/index.cjs +3 -3
- package/build/components/global-styles/inheritance/index.cjs.map +2 -2
- package/build/components/global-styles/inherited-value-context.cjs +0 -5
- package/build/components/global-styles/inherited-value-context.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +0 -1
- package/build/components/global-styles/state-control-badges.cjs.map +2 -2
- package/build/components/global-styles/state-control.cjs +6 -4
- package/build/components/global-styles/state-control.cjs.map +2 -2
- package/build/components/global-styles/text-shadow-panel.cjs +254 -0
- package/build/components/global-styles/text-shadow-panel.cjs.map +7 -0
- package/build/components/global-styles/typography-panel.cjs +46 -5
- package/build/components/global-styles/typography-panel.cjs.map +2 -2
- package/build/components/global-styles/typography-utils.cjs.map +2 -2
- package/build/components/global-styles/utils.cjs.map +2 -2
- package/build/components/html-element-control/index.cjs.map +3 -3
- package/build/components/iframe/index.cjs.map +2 -2
- package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
- package/build/components/image-size-control/index.cjs.map +3 -3
- package/build/components/inner-blocks/index.cjs +6 -1
- package/build/components/inner-blocks/index.cjs.map +2 -2
- package/build/components/inner-content/index.cjs.map +2 -2
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs +4 -23
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs.map +2 -2
- package/build/components/inserter/block-patterns-tab/utils.cjs +26 -0
- package/build/components/inserter/block-patterns-tab/utils.cjs.map +2 -2
- package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
- package/build/components/inserter/hooks/use-insertion-point.cjs.map +2 -2
- package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-panel.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter-list-item/index.cjs.map +2 -2
- package/build/components/inspector-controls/list-view-content-popover.cjs.map +2 -2
- package/build/components/link-control/search-results.cjs.map +2 -2
- package/build/components/link-control/use-search-handler.cjs +3 -0
- package/build/components/link-control/use-search-handler.cjs.map +2 -2
- package/build/components/list-view/branch.cjs.map +2 -2
- package/build/components/list-view/drop-indicator.cjs.map +2 -2
- package/build/components/list-view/index.cjs.map +2 -2
- package/build/components/list-view/use-list-view-drop-zone.cjs.map +2 -2
- package/build/components/list-view/utils.cjs.map +2 -2
- package/build/components/media-replace-flow/index.cjs +4 -1
- package/build/components/media-replace-flow/index.cjs.map +2 -2
- package/build/components/plain-text/index.cjs +1 -2
- package/build/components/plain-text/index.cjs.map +3 -3
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/provider/index.cjs +3 -1
- package/build/components/provider/index.cjs.map +2 -2
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/publish-date-time-picker/index.cjs.map +2 -2
- package/build/components/resizable-box-popover/index.cjs +1 -1
- package/build/components/resizable-box-popover/index.cjs.map +1 -1
- package/build/components/resolution-tool/index.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/enter.cjs +8 -22
- package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
- package/build/components/rich-text/format-edit.cjs.map +2 -2
- package/build/components/rich-text/index.cjs +20 -0
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/rich-text/multiline.cjs +10 -2
- package/build/components/rich-text/multiline.cjs.map +2 -2
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.cjs.map +2 -2
- package/build/components/typewriter/index.cjs.map +2 -2
- package/build/components/use-block-commands/index.cjs.map +2 -2
- package/build/components/writing-flow/index.cjs +3 -0
- package/build/components/writing-flow/index.cjs.map +2 -2
- package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
- package/build/components/writing-flow/use-selection-observer.cjs +5 -3
- package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
- package/build/hooks/align.cjs +3 -5
- package/build/hooks/align.cjs.map +2 -2
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-bindings.cjs.map +2 -2
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/contrast-checker.cjs.map +2 -2
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/duotone.cjs.map +2 -2
- package/build/hooks/elements.cjs.map +2 -2
- package/build/hooks/fit-text.cjs.map +2 -2
- package/build/hooks/gap.cjs +2 -1
- package/build/hooks/gap.cjs.map +3 -3
- package/build/hooks/index.cjs +4 -2
- package/build/hooks/index.cjs.map +3 -3
- package/build/hooks/layout-child.cjs.map +2 -2
- package/build/hooks/layout.cjs +15 -14
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/position.cjs +3 -31
- package/build/hooks/position.cjs.map +2 -2
- package/build/hooks/states.cjs +3 -2
- package/build/hooks/states.cjs.map +2 -2
- package/build/hooks/text-shadow.cjs +100 -0
- package/build/hooks/text-shadow.cjs.map +7 -0
- package/build/hooks/typography.cjs +30 -6
- package/build/hooks/typography.cjs.map +2 -2
- package/build/hooks/utils.cjs +24 -2
- package/build/hooks/utils.cjs.map +2 -2
- package/build/layouts/grid.cjs.map +2 -2
- package/build/layouts/utils.cjs +7 -2
- package/build/layouts/utils.cjs.map +2 -2
- package/build/private-apis.cjs +9 -6
- package/build/private-apis.cjs.map +2 -2
- package/build/store/actions.cjs +26 -4
- package/build/store/actions.cjs.map +3 -3
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/get-font-styles-and-weights.cjs.map +2 -2
- package/build/utils/transform-styles/index.cjs.map +1 -1
- package/build-module/autocompleters/block.mjs.map +2 -2
- package/build-module/components/alignment-control/ui.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +2 -2
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-alignment-control/ui.mjs +21 -7
- package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/block-alignment-control/use-available-alignments.mjs +56 -13
- package/build-module/components/block-alignment-control/use-available-alignments.mjs.map +2 -2
- package/build-module/components/block-allowed-blocks/allowed-blocks-control.mjs.map +2 -2
- package/build-module/components/block-bindings/attribute-control.mjs +31 -32
- package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
- package/build-module/components/block-bindings/source-fields-list.mjs +25 -30
- package/build-module/components/block-bindings/source-fields-list.mjs.map +2 -2
- package/build-module/components/block-canvas/index.mjs.map +2 -2
- package/build-module/components/block-card/index.mjs +3 -8
- package/build-module/components/block-card/index.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs.map +2 -2
- package/build-module/components/block-heading-level-dropdown/index.mjs.map +2 -2
- package/build-module/components/block-icon/index.mjs.map +2 -2
- package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +29 -10
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-keyboard-shortcuts/index.mjs.map +2 -2
- package/build-module/components/block-list/block-html.mjs +1 -2
- package/build-module/components/block-list/block-html.mjs.map +2 -2
- package/build-module/components/block-list/block.mjs +2 -4
- package/build-module/components/block-list/block.mjs.map +2 -2
- package/build-module/components/block-list/layout.mjs +1 -1
- package/build-module/components/block-list/layout.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-lock/modal.mjs +1 -3
- package/build-module/components/block-lock/modal.mjs.map +2 -2
- package/build-module/components/block-parent-selector/index.mjs +8 -5
- package/build-module/components/block-parent-selector/index.mjs.map +2 -2
- package/build-module/components/block-popover/index.mjs.map +2 -2
- package/build-module/components/block-rename/modal.mjs.map +2 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
- package/build-module/components/block-styles/utils.mjs.map +2 -2
- package/build-module/components/block-switcher/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/edit-section-button.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +6 -4
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-variation-transforms/index.mjs +30 -21
- package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/border-radius-control/index.mjs.map +2 -2
- package/build-module/components/color-palette/with-color-context.mjs.map +2 -2
- package/build-module/components/colors/with-colors.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/contrast-checker/index.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
- package/build-module/components/font-sizes/with-font-sizes.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +2 -2
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +2 -2
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +2 -2
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/filters-panel.mjs +2 -2
- package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +1 -0
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs.map +2 -2
- package/build-module/components/global-styles/inherited-value-context.mjs +0 -5
- package/build-module/components/global-styles/inherited-value-context.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +0 -1
- package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
- package/build-module/components/global-styles/state-control.mjs +6 -4
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/global-styles/text-shadow-panel.mjs +224 -0
- package/build-module/components/global-styles/text-shadow-panel.mjs.map +7 -0
- package/build-module/components/global-styles/typography-panel.mjs +47 -6
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/global-styles/typography-utils.mjs.map +2 -2
- package/build-module/components/global-styles/utils.mjs.map +2 -2
- package/build-module/components/html-element-control/index.mjs +2 -2
- package/build-module/components/html-element-control/index.mjs.map +2 -2
- package/build-module/components/iframe/index.mjs.map +2 -2
- package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
- package/build-module/components/image-size-control/index.mjs +2 -2
- package/build-module/components/image-size-control/index.mjs.map +2 -2
- package/build-module/components/inner-blocks/index.mjs +6 -1
- package/build-module/components/inner-blocks/index.mjs.map +2 -2
- package/build-module/components/inner-content/index.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs +6 -24
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs.map +2 -2
- package/build-module/components/inserter/block-patterns-tab/utils.mjs +25 -0
- package/build-module/components/inserter/block-patterns-tab/utils.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-insertion-point.mjs.map +2 -2
- package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter-list-item/index.mjs.map +2 -2
- package/build-module/components/inspector-controls/list-view-content-popover.mjs.map +2 -2
- package/build-module/components/link-control/search-results.mjs.map +2 -2
- package/build-module/components/link-control/use-search-handler.mjs +3 -0
- package/build-module/components/link-control/use-search-handler.mjs.map +2 -2
- package/build-module/components/list-view/branch.mjs.map +2 -2
- package/build-module/components/list-view/drop-indicator.mjs.map +2 -2
- package/build-module/components/list-view/index.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +2 -2
- package/build-module/components/list-view/utils.mjs.map +2 -2
- package/build-module/components/media-replace-flow/index.mjs +4 -1
- package/build-module/components/media-replace-flow/index.mjs.map +2 -2
- package/build-module/components/plain-text/index.mjs +1 -2
- package/build-module/components/plain-text/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +3 -1
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/publish-date-time-picker/index.mjs.map +2 -2
- package/build-module/components/resizable-box-popover/index.mjs +1 -1
- package/build-module/components/resizable-box-popover/index.mjs.map +1 -1
- package/build-module/components/resolution-tool/index.mjs +2 -2
- package/build-module/components/resolution-tool/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +8 -22
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/format-edit.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +21 -0
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/rich-text/multiline.mjs +11 -3
- package/build-module/components/rich-text/multiline.mjs.map +2 -2
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.mjs.map +2 -2
- package/build-module/components/typewriter/index.mjs.map +2 -2
- package/build-module/components/use-block-commands/index.mjs.map +2 -2
- package/build-module/components/writing-flow/index.mjs +3 -0
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
- package/build-module/components/writing-flow/use-selection-observer.mjs +5 -3
- package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
- package/build-module/hooks/align.mjs +6 -6
- package/build-module/hooks/align.mjs.map +2 -2
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-bindings.mjs.map +2 -2
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/contrast-checker.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/duotone.mjs.map +2 -2
- package/build-module/hooks/elements.mjs.map +2 -2
- package/build-module/hooks/fit-text.mjs.map +2 -2
- package/build-module/hooks/gap.mjs +2 -1
- package/build-module/hooks/gap.mjs.map +2 -2
- package/build-module/hooks/index.mjs +4 -2
- package/build-module/hooks/index.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +6 -5
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/position.mjs +5 -33
- package/build-module/hooks/position.mjs.map +2 -2
- package/build-module/hooks/states.mjs +3 -2
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/text-shadow.mjs +65 -0
- package/build-module/hooks/text-shadow.mjs.map +7 -0
- package/build-module/hooks/typography.mjs +30 -6
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/hooks/utils.mjs +24 -2
- package/build-module/hooks/utils.mjs.map +2 -2
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/layouts/utils.mjs +5 -1
- package/build-module/layouts/utils.mjs.map +2 -2
- package/build-module/private-apis.mjs +6 -2
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +28 -5
- package/build-module/store/actions.mjs.map +3 -3
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/get-font-styles-and-weights.mjs.map +2 -2
- package/build-module/utils/transform-styles/index.mjs.map +1 -1
- package/build-style/content-rtl.css +7 -2
- package/build-style/content.css +7 -2
- package/build-style/style-rtl.css +90 -25
- package/build-style/style.css +92 -25
- package/package.json +42 -43
- package/src/autocompleters/block.jsx +4 -4
- package/src/components/alignment-control/ui.jsx +1 -1
- package/src/components/background-image-control/index.jsx +3 -3
- package/src/components/block-alignment-control/test/index.jsdom.test.jsx +267 -0
- package/src/components/block-alignment-control/ui.jsx +47 -9
- package/src/components/block-alignment-control/use-available-alignments.js +106 -20
- package/src/components/block-allowed-blocks/allowed-blocks-control.jsx +1 -1
- package/src/components/block-bindings/attribute-control.jsx +27 -29
- package/src/components/block-bindings/source-fields-list.jsx +22 -32
- package/src/components/block-bindings/test/attribute-control.jsdom.test.jsx +115 -0
- package/src/components/block-canvas/index.jsx +1 -1
- package/src/components/block-card/index.jsx +5 -11
- package/src/components/block-card/style.scss +1 -0
- package/src/components/block-edit/edit.jsx +1 -1
- package/src/components/block-heading-level-dropdown/index.jsx +1 -1
- package/src/components/block-icon/index.jsx +1 -1
- package/src/components/block-icon/test/index.browser.test.jsx +74 -0
- package/src/components/block-inspector/edit-contents.jsx +2 -2
- package/src/components/block-inspector/index.jsx +46 -15
- package/src/components/block-inspector/style.scss +16 -0
- package/src/components/block-keyboard-shortcuts/index.jsx +2 -2
- package/src/components/block-list/block-html.jsx +2 -3
- package/src/components/block-list/block.jsx +7 -5
- package/src/components/block-list/content.scss +3 -2
- package/src/components/block-list/layout.jsx +4 -1
- package/src/components/block-list/test/layout.jsdom.test.js +40 -0
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-lock/modal.jsx +2 -3
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-mover/style.scss +0 -13
- package/src/components/block-parent-selector/index.jsx +12 -6
- package/src/components/block-patterns-list/style.scss +1 -1
- package/src/components/block-popover/index.jsx +1 -1
- package/src/components/block-rename/modal.jsx +3 -3
- package/src/components/block-settings-menu/block-settings-dropdown.jsx +1 -1
- package/src/components/block-styles/utils.js +1 -1
- package/src/components/block-switcher/index.jsx +3 -3
- package/src/components/block-toolbar/edit-section-button.jsx +2 -2
- package/src/components/block-toolbar/index.jsx +8 -4
- package/src/components/block-toolbar/switch-section-style.jsx +1 -1
- package/src/components/block-variation-transforms/index.jsx +24 -23
- package/src/components/block-variation-transforms/test/index.jsdom.test.jsx +93 -0
- package/src/components/block-visibility/modal.jsx +7 -7
- package/src/components/block-visibility/style.scss +1 -1
- package/src/components/block-visibility/viewport-visibility-info.jsx +5 -7
- package/src/components/border-radius-control/index.jsx +2 -2
- package/src/components/border-radius-control/test/index.jsdom.test.jsx +0 -22
- package/src/components/border-radius-control/test/select.browser.test.js +30 -0
- package/src/components/color-palette/with-color-context.jsx +1 -1
- package/src/components/colors/with-colors.jsx +1 -1
- package/src/components/colors-gradients/control.jsx +2 -2
- package/src/components/colors-gradients/test/{control.jsdom.test.jsx → control.browser.test.jsx} +6 -9
- package/src/components/contrast-checker/index.jsx +2 -2
- package/src/components/date-format-picker/index.jsx +2 -2
- package/src/components/dimensions-tool/aspect-ratio-tool.jsx +4 -4
- package/src/components/dimensions-tool/test/index.jsdom.test.jsx +17 -11
- package/src/components/dimensions-tool/width-height-tool.jsx +2 -2
- package/src/components/font-sizes/with-font-sizes.jsx +2 -3
- package/src/components/global-styles/background-panel.jsx +2 -2
- package/src/components/global-styles/border-panel.jsx +2 -2
- package/src/components/global-styles/color-gradient-dropdown-item.jsx +3 -3
- package/src/components/global-styles/color-panel.jsx +3 -3
- package/src/components/global-styles/dimensions-panel.jsx +6 -6
- package/src/components/global-styles/filters-panel.jsx +2 -2
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/inheritance/index.jsx +9 -6
- package/src/components/global-styles/inheritance/test/{index.jsdom.test.jsx → index.browser.test.jsx} +34 -28
- package/src/components/global-styles/inherited-value-context.js +1 -9
- package/src/components/global-styles/state-control-badges.jsx +0 -1
- package/src/components/global-styles/state-control.jsx +12 -3
- package/src/components/global-styles/style.scss +68 -0
- package/src/components/global-styles/test/{color-panel.jsdom.test.jsx → color-panel.browser.test.jsx} +53 -54
- package/src/components/global-styles/test/inherited-value-context-core.jsdom.test.js +17 -26
- package/src/components/global-styles/test/{typography-panel-core.jsdom.test.jsx → typography-panel-core.browser.test.jsx} +84 -39
- package/src/components/global-styles/test/{typography-panel.jsdom.test.jsx → typography-panel.browser.test.jsx} +80 -122
- package/src/components/global-styles/text-shadow-panel.tsx +257 -0
- package/src/components/global-styles/typography-panel.jsx +52 -13
- package/src/components/global-styles/typography-utils.js +2 -2
- package/src/components/global-styles/utils.js +1 -1
- package/src/components/html-element-control/index.jsx +2 -2
- package/src/components/iframe/index.jsx +1 -1
- package/src/components/iframe/use-scale-canvas.js +1 -1
- package/src/components/image-size-control/index.jsx +2 -2
- package/src/components/inner-blocks/index.jsx +9 -1
- package/src/components/inner-content/index.jsx +1 -1
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +7 -33
- package/src/components/inserter/block-patterns-tab/utils.js +44 -0
- package/src/components/inserter/hooks/use-block-types-state.js +2 -2
- package/src/components/inserter/hooks/use-insertion-point.js +1 -1
- package/src/components/inserter/hooks/use-patterns-state.js +1 -1
- package/src/components/inserter/media-tab/media-panel.jsx +9 -9
- package/src/components/inserter/media-tab/media-preview.jsx +1 -1
- package/src/components/inserter-list-item/index.jsx +1 -1
- package/src/components/inserter-list-item/style.scss +2 -2
- package/src/components/inspector-controls/list-view-content-popover.jsx +1 -1
- package/src/components/link-control/search-results.jsx +1 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/link-control/test/index.jsdom.test.jsx +38 -110
- package/src/components/link-control/test/keyboard-selection.browser.test.js +110 -0
- package/src/components/link-control/use-search-handler.js +8 -3
- package/src/components/list-view/branch.jsx +1 -1
- package/src/components/list-view/drop-indicator.jsx +3 -3
- package/src/components/list-view/index.jsx +1 -1
- package/src/components/list-view/style.scss +1 -9
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/list-view/utils.js +1 -1
- package/src/components/media-replace-flow/index.jsx +4 -1
- package/src/components/navigable-toolbar/test/index.browser.test.js +6 -7
- package/src/components/plain-text/README.md +3 -2
- package/src/components/plain-text/content.scss +0 -1
- package/src/components/plain-text/index.jsx +2 -3
- package/src/components/plain-text/style.scss +4 -0
- package/src/components/preset-input-control/index.jsx +2 -2
- package/src/components/preset-input-control/test/index.jsdom.test.jsx +0 -56
- package/src/components/preset-input-control/test/interaction.browser.test.js +63 -0
- package/src/components/provider/index.jsx +5 -3
- package/src/components/provider/use-block-sync.js +5 -5
- package/src/components/publish-date-time-picker/index.jsx +1 -1
- package/src/components/resizable-box-popover/index.jsx +1 -1
- package/src/components/resolution-tool/index.jsx +2 -2
- package/src/components/responsive-block-control/style.scss +1 -2
- package/src/components/responsive-block-control/test/index.jsdom.test.jsx +2 -2
- package/src/components/rich-text/event-listeners/enter.js +16 -23
- package/src/components/rich-text/format-edit.jsx +1 -1
- package/src/components/rich-text/index.jsx +39 -2
- package/src/components/rich-text/multiline.jsx +11 -3
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
- package/src/components/spacing-sizes-control/test/index.jsdom.test.jsx +0 -21
- package/src/components/spacing-sizes-control/test/select.browser.test.js +58 -0
- package/src/components/typewriter/index.jsx +1 -1
- package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +1 -1
- package/src/components/use-block-commands/index.js +1 -1
- package/src/components/use-block-drop-zone/test/index.js +2 -2
- package/src/components/writing-flow/index.jsx +8 -0
- package/src/components/writing-flow/use-clipboard-handler.js +1 -1
- package/src/components/writing-flow/use-selection-observer.js +15 -6
- package/src/content.scss +1 -0
- package/src/hooks/align.jsx +22 -6
- package/src/hooks/background.jsx +1 -1
- package/src/hooks/block-bindings.jsx +1 -1
- package/src/hooks/block-hooks.scss +0 -6
- package/src/hooks/border.jsx +2 -2
- package/src/hooks/contrast-checker.js +1 -1
- package/src/hooks/dimensions.jsx +2 -2
- package/src/hooks/duotone.jsx +3 -3
- package/src/hooks/elements.jsx +3 -3
- package/src/hooks/fit-text.jsx +1 -1
- package/src/hooks/gap.js +2 -4
- package/src/hooks/index.js +3 -1
- package/src/hooks/layout-child.jsx +3 -4
- package/src/hooks/layout.jsx +17 -18
- package/src/hooks/position.jsx +5 -36
- package/src/hooks/states.jsx +6 -2
- package/src/hooks/test/layout.jsdom.test.js +44 -1
- package/src/hooks/text-shadow.ts +105 -0
- package/src/hooks/typography.jsx +58 -30
- package/src/hooks/utils.jsx +23 -1
- package/src/layouts/grid.jsx +2 -2
- package/src/layouts/test/flex.jsdom.test.jsx +4 -3
- package/src/layouts/test/utils.js +48 -1
- package/src/layouts/utils.js +19 -0
- package/src/private-apis.js +4 -0
- package/src/store/actions.js +50 -10
- package/src/store/private-selectors.js +5 -5
- package/src/store/reducer.js +6 -6
- package/src/store/selectors.js +3 -3
- package/src/store/test/actions.jsdom.test.js +60 -0
- package/src/style.scss +1 -0
- package/src/utils/get-font-styles-and-weights.ts +1 -1
- package/src/utils/transform-styles/index.ts +1 -1
- package/build/hooks/cross-origin-isolation.cjs +0 -56
- package/build/hooks/cross-origin-isolation.cjs.map +0 -7
- package/build-module/hooks/cross-origin-isolation.mjs +0 -54
- package/build-module/hooks/cross-origin-isolation.mjs.map +0 -7
- package/src/components/block-icon/test/__snapshots__/index.jsdom.test.jsx.snap +0 -27
- package/src/components/block-icon/test/index.jsdom.test.jsx +0 -67
- package/src/hooks/cross-origin-isolation.js +0 -73
- package/src/hooks/test/cross-origin-isolation.jsdom.test.js +0 -173
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/dimensions-panel.jsx"],
|
|
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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",
|
|
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\tisGlobalStylesInheritanceIndicatorUIEnabled,\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 = isGlobalStylesInheritanceIndicatorUIEnabled(),\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\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\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\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\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
|
}
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
getInheritanceProps,
|
|
28
28
|
InheritanceToolsPanelItem,
|
|
29
29
|
InheritanceResetButton,
|
|
30
|
-
|
|
30
|
+
isGlobalStylesInheritanceIndicatorUIEnabled
|
|
31
31
|
} from "./inheritance/index.mjs";
|
|
32
32
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
33
33
|
var EMPTY_ARRAY = [];
|
|
@@ -148,7 +148,7 @@ function FiltersPanel({
|
|
|
148
148
|
settings,
|
|
149
149
|
panelId,
|
|
150
150
|
defaultControls = DEFAULT_CONTROLS,
|
|
151
|
-
showInheritanceLabelIndicators =
|
|
151
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceIndicatorUIEnabled()
|
|
152
152
|
}) {
|
|
153
153
|
const decodeValue = (rawValue) => getValueFromVariable({ settings }, "", rawValue);
|
|
154
154
|
const inheritanceProps = (isInherited, hasLocalOverride, className) => getInheritanceProps(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/filters-panel.jsx"],
|
|
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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
|
|
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\tisGlobalStylesInheritanceIndicatorUIEnabled,\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 = isGlobalStylesInheritanceIndicatorUIEnabled(),\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
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/hooks.js"],
|
|
4
|
-
"sourcesContent": ["import { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t\tdefaultFontSizes: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\t// Preserve gradient settings when background.gradient is supported.\n\t\tif (\n\t\t\t! supportedStyles.includes( 'background' ) &&\n\t\t\t! supportedStyles.includes( 'backgroundGradient' )\n\t\t) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textAlign',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'textIndent',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// Text indent needs explicit handling since it may not be in parent settings.\n\t\tif ( supportedStyles.includes( 'textIndent' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextIndent:\n\t\t\t\t\tupdatedSettings.typography?.textIndent ?? 'subsequent',\n\t\t\t};\n\t\t}\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\t// Check if spacing type is supported before adding sides.\n\t\t\tif ( sides?.length && updatedSettings.spacing?.[ key ] ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'aspectRatio', 'height', 'minHeight', 'minWidth', 'width' ].forEach(\n\t\t\t( key ) => {\n\t\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\t\t\t[ key ]: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[\n\t\t\t[ 'backgroundImage', 'backgroundImage' ],\n\t\t\t[ 'backgroundSize', 'backgroundSize' ],\n\t\t\t[ 'backgroundGradient', 'gradient' ],\n\t\t].forEach( ( [ styleKey, settingKey ] ) => {\n\t\t\tif ( ! supportedStyles.includes( styleKey ) ) {\n\t\t\t\tupdatedSettings.background = {\n\t\t\t\t\t...updatedSettings.background,\n\t\t\t\t\t[ settingKey ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n\n/**\n * Derives the color/gradient palette data and encode/decode helpers shared by\n * the Color, Background, and Typography style panels, so the common preamble\n * is defined once rather than repeated in each panel.\n *\n * @param {Object} settings Style settings object.\n *\n * @return {Object} Shared color/gradient palette data and helpers.\n */\nexport function useColorGradientSettings( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst areCustomGradientsEnabled = settings?.color?.customGradient;\n\tconst allColors = useMemo(\n\t\t() => colors.flatMap( ( { colors: originColors } ) => originColors ),\n\t\t[ colors ]\n\t);\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\t// When a slug is provided it is used directly: two presets can share the\n\t// same gradient string, and matching by string alone would collapse them\n\t// onto whichever entry appears first. Without a slug, fall back to\n\t// matching the gradient string against the presets.\n\tconst encodeGradientValue = ( gradientValue, slug ) => {\n\t\tif ( slug ) {\n\t\t\treturn 'var:preset|gradient|' + slug;\n\t\t}\n\t\tconst allGradients = gradients.flatMap(\n\t\t\t( { gradients: originGradients } ) => originGradients\n\t\t);\n\t\tconst gradientObject = allGradients.find(\n\t\t\t( { gradient } ) => gradient === gradientValue\n\t\t);\n\t\treturn gradientObject\n\t\t\t? 'var:preset|gradient|' + gradientObject.slug\n\t\t\t: gradientValue;\n\t};\n\treturn {\n\t\tcolors,\n\t\tgradients,\n\t\tallColors,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors: colors.length > 0 || areCustomSolidsEnabled,\n\t\thasGradientColors: gradients.length > 0 || areCustomGradientsEnabled,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t};\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { _x } from '@wordpress/i18n';\nimport { getValueFromVariable } from '@wordpress/global-styles-engine';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * React hook that overrides a global settings object with block and element specific settings.\n *\n * @param {Object} parentSettings Settings object.\n * @param {blockName?} blockName Block name.\n * @param {element?} element Element name.\n *\n * @return {Object} Merge of settings and supports.\n */\nexport function useSettingsForBlockElement(\n\tparentSettings,\n\tblockName,\n\telement\n) {\n\tconst { supportedStyles, supports } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tsupportedStyles: unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t).getSupportedStyles( blockName, element ),\n\t\t\t\tsupports:\n\t\t\t\t\tselect( blocksStore ).getBlockType( blockName )?.supports,\n\t\t\t};\n\t\t},\n\t\t[ blockName, element ]\n\t);\n\n\treturn useMemo( () => {\n\t\tconst updatedSettings = { ...parentSettings };\n\n\t\tif ( ! supportedStyles.includes( 'fontSize' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontSizes: {},\n\t\t\t\tcustomFontSize: false,\n\t\t\t\tdefaultFontSizes: false,\n\t\t\t};\n\t\t}\n\n\t\tif ( ! supportedStyles.includes( 'fontFamily' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\tfontFamilies: {},\n\t\t\t};\n\t\t}\n\n\t\tupdatedSettings.color = {\n\t\t\t...updatedSettings.color,\n\t\t\ttext:\n\t\t\t\tupdatedSettings.color?.text &&\n\t\t\t\tsupportedStyles.includes( 'color' ),\n\t\t\tbackground:\n\t\t\t\tupdatedSettings.color?.background &&\n\t\t\t\t( supportedStyles.includes( 'background' ) ||\n\t\t\t\t\tsupportedStyles.includes( 'backgroundColor' ) ),\n\t\t\tbutton:\n\t\t\t\tupdatedSettings.color?.button &&\n\t\t\t\tsupportedStyles.includes( 'buttonColor' ),\n\t\t\theading:\n\t\t\t\tupdatedSettings.color?.heading &&\n\t\t\t\tsupportedStyles.includes( 'headingColor' ),\n\t\t\tlink:\n\t\t\t\tupdatedSettings.color?.link &&\n\t\t\t\tsupportedStyles.includes( 'linkColor' ),\n\t\t\tcaption:\n\t\t\t\tupdatedSettings.color?.caption &&\n\t\t\t\tsupportedStyles.includes( 'captionColor' ),\n\t\t};\n\n\t\t// Some blocks can enable background colors but disable gradients.\n\t\t// Preserve gradient settings when background.gradient is supported.\n\t\tif (\n\t\t\t! supportedStyles.includes( 'background' ) &&\n\t\t\t! supportedStyles.includes( 'backgroundGradient' )\n\t\t) {\n\t\t\tupdatedSettings.color.gradients = [];\n\t\t\tupdatedSettings.color.customGradient = false;\n\t\t}\n\n\t\t// If filters are not supported by the block/element, disable duotone.\n\t\tif ( ! supportedStyles.includes( 'filter' ) ) {\n\t\t\tupdatedSettings.color.defaultDuotone = false;\n\t\t\tupdatedSettings.color.customDuotone = false;\n\t\t}\n\n\t\t[\n\t\t\t'lineHeight',\n\t\t\t'fontStyle',\n\t\t\t'fontWeight',\n\t\t\t'letterSpacing',\n\t\t\t'textAlign',\n\t\t\t'textTransform',\n\t\t\t'textDecoration',\n\t\t\t'textIndent',\n\t\t\t'textShadow',\n\t\t\t'writingMode',\n\t\t].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.typography = {\n\t\t\t\t\t...updatedSettings.typography,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t// Text indent needs explicit handling since it may not be in parent settings.\n\t\tif ( supportedStyles.includes( 'textIndent' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextIndent:\n\t\t\t\t\tupdatedSettings.typography?.textIndent ?? 'subsequent',\n\t\t\t};\n\t\t}\n\n\t\t// The column-count style is named text column to reduce confusion with\n\t\t// the columns block and manage expectations from the support.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/33587\n\t\tif ( ! supportedStyles.includes( 'columnCount' ) ) {\n\t\t\tupdatedSettings.typography = {\n\t\t\t\t...updatedSettings.typography,\n\t\t\t\ttextColumns: false,\n\t\t\t};\n\t\t}\n\n\t\t[ 'contentSize', 'wideSize' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.layout = {\n\t\t\t\t\t...updatedSettings.layout,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'padding', 'margin', 'blockGap' ].forEach( ( key ) => {\n\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst sides = Array.isArray( supports?.spacing?.[ key ] )\n\t\t\t\t? supports?.spacing?.[ key ]\n\t\t\t\t: supports?.spacing?.[ key ]?.sides;\n\t\t\t// Check if spacing type is supported before adding sides.\n\t\t\tif ( sides?.length && updatedSettings.spacing?.[ key ] ) {\n\t\t\t\tupdatedSettings.spacing = {\n\t\t\t\t\t...updatedSettings.spacing,\n\t\t\t\t\t[ key ]: {\n\t\t\t\t\t\t...updatedSettings.spacing?.[ key ],\n\t\t\t\t\t\tsides,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[ 'aspectRatio', 'height', 'minHeight', 'minWidth', 'width' ].forEach(\n\t\t\t( key ) => {\n\t\t\t\tif ( ! supportedStyles.includes( key ) ) {\n\t\t\t\t\tupdatedSettings.dimensions = {\n\t\t\t\t\t\t...updatedSettings.dimensions,\n\t\t\t\t\t\t[ key ]: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\t[ 'radius', 'color', 'style', 'width' ].forEach( ( key ) => {\n\t\t\tif (\n\t\t\t\t! supportedStyles.includes(\n\t\t\t\t\t'border' + key.charAt( 0 ).toUpperCase() + key.slice( 1 )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tupdatedSettings.border = {\n\t\t\t\t\t...updatedSettings.border,\n\t\t\t\t\t[ key ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\t[\n\t\t\t[ 'backgroundImage', 'backgroundImage' ],\n\t\t\t[ 'backgroundSize', 'backgroundSize' ],\n\t\t\t[ 'backgroundGradient', 'gradient' ],\n\t\t].forEach( ( [ styleKey, settingKey ] ) => {\n\t\t\tif ( ! supportedStyles.includes( styleKey ) ) {\n\t\t\t\tupdatedSettings.background = {\n\t\t\t\t\t...updatedSettings.background,\n\t\t\t\t\t[ settingKey ]: false,\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\tupdatedSettings.shadow = supportedStyles.includes( 'shadow' )\n\t\t\t? updatedSettings.shadow\n\t\t\t: false;\n\n\t\treturn updatedSettings;\n\t}, [ parentSettings, supportedStyles, supports ] );\n}\n\nexport function useColorsPerOrigin( settings ) {\n\tconst customColors = settings?.color?.palette?.custom;\n\tconst themeColors = settings?.color?.palette?.theme;\n\tconst defaultColors = settings?.color?.palette?.default;\n\tconst shouldDisplayDefaultColors = settings?.color?.defaultPalette;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeColors && themeColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tcolors: themeColors,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultColors &&\n\t\t\tdefaultColors &&\n\t\t\tdefaultColors.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tcolors: defaultColors,\n\t\t\t} );\n\t\t}\n\t\tif ( customColors && customColors.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tcolors: customColors,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomColors,\n\t\tthemeColors,\n\t\tdefaultColors,\n\t\tshouldDisplayDefaultColors,\n\t] );\n}\n\nexport function useGradientsPerOrigin( settings ) {\n\tconst customGradients = settings?.color?.gradients?.custom;\n\tconst themeGradients = settings?.color?.gradients?.theme;\n\tconst defaultGradients = settings?.color?.gradients?.default;\n\tconst shouldDisplayDefaultGradients = settings?.color?.defaultGradients;\n\n\treturn useMemo( () => {\n\t\tconst result = [];\n\t\tif ( themeGradients && themeGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates this palette comes from the theme.'\n\t\t\t\t),\n\t\t\t\tgradients: themeGradients,\n\t\t\t} );\n\t\t}\n\t\tif (\n\t\t\tshouldDisplayDefaultGradients &&\n\t\t\tdefaultGradients &&\n\t\t\tdefaultGradients.length\n\t\t) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates this palette comes from WordPress.'\n\t\t\t\t),\n\t\t\t\tgradients: defaultGradients,\n\t\t\t} );\n\t\t}\n\t\tif ( customGradients && customGradients.length ) {\n\t\t\tresult.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates this palette is created by the user.'\n\t\t\t\t),\n\t\t\t\tgradients: customGradients,\n\t\t\t} );\n\t\t}\n\t\treturn result;\n\t}, [\n\t\tcustomGradients,\n\t\tthemeGradients,\n\t\tdefaultGradients,\n\t\tshouldDisplayDefaultGradients,\n\t] );\n}\n\n/**\n * Derives the color/gradient palette data and encode/decode helpers shared by\n * the Color, Background, and Typography style panels, so the common preamble\n * is defined once rather than repeated in each panel.\n *\n * @param {Object} settings Style settings object.\n *\n * @return {Object} Shared color/gradient palette data and helpers.\n */\nexport function useColorGradientSettings( settings ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst gradients = useGradientsPerOrigin( settings );\n\tconst areCustomSolidsEnabled = settings?.color?.custom;\n\tconst areCustomGradientsEnabled = settings?.color?.customGradient;\n\tconst allColors = useMemo(\n\t\t() => colors.flatMap( ( { colors: originColors } ) => originColors ),\n\t\t[ colors ]\n\t);\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\t// When a slug is provided it is used directly: two presets can share the\n\t// same gradient string, and matching by string alone would collapse them\n\t// onto whichever entry appears first. Without a slug, fall back to\n\t// matching the gradient string against the presets.\n\tconst encodeGradientValue = ( gradientValue, slug ) => {\n\t\tif ( slug ) {\n\t\t\treturn 'var:preset|gradient|' + slug;\n\t\t}\n\t\tconst allGradients = gradients.flatMap(\n\t\t\t( { gradients: originGradients } ) => originGradients\n\t\t);\n\t\tconst gradientObject = allGradients.find(\n\t\t\t( { gradient } ) => gradient === gradientValue\n\t\t);\n\t\treturn gradientObject\n\t\t\t? 'var:preset|gradient|' + gradientObject.slug\n\t\t\t: gradientValue;\n\t};\n\treturn {\n\t\tcolors,\n\t\tgradients,\n\t\tallColors,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors: colors.length > 0 || areCustomSolidsEnabled,\n\t\thasGradientColors: gradients.length > 0 || areCustomGradientsEnabled,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t};\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import { reset as resetIcon } from "@wordpress/icons";
|
|
9
9
|
import { __ } from "@wordpress/i18n";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
var
|
|
11
|
+
var isGlobalStylesInheritanceIndicatorUIEnabled = () => !!window.__experimentalGlobalStylesInheritanceUI;
|
|
12
12
|
function getInheritanceProps(isInherited, hasLocalOverride, baseClassName) {
|
|
13
13
|
const inheritedOnly = !!isInherited && !hasLocalOverride;
|
|
14
14
|
const className = clsx(baseClassName, {
|
|
@@ -103,6 +103,6 @@ export {
|
|
|
103
103
|
InheritanceResetButton,
|
|
104
104
|
InheritanceToolsPanelItem,
|
|
105
105
|
getInheritanceProps,
|
|
106
|
-
|
|
106
|
+
isGlobalStylesInheritanceIndicatorUIEnabled
|
|
107
107
|
};
|
|
108
108
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/global-styles/inheritance/index.jsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport {\n\tButton,\n\tIcon as WCIcon,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Whether the inspector
|
|
5
|
-
"mappings": ";AAAA,OAAO,UAAU;AACjB;AAAA,EACC;AAAA,EACA,QAAQ;AAAA,EACR,gCAAgC;AAAA,OAC1B;AACP,SAAS,SAAS,iBAAiB;AACnC,SAAS,UAAU;
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport {\n\tButton,\n\tIcon as WCIcon,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Whether the inspector marks up which controls are showing an inherited\n * Global Styles value.\n *\n * This gates the indicators only: the dotted underline on an inherited label\n * and the blue dot that resets a local override. The inherited values\n * themselves reach the controls either way. Behind the\n * `gutenberg-global-styles-inheritance-ui` Gutenberg experiment, so the\n * indicators are off unless someone opts in on the Experiments screen.\n *\n * Evaluated per call rather than once at module scope, so tests can toggle\n * the experiment and so a later move to a store-backed setting only has to\n * change this one place. Always returns a boolean: callers pass the result\n * down as a prop, and `undefined` would trigger a receiving component's own\n * default parameter.\n *\n * @return {boolean} Whether the indicator treatment is enabled.\n */\nexport const isGlobalStylesInheritanceIndicatorUIEnabled = () =>\n\t!! window.__experimentalGlobalStylesInheritanceUI;\n\n/**\n * Returns props to spread onto a wrapping `<InheritanceToolsPanelItem>`\n * so its descendant label picks up the inherited-from-Global-Styles\n * visual treatment.\n *\n * When `isInherited` is true without a local override, the descendant\n * label text receives the inherited-from-Global-Styles treatment\n * (dotted underline). No dot is shown.\n *\n * When `hasLocalOverride` is true, a small reset dot is rendered as a\n * sibling of the control exposing a \"Reset to inherited value\" action.\n *\n * The two states are mutually exclusive at the source. If both are passed,\n * only the local-override class is returned.\n *\n * Returned object shape allows direct spread:\n *\n * <InheritanceToolsPanelItem\n * { ...getInheritanceProps( isInherited, hasLocalOverride ) }\n * label={ __( 'Line height' ) }\n * …\n * >\n *\n * @param {boolean} isInherited Control is inheriting at rest.\n * @param {boolean} hasLocalOverride Local override is set AND\n * there is an inherited value\n * being overridden.\n * @param {string|Array|Object} [baseClassName] Optional className(s) to fold\n * into the returned `className`.\n *\n * @return {{ className?: string, isInherited: boolean, hasLocalOverride: boolean }} Props for the wrapping\n * `InheritanceToolsPanelItem`.\n */\nexport function getInheritanceProps(\n\tisInherited,\n\thasLocalOverride,\n\tbaseClassName\n) {\n\tconst inheritedOnly = !! isInherited && ! hasLocalOverride;\n\tconst className = clsx( baseClassName, {\n\t\t'is-inherited-from-global-styles': inheritedOnly,\n\t\t'has-local-override-from-global-styles': !! hasLocalOverride,\n\t} );\n\treturn {\n\t\t...( className ? { className } : {} ),\n\t\tisInherited: inheritedOnly,\n\t\thasLocalOverride: !! hasLocalOverride,\n\t};\n}\n\n/**\n * Renders the small always-visible reset button shown next to a control\n * that holds a local override of an inherited Global Styles value. Used by\n * `<InheritanceToolsPanelItem>` and the color/gradient controls.\n *\n * At rest the button shows a blue dot signalling the local override. On\n * hover/focus the dot morphs into the `reset` (dash) icon and the button\n * exposes a \"Reset to inherited value\" tooltip. Activating it clears the\n * override so the control falls back to its inherited value — the same\n * action the `ToolsPanel` menu performs via `onDeselect`.\n *\n * @param {Object} props\n * @param {Function} props.onResetToInherited Reset handler.\n * @param {string} [props.className] Optional className for the button.\n *\n * @return {Element} The reset button.\n */\nexport function InheritanceResetButton( { onResetToInherited, className } ) {\n\treturn (\n\t\t// Intentionally small (14×14) circular control; exempt from the\n\t\t// 40px default-size enforcement rule.\n\t\t// eslint-disable-next-line @wordpress/components-no-missing-40px-size-prop\n\t\t<Button\n\t\t\t__next40pxDefaultSize={ false }\n\t\t\tlabel={ __( 'Reset to inherited value' ) }\n\t\t\t// The button has children (the dot + reset icon), so the tooltip\n\t\t\t// is not shown automatically; opt in explicitly.\n\t\t\tshowTooltip\n\t\t\tclassName={ clsx(\n\t\t\t\t'has-local-override-from-global-styles__reset',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\t// Prevent the click from reaching any wrapping\n\t\t\t\t// `<label htmlFor>` association, which would otherwise\n\t\t\t\t// focus/activate the inner control.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonResetToInherited?.();\n\t\t\t} }\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"has-local-override-from-global-styles__dot\"\n\t\t\t/>\n\t\t\t<WCIcon\n\t\t\t\tclassName=\"has-local-override-from-global-styles__reset-icon\"\n\t\t\t\ticon={ resetIcon }\n\t\t\t/>\n\t\t</Button>\n\t);\n}\n\n/**\n * A `ToolsPanelItem` that reflects whether its control's value is inherited\n * from Global Styles or locally overridden. The two states are mutually\n * exclusive.\n *\n * - Inherited: the control label receives the inherited-from-Global-Styles\n * treatment (dotted underline) via the `is-inherited-from-global-styles`\n * class applied through `getInheritanceProps`. No dot is shown.\n * - Local override: a reset dot is rendered as a plain sibling of the control\n * at the item's inline-end — never nested in the label — exposing the same\n * one-click reset the `ToolsPanel` options menu performs via `onDeselect`.\n *\n * Controls that render their own reset control next to a custom toggle (color,\n * background image) pass `showLocalOverrideActionsInLabel={ false }` so the\n * item does not render a second reset dot.\n *\n * @param {Object} props\n * @param {?string} props.className Item className.\n * @param {boolean} props.isInherited Value is inherited at rest. Accepted so the `getInheritanceProps` spread does not leak onto the underlying `ToolsPanelItem`; the inherited treatment is applied via `className`.\n * @param {boolean} props.hasLocalOverride Local override is set.\n * @param {import('react').ReactNode} props.label Control label.\n * @param {?Function} props.onDeselect Reset handler.\n * @param {boolean} [props.showLocalOverrideActionsInLabel] Render the reset dot here (default true).\n * @param {boolean} [props.hasInlineEndToggle] The control renders a 24x24 toggle (linked/unlink, units switch) at its inline-end; offset the reset dot to sit just to its inline-start (default false).\n * @param {import('react').ReactNode} props.children The control.\n *\n * @return {Element} The panel item.\n */\nexport function InheritanceToolsPanelItem( {\n\tclassName,\n\t// Destructured (and unused) so the `getInheritanceProps` spread does not\n\t// leak `isInherited` onto the underlying `ToolsPanelItem`. The inherited\n\t// treatment is applied purely via `className`\n\t// (`is-inherited-from-global-styles`).\n\tisInherited,\n\thasLocalOverride,\n\tlabel,\n\tonDeselect,\n\tshowLocalOverrideActionsInLabel = true,\n\thasInlineEndToggle = false,\n\tchildren,\n\t...rest\n} ) {\n\tconst showResetAffordance =\n\t\thasLocalOverride && showLocalOverrideActionsInLabel;\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName={ className }\n\t\t\tlabel={ label }\n\t\t\tonDeselect={ onDeselect }\n\t\t\t{ ...rest }\n\t\t>\n\t\t\t{ children }\n\t\t\t{ showResetAffordance && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'global-styles-inheritance-affordance', {\n\t\t\t\t\t\t'global-styles-inheritance-affordance--offset-toggle':\n\t\t\t\t\t\t\thasInlineEndToggle,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<InheritanceResetButton onResetToInherited={ onDeselect } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</ToolsPanelItem>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,UAAU;AACjB;AAAA,EACC;AAAA,EACA,QAAQ;AAAA,EACR,gCAAgC;AAAA,OAC1B;AACP,SAAS,SAAS,iBAAiB;AACnC,SAAS,UAAU;AA+FjB,SAmBC,KAnBD;AA3EK,IAAM,8CAA8C,MAC1D,CAAC,CAAE,OAAO;AAmCJ,SAAS,oBACf,aACA,kBACA,eACC;AACD,QAAM,gBAAgB,CAAC,CAAE,eAAe,CAAE;AAC1C,QAAM,YAAY,KAAM,eAAe;AAAA,IACtC,mCAAmC;AAAA,IACnC,yCAAyC,CAAC,CAAE;AAAA,EAC7C,CAAE;AACF,SAAO;AAAA,IACN,GAAK,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,IAClC,aAAa;AAAA,IACb,kBAAkB,CAAC,CAAE;AAAA,EACtB;AACD;AAmBO,SAAS,uBAAwB,EAAE,oBAAoB,UAAU,GAAI;AAC3E;AAAA;AAAA;AAAA;AAAA,IAIC;AAAA,MAAC;AAAA;AAAA,QACA,uBAAwB;AAAA,QACxB,OAAQ,GAAI,0BAA2B;AAAA,QAGvC,aAAW;AAAA,QACX,WAAY;AAAA,UACX;AAAA,UACA;AAAA,QACD;AAAA,QACA,SAAU,CAAE,UAAW;AAItB,gBAAM,eAAe;AACrB,gBAAM,gBAAgB;AACtB,+BAAqB;AAAA,QACtB;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,eAAY;AAAA,cACZ,WAAU;AAAA;AAAA,UACX;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,WAAU;AAAA,cACV,MAAO;AAAA;AAAA,UACR;AAAA;AAAA;AAAA,IACD;AAAA;AAEF;AA8BO,SAAS,0BAA2B;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kCAAkC;AAAA,EAClC,qBAAqB;AAAA,EACrB;AAAA,EACA,GAAG;AACJ,GAAI;AACH,QAAM,sBACL,oBAAoB;AAErB,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACE,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,uBACD;AAAA,UAAC;AAAA;AAAA,YACA,WAAY,KAAM,wCAAwC;AAAA,cACzD,uDACC;AAAA,YACF,CAAE;AAAA,YAEF,8BAAC,0BAAuB,oBAAqB,YAAa;AAAA;AAAA,QAC3D;AAAA;AAAA;AAAA,EAEF;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -12,9 +12,7 @@ import { getVariationNameFromClass } from "../../hooks/block-style-variation.mjs
|
|
|
12
12
|
import { useBlockEditContext } from "../block-edit/context.mjs";
|
|
13
13
|
import BlockContext from "../block-context/index.mjs";
|
|
14
14
|
import { unlock } from "../../lock-unlock.mjs";
|
|
15
|
-
import { isGlobalStylesInheritanceEnabled } from "./inheritance/index.mjs";
|
|
16
15
|
var { resolveStyle } = unlock(globalStylesEnginePrivateApis);
|
|
17
|
-
var NO_RESOLVED_STYLE = { value: void 0, sources: void 0 };
|
|
18
16
|
function useRawGlobalStyles() {
|
|
19
17
|
const { rawGlobalStylesData, links } = useSelect((select) => {
|
|
20
18
|
const settings = select(blockEditorStore).getSettings();
|
|
@@ -114,9 +112,6 @@ function useResolvedStyle(blockName, className, selectedState = null) {
|
|
|
114
112
|
);
|
|
115
113
|
const globalStyles = useRawGlobalStyles();
|
|
116
114
|
return useMemo(() => {
|
|
117
|
-
if (!isGlobalStylesInheritanceEnabled()) {
|
|
118
|
-
return NO_RESOLVED_STYLE;
|
|
119
|
-
}
|
|
120
115
|
if (!blockName) {
|
|
121
116
|
return { value: {}, sources: {} };
|
|
122
117
|
}
|