@wordpress/block-editor 13.1.0 → 13.3.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 +21 -17
- package/README.md +1 -2
- package/build/components/block-breadcrumb/index.js +12 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-lock/modal.js +67 -67
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-lock/toolbar.js +0 -1
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mover/button.js +1 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +12 -6
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +5 -7
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +20 -17
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-rename/modal.js +4 -12
- package/build/components/block-rename/modal.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +4 -1
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +7 -58
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/block-toolbar-breadcrumb.js +9 -2
- package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
- package/build/components/block-tools/index.js +14 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +4 -2
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +5 -4
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-popover.js +57 -0
- package/build/components/block-tools/zoom-out-popover.js.map +1 -0
- package/build/components/block-tools/zoom-out-toolbar.js +138 -0
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -0
- package/build/components/button-block-appender/index.js +3 -1
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +193 -127
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +10 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/dimensions-tool/index.js +6 -4
- package/build/components/dimensions-tool/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +26 -61
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +178 -116
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/border-panel.js +2 -1
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +2 -1
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +2 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +8 -0
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +2 -1
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +50 -12
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +50 -0
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +25 -9
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +17 -7
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +94 -0
- package/build/components/grid/grid-item-movers.js.map +1 -0
- package/build/components/{grid-visualizer → grid}/grid-item-resizer.js +18 -56
- package/build/components/grid/grid-item-resizer.js.map +1 -0
- package/build/components/grid/grid-visualizer.js +305 -0
- package/build/components/grid/grid-visualizer.js.map +1 -0
- package/build/components/{grid-visualizer → grid}/index.js +14 -0
- package/build/components/grid/index.js.map +1 -0
- package/build/components/grid/use-get-number-of-blocks-before-cell.js +40 -0
- package/build/components/grid/use-get-number-of-blocks-before-cell.js.map +1 -0
- package/build/components/grid/use-grid-layout-sync.js +169 -0
- package/build/components/grid/use-grid-layout-sync.js.map +1 -0
- package/build/components/grid/utils.js +145 -0
- package/build/components/grid/utils.js.map +1 -0
- package/build/components/image-editor/aspect-ratio-dropdown.js +0 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build/components/inner-blocks/index.js +1 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/menu.js +26 -4
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/media-placeholder/index.js +19 -23
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -1
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/rich-text/event-listeners/input-rules.js +1 -0
- package/build/components/rich-text/event-listeners/input-rules.js.map +1 -1
- package/build/components/rich-text/index.native.js +10 -4
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +14 -0
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/tabbed-sidebar/index.js +66 -0
- package/build/components/tabbed-sidebar/index.js.map +1 -0
- package/build/components/url-popover/index.js +3 -0
- package/build/components/url-popover/index.js.map +1 -1
- package/build/hooks/background.js +26 -4
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +11 -17
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-style-variation.js +195 -11
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/duotone.js +16 -11
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/grid-visualizer.js +65 -0
- package/build/hooks/grid-visualizer.js.map +1 -0
- package/build/hooks/index.js +15 -2
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +65 -40
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/position.js +2 -9
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +16 -6
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/utils.js +5 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +44 -2
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/grid.js +92 -76
- package/build/layouts/grid.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +17 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +0 -2
- package/build/store/defaults.js.map +1 -1
- package/build/store/defaults.native.js +0 -3
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/utils/format-font-style.js +45 -0
- package/build/utils/format-font-style.js.map +1 -0
- package/build/utils/format-font-weight.js +68 -0
- package/build/utils/format-font-weight.js.map +1 -0
- package/build/utils/get-editor-region.js +34 -0
- package/build/utils/get-editor-region.js.map +1 -0
- package/build/utils/get-font-styles-and-weights.js +167 -0
- package/build/utils/get-font-styles-and-weights.js.map +1 -0
- package/build/utils/pasting.js +5 -13
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +12 -1
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-lock/modal.js +67 -67
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +0 -1
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mover/button.js +1 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +12 -6
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +5 -7
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +20 -17
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-rename/modal.js +5 -13
- package/build-module/components/block-rename/modal.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +4 -1
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +10 -61
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js +9 -2
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +4 -2
- 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 +5 -4
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-popover.js +48 -0
- package/build-module/components/block-tools/zoom-out-popover.js.map +1 -0
- package/build-module/components/block-tools/zoom-out-toolbar.js +131 -0
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -0
- package/build-module/components/button-block-appender/index.js +3 -1
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +194 -128
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +11 -3
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/dimensions-tool/index.js +6 -4
- package/build-module/components/dimensions-tool/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +28 -63
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +181 -119
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +3 -2
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -2
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +3 -2
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +3 -2
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +8 -0
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +3 -2
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +52 -14
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +48 -0
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +25 -9
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +15 -6
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +87 -0
- package/build-module/components/grid/grid-item-movers.js.map +1 -0
- package/build-module/components/{grid-visualizer → grid}/grid-item-resizer.js +13 -51
- package/build-module/components/grid/grid-item-resizer.js.map +1 -0
- package/build-module/components/grid/grid-visualizer.js +297 -0
- package/build-module/components/grid/grid-visualizer.js.map +1 -0
- package/build-module/components/grid/index.js +5 -0
- package/build-module/components/grid/index.js.map +1 -0
- package/build-module/components/grid/use-get-number-of-blocks-before-cell.js +33 -0
- package/build-module/components/grid/use-get-number-of-blocks-before-cell.js.map +1 -0
- package/build-module/components/grid/use-grid-layout-sync.js +162 -0
- package/build-module/components/grid/use-grid-layout-sync.js.map +1 -0
- package/build-module/components/grid/utils.js +131 -0
- package/build-module/components/grid/utils.js.map +1 -0
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +0 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +1 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/menu.js +26 -4
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +19 -23
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -1
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/input-rules.js +1 -1
- package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +11 -5
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +14 -0
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/tabbed-sidebar/index.js +60 -0
- package/build-module/components/tabbed-sidebar/index.js.map +1 -0
- package/build-module/components/url-popover/index.js +3 -0
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/hooks/background.js +26 -4
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +11 -17
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +193 -11
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/duotone.js +16 -11
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/grid-visualizer.js +64 -0
- package/build-module/hooks/grid-visualizer.js.map +1 -0
- package/build-module/hooks/index.js +3 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +63 -38
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/position.js +2 -9
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +16 -6
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/utils.js +5 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +44 -2
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/grid.js +92 -76
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +8 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +17 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +0 -2
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/defaults.native.js +0 -3
- package/build-module/store/defaults.native.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/utils/format-font-style.js +39 -0
- package/build-module/utils/format-font-style.js.map +1 -0
- package/build-module/utils/format-font-weight.js +62 -0
- package/build-module/utils/format-font-weight.js.map +1 -0
- package/build-module/utils/get-editor-region.js +28 -0
- package/build-module/utils/get-editor-region.js.map +1 -0
- package/build-module/utils/get-font-styles-and-weights.js +160 -0
- package/build-module/utils/get-font-styles-and-weights.js.map +1 -0
- package/build-module/utils/pasting.js +5 -13
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +1 -0
- package/build-style/content.css +1 -0
- package/build-style/style-rtl.css +238 -106
- package/build-style/style.css +238 -106
- package/package.json +32 -32
- package/src/components/block-breadcrumb/index.js +16 -1
- package/src/components/block-lock/modal.js +95 -82
- package/src/components/block-lock/style.scss +11 -1
- package/src/components/block-lock/toolbar.js +0 -1
- package/src/components/block-mover/button.js +1 -1
- package/src/components/block-mover/index.js +37 -24
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -2
- package/src/components/block-patterns-paging/index.js +8 -11
- package/src/components/block-patterns-paging/style.scss +18 -0
- package/src/components/block-quick-navigation/index.js +21 -28
- package/src/components/block-rename/modal.js +2 -8
- package/src/components/block-switcher/test/index.js +6 -6
- package/src/components/block-toolbar/shuffle.js +4 -1
- package/src/components/block-toolbar/style.scss +1 -11
- package/src/components/block-tools/block-selection-button.js +11 -83
- package/src/components/block-tools/block-toolbar-breadcrumb.js +9 -4
- package/src/components/block-tools/index.js +21 -1
- package/src/components/block-tools/style.scss +15 -0
- package/src/components/block-tools/use-show-block-tools.js +14 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +5 -4
- package/src/components/block-tools/zoom-out-popover.js +49 -0
- package/src/components/block-tools/zoom-out-toolbar.js +140 -0
- package/src/components/button-block-appender/index.js +2 -1
- package/src/components/child-layout-control/index.js +243 -160
- package/src/components/date-format-picker/index.js +10 -1
- package/src/components/date-format-picker/style.scss +0 -9
- package/src/components/dimensions-tool/index.js +97 -89
- package/src/components/font-appearance-control/index.js +29 -83
- package/src/components/font-appearance-control/style.scss +3 -5
- package/src/components/global-styles/background-panel.js +249 -170
- package/src/components/global-styles/border-panel.js +3 -2
- package/src/components/global-styles/color-panel.js +3 -2
- package/src/components/global-styles/dimensions-panel.js +3 -2
- package/src/components/global-styles/filters-panel.js +3 -2
- package/src/components/global-styles/hooks.js +9 -0
- package/src/components/global-styles/image-settings-panel.js +3 -2
- package/src/components/global-styles/style.scss +105 -20
- package/src/components/global-styles/test/typography-utils.js +269 -0
- package/src/components/global-styles/test/use-global-styles-output.js +38 -3
- package/src/components/global-styles/typography-panel.js +49 -12
- package/src/components/global-styles/typography-utils.js +63 -0
- package/src/components/global-styles/use-global-styles-output.js +25 -9
- package/src/components/global-styles/utils.js +17 -6
- package/src/components/grid/grid-item-movers.js +112 -0
- package/src/components/{grid-visualizer → grid}/grid-item-resizer.js +15 -52
- package/src/components/grid/grid-visualizer.js +384 -0
- package/src/components/grid/index.js +4 -0
- package/src/components/grid/style.scss +98 -0
- package/src/components/grid/use-get-number-of-blocks-before-cell.js +30 -0
- package/src/components/grid/use-grid-layout-sync.js +170 -0
- package/src/components/grid/utils.js +178 -0
- package/src/components/iframe/content.scss +1 -0
- package/src/components/image-editor/aspect-ratio-dropdown.js +0 -1
- package/src/components/inner-blocks/index.js +4 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -16
- package/src/components/inserter/menu.js +47 -13
- package/src/components/inserter/quick-inserter.js +6 -1
- package/src/components/inserter/style.scss +1 -49
- package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
- package/src/components/link-control/link-preview.js +1 -1
- package/src/components/media-placeholder/index.js +22 -32
- package/src/components/navigable-toolbar/index.js +3 -1
- package/src/components/rich-text/event-listeners/input-rules.js +1 -1
- package/src/components/rich-text/index.native.js +10 -8
- package/src/components/rich-text/native/index.native.js +17 -0
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +6 -1
- package/src/components/tabbed-sidebar/README.md +76 -0
- package/src/components/tabbed-sidebar/index.js +70 -0
- package/src/components/tabbed-sidebar/style.scss +53 -0
- package/src/components/url-popover/index.js +3 -0
- package/src/hooks/background.js +25 -10
- package/src/hooks/block-hooks.js +9 -16
- package/src/hooks/block-style-variation.js +226 -9
- package/src/hooks/duotone.js +16 -12
- package/src/hooks/grid-visualizer.js +64 -0
- package/src/hooks/index.js +3 -0
- package/src/hooks/layout-child.js +75 -39
- package/src/hooks/position.js +3 -10
- package/src/hooks/test/get-variation-styles-with-ref-values.js +91 -0
- package/src/hooks/use-bindings-attributes.js +18 -4
- package/src/hooks/utils.js +5 -1
- package/src/layouts/constrained.js +43 -2
- package/src/layouts/grid.js +175 -88
- package/src/lock-unlock.js +1 -1
- package/src/private-apis.js +12 -1
- package/src/store/actions.js +21 -1
- package/src/store/defaults.js +0 -2
- package/src/store/defaults.native.js +0 -3
- package/src/store/private-keys.js +1 -0
- package/src/style.scss +2 -2
- package/src/utils/format-font-style.js +40 -0
- package/src/utils/format-font-weight.js +63 -0
- package/src/utils/get-editor-region.js +31 -0
- package/src/utils/get-font-styles-and-weights.js +191 -0
- package/src/utils/pasting.js +5 -12
- package/src/utils/test/format-font-style.js +34 -0
- package/src/utils/test/format-font-weight.js +66 -0
- package/src/utils/test/get-font-styles-and-weights.js +513 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/grid-visualizer/grid-item-resizer.js.map +0 -1
- package/build/components/grid-visualizer/grid-visualizer.js +0 -92
- package/build/components/grid-visualizer/grid-visualizer.js.map +0 -1
- package/build/components/grid-visualizer/index.js.map +0 -1
- package/build/components/grid-visualizer/utils.js +0 -10
- package/build/components/grid-visualizer/utils.js.map +0 -1
- package/build-module/components/grid-visualizer/grid-item-resizer.js.map +0 -1
- package/build-module/components/grid-visualizer/grid-visualizer.js +0 -84
- package/build-module/components/grid-visualizer/grid-visualizer.js.map +0 -1
- package/build-module/components/grid-visualizer/index.js +0 -3
- package/build-module/components/grid-visualizer/index.js.map +0 -1
- package/build-module/components/grid-visualizer/utils.js +0 -4
- package/build-module/components/grid-visualizer/utils.js.map +0 -1
- package/src/components/grid-visualizer/grid-visualizer.js +0 -101
- package/src/components/grid-visualizer/index.js +0 -2
- package/src/components/grid-visualizer/style.scss +0 -34
- package/src/components/grid-visualizer/utils.js +0 -5
- package/src/hooks/position.scss +0 -18
- /package/src/components/font-sizes/{README.MD → README.md} +0 -0
|
@@ -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 } 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, __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 } from '@wordpress/element';
|
|
13
|
+
import { useCallback, Platform, useRef, useState, useEffect } 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,7 +18,7 @@ import { isBlobURL } from '@wordpress/blob';
|
|
|
18
18
|
/**
|
|
19
19
|
* Internal dependencies
|
|
20
20
|
*/
|
|
21
|
-
import {
|
|
21
|
+
import { useToolsPanelDropdownMenuProps } 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';
|
|
@@ -27,9 +27,15 @@ 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';
|
|
29
29
|
const DEFAULT_CONTROLS = {
|
|
30
|
-
backgroundImage: true
|
|
31
|
-
backgroundSize: false
|
|
30
|
+
backgroundImage: true
|
|
32
31
|
};
|
|
32
|
+
const BACKGROUND_POPOVER_PROPS = {
|
|
33
|
+
placement: 'left-start',
|
|
34
|
+
offset: 36,
|
|
35
|
+
shift: true,
|
|
36
|
+
className: 'block-editor-global-styles-background-panel__popover'
|
|
37
|
+
};
|
|
38
|
+
const noop = () => {};
|
|
33
39
|
|
|
34
40
|
/**
|
|
35
41
|
* Checks site settings to see if the background panel may be used.
|
|
@@ -121,21 +127,30 @@ export const backgroundPositionToCoords = value => {
|
|
|
121
127
|
y
|
|
122
128
|
};
|
|
123
129
|
};
|
|
124
|
-
function
|
|
125
|
-
|
|
130
|
+
function InspectorImagePreviewItem({
|
|
131
|
+
as = 'span',
|
|
132
|
+
imgUrl,
|
|
133
|
+
toggleProps = {},
|
|
126
134
|
filename,
|
|
127
|
-
|
|
135
|
+
label,
|
|
136
|
+
className,
|
|
137
|
+
onToggleCallback = noop
|
|
128
138
|
}) {
|
|
129
|
-
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
if (typeof toggleProps?.isOpen !== 'undefined') {
|
|
141
|
+
onToggleCallback(toggleProps?.isOpen);
|
|
142
|
+
}
|
|
143
|
+
}, [toggleProps?.isOpen, onToggleCallback]);
|
|
130
144
|
return /*#__PURE__*/_jsx(ItemGroup, {
|
|
131
|
-
as:
|
|
145
|
+
as: as,
|
|
146
|
+
className: className,
|
|
147
|
+
...toggleProps,
|
|
132
148
|
children: /*#__PURE__*/_jsxs(HStack, {
|
|
133
|
-
justify:
|
|
149
|
+
justify: "flex-start",
|
|
134
150
|
as: "span",
|
|
151
|
+
className: "block-editor-global-styles-background-panel__inspector-preview-inner",
|
|
135
152
|
children: [imgUrl && /*#__PURE__*/_jsx("span", {
|
|
136
|
-
className:
|
|
137
|
-
'has-image': imgUrl
|
|
138
|
-
}),
|
|
153
|
+
className: "block-editor-global-styles-background-panel__inspector-image-indicator-wrapper",
|
|
139
154
|
"aria-hidden": true,
|
|
140
155
|
children: /*#__PURE__*/_jsx("span", {
|
|
141
156
|
className: "block-editor-global-styles-background-panel__inspector-image-indicator",
|
|
@@ -145,25 +160,69 @@ function InspectorImagePreview({
|
|
|
145
160
|
})
|
|
146
161
|
}), /*#__PURE__*/_jsxs(FlexItem, {
|
|
147
162
|
as: "span",
|
|
163
|
+
style: imgUrl ? {} : {
|
|
164
|
+
flexGrow: 1
|
|
165
|
+
},
|
|
148
166
|
children: [/*#__PURE__*/_jsx(Truncate, {
|
|
149
167
|
numberOfLines: 1,
|
|
150
168
|
className: "block-editor-global-styles-background-panel__inspector-media-replace-title",
|
|
151
|
-
children:
|
|
169
|
+
children: label
|
|
152
170
|
}), /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
153
171
|
as: "span",
|
|
154
172
|
children: imgUrl ? sprintf( /* translators: %s: file name */
|
|
155
|
-
__('Background image: %s'), filename ||
|
|
173
|
+
__('Background image: %s'), filename || label) : __('No background image selected')
|
|
156
174
|
})]
|
|
157
175
|
})]
|
|
158
176
|
})
|
|
159
177
|
});
|
|
160
178
|
}
|
|
161
|
-
function
|
|
162
|
-
|
|
163
|
-
|
|
179
|
+
function BackgroundControlsPanel({
|
|
180
|
+
label,
|
|
181
|
+
filename,
|
|
182
|
+
url: imgUrl,
|
|
183
|
+
children,
|
|
184
|
+
onToggle: onToggleCallback = noop,
|
|
185
|
+
hasImageValue
|
|
186
|
+
}) {
|
|
187
|
+
if (!hasImageValue) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const imgLabel = label || getFilename(imgUrl) || __('Add background image');
|
|
191
|
+
return /*#__PURE__*/_jsx(Dropdown, {
|
|
192
|
+
popoverProps: BACKGROUND_POPOVER_PROPS,
|
|
193
|
+
renderToggle: ({
|
|
194
|
+
onToggle,
|
|
195
|
+
isOpen
|
|
196
|
+
}) => {
|
|
197
|
+
const toggleProps = {
|
|
198
|
+
onClick: onToggle,
|
|
199
|
+
className: 'block-editor-global-styles-background-panel__dropdown-toggle',
|
|
200
|
+
'aria-expanded': isOpen,
|
|
201
|
+
'aria-label': __('Background size, position and repeat options.'),
|
|
202
|
+
isOpen
|
|
203
|
+
};
|
|
204
|
+
return /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
|
|
205
|
+
imgUrl: imgUrl,
|
|
206
|
+
filename: filename,
|
|
207
|
+
label: imgLabel,
|
|
208
|
+
toggleProps: toggleProps,
|
|
209
|
+
as: "button",
|
|
210
|
+
onToggleCallback: onToggleCallback
|
|
211
|
+
});
|
|
212
|
+
},
|
|
213
|
+
renderContent: () => /*#__PURE__*/_jsx(DropdownContentWrapper, {
|
|
214
|
+
className: "block-editor-global-styles-background-panel__dropdown-content-wrapper",
|
|
215
|
+
paddingSize: "medium",
|
|
216
|
+
children: children
|
|
217
|
+
})
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function BackgroundImageControls({
|
|
164
221
|
onChange,
|
|
165
222
|
style,
|
|
166
223
|
inheritedValue,
|
|
224
|
+
onRemoveImage = noop,
|
|
225
|
+
displayInPanel,
|
|
167
226
|
themeFileURIs
|
|
168
227
|
}) {
|
|
169
228
|
const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
|
|
@@ -224,15 +283,6 @@ function BackgroundImageToolsPanelItem({
|
|
|
224
283
|
onError: onUploadError
|
|
225
284
|
});
|
|
226
285
|
};
|
|
227
|
-
const resetAllFilter = useCallback(previousValue => {
|
|
228
|
-
return {
|
|
229
|
-
...previousValue,
|
|
230
|
-
style: {
|
|
231
|
-
...previousValue.style,
|
|
232
|
-
background: undefined
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
}, []);
|
|
236
286
|
const hasValue = hasBackgroundImageValue(style);
|
|
237
287
|
const closeAndFocus = () => {
|
|
238
288
|
const [toggleButton] = focus.tabbable.find(replaceContainerRef.current);
|
|
@@ -244,52 +294,48 @@ function BackgroundImageToolsPanelItem({
|
|
|
244
294
|
};
|
|
245
295
|
const onRemove = () => onChange(setImmutably(style, ['background', 'backgroundImage'], 'none'));
|
|
246
296
|
const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
children: __('Reset ')
|
|
282
|
-
})]
|
|
283
|
-
}), /*#__PURE__*/_jsx(DropZone, {
|
|
284
|
-
onFilesDrop: onFilesDrop,
|
|
285
|
-
label: __('Drop to upload')
|
|
297
|
+
const imgLabel = title || getFilename(url) || __('Add background image');
|
|
298
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
299
|
+
ref: replaceContainerRef,
|
|
300
|
+
className: "block-editor-global-styles-background-panel__image-tools-panel-item",
|
|
301
|
+
children: [/*#__PURE__*/_jsxs(MediaReplaceFlow, {
|
|
302
|
+
mediaId: id,
|
|
303
|
+
mediaURL: url,
|
|
304
|
+
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
305
|
+
accept: "image/*",
|
|
306
|
+
onSelect: onSelectMedia,
|
|
307
|
+
popoverProps: {
|
|
308
|
+
className: clsx({
|
|
309
|
+
'block-editor-global-styles-background-panel__media-replace-popover': displayInPanel
|
|
310
|
+
})
|
|
311
|
+
},
|
|
312
|
+
name: /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
|
|
313
|
+
className: "block-editor-global-styles-background-panel__image-preview",
|
|
314
|
+
imgUrl: getResolvedThemeFilePath(url, themeFileURIs),
|
|
315
|
+
filename: title,
|
|
316
|
+
label: imgLabel
|
|
317
|
+
}),
|
|
318
|
+
variant: "secondary",
|
|
319
|
+
children: [canRemove && /*#__PURE__*/_jsx(MenuItem, {
|
|
320
|
+
onClick: () => {
|
|
321
|
+
closeAndFocus();
|
|
322
|
+
onRemove();
|
|
323
|
+
},
|
|
324
|
+
children: __('Remove')
|
|
325
|
+
}), hasValue && /*#__PURE__*/_jsx(MenuItem, {
|
|
326
|
+
onClick: () => {
|
|
327
|
+
closeAndFocus();
|
|
328
|
+
onRemoveImage();
|
|
329
|
+
},
|
|
330
|
+
children: __('Reset ')
|
|
286
331
|
})]
|
|
287
|
-
})
|
|
332
|
+
}), /*#__PURE__*/_jsx(DropZone, {
|
|
333
|
+
onFilesDrop: onFilesDrop,
|
|
334
|
+
label: __('Drop to upload')
|
|
335
|
+
})]
|
|
288
336
|
});
|
|
289
337
|
}
|
|
290
|
-
function
|
|
291
|
-
panelId,
|
|
292
|
-
isShownByDefault,
|
|
338
|
+
function BackgroundSizeControls({
|
|
293
339
|
onChange,
|
|
294
340
|
style,
|
|
295
341
|
inheritedValue,
|
|
@@ -316,20 +362,6 @@ function BackgroundSizeToolsPanelItem({
|
|
|
316
362
|
* should reflect the current repeat value.
|
|
317
363
|
*/
|
|
318
364
|
const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
|
|
319
|
-
const hasValue = hasBackgroundSizeValue(style);
|
|
320
|
-
const resetAllFilter = useCallback(previousValue => {
|
|
321
|
-
return {
|
|
322
|
-
...previousValue,
|
|
323
|
-
style: {
|
|
324
|
-
...previousValue.style,
|
|
325
|
-
background: {
|
|
326
|
-
...previousValue.style?.background,
|
|
327
|
-
backgroundRepeat: undefined,
|
|
328
|
-
backgroundSize: undefined
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
};
|
|
332
|
-
}, []);
|
|
333
365
|
const updateBackgroundSize = next => {
|
|
334
366
|
// When switching to 'contain' toggle the repeat off.
|
|
335
367
|
let nextRepeat = repeatValue;
|
|
@@ -373,25 +405,13 @@ function BackgroundSizeToolsPanelItem({
|
|
|
373
405
|
onChange(setImmutably(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
|
|
374
406
|
};
|
|
375
407
|
const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
|
|
376
|
-
const resetBackgroundSize = () => onChange(setImmutably(style, ['background'], {
|
|
377
|
-
...style?.background,
|
|
378
|
-
backgroundPosition: undefined,
|
|
379
|
-
backgroundRepeat: undefined,
|
|
380
|
-
backgroundSize: undefined
|
|
381
|
-
}));
|
|
382
408
|
return /*#__PURE__*/_jsxs(VStack, {
|
|
383
|
-
|
|
384
|
-
spacing: 2,
|
|
409
|
+
spacing: 3,
|
|
385
410
|
className: "single-column",
|
|
386
|
-
hasValue: () => hasValue,
|
|
387
|
-
label: __('Size'),
|
|
388
|
-
onDeselect: resetBackgroundSize,
|
|
389
|
-
isShownByDefault: isShownByDefault,
|
|
390
|
-
resetAllFilter: resetAllFilter,
|
|
391
|
-
panelId: panelId,
|
|
392
411
|
children: [/*#__PURE__*/_jsx(FocalPointPicker, {
|
|
393
412
|
__next40pxDefaultSize: true,
|
|
394
|
-
|
|
413
|
+
__nextHasNoMarginBottom: true,
|
|
414
|
+
label: __('Focal point'),
|
|
395
415
|
url: getResolvedThemeFilePath(imageValue, themeFileURIs),
|
|
396
416
|
value: backgroundPositionToCoords(positionValue),
|
|
397
417
|
onChange: updateBackgroundPosition
|
|
@@ -416,18 +436,20 @@ function BackgroundSizeToolsPanelItem({
|
|
|
416
436
|
justify: "flex-start",
|
|
417
437
|
spacing: 2,
|
|
418
438
|
as: "span",
|
|
419
|
-
children: [
|
|
439
|
+
children: [/*#__PURE__*/_jsx(UnitControl, {
|
|
420
440
|
"aria-label": __('Background image width'),
|
|
421
441
|
onChange: updateBackgroundSize,
|
|
422
442
|
value: sizeValue,
|
|
423
443
|
size: "__unstable-large",
|
|
424
444
|
__unstableInputWidth: "100px",
|
|
425
445
|
min: 0,
|
|
426
|
-
placeholder: __('Auto')
|
|
427
|
-
|
|
446
|
+
placeholder: __('Auto'),
|
|
447
|
+
disabled: currentValueForToggle !== 'auto' || currentValueForToggle === undefined
|
|
448
|
+
}), /*#__PURE__*/_jsx(ToggleControl, {
|
|
428
449
|
label: __('Repeat'),
|
|
429
450
|
checked: repeatCheckedValue,
|
|
430
|
-
onChange: toggleIsRepeated
|
|
451
|
+
onChange: toggleIsRepeated,
|
|
452
|
+
disabled: currentValueForToggle === 'cover'
|
|
431
453
|
})]
|
|
432
454
|
})]
|
|
433
455
|
});
|
|
@@ -440,6 +462,7 @@ function BackgroundToolsPanel({
|
|
|
440
462
|
children,
|
|
441
463
|
headerLabel
|
|
442
464
|
}) {
|
|
465
|
+
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
443
466
|
const resetAll = () => {
|
|
444
467
|
const updatedValue = resetAllFilter(value);
|
|
445
468
|
onChange(updatedValue);
|
|
@@ -450,7 +473,7 @@ function BackgroundToolsPanel({
|
|
|
450
473
|
label: headerLabel,
|
|
451
474
|
resetAll: resetAll,
|
|
452
475
|
panelId: panelId,
|
|
453
|
-
dropdownMenuProps:
|
|
476
|
+
dropdownMenuProps: dropdownMenuProps,
|
|
454
477
|
children: children
|
|
455
478
|
});
|
|
456
479
|
}
|
|
@@ -472,28 +495,67 @@ export default function BackgroundPanel({
|
|
|
472
495
|
background: {}
|
|
473
496
|
};
|
|
474
497
|
}, []);
|
|
475
|
-
const
|
|
498
|
+
const resetBackground = () => onChange(setImmutably(value, ['background'], {}));
|
|
499
|
+
const {
|
|
500
|
+
title,
|
|
501
|
+
url
|
|
502
|
+
} = value?.background?.backgroundImage || {
|
|
503
|
+
...inheritedValue?.background?.backgroundImage
|
|
504
|
+
};
|
|
505
|
+
const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(inheritedValue);
|
|
506
|
+
const shouldShowBackgroundImageControls = hasImageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
|
|
507
|
+
const [isDropDownOpen, setIsDropDownOpen] = useState(false);
|
|
476
508
|
return /*#__PURE__*/_jsxs(Wrapper, {
|
|
477
509
|
resetAllFilter: resetAllFilter,
|
|
478
510
|
value: value,
|
|
479
511
|
onChange: onChange,
|
|
480
512
|
panelId: panelId,
|
|
481
513
|
headerLabel: headerLabel,
|
|
482
|
-
children: [/*#__PURE__*/_jsx(
|
|
483
|
-
|
|
484
|
-
|
|
514
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
515
|
+
className: clsx('block-editor-global-styles-background-panel__inspector-media-replace-container', {
|
|
516
|
+
'is-open': isDropDownOpen
|
|
517
|
+
}),
|
|
518
|
+
children: shouldShowBackgroundImageControls ? /*#__PURE__*/_jsx(BackgroundControlsPanel, {
|
|
519
|
+
label: title,
|
|
520
|
+
filename: title,
|
|
521
|
+
url: getResolvedThemeFilePath(url, themeFileURIs),
|
|
522
|
+
onToggle: setIsDropDownOpen,
|
|
523
|
+
hasImageValue: hasImageValue,
|
|
524
|
+
children: /*#__PURE__*/_jsxs(VStack, {
|
|
525
|
+
spacing: 3,
|
|
526
|
+
className: "single-column",
|
|
527
|
+
children: [/*#__PURE__*/_jsx(BackgroundImageControls, {
|
|
528
|
+
onChange: onChange,
|
|
529
|
+
style: value,
|
|
530
|
+
inheritedValue: inheritedValue,
|
|
531
|
+
themeFileURIs: themeFileURIs,
|
|
532
|
+
displayInPanel: true,
|
|
533
|
+
onRemoveImage: () => {
|
|
534
|
+
setIsDropDownOpen(false);
|
|
535
|
+
resetBackground();
|
|
536
|
+
}
|
|
537
|
+
}), /*#__PURE__*/_jsx(BackgroundSizeControls, {
|
|
538
|
+
onChange: onChange,
|
|
539
|
+
panelId: panelId,
|
|
540
|
+
style: value,
|
|
541
|
+
defaultValues: defaultValues,
|
|
542
|
+
inheritedValue: inheritedValue,
|
|
543
|
+
themeFileURIs: themeFileURIs
|
|
544
|
+
})]
|
|
545
|
+
})
|
|
546
|
+
}) : /*#__PURE__*/_jsx(BackgroundImageControls, {
|
|
547
|
+
onChange: onChange,
|
|
548
|
+
style: value,
|
|
549
|
+
inheritedValue: inheritedValue,
|
|
550
|
+
themeFileURIs: themeFileURIs
|
|
551
|
+
})
|
|
552
|
+
}), /*#__PURE__*/_jsx(ToolsPanelItem, {
|
|
553
|
+
hasValue: () => hasImageValue,
|
|
554
|
+
label: __('Image'),
|
|
555
|
+
onDeselect: resetBackground,
|
|
485
556
|
isShownByDefault: defaultControls.backgroundImage,
|
|
486
|
-
style: value,
|
|
487
|
-
inheritedValue: inheritedValue,
|
|
488
|
-
themeFileURIs: themeFileURIs
|
|
489
|
-
}), shouldShowBackgroundSizeControls && /*#__PURE__*/_jsx(BackgroundSizeToolsPanelItem, {
|
|
490
|
-
onChange: onChange,
|
|
491
557
|
panelId: panelId,
|
|
492
|
-
|
|
493
|
-
style: value,
|
|
494
|
-
inheritedValue: inheritedValue,
|
|
495
|
-
defaultValues: defaultValues,
|
|
496
|
-
themeFileURIs: themeFileURIs
|
|
558
|
+
className: "block-editor-global-styles-background-panel__hidden-tools-panel-item"
|
|
497
559
|
})]
|
|
498
560
|
});
|
|
499
561
|
}
|
|
@@ -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","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useDispatch","useSelect","focus","isBlobURL","TOOLSPANEL_DROPDOWNMENU_PROPS","setImmutably","MediaReplaceFlow","blockEditorStore","getResolvedThemeFilePath","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","backgroundSize","useHasBackgroundPanel","settings","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreview","label","filename","imgUrl","imgLabel","as","children","justify","className","numberOfLines","BackgroundImageToolsPanelItem","panelId","isShownByDefault","onChange","inheritedValue","themeFileURIs","mediaUpload","select","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","previousValue","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","onDeselect","ref","mediaId","mediaURL","accept","onSelect","name","variant","onClick","BackgroundSizeToolsPanelItem","defaultValues","repeatValue","backgroundRepeat","imageValue","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","resetBackgroundSize","spacing","__next40pxDefaultSize","size","isBlock","help","__unstableInputWidth","min","placeholder","checked","BackgroundToolsPanel","headerLabel","resetAll","updatedValue","dropdownMenuProps","BackgroundPanel","Wrapper","defaultControls","shouldShowBackgroundSizeControls"],"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} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useCallback, Platform, useRef } 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 { TOOLSPANEL_DROPDOWNMENU_PROPS } 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\tbackgroundSize: false,\n};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @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 InspectorImagePreview( { label, filename, url: imgUrl } ) {\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify={ imgUrl ? 'flex-start' : 'center' } as=\"span\">\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-image-indicator-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-image': imgUrl,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\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\">\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{ imgLabel }\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 || imgLabel\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 BackgroundImageToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\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\n\tconst replaceContainerRef = useRef();\n\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 resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\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\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ resetBackgroundImage }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-container\"\n\t\t\t\tref={ replaceContainerRef }\n\t\t\t>\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tname={\n\t\t\t\t\t\t<InspectorImagePreview\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={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ hasValue && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tresetBackgroundImage();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t<DropZone\n\t\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nfunction BackgroundSizeToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\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\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 hasValue = hasBackgroundSizeValue( style );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...previousValue.style?.background,\n\t\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\t\tbackgroundSize: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\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 resetBackgroundSize = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: undefined,\n\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\tbackgroundSize: undefined,\n\t\t\t} )\n\t\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Size' ) }\n\t\t\tonDeselect={ resetBackgroundSize }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'Position' ) }\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<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{ currentValueForToggle !== undefined &&\n\t\t\t\tcurrentValueForToggle !== 'cover' &&\n\t\t\t\tcurrentValueForToggle !== 'contain' ? (\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\t/>\n\t\t\t\t) : null }\n\t\t\t\t{ currentValueForToggle !== 'cover' && (\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\t/>\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 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={ TOOLSPANEL_DROPDOWNMENU_PROPS }\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\tconst shouldShowBackgroundSizeControls =\n\t\tsettings?.background?.backgroundSize;\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<BackgroundImageToolsPanelItem\n\t\t\t\tonChange={ onChange }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tstyle={ value }\n\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t/>\n\t\t\t{ shouldShowBackgroundSizeControls && (\n\t\t\t\t<BackgroundSizeToolsPanelItem\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundSize }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t/>\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","__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","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","spacing","__next40pxDefaultSize","__nextHasNoMarginBottom","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","checked","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\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\treturn (\n\t\t<VStack spacing={ 3 } 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<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":[]}
|
|
@@ -10,7 +10,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
10
10
|
*/
|
|
11
11
|
import BorderRadiusControl from '../border-radius-control';
|
|
12
12
|
import { useColorsPerOrigin } from './hooks';
|
|
13
|
-
import { getValueFromVariable,
|
|
13
|
+
import { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';
|
|
14
14
|
import { setImmutably } from '../../utils/object';
|
|
15
15
|
import { useBorderPanelLabel } from '../../hooks/border';
|
|
16
16
|
import { ShadowPopover, useShadowPresets } from './shadow-panel-components';
|
|
@@ -54,6 +54,7 @@ function BorderToolsPanel({
|
|
|
54
54
|
children,
|
|
55
55
|
label
|
|
56
56
|
}) {
|
|
57
|
+
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
57
58
|
const resetAll = () => {
|
|
58
59
|
const updatedValue = resetAllFilter(value);
|
|
59
60
|
onChange(updatedValue);
|
|
@@ -62,7 +63,7 @@ function BorderToolsPanel({
|
|
|
62
63
|
label: label,
|
|
63
64
|
resetAll: resetAll,
|
|
64
65
|
panelId: panelId,
|
|
65
|
-
dropdownMenuProps:
|
|
66
|
+
dropdownMenuProps: dropdownMenuProps,
|
|
66
67
|
children: children
|
|
67
68
|
});
|
|
68
69
|
}
|