@wordpress/block-editor 10.2.0 → 10.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +41 -0
- package/build/components/alignment-control/ui.js +1 -1
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/constants.js +1 -1
- package/build/components/block-alignment-control/constants.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +1 -1
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-compare/index.js +1 -3
- package/build/components/block-compare/index.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +4 -2
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-edit/index.js +4 -2
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-inspector/index.js +4 -4
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-list-compact.native.js +1 -0
- package/build/components/block-list/block-list-compact.native.js.map +1 -1
- package/build/components/block-list/block.js +75 -15
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +79 -12
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -23
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/modal.js +9 -6
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-parent-selector/index.js +3 -3
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +5 -4
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-popover/drop-zone.js +85 -0
- package/build/components/block-popover/drop-zone.js.map +1 -0
- package/build/components/block-popover/inbetween.js +2 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +4 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +2 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +8 -13
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-preview/live.js +3 -7
- package/build/components/block-preview/live.js.map +1 -1
- package/build/components/block-selection-clearer/index.js +9 -1
- package/build/components/block-selection-clearer/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +19 -19
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +18 -42
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-switcher/index.js +2 -8
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/preview-block-popover.js +1 -1
- package/build/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build/components/block-toolbar/index.js +4 -4
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -1
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +56 -16
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +15 -3
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-vertical-alignment-control/ui.js +1 -1
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/border-radius-control/all-input-control.js +2 -1
- package/build/components/border-radius-control/all-input-control.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +2 -1
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/colors-gradients/control.js +1 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/duotone-control/index.js +1 -1
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +256 -0
- package/build/components/font-sizes/fluid-utils.js.map +1 -0
- package/build/components/font-sizes/index.js +8 -0
- package/build/components/font-sizes/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +1 -1
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/constants.js +1 -1
- package/build/components/image-editor/constants.js.map +1 -1
- package/build/components/index.js +0 -9
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +6 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +151 -78
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js +2 -7
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/menu.js +14 -3
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-items.js +23 -2
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +4 -2
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/line-height-control/index.js +2 -1
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +2 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/media-replace-flow/index.js +1 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/preview-options/index.js +2 -3
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +1 -1
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +1 -1
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +1 -1
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/all-input-control.js +6 -2
- package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
- package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
- package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +6 -2
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls.js +6 -2
- package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +45 -8
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/url-input/index.js +1 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +98 -57
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +12 -12
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-on-block-drop/types.js +6 -0
- package/build/components/use-on-block-drop/types.js.map +1 -0
- package/build/hooks/align.js +1 -3
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +1 -7
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/border.js +1 -0
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/dimensions.js +32 -4
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-size.js +61 -0
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/layout.js +4 -3
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +24 -17
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +20 -12
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +126 -4
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-typography-props.js +17 -3
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/hooks/utils.js +8 -7
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +0 -1
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +1 -1
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +63 -45
- package/build/store/actions.js.map +1 -1
- package/build/store/array.js +1 -7
- package/build/store/array.js.map +1 -1
- package/build/store/defaults.js +3 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +31 -15
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +46 -29
- package/build/store/selectors.js.map +1 -1
- package/build/utils/math.js +14 -0
- package/build/utils/math.js.map +1 -1
- package/build/utils/pre-parse-patterns.js +19 -2
- package/build/utils/pre-parse-patterns.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +1 -1
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/constants.js +1 -1
- package/build-module/components/block-alignment-control/constants.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-compare/index.js +2 -3
- package/build-module/components/block-compare/index.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +7 -3
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-edit/index.js +4 -2
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +4 -4
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-list-compact.native.js +1 -0
- package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
- package/build-module/components/block-list/block.js +75 -15
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +80 -13
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +8 -24
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/modal.js +10 -8
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +3 -3
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +5 -4
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-popover/drop-zone.js +70 -0
- package/build-module/components/block-popover/drop-zone.js.map +1 -0
- package/build-module/components/block-popover/inbetween.js +2 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +4 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +8 -12
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-preview/live.js +3 -6
- package/build-module/components/block-preview/live.js.map +1 -1
- package/build-module/components/block-selection-clearer/index.js +9 -1
- package/build-module/components/block-selection-clearer/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +20 -19
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +19 -44
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +2 -7
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/preview-block-popover.js +1 -1
- package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +4 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +2 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +54 -16
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +15 -3
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/border-radius-control/all-input-control.js +2 -1
- package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +2 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +2 -1
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +2 -2
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/duotone-control/index.js +1 -1
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +245 -0
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
- package/build-module/components/font-sizes/index.js +1 -0
- package/build-module/components/font-sizes/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +2 -2
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/constants.js +1 -1
- package/build-module/components/image-editor/constants.js.map +1 -1
- package/build-module/components/index.js +0 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +6 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +148 -81
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/menu.js +10 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-items.js +23 -3
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +4 -2
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +2 -1
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +2 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +1 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/preview-options/index.js +2 -3
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +1 -1
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
- package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
- package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
- package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +6 -2
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
- package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +44 -8
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +98 -58
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +12 -12
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/types.js +2 -0
- package/build-module/components/use-on-block-drop/types.js.map +1 -0
- package/build-module/hooks/align.js +1 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +1 -6
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/border.js +1 -0
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/dimensions.js +32 -4
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-size.js +60 -1
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/layout.js +5 -4
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +25 -18
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +21 -13
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +124 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +17 -4
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/hooks/utils.js +8 -8
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +0 -1
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +1 -1
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +59 -42
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/array.js +1 -6
- package/build-module/store/array.js.map +1 -1
- package/build-module/store/defaults.js +3 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +32 -16
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +47 -30
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/math.js +12 -0
- package/build-module/utils/math.js.map +1 -1
- package/build-module/utils/pre-parse-patterns.js +19 -2
- package/build-module/utils/pre-parse-patterns.js.map +1 -1
- package/build-style/style-rtl.css +292 -206
- package/build-style/style.css +288 -202
- package/package.json +29 -28
- package/src/components/alignment-control/ui.js +1 -1
- package/src/components/block-alignment-control/constants.js +1 -1
- package/src/components/block-alignment-matrix-control/index.js +1 -1
- package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
- package/src/components/block-breadcrumb/test/index.js +2 -2
- package/src/components/block-compare/index.js +3 -2
- package/src/components/block-draggable/draggable-chip.js +4 -2
- package/src/components/block-edit/index.js +2 -1
- package/src/components/block-inspector/index.js +8 -7
- package/src/components/block-list/block-list-compact.native.js +1 -0
- package/src/components/block-list/block.js +113 -7
- package/src/components/block-list/block.native.js +123 -9
- package/src/components/block-list/style.scss +93 -126
- package/src/components/block-list/use-in-between-inserter.js +8 -19
- package/src/components/block-lock/modal.js +12 -7
- package/src/components/block-mover/stories/index.js +1 -1
- package/src/components/block-mover/style.scss +35 -1
- package/src/components/block-parent-selector/index.js +3 -3
- package/src/components/block-patterns-list/index.js +9 -5
- package/src/components/block-patterns-list/style.scss +7 -3
- package/src/components/block-popover/README.md +8 -0
- package/src/components/block-popover/drop-zone.js +63 -0
- package/src/components/block-popover/inbetween.js +1 -0
- package/src/components/block-popover/index.js +3 -1
- package/src/components/block-popover/style.scss +17 -5
- package/src/components/block-preview/auto.js +1 -1
- package/src/components/block-preview/index.js +15 -11
- package/src/components/block-preview/live.js +2 -7
- package/src/components/block-preview/test/index.js +1 -7
- package/src/components/block-selection-clearer/index.js +7 -2
- package/src/components/block-selection-clearer/test/index.js +118 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +29 -18
- package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
- package/src/components/block-styles/index.js +26 -49
- package/src/components/block-switcher/index.js +2 -7
- package/src/components/block-switcher/preview-block-popover.js +1 -1
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-toolbar/index.js +4 -6
- package/src/components/block-toolbar/style.scss +38 -14
- package/src/components/block-tools/back-compat.js +1 -0
- package/src/components/block-tools/insertion-point.js +49 -15
- package/src/components/block-tools/selected-block-popover.js +14 -1
- package/src/components/block-variation-picker/README.md +1 -1
- package/src/components/block-vertical-alignment-control/ui.js +1 -1
- package/src/components/border-radius-control/all-input-control.js +1 -0
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/input-controls.js +1 -0
- package/src/components/border-radius-control/style.scss +15 -24
- package/src/components/button-block-appender/style.scss +4 -2
- package/src/components/color-palette/test/__snapshots__/control.js.snap +86 -104
- package/src/components/color-palette/test/control.js +11 -15
- package/src/components/colors-gradients/control.js +2 -2
- package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
- package/src/components/colors-gradients/test/control.js +49 -77
- package/src/components/duotone-control/index.js +1 -1
- package/src/components/font-sizes/fluid-utils.js +296 -0
- package/src/components/font-sizes/index.js +1 -0
- package/src/components/font-sizes/test/fluid-utils.js +168 -0
- package/src/components/font-sizes/with-font-sizes.js +2 -3
- package/src/components/iframe/index.js +1 -1
- package/src/components/image-editor/constants.js +1 -1
- package/src/components/image-size-control/test/index.js +47 -60
- package/src/components/index.js +0 -1
- package/src/components/inner-blocks/index.js +5 -1
- package/src/components/inner-blocks/test/index.js +4 -0
- package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
- package/src/components/inserter/block-patterns-tab.js +232 -98
- package/src/components/inserter/hooks/use-insertion-point.js +3 -11
- package/src/components/inserter/menu.js +15 -2
- package/src/components/inserter/search-items.js +23 -3
- package/src/components/inserter/style.scss +94 -9
- package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
- package/src/components/inserter/test/search-items.js +6 -0
- package/src/components/inserter-draggable-blocks/index.js +12 -2
- package/src/components/inserter-list-item/style.scss +22 -1
- package/src/components/letter-spacing-control/README.md +55 -0
- package/src/components/line-height-control/index.js +1 -0
- package/src/components/link-control/README.md +3 -3
- package/src/components/link-control/test/index.js +1 -1
- package/src/components/list-view/drop-indicator.js +1 -0
- package/src/components/list-view/style.scss +1 -36
- package/src/components/list-view/use-list-view-drop-zone.js +4 -18
- package/src/components/media-replace-flow/index.js +1 -1
- package/src/components/media-replace-flow/test/index.js +69 -51
- package/src/components/panel-color-settings/test/index.js +4 -4
- package/src/components/preview-options/index.js +2 -2
- package/src/components/preview-options/style.scss +1 -1
- package/src/components/provider/test/use-block-sync.js +131 -165
- package/src/components/responsive-block-control/test/index.js +4 -4
- package/src/components/rich-text/format-toolbar/index.js +1 -1
- package/src/components/rich-text/format-toolbar-container.js +1 -1
- package/src/components/rich-text/use-paste-handler.js +1 -1
- package/src/components/spacing-sizes-control/all-input-control.js +4 -0
- package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
- package/src/components/spacing-sizes-control/index.js +4 -0
- package/src/components/spacing-sizes-control/input-controls.js +4 -0
- package/src/components/spacing-sizes-control/spacing-input-control.js +26 -3
- package/src/components/spacing-sizes-control/style.scss +27 -19
- package/src/components/url-input/index.js +1 -1
- package/src/components/use-block-drop-zone/index.js +136 -79
- package/src/components/use-block-drop-zone/test/index.js +333 -81
- package/src/components/use-on-block-drop/index.js +11 -12
- package/src/components/use-on-block-drop/types.ts +1 -0
- package/src/hooks/align.js +3 -2
- package/src/hooks/align.native.js +5 -8
- package/src/hooks/border.js +1 -0
- package/src/hooks/dimensions.js +32 -5
- package/src/hooks/font-size.js +76 -0
- package/src/hooks/layout.js +7 -9
- package/src/hooks/margin.js +20 -14
- package/src/hooks/padding.js +20 -16
- package/src/hooks/style.js +122 -3
- package/src/hooks/test/align.js +96 -72
- package/src/hooks/test/style.js +206 -1
- package/src/hooks/test/use-typography-props.js +22 -0
- package/src/hooks/use-typography-props.js +18 -3
- package/src/hooks/utils.js +10 -7
- package/src/layouts/constrained.js +0 -1
- package/src/layouts/flex.js +1 -1
- package/src/store/actions.js +24 -12
- package/src/store/array.js +1 -6
- package/src/store/defaults.js +3 -0
- package/src/store/reducer.js +31 -24
- package/src/store/selectors.js +28 -21
- package/src/store/test/actions.js +0 -9
- package/src/store/test/selectors.js +1 -1
- package/src/utils/math.js +17 -0
- package/src/utils/pre-parse-patterns.js +12 -7
- package/build/components/inserter/pattern-panel.js +0 -87
- package/build/components/inserter/pattern-panel.js.map +0 -1
- package/build-module/components/inserter/pattern-panel.js +0 -74
- package/build-module/components/inserter/pattern-panel.js.map +0 -1
- package/src/components/inserter/pattern-panel.js +0 -93
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { without } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -28,9 +23,11 @@ addFilter(
|
|
|
28
23
|
settings.supports = {
|
|
29
24
|
...settings.supports,
|
|
30
25
|
align: Array.isArray( blockAlign )
|
|
31
|
-
?
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
? blockAlign.filter(
|
|
27
|
+
( alignment ) =>
|
|
28
|
+
! Object.values(
|
|
29
|
+
WIDE_ALIGNMENTS.alignments
|
|
30
|
+
).includes( alignment )
|
|
34
31
|
)
|
|
35
32
|
: blockAlign,
|
|
36
33
|
alignWide: false,
|
package/src/hooks/border.js
CHANGED
|
@@ -272,6 +272,7 @@ export function BorderPanel( props ) {
|
|
|
272
272
|
onChange={ onBorderChange }
|
|
273
273
|
popoverOffset={ 40 }
|
|
274
274
|
popoverPlacement="left-start"
|
|
275
|
+
size="__unstable-large"
|
|
275
276
|
value={ hydratedBorder }
|
|
276
277
|
__experimentalHasMultipleOrigins={ true }
|
|
277
278
|
__experimentalIsRenderedInSidebar={ true }
|
package/src/hooks/dimensions.js
CHANGED
|
@@ -7,7 +7,7 @@ import classnames from 'classnames';
|
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
import { __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
|
|
10
|
-
import { Platform } from '@wordpress/element';
|
|
10
|
+
import { Platform, useState } from '@wordpress/element';
|
|
11
11
|
import { __ } from '@wordpress/i18n';
|
|
12
12
|
import { getBlockSupport } from '@wordpress/blocks';
|
|
13
13
|
|
|
@@ -44,6 +44,13 @@ export const SPACING_SUPPORT_KEY = 'spacing';
|
|
|
44
44
|
export const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];
|
|
45
45
|
export const AXIAL_SIDES = [ 'vertical', 'horizontal' ];
|
|
46
46
|
|
|
47
|
+
function useVisualizerMouseOver() {
|
|
48
|
+
const [ isMouseOver, setIsMouseOver ] = useState( false );
|
|
49
|
+
const onMouseOver = () => setIsMouseOver( true );
|
|
50
|
+
const onMouseOut = () => setIsMouseOver( false );
|
|
51
|
+
return { isMouseOver, onMouseOver, onMouseOut };
|
|
52
|
+
}
|
|
53
|
+
|
|
47
54
|
/**
|
|
48
55
|
* Inspector controls for dimensions support.
|
|
49
56
|
*
|
|
@@ -58,6 +65,8 @@ export function DimensionsPanel( props ) {
|
|
|
58
65
|
const isDisabled = useIsDimensionsDisabled( props );
|
|
59
66
|
const isSupported = hasDimensionsSupport( props.name );
|
|
60
67
|
const spacingSizes = useSetting( 'spacing.spacingSizes' );
|
|
68
|
+
const paddingMouseOver = useVisualizerMouseOver();
|
|
69
|
+
const marginMouseOver = useVisualizerMouseOver();
|
|
61
70
|
|
|
62
71
|
if ( isDisabled || ! isSupported ) {
|
|
63
72
|
return null;
|
|
@@ -96,7 +105,11 @@ export function DimensionsPanel( props ) {
|
|
|
96
105
|
isShownByDefault={ defaultSpacingControls?.padding }
|
|
97
106
|
panelId={ props.clientId }
|
|
98
107
|
>
|
|
99
|
-
<PaddingEdit
|
|
108
|
+
<PaddingEdit
|
|
109
|
+
onMouseOver={ paddingMouseOver.onMouseOver }
|
|
110
|
+
onMouseOut={ paddingMouseOver.onMouseOut }
|
|
111
|
+
{ ...props }
|
|
112
|
+
/>
|
|
100
113
|
</ToolsPanelItem>
|
|
101
114
|
) }
|
|
102
115
|
{ ! isMarginDisabled && (
|
|
@@ -109,7 +122,11 @@ export function DimensionsPanel( props ) {
|
|
|
109
122
|
isShownByDefault={ defaultSpacingControls?.margin }
|
|
110
123
|
panelId={ props.clientId }
|
|
111
124
|
>
|
|
112
|
-
<MarginEdit
|
|
125
|
+
<MarginEdit
|
|
126
|
+
onMouseOver={ marginMouseOver.onMouseOver }
|
|
127
|
+
onMouseOut={ marginMouseOver.onMouseOut }
|
|
128
|
+
{ ...props }
|
|
129
|
+
/>
|
|
113
130
|
</ToolsPanelItem>
|
|
114
131
|
) }
|
|
115
132
|
{ ! isGapDisabled && (
|
|
@@ -126,8 +143,18 @@ export function DimensionsPanel( props ) {
|
|
|
126
143
|
</ToolsPanelItem>
|
|
127
144
|
) }
|
|
128
145
|
</InspectorControls>
|
|
129
|
-
{ ! isPaddingDisabled &&
|
|
130
|
-
|
|
146
|
+
{ ! isPaddingDisabled && (
|
|
147
|
+
<PaddingVisualizer
|
|
148
|
+
forceShow={ paddingMouseOver.isMouseOver }
|
|
149
|
+
{ ...props }
|
|
150
|
+
/>
|
|
151
|
+
) }
|
|
152
|
+
{ ! isMarginDisabled && (
|
|
153
|
+
<MarginVisualizer
|
|
154
|
+
forceShow={ marginMouseOver.isMouseOver }
|
|
155
|
+
{ ...props }
|
|
156
|
+
/>
|
|
157
|
+
) }
|
|
131
158
|
</>
|
|
132
159
|
);
|
|
133
160
|
}
|
package/src/hooks/font-size.js
CHANGED
|
@@ -5,6 +5,7 @@ import { addFilter } from '@wordpress/hooks';
|
|
|
5
5
|
import { hasBlockSupport } from '@wordpress/blocks';
|
|
6
6
|
import TokenList from '@wordpress/token-list';
|
|
7
7
|
import { createHigherOrderComponent } from '@wordpress/compose';
|
|
8
|
+
import { select } from '@wordpress/data';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Internal dependencies
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
getFontSizeClass,
|
|
15
16
|
getFontSizeObjectByValue,
|
|
16
17
|
FontSizePicker,
|
|
18
|
+
getComputedFluidTypographyValue,
|
|
17
19
|
} from '../components/font-sizes';
|
|
18
20
|
import { TYPOGRAPHY_SUPPORT_KEY } from './typography';
|
|
19
21
|
import {
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
shouldSkipSerialization,
|
|
23
25
|
} from './utils';
|
|
24
26
|
import useSetting from '../components/use-setting';
|
|
27
|
+
import { store as blockEditorStore } from '../store';
|
|
25
28
|
|
|
26
29
|
export const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';
|
|
27
30
|
|
|
@@ -147,6 +150,7 @@ export function FontSizeEdit( props ) {
|
|
|
147
150
|
onChange={ onChange }
|
|
148
151
|
value={ fontSizeValue }
|
|
149
152
|
withReset={ false }
|
|
153
|
+
withSlider
|
|
150
154
|
size="__unstable-large"
|
|
151
155
|
__nextHasNoMarginBottom
|
|
152
156
|
/>
|
|
@@ -282,6 +286,69 @@ export function addTransforms( result, source, index, results ) {
|
|
|
282
286
|
);
|
|
283
287
|
}
|
|
284
288
|
|
|
289
|
+
/**
|
|
290
|
+
* Allow custom font sizes to appear fluid when fluid typography is enabled at
|
|
291
|
+
* the theme level.
|
|
292
|
+
*
|
|
293
|
+
* Adds a custom getEditWrapperProps() callback to all block types that support
|
|
294
|
+
* font sizes. Then, if fluid typography is enabled, this callback will swap any
|
|
295
|
+
* custom font size in style.fontSize with a fluid font size (i.e. one that uses
|
|
296
|
+
* clamp()).
|
|
297
|
+
*
|
|
298
|
+
* It's important that this hook runs after 'core/style/addEditProps' sets
|
|
299
|
+
* style.fontSize as otherwise fontSize will be overwritten.
|
|
300
|
+
*
|
|
301
|
+
* @param {Object} blockType Block settings object.
|
|
302
|
+
*/
|
|
303
|
+
function addEditPropsForFluidCustomFontSizes( blockType ) {
|
|
304
|
+
if (
|
|
305
|
+
! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||
|
|
306
|
+
shouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )
|
|
307
|
+
) {
|
|
308
|
+
return blockType;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const existingGetEditWrapperProps = blockType.getEditWrapperProps;
|
|
312
|
+
|
|
313
|
+
blockType.getEditWrapperProps = ( attributes ) => {
|
|
314
|
+
const wrapperProps = existingGetEditWrapperProps
|
|
315
|
+
? existingGetEditWrapperProps( attributes )
|
|
316
|
+
: {};
|
|
317
|
+
|
|
318
|
+
const fontSize = wrapperProps?.style?.fontSize;
|
|
319
|
+
|
|
320
|
+
// TODO: This sucks! We should be using useSetting( 'typography.fluid' )
|
|
321
|
+
// or even useSelect( blockEditorStore ). We can't do either here
|
|
322
|
+
// because getEditWrapperProps is a plain JavaScript function called by
|
|
323
|
+
// BlockListBlock and not a React component rendered within
|
|
324
|
+
// BlockListContext.Provider. If we set fontSize using editor.
|
|
325
|
+
// BlockListBlock instead of using getEditWrapperProps then the value is
|
|
326
|
+
// clobbered when the core/style/addEditProps filter runs.
|
|
327
|
+
const isFluidTypographyEnabled =
|
|
328
|
+
!! select( blockEditorStore ).getSettings().__experimentalFeatures
|
|
329
|
+
?.typography?.fluid;
|
|
330
|
+
|
|
331
|
+
const newFontSize =
|
|
332
|
+
fontSize && isFluidTypographyEnabled
|
|
333
|
+
? getComputedFluidTypographyValue( { fontSize } )
|
|
334
|
+
: null;
|
|
335
|
+
|
|
336
|
+
if ( newFontSize === null ) {
|
|
337
|
+
return wrapperProps;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return {
|
|
341
|
+
...wrapperProps,
|
|
342
|
+
style: {
|
|
343
|
+
...wrapperProps?.style,
|
|
344
|
+
fontSize: newFontSize,
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
return blockType;
|
|
350
|
+
}
|
|
351
|
+
|
|
285
352
|
addFilter(
|
|
286
353
|
'blocks.registerBlockType',
|
|
287
354
|
'core/font/addAttribute',
|
|
@@ -307,3 +374,12 @@ addFilter(
|
|
|
307
374
|
'core/font-size/addTransforms',
|
|
308
375
|
addTransforms
|
|
309
376
|
);
|
|
377
|
+
|
|
378
|
+
addFilter(
|
|
379
|
+
'blocks.registerBlockType',
|
|
380
|
+
'core/font-size/addEditPropsForFluidCustomFontSizes',
|
|
381
|
+
addEditPropsForFluidCustomFontSizes,
|
|
382
|
+
// Run after 'core/style/addEditProps' so that the style object has already
|
|
383
|
+
// been translated into inline CSS.
|
|
384
|
+
11
|
|
385
|
+
);
|
package/src/hooks/layout.js
CHANGED
|
@@ -9,11 +9,7 @@ import { kebabCase } from 'lodash';
|
|
|
9
9
|
*/
|
|
10
10
|
import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
|
|
11
11
|
import { addFilter } from '@wordpress/hooks';
|
|
12
|
-
import {
|
|
13
|
-
getBlockDefaultClassName,
|
|
14
|
-
getBlockSupport,
|
|
15
|
-
hasBlockSupport,
|
|
16
|
-
} from '@wordpress/blocks';
|
|
12
|
+
import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
|
|
17
13
|
import { useSelect } from '@wordpress/data';
|
|
18
14
|
import {
|
|
19
15
|
Button,
|
|
@@ -366,9 +362,8 @@ export const withLayoutStyles = createHigherOrderComponent(
|
|
|
366
362
|
const layoutClasses = hasLayoutBlockSupport
|
|
367
363
|
? useLayoutClasses( block )
|
|
368
364
|
: null;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
) }.wp-container-${ id }`;
|
|
365
|
+
// Higher specificity to override defaults from theme.json.
|
|
366
|
+
const selector = `.wp-container-${ id }.wp-container-${ id }`;
|
|
372
367
|
const blockGapSupport = useSetting( 'spacing.blockGap' );
|
|
373
368
|
const hasBlockGapSupport = blockGapSupport !== null;
|
|
374
369
|
|
|
@@ -413,7 +408,10 @@ export const withLayoutStyles = createHigherOrderComponent(
|
|
|
413
408
|
/>,
|
|
414
409
|
element
|
|
415
410
|
) }
|
|
416
|
-
<BlockListBlock
|
|
411
|
+
<BlockListBlock
|
|
412
|
+
{ ...props }
|
|
413
|
+
__unstableLayoutClassNames={ className }
|
|
414
|
+
/>
|
|
417
415
|
</>
|
|
418
416
|
);
|
|
419
417
|
}
|
package/src/hooks/margin.js
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
import { cleanEmptyObject } from './utils';
|
|
30
30
|
import BlockPopover from '../components/block-popover';
|
|
31
31
|
import SpacingSizesControl from '../components/spacing-sizes-control';
|
|
32
|
-
import {
|
|
32
|
+
import { getSpacingPresetCssVar } from '../components/spacing-sizes-control/utils';
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Determines if there is margin support.
|
|
@@ -101,6 +101,8 @@ export function MarginEdit( props ) {
|
|
|
101
101
|
name: blockName,
|
|
102
102
|
attributes: { style },
|
|
103
103
|
setAttributes,
|
|
104
|
+
onMouseOver,
|
|
105
|
+
onMouseOut,
|
|
104
106
|
} = props;
|
|
105
107
|
|
|
106
108
|
const spacingSizes = useSetting( 'spacing.spacingSizes' );
|
|
@@ -148,6 +150,8 @@ export function MarginEdit( props ) {
|
|
|
148
150
|
units={ units }
|
|
149
151
|
allowReset={ false }
|
|
150
152
|
splitOnAxis={ splitOnAxis }
|
|
153
|
+
onMouseOver={ onMouseOver }
|
|
154
|
+
onMouseOut={ onMouseOut }
|
|
151
155
|
/>
|
|
152
156
|
) }
|
|
153
157
|
{ spacingSizes?.length > 0 && (
|
|
@@ -159,6 +163,8 @@ export function MarginEdit( props ) {
|
|
|
159
163
|
units={ units }
|
|
160
164
|
allowReset={ false }
|
|
161
165
|
splitOnAxis={ false }
|
|
166
|
+
onMouseOver={ onMouseOver }
|
|
167
|
+
onMouseOut={ onMouseOut }
|
|
162
168
|
/>
|
|
163
169
|
) }
|
|
164
170
|
</>
|
|
@@ -167,22 +173,21 @@ export function MarginEdit( props ) {
|
|
|
167
173
|
} );
|
|
168
174
|
}
|
|
169
175
|
|
|
170
|
-
export function MarginVisualizer( { clientId, attributes } ) {
|
|
176
|
+
export function MarginVisualizer( { clientId, attributes, forceShow } ) {
|
|
171
177
|
const margin = attributes?.style?.spacing?.margin;
|
|
172
|
-
const spacingSizes = useSetting( 'spacing.spacingSizes' );
|
|
173
178
|
|
|
174
179
|
const style = useMemo( () => {
|
|
175
180
|
const marginTop = margin?.top
|
|
176
|
-
?
|
|
181
|
+
? getSpacingPresetCssVar( margin?.top )
|
|
177
182
|
: 0;
|
|
178
183
|
const marginRight = margin?.right
|
|
179
|
-
?
|
|
184
|
+
? getSpacingPresetCssVar( margin?.right )
|
|
180
185
|
: 0;
|
|
181
186
|
const marginBottom = margin?.bottom
|
|
182
|
-
?
|
|
187
|
+
? getSpacingPresetCssVar( margin?.bottom )
|
|
183
188
|
: 0;
|
|
184
189
|
const marginLeft = margin?.left
|
|
185
|
-
?
|
|
190
|
+
? getSpacingPresetCssVar( margin?.left )
|
|
186
191
|
: 0;
|
|
187
192
|
|
|
188
193
|
return {
|
|
@@ -190,10 +195,10 @@ export function MarginVisualizer( { clientId, attributes } ) {
|
|
|
190
195
|
borderRightWidth: marginRight,
|
|
191
196
|
borderBottomWidth: marginBottom,
|
|
192
197
|
borderLeftWidth: marginLeft,
|
|
193
|
-
top: marginTop
|
|
194
|
-
right: marginRight
|
|
195
|
-
bottom: marginBottom
|
|
196
|
-
left: marginLeft
|
|
198
|
+
top: marginTop ? `calc(${ marginTop } * -1)` : 0,
|
|
199
|
+
right: marginRight ? `calc(${ marginRight } * -1)` : 0,
|
|
200
|
+
bottom: marginBottom ? `calc(${ marginBottom } * -1)` : 0,
|
|
201
|
+
left: marginLeft ? `calc(${ marginLeft } * -1)` : 0,
|
|
197
202
|
};
|
|
198
203
|
}, [ margin ] );
|
|
199
204
|
|
|
@@ -208,7 +213,7 @@ export function MarginVisualizer( { clientId, attributes } ) {
|
|
|
208
213
|
};
|
|
209
214
|
|
|
210
215
|
useEffect( () => {
|
|
211
|
-
if ( ! isShallowEqual( margin, valueRef.current ) ) {
|
|
216
|
+
if ( ! isShallowEqual( margin, valueRef.current ) && ! forceShow ) {
|
|
212
217
|
setIsActive( true );
|
|
213
218
|
valueRef.current = margin;
|
|
214
219
|
|
|
@@ -220,9 +225,9 @@ export function MarginVisualizer( { clientId, attributes } ) {
|
|
|
220
225
|
}
|
|
221
226
|
|
|
222
227
|
return () => clearTimer();
|
|
223
|
-
}, [ margin ] );
|
|
228
|
+
}, [ margin, forceShow ] );
|
|
224
229
|
|
|
225
|
-
if ( ! isActive ) {
|
|
230
|
+
if ( ! isActive && ! forceShow ) {
|
|
226
231
|
return null;
|
|
227
232
|
}
|
|
228
233
|
|
|
@@ -231,6 +236,7 @@ export function MarginVisualizer( { clientId, attributes } ) {
|
|
|
231
236
|
clientId={ clientId }
|
|
232
237
|
__unstableCoverTarget
|
|
233
238
|
__unstableRefreshSize={ margin }
|
|
239
|
+
shift={ false }
|
|
234
240
|
>
|
|
235
241
|
<div className="block-editor__padding-visualizer" style={ style } />
|
|
236
242
|
</BlockPopover>
|
package/src/hooks/padding.js
CHANGED
|
@@ -29,10 +29,7 @@ import {
|
|
|
29
29
|
import { cleanEmptyObject } from './utils';
|
|
30
30
|
import BlockPopover from '../components/block-popover';
|
|
31
31
|
import SpacingSizesControl from '../components/spacing-sizes-control';
|
|
32
|
-
import {
|
|
33
|
-
getSpacingPresetCssVar,
|
|
34
|
-
isValueSpacingPreset,
|
|
35
|
-
} from '../components/spacing-sizes-control/utils';
|
|
32
|
+
import { getSpacingPresetCssVar } from '../components/spacing-sizes-control/utils';
|
|
36
33
|
/**
|
|
37
34
|
* Determines if there is padding support.
|
|
38
35
|
*
|
|
@@ -103,6 +100,8 @@ export function PaddingEdit( props ) {
|
|
|
103
100
|
name: blockName,
|
|
104
101
|
attributes: { style },
|
|
105
102
|
setAttributes,
|
|
103
|
+
onMouseOver,
|
|
104
|
+
onMouseOut,
|
|
106
105
|
} = props;
|
|
107
106
|
|
|
108
107
|
const spacingSizes = useSetting( 'spacing.spacingSizes' );
|
|
@@ -150,6 +149,8 @@ export function PaddingEdit( props ) {
|
|
|
150
149
|
units={ units }
|
|
151
150
|
allowReset={ false }
|
|
152
151
|
splitOnAxis={ splitOnAxis }
|
|
152
|
+
onMouseOver={ onMouseOver }
|
|
153
|
+
onMouseOut={ onMouseOut }
|
|
153
154
|
/>
|
|
154
155
|
) }
|
|
155
156
|
{ spacingSizes?.length > 0 && (
|
|
@@ -161,6 +162,8 @@ export function PaddingEdit( props ) {
|
|
|
161
162
|
units={ units }
|
|
162
163
|
allowReset={ false }
|
|
163
164
|
splitOnAxis={ splitOnAxis }
|
|
165
|
+
onMouseOver={ onMouseOver }
|
|
166
|
+
onMouseOut={ onMouseOut }
|
|
164
167
|
/>
|
|
165
168
|
) }
|
|
166
169
|
</>
|
|
@@ -169,22 +172,22 @@ export function PaddingEdit( props ) {
|
|
|
169
172
|
} );
|
|
170
173
|
}
|
|
171
174
|
|
|
172
|
-
export function PaddingVisualizer( { clientId, attributes } ) {
|
|
175
|
+
export function PaddingVisualizer( { clientId, attributes, forceShow } ) {
|
|
173
176
|
const padding = attributes?.style?.spacing?.padding;
|
|
174
177
|
const style = useMemo( () => {
|
|
175
178
|
return {
|
|
176
|
-
borderTopWidth:
|
|
179
|
+
borderTopWidth: padding?.top
|
|
177
180
|
? getSpacingPresetCssVar( padding?.top )
|
|
178
|
-
:
|
|
179
|
-
borderRightWidth:
|
|
181
|
+
: 0,
|
|
182
|
+
borderRightWidth: padding?.right
|
|
180
183
|
? getSpacingPresetCssVar( padding?.right )
|
|
181
|
-
:
|
|
182
|
-
borderBottomWidth:
|
|
184
|
+
: 0,
|
|
185
|
+
borderBottomWidth: padding?.bottom
|
|
183
186
|
? getSpacingPresetCssVar( padding?.bottom )
|
|
184
|
-
:
|
|
185
|
-
borderLeftWidth:
|
|
187
|
+
: 0,
|
|
188
|
+
borderLeftWidth: padding?.left
|
|
186
189
|
? getSpacingPresetCssVar( padding?.left )
|
|
187
|
-
:
|
|
190
|
+
: 0,
|
|
188
191
|
};
|
|
189
192
|
}, [ padding ] );
|
|
190
193
|
|
|
@@ -199,7 +202,7 @@ export function PaddingVisualizer( { clientId, attributes } ) {
|
|
|
199
202
|
};
|
|
200
203
|
|
|
201
204
|
useEffect( () => {
|
|
202
|
-
if ( ! isShallowEqual( padding, valueRef.current ) ) {
|
|
205
|
+
if ( ! isShallowEqual( padding, valueRef.current ) && ! forceShow ) {
|
|
203
206
|
setIsActive( true );
|
|
204
207
|
valueRef.current = padding;
|
|
205
208
|
|
|
@@ -211,9 +214,9 @@ export function PaddingVisualizer( { clientId, attributes } ) {
|
|
|
211
214
|
}
|
|
212
215
|
|
|
213
216
|
return () => clearTimer();
|
|
214
|
-
}, [ padding ] );
|
|
217
|
+
}, [ padding, forceShow ] );
|
|
215
218
|
|
|
216
|
-
if ( ! isActive ) {
|
|
219
|
+
if ( ! isActive && ! forceShow ) {
|
|
217
220
|
return null;
|
|
218
221
|
}
|
|
219
222
|
|
|
@@ -222,6 +225,7 @@ export function PaddingVisualizer( { clientId, attributes } ) {
|
|
|
222
225
|
clientId={ clientId }
|
|
223
226
|
__unstableCoverTarget
|
|
224
227
|
__unstableRefreshSize={ padding }
|
|
228
|
+
shift={ false }
|
|
225
229
|
>
|
|
226
230
|
<div className="block-editor__padding-visualizer" style={ style } />
|
|
227
231
|
</BlockPopover>
|
package/src/hooks/style.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { omit } from 'lodash';
|
|
5
4
|
import classnames from 'classnames';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -134,6 +133,126 @@ const skipSerializationPathsSave = {
|
|
|
134
133
|
*/
|
|
135
134
|
const renamedFeatures = { gradients: 'gradient' };
|
|
136
135
|
|
|
136
|
+
/**
|
|
137
|
+
* A utility function used to remove one or more paths from a style object.
|
|
138
|
+
* Works in a way similar to Lodash's `omit()`. See unit tests and examples below.
|
|
139
|
+
*
|
|
140
|
+
* It supports a single string path:
|
|
141
|
+
*
|
|
142
|
+
* ```
|
|
143
|
+
* omitStyle( { color: 'red' }, 'color' ); // {}
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* or an array of paths:
|
|
147
|
+
*
|
|
148
|
+
* ```
|
|
149
|
+
* omitStyle( { color: 'red', background: '#fff' }, [ 'color', 'background' ] ); // {}
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* It also allows you to specify paths at multiple levels in a string.
|
|
153
|
+
*
|
|
154
|
+
* ```
|
|
155
|
+
* omitStyle( { typography: { textDecoration: 'underline' } }, 'typography.textDecoration' ); // {}
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* You can remove multiple paths at the same time:
|
|
159
|
+
*
|
|
160
|
+
* ```
|
|
161
|
+
* omitStyle(
|
|
162
|
+
* {
|
|
163
|
+
* typography: {
|
|
164
|
+
* textDecoration: 'underline',
|
|
165
|
+
* textTransform: 'uppercase',
|
|
166
|
+
* }
|
|
167
|
+
* },
|
|
168
|
+
* [
|
|
169
|
+
* 'typography.textDecoration',
|
|
170
|
+
* 'typography.textTransform',
|
|
171
|
+
* ]
|
|
172
|
+
* );
|
|
173
|
+
* // {}
|
|
174
|
+
* ```
|
|
175
|
+
*
|
|
176
|
+
* You can also specify nested paths as arrays:
|
|
177
|
+
*
|
|
178
|
+
* ```
|
|
179
|
+
* omitStyle(
|
|
180
|
+
* {
|
|
181
|
+
* typography: {
|
|
182
|
+
* textDecoration: 'underline',
|
|
183
|
+
* textTransform: 'uppercase',
|
|
184
|
+
* }
|
|
185
|
+
* },
|
|
186
|
+
* [
|
|
187
|
+
* [ 'typography', 'textDecoration' ],
|
|
188
|
+
* [ 'typography', 'textTransform' ],
|
|
189
|
+
* ]
|
|
190
|
+
* );
|
|
191
|
+
* // {}
|
|
192
|
+
* ```
|
|
193
|
+
*
|
|
194
|
+
* With regards to nesting of styles, infinite depth is supported:
|
|
195
|
+
*
|
|
196
|
+
* ```
|
|
197
|
+
* omitStyle(
|
|
198
|
+
* {
|
|
199
|
+
* border: {
|
|
200
|
+
* radius: {
|
|
201
|
+
* topLeft: '10px',
|
|
202
|
+
* topRight: '0.5rem',
|
|
203
|
+
* }
|
|
204
|
+
* }
|
|
205
|
+
* },
|
|
206
|
+
* [
|
|
207
|
+
* [ 'border', 'radius', 'topRight' ],
|
|
208
|
+
* ]
|
|
209
|
+
* );
|
|
210
|
+
* // { border: { radius: { topLeft: '10px' } } }
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
* The third argument, `preserveReference`, defines how to treat the input style object.
|
|
214
|
+
* It is mostly necessary to properly handle mutation when recursively handling the style object.
|
|
215
|
+
* Defaulting to `false`, this will always create a new object, avoiding to mutate `style`.
|
|
216
|
+
* However, when recursing, we change that value to `true` in order to work with a single copy
|
|
217
|
+
* of the original style object.
|
|
218
|
+
*
|
|
219
|
+
* @see https://lodash.com/docs/4.17.15#omit
|
|
220
|
+
*
|
|
221
|
+
* @param {Object} style Styles object.
|
|
222
|
+
* @param {Array|string} paths Paths to remove.
|
|
223
|
+
* @param {boolean} preserveReference True to mutate the `style` object, false otherwise.
|
|
224
|
+
* @return {Object} Styles object with the specified paths removed.
|
|
225
|
+
*/
|
|
226
|
+
export function omitStyle( style, paths, preserveReference = false ) {
|
|
227
|
+
if ( ! style ) {
|
|
228
|
+
return style;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
let newStyle = style;
|
|
232
|
+
if ( ! preserveReference ) {
|
|
233
|
+
newStyle = JSON.parse( JSON.stringify( style ) );
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if ( ! Array.isArray( paths ) ) {
|
|
237
|
+
paths = [ paths ];
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
paths.forEach( ( path ) => {
|
|
241
|
+
if ( ! Array.isArray( path ) ) {
|
|
242
|
+
path = path.split( '.' );
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if ( path.length > 1 ) {
|
|
246
|
+
const [ firstSubpath, ...restPath ] = path;
|
|
247
|
+
omitStyle( newStyle[ firstSubpath ], [ restPath ], true );
|
|
248
|
+
} else if ( path.length === 1 ) {
|
|
249
|
+
delete newStyle[ path[ 0 ] ];
|
|
250
|
+
}
|
|
251
|
+
} );
|
|
252
|
+
|
|
253
|
+
return newStyle;
|
|
254
|
+
}
|
|
255
|
+
|
|
137
256
|
/**
|
|
138
257
|
* Override props assigned to save component to inject the CSS variables definition.
|
|
139
258
|
*
|
|
@@ -159,13 +278,13 @@ export function addSaveProps(
|
|
|
159
278
|
const skipSerialization = getBlockSupport( blockType, indicator );
|
|
160
279
|
|
|
161
280
|
if ( skipSerialization === true ) {
|
|
162
|
-
style =
|
|
281
|
+
style = omitStyle( style, path );
|
|
163
282
|
}
|
|
164
283
|
|
|
165
284
|
if ( Array.isArray( skipSerialization ) ) {
|
|
166
285
|
skipSerialization.forEach( ( featureName ) => {
|
|
167
286
|
const feature = renamedFeatures[ featureName ] || featureName;
|
|
168
|
-
style =
|
|
287
|
+
style = omitStyle( style, [ [ ...path, feature ] ] );
|
|
169
288
|
} );
|
|
170
289
|
}
|
|
171
290
|
} );
|