@wordpress/block-editor 13.4.0 → 14.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 +13 -0
- package/README.md +20 -15
- package/build/autocompleters/block.js +1 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +3 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -2
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-refs.js +24 -32
- package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +11 -4
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-mover/index.js +1 -2
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-popover/cover.js +1 -1
- package/build/components/block-popover/cover.js.map +1 -1
- package/build/components/block-popover/inbetween.js +2 -2
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +2 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +1 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +14 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -1
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +22 -19
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +0 -1
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/border-radius-control/index.js +1 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +3 -1
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -0
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/dimensions-tool/scale-tool.js +1 -0
- package/build/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build/components/font-appearance-control/index.js +3 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +15 -0
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +153 -77
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -1
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +0 -7
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +1 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/index.js +0 -6
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +0 -1
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +59 -40
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +80 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +30 -26
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/grid/grid-item-resizer.js +14 -15
- package/build/components/grid/grid-item-resizer.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +21 -6
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/use-grid-layout-sync.js +56 -20
- package/build/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build/components/height-control/index.js +1 -0
- package/build/components/height-control/index.js.map +1 -1
- package/build/components/iframe/index.js +2 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/zoom-dropdown.js +11 -7
- package/build/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +8 -8
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +7 -25
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -11
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +29 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/library.js +4 -2
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +32 -14
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -0
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/line-height-control/index.js +3 -15
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +0 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/media-placeholder/index.js +9 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +3 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -1
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +12 -12
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/resolution-tool/index.js +1 -0
- package/build/components/resolution-tool/index.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -2
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +13 -8
- package/build/components/text-alignment-control/index.js.map +1 -1
- package/build/components/text-decoration-control/index.js +13 -8
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +13 -8
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-input/button.js +0 -1
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +1 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -0
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/url-popover/link-editor.js +0 -1
- package/build/components/url-popover/link-editor.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +42 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +3 -6
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +1 -3
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/use-settings/index.js +2 -1
- package/build/components/use-settings/index.js.map +1 -1
- package/build/components/writing-mode-control/index.js +13 -8
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/background.js +19 -23
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +209 -39
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-hooks.js +1 -0
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-style-variation.js +2 -2
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/contrast-checker.js +6 -6
- package/build/hooks/contrast-checker.js.map +1 -1
- package/build/hooks/duotone.js +3 -3
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +7 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/line-height.js +0 -1
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +1 -1
- package/build/hooks/spacing-visualizer.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +4 -0
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-zoom-out.js +1 -1
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +20 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +1 -0
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +2 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/grid.js +3 -0
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +3 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +9 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/private-selectors.js +30 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +10 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +4 -4
- package/build/store/selectors.js.map +1 -1
- package/build/utils/block-bindings.js +112 -0
- package/build/utils/block-bindings.js.map +1 -0
- package/build/utils/get-editor-region.js +1 -1
- package/build/utils/get-editor-region.js.map +1 -1
- package/build/utils/get-px-from-css-unit.js +1 -1
- package/build/utils/get-px-from-css-unit.js.map +1 -1
- package/build-module/autocompleters/block.js +1 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +4 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +3 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +2 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-refs.js +24 -34
- package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +11 -4
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -2
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-popover/cover.js +1 -1
- package/build-module/components/block-popover/cover.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +1 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +14 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -1
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +23 -20
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +0 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +1 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +3 -1
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +2 -0
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/dimensions-tool/scale-tool.js +1 -0
- package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +3 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +14 -0
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +156 -80
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +0 -6
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +1 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +0 -1
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +61 -42
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +77 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +30 -26
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/grid/grid-item-resizer.js +14 -15
- package/build-module/components/grid/grid-item-resizer.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +21 -6
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/use-grid-layout-sync.js +56 -20
- package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build-module/components/height-control/index.js +1 -0
- package/build-module/components/height-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +2 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/zoom-dropdown.js +12 -8
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +7 -6
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +6 -23
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +30 -3
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/library.js +4 -2
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +32 -14
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +5 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/line-height-control/index.js +3 -14
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +0 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +9 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +3 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -1
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +12 -12
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/resolution-tool/index.js +1 -0
- package/build-module/components/resolution-tool/index.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +5 -3
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +13 -8
- package/build-module/components/text-alignment-control/index.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +13 -8
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +13 -8
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-input/button.js +0 -1
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -0
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/url-popover/link-editor.js +0 -1
- package/build-module/components/url-popover/link-editor.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +42 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -6
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +1 -3
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +2 -1
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +13 -8
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/background.js +19 -23
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +214 -43
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-hooks.js +1 -0
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +3 -3
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/contrast-checker.js +7 -7
- package/build-module/hooks/contrast-checker.js.map +1 -1
- package/build-module/hooks/duotone.js +4 -4
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/line-height.js +0 -1
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +1 -1
- package/build-module/hooks/spacing-visualizer.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +3 -0
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +1 -1
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +19 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +1 -0
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +2 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/grid.js +3 -0
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +4 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +9 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-selectors.js +27 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +9 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +4 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/block-bindings.js +105 -0
- package/build-module/utils/block-bindings.js.map +1 -0
- package/build-module/utils/get-editor-region.js +1 -1
- package/build-module/utils/get-editor-region.js.map +1 -1
- package/build-module/utils/get-px-from-css-unit.js +1 -1
- package/build-module/utils/get-px-from-css-unit.js.map +1 -1
- package/build-style/content-rtl.css +12 -26
- package/build-style/content.css +12 -26
- package/build-style/default-editor-styles-rtl.css +5 -2
- package/build-style/default-editor-styles.css +5 -2
- package/build-style/style-rtl.css +123 -83
- package/build-style/style.css +123 -83
- package/package.json +32 -32
- package/src/autocompleters/block.js +2 -1
- package/src/autocompleters/style.scss +4 -0
- package/src/components/block-breadcrumb/index.js +4 -2
- package/src/components/block-canvas/style.scss +1 -0
- package/src/components/block-draggable/index.js +3 -3
- package/src/components/block-list/content.scss +5 -13
- package/src/components/block-list/use-block-props/index.js +2 -2
- package/src/components/block-list/use-block-props/use-block-refs.js +27 -43
- package/src/components/block-list/use-in-between-inserter.js +17 -5
- package/src/components/block-mover/index.js +5 -2
- package/src/components/block-popover/cover.js +1 -1
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +1 -1
- package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
- package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
- package/src/components/block-tools/block-selection-button.js +1 -2
- package/src/components/block-tools/index.js +5 -6
- package/src/components/block-tools/insertion-point.js +11 -0
- package/src/components/block-tools/style.scss +1 -1
- package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/src/components/block-tools/use-show-block-tools.js +4 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +21 -19
- package/src/components/block-tools/zoom-out-toolbar.js +0 -1
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/style.scss +0 -10
- package/src/components/button-block-appender/content.scss +1 -1
- package/src/components/child-layout-control/index.js +2 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
- package/src/components/colors-gradients/test/control.js +3 -2
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/date-format-picker/index.js +2 -0
- package/src/components/dimensions-tool/scale-tool.js +1 -0
- package/src/components/font-appearance-control/index.js +3 -0
- package/src/components/font-family/README.md +17 -0
- package/src/components/font-family/index.js +19 -0
- package/src/components/font-family/stories/index.story.js +54 -0
- package/src/components/global-styles/background-panel.js +180 -93
- package/src/components/global-styles/get-global-styles-changes.js +4 -1
- package/src/components/global-styles/hooks.js +0 -5
- package/src/components/global-styles/image-settings-panel.js +1 -0
- package/src/components/global-styles/index.js +0 -1
- package/src/components/global-styles/style.scss +13 -12
- package/src/components/global-styles/test/use-global-styles-output.js +68 -7
- package/src/components/global-styles/test/utils.js +120 -0
- package/src/components/global-styles/typography-panel.js +0 -1
- package/src/components/global-styles/use-global-styles-output.js +71 -53
- package/src/components/global-styles/utils.js +90 -0
- package/src/components/grid/grid-item-movers.js +46 -44
- package/src/components/grid/grid-item-resizer.js +11 -17
- package/src/components/grid/grid-visualizer.js +23 -8
- package/src/components/grid/style.scss +60 -10
- package/src/components/grid/use-grid-layout-sync.js +68 -14
- package/src/components/height-control/index.js +1 -0
- package/src/components/iframe/content.scss +2 -2
- package/src/components/iframe/index.js +1 -3
- package/src/components/image-editor/zoom-dropdown.js +17 -9
- package/src/components/inner-blocks/button-block-appender.js +5 -7
- package/src/components/inner-blocks/default-block-appender.js +4 -23
- package/src/components/inner-blocks/index.js +10 -9
- package/src/components/inserter/category-tabs/index.js +35 -2
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +34 -29
- package/src/components/inserter/quick-inserter.js +4 -1
- package/src/components/inserter/style.scss +17 -12
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/inspector-controls/README.md +5 -0
- package/src/components/line-height-control/README.md +4 -5
- package/src/components/line-height-control/index.js +4 -21
- package/src/components/line-height-control/stories/index.story.js +0 -1
- package/src/components/line-height-control/test/index.js +1 -7
- package/src/components/link-control/search-input.js +0 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/media-placeholder/index.js +12 -7
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +3 -1
- package/src/components/media-upload/README.md +2 -0
- package/src/components/media-upload/index.native.js +2 -0
- package/src/components/multi-selection-inspector/index.js +8 -9
- package/src/components/resolution-tool/index.js +1 -0
- package/src/components/responsive-block-control/README.md +1 -0
- package/src/components/responsive-block-control/test/index.js +6 -1
- package/src/components/skip-to-selected-block/index.js +5 -3
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +11 -10
- package/src/components/spacing-sizes-control/style.scss +16 -16
- package/src/components/tabbed-sidebar/style.scss +1 -19
- package/src/components/text-alignment-control/index.js +20 -8
- package/src/components/text-decoration-control/index.js +20 -8
- package/src/components/text-decoration-control/stories/index.story.js +0 -4
- package/src/components/text-transform-control/index.js +20 -8
- package/src/components/text-transform-control/stories/index.story.js +0 -4
- package/src/components/url-input/README.md +0 -5
- package/src/components/url-input/button.js +0 -1
- package/src/components/url-input/index.js +1 -15
- package/src/components/url-input/style.scss +2 -2
- package/src/components/url-popover/image-url-input-ui.js +2 -0
- package/src/components/url-popover/link-editor.js +0 -1
- package/src/components/use-block-drop-zone/index.js +86 -16
- package/src/components/use-on-block-drop/index.js +1 -9
- package/src/components/use-resize-canvas/index.js +1 -3
- package/src/components/use-settings/index.js +2 -1
- package/src/components/writing-mode-control/index.js +20 -8
- package/src/hooks/background.js +21 -27
- package/src/hooks/block-bindings.js +248 -54
- package/src/hooks/block-bindings.scss +13 -2
- package/src/hooks/block-hooks.js +1 -0
- package/src/hooks/block-hooks.scss +1 -0
- package/src/hooks/block-style-variation.js +3 -3
- package/src/hooks/contrast-checker.js +7 -7
- package/src/hooks/duotone.js +4 -4
- package/src/hooks/index.js +2 -1
- package/src/hooks/line-height.js +0 -1
- package/src/hooks/spacing-visualizer.js +1 -1
- package/src/hooks/test/background.js +60 -0
- package/src/hooks/use-bindings-attributes.js +4 -0
- package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
- package/src/hooks/use-zoom-out.js +1 -1
- package/src/hooks/utils.js +14 -1
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +1 -0
- package/src/layouts/flex.js +2 -0
- package/src/layouts/grid.js +3 -0
- package/src/private-apis.js +3 -2
- package/src/store/actions.js +13 -5
- package/src/store/private-selectors.js +36 -0
- package/src/store/reducer.js +7 -0
- package/src/store/selectors.js +4 -4
- package/src/store/test/private-selectors.js +89 -0
- package/src/style.scss +1 -2
- package/src/utils/block-bindings.js +98 -0
- package/src/utils/get-editor-region.js +1 -1
- package/src/utils/get-px-from-css-unit.js +1 -1
- package/src/utils/test/transform-styles.js +49 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/global-styles/theme-file-uri-utils.js +0 -80
- package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build/components/inner-blocks/with-client-id.js +0 -28
- package/build/components/inner-blocks/with-client-id.js.map +0 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build/components/segmented-text-control/index.js +0 -63
- package/build/components/segmented-text-control/index.js.map +0 -1
- package/build-module/components/global-styles/theme-file-uri-utils.js +0 -73
- package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build-module/components/inner-blocks/with-client-id.js +0 -21
- package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build-module/components/segmented-text-control/index.js +0 -58
- package/build-module/components/segmented-text-control/index.js.map +0 -1
- package/src/components/global-styles/test/theme-file-uri-utils.js +0 -66
- package/src/components/global-styles/theme-file-uri-utils.js +0 -77
- package/src/components/inner-blocks/with-client-id.js +0 -19
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
- package/src/components/segmented-text-control/index.js +0 -63
- package/src/components/segmented-text-control/style.scss +0 -15
|
@@ -6,11 +6,11 @@ import clsx from 'clsx';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate, Dropdown, __experimentalDropdownContentWrapper as DropdownContentWrapper } from '@wordpress/components';
|
|
9
|
+
import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate, Dropdown, Placeholder, Spinner, __experimentalDropdownContentWrapper as DropdownContentWrapper } from '@wordpress/components';
|
|
10
10
|
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
11
11
|
import { store as noticesStore } from '@wordpress/notices';
|
|
12
12
|
import { getFilename } from '@wordpress/url';
|
|
13
|
-
import { useCallback, Platform, useRef, useState, useEffect } from '@wordpress/element';
|
|
13
|
+
import { useCallback, Platform, useRef, useState, useEffect, useMemo } from '@wordpress/element';
|
|
14
14
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
15
15
|
import { focus } from '@wordpress/dom';
|
|
16
16
|
import { isBlobURL } from '@wordpress/blob';
|
|
@@ -18,11 +18,11 @@ import { isBlobURL } from '@wordpress/blob';
|
|
|
18
18
|
/**
|
|
19
19
|
* Internal dependencies
|
|
20
20
|
*/
|
|
21
|
-
import { useToolsPanelDropdownMenuProps } from './utils';
|
|
21
|
+
import { useToolsPanelDropdownMenuProps, getResolvedValue } from './utils';
|
|
22
22
|
import { setImmutably } from '../../utils/object';
|
|
23
23
|
import MediaReplaceFlow from '../media-replace-flow';
|
|
24
24
|
import { store as blockEditorStore } from '../../store';
|
|
25
|
-
import {
|
|
25
|
+
import { globalStylesDataKey, globalStylesLinksDataKey } from '../../store/private-keys';
|
|
26
26
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
27
27
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
28
28
|
const IMAGE_BACKGROUND_TYPE = 'image';
|
|
@@ -217,15 +217,25 @@ function BackgroundControlsPanel({
|
|
|
217
217
|
})
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
|
+
function LoadingSpinner() {
|
|
221
|
+
return /*#__PURE__*/_jsx(Placeholder, {
|
|
222
|
+
className: "block-editor-global-styles-background-panel__loading",
|
|
223
|
+
children: /*#__PURE__*/_jsx(Spinner, {})
|
|
224
|
+
});
|
|
225
|
+
}
|
|
220
226
|
function BackgroundImageControls({
|
|
221
227
|
onChange,
|
|
222
228
|
style,
|
|
223
229
|
inheritedValue,
|
|
224
230
|
onRemoveImage = noop,
|
|
231
|
+
onResetImage = noop,
|
|
225
232
|
displayInPanel,
|
|
226
|
-
|
|
233
|
+
defaultValues
|
|
227
234
|
}) {
|
|
228
|
-
const
|
|
235
|
+
const [isUploading, setIsUploading] = useState(false);
|
|
236
|
+
const {
|
|
237
|
+
getSettings
|
|
238
|
+
} = useSelect(blockEditorStore);
|
|
229
239
|
const {
|
|
230
240
|
id,
|
|
231
241
|
title,
|
|
@@ -241,14 +251,17 @@ function BackgroundImageControls({
|
|
|
241
251
|
createErrorNotice(message, {
|
|
242
252
|
type: 'snackbar'
|
|
243
253
|
});
|
|
254
|
+
setIsUploading(false);
|
|
244
255
|
};
|
|
245
256
|
const resetBackgroundImage = () => onChange(setImmutably(style, ['background', 'backgroundImage'], undefined));
|
|
246
257
|
const onSelectMedia = media => {
|
|
247
258
|
if (!media || !media.url) {
|
|
248
259
|
resetBackgroundImage();
|
|
260
|
+
setIsUploading(false);
|
|
249
261
|
return;
|
|
250
262
|
}
|
|
251
263
|
if (isBlobURL(media.url)) {
|
|
264
|
+
setIsUploading(true);
|
|
252
265
|
return;
|
|
253
266
|
}
|
|
254
267
|
|
|
@@ -257,7 +270,7 @@ function BackgroundImageControls({
|
|
|
257
270
|
onUploadError(__('Only images can be used as a background image.'));
|
|
258
271
|
return;
|
|
259
272
|
}
|
|
260
|
-
const sizeValue = style?.background?.backgroundSize;
|
|
273
|
+
const sizeValue = style?.background?.backgroundSize || defaultValues?.backgroundSize;
|
|
261
274
|
const positionValue = style?.background?.backgroundPosition;
|
|
262
275
|
onChange(setImmutably(style, ['background'], {
|
|
263
276
|
...style?.background,
|
|
@@ -267,17 +280,29 @@ function BackgroundImageControls({
|
|
|
267
280
|
source: 'file',
|
|
268
281
|
title: media.title || undefined
|
|
269
282
|
},
|
|
270
|
-
backgroundPosition:
|
|
283
|
+
backgroundPosition:
|
|
284
|
+
/*
|
|
285
|
+
* A background image uploaded and set in the editor receives a default background position of '50% 0',
|
|
286
|
+
* when the background image size is the equivalent of "Tile".
|
|
287
|
+
* This is to increase the chance that the image's focus point is visible.
|
|
288
|
+
* This is in-editor only to assist with the user experience.
|
|
289
|
+
*/
|
|
290
|
+
!positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue,
|
|
291
|
+
backgroundSize: sizeValue
|
|
271
292
|
}));
|
|
293
|
+
setIsUploading(false);
|
|
272
294
|
};
|
|
295
|
+
|
|
296
|
+
// Drag and drop callback, restricting image to one.
|
|
273
297
|
const onFilesDrop = filesList => {
|
|
274
|
-
|
|
298
|
+
if (filesList?.length > 1) {
|
|
299
|
+
onUploadError(__('Only one image can be used as a background image.'));
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
getSettings().mediaUpload({
|
|
275
303
|
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
276
304
|
filesList,
|
|
277
305
|
onFileChange([image]) {
|
|
278
|
-
if (isBlobURL(image?.url)) {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
306
|
onSelectMedia(image);
|
|
282
307
|
},
|
|
283
308
|
onError: onUploadError
|
|
@@ -292,13 +317,15 @@ function BackgroundImageControls({
|
|
|
292
317
|
toggleButton?.focus();
|
|
293
318
|
toggleButton?.click();
|
|
294
319
|
};
|
|
295
|
-
const onRemove = () => onChange(setImmutably(style, ['background'
|
|
320
|
+
const onRemove = () => onChange(setImmutably(style, ['background'], {
|
|
321
|
+
backgroundImage: 'none'
|
|
322
|
+
}));
|
|
296
323
|
const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
|
|
297
324
|
const imgLabel = title || getFilename(url) || __('Add background image');
|
|
298
325
|
return /*#__PURE__*/_jsxs("div", {
|
|
299
326
|
ref: replaceContainerRef,
|
|
300
327
|
className: "block-editor-global-styles-background-panel__image-tools-panel-item",
|
|
301
|
-
children: [/*#__PURE__*/_jsxs(MediaReplaceFlow, {
|
|
328
|
+
children: [isUploading && /*#__PURE__*/_jsx(LoadingSpinner, {}), /*#__PURE__*/_jsxs(MediaReplaceFlow, {
|
|
302
329
|
mediaId: id,
|
|
303
330
|
mediaURL: url,
|
|
304
331
|
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
@@ -311,23 +338,25 @@ function BackgroundImageControls({
|
|
|
311
338
|
},
|
|
312
339
|
name: /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
|
|
313
340
|
className: "block-editor-global-styles-background-panel__image-preview",
|
|
314
|
-
imgUrl:
|
|
341
|
+
imgUrl: url,
|
|
315
342
|
filename: title,
|
|
316
343
|
label: imgLabel
|
|
317
344
|
}),
|
|
318
345
|
variant: "secondary",
|
|
346
|
+
onError: onUploadError,
|
|
319
347
|
children: [canRemove && /*#__PURE__*/_jsx(MenuItem, {
|
|
320
348
|
onClick: () => {
|
|
321
349
|
closeAndFocus();
|
|
322
350
|
onRemove();
|
|
351
|
+
onRemoveImage();
|
|
323
352
|
},
|
|
324
353
|
children: __('Remove')
|
|
325
354
|
}), hasValue && /*#__PURE__*/_jsx(MenuItem, {
|
|
326
355
|
onClick: () => {
|
|
327
356
|
closeAndFocus();
|
|
328
|
-
|
|
357
|
+
onResetImage();
|
|
329
358
|
},
|
|
330
|
-
children: __('Reset
|
|
359
|
+
children: __('Reset')
|
|
331
360
|
})]
|
|
332
361
|
}), /*#__PURE__*/_jsx(DropZone, {
|
|
333
362
|
onFilesDrop: onFilesDrop,
|
|
@@ -339,24 +368,27 @@ function BackgroundSizeControls({
|
|
|
339
368
|
onChange,
|
|
340
369
|
style,
|
|
341
370
|
inheritedValue,
|
|
342
|
-
defaultValues
|
|
343
|
-
themeFileURIs
|
|
371
|
+
defaultValues
|
|
344
372
|
}) {
|
|
345
373
|
const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
|
|
346
374
|
const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
|
|
347
375
|
const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
|
|
376
|
+
const isUploadedImage = style?.background?.backgroundImage?.id;
|
|
348
377
|
const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
|
|
349
378
|
const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
|
|
350
379
|
|
|
351
380
|
/*
|
|
352
|
-
*
|
|
353
|
-
* default
|
|
354
|
-
*
|
|
355
|
-
*
|
|
356
|
-
* empty value being treated as `auto`.
|
|
381
|
+
* Set default values for uploaded images.
|
|
382
|
+
* The default values are passed by the consumer.
|
|
383
|
+
* Block-level controls may have different defaults to root-level controls.
|
|
384
|
+
* A falsy value is treated by default as `auto` (Tile).
|
|
357
385
|
*/
|
|
358
|
-
|
|
359
|
-
|
|
386
|
+
let currentValueForToggle = !sizeValue && isUploadedImage ? defaultValues?.backgroundSize : sizeValue || 'auto';
|
|
387
|
+
/*
|
|
388
|
+
* The incoming value could be a value + unit, e.g. '20px'.
|
|
389
|
+
* In this case set the value to 'tile'.
|
|
390
|
+
*/
|
|
391
|
+
currentValueForToggle = !['cover', 'contain', 'auto'].includes(currentValueForToggle) ? 'auto' : currentValueForToggle;
|
|
360
392
|
/*
|
|
361
393
|
* If the current value is `cover` and the repeat value is `undefined`, then
|
|
362
394
|
* the toggle should be unchecked as the default state. Otherwise, the toggle
|
|
@@ -382,6 +414,7 @@ function BackgroundSizeControls({
|
|
|
382
414
|
* receives a default background position of '50% 0',
|
|
383
415
|
* when the toggle switches to "Tile". This is to increase the chance that
|
|
384
416
|
* the image's focus point is visible.
|
|
417
|
+
* This is in-editor only to assist with the user experience.
|
|
385
418
|
*/
|
|
386
419
|
if (!!style?.background?.backgroundImage?.id) {
|
|
387
420
|
nextPosition = '50% 0';
|
|
@@ -407,22 +440,25 @@ function BackgroundSizeControls({
|
|
|
407
440
|
};
|
|
408
441
|
const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
|
|
409
442
|
const toggleScrollWithPage = () => onChange(setImmutably(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
|
|
443
|
+
|
|
444
|
+
// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.
|
|
445
|
+
const backgroundPositionValue = !positionValue && isUploadedImage && 'contain' === sizeValue ? defaultValues?.backgroundPosition : positionValue;
|
|
410
446
|
return /*#__PURE__*/_jsxs(VStack, {
|
|
411
|
-
spacing:
|
|
447
|
+
spacing: 3,
|
|
412
448
|
className: "single-column",
|
|
413
449
|
children: [/*#__PURE__*/_jsx(FocalPointPicker, {
|
|
414
|
-
__next40pxDefaultSize: true,
|
|
415
450
|
__nextHasNoMarginBottom: true,
|
|
416
451
|
label: __('Focal point'),
|
|
417
|
-
url:
|
|
418
|
-
value: backgroundPositionToCoords(
|
|
452
|
+
url: imageValue,
|
|
453
|
+
value: backgroundPositionToCoords(backgroundPositionValue),
|
|
419
454
|
onChange: updateBackgroundPosition
|
|
420
455
|
}), /*#__PURE__*/_jsx(ToggleControl, {
|
|
456
|
+
__nextHasNoMarginBottom: true,
|
|
421
457
|
label: __('Fixed background'),
|
|
422
458
|
checked: attachmentValue === 'fixed',
|
|
423
|
-
onChange: toggleScrollWithPage
|
|
424
|
-
help: __('Whether your image should scroll with the page or stay fixed in place.')
|
|
459
|
+
onChange: toggleScrollWithPage
|
|
425
460
|
}), /*#__PURE__*/_jsxs(ToggleGroupControl, {
|
|
461
|
+
__nextHasNoMarginBottom: true,
|
|
426
462
|
size: "__unstable-large",
|
|
427
463
|
label: __('Size'),
|
|
428
464
|
value: currentValueForToggle,
|
|
@@ -453,6 +489,7 @@ function BackgroundSizeControls({
|
|
|
453
489
|
placeholder: __('Auto'),
|
|
454
490
|
disabled: currentValueForToggle !== 'auto' || currentValueForToggle === undefined
|
|
455
491
|
}), /*#__PURE__*/_jsx(ToggleControl, {
|
|
492
|
+
__nextHasNoMarginBottom: true,
|
|
456
493
|
label: __('Repeat'),
|
|
457
494
|
checked: repeatCheckedValue,
|
|
458
495
|
onChange: toggleIsRepeated,
|
|
@@ -476,7 +513,7 @@ function BackgroundToolsPanel({
|
|
|
476
513
|
};
|
|
477
514
|
return /*#__PURE__*/_jsx(VStack, {
|
|
478
515
|
as: ToolsPanel,
|
|
479
|
-
spacing:
|
|
516
|
+
spacing: 2,
|
|
480
517
|
label: headerLabel,
|
|
481
518
|
resetAll: resetAll,
|
|
482
519
|
panelId: panelId,
|
|
@@ -493,9 +530,42 @@ export default function BackgroundPanel({
|
|
|
493
530
|
panelId,
|
|
494
531
|
defaultControls = DEFAULT_CONTROLS,
|
|
495
532
|
defaultValues = {},
|
|
496
|
-
headerLabel = __('Background image')
|
|
497
|
-
themeFileURIs
|
|
533
|
+
headerLabel = __('Background image')
|
|
498
534
|
}) {
|
|
535
|
+
/*
|
|
536
|
+
* Resolve any inherited "ref" pointers.
|
|
537
|
+
* Should the block editor need resolved, inherited values
|
|
538
|
+
* across all controls, this could be abstracted into a hook,
|
|
539
|
+
* e.g., useResolveGlobalStyle
|
|
540
|
+
*/
|
|
541
|
+
const {
|
|
542
|
+
globalStyles,
|
|
543
|
+
_links
|
|
544
|
+
} = useSelect(select => {
|
|
545
|
+
const {
|
|
546
|
+
getSettings
|
|
547
|
+
} = select(blockEditorStore);
|
|
548
|
+
const _settings = getSettings();
|
|
549
|
+
return {
|
|
550
|
+
globalStyles: _settings[globalStylesDataKey],
|
|
551
|
+
_links: _settings[globalStylesLinksDataKey]
|
|
552
|
+
};
|
|
553
|
+
}, []);
|
|
554
|
+
const resolvedInheritedValue = useMemo(() => {
|
|
555
|
+
const resolvedValues = {
|
|
556
|
+
background: {}
|
|
557
|
+
};
|
|
558
|
+
if (!inheritedValue?.background) {
|
|
559
|
+
return inheritedValue;
|
|
560
|
+
}
|
|
561
|
+
Object.entries(inheritedValue?.background).forEach(([key, backgroundValue]) => {
|
|
562
|
+
resolvedValues.background[key] = getResolvedValue(backgroundValue, {
|
|
563
|
+
styles: globalStyles,
|
|
564
|
+
_links
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
return resolvedValues;
|
|
568
|
+
}, [globalStyles, _links, inheritedValue]);
|
|
499
569
|
const resetAllFilter = useCallback(previousValue => {
|
|
500
570
|
return {
|
|
501
571
|
...previousValue,
|
|
@@ -507,63 +577,69 @@ export default function BackgroundPanel({
|
|
|
507
577
|
title,
|
|
508
578
|
url
|
|
509
579
|
} = value?.background?.backgroundImage || {
|
|
510
|
-
...
|
|
580
|
+
...resolvedInheritedValue?.background?.backgroundImage
|
|
511
581
|
};
|
|
512
|
-
const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(
|
|
513
|
-
const
|
|
582
|
+
const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(resolvedInheritedValue);
|
|
583
|
+
const imageValue = value?.background?.backgroundImage || inheritedValue?.background?.backgroundImage;
|
|
584
|
+
const shouldShowBackgroundImageControls = hasImageValue && 'none' !== imageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
|
|
514
585
|
const [isDropDownOpen, setIsDropDownOpen] = useState(false);
|
|
515
|
-
return /*#__PURE__*/
|
|
586
|
+
return /*#__PURE__*/_jsx(Wrapper, {
|
|
516
587
|
resetAllFilter: resetAllFilter,
|
|
517
588
|
value: value,
|
|
518
589
|
onChange: onChange,
|
|
519
590
|
panelId: panelId,
|
|
520
591
|
headerLabel: headerLabel,
|
|
521
|
-
children:
|
|
592
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
522
593
|
className: clsx('block-editor-global-styles-background-panel__inspector-media-replace-container', {
|
|
523
594
|
'is-open': isDropDownOpen
|
|
524
595
|
}),
|
|
525
|
-
children:
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
children: /*#__PURE__*/
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
596
|
+
children: /*#__PURE__*/_jsx(ToolsPanelItem, {
|
|
597
|
+
hasValue: () => !!value?.background,
|
|
598
|
+
label: __('Image'),
|
|
599
|
+
onDeselect: resetBackground,
|
|
600
|
+
isShownByDefault: defaultControls.backgroundImage,
|
|
601
|
+
panelId: panelId,
|
|
602
|
+
children: shouldShowBackgroundImageControls ? /*#__PURE__*/_jsx(BackgroundControlsPanel, {
|
|
603
|
+
label: title,
|
|
604
|
+
filename: title,
|
|
605
|
+
url: url,
|
|
606
|
+
onToggle: setIsDropDownOpen,
|
|
607
|
+
hasImageValue: hasImageValue,
|
|
608
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
609
|
+
spacing: 3,
|
|
610
|
+
className: "single-column",
|
|
611
|
+
children: [/*#__PURE__*/_jsx(BackgroundImageControls, {
|
|
612
|
+
onChange: onChange,
|
|
613
|
+
style: value,
|
|
614
|
+
inheritedValue: resolvedInheritedValue,
|
|
615
|
+
displayInPanel: true,
|
|
616
|
+
onResetImage: () => {
|
|
617
|
+
setIsDropDownOpen(false);
|
|
618
|
+
resetBackground();
|
|
619
|
+
},
|
|
620
|
+
onRemoveImage: () => setIsDropDownOpen(false),
|
|
621
|
+
defaultValues: defaultValues
|
|
622
|
+
}), /*#__PURE__*/_jsx(BackgroundSizeControls, {
|
|
623
|
+
onChange: onChange,
|
|
624
|
+
panelId: panelId,
|
|
625
|
+
style: value,
|
|
626
|
+
defaultValues: defaultValues,
|
|
627
|
+
inheritedValue: resolvedInheritedValue
|
|
628
|
+
})]
|
|
629
|
+
})
|
|
630
|
+
}) : /*#__PURE__*/_jsx(BackgroundImageControls, {
|
|
631
|
+
onChange: onChange,
|
|
632
|
+
style: value,
|
|
633
|
+
inheritedValue: resolvedInheritedValue,
|
|
634
|
+
defaultValues: defaultValues,
|
|
635
|
+
onResetImage: () => {
|
|
636
|
+
setIsDropDownOpen(false);
|
|
637
|
+
resetBackground();
|
|
638
|
+
},
|
|
639
|
+
onRemoveImage: () => setIsDropDownOpen(false)
|
|
552
640
|
})
|
|
553
|
-
}) : /*#__PURE__*/_jsx(BackgroundImageControls, {
|
|
554
|
-
onChange: onChange,
|
|
555
|
-
style: value,
|
|
556
|
-
inheritedValue: inheritedValue,
|
|
557
|
-
themeFileURIs: themeFileURIs
|
|
558
641
|
})
|
|
559
|
-
})
|
|
560
|
-
hasValue: () => hasImageValue,
|
|
561
|
-
label: __('Image'),
|
|
562
|
-
onDeselect: resetBackground,
|
|
563
|
-
isShownByDefault: defaultControls.backgroundImage,
|
|
564
|
-
panelId: panelId,
|
|
565
|
-
className: "block-editor-global-styles-background-panel__hidden-tools-panel-item"
|
|
566
|
-
})]
|
|
642
|
+
})
|
|
567
643
|
});
|
|
568
644
|
}
|
|
569
645
|
//# sourceMappingURL=background-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useState","useEffect","useDispatch","useSelect","focus","isBlobURL","useToolsPanelDropdownMenuProps","setImmutably","MediaReplaceFlow","blockEditorStore","getResolvedThemeFilePath","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","children","justify","flexGrow","numberOfLines","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","displayInPanel","themeFileURIs","mediaUpload","select","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","BackgroundSizeControls","defaultValues","repeatValue","backgroundRepeat","imageValue","attachmentValue","backgroundAttachment","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","spacing","__next40pxDefaultSize","__nextHasNoMarginBottom","checked","help","size","isBlock","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","resetAll","updatedValue","BackgroundPanel","Wrapper","defaultControls","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\nimport { getResolvedThemeFilePath } from './theme-file-uri-utils';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\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 * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\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 * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tdisplayInPanel,\n\tthemeFileURIs,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue = style?.background?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background', 'backgroundImage' ], 'none' )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t\t{ hasValue && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n\tthemeFileURIs,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * An `undefined` value is replaced with any supplied\n\t * default control value for the toggle group control.\n\t * An empty string is treated as `auto` - this allows a user\n\t * to select \"Size\" and then enter a custom value, with an\n\t * empty value being treated as `auto`.\n\t */\n\tconst currentValueForToggle =\n\t\t( sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ) ||\n\t\tsizeValue === ''\n\t\t\t? 'auto'\n\t\t\t: sizeValue || defaultValues?.backgroundSize;\n\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\treturn (\n\t\t<VStack spacing={ 4 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ getResolvedThemeFilePath( imageValue, themeFileURIs ) }\n\t\t\t\tvalue={ backgroundPositionToCoords( positionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Whether your image should scroll with the page or stay fixed in place.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction 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<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 4 }\n\t\t\tlabel={ headerLabel }\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</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n\tthemeFileURIs,\n} ) {\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( inheritedValue );\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( 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\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\turl={ getResolvedThemeFilePath( url, themeFileURIs ) }\n\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\tonRemoveImage={ () => {\n\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\n\t\t\t{ /* Dummy ToolsPanel items, so we can control what's in the dropdown popover */ }\n\t\t\t<ToolsPanelItem\n\t\t\t\thasValue={ () => hasImageValue }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__hidden-tools-panel-item\"\n\t\t\t/>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","useToolsPanelDropdownMenuProps","getResolvedValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","children","justify","flexGrow","numberOfLines","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","resetAll","updatedValue","BackgroundPanel","Wrapper","defaultControls","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps, getResolvedValue } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\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 * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\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 * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tonError={ onUploadError }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t\t{ hasValue && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonResetImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction 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<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 2 }\n\t\t\tlabel={ headerLabel }\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</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( 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\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! value?.background }\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{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonRemoveImage={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</div>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|