@wordpress/block-editor 16.0.0 → 16.1.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 +18 -0
- package/README.md +8 -0
- package/build/components/alignment-control/ui.cjs +2 -4
- package/build/components/alignment-control/ui.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +40 -10
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-alignment-control/ui.cjs +5 -3
- package/build/components/block-alignment-control/ui.cjs.map +2 -2
- package/build/components/block-inspector/index.cjs +73 -46
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/block-html.cjs +4 -1
- package/build/components/block-list/block-html.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs +5 -2
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-handler.cjs +2 -3
- package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
- package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
- package/build/components/block-parent-selector/index.cjs +2 -2
- package/build/components/block-parent-selector/index.cjs.map +2 -2
- package/build/components/block-toolbar/switch-section-style.cjs +4 -2
- package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
- package/build/components/block-tools/empty-block-inserter.cjs +2 -7
- package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
- package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
- package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
- package/build/components/border-radius-control/utils.cjs +8 -58
- package/build/components/border-radius-control/utils.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +5 -3
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/dimension-control/index.cjs +30 -20
- package/build/components/dimension-control/index.cjs.map +3 -3
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
- package/build/components/editor-styles/index.cjs +9 -1
- package/build/components/editor-styles/index.cjs.map +2 -2
- package/build/components/global-styles/background-panel.cjs +66 -25
- package/build/components/global-styles/background-panel.cjs.map +3 -3
- package/build/components/global-styles/border-panel.cjs +153 -55
- package/build/components/global-styles/border-panel.cjs.map +3 -3
- package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
- package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
- package/build/components/global-styles/color-panel.cjs +63 -17
- package/build/components/global-styles/color-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +242 -64
- package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
- package/build/components/global-styles/filters-panel.cjs +59 -20
- package/build/components/global-styles/filters-panel.cjs.map +3 -3
- package/build/components/global-styles/hooks.cjs +4 -1
- package/build/components/global-styles/hooks.cjs.map +2 -2
- package/build/components/global-styles/inheritance/index.cjs +142 -0
- package/build/components/global-styles/inheritance/index.cjs.map +7 -0
- package/build/components/global-styles/inherited-value-context.cjs +173 -0
- package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
- package/build/components/global-styles/shadow-panel-components.cjs +38 -20
- package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
- package/build/components/global-styles/state-control.cjs +1 -1
- package/build/components/global-styles/state-control.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +271 -78
- package/build/components/global-styles/typography-panel.cjs.map +3 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/line-height-control/index.cjs +1 -1
- package/build/components/line-height-control/index.cjs.map +2 -2
- package/build/components/link-control/index.cjs +3 -1
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs +2 -1
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/provider/block-refs-provider.cjs +8 -2
- package/build/components/provider/block-refs-provider.cjs.map +2 -2
- package/build/components/provider/index.cjs +1 -1
- package/build/components/provider/index.cjs.map +2 -2
- package/build/components/provider/use-block-sync.cjs +18 -6
- package/build/components/provider/use-block-sync.cjs.map +2 -2
- package/build/components/provider/use-media-upload-settings.cjs +3 -1
- package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
- package/build/components/rich-text/index.cjs +23 -13
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/spacing-sizes-control/utils.cjs +6 -19
- package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
- package/build/components/text-indent-control/index.cjs +8 -2
- package/build/components/text-indent-control/index.cjs.map +2 -2
- package/build/components/url-input/index.cjs +303 -344
- package/build/components/url-input/index.cjs.map +3 -3
- package/build/components/writing-flow/index.cjs +2 -0
- package/build/components/writing-flow/index.cjs.map +3 -3
- package/build/components/writing-flow/use-arrow-nav.cjs +24 -1
- package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
- package/build/components/writing-flow/use-click-selection.cjs +28 -2
- package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
- package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
- package/build/components/writing-flow/use-editable-root.cjs +5 -42
- package/build/components/writing-flow/use-editable-root.cjs.map +2 -2
- package/build/components/writing-flow/use-home-end.cjs +1 -1
- package/build/components/writing-flow/use-home-end.cjs.map +2 -2
- package/build/components/writing-flow/use-selection-observer.cjs +17 -13
- package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
- package/build/components/writing-flow/utils.cjs +3 -14
- package/build/components/writing-flow/utils.cjs.map +2 -2
- package/build/hooks/background.cjs +13 -10
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-style-variation.cjs +4 -45
- package/build/hooks/block-style-variation.cjs.map +3 -3
- package/build/hooks/border.cjs +19 -4
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/custom-css.cjs +6 -2
- package/build/hooks/custom-css.cjs.map +2 -2
- package/build/hooks/dimensions.cjs +15 -4
- package/build/hooks/dimensions.cjs.map +2 -2
- package/build/hooks/duotone.cjs +26 -14
- package/build/hooks/duotone.cjs.map +3 -3
- package/build/hooks/elements.cjs +14 -4
- package/build/hooks/elements.cjs.map +2 -2
- package/build/hooks/line-height.cjs +1 -2
- package/build/hooks/line-height.cjs.map +2 -2
- package/build/hooks/typography.cjs +13 -4
- package/build/hooks/typography.cjs.map +2 -2
- package/build/private-apis.cjs +9 -5
- package/build/private-apis.cjs.map +3 -3
- package/build/store/actions.cjs +9 -4
- package/build/store/actions.cjs.map +2 -2
- package/build/store/private-selectors.cjs +28 -1
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +6 -6
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs +23 -0
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/native-undo.cjs +55 -0
- package/build/utils/native-undo.cjs.map +7 -0
- package/build-module/components/alignment-control/ui.mjs +2 -4
- package/build-module/components/alignment-control/ui.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +43 -10
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-alignment-control/ui.mjs +5 -3
- package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +74 -46
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/block-html.mjs +4 -1
- package/build-module/components/block-list/block-html.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs +5 -2
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +2 -3
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
- package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
- package/build-module/components/block-parent-selector/index.mjs +2 -2
- package/build-module/components/block-parent-selector/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
- package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
- package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
- package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
- package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
- package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
- package/build-module/components/border-radius-control/utils.mjs +11 -53
- package/build-module/components/border-radius-control/utils.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +5 -3
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/dimension-control/index.mjs +30 -20
- package/build-module/components/dimension-control/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/editor-styles/index.mjs +9 -1
- package/build-module/components/editor-styles/index.mjs.map +2 -2
- package/build-module/components/global-styles/background-panel.mjs +71 -29
- package/build-module/components/global-styles/background-panel.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +157 -56
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
- package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
- package/build-module/components/global-styles/color-panel.mjs +63 -17
- package/build-module/components/global-styles/color-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/filters-panel.mjs +64 -21
- package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
- package/build-module/components/global-styles/hooks.mjs +4 -1
- package/build-module/components/global-styles/hooks.mjs.map +2 -2
- package/build-module/components/global-styles/inheritance/index.mjs +108 -0
- package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
- package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
- package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
- package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
- package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
- package/build-module/components/global-styles/state-control.mjs +1 -1
- package/build-module/components/global-styles/state-control.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +276 -79
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/line-height-control/index.mjs +1 -1
- package/build-module/components/line-height-control/index.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs +4 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +2 -1
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/provider/block-refs-provider.mjs +8 -2
- package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +1 -1
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-sync.mjs +18 -6
- package/build-module/components/provider/use-block-sync.mjs.map +2 -2
- package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
- package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +28 -14
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
- package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
- package/build-module/components/text-indent-control/index.mjs +8 -2
- package/build-module/components/text-indent-control/index.mjs.map +2 -2
- package/build-module/components/url-input/index.mjs +306 -353
- package/build-module/components/url-input/index.mjs.map +2 -2
- package/build-module/components/writing-flow/index.mjs +2 -0
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs +24 -1
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
- package/build-module/components/writing-flow/use-click-selection.mjs +28 -2
- package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
- package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
- package/build-module/components/writing-flow/use-editable-root.mjs +5 -37
- package/build-module/components/writing-flow/use-editable-root.mjs.map +2 -2
- package/build-module/components/writing-flow/use-home-end.mjs +1 -1
- package/build-module/components/writing-flow/use-home-end.mjs.map +2 -2
- package/build-module/components/writing-flow/use-selection-observer.mjs +18 -14
- package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
- package/build-module/components/writing-flow/utils.mjs +2 -11
- package/build-module/components/writing-flow/utils.mjs.map +2 -2
- package/build-module/hooks/background.mjs +13 -10
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-style-variation.mjs +8 -44
- package/build-module/hooks/block-style-variation.mjs.map +2 -2
- package/build-module/hooks/border.mjs +19 -4
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/custom-css.mjs +7 -3
- package/build-module/hooks/custom-css.mjs.map +2 -2
- package/build-module/hooks/dimensions.mjs +15 -4
- package/build-module/hooks/dimensions.mjs.map +2 -2
- package/build-module/hooks/duotone.mjs +20 -9
- package/build-module/hooks/duotone.mjs.map +2 -2
- package/build-module/hooks/elements.mjs +14 -4
- package/build-module/hooks/elements.mjs.map +2 -2
- package/build-module/hooks/line-height.mjs +1 -2
- package/build-module/hooks/line-height.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +13 -4
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/private-apis.mjs +7 -3
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +9 -4
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +29 -1
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +6 -6
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs +23 -0
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/native-undo.mjs +29 -0
- package/build-module/utils/native-undo.mjs.map +7 -0
- package/build-style/content-rtl.css +10 -18
- package/build-style/content.css +10 -18
- package/build-style/style-rtl.css +150 -7
- package/build-style/style.css +150 -7
- package/package.json +40 -41
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
- package/src/components/alignment-control/ui.js +2 -4
- package/src/components/background-image-control/index.js +74 -37
- package/src/components/background-image-control/style.scss +13 -4
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
- package/src/components/block-alignment-control/test/index.js +1 -1
- package/src/components/block-alignment-control/ui.js +4 -2
- package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
- package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-inspector/index.js +60 -31
- package/src/components/block-list/block-html.js +5 -0
- package/src/components/block-list/content.scss +1 -11
- package/src/components/block-list/use-block-props/index.js +5 -1
- package/src/components/block-list/use-block-props/use-focus-handler.js +9 -8
- package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
- package/src/components/block-parent-selector/index.js +5 -2
- package/src/components/block-toolbar/switch-section-style.js +5 -2
- package/src/components/block-tools/empty-block-inserter.js +3 -7
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
- package/src/components/block-vertical-alignment-control/test/index.js +18 -2
- package/src/components/block-vertical-alignment-control/ui.js +3 -5
- package/src/components/border-radius-control/test/utils.js +0 -41
- package/src/components/border-radius-control/utils.js +16 -107
- package/src/components/button-block-appender/content.scss +6 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
- package/src/components/colors-gradients/control.js +6 -3
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
- package/src/components/dimension-control/index.js +13 -1
- package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
- package/src/components/editor-styles/index.js +16 -1
- package/src/components/global-styles/background-panel.js +107 -34
- package/src/components/global-styles/border-panel.js +219 -48
- package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
- package/src/components/global-styles/color-panel.js +92 -11
- package/src/components/global-styles/dimensions-panel.js +422 -71
- package/src/components/global-styles/filters-panel.js +88 -28
- package/src/components/global-styles/hooks.js +8 -1
- package/src/components/global-styles/inheritance/index.js +204 -0
- package/src/components/global-styles/inheritance/style.scss +184 -0
- package/src/components/global-styles/inheritance/test/index.js +281 -0
- package/src/components/global-styles/inherited-value-context.js +271 -0
- package/src/components/global-styles/shadow-panel-components.js +48 -26
- package/src/components/global-styles/state-control.js +2 -2
- package/src/components/global-styles/test/background-panel.js +338 -1
- package/src/components/global-styles/test/border-panel.js +441 -0
- package/src/components/global-styles/test/color-panel.js +182 -2
- package/src/components/global-styles/test/dimensions-panel.js +753 -0
- package/src/components/global-styles/test/filters-panel.js +194 -0
- package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
- package/src/components/global-styles/test/inherited-value-context.js +454 -0
- package/src/components/global-styles/test/typography-panel-core.js +185 -0
- package/src/components/global-styles/test/typography-panel.js +849 -12
- package/src/components/global-styles/typography-panel.js +449 -100
- package/src/components/image-editor/style.scss +33 -0
- package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
- package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
- package/src/components/line-height-control/index.js +1 -1
- package/src/components/link-control/index.js +7 -2
- package/src/components/preset-input-control/index.js +4 -1
- package/src/components/provider/block-refs-provider.js +12 -2
- package/src/components/provider/index.js +2 -2
- package/src/components/provider/use-block-sync.js +18 -6
- package/src/components/provider/use-media-upload-settings.js +2 -0
- package/src/components/rich-text/index.js +37 -16
- package/src/components/spacing-sizes-control/test/utils.js +16 -5
- package/src/components/spacing-sizes-control/utils.js +11 -28
- package/src/components/text-indent-control/index.js +8 -0
- package/src/components/url-input/index.js +363 -431
- package/src/components/url-input/test/index.js +592 -0
- package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
- package/src/components/writing-flow/index.js +2 -0
- package/src/components/writing-flow/use-arrow-nav.js +51 -1
- package/src/components/writing-flow/use-click-selection.js +54 -3
- package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
- package/src/components/writing-flow/use-editable-root.js +7 -77
- package/src/components/writing-flow/use-home-end.js +17 -9
- package/src/components/writing-flow/use-selection-observer.js +32 -15
- package/src/components/writing-flow/utils.js +3 -24
- package/src/hooks/background.js +26 -21
- package/src/hooks/block-fields/rich-text/styles.scss +1 -1
- package/src/hooks/block-style-variation.js +8 -74
- package/src/hooks/border.js +19 -4
- package/src/hooks/custom-css.js +15 -6
- package/src/hooks/dimensions.js +17 -4
- package/src/hooks/duotone.js +26 -8
- package/src/hooks/elements.js +14 -3
- package/src/hooks/line-height.js +0 -1
- package/src/hooks/test/inherited-value-wiring.js +411 -0
- package/src/hooks/test/preset-round-trip.js +456 -0
- package/src/hooks/typography.js +35 -23
- package/src/private-apis.js +11 -2
- package/src/store/actions.js +10 -4
- package/src/store/private-selectors.js +57 -1
- package/src/store/reducer.js +9 -9
- package/src/store/selectors.js +56 -8
- package/src/store/test/private-selectors.js +160 -1
- package/src/style.scss +2 -0
- package/src/utils/native-undo.js +56 -0
- package/build/components/duotone/utils.cjs +0 -87
- package/build/components/duotone/utils.cjs.map +0 -7
- package/build-module/components/duotone/utils.mjs +0 -59
- package/build-module/components/duotone/utils.mjs.map +0 -7
- package/src/components/duotone/utils.js +0 -90
- package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
// packages/block-editor/src/components/global-styles/background-panel.js
|
|
2
|
-
import {
|
|
3
|
-
__experimentalToolsPanel as ToolsPanel,
|
|
4
|
-
__experimentalToolsPanelItem as ToolsPanelItem
|
|
5
|
-
} from "@wordpress/components";
|
|
2
|
+
import { __experimentalToolsPanel as ToolsPanel } from "@wordpress/components";
|
|
6
3
|
import { useCallback } from "@wordpress/element";
|
|
7
4
|
import { __ } from "@wordpress/i18n";
|
|
8
5
|
import BackgroundImageControl from "../background-image-control/index.mjs";
|
|
@@ -15,6 +12,11 @@ import {
|
|
|
15
12
|
extractPresetSlug,
|
|
16
13
|
encodeColorValueWithPalette
|
|
17
14
|
} from "../../utils/color-values.mjs";
|
|
15
|
+
import {
|
|
16
|
+
getInheritanceProps,
|
|
17
|
+
InheritanceToolsPanelItem,
|
|
18
|
+
isGlobalStylesInheritanceEnabled
|
|
19
|
+
} from "./inheritance/index.mjs";
|
|
18
20
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
19
21
|
var DEFAULT_CONTROLS = {
|
|
20
22
|
backgroundImage: true,
|
|
@@ -83,7 +85,8 @@ function BackgroundImagePanel({
|
|
|
83
85
|
defaultControls = DEFAULT_CONTROLS,
|
|
84
86
|
defaultValues = {},
|
|
85
87
|
headerLabel = __("Background"),
|
|
86
|
-
contrastWarning
|
|
88
|
+
contrastWarning,
|
|
89
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled()
|
|
87
90
|
}) {
|
|
88
91
|
const {
|
|
89
92
|
colors,
|
|
@@ -176,11 +179,11 @@ function BackgroundImagePanel({
|
|
|
176
179
|
};
|
|
177
180
|
const legacyColorGradient = decodeValue(inheritedValue?.color?.gradient);
|
|
178
181
|
const userLegacyColorGradient = decodeValue(value?.color?.gradient);
|
|
179
|
-
const setLegacyColorGradient = (newGradient) => {
|
|
182
|
+
const setLegacyColorGradient = (newGradient, newSlug) => {
|
|
180
183
|
const newValue = setImmutably(
|
|
181
184
|
value,
|
|
182
185
|
["color", "gradient"],
|
|
183
|
-
encodeGradientValue(newGradient)
|
|
186
|
+
encodeGradientValue(newGradient, newSlug)
|
|
184
187
|
);
|
|
185
188
|
newValue.color.background = void 0;
|
|
186
189
|
onChange(newValue);
|
|
@@ -192,15 +195,22 @@ function BackgroundImagePanel({
|
|
|
192
195
|
const inheritedGradient = decodeValue(
|
|
193
196
|
inheritedValue?.background?.gradient ?? inheritedValue?.color?.gradient
|
|
194
197
|
);
|
|
195
|
-
const setGradient = (newGradient) => {
|
|
198
|
+
const setGradient = (newGradient, newSlug) => {
|
|
196
199
|
let newValue = setImmutably(
|
|
197
200
|
value,
|
|
198
201
|
["background", "gradient"],
|
|
199
|
-
encodeGradientValue(newGradient)
|
|
202
|
+
encodeGradientValue(newGradient, newSlug)
|
|
200
203
|
);
|
|
201
204
|
newValue = setImmutably(newValue, ["color", "gradient"], void 0);
|
|
202
205
|
onChange(newValue);
|
|
203
206
|
};
|
|
207
|
+
const inheritanceProps = (isInherited, hasLocalOverride, classNames) => showInheritanceLabelIndicators ? getInheritanceProps(isInherited, hasLocalOverride, classNames) : { className: classNames };
|
|
208
|
+
const inheritedBackgroundImage = hasBackgroundImageValue({
|
|
209
|
+
background: {
|
|
210
|
+
backgroundImage: inheritedValue?.background?.backgroundImage
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
const hasLocalBackgroundImage = hasBackgroundImageValue(value);
|
|
204
214
|
return /* @__PURE__ */ jsxs(
|
|
205
215
|
Wrapper,
|
|
206
216
|
{
|
|
@@ -211,9 +221,14 @@ function BackgroundImagePanel({
|
|
|
211
221
|
headerLabel,
|
|
212
222
|
children: [
|
|
213
223
|
showBackgroundImageControl && /* @__PURE__ */ jsx(
|
|
214
|
-
|
|
224
|
+
InheritanceToolsPanelItem,
|
|
215
225
|
{
|
|
216
|
-
|
|
226
|
+
...inheritanceProps(
|
|
227
|
+
inheritedBackgroundImage && !hasLocalBackgroundImage,
|
|
228
|
+
hasLocalBackgroundImage && inheritedBackgroundImage,
|
|
229
|
+
"block-editor-color-gradient-item"
|
|
230
|
+
),
|
|
231
|
+
showLocalOverrideActionsInLabel: false,
|
|
217
232
|
hasValue: () => hasBackgroundImageValue(value),
|
|
218
233
|
label: __("Image"),
|
|
219
234
|
onDeselect: resetBackground,
|
|
@@ -227,7 +242,8 @@ function BackgroundImagePanel({
|
|
|
227
242
|
settings,
|
|
228
243
|
inheritedValue,
|
|
229
244
|
defaultControls,
|
|
230
|
-
defaultValues
|
|
245
|
+
defaultValues,
|
|
246
|
+
showInheritanceLabelIndicators
|
|
231
247
|
}
|
|
232
248
|
)
|
|
233
249
|
}
|
|
@@ -241,27 +257,29 @@ function BackgroundImagePanel({
|
|
|
241
257
|
isShownByDefault: defaultControls.backgroundColor,
|
|
242
258
|
indicators: [userBackgroundColor ?? backgroundColor],
|
|
243
259
|
contrastWarning,
|
|
260
|
+
showInheritanceLabelIndicators,
|
|
261
|
+
isPlaceholder: userBackgroundColor === void 0 && backgroundColor !== void 0,
|
|
262
|
+
hasInheritedValue: backgroundColor !== void 0,
|
|
244
263
|
tabs: [
|
|
245
264
|
{
|
|
246
265
|
key: "background",
|
|
247
266
|
label: __("Color"),
|
|
248
|
-
inheritedValue:
|
|
249
|
-
//
|
|
250
|
-
//
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
// only holds the global styles fallback, so reading
|
|
254
|
-
// the slug from `inheritedValue` alone would miss it
|
|
255
|
-
// and two same-hex presets would both appear selected.
|
|
267
|
+
inheritedValue: backgroundColor,
|
|
268
|
+
// The picker selects by slug: `userSlug` when the
|
|
269
|
+
// block has its own value, otherwise
|
|
270
|
+
// `inheritedSlug`. Hex matching would mark two
|
|
271
|
+
// same-hex presets as both selected.
|
|
256
272
|
inheritedSlug: extractPresetSlug(
|
|
257
|
-
value?.color?.background,
|
|
258
|
-
"color"
|
|
259
|
-
) ?? extractPresetSlug(
|
|
260
273
|
inheritedValue?.color?.background,
|
|
261
274
|
"color"
|
|
262
275
|
),
|
|
276
|
+
userSlug: extractPresetSlug(
|
|
277
|
+
value?.color?.background,
|
|
278
|
+
"color"
|
|
279
|
+
),
|
|
263
280
|
setValue: setBackgroundColor,
|
|
264
|
-
userValue: userBackgroundColor
|
|
281
|
+
userValue: userBackgroundColor,
|
|
282
|
+
isPlaceholder: userBackgroundColor === void 0 && backgroundColor !== void 0
|
|
265
283
|
}
|
|
266
284
|
],
|
|
267
285
|
colorGradientControlSettings: {
|
|
@@ -278,15 +296,27 @@ function BackgroundImagePanel({
|
|
|
278
296
|
hasValue: () => hasBackgroundGradientValue(value),
|
|
279
297
|
resetValue: resetGradient,
|
|
280
298
|
isShownByDefault: defaultControls.gradient,
|
|
281
|
-
indicators: [currentGradient],
|
|
299
|
+
indicators: [currentGradient ?? inheritedGradient],
|
|
300
|
+
showInheritanceLabelIndicators,
|
|
301
|
+
isPlaceholder: currentGradient === void 0 && inheritedGradient !== void 0,
|
|
302
|
+
hasInheritedValue: inheritedGradient !== void 0,
|
|
282
303
|
tabs: [
|
|
283
304
|
{
|
|
284
305
|
key: "gradient",
|
|
285
306
|
label: __("Gradient"),
|
|
286
|
-
inheritedValue:
|
|
307
|
+
inheritedValue: inheritedGradient,
|
|
308
|
+
inheritedSlug: extractPresetSlug(
|
|
309
|
+
inheritedValue?.background?.gradient ?? inheritedValue?.color?.gradient,
|
|
310
|
+
"gradient"
|
|
311
|
+
),
|
|
312
|
+
userSlug: extractPresetSlug(
|
|
313
|
+
value?.background?.gradient ?? value?.color?.gradient,
|
|
314
|
+
"gradient"
|
|
315
|
+
),
|
|
287
316
|
setValue: setGradient,
|
|
288
317
|
userValue: currentGradient,
|
|
289
|
-
isGradient: true
|
|
318
|
+
isGradient: true,
|
|
319
|
+
isPlaceholder: currentGradient === void 0 && inheritedGradient !== void 0
|
|
290
320
|
}
|
|
291
321
|
],
|
|
292
322
|
colorGradientControlSettings: {
|
|
@@ -306,14 +336,26 @@ function BackgroundImagePanel({
|
|
|
306
336
|
indicators: [
|
|
307
337
|
userLegacyColorGradient ?? legacyColorGradient
|
|
308
338
|
],
|
|
339
|
+
showInheritanceLabelIndicators,
|
|
340
|
+
isPlaceholder: userLegacyColorGradient === void 0 && legacyColorGradient !== void 0,
|
|
341
|
+
hasInheritedValue: legacyColorGradient !== void 0,
|
|
309
342
|
tabs: [
|
|
310
343
|
{
|
|
311
344
|
key: "gradient",
|
|
312
345
|
label: __("Gradient"),
|
|
313
|
-
inheritedValue:
|
|
346
|
+
inheritedValue: legacyColorGradient,
|
|
347
|
+
inheritedSlug: extractPresetSlug(
|
|
348
|
+
inheritedValue?.color?.gradient,
|
|
349
|
+
"gradient"
|
|
350
|
+
),
|
|
351
|
+
userSlug: extractPresetSlug(
|
|
352
|
+
value?.color?.gradient,
|
|
353
|
+
"gradient"
|
|
354
|
+
),
|
|
314
355
|
setValue: setLegacyColorGradient,
|
|
315
356
|
userValue: userLegacyColorGradient,
|
|
316
|
-
isGradient: true
|
|
357
|
+
isGradient: true,
|
|
358
|
+
isPlaceholder: userLegacyColorGradient === void 0 && legacyColorGradient !== void 0
|
|
317
359
|
}
|
|
318
360
|
],
|
|
319
361
|
colorGradientControlSettings: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/global-styles/background-panel.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BackgroundImageControl from '../background-image-control';\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport { useHasBackgroundColorPanel } from './color-panel';\nimport { useColorGradientSettings } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\n\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n\tbackgroundColor: true,\n\tgradient: true,\n};\n\n/**\n * Checks site settings to see if the requested feature's control may be used.\n *\n * @param {Object} settings Site settings.\n * @param {string} feature Background feature to check.\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundControl( settings, feature ) {\n\treturn settings?.background?.[ feature ];\n}\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * The panel is also shown when the block has color panel background\n * support (`settings.color.background`), because background color and\n * the legacy `color.gradient` control are rendered here.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\tconst hasBackgroundColor = useHasBackgroundColorPanel( settings );\n\tconst { backgroundImage, gradient } = settings?.background || {};\n\treturn backgroundImage || gradient || hasBackgroundColor;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Checks if there is a current value in the background gradient block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background gradient value set.\n */\nexport function hasBackgroundGradientValue( style ) {\n\treturn (\n\t\t'string' === typeof style?.background?.gradient &&\n\t\tstyle?.background?.gradient !== ''\n\t);\n}\n\n/**\n * Checks if there is a current value for the background color (written to\n * `color.background`).\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background color value set.\n */\nexport function hasBackgroundColorValue( style ) {\n\treturn !! style?.color?.background;\n}\n\n/**\n * Checks if there is a current value in the legacy `color.gradient` location\n * (used by blocks with color panel gradient support that haven't adopted the\n * `background.gradient` block support).\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a legacy color gradient value set.\n */\nexport function hasLegacyColorGradientValue( style ) {\n\treturn !! style?.color?.gradient;\n}\n\nexport function BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\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={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\tclassName=\"background-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"background-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background' ),\n\tcontrastWarning,\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tallColors,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\tconst hasBackgroundGradientControl = useHasBackgroundControl(\n\t\tsettings,\n\t\t'gradient'\n\t);\n\tconst hasColorPanelBackgroundSupport =\n\t\tuseHasBackgroundColorPanel( settings );\n\tconst showBackgroundColorControl =\n\t\thasColorPanelBackgroundSupport && hasSolidColors;\n\t// New `background.gradient` block support — gradient lives under the\n\t// `background` style path.\n\tconst showBackgroundGradientControl =\n\t\thasGradientColors && hasBackgroundGradientControl;\n\t// Legacy `color.gradient` path — only rendered when the block has\n\t// color panel background support and hasn't adopted the newer\n\t// `background.gradient` support. Keeps the UI consistent for blocks\n\t// that still write gradients to `color.gradient`.\n\tconst showLegacyColorGradientControl =\n\t\thasColorPanelBackgroundSupport &&\n\t\thasGradientColors &&\n\t\t! hasBackgroundGradientControl;\n\tconst showBackgroundImageControl = useHasBackgroundControl(\n\t\tsettings,\n\t\t'backgroundImage'\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\tconst clearsColorBackground = showBackgroundColorControl;\n\t\t\tconst clearsColorGradient =\n\t\t\t\thasBackgroundGradientControl || showLegacyColorGradientControl;\n\t\t\tif ( ! clearsColorBackground && ! clearsColorGradient ) {\n\t\t\t\treturn { ...previousValue, background: {} };\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\tbackground: {},\n\t\t\t\tcolor: {\n\t\t\t\t\t...previousValue?.color,\n\t\t\t\t\t...( clearsColorBackground && { background: undefined } ),\n\t\t\t\t\t...( clearsColorGradient && { gradient: undefined } ),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\thasBackgroundGradientControl,\n\t\t\tshowBackgroundColorControl,\n\t\t\tshowLegacyColorGradientControl,\n\t\t]\n\t);\n\n\tif (\n\t\t! showBackgroundImageControl &&\n\t\t! showBackgroundColorControl &&\n\t\t! showBackgroundGradientControl &&\n\t\t! showLegacyColorGradientControl\n\t) {\n\t\treturn null;\n\t}\n\n\tconst resetBackground = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst resetGradient = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'background', 'gradient' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably( newValue, [ 'color', 'gradient' ], undefined );\n\t\tonChange( newValue );\n\t};\n\n\t// Background color (written to `color.background`).\n\tconst backgroundColor = decodeValue( inheritedValue?.color?.background );\n\tconst userBackgroundColor = decodeValue( value?.color?.background );\n\tconst setBackgroundColor = ( newColor, newSlug ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t);\n\t\t// Legacy `color.gradient` is mutually exclusive with\n\t\t// `color.background`. `background.gradient` is independent and\n\t\t// should not be touched.\n\t\tif ( showLegacyColorGradientControl ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\tconst resetBackgroundColor = () => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tundefined\n\t\t);\n\t\tif ( showLegacyColorGradientControl ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\n\t// Legacy `color.gradient` setters.\n\tconst legacyColorGradient = decodeValue( inheritedValue?.color?.gradient );\n\tconst userLegacyColorGradient = decodeValue( value?.color?.gradient );\n\tconst setLegacyColorGradient = ( newGradient ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient )\n\t\t);\n\t\tnewValue.color.background = undefined;\n\t\tonChange( newValue );\n\t};\n\tconst resetLegacyColorGradient = () =>\n\t\tonChange( setImmutably( value, [ 'color', 'gradient' ], undefined ) );\n\n\t// Get current gradient value, decoding preset slug references.\n\t// Fall back to color.gradient for legacy blocks that haven't migrated\n\t// to background.gradient yet (mirrors block inspector fallback in\n\t// packages/block-editor/src/hooks/background.js).\n\tconst currentGradient = decodeValue(\n\t\tvalue?.background?.gradient ?? value?.color?.gradient\n\t);\n\tconst inheritedGradient = decodeValue(\n\t\tinheritedValue?.background?.gradient ?? inheritedValue?.color?.gradient\n\t);\n\n\t// Set gradient value, encoding preset matches as slug references.\n\t// Also clear color.gradient to migrate from the legacy location,\n\t// matching the block inspector behavior in hooks/background.js.\n\tconst setGradient = ( newGradient ) => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'background', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient )\n\t\t);\n\t\tnewValue = setImmutably( newValue, [ 'color', 'gradient' ], undefined );\n\t\tonChange( newValue );\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\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t{ showBackgroundImageControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tclassName=\"block-editor-color-gradient-item\"\n\t\t\t\t\thasValue={ () => hasBackgroundImageValue( value ) }\n\t\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BackgroundImageControl\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\tdefaultControls={ defaultControls }\n\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBackgroundColorControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\thasValue={ () => hasBackgroundColorValue( value ) }\n\t\t\t\t\tresetValue={ resetBackgroundColor }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundColor }\n\t\t\t\t\tindicators={ [ userBackgroundColor ?? backgroundColor ] }\n\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\t\tlabel: __( 'Color' ),\n\t\t\t\t\t\t\tinheritedValue:\n\t\t\t\t\t\t\t\tuserBackgroundColor ?? backgroundColor,\n\t\t\t\t\t\t\t// Resolve the slug from the same source as the\n\t\t\t\t\t\t\t// displayed value (user value first, then the\n\t\t\t\t\t\t\t// inherited fallback). For a block instance the\n\t\t\t\t\t\t\t// selection lives in `value` while `inheritedValue`\n\t\t\t\t\t\t\t// only holds the global styles fallback, so reading\n\t\t\t\t\t\t\t// the slug from `inheritedValue` alone would miss it\n\t\t\t\t\t\t\t// and two same-hex presets would both appear selected.\n\t\t\t\t\t\t\tinheritedSlug:\n\t\t\t\t\t\t\t\textractPresetSlug(\n\t\t\t\t\t\t\t\t\tvalue?.color?.background,\n\t\t\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t\t\t) ??\n\t\t\t\t\t\t\t\textractPresetSlug(\n\t\t\t\t\t\t\t\t\tinheritedValue?.color?.background,\n\t\t\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsetValue: setBackgroundColor,\n\t\t\t\t\t\t\tuserValue: userBackgroundColor,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tcolors,\n\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showBackgroundGradientControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Gradient' ) }\n\t\t\t\t\thasValue={ () => hasBackgroundGradientValue( value ) }\n\t\t\t\t\tresetValue={ resetGradient }\n\t\t\t\t\tisShownByDefault={ defaultControls.gradient }\n\t\t\t\t\tindicators={ [ currentGradient ] }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\t\tinheritedValue:\n\t\t\t\t\t\t\t\tcurrentGradient ?? inheritedGradient,\n\t\t\t\t\t\t\tsetValue: setGradient,\n\t\t\t\t\t\t\tuserValue: currentGradient,\n\t\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tgradients,\n\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showLegacyColorGradientControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Gradient' ) }\n\t\t\t\t\thasValue={ () => hasLegacyColorGradientValue( value ) }\n\t\t\t\t\tresetValue={ resetLegacyColorGradient }\n\t\t\t\t\tisShownByDefault={ defaultControls.gradient }\n\t\t\t\t\tindicators={ [\n\t\t\t\t\t\tuserLegacyColorGradient ?? legacyColorGradient,\n\t\t\t\t\t] }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\t\tinheritedValue:\n\t\t\t\t\t\t\t\tuserLegacyColorGradient ?? legacyColorGradient,\n\t\t\t\t\t\t\tsetValue: setLegacyColorGradient,\n\t\t\t\t\t\t\tuserValue: userLegacyColorGradient,\n\t\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tgradients,\n\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
-
"mappings": ";AAGA
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalToolsPanel as ToolsPanel } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BackgroundImageControl from '../background-image-control';\nimport ColorGradientDropdownItem from './color-gradient-dropdown-item';\nimport { useHasBackgroundColorPanel } from './color-panel';\nimport { useColorGradientSettings } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport {\n\textractPresetSlug,\n\tencodeColorValueWithPalette,\n} from '../../utils/color-values';\nimport {\n\tgetInheritanceProps,\n\tInheritanceToolsPanelItem,\n\tisGlobalStylesInheritanceEnabled,\n} from './inheritance';\n\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n\tbackgroundColor: true,\n\tgradient: true,\n};\n\n/**\n * Checks site settings to see if the requested feature's control may be used.\n *\n * @param {Object} settings Site settings.\n * @param {string} feature Background feature to check.\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundControl( settings, feature ) {\n\treturn settings?.background?.[ feature ];\n}\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * The panel is also shown when the block has color panel background\n * support (`settings.color.background`), because background color and\n * the legacy `color.gradient` control are rendered here.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\tconst hasBackgroundColor = useHasBackgroundColorPanel( settings );\n\tconst { backgroundImage, gradient } = settings?.background || {};\n\treturn backgroundImage || gradient || hasBackgroundColor;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Checks if there is a current value in the background gradient block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background gradient value set.\n */\nexport function hasBackgroundGradientValue( style ) {\n\treturn (\n\t\t'string' === typeof style?.background?.gradient &&\n\t\tstyle?.background?.gradient !== ''\n\t);\n}\n\n/**\n * Checks if there is a current value for the background color (written to\n * `color.background`).\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background color value set.\n */\nexport function hasBackgroundColorValue( style ) {\n\treturn !! style?.color?.background;\n}\n\n/**\n * Checks if there is a current value in the legacy `color.gradient` location\n * (used by blocks with color panel gradient support that haven't adopted the\n * `background.gradient` block support).\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a legacy color gradient value set.\n */\nexport function hasLegacyColorGradientValue( style ) {\n\treturn !! style?.color?.gradient;\n}\n\nexport function BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\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={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\thasInnerWrapper\n\t\t\tclassName=\"background-block-support-panel\"\n\t\t\t__experimentalFirstVisibleItemClass=\"first\"\n\t\t\t__experimentalLastVisibleItemClass=\"last\"\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<div className=\"background-block-support-panel__inner-wrapper\">\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ToolsPanel>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background' ),\n\tcontrastWarning,\n\tshowInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),\n} ) {\n\tconst {\n\t\tcolors,\n\t\tgradients,\n\t\tallColors,\n\t\tareCustomSolidsEnabled,\n\t\tareCustomGradientsEnabled,\n\t\thasSolidColors,\n\t\thasGradientColors,\n\t\tdecodeValue,\n\t\tencodeGradientValue,\n\t} = useColorGradientSettings( settings );\n\n\tconst hasBackgroundGradientControl = useHasBackgroundControl(\n\t\tsettings,\n\t\t'gradient'\n\t);\n\tconst hasColorPanelBackgroundSupport =\n\t\tuseHasBackgroundColorPanel( settings );\n\tconst showBackgroundColorControl =\n\t\thasColorPanelBackgroundSupport && hasSolidColors;\n\t// New `background.gradient` block support — gradient lives under the\n\t// `background` style path.\n\tconst showBackgroundGradientControl =\n\t\thasGradientColors && hasBackgroundGradientControl;\n\t// Legacy `color.gradient` path — only rendered when the block has\n\t// color panel background support and hasn't adopted the newer\n\t// `background.gradient` support. Keeps the UI consistent for blocks\n\t// that still write gradients to `color.gradient`.\n\tconst showLegacyColorGradientControl =\n\t\thasColorPanelBackgroundSupport &&\n\t\thasGradientColors &&\n\t\t! hasBackgroundGradientControl;\n\tconst showBackgroundImageControl = useHasBackgroundControl(\n\t\tsettings,\n\t\t'backgroundImage'\n\t);\n\n\tconst resetAllFilter = useCallback(\n\t\t( previousValue ) => {\n\t\t\tconst clearsColorBackground = showBackgroundColorControl;\n\t\t\tconst clearsColorGradient =\n\t\t\t\thasBackgroundGradientControl || showLegacyColorGradientControl;\n\t\t\tif ( ! clearsColorBackground && ! clearsColorGradient ) {\n\t\t\t\treturn { ...previousValue, background: {} };\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...previousValue,\n\t\t\t\tbackground: {},\n\t\t\t\tcolor: {\n\t\t\t\t\t...previousValue?.color,\n\t\t\t\t\t...( clearsColorBackground && { background: undefined } ),\n\t\t\t\t\t...( clearsColorGradient && { gradient: undefined } ),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\thasBackgroundGradientControl,\n\t\t\tshowBackgroundColorControl,\n\t\t\tshowLegacyColorGradientControl,\n\t\t]\n\t);\n\n\tif (\n\t\t! showBackgroundImageControl &&\n\t\t! showBackgroundColorControl &&\n\t\t! showBackgroundGradientControl &&\n\t\t! showLegacyColorGradientControl\n\t) {\n\t\treturn null;\n\t}\n\n\tconst resetBackground = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst resetGradient = () => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'background', 'gradient' ],\n\t\t\tundefined\n\t\t);\n\t\tnewValue = setImmutably( newValue, [ 'color', 'gradient' ], undefined );\n\t\tonChange( newValue );\n\t};\n\n\t// Non-cascading root values are already dropped from `inheritedValue` by\n\t// the builder, so inherited reads below are direct.\n\n\t// Background color (written to `color.background`).\n\tconst backgroundColor = decodeValue( inheritedValue?.color?.background );\n\tconst userBackgroundColor = decodeValue( value?.color?.background );\n\tconst setBackgroundColor = ( newColor, newSlug ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tencodeColorValueWithPalette( allColors, newColor, newSlug )\n\t\t);\n\t\t// Legacy `color.gradient` is mutually exclusive with\n\t\t// `color.background`. `background.gradient` is independent and\n\t\t// should not be touched.\n\t\tif ( showLegacyColorGradientControl ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\tconst resetBackgroundColor = () => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'background' ],\n\t\t\tundefined\n\t\t);\n\t\tif ( showLegacyColorGradientControl ) {\n\t\t\tnewValue.color.gradient = undefined;\n\t\t}\n\t\tonChange( newValue );\n\t};\n\n\t// Legacy `color.gradient` setters.\n\tconst legacyColorGradient = decodeValue( inheritedValue?.color?.gradient );\n\tconst userLegacyColorGradient = decodeValue( value?.color?.gradient );\n\tconst setLegacyColorGradient = ( newGradient, newSlug ) => {\n\t\tconst newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'color', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient, newSlug )\n\t\t);\n\t\tnewValue.color.background = undefined;\n\t\tonChange( newValue );\n\t};\n\tconst resetLegacyColorGradient = () =>\n\t\tonChange( setImmutably( value, [ 'color', 'gradient' ], undefined ) );\n\n\t// Get current gradient value, decoding preset slug references.\n\t// Fall back to color.gradient for legacy blocks that haven't migrated\n\t// to background.gradient yet (mirrors block inspector fallback in\n\t// packages/block-editor/src/hooks/background.js).\n\tconst currentGradient = decodeValue(\n\t\tvalue?.background?.gradient ?? value?.color?.gradient\n\t);\n\tconst inheritedGradient = decodeValue(\n\t\tinheritedValue?.background?.gradient ?? inheritedValue?.color?.gradient\n\t);\n\n\t// Set gradient value, encoding preset matches as slug references.\n\t// Also clear color.gradient to migrate from the legacy location,\n\t// matching the block inspector behavior in hooks/background.js.\n\tconst setGradient = ( newGradient, newSlug ) => {\n\t\tlet newValue = setImmutably(\n\t\t\tvalue,\n\t\t\t[ 'background', 'gradient' ],\n\t\t\tencodeGradientValue( newGradient, newSlug )\n\t\t);\n\t\tnewValue = setImmutably( newValue, [ 'color', 'gradient' ], undefined );\n\t\tonChange( newValue );\n\t};\n\n\tconst inheritanceProps = ( isInherited, hasLocalOverride, classNames ) =>\n\t\tshowInheritanceLabelIndicators\n\t\t\t? getInheritanceProps( isInherited, hasLocalOverride, classNames )\n\t\t\t: { className: classNames };\n\n\t// The inherited value arrives already resolved (refs + theme-file pointers)\n\t// with non-cascading root values dropped, so a presence check drives the\n\t// label affordance and matches what `BackgroundImageControl` renders.\n\tconst inheritedBackgroundImage = hasBackgroundImageValue( {\n\t\tbackground: {\n\t\t\tbackgroundImage: inheritedValue?.background?.backgroundImage,\n\t\t},\n\t} );\n\tconst hasLocalBackgroundImage = hasBackgroundImageValue( value );\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\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t{ showBackgroundImageControl && (\n\t\t\t\t<InheritanceToolsPanelItem\n\t\t\t\t\t{ ...inheritanceProps(\n\t\t\t\t\t\tinheritedBackgroundImage && ! hasLocalBackgroundImage,\n\t\t\t\t\t\thasLocalBackgroundImage && inheritedBackgroundImage,\n\t\t\t\t\t\t'block-editor-color-gradient-item'\n\t\t\t\t\t) }\n\t\t\t\t\tshowLocalOverrideActionsInLabel={ false }\n\t\t\t\t\thasValue={ () => hasBackgroundImageValue( value ) }\n\t\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BackgroundImageControl\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\tdefaultControls={ defaultControls }\n\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</InheritanceToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBackgroundColorControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\thasValue={ () => hasBackgroundColorValue( value ) }\n\t\t\t\t\tresetValue={ resetBackgroundColor }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundColor }\n\t\t\t\t\tindicators={ [ userBackgroundColor ?? backgroundColor ] }\n\t\t\t\t\tcontrastWarning={ contrastWarning }\n\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t}\n\t\t\t\t\tisPlaceholder={\n\t\t\t\t\t\tuserBackgroundColor === undefined &&\n\t\t\t\t\t\tbackgroundColor !== undefined\n\t\t\t\t\t}\n\t\t\t\t\thasInheritedValue={ backgroundColor !== undefined }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'background',\n\t\t\t\t\t\t\tlabel: __( 'Color' ),\n\t\t\t\t\t\t\tinheritedValue: backgroundColor,\n\t\t\t\t\t\t\t// The picker selects by slug: `userSlug` when the\n\t\t\t\t\t\t\t// block has its own value, otherwise\n\t\t\t\t\t\t\t// `inheritedSlug`. Hex matching would mark two\n\t\t\t\t\t\t\t// same-hex presets as both selected.\n\t\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tinheritedValue?.color?.background,\n\t\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tvalue?.color?.background,\n\t\t\t\t\t\t\t\t'color'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsetValue: setBackgroundColor,\n\t\t\t\t\t\t\tuserValue: userBackgroundColor,\n\t\t\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\t\t\tuserBackgroundColor === undefined &&\n\t\t\t\t\t\t\t\tbackgroundColor !== undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tcolors,\n\t\t\t\t\t\tdisableCustomColors: ! areCustomSolidsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showBackgroundGradientControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Gradient' ) }\n\t\t\t\t\thasValue={ () => hasBackgroundGradientValue( value ) }\n\t\t\t\t\tresetValue={ resetGradient }\n\t\t\t\t\tisShownByDefault={ defaultControls.gradient }\n\t\t\t\t\tindicators={ [ currentGradient ?? inheritedGradient ] }\n\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t}\n\t\t\t\t\tisPlaceholder={\n\t\t\t\t\t\tcurrentGradient === undefined &&\n\t\t\t\t\t\tinheritedGradient !== undefined\n\t\t\t\t\t}\n\t\t\t\t\thasInheritedValue={ inheritedGradient !== undefined }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\t\tinheritedValue: inheritedGradient,\n\t\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tinheritedValue?.background?.gradient ??\n\t\t\t\t\t\t\t\t\tinheritedValue?.color?.gradient,\n\t\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tvalue?.background?.gradient ??\n\t\t\t\t\t\t\t\t\tvalue?.color?.gradient,\n\t\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsetValue: setGradient,\n\t\t\t\t\t\t\tuserValue: currentGradient,\n\t\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\t\t\tcurrentGradient === undefined &&\n\t\t\t\t\t\t\t\tinheritedGradient !== undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tgradients,\n\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showLegacyColorGradientControl && (\n\t\t\t\t<ColorGradientDropdownItem\n\t\t\t\t\tlabel={ __( 'Gradient' ) }\n\t\t\t\t\thasValue={ () => hasLegacyColorGradientValue( value ) }\n\t\t\t\t\tresetValue={ resetLegacyColorGradient }\n\t\t\t\t\tisShownByDefault={ defaultControls.gradient }\n\t\t\t\t\tindicators={ [\n\t\t\t\t\t\tuserLegacyColorGradient ?? legacyColorGradient,\n\t\t\t\t\t] }\n\t\t\t\t\tshowInheritanceLabelIndicators={\n\t\t\t\t\t\tshowInheritanceLabelIndicators\n\t\t\t\t\t}\n\t\t\t\t\tisPlaceholder={\n\t\t\t\t\t\tuserLegacyColorGradient === undefined &&\n\t\t\t\t\t\tlegacyColorGradient !== undefined\n\t\t\t\t\t}\n\t\t\t\t\thasInheritedValue={ legacyColorGradient !== undefined }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'gradient',\n\t\t\t\t\t\t\tlabel: __( 'Gradient' ),\n\t\t\t\t\t\t\tinheritedValue: legacyColorGradient,\n\t\t\t\t\t\t\tinheritedSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tinheritedValue?.color?.gradient,\n\t\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tuserSlug: extractPresetSlug(\n\t\t\t\t\t\t\t\tvalue?.color?.gradient,\n\t\t\t\t\t\t\t\t'gradient'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsetValue: setLegacyColorGradient,\n\t\t\t\t\t\t\tuserValue: userLegacyColorGradient,\n\t\t\t\t\t\t\tisGradient: true,\n\t\t\t\t\t\t\tisPlaceholder:\n\t\t\t\t\t\t\t\tuserLegacyColorGradient === undefined &&\n\t\t\t\t\t\t\t\tlegacyColorGradient !== undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t\tcolorGradientControlSettings={ {\n\t\t\t\t\t\tgradients,\n\t\t\t\t\t\tdisableCustomGradients: ! areCustomGradientsEnabled,\n\t\t\t\t\t} }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,4BAA4B,kBAAkB;AACvD,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AAKnB,OAAO,4BAA4B;AACnC,OAAO,+BAA+B;AACtC,SAAS,kCAAkC;AAC3C,SAAS,gCAAgC;AACzC,SAAS,sCAAsC;AAC/C,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAkIJ,cAqMD,YArMC;AAhIH,IAAM,mBAAmB;AAAA,EACxB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,UAAU;AACX;AASO,SAAS,wBAAyB,UAAU,SAAU;AAC5D,SAAO,UAAU,aAAc,OAAQ;AACxC;AAcO,SAAS,sBAAuB,UAAW;AACjD,QAAM,qBAAqB,2BAA4B,QAAS;AAChE,QAAM,EAAE,iBAAiB,SAAS,IAAI,UAAU,cAAc,CAAC;AAC/D,SAAO,mBAAmB,YAAY;AACvC;AAUO,SAAS,uBAAwB,OAAQ;AAC/C,SACC,OAAO,YAAY,uBAAuB,UAC1C,OAAO,YAAY,mBAAmB;AAExC;AASO,SAAS,wBAAyB,OAAQ;AAChD,SACC,CAAC,CAAE,OAAO,YAAY,iBAAiB;AAAA,EAEvC,aAAa,OAAO,OAAO,YAAY,mBACvC,CAAC,CAAE,OAAO,YAAY,iBAAiB;AAEzC;AASO,SAAS,2BAA4B,OAAQ;AACnD,SACC,aAAa,OAAO,OAAO,YAAY,YACvC,OAAO,YAAY,aAAa;AAElC;AASO,SAAS,wBAAyB,OAAQ;AAChD,SAAO,CAAC,CAAE,OAAO,OAAO;AACzB;AAUO,SAAS,4BAA6B,OAAQ;AACpD,SAAO,CAAC,CAAE,OAAO,OAAO;AACzB;AAEO,SAAS,qBAAsB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,oBAAoB,+BAA+B;AACzD,QAAM,WAAW,MAAM;AACtB,UAAM,eAAe,eAAgB,KAAM;AAC3C,aAAU,YAAa;AAAA,EACxB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,iBAAe;AAAA,MACf,WAAU;AAAA,MACV,qCAAoC;AAAA,MACpC,oCAAmC;AAAA,MACnC;AAAA,MAEA,8BAAC,SAAI,WAAU,iDACZ,UACH;AAAA;AAAA,EACD;AAEF;AAEe,SAAR,qBAAuC;AAAA,EAC7C,IAAI,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,gBAAgB,CAAC;AAAA,EACjB,cAAc,GAAI,YAAa;AAAA,EAC/B;AAAA,EACA,iCAAiC,iCAAiC;AACnE,GAAI;AACH,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,yBAA0B,QAAS;AAEvC,QAAM,+BAA+B;AAAA,IACpC;AAAA,IACA;AAAA,EACD;AACA,QAAM,iCACL,2BAA4B,QAAS;AACtC,QAAM,6BACL,kCAAkC;AAGnC,QAAM,gCACL,qBAAqB;AAKtB,QAAM,iCACL,kCACA,qBACA,CAAE;AACH,QAAM,6BAA6B;AAAA,IAClC;AAAA,IACA;AAAA,EACD;AAEA,QAAM,iBAAiB;AAAA,IACtB,CAAE,kBAAmB;AACpB,YAAM,wBAAwB;AAC9B,YAAM,sBACL,gCAAgC;AACjC,UAAK,CAAE,yBAAyB,CAAE,qBAAsB;AACvD,eAAO,EAAE,GAAG,eAAe,YAAY,CAAC,EAAE;AAAA,MAC3C;AACA,aAAO;AAAA,QACN,GAAG;AAAA,QACH,YAAY,CAAC;AAAA,QACb,OAAO;AAAA,UACN,GAAG,eAAe;AAAA,UAClB,GAAK,yBAAyB,EAAE,YAAY,OAAU;AAAA,UACtD,GAAK,uBAAuB,EAAE,UAAU,OAAU;AAAA,QACnD;AAAA,MACD;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,MACC,CAAE,8BACF,CAAE,8BACF,CAAE,iCACF,CAAE,gCACD;AACD,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,MACvB;AAAA,IACC;AAAA,MACC;AAAA,MACA,CAAE,cAAc,iBAAkB;AAAA,MAClC;AAAA,IACD;AAAA,EACD;AAED,QAAM,gBAAgB,MAAM;AAC3B,QAAI,WAAW;AAAA,MACd;AAAA,MACA,CAAE,cAAc,UAAW;AAAA,MAC3B;AAAA,IACD;AACA,eAAW,aAAc,UAAU,CAAE,SAAS,UAAW,GAAG,MAAU;AACtE,aAAU,QAAS;AAAA,EACpB;AAMA,QAAM,kBAAkB,YAAa,gBAAgB,OAAO,UAAW;AACvE,QAAM,sBAAsB,YAAa,OAAO,OAAO,UAAW;AAClE,QAAM,qBAAqB,CAAE,UAAU,YAAa;AACnD,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,YAAa;AAAA,MACxB,4BAA6B,WAAW,UAAU,OAAQ;AAAA,IAC3D;AAIA,QAAK,gCAAiC;AACrC,eAAS,MAAM,WAAW;AAAA,IAC3B;AACA,aAAU,QAAS;AAAA,EACpB;AACA,QAAM,uBAAuB,MAAM;AAClC,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,YAAa;AAAA,MACxB;AAAA,IACD;AACA,QAAK,gCAAiC;AACrC,eAAS,MAAM,WAAW;AAAA,IAC3B;AACA,aAAU,QAAS;AAAA,EACpB;AAGA,QAAM,sBAAsB,YAAa,gBAAgB,OAAO,QAAS;AACzE,QAAM,0BAA0B,YAAa,OAAO,OAAO,QAAS;AACpE,QAAM,yBAAyB,CAAE,aAAa,YAAa;AAC1D,UAAM,WAAW;AAAA,MAChB;AAAA,MACA,CAAE,SAAS,UAAW;AAAA,MACtB,oBAAqB,aAAa,OAAQ;AAAA,IAC3C;AACA,aAAS,MAAM,aAAa;AAC5B,aAAU,QAAS;AAAA,EACpB;AACA,QAAM,2BAA2B,MAChC,SAAU,aAAc,OAAO,CAAE,SAAS,UAAW,GAAG,MAAU,CAAE;AAMrE,QAAM,kBAAkB;AAAA,IACvB,OAAO,YAAY,YAAY,OAAO,OAAO;AAAA,EAC9C;AACA,QAAM,oBAAoB;AAAA,IACzB,gBAAgB,YAAY,YAAY,gBAAgB,OAAO;AAAA,EAChE;AAKA,QAAM,cAAc,CAAE,aAAa,YAAa;AAC/C,QAAI,WAAW;AAAA,MACd;AAAA,MACA,CAAE,cAAc,UAAW;AAAA,MAC3B,oBAAqB,aAAa,OAAQ;AAAA,IAC3C;AACA,eAAW,aAAc,UAAU,CAAE,SAAS,UAAW,GAAG,MAAU;AACtE,aAAU,QAAS;AAAA,EACpB;AAEA,QAAM,mBAAmB,CAAE,aAAa,kBAAkB,eACzD,iCACG,oBAAqB,aAAa,kBAAkB,UAAW,IAC/D,EAAE,WAAW,WAAW;AAK5B,QAAM,2BAA2B,wBAAyB;AAAA,IACzD,YAAY;AAAA,MACX,iBAAiB,gBAAgB,YAAY;AAAA,IAC9C;AAAA,EACD,CAAE;AACF,QAAM,0BAA0B,wBAAyB,KAAM;AAE/D,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEE;AAAA,sCACD;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,cACJ,4BAA4B,CAAE;AAAA,cAC9B,2BAA2B;AAAA,cAC3B;AAAA,YACD;AAAA,YACA,iCAAkC;AAAA,YAClC,UAAW,MAAM,wBAAyB,KAAM;AAAA,YAChD,OAAQ,GAAI,OAAQ;AAAA,YACpB,YAAa;AAAA,YACb,kBAAmB,gBAAgB;AAAA,YACnC;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YAGD;AAAA;AAAA,QACD;AAAA,QAEC,8BACD;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,OAAQ;AAAA,YACpB,UAAW,MAAM,wBAAyB,KAAM;AAAA,YAChD,YAAa;AAAA,YACb,kBAAmB,gBAAgB;AAAA,YACnC,YAAa,CAAE,uBAAuB,eAAgB;AAAA,YACtD;AAAA,YACA;AAAA,YAGA,eACC,wBAAwB,UACxB,oBAAoB;AAAA,YAErB,mBAAoB,oBAAoB;AAAA,YACxC,MAAO;AAAA,cACN;AAAA,gBACC,KAAK;AAAA,gBACL,OAAO,GAAI,OAAQ;AAAA,gBACnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKhB,eAAe;AAAA,kBACd,gBAAgB,OAAO;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,kBACT,OAAO,OAAO;AAAA,kBACd;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,eACC,wBAAwB,UACxB,oBAAoB;AAAA,cACtB;AAAA,YACD;AAAA,YACA,8BAA+B;AAAA,cAC9B;AAAA,cACA,qBAAqB,CAAE;AAAA,YACxB;AAAA,YACA;AAAA;AAAA,QACD;AAAA,QAEC,iCACD;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,UAAW;AAAA,YACvB,UAAW,MAAM,2BAA4B,KAAM;AAAA,YACnD,YAAa;AAAA,YACb,kBAAmB,gBAAgB;AAAA,YACnC,YAAa,CAAE,mBAAmB,iBAAkB;AAAA,YACpD;AAAA,YAGA,eACC,oBAAoB,UACpB,sBAAsB;AAAA,YAEvB,mBAAoB,sBAAsB;AAAA,YAC1C,MAAO;AAAA,cACN;AAAA,gBACC,KAAK;AAAA,gBACL,OAAO,GAAI,UAAW;AAAA,gBACtB,gBAAgB;AAAA,gBAChB,eAAe;AAAA,kBACd,gBAAgB,YAAY,YAC3B,gBAAgB,OAAO;AAAA,kBACxB;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,kBACT,OAAO,YAAY,YAClB,OAAO,OAAO;AAAA,kBACf;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,YAAY;AAAA,gBACZ,eACC,oBAAoB,UACpB,sBAAsB;AAAA,cACxB;AAAA,YACD;AAAA,YACA,8BAA+B;AAAA,cAC9B;AAAA,cACA,wBAAwB,CAAE;AAAA,YAC3B;AAAA,YACA;AAAA;AAAA,QACD;AAAA,QAEC,kCACD;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,UAAW;AAAA,YACvB,UAAW,MAAM,4BAA6B,KAAM;AAAA,YACpD,YAAa;AAAA,YACb,kBAAmB,gBAAgB;AAAA,YACnC,YAAa;AAAA,cACZ,2BAA2B;AAAA,YAC5B;AAAA,YACA;AAAA,YAGA,eACC,4BAA4B,UAC5B,wBAAwB;AAAA,YAEzB,mBAAoB,wBAAwB;AAAA,YAC5C,MAAO;AAAA,cACN;AAAA,gBACC,KAAK;AAAA,gBACL,OAAO,GAAI,UAAW;AAAA,gBACtB,gBAAgB;AAAA,gBAChB,eAAe;AAAA,kBACd,gBAAgB,OAAO;AAAA,kBACvB;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,kBACT,OAAO,OAAO;AAAA,kBACd;AAAA,gBACD;AAAA,gBACA,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,YAAY;AAAA,gBACZ,eACC,4BAA4B,UAC5B,wBAAwB;AAAA,cAC1B;AAAA,YACD;AAAA,YACA,8BAA+B;AAAA,cAC9B;AAAA,cACA,wBAAwB,CAAE;AAAA,YAC3B;AAAA,YACA;AAAA;AAAA,QACD;AAAA;AAAA;AAAA,EAEF;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
__experimentalHasSplitBorders as hasSplitBorders,
|
|
5
5
|
__experimentalIsDefinedBorder as isDefinedBorder,
|
|
6
6
|
__experimentalToolsPanel as ToolsPanel,
|
|
7
|
-
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
8
7
|
BaseControl
|
|
9
8
|
} from "@wordpress/components";
|
|
10
9
|
import { useCallback, useMemo } from "@wordpress/element";
|
|
@@ -16,6 +15,11 @@ import { useToolsPanelDropdownMenuProps } from "./utils.mjs";
|
|
|
16
15
|
import { setImmutably } from "../../utils/object.mjs";
|
|
17
16
|
import { useBorderPanelLabel } from "../../hooks/border.mjs";
|
|
18
17
|
import { ShadowPopover, useShadowPresets } from "./shadow-panel-components.mjs";
|
|
18
|
+
import {
|
|
19
|
+
getInheritanceProps,
|
|
20
|
+
InheritanceToolsPanelItem,
|
|
21
|
+
isGlobalStylesInheritanceEnabled
|
|
22
|
+
} from "./inheritance/index.mjs";
|
|
19
23
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
24
|
function useHasBorderPanel(settings) {
|
|
21
25
|
const controls = Object.values(useHasBorderPanelControls(settings));
|
|
@@ -85,7 +89,8 @@ function BorderPanel({
|
|
|
85
89
|
settings,
|
|
86
90
|
panelId,
|
|
87
91
|
name,
|
|
88
|
-
defaultControls = DEFAULT_CONTROLS
|
|
92
|
+
defaultControls = DEFAULT_CONTROLS,
|
|
93
|
+
showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled()
|
|
89
94
|
}) {
|
|
90
95
|
const colors = useColorsPerOrigin(settings);
|
|
91
96
|
const areCustomSolidsEnabled = settings?.color?.custom;
|
|
@@ -93,6 +98,11 @@ function BorderPanel({
|
|
|
93
98
|
(rawValue) => getValueFromVariable({ settings }, "", rawValue),
|
|
94
99
|
[settings]
|
|
95
100
|
);
|
|
101
|
+
const inheritanceProps = (isInherited, hasLocalOverride, className) => getInheritanceProps(
|
|
102
|
+
showInheritanceLabelIndicators && isInherited,
|
|
103
|
+
showInheritanceLabelIndicators && hasLocalOverride,
|
|
104
|
+
className
|
|
105
|
+
);
|
|
96
106
|
const encodeColorValue = (colorValue) => {
|
|
97
107
|
const allColors = colors.flatMap(
|
|
98
108
|
({ colors: originColors }) => originColors
|
|
@@ -102,52 +112,98 @@ function BorderPanel({
|
|
|
102
112
|
);
|
|
103
113
|
return colorObject ? "var:preset|color|" + colorObject.slug : colorValue;
|
|
104
114
|
};
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
const decodeBorder = useCallback(
|
|
116
|
+
(source) => {
|
|
117
|
+
if (!source) {
|
|
118
|
+
return void 0;
|
|
119
|
+
}
|
|
120
|
+
if (hasSplitBorders(source)) {
|
|
121
|
+
const out = { ...source };
|
|
122
|
+
["top", "right", "bottom", "left"].forEach((side) => {
|
|
123
|
+
out[side] = {
|
|
124
|
+
...out[side],
|
|
125
|
+
color: decodeValue(out[side]?.color)
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
...source,
|
|
132
|
+
color: source.color ? decodeValue(source.color) : void 0
|
|
133
|
+
};
|
|
134
|
+
},
|
|
135
|
+
[decodeValue]
|
|
136
|
+
);
|
|
137
|
+
const localBorder = useMemo(
|
|
138
|
+
() => decodeBorder(value?.border),
|
|
139
|
+
[value?.border, decodeBorder]
|
|
140
|
+
);
|
|
141
|
+
const inheritedBorder = useMemo(
|
|
142
|
+
() => decodeBorder(inheritedValue?.border),
|
|
143
|
+
[inheritedValue?.border, decodeBorder]
|
|
144
|
+
);
|
|
145
|
+
const isBorderPlaceholder = !isDefinedBorder(value?.border) && !!inheritedBorder && isDefinedBorder(inheritedBorder);
|
|
146
|
+
const border = isBorderPlaceholder ? inheritedBorder : localBorder;
|
|
121
147
|
const setBorder = (newBorder) => onChange({ ...value, border: newBorder });
|
|
122
148
|
const showBorderColor = useHasBorderColorControl(settings);
|
|
123
149
|
const showBorderStyle = useHasBorderStyleControl(settings);
|
|
124
150
|
const showBorderWidth = useHasBorderWidthControl(settings);
|
|
125
151
|
const showBorderRadius = useHasBorderRadiusControl(settings);
|
|
126
|
-
const
|
|
127
|
-
if (typeof
|
|
128
|
-
return decodeValue(
|
|
152
|
+
const localBorderRadius = useMemo(() => {
|
|
153
|
+
if (typeof value?.border?.radius !== "object") {
|
|
154
|
+
return decodeValue(value?.border?.radius);
|
|
129
155
|
}
|
|
130
156
|
return {
|
|
131
|
-
topLeft: decodeValue(
|
|
132
|
-
topRight: decodeValue(
|
|
133
|
-
bottomLeft: decodeValue(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
157
|
+
topLeft: decodeValue(value?.border?.radius?.topLeft),
|
|
158
|
+
topRight: decodeValue(value?.border?.radius?.topRight),
|
|
159
|
+
bottomLeft: decodeValue(value?.border?.radius?.bottomLeft),
|
|
160
|
+
bottomRight: decodeValue(value?.border?.radius?.bottomRight)
|
|
161
|
+
};
|
|
162
|
+
}, [value?.border?.radius, decodeValue]);
|
|
163
|
+
const inheritedBorderRadius = useMemo(() => {
|
|
164
|
+
const rawRadius = inheritedValue?.border?.radius;
|
|
165
|
+
if (typeof rawRadius !== "object") {
|
|
166
|
+
return decodeValue(rawRadius);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
topLeft: decodeValue(rawRadius?.topLeft),
|
|
170
|
+
topRight: decodeValue(rawRadius?.topRight),
|
|
171
|
+
bottomLeft: decodeValue(rawRadius?.bottomLeft),
|
|
172
|
+
bottomRight: decodeValue(rawRadius?.bottomRight)
|
|
139
173
|
};
|
|
140
174
|
}, [inheritedValue?.border?.radius, decodeValue]);
|
|
141
|
-
const setBorderRadius = (newBorderRadius) => setBorder({ ...border, radius: newBorderRadius });
|
|
175
|
+
const setBorderRadius = (newBorderRadius) => setBorder({ ...value?.border, radius: newBorderRadius });
|
|
142
176
|
const hasBorderRadius = () => {
|
|
143
177
|
const borderValues = value?.border?.radius;
|
|
144
178
|
if (typeof borderValues === "object") {
|
|
145
|
-
return Object.entries(borderValues).some(
|
|
179
|
+
return Object.entries(borderValues).some(([, v]) => !!v);
|
|
146
180
|
}
|
|
147
181
|
return !!borderValues;
|
|
148
182
|
};
|
|
183
|
+
const isBorderRadiusPlaceholder = !hasBorderRadius() && inheritedBorderRadius !== void 0 && inheritedBorderRadius !== "";
|
|
184
|
+
const borderRadius = useMemo(() => {
|
|
185
|
+
if (!isBorderRadiusPlaceholder) {
|
|
186
|
+
return localBorderRadius;
|
|
187
|
+
}
|
|
188
|
+
if (typeof inheritedBorderRadius === "string") {
|
|
189
|
+
return inheritedBorderRadius;
|
|
190
|
+
}
|
|
191
|
+
const obj = inheritedBorderRadius;
|
|
192
|
+
if (!obj) {
|
|
193
|
+
return localBorderRadius;
|
|
194
|
+
}
|
|
195
|
+
const all = obj.topLeft && obj.topLeft === obj.topRight && obj.topLeft === obj.bottomLeft && obj.topLeft === obj.bottomRight ? obj.topLeft : void 0;
|
|
196
|
+
return { all, ...obj };
|
|
197
|
+
}, [
|
|
198
|
+
isBorderRadiusPlaceholder,
|
|
199
|
+
localBorderRadius,
|
|
200
|
+
inheritedBorderRadius
|
|
201
|
+
]);
|
|
149
202
|
const hasShadowControl = useHasShadowControl(settings);
|
|
150
|
-
const
|
|
203
|
+
const localShadow = decodeValue(value?.shadow);
|
|
204
|
+
const inheritedShadow = decodeValue(inheritedValue?.shadow);
|
|
205
|
+
const isShadowPlaceholder = localShadow === void 0 && inheritedShadow !== void 0 && inheritedShadow !== "";
|
|
206
|
+
const shadow = isShadowPlaceholder ? inheritedShadow : localShadow;
|
|
151
207
|
const shadowPresets = settings?.shadow?.presets ?? {};
|
|
152
208
|
const mergedShadowPresets = shadowPresets.custom ?? shadowPresets.theme ?? shadowPresets.default ?? [];
|
|
153
209
|
const setShadow = (newValue) => {
|
|
@@ -162,8 +218,16 @@ function BorderPanel({
|
|
|
162
218
|
)
|
|
163
219
|
);
|
|
164
220
|
};
|
|
221
|
+
const setShadowWithInheritedCommit = (newValue) => {
|
|
222
|
+
if (isShadowPlaceholder && newValue === void 0) {
|
|
223
|
+
setShadow(inheritedShadow);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
setShadow(newValue);
|
|
227
|
+
};
|
|
165
228
|
const hasShadow = () => !!value?.shadow;
|
|
166
229
|
const resetShadow = () => setShadow(void 0);
|
|
230
|
+
const hasShadowLocalOverride = showInheritanceLabelIndicators && hasShadow() && inheritedShadow !== void 0;
|
|
167
231
|
const resetBorder = () => {
|
|
168
232
|
if (hasBorderRadius()) {
|
|
169
233
|
return setBorder({ radius: value?.border?.radius });
|
|
@@ -184,7 +248,10 @@ function BorderPanel({
|
|
|
184
248
|
} else if (updatedBorder) {
|
|
185
249
|
updatedBorder.color = encodeColorValue(updatedBorder.color);
|
|
186
250
|
}
|
|
187
|
-
setBorder({
|
|
251
|
+
setBorder({
|
|
252
|
+
...updatedBorder,
|
|
253
|
+
radius: value?.border?.radius
|
|
254
|
+
});
|
|
188
255
|
};
|
|
189
256
|
const resetAllFilter = useCallback((previousValue) => {
|
|
190
257
|
return {
|
|
@@ -209,37 +276,63 @@ function BorderPanel({
|
|
|
209
276
|
panelId,
|
|
210
277
|
label,
|
|
211
278
|
children: [
|
|
212
|
-
(showBorderWidth || showBorderColor) && /* @__PURE__ */
|
|
213
|
-
|
|
279
|
+
(showBorderWidth || showBorderColor) && /* @__PURE__ */ jsxs(
|
|
280
|
+
InheritanceToolsPanelItem,
|
|
214
281
|
{
|
|
282
|
+
...inheritanceProps(
|
|
283
|
+
isBorderPlaceholder,
|
|
284
|
+
isDefinedBorder(value?.border) && !!inheritedBorder && isDefinedBorder(inheritedBorder)
|
|
285
|
+
),
|
|
215
286
|
hasValue: () => isDefinedBorder(value?.border),
|
|
216
287
|
label: __("Border"),
|
|
217
288
|
onDeselect: () => resetBorder(),
|
|
218
289
|
isShownByDefault: showBorderByDefault,
|
|
219
290
|
panelId,
|
|
220
|
-
children:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
291
|
+
children: [
|
|
292
|
+
(showInheritanceLabelIndicators || hasShadowControl) && // Render the visible label as `BaseControl.VisualLabel`
|
|
293
|
+
// (which produces `.components-base-control__label`)
|
|
294
|
+
// rather than passing `label` to `BorderBoxControl`,
|
|
295
|
+
// whose internal `<StyledLabel>` carries no stable
|
|
296
|
+
// className. The inheritance treatment and the
|
|
297
|
+
// local-override reset affordance both target
|
|
298
|
+
// `.components-base-control__label`, so the visible
|
|
299
|
+
// "Border" label has to be a `BaseControl` label to
|
|
300
|
+
// receive them.
|
|
301
|
+
//
|
|
302
|
+
// Render it whenever a Shadow control is also present so
|
|
303
|
+
// the two controls stay disambiguated (mirrors the
|
|
304
|
+
// Shadow label's `hasBorderControl` guard below, and
|
|
305
|
+
// trunk's `hideLabelFromVision={ ! hasShadowControl }`),
|
|
306
|
+
// even when inheritance indicators are off (e.g. in
|
|
307
|
+
// Global Styles).
|
|
308
|
+
/* @__PURE__ */ jsx(BaseControl.VisualLabel, { as: "legend", children: __("Border") }),
|
|
309
|
+
/* @__PURE__ */ jsx(
|
|
310
|
+
BorderBoxControl,
|
|
311
|
+
{
|
|
312
|
+
colors,
|
|
313
|
+
disableCustomColors: !areCustomSolidsEnabled,
|
|
314
|
+
enableAlpha: true,
|
|
315
|
+
enableStyle: showBorderStyle,
|
|
316
|
+
onChange: onBorderChange,
|
|
317
|
+
popoverOffset: 40,
|
|
318
|
+
popoverPlacement: "left-start",
|
|
319
|
+
value: border,
|
|
320
|
+
__experimentalIsRenderedInSidebar: true
|
|
321
|
+
}
|
|
322
|
+
)
|
|
323
|
+
]
|
|
236
324
|
}
|
|
237
325
|
),
|
|
238
326
|
showBorderRadius && /* @__PURE__ */ jsx(
|
|
239
|
-
|
|
327
|
+
InheritanceToolsPanelItem,
|
|
240
328
|
{
|
|
329
|
+
...inheritanceProps(
|
|
330
|
+
isBorderRadiusPlaceholder,
|
|
331
|
+
hasBorderRadius() && inheritedBorderRadius !== void 0
|
|
332
|
+
),
|
|
241
333
|
hasValue: hasBorderRadius,
|
|
242
334
|
label: __("Radius"),
|
|
335
|
+
hasInlineEndToggle: true,
|
|
243
336
|
onDeselect: () => setBorderRadius(void 0),
|
|
244
337
|
isShownByDefault: defaultControls.radius,
|
|
245
338
|
panelId,
|
|
@@ -247,7 +340,7 @@ function BorderPanel({
|
|
|
247
340
|
BorderRadiusControl,
|
|
248
341
|
{
|
|
249
342
|
presets: settings?.border?.radiusSizes,
|
|
250
|
-
values:
|
|
343
|
+
values: borderRadius,
|
|
251
344
|
onChange: (newValue) => {
|
|
252
345
|
setBorderRadius(newValue || void 0);
|
|
253
346
|
}
|
|
@@ -256,12 +349,17 @@ function BorderPanel({
|
|
|
256
349
|
}
|
|
257
350
|
),
|
|
258
351
|
hasShadowControl && /* @__PURE__ */ jsxs(
|
|
259
|
-
|
|
352
|
+
InheritanceToolsPanelItem,
|
|
260
353
|
{
|
|
354
|
+
...inheritanceProps(
|
|
355
|
+
isShadowPlaceholder,
|
|
356
|
+
hasShadow() && inheritedShadow !== void 0
|
|
357
|
+
),
|
|
261
358
|
label: __("Shadow"),
|
|
262
359
|
hasValue: hasShadow,
|
|
263
360
|
onDeselect: resetShadow,
|
|
264
361
|
isShownByDefault: defaultControls.shadow,
|
|
362
|
+
showLocalOverrideActionsInLabel: false,
|
|
265
363
|
panelId,
|
|
266
364
|
children: [
|
|
267
365
|
hasBorderControl ? /* @__PURE__ */ jsx(BaseControl.VisualLabel, { as: "legend", children: __("Shadow") }) : null,
|
|
@@ -269,8 +367,11 @@ function BorderPanel({
|
|
|
269
367
|
ShadowPopover,
|
|
270
368
|
{
|
|
271
369
|
shadow,
|
|
272
|
-
onShadowChange:
|
|
273
|
-
settings
|
|
370
|
+
onShadowChange: setShadowWithInheritedCommit,
|
|
371
|
+
settings,
|
|
372
|
+
hasLocalValue: hasShadow(),
|
|
373
|
+
hasLocalOverride: hasShadowLocalOverride,
|
|
374
|
+
onReset: resetShadow
|
|
274
375
|
}
|
|
275
376
|
)
|
|
276
377
|
]
|