@wordpress/block-editor 15.22.1 → 16.0.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 +35 -0
- package/build/autocompleters/block.cjs +10 -2
- package/build/autocompleters/block.cjs.map +2 -2
- package/build/components/background-image-control/index.cjs +0 -2
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-canvas/index.cjs +6 -1
- package/build/components/block-canvas/index.cjs.map +2 -2
- package/build/components/block-controls/groups.cjs +3 -1
- package/build/components/block-controls/groups.cjs.map +2 -2
- package/build/components/block-edit/edit.cjs +10 -18
- package/build/components/block-edit/edit.cjs.map +2 -2
- package/build/components/block-inspector/edit-contents.cjs +3 -0
- package/build/components/block-inspector/edit-contents.cjs.map +3 -3
- package/build/components/block-inspector/index.cjs +18 -36
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/block-invalid-warning.cjs +8 -19
- package/build/components/block-list/block-invalid-warning.cjs.map +2 -2
- package/build/components/block-list/block.cjs +9 -3
- package/build/components/block-list/block.cjs.map +3 -3
- package/build/components/block-list/index.cjs +1 -3
- package/build/components/block-list/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs +3 -1
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
- package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-focus-handler.cjs +12 -4
- package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
- package/build/components/block-styles/use-styles-for-block.cjs +2 -1
- package/build/components/block-styles/use-styles-for-block.cjs.map +2 -2
- package/build/components/block-title/use-block-display-title.cjs +7 -2
- package/build/components/block-title/use-block-display-title.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +10 -14
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +43 -24
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-tools/index.cjs +7 -2
- package/build/components/block-tools/index.cjs.map +2 -2
- package/build/components/block-variation-transforms/index.cjs +0 -1
- package/build/components/block-variation-transforms/index.cjs.map +2 -2
- package/build/components/block-visibility/modal.cjs +20 -6
- package/build/components/block-visibility/modal.cjs.map +2 -2
- package/build/components/block-visibility/use-block-visibility.cjs +16 -6
- package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
- package/build/components/block-visibility/utils.cjs +15 -2
- package/build/components/block-visibility/utils.cjs.map +3 -3
- package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
- package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
- package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
- package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
- package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
- package/build/components/child-layout-control/index.cjs +0 -6
- package/build/components/child-layout-control/index.cjs.map +2 -2
- package/build/components/colors-gradients/control.cjs +5 -5
- package/build/components/colors-gradients/control.cjs.map +2 -2
- package/build/components/date-format-picker/index.cjs +0 -1
- package/build/components/date-format-picker/index.cjs.map +2 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs +1 -2
- package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
- package/build/components/dimensions-tool/scale-tool.cjs +0 -1
- package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
- package/build/components/dimensions-tool/width-height-tool.cjs +2 -4
- package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
- package/build/components/font-appearance-control/index.cjs +6 -25
- package/build/components/font-appearance-control/index.cjs.map +3 -3
- package/build/components/font-family/index.cjs +6 -15
- package/build/components/font-family/index.cjs.map +3 -3
- package/build/components/font-sizes/font-size-picker.cjs +1 -2
- package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
- package/build/components/global-styles/border-panel.cjs +0 -1
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/dimensions-panel.cjs +0 -3
- package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
- package/build/components/global-styles/state-control-badges.cjs +39 -3
- package/build/components/global-styles/state-control-badges.cjs.map +2 -2
- package/build/components/global-styles/typography-panel.cjs +4 -11
- package/build/components/global-styles/typography-panel.cjs.map +2 -2
- package/build/components/height-control/index.cjs +0 -2
- package/build/components/height-control/index.cjs.map +2 -2
- package/build/components/html-element-control/index.cjs +0 -1
- package/build/components/html-element-control/index.cjs.map +2 -2
- package/build/components/image-editor/index.cjs +5 -0
- package/build/components/image-editor/index.cjs.map +3 -3
- package/build/components/image-editor/zoom-dropdown.cjs +0 -1
- package/build/components/image-editor/zoom-dropdown.cjs.map +2 -2
- package/build/components/image-size-control/index.cjs +3 -7
- package/build/components/image-size-control/index.cjs.map +2 -2
- package/build/components/inner-content/index.cjs +107 -0
- package/build/components/inner-content/index.cjs.map +7 -0
- package/build/components/inserter/hooks/use-block-types-state.cjs +10 -2
- package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
- package/build/components/inserter/media-tab/hooks.cjs +67 -12
- package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-list.cjs +3 -1
- package/build/components/inserter/media-tab/media-list.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-panel.cjs +287 -28
- package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
- package/build/components/inserter/media-tab/media-preview.cjs +32 -17
- package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
- package/build/components/inserter/media-tab/media-tab.cjs +26 -6
- package/build/components/inserter/media-tab/media-tab.cjs.map +2 -2
- package/build/components/inserter/mobile-tab-navigation.cjs +6 -1
- package/build/components/inserter/mobile-tab-navigation.cjs.map +2 -2
- package/build/components/inserter/no-results.cjs +2 -2
- package/build/components/inserter/no-results.cjs.map +2 -2
- package/build/components/inserter/preview-panel.cjs +2 -1
- package/build/components/inserter/preview-panel.cjs.map +2 -2
- package/build/components/inserter-list-item/index.cjs +8 -2
- package/build/components/inserter-list-item/index.cjs.map +2 -2
- package/build/components/keyboard-shortcuts/index.cjs +19 -11
- package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
- package/build/components/letter-spacing-control/index.cjs +0 -24
- package/build/components/letter-spacing-control/index.cjs.map +3 -3
- package/build/components/line-height-control/index.cjs +6 -22
- package/build/components/line-height-control/index.cjs.map +3 -3
- package/build/components/list-view/block-select-button.cjs +90 -84
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +61 -21
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/list-view/expander.cjs +1 -1
- package/build/components/list-view/expander.cjs.map +2 -2
- package/build/components/list-view/use-list-view-client-ids.cjs +2 -2
- package/build/components/list-view/use-list-view-client-ids.cjs.map +2 -2
- package/build/components/media-placeholder/index.cjs +0 -1
- package/build/components/media-placeholder/index.cjs.map +2 -2
- package/build/components/observe-typing/index.cjs +4 -3
- package/build/components/observe-typing/index.cjs.map +2 -2
- package/build/components/preset-input-control/custom-value-controls.cjs +1 -3
- package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
- package/build/components/preset-input-control/index.cjs +1 -3
- package/build/components/preset-input-control/index.cjs.map +2 -2
- package/build/components/resolution-tool/index.cjs +1 -2
- package/build/components/resolution-tool/index.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
- package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/delete.cjs +2 -3
- package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/enter.cjs +3 -2
- package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
- package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
- package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
- package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
- package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
- package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
- package/build/components/rich-text/index.cjs +66 -17
- package/build/components/rich-text/index.cjs.map +2 -2
- package/build/components/text-alignment-control/index.cjs +0 -1
- package/build/components/text-alignment-control/index.cjs.map +2 -2
- package/build/components/text-decoration-control/index.cjs +0 -1
- package/build/components/text-decoration-control/index.cjs.map +2 -2
- package/build/components/text-indent-control/index.cjs +0 -8
- package/build/components/text-indent-control/index.cjs.map +2 -2
- package/build/components/text-transform-control/index.cjs +0 -1
- package/build/components/text-transform-control/index.cjs.map +2 -2
- package/build/components/typewriter/index.cjs +129 -136
- package/build/components/typewriter/index.cjs.map +3 -3
- package/build/components/use-block-commands/index.cjs +21 -17
- package/build/components/use-block-commands/index.cjs.map +2 -2
- package/build/components/use-block-display-information/index.cjs +10 -8
- package/build/components/use-block-display-information/index.cjs.map +2 -2
- package/build/components/use-on-block-drop/index.cjs +3 -7
- package/build/components/use-on-block-drop/index.cjs.map +2 -2
- package/build/components/use-resize-canvas/index.cjs +16 -53
- package/build/components/use-resize-canvas/index.cjs.map +3 -3
- package/build/components/writing-flow/index.cjs +12 -1
- package/build/components/writing-flow/index.cjs.map +3 -3
- package/build/components/writing-flow/use-arrow-nav.cjs +18 -5
- package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
- package/build/components/writing-flow/use-click-selection.cjs +2 -2
- package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
- package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
- package/build/components/writing-flow/use-drag-selection.cjs +3 -8
- package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-editable-root.cjs +112 -0
- package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
- package/build/components/writing-flow/use-home-end.cjs +64 -0
- package/build/components/writing-flow/use-home-end.cjs.map +7 -0
- package/build/components/writing-flow/use-input.cjs +15 -5
- package/build/components/writing-flow/use-input.cjs.map +2 -2
- package/build/components/writing-flow/use-multi-selection.cjs +2 -2
- package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
- package/build/components/writing-flow/use-select-all.cjs +14 -2
- package/build/components/writing-flow/use-select-all.cjs.map +2 -2
- package/build/components/writing-flow/use-selection-observer.cjs +126 -20
- package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
- package/build/components/writing-flow/utils.cjs +39 -2
- package/build/components/writing-flow/utils.cjs.map +2 -2
- package/build/components/writing-mode-control/index.cjs +0 -1
- package/build/components/writing-mode-control/index.cjs.map +2 -2
- package/build/hooks/background.cjs +3 -2
- package/build/hooks/background.cjs.map +2 -2
- package/build/hooks/block-fields/rich-text/index.cjs +2 -3
- package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
- package/build/hooks/elements.cjs +1 -1
- package/build/hooks/elements.cjs.map +2 -2
- package/build/hooks/font-size.cjs +1 -2
- package/build/hooks/font-size.cjs.map +2 -2
- package/build/hooks/grid-visualizer.cjs +5 -3
- package/build/hooks/grid-visualizer.cjs.map +2 -2
- package/build/hooks/layout-child.cjs +22 -12
- package/build/hooks/layout-child.cjs.map +3 -3
- package/build/hooks/layout.cjs +33 -16
- package/build/hooks/layout.cjs.map +3 -3
- package/build/hooks/position.cjs +36 -16
- package/build/hooks/position.cjs.map +2 -2
- package/build/hooks/states.cjs +32 -23
- package/build/hooks/states.cjs.map +3 -3
- package/build/hooks/style.cjs +31 -9
- package/build/hooks/style.cjs.map +3 -3
- package/build/hooks/text-align.cjs +36 -6
- package/build/hooks/text-align.cjs.map +3 -3
- package/build/hooks/typography.cjs +1 -1
- package/build/hooks/typography.cjs.map +2 -2
- package/build/layouts/constrained.cjs +35 -27
- package/build/layouts/constrained.cjs.map +2 -2
- package/build/layouts/flex.cjs +27 -22
- package/build/layouts/flex.cjs.map +2 -2
- package/build/layouts/grid.cjs +51 -11
- package/build/layouts/grid.cjs.map +2 -2
- package/build/private-apis.cjs +4 -2
- package/build/private-apis.cjs.map +3 -3
- package/build/store/actions.cjs +2 -2
- package/build/store/actions.cjs.map +2 -2
- package/build/store/private-actions.cjs +16 -0
- package/build/store/private-actions.cjs.map +2 -2
- package/build/store/private-keys.cjs +3 -3
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +109 -12
- package/build/store/private-selectors.cjs.map +3 -3
- package/build/store/reducer.cjs +19 -3
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs +13 -0
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/block-bindings.cjs +29 -0
- package/build/utils/block-bindings.cjs.map +2 -2
- package/build/utils/dom.cjs +14 -0
- package/build/utils/dom.cjs.map +2 -2
- package/build-module/autocompleters/block.mjs +10 -2
- package/build-module/autocompleters/block.mjs.map +2 -2
- package/build-module/components/background-image-control/index.mjs +0 -2
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-canvas/index.mjs +7 -2
- package/build-module/components/block-canvas/index.mjs.map +2 -2
- package/build-module/components/block-controls/groups.mjs +3 -1
- package/build-module/components/block-controls/groups.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs +11 -18
- package/build-module/components/block-edit/edit.mjs.map +2 -2
- package/build-module/components/block-inspector/edit-contents.mjs +4 -1
- package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
- package/build-module/components/block-inspector/index.mjs +18 -36
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
- package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
- package/build-module/components/block-list/block.mjs +9 -3
- package/build-module/components/block-list/block.mjs.map +3 -3
- package/build-module/components/block-list/index.mjs +1 -3
- package/build-module/components/block-list/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs +3 -1
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
- package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +12 -4
- package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
- package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
- package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
- package/build-module/components/block-title/use-block-display-title.mjs +7 -2
- package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +43 -24
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-tools/index.mjs +7 -2
- package/build-module/components/block-tools/index.mjs.map +2 -2
- package/build-module/components/block-variation-transforms/index.mjs +0 -1
- package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +22 -10
- package/build-module/components/block-visibility/modal.mjs.map +2 -2
- package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
- package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
- package/build-module/components/block-visibility/utils.mjs +18 -3
- package/build-module/components/block-visibility/utils.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
- package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
- package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/child-layout-control/index.mjs +0 -6
- package/build-module/components/child-layout-control/index.mjs.map +2 -2
- package/build-module/components/colors-gradients/control.mjs +5 -5
- package/build-module/components/colors-gradients/control.mjs.map +2 -2
- package/build-module/components/date-format-picker/index.mjs +0 -1
- package/build-module/components/date-format-picker/index.mjs.map +2 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
- package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
- package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
- package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
- package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
- package/build-module/components/font-appearance-control/index.mjs +6 -15
- package/build-module/components/font-appearance-control/index.mjs.map +2 -2
- package/build-module/components/font-family/index.mjs +6 -15
- package/build-module/components/font-family/index.mjs.map +2 -2
- package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
- package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +0 -1
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
- package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
- package/build-module/components/global-styles/state-control-badges.mjs +41 -5
- package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
- package/build-module/components/global-styles/typography-panel.mjs +4 -11
- package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
- package/build-module/components/height-control/index.mjs +0 -2
- package/build-module/components/height-control/index.mjs.map +2 -2
- package/build-module/components/html-element-control/index.mjs +0 -1
- package/build-module/components/html-element-control/index.mjs.map +2 -2
- package/build-module/components/image-editor/index.mjs +5 -0
- package/build-module/components/image-editor/index.mjs.map +2 -2
- package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
- package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
- package/build-module/components/image-size-control/index.mjs +3 -7
- package/build-module/components/image-size-control/index.mjs.map +2 -2
- package/build-module/components/inner-content/index.mjs +82 -0
- package/build-module/components/inner-content/index.mjs.map +7 -0
- package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
- package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/hooks.mjs +66 -12
- package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
- package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-panel.mjs +297 -32
- package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
- package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
- package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
- package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
- package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
- package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
- package/build-module/components/inserter/no-results.mjs +2 -2
- package/build-module/components/inserter/no-results.mjs.map +2 -2
- package/build-module/components/inserter/preview-panel.mjs +2 -1
- package/build-module/components/inserter/preview-panel.mjs.map +2 -2
- package/build-module/components/inserter-list-item/index.mjs +8 -2
- package/build-module/components/inserter-list-item/index.mjs.map +2 -2
- package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
- package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
- package/build-module/components/letter-spacing-control/index.mjs +0 -14
- package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
- package/build-module/components/line-height-control/index.mjs +6 -12
- package/build-module/components/line-height-control/index.mjs.map +2 -2
- package/build-module/components/list-view/block-select-button.mjs +90 -84
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +61 -21
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/list-view/expander.mjs +1 -1
- package/build-module/components/list-view/expander.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
- package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
- package/build-module/components/media-placeholder/index.mjs +0 -1
- package/build-module/components/media-placeholder/index.mjs.map +2 -2
- package/build-module/components/observe-typing/index.mjs +4 -3
- package/build-module/components/observe-typing/index.mjs.map +2 -2
- package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
- package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
- package/build-module/components/preset-input-control/index.mjs +1 -3
- package/build-module/components/preset-input-control/index.mjs.map +2 -2
- package/build-module/components/resolution-tool/index.mjs +1 -2
- package/build-module/components/resolution-tool/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
- package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
- package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
- package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
- package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
- package/build-module/components/rich-text/index.mjs +64 -13
- package/build-module/components/rich-text/index.mjs.map +2 -2
- package/build-module/components/text-alignment-control/index.mjs +0 -1
- package/build-module/components/text-alignment-control/index.mjs.map +2 -2
- package/build-module/components/text-decoration-control/index.mjs +0 -1
- package/build-module/components/text-decoration-control/index.mjs.map +2 -2
- package/build-module/components/text-indent-control/index.mjs +0 -8
- package/build-module/components/text-indent-control/index.mjs.map +2 -2
- package/build-module/components/text-transform-control/index.mjs +0 -1
- package/build-module/components/text-transform-control/index.mjs.map +2 -2
- package/build-module/components/typewriter/index.mjs +129 -136
- package/build-module/components/typewriter/index.mjs.map +2 -2
- package/build-module/components/use-block-commands/index.mjs +21 -17
- package/build-module/components/use-block-commands/index.mjs.map +2 -2
- package/build-module/components/use-block-display-information/index.mjs +10 -8
- package/build-module/components/use-block-display-information/index.mjs.map +2 -2
- package/build-module/components/use-on-block-drop/index.mjs +4 -7
- package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
- package/build-module/components/use-resize-canvas/index.mjs +6 -53
- package/build-module/components/use-resize-canvas/index.mjs.map +2 -2
- package/build-module/components/writing-flow/index.mjs +12 -1
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs +19 -6
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
- package/build-module/components/writing-flow/use-click-selection.mjs +2 -2
- package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
- package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
- package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
- package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-editable-root.mjs +86 -0
- package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
- package/build-module/components/writing-flow/use-home-end.mjs +43 -0
- package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
- package/build-module/components/writing-flow/use-input.mjs +15 -5
- package/build-module/components/writing-flow/use-input.mjs.map +2 -2
- package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
- package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
- package/build-module/components/writing-flow/use-select-all.mjs +19 -3
- package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
- package/build-module/components/writing-flow/use-selection-observer.mjs +128 -19
- package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
- package/build-module/components/writing-flow/utils.mjs +35 -1
- package/build-module/components/writing-flow/utils.mjs.map +2 -2
- package/build-module/components/writing-mode-control/index.mjs +0 -1
- package/build-module/components/writing-mode-control/index.mjs.map +2 -2
- package/build-module/hooks/background.mjs +3 -2
- package/build-module/hooks/background.mjs.map +2 -2
- package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
- package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
- package/build-module/hooks/elements.mjs +1 -1
- package/build-module/hooks/elements.mjs.map +2 -2
- package/build-module/hooks/font-size.mjs +1 -2
- package/build-module/hooks/font-size.mjs.map +2 -2
- package/build-module/hooks/grid-visualizer.mjs +5 -3
- package/build-module/hooks/grid-visualizer.mjs.map +2 -2
- package/build-module/hooks/layout-child.mjs +22 -12
- package/build-module/hooks/layout-child.mjs.map +2 -2
- package/build-module/hooks/layout.mjs +32 -16
- package/build-module/hooks/layout.mjs.map +2 -2
- package/build-module/hooks/position.mjs +38 -18
- package/build-module/hooks/position.mjs.map +2 -2
- package/build-module/hooks/states.mjs +32 -23
- package/build-module/hooks/states.mjs.map +2 -2
- package/build-module/hooks/style.mjs +40 -11
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/hooks/text-align.mjs +39 -10
- package/build-module/hooks/text-align.mjs.map +2 -2
- package/build-module/hooks/typography.mjs +1 -1
- package/build-module/hooks/typography.mjs.map +2 -2
- package/build-module/layouts/constrained.mjs +35 -27
- package/build-module/layouts/constrained.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +27 -22
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/layouts/grid.mjs +52 -11
- package/build-module/layouts/grid.mjs.map +2 -2
- package/build-module/private-apis.mjs +5 -3
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +3 -3
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/private-actions.mjs +14 -0
- package/build-module/store/private-actions.mjs.map +2 -2
- package/build-module/store/private-keys.mjs +2 -2
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +106 -12
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +17 -3
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs +13 -0
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/block-bindings.mjs +28 -0
- package/build-module/utils/block-bindings.mjs.map +2 -2
- package/build-module/utils/dom.mjs +13 -0
- package/build-module/utils/dom.mjs.map +2 -2
- package/build-style/content-rtl.css +15 -14
- package/build-style/content.css +15 -14
- package/build-style/default-editor-styles-rtl.css +1 -1
- package/build-style/default-editor-styles.css +1 -1
- package/build-style/style-rtl.css +144 -47
- package/build-style/style.css +144 -47
- package/build-types/components/block-context/index.d.ts +7 -0
- package/build-types/components/block-context/index.d.ts.map +1 -1
- package/build-types/utils/block-bindings.d.ts +19 -0
- package/build-types/utils/block-bindings.d.ts.map +1 -1
- package/build-types/utils/dom.d.ts +11 -0
- package/build-types/utils/dom.d.ts.map +1 -1
- package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
- package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
- package/build-types/utils/pasting.d.ts +1 -1
- package/build-types/utils/pasting.d.ts.map +1 -1
- package/package.json +46 -44
- package/src/autocompleters/block.js +10 -3
- package/src/autocompleters/test/block.js +53 -0
- package/src/components/background-image-control/index.js +0 -2
- package/src/components/block-canvas/index.js +9 -2
- package/src/components/block-card/style.scss +1 -1
- package/src/components/block-controls/groups.js +2 -0
- package/src/components/block-edit/edit.js +13 -31
- package/src/components/block-inspector/edit-contents.js +5 -1
- package/src/components/block-inspector/index.js +25 -44
- package/src/components/block-list/block-invalid-warning.js +8 -19
- package/src/components/block-list/block.js +6 -0
- package/src/components/block-list/index.js +0 -2
- package/src/components/block-list/use-block-props/index.js +2 -0
- package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
- package/src/components/block-list/use-block-props/use-focus-handler.js +34 -9
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-manager/style.scss +1 -1
- package/src/components/block-navigation/style.scss +1 -1
- package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
- package/src/components/block-quick-navigation/style.scss +1 -3
- package/src/components/block-styles/style.scss +2 -2
- package/src/components/block-styles/use-styles-for-block.js +1 -0
- package/src/components/block-title/use-block-display-title.js +7 -2
- package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
- package/src/components/block-toolbar/index.js +41 -18
- package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
- package/src/components/block-tools/index.js +7 -0
- package/src/components/block-types-list/style.scss +0 -1
- package/src/components/block-variation-transforms/index.js +0 -1
- package/src/components/block-visibility/modal.js +24 -10
- package/src/components/block-visibility/style.scss +1 -1
- package/src/components/block-visibility/test/use-block-visibility.js +128 -35
- package/src/components/block-visibility/test/utils.js +11 -0
- package/src/components/block-visibility/use-block-visibility.js +33 -11
- package/src/components/block-visibility/utils.js +31 -6
- package/src/components/block-visibility/viewport-menu-item.js +10 -1
- package/src/components/block-visibility/viewport-toolbar.js +6 -0
- package/src/components/block-visibility/viewport-visibility-info.js +5 -1
- package/src/components/button-block-appender/content.scss +1 -7
- package/src/components/child-layout-control/index.js +0 -6
- package/src/components/color-palette/test/__snapshots__/control.js.snap +13 -108
- package/src/components/colors-gradients/control.js +4 -4
- package/src/components/colors-gradients/style.scss +2 -2
- package/src/components/date-format-picker/index.js +0 -1
- package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
- package/src/components/dimensions-tool/scale-tool.js +0 -1
- package/src/components/dimensions-tool/width-height-tool.js +0 -2
- package/src/components/font-appearance-control/index.js +6 -19
- package/src/components/font-family/README.md +0 -9
- package/src/components/font-family/index.js +6 -19
- package/src/components/font-family/stories/index.story.jsx +1 -2
- package/src/components/font-sizes/font-size-picker.js +0 -1
- package/src/components/global-styles/border-panel.js +0 -1
- package/src/components/global-styles/dimensions-panel.js +0 -3
- package/src/components/global-styles/state-control-badges.js +45 -6
- package/src/components/global-styles/style.scss +5 -0
- package/src/components/global-styles/test/state-control-badges.js +65 -0
- package/src/components/global-styles/typography-panel.js +0 -7
- package/src/components/height-control/index.js +0 -2
- package/src/components/html-element-control/index.js +0 -1
- package/src/components/iframe/content.scss +3 -3
- package/src/components/image-editor/index.js +22 -0
- package/src/components/image-editor/zoom-dropdown.js +0 -1
- package/src/components/image-size-control/index.js +0 -4
- package/src/components/inner-content/index.js +119 -0
- package/src/components/inner-content/test/index.js +81 -0
- package/src/components/inserter/hooks/use-block-types-state.js +10 -2
- package/src/components/inserter/media-tab/hooks.js +114 -16
- package/src/components/inserter/media-tab/media-list.js +2 -0
- package/src/components/inserter/media-tab/media-panel.js +354 -19
- package/src/components/inserter/media-tab/media-preview.js +34 -17
- package/src/components/inserter/media-tab/media-tab.js +20 -2
- package/src/components/inserter/media-tab/test/hooks.js +267 -0
- package/src/components/inserter/media-tab/test/media-panel.js +127 -0
- package/src/components/inserter/mobile-tab-navigation.js +6 -1
- package/src/components/inserter/no-results.js +2 -2
- package/src/components/inserter/preview-panel.js +1 -0
- package/src/components/inserter/style.scss +115 -3
- package/src/components/inserter-list-item/index.js +8 -2
- package/src/components/inserter-list-item/style.scss +0 -15
- package/src/components/keyboard-shortcuts/index.js +28 -11
- package/src/components/letter-spacing-control/README.md +0 -8
- package/src/components/letter-spacing-control/index.js +5 -23
- package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
- package/src/components/line-height-control/README.md +0 -8
- package/src/components/line-height-control/index.js +6 -16
- package/src/components/line-height-control/stories/index.story.jsx +0 -1
- package/src/components/line-height-control/test/index.js +1 -7
- package/src/components/link-control/style.scss +2 -2
- package/src/components/link-control/test/index.js +6 -6
- package/src/components/link-picker/style.scss +1 -2
- package/src/components/link-picker/test/index.js +3 -1
- package/src/components/list-view/block-select-button.js +5 -1
- package/src/components/list-view/block.js +69 -23
- package/src/components/list-view/expander.js +5 -1
- package/src/components/list-view/style.scss +23 -5
- package/src/components/list-view/use-list-view-client-ids.js +2 -2
- package/src/components/media-placeholder/index.js +0 -1
- package/src/components/multi-selection-inspector/style.scss +1 -1
- package/src/components/observe-typing/index.js +9 -4
- package/src/components/preset-input-control/custom-value-controls.js +0 -2
- package/src/components/preset-input-control/index.js +0 -2
- package/src/components/resolution-tool/index.js +0 -1
- package/src/components/responsive-block-control/style.scss +1 -1
- package/src/components/responsive-block-control/test/index.js +1 -5
- package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
- package/src/components/rich-text/event-listeners/delete.js +7 -4
- package/src/components/rich-text/event-listeners/enter.js +10 -4
- package/src/components/rich-text/event-listeners/input-events.js +4 -3
- package/src/components/rich-text/event-listeners/input-rules.js +8 -5
- package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
- package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
- package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
- package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
- package/src/components/rich-text/index.js +94 -25
- package/src/components/skip-to-selected-block/style.scss +1 -1
- package/src/components/text-alignment-control/index.js +0 -1
- package/src/components/text-decoration-control/index.js +0 -1
- package/src/components/text-indent-control/index.js +7 -16
- package/src/components/text-transform-control/index.js +0 -1
- package/src/components/typewriter/index.js +228 -224
- package/src/components/use-block-commands/index.js +27 -17
- package/src/components/use-block-display-information/index.js +9 -13
- package/src/components/use-block-display-information/test/index.js +47 -9
- package/src/components/use-on-block-drop/index.js +4 -7
- package/src/components/use-resize-canvas/index.js +10 -71
- package/src/components/writing-flow/index.js +15 -1
- package/src/components/writing-flow/use-arrow-nav.js +39 -12
- package/src/components/writing-flow/use-click-selection.js +2 -3
- package/src/components/writing-flow/use-clipboard-handler.js +5 -2
- package/src/components/writing-flow/use-drag-selection.js +1 -14
- package/src/components/writing-flow/use-editable-root.js +182 -0
- package/src/components/writing-flow/use-home-end.js +63 -0
- package/src/components/writing-flow/use-input.js +25 -8
- package/src/components/writing-flow/use-multi-selection.js +2 -3
- package/src/components/writing-flow/use-select-all.js +33 -3
- package/src/components/writing-flow/use-selection-observer.js +197 -38
- package/src/components/writing-flow/utils.js +83 -0
- package/src/components/writing-mode-control/index.js +0 -1
- package/src/hooks/background.js +7 -9
- package/src/hooks/block-fields/link/styles.scss +1 -6
- package/src/hooks/block-fields/media/styles.scss +1 -6
- package/src/hooks/block-fields/rich-text/index.js +6 -9
- package/src/hooks/block-hooks.scss +15 -0
- package/src/hooks/elements.js +0 -1
- package/src/hooks/font-size.js +0 -1
- package/src/hooks/grid-visualizer.js +40 -36
- package/src/hooks/layout-child.js +19 -9
- package/src/hooks/layout.js +53 -35
- package/src/hooks/position.js +44 -23
- package/src/hooks/states.js +55 -28
- package/src/hooks/style.js +67 -17
- package/src/hooks/test/cross-origin-isolation.js +0 -4
- package/src/hooks/test/layout.js +75 -1
- package/src/hooks/test/style.js +29 -0
- package/src/hooks/test/text-align.js +34 -1
- package/src/hooks/text-align.js +41 -10
- package/src/hooks/typography.js +0 -1
- package/src/layouts/constrained.js +56 -29
- package/src/layouts/flex.js +5 -4
- package/src/layouts/grid.js +59 -9
- package/src/layouts/test/constrained.js +91 -0
- package/src/layouts/test/grid.js +71 -0
- package/src/private-apis.js +4 -2
- package/src/store/actions.js +43 -14
- package/src/store/private-actions.js +31 -0
- package/src/store/private-keys.js +1 -1
- package/src/store/private-selectors.js +209 -16
- package/src/store/reducer.js +37 -2
- package/src/store/selectors.js +41 -0
- package/src/store/test/actions.js +1 -1
- package/src/store/test/private-selectors.js +547 -10
- package/src/store/test/reducer.js +41 -13
- package/src/store/test/selectors.js +133 -0
- package/src/style.scss +1 -0
- package/src/utils/block-bindings.ts +50 -0
- package/src/utils/dom.ts +33 -0
- package/src/utils/test/block-bindings.js +181 -0
- package/build/components/rich-text/input-event.cjs +0 -50
- package/build/components/rich-text/input-event.cjs.map +0 -7
- package/build/components/rich-text/shortcut.cjs +0 -51
- package/build/components/rich-text/shortcut.cjs.map +0 -7
- package/build-module/components/rich-text/input-event.mjs +0 -25
- package/build-module/components/rich-text/input-event.mjs.map +0 -7
- package/build-module/components/rich-text/shortcut.mjs +0 -26
- package/build-module/components/rich-text/shortcut.mjs.map +0 -7
- package/src/components/rich-text/input-event.js +0 -31
- package/src/components/rich-text/shortcut.js +0 -32
- package/src/components/use-resize-canvas/README.md +0 -37
package/src/hooks/states.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { useMemo } from '@wordpress/element';
|
|
5
|
+
import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
|
|
5
6
|
import { __ } from '@wordpress/i18n';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -10,6 +11,10 @@ import { __ } from '@wordpress/i18n';
|
|
|
10
11
|
import StateControl from '../components/global-styles/state-control';
|
|
11
12
|
import StateControlBadges from '../components/global-styles/state-control-badges';
|
|
12
13
|
import { useToolsPanelDropdownMenuProps } from '../components/global-styles/utils';
|
|
14
|
+
import { useSettings } from '../components/use-settings';
|
|
15
|
+
import { unlock } from '../lock-unlock';
|
|
16
|
+
|
|
17
|
+
const { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );
|
|
13
18
|
|
|
14
19
|
export const PSEUDO_STATE_LABELS = {
|
|
15
20
|
':hover': __( 'Hover' ),
|
|
@@ -23,6 +28,22 @@ export const RESPONSIVE_STATE_LABELS = {
|
|
|
23
28
|
'@mobile': __( 'Mobile' ),
|
|
24
29
|
};
|
|
25
30
|
|
|
31
|
+
// Viewport states are selected globally via the editor's device preview.
|
|
32
|
+
function getDeviceStateOptions( viewportSettings ) {
|
|
33
|
+
const breakpoints = getViewportBreakpoints( viewportSettings );
|
|
34
|
+
|
|
35
|
+
return Object.entries( RESPONSIVE_STATE_LABELS )
|
|
36
|
+
.filter(
|
|
37
|
+
( [ value ] ) =>
|
|
38
|
+
( value !== '@tablet' || breakpoints.tablet !== undefined ) &&
|
|
39
|
+
( value !== '@mobile' || breakpoints.mobile !== undefined )
|
|
40
|
+
)
|
|
41
|
+
.map( ( [ value, label ] ) => ( {
|
|
42
|
+
value,
|
|
43
|
+
label,
|
|
44
|
+
} ) );
|
|
45
|
+
}
|
|
46
|
+
|
|
26
47
|
// Keep in sync with WP_Theme_JSON_Gutenberg::VALID_BLOCK_PSEUDO_SELECTORS
|
|
27
48
|
// and packages/global-styles-engine/src/core/render.tsx.
|
|
28
49
|
export const VALID_BLOCK_PSEUDO_STATES = {
|
|
@@ -42,24 +63,13 @@ function getPseudoStateOptions( name ) {
|
|
|
42
63
|
}
|
|
43
64
|
|
|
44
65
|
const DEFAULT_STATE_VALUE = 'default';
|
|
45
|
-
|
|
46
|
-
function getViewportStateOptions( name ) {
|
|
47
|
-
if ( ! getBlockType( name )?.attributes?.style ) {
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return Object.entries( RESPONSIVE_STATE_LABELS ).map(
|
|
52
|
-
( [ value, label ] ) => ( {
|
|
53
|
-
value,
|
|
54
|
-
label,
|
|
55
|
-
} )
|
|
56
|
-
);
|
|
57
|
-
}
|
|
66
|
+
const EMPTY_STATE_OPTIONS = [];
|
|
58
67
|
|
|
59
68
|
/**
|
|
60
|
-
* Renders a
|
|
61
|
-
*
|
|
62
|
-
*
|
|
69
|
+
* Renders a pseudo-state selector in the block card header.
|
|
70
|
+
*
|
|
71
|
+
* Viewport states are selected globally via the editor's device preview
|
|
72
|
+
* (Responsive editing), so only pseudo-states are exposed here.
|
|
63
73
|
*
|
|
64
74
|
* @param {Object} props Component props.
|
|
65
75
|
* @param {string} props.name Block name.
|
|
@@ -68,21 +78,20 @@ function getViewportStateOptions( name ) {
|
|
|
68
78
|
* @return {Element|null} State control component, or null if not applicable.
|
|
69
79
|
*/
|
|
70
80
|
export function BlockStatesControl( { name, value, onChange } ) {
|
|
71
|
-
const
|
|
72
|
-
|
|
81
|
+
const pseudoStateOptions = useMemo(
|
|
82
|
+
() => getPseudoStateOptions( name ),
|
|
83
|
+
[ name ]
|
|
84
|
+
);
|
|
73
85
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
74
86
|
|
|
75
|
-
if ( !
|
|
87
|
+
if ( ! pseudoStateOptions.length ) {
|
|
76
88
|
return null;
|
|
77
89
|
}
|
|
78
90
|
|
|
79
91
|
return (
|
|
80
92
|
<StateControl
|
|
81
|
-
viewportStates={ viewportStateOptions }
|
|
82
93
|
pseudoStates={ pseudoStateOptions }
|
|
83
|
-
viewportValue={ value?.viewport ?? DEFAULT_STATE_VALUE }
|
|
84
94
|
pseudoStateValue={ value?.pseudo ?? DEFAULT_STATE_VALUE }
|
|
85
|
-
onChangeViewport={ ( viewport ) => onChange( { viewport } ) }
|
|
86
95
|
onChangePseudoState={ ( pseudo ) => onChange( { pseudo } ) }
|
|
87
96
|
popoverProps={ dropdownMenuProps.popoverProps }
|
|
88
97
|
showText={ false }
|
|
@@ -90,17 +99,35 @@ export function BlockStatesControl( { name, value, onChange } ) {
|
|
|
90
99
|
);
|
|
91
100
|
}
|
|
92
101
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Renders badges for the active style states of a block.
|
|
104
|
+
*
|
|
105
|
+
* @param {Object} props Component props.
|
|
106
|
+
* @param {string} props.name Block name.
|
|
107
|
+
* @param {Object} props.value Currently selected style-state value.
|
|
108
|
+
* @param {boolean} props.isResponsiveEditing Whether Responsive editing is enabled.
|
|
109
|
+
* @return {Element|null} Badges component, or null if there is nothing to show.
|
|
110
|
+
*/
|
|
111
|
+
export function BlockStateBadges( { name, value, isResponsiveEditing } ) {
|
|
112
|
+
const pseudoStateOptions = useMemo(
|
|
113
|
+
() => getPseudoStateOptions( name ),
|
|
114
|
+
[ name ]
|
|
115
|
+
);
|
|
116
|
+
const [ viewportSettings ] = useSettings( 'viewport' );
|
|
117
|
+
const deviceStateOptions = useMemo(
|
|
118
|
+
() => getDeviceStateOptions( viewportSettings ),
|
|
119
|
+
[ viewportSettings ]
|
|
120
|
+
);
|
|
96
121
|
|
|
97
|
-
if ( !
|
|
122
|
+
if ( ! pseudoStateOptions.length && ! isResponsiveEditing ) {
|
|
98
123
|
return null;
|
|
99
124
|
}
|
|
100
125
|
|
|
101
126
|
return (
|
|
102
127
|
<StateControlBadges
|
|
103
|
-
viewportStates={
|
|
128
|
+
viewportStates={
|
|
129
|
+
isResponsiveEditing ? deviceStateOptions : EMPTY_STATE_OPTIONS
|
|
130
|
+
}
|
|
104
131
|
pseudoStates={ pseudoStateOptions }
|
|
105
132
|
viewportValue={ value?.viewport ?? DEFAULT_STATE_VALUE }
|
|
106
133
|
pseudoStateValue={ value?.pseudo ?? DEFAULT_STATE_VALUE }
|
package/src/hooks/style.js
CHANGED
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
import { useMemo } from '@wordpress/element';
|
|
5
5
|
import { addFilter } from '@wordpress/hooks';
|
|
6
6
|
import { useSelect } from '@wordpress/data';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
mergeGlobalStyles,
|
|
9
|
+
privateApis as globalStylesEnginePrivateApis,
|
|
10
|
+
} from '@wordpress/global-styles-engine';
|
|
8
11
|
import {
|
|
9
12
|
getBlockSupport,
|
|
10
13
|
getBlockType,
|
|
@@ -12,7 +15,11 @@ import {
|
|
|
12
15
|
__EXPERIMENTAL_ELEMENTS as ELEMENTS,
|
|
13
16
|
} from '@wordpress/blocks';
|
|
14
17
|
import { useInstanceId } from '@wordpress/compose';
|
|
15
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
getCSSRules,
|
|
20
|
+
compileCSS,
|
|
21
|
+
getCSSValueFromRawStyle,
|
|
22
|
+
} from '@wordpress/style-engine';
|
|
16
23
|
|
|
17
24
|
/**
|
|
18
25
|
* Internal dependencies
|
|
@@ -49,18 +56,14 @@ import { VALID_BLOCK_PSEUDO_STATES } from './states';
|
|
|
49
56
|
import { buildScopedBlockSelector } from './state-utils';
|
|
50
57
|
import { scopeSelector } from '../components/global-styles/utils';
|
|
51
58
|
import { useBlockEditingMode } from '../components/block-editing-mode';
|
|
59
|
+
import { useSettings } from '../components/use-settings';
|
|
52
60
|
import { store as blockEditorStore } from '../store';
|
|
53
61
|
import { globalStylesDataKey } from '../store/private-keys';
|
|
54
62
|
import { unlock } from '../lock-unlock';
|
|
55
63
|
|
|
56
|
-
const
|
|
64
|
+
const { getResponsiveMediaQueries } = unlock( globalStylesEnginePrivateApis );
|
|
57
65
|
|
|
58
|
-
|
|
59
|
-
// packages/global-styles-engine/src/core/render.tsx.
|
|
60
|
-
const RESPONSIVE_BREAKPOINTS = {
|
|
61
|
-
'@mobile': '@media (width <= 480px)',
|
|
62
|
-
'@tablet': '@media (480px < width <= 782px)',
|
|
63
|
-
};
|
|
66
|
+
const BORDER_SIDES = [ 'Top', 'Right', 'Bottom', 'Left' ];
|
|
64
67
|
|
|
65
68
|
const styleSupportKeys = [
|
|
66
69
|
...TYPOGRAPHY_SUPPORT_KEYS,
|
|
@@ -202,6 +205,32 @@ function getStateFallbackDimensionStyles( stateStyles ) {
|
|
|
202
205
|
}
|
|
203
206
|
}
|
|
204
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Returns CSS for text alignment in a block instance state style object.
|
|
210
|
+
*
|
|
211
|
+
* Text alignment is not generated by the style engine because base block
|
|
212
|
+
* alignment is serialized as a class name. State styles need a declaration
|
|
213
|
+
* instead so viewport and pseudo-state values can override the default class.
|
|
214
|
+
*
|
|
215
|
+
* @param {Object} stateStyles State style object.
|
|
216
|
+
* @param {string} selector CSS selector for the generated style.
|
|
217
|
+
* @return {string|undefined} CSS string with the text alignment declaration.
|
|
218
|
+
*/
|
|
219
|
+
function getStateTextAlignCSS( stateStyles, selector ) {
|
|
220
|
+
const textAlign = stateStyles?.typography?.textAlign;
|
|
221
|
+
|
|
222
|
+
if ( typeof textAlign !== 'string' || ! textAlign ) {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
const declaration = `text-align: ${ getCSSValueFromRawStyle(
|
|
227
|
+
textAlign
|
|
228
|
+
) } !important`;
|
|
229
|
+
return selector
|
|
230
|
+
? `${ selector } { ${ declaration }; }`
|
|
231
|
+
: `${ declaration };`;
|
|
232
|
+
}
|
|
233
|
+
|
|
205
234
|
/**
|
|
206
235
|
* Generates CSS for a block instance state style object.
|
|
207
236
|
*
|
|
@@ -225,12 +254,13 @@ export function getStateStylesCSS( stateStyles, selector ) {
|
|
|
225
254
|
const fallbackCSS = fallbackBorderStyles
|
|
226
255
|
? compileCSS( fallbackBorderStyles, { selector } )
|
|
227
256
|
: undefined;
|
|
257
|
+
const textAlignCSS = getStateTextAlignCSS( stateStyles, selector );
|
|
228
258
|
const backgroundResetCSS = getStateBackgroundResetCSS(
|
|
229
259
|
stateStyles,
|
|
230
260
|
selector
|
|
231
261
|
);
|
|
232
262
|
|
|
233
|
-
return [ importantCSS, fallbackCSS, backgroundResetCSS ]
|
|
263
|
+
return [ importantCSS, textAlignCSS, fallbackCSS, backgroundResetCSS ]
|
|
234
264
|
.filter( Boolean )
|
|
235
265
|
.join( '\n' );
|
|
236
266
|
}
|
|
@@ -408,17 +438,25 @@ function getPseudoStateCSSRules( style, name, baseSelector ) {
|
|
|
408
438
|
* pseudo-state styles. Generated rules are wrapped in the matching breakpoint
|
|
409
439
|
* media query.
|
|
410
440
|
*
|
|
411
|
-
* @param {Object} style
|
|
412
|
-
* @param {string} name
|
|
413
|
-
* @param {string} baseSelector
|
|
441
|
+
* @param {Object} style Block style object containing responsive states.
|
|
442
|
+
* @param {string} name Block name.
|
|
443
|
+
* @param {string} baseSelector Base selector used to scope generated CSS.
|
|
444
|
+
* @param {Object} viewportSettings Viewport breakpoint settings.
|
|
414
445
|
* @return {string[]} Generated CSS rule strings.
|
|
415
446
|
*/
|
|
416
|
-
export function getResponsiveStateCSSRules(
|
|
447
|
+
export function getResponsiveStateCSSRules(
|
|
448
|
+
style,
|
|
449
|
+
name,
|
|
450
|
+
baseSelector,
|
|
451
|
+
viewportSettings
|
|
452
|
+
) {
|
|
417
453
|
const cssRules = [];
|
|
418
454
|
const validPseudoStates = VALID_BLOCK_PSEUDO_STATES[ name ] ?? [];
|
|
419
455
|
const nestedStateKeys = [ 'elements', ...validPseudoStates ];
|
|
456
|
+
const responsiveMediaQueries =
|
|
457
|
+
getResponsiveMediaQueries( viewportSettings );
|
|
420
458
|
|
|
421
|
-
Object.entries(
|
|
459
|
+
Object.entries( responsiveMediaQueries ).forEach(
|
|
422
460
|
( [ viewport, mediaQuery ] ) => {
|
|
423
461
|
const viewportStyles = getStyleForState( style, {
|
|
424
462
|
viewport,
|
|
@@ -970,6 +1008,7 @@ function useBlockProps( { name, style } ) {
|
|
|
970
1008
|
|
|
971
1009
|
const baseElementSelector = `.${ blockElementsContainerIdentifier }`;
|
|
972
1010
|
const blockElementStyles = style?.elements;
|
|
1011
|
+
const [ viewportSettings ] = useSettings( 'viewport' );
|
|
973
1012
|
|
|
974
1013
|
const styles = useMemo( () => {
|
|
975
1014
|
const cssRules = [];
|
|
@@ -988,11 +1027,22 @@ function useBlockProps( { name, style } ) {
|
|
|
988
1027
|
);
|
|
989
1028
|
|
|
990
1029
|
cssRules.push(
|
|
991
|
-
...getResponsiveStateCSSRules(
|
|
1030
|
+
...getResponsiveStateCSSRules(
|
|
1031
|
+
style,
|
|
1032
|
+
name,
|
|
1033
|
+
baseElementSelector,
|
|
1034
|
+
viewportSettings
|
|
1035
|
+
)
|
|
992
1036
|
);
|
|
993
1037
|
|
|
994
1038
|
return cssRules.length > 0 ? cssRules.join( '' ) : undefined;
|
|
995
|
-
}, [
|
|
1039
|
+
}, [
|
|
1040
|
+
baseElementSelector,
|
|
1041
|
+
blockElementStyles,
|
|
1042
|
+
name,
|
|
1043
|
+
style,
|
|
1044
|
+
viewportSettings,
|
|
1045
|
+
] );
|
|
996
1046
|
|
|
997
1047
|
useStyleOverride( { css: styles } );
|
|
998
1048
|
|
package/src/hooks/test/layout.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
getLayoutStateOverrides,
|
|
6
|
+
getResetLayout,
|
|
7
|
+
getResponsiveLayoutStyles,
|
|
8
|
+
} from '../layout';
|
|
5
9
|
|
|
6
10
|
describe( 'layout', () => {
|
|
7
11
|
describe( 'getResetLayout()', () => {
|
|
@@ -46,6 +50,28 @@ describe( 'layout', () => {
|
|
|
46
50
|
} );
|
|
47
51
|
} );
|
|
48
52
|
|
|
53
|
+
describe( 'getLayoutStateOverrides()', () => {
|
|
54
|
+
it( 'preserves explicit unsets for layout values inherited from the default state', () => {
|
|
55
|
+
expect(
|
|
56
|
+
getLayoutStateOverrides(
|
|
57
|
+
{ type: 'grid', columnCount: undefined },
|
|
58
|
+
{ type: 'grid', columnCount: 3 }
|
|
59
|
+
)
|
|
60
|
+
).toEqual( {
|
|
61
|
+
columnCount: null,
|
|
62
|
+
} );
|
|
63
|
+
} );
|
|
64
|
+
|
|
65
|
+
it( 'removes undefined layout values that are not inherited from the default state', () => {
|
|
66
|
+
expect(
|
|
67
|
+
getLayoutStateOverrides(
|
|
68
|
+
{ type: 'grid', columnCount: undefined },
|
|
69
|
+
{ type: 'grid' }
|
|
70
|
+
)
|
|
71
|
+
).toBeUndefined();
|
|
72
|
+
} );
|
|
73
|
+
} );
|
|
74
|
+
|
|
49
75
|
describe( 'getResponsiveLayoutStyles()', () => {
|
|
50
76
|
it( 'generates responsive block gap styles for flow layouts', () => {
|
|
51
77
|
expect(
|
|
@@ -135,6 +161,54 @@ describe( 'layout', () => {
|
|
|
135
161
|
);
|
|
136
162
|
} );
|
|
137
163
|
|
|
164
|
+
it( 'generates responsive auto grid columns when column count is unset', () => {
|
|
165
|
+
expect(
|
|
166
|
+
getResponsiveLayoutStyles( {
|
|
167
|
+
attributes: {
|
|
168
|
+
style: {
|
|
169
|
+
'@mobile': {
|
|
170
|
+
layout: {
|
|
171
|
+
columnCount: null,
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
blockName: 'core/group',
|
|
177
|
+
selector: '.wp-container-test',
|
|
178
|
+
layout: { type: 'grid', columnCount: 3 },
|
|
179
|
+
hasBlockGapSupport: true,
|
|
180
|
+
} )
|
|
181
|
+
).toBe(
|
|
182
|
+
'@media (width <= 480px){.wp-container-test { grid-template-columns: repeat(auto-fill, minmax(min(12rem, 100%), 1fr)); container-type: inline-size; }}'
|
|
183
|
+
);
|
|
184
|
+
} );
|
|
185
|
+
|
|
186
|
+
it( 'generates responsive constrained size resets when content width is unset', () => {
|
|
187
|
+
const result = getResponsiveLayoutStyles( {
|
|
188
|
+
attributes: {
|
|
189
|
+
style: {
|
|
190
|
+
'@mobile': {
|
|
191
|
+
layout: {
|
|
192
|
+
contentSize: null,
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
blockName: 'core/group',
|
|
198
|
+
selector: '.wp-container-test',
|
|
199
|
+
layout: { type: 'constrained', contentSize: '800px' },
|
|
200
|
+
hasBlockGapSupport: true,
|
|
201
|
+
} );
|
|
202
|
+
|
|
203
|
+
expect( result ).toContain( '@media (width <= 480px)' );
|
|
204
|
+
expect( result ).toContain(
|
|
205
|
+
'max-width: var(--wp--style--global--content-size, none);'
|
|
206
|
+
);
|
|
207
|
+
expect( result ).toContain(
|
|
208
|
+
'max-width: var(--wp--style--global--wide-size, none);'
|
|
209
|
+
);
|
|
210
|
+
} );
|
|
211
|
+
|
|
138
212
|
it( 'keeps responsive grid column overrides when block gap is also changed', () => {
|
|
139
213
|
expect(
|
|
140
214
|
getResponsiveLayoutStyles( {
|
package/src/hooks/test/style.js
CHANGED
|
@@ -300,6 +300,19 @@ describe( 'getStateStylesCSS', () => {
|
|
|
300
300
|
'.wp-block-test { height: 20rem !important; aspect-ratio: unset !important; }'
|
|
301
301
|
);
|
|
302
302
|
} );
|
|
303
|
+
|
|
304
|
+
it( 'adds important text alignment declarations for state styles', () => {
|
|
305
|
+
expect(
|
|
306
|
+
getStateStylesCSS(
|
|
307
|
+
{
|
|
308
|
+
typography: {
|
|
309
|
+
textAlign: 'center',
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
'.wp-block-test'
|
|
313
|
+
)
|
|
314
|
+
).toBe( '.wp-block-test { text-align: center !important; }' );
|
|
315
|
+
} );
|
|
303
316
|
} );
|
|
304
317
|
|
|
305
318
|
describe( 'getBlockStateStylesCSS', () => {
|
|
@@ -414,6 +427,22 @@ describe( 'getResponsiveStateCSSRules', () => {
|
|
|
414
427
|
] );
|
|
415
428
|
} );
|
|
416
429
|
|
|
430
|
+
it( 'generates media-query scoped text alignment styles for viewport states', () => {
|
|
431
|
+
expect(
|
|
432
|
+
getResponsiveStateCSSRules(
|
|
433
|
+
{
|
|
434
|
+
'@mobile': {
|
|
435
|
+
typography: { textAlign: 'right' },
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
'core/paragraph',
|
|
439
|
+
'.wp-elements-1'
|
|
440
|
+
)
|
|
441
|
+
).toEqual( [
|
|
442
|
+
'@media (width <= 480px){.wp-elements-1 { text-align: right !important; }}',
|
|
443
|
+
] );
|
|
444
|
+
} );
|
|
445
|
+
|
|
417
446
|
it( 'routes viewport styles through feature selectors', () => {
|
|
418
447
|
expect(
|
|
419
448
|
getResponsiveStateCSSRules(
|
|
@@ -10,7 +10,11 @@ import {
|
|
|
10
10
|
/**
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
getValidTextAlignments,
|
|
15
|
+
addAssignedTextAlign,
|
|
16
|
+
getTextAlignControlGroup,
|
|
17
|
+
} from '../text-align';
|
|
14
18
|
|
|
15
19
|
const noop = () => {};
|
|
16
20
|
|
|
@@ -62,6 +66,35 @@ describe( 'textAlign', () => {
|
|
|
62
66
|
} );
|
|
63
67
|
} );
|
|
64
68
|
|
|
69
|
+
describe( 'getTextAlignControlGroup()', () => {
|
|
70
|
+
it( 'uses the regular block slot by default', () => {
|
|
71
|
+
expect(
|
|
72
|
+
getTextAlignControlGroup( false, {
|
|
73
|
+
viewport: 'default',
|
|
74
|
+
pseudo: 'default',
|
|
75
|
+
} )
|
|
76
|
+
).toBe( 'block' );
|
|
77
|
+
} );
|
|
78
|
+
|
|
79
|
+
it( 'uses the regular block slot when responsive editing has no viewport state', () => {
|
|
80
|
+
expect(
|
|
81
|
+
getTextAlignControlGroup( true, {
|
|
82
|
+
viewport: 'default',
|
|
83
|
+
pseudo: 'default',
|
|
84
|
+
} )
|
|
85
|
+
).toBe( 'block' );
|
|
86
|
+
} );
|
|
87
|
+
|
|
88
|
+
it( 'uses the style-state slot when responsive editing has a viewport state', () => {
|
|
89
|
+
expect(
|
|
90
|
+
getTextAlignControlGroup( true, {
|
|
91
|
+
viewport: '@mobile',
|
|
92
|
+
pseudo: 'default',
|
|
93
|
+
} )
|
|
94
|
+
).toBe( 'style-state' );
|
|
95
|
+
} );
|
|
96
|
+
} );
|
|
97
|
+
|
|
65
98
|
describe( 'addAssignedTextAlign', () => {
|
|
66
99
|
it( 'should do nothing if block does not support text align', () => {
|
|
67
100
|
registerBlockType( 'core/foo', blockSettings );
|
package/src/hooks/text-align.js
CHANGED
|
@@ -9,6 +9,7 @@ import clsx from 'clsx';
|
|
|
9
9
|
import { __ } from '@wordpress/i18n';
|
|
10
10
|
import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
|
|
11
11
|
import { alignLeft, alignRight, alignCenter } from '@wordpress/icons';
|
|
12
|
+
import { useSelect } from '@wordpress/data';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Internal dependencies
|
|
@@ -16,11 +17,14 @@ import { alignLeft, alignRight, alignCenter } from '@wordpress/icons';
|
|
|
16
17
|
import { AlignmentControl, BlockControls } from '../components';
|
|
17
18
|
import { useBlockEditingMode } from '../components/block-editing-mode';
|
|
18
19
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} from './
|
|
20
|
+
getStyleForState,
|
|
21
|
+
hasViewportBlockStyleState,
|
|
22
|
+
setStyleForState,
|
|
23
|
+
} from './block-style-state';
|
|
24
|
+
import { shouldSkipSerialization, useBlockSettings } from './utils';
|
|
23
25
|
import { TYPOGRAPHY_SUPPORT_KEY } from './typography';
|
|
26
|
+
import { store as blockEditorStore } from '../store';
|
|
27
|
+
import { unlock } from '../lock-unlock';
|
|
24
28
|
|
|
25
29
|
export const TEXT_ALIGN_SUPPORT_KEY = 'typography.textAlign';
|
|
26
30
|
|
|
@@ -64,7 +68,14 @@ export function getValidTextAlignments( blockTextAlign ) {
|
|
|
64
68
|
return blockTextAlign === true ? VALID_TEXT_ALIGNMENTS : NO_TEXT_ALIGNMENTS;
|
|
65
69
|
}
|
|
66
70
|
|
|
71
|
+
export function getTextAlignControlGroup( isResponsiveEditing, selectedState ) {
|
|
72
|
+
return isResponsiveEditing && hasViewportBlockStyleState( selectedState )
|
|
73
|
+
? 'style-state'
|
|
74
|
+
: 'block';
|
|
75
|
+
}
|
|
76
|
+
|
|
67
77
|
function BlockEditTextAlignmentToolbarControlsPure( {
|
|
78
|
+
clientId,
|
|
68
79
|
style,
|
|
69
80
|
name: blockName,
|
|
70
81
|
setAttributes,
|
|
@@ -72,6 +83,19 @@ function BlockEditTextAlignmentToolbarControlsPure( {
|
|
|
72
83
|
const settings = useBlockSettings( blockName );
|
|
73
84
|
const hasTextAlignControl = settings?.typography?.textAlign;
|
|
74
85
|
const blockEditingMode = useBlockEditingMode();
|
|
86
|
+
const { selectedState, isResponsiveEditing } = useSelect(
|
|
87
|
+
( select ) => {
|
|
88
|
+
const {
|
|
89
|
+
getSelectedBlockStyleState,
|
|
90
|
+
isResponsiveEditing: getIsResponsiveEditing,
|
|
91
|
+
} = unlock( select( blockEditorStore ) );
|
|
92
|
+
return {
|
|
93
|
+
selectedState: getSelectedBlockStyleState( clientId ),
|
|
94
|
+
isResponsiveEditing: getIsResponsiveEditing(),
|
|
95
|
+
};
|
|
96
|
+
},
|
|
97
|
+
[ clientId ]
|
|
98
|
+
);
|
|
75
99
|
|
|
76
100
|
if ( ! hasTextAlignControl || blockEditingMode !== 'default' ) {
|
|
77
101
|
return null;
|
|
@@ -87,23 +111,30 @@ function BlockEditTextAlignmentToolbarControlsPure( {
|
|
|
87
111
|
const textAlignmentControls = TEXT_ALIGNMENT_OPTIONS.filter( ( control ) =>
|
|
88
112
|
validTextAlignments.includes( control.align )
|
|
89
113
|
);
|
|
114
|
+
const stateStyle = getStyleForState( style, selectedState );
|
|
115
|
+
const controlsGroup = getTextAlignControlGroup(
|
|
116
|
+
isResponsiveEditing,
|
|
117
|
+
selectedState
|
|
118
|
+
);
|
|
90
119
|
|
|
91
120
|
const onChange = ( newTextAlignValue ) => {
|
|
92
|
-
const
|
|
93
|
-
...
|
|
121
|
+
const newStateStyle = {
|
|
122
|
+
...stateStyle,
|
|
94
123
|
typography: {
|
|
95
|
-
...
|
|
124
|
+
...stateStyle?.typography,
|
|
96
125
|
textAlign: newTextAlignValue,
|
|
97
126
|
},
|
|
98
127
|
};
|
|
99
128
|
|
|
100
|
-
setAttributes( {
|
|
129
|
+
setAttributes( {
|
|
130
|
+
style: setStyleForState( style, selectedState, newStateStyle ),
|
|
131
|
+
} );
|
|
101
132
|
};
|
|
102
133
|
|
|
103
134
|
return (
|
|
104
|
-
<BlockControls group=
|
|
135
|
+
<BlockControls group={ controlsGroup }>
|
|
105
136
|
<AlignmentControl
|
|
106
|
-
value={
|
|
137
|
+
value={ stateStyle?.typography?.textAlign }
|
|
107
138
|
onChange={ onChange }
|
|
108
139
|
alignmentControls={ textAlignmentControls }
|
|
109
140
|
/>
|
package/src/hooks/typography.js
CHANGED
|
@@ -214,7 +214,6 @@ export function TypographyPanel( {
|
|
|
214
214
|
// Link color failures are reported by the Elements panel, which owns the
|
|
215
215
|
// link color selection.
|
|
216
216
|
const enableContrastChecking =
|
|
217
|
-
! isStateSelected &&
|
|
218
217
|
! value?.color?.gradient &&
|
|
219
218
|
!! value?.color?.text &&
|
|
220
219
|
settings?.color?.text &&
|