@wordpress/block-editor 15.23.0 → 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 +33 -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 +2 -3
- 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/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 +29 -12
- 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 -1
- 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-keys.cjs +3 -0
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +85 -6
- package/build/store/private-selectors.cjs.map +3 -3
- 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 +2 -3
- 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/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 +29 -12
- 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 -1
- 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-keys.mjs +2 -0
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +84 -6
- package/build-module/store/private-selectors.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 +3 -2
- 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/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 +36 -13
- 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 -0
- package/src/store/actions.js +43 -14
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +166 -9
- package/src/store/selectors.js +41 -0
- package/src/store/test/actions.js +1 -1
- package/src/store/test/private-selectors.js +533 -0
- package/src/store/test/reducer.js +11 -11
- 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
|
@@ -21,45 +21,48 @@ function GridLayoutSync( props ) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
function GridTools( { clientId, layout } ) {
|
|
24
|
-
const { isVisible, blockVisibility, deviceType } =
|
|
25
|
-
(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
const { isVisible, blockVisibility, deviceType, viewportSettings } =
|
|
25
|
+
useSelect(
|
|
26
|
+
( select ) => {
|
|
27
|
+
const {
|
|
28
|
+
isBlockSelected,
|
|
29
|
+
hasSelectedInnerBlock,
|
|
30
|
+
isDraggingBlocks,
|
|
31
|
+
getTemplateLock,
|
|
32
|
+
getBlockEditingMode,
|
|
33
|
+
getBlockAttributes,
|
|
34
|
+
getSettings,
|
|
35
|
+
} = select( blockEditorStore );
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
// These calls are purposely ordered from least expensive to most expensive.
|
|
38
|
+
// Hides the visualizer in cases where the user is not or cannot interact with it.
|
|
39
|
+
// Also hide if a child block is selected, because layout-child.js will render
|
|
40
|
+
// the visualizer in that case (with proper childGridClientId handling).
|
|
41
|
+
if (
|
|
42
|
+
( ! isDraggingBlocks() && ! isBlockSelected( clientId ) ) ||
|
|
43
|
+
getTemplateLock( clientId ) ||
|
|
44
|
+
getBlockEditingMode( clientId ) !== 'default' ||
|
|
45
|
+
hasSelectedInnerBlock( clientId )
|
|
46
|
+
) {
|
|
47
|
+
return { isVisible: false };
|
|
48
|
+
}
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const attributes = getBlockAttributes( clientId );
|
|
51
|
+
const settings = getSettings();
|
|
52
|
+
const currentDeviceType =
|
|
53
|
+
settings?.[ deviceTypeKey ]?.toLowerCase() ||
|
|
54
|
+
BLOCK_VISIBILITY_VIEWPORTS.desktop.key;
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
return {
|
|
57
|
+
isVisible: true,
|
|
58
|
+
blockVisibility: attributes?.metadata?.blockVisibility,
|
|
59
|
+
deviceType: currentDeviceType,
|
|
60
|
+
viewportSettings:
|
|
61
|
+
settings?.__experimentalFeatures?.viewport,
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
[ clientId ]
|
|
65
|
+
);
|
|
63
66
|
|
|
64
67
|
// Get the block's DOM element to derive the canvas iframe window,
|
|
65
68
|
// so viewport detection matches the actual block rendering context
|
|
@@ -71,6 +74,7 @@ function GridTools( { clientId, layout } ) {
|
|
|
71
74
|
blockVisibility,
|
|
72
75
|
deviceType,
|
|
73
76
|
view: canvasView,
|
|
77
|
+
viewportSettings,
|
|
74
78
|
} );
|
|
75
79
|
|
|
76
80
|
// Check whether any ancestor is hidden at the viewport actually detected
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { useInstanceId } from '@wordpress/compose';
|
|
5
5
|
import { useSelect } from '@wordpress/data';
|
|
6
6
|
import { useState } from '@wordpress/element';
|
|
7
|
+
import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Internal dependencies
|
|
@@ -26,13 +27,10 @@ import {
|
|
|
26
27
|
getStyleForState,
|
|
27
28
|
} from './block-style-state';
|
|
28
29
|
|
|
30
|
+
const { getResponsiveMediaQueries } = unlock( globalStylesEnginePrivateApis );
|
|
31
|
+
|
|
29
32
|
// Used for generating the instance ID
|
|
30
33
|
const LAYOUT_CHILD_BLOCK_PROPS_REFERENCE = {};
|
|
31
|
-
// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS.
|
|
32
|
-
const RESPONSIVE_BREAKPOINTS = {
|
|
33
|
-
'@mobile': '@media (width <= 480px)',
|
|
34
|
-
'@tablet': '@media (480px < width <= 782px)',
|
|
35
|
-
};
|
|
36
34
|
|
|
37
35
|
// These are the serialized `selfStretch` values. `max` used to be called
|
|
38
36
|
// "Fixed" in the UI, but was renamed and replaced by `fixedNoShrink`.
|
|
@@ -253,10 +251,11 @@ export function getResponsiveChildLayoutStyles( {
|
|
|
253
251
|
style = {},
|
|
254
252
|
selector,
|
|
255
253
|
parentLayout = {},
|
|
254
|
+
viewportSettings,
|
|
256
255
|
} ) {
|
|
257
256
|
const baseLayout = style?.layout ?? {};
|
|
258
257
|
|
|
259
|
-
return Object.entries(
|
|
258
|
+
return Object.entries( getResponsiveMediaQueries( viewportSettings ) )
|
|
260
259
|
.map( ( [ viewport, mediaQuery ] ) => {
|
|
261
260
|
const viewportLayout = getStyleForState( style, {
|
|
262
261
|
viewport,
|
|
@@ -282,9 +281,15 @@ export function getResponsiveChildLayoutStyles( {
|
|
|
282
281
|
}
|
|
283
282
|
|
|
284
283
|
function useBlockPropsChildLayoutStyles( { style } ) {
|
|
285
|
-
const shouldRenderChildLayoutStyles = useSelect(
|
|
286
|
-
|
|
287
|
-
|
|
284
|
+
const { shouldRenderChildLayoutStyles, viewportSettings } = useSelect(
|
|
285
|
+
( select ) => {
|
|
286
|
+
const settings = select( blockEditorStore ).getSettings();
|
|
287
|
+
return {
|
|
288
|
+
shouldRenderChildLayoutStyles: ! settings.disableLayoutStyles,
|
|
289
|
+
viewportSettings: settings?.__experimentalFeatures?.viewport,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
);
|
|
288
293
|
const layout = style?.layout ?? {};
|
|
289
294
|
const { columnStart, rowStart, columnSpan, rowSpan } = layout;
|
|
290
295
|
const parentLayout = useLayout() || {};
|
|
@@ -320,6 +325,7 @@ function useBlockPropsChildLayoutStyles( { style } ) {
|
|
|
320
325
|
style,
|
|
321
326
|
selector,
|
|
322
327
|
parentLayout,
|
|
328
|
+
viewportSettings,
|
|
323
329
|
} ),
|
|
324
330
|
].join( '' );
|
|
325
331
|
}
|
|
@@ -373,6 +379,7 @@ function GridTools( {
|
|
|
373
379
|
parentBlockVisibility,
|
|
374
380
|
blockBlockVisibility,
|
|
375
381
|
deviceType,
|
|
382
|
+
viewportSettings,
|
|
376
383
|
isChildBlockAGrid,
|
|
377
384
|
} = useSelect(
|
|
378
385
|
( select ) => {
|
|
@@ -411,6 +418,7 @@ function GridTools( {
|
|
|
411
418
|
blockBlockVisibility:
|
|
412
419
|
blockAttributes?.metadata?.blockVisibility,
|
|
413
420
|
deviceType: currentDeviceType,
|
|
421
|
+
viewportSettings: settings?.__experimentalFeatures?.viewport,
|
|
414
422
|
// Check if the selected child block is itself a grid.
|
|
415
423
|
isChildBlockAGrid: blockAttributes?.layout?.type === 'grid',
|
|
416
424
|
};
|
|
@@ -431,6 +439,7 @@ function GridTools( {
|
|
|
431
439
|
blockVisibility: parentBlockVisibility,
|
|
432
440
|
deviceType,
|
|
433
441
|
view: canvasView,
|
|
442
|
+
viewportSettings,
|
|
434
443
|
} );
|
|
435
444
|
|
|
436
445
|
// Check whether any ancestor of the parent grid is hidden at the viewport
|
|
@@ -457,6 +466,7 @@ function GridTools( {
|
|
|
457
466
|
blockVisibility: blockBlockVisibility,
|
|
458
467
|
deviceType,
|
|
459
468
|
view: canvasView,
|
|
469
|
+
viewportSettings,
|
|
460
470
|
} );
|
|
461
471
|
|
|
462
472
|
// Use useState() instead of useRef() so that GridItemResizer updates when ref is set.
|
package/src/hooks/layout.js
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
hasBlockSupport,
|
|
15
15
|
store as blocksStore,
|
|
16
16
|
} from '@wordpress/blocks';
|
|
17
|
+
import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
|
|
17
18
|
import { useSelect } from '@wordpress/data';
|
|
18
19
|
import {
|
|
19
20
|
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
@@ -49,12 +50,6 @@ import {
|
|
|
49
50
|
const VARIATION_PREFIX = 'is-style-';
|
|
50
51
|
|
|
51
52
|
const layoutBlockSupportKey = 'layout';
|
|
52
|
-
// Keep in sync with WP_Theme_JSON_Gutenberg::RESPONSIVE_BREAKPOINTS and
|
|
53
|
-
// packages/global-styles-engine/src/core/render.tsx.
|
|
54
|
-
const RESPONSIVE_BREAKPOINTS = {
|
|
55
|
-
'@mobile': '@media (width <= 480px)',
|
|
56
|
-
'@tablet': '@media (480px < width <= 782px)',
|
|
57
|
-
};
|
|
58
53
|
const CHILD_LAYOUT_KEYS = [
|
|
59
54
|
'selfStretch',
|
|
60
55
|
'flexSize',
|
|
@@ -64,6 +59,7 @@ const CHILD_LAYOUT_KEYS = [
|
|
|
64
59
|
'rowSpan',
|
|
65
60
|
];
|
|
66
61
|
const { kebabCase } = unlock( componentsPrivateApis );
|
|
62
|
+
const { getResponsiveMediaQueries } = unlock( globalStylesEnginePrivateApis );
|
|
67
63
|
|
|
68
64
|
function getDefaultLayout( layoutBlockSupport = {}, blockVariation ) {
|
|
69
65
|
const defaultBlockLayout = layoutBlockSupport?.default;
|
|
@@ -85,7 +81,7 @@ export function getResetLayout( layoutBlockSupport = {}, blockVariation ) {
|
|
|
85
81
|
} );
|
|
86
82
|
}
|
|
87
83
|
|
|
88
|
-
function getLayoutStateOverrides(
|
|
84
|
+
export function getLayoutStateOverrides(
|
|
89
85
|
layout = {},
|
|
90
86
|
baseLayout = {},
|
|
91
87
|
existingLayout = {}
|
|
@@ -98,11 +94,13 @@ function getLayoutStateOverrides(
|
|
|
98
94
|
);
|
|
99
95
|
|
|
100
96
|
Object.entries( layout || {} ).forEach( ( [ key, value ] ) => {
|
|
97
|
+
const baseHasValue = Object.hasOwn( baseLayout || {}, key );
|
|
101
98
|
if (
|
|
102
99
|
! CHILD_LAYOUT_KEYS.includes( key ) &&
|
|
103
100
|
value !== baseLayout?.[ key ]
|
|
104
101
|
) {
|
|
105
|
-
overrides[ key ] =
|
|
102
|
+
overrides[ key ] =
|
|
103
|
+
value === undefined && baseHasValue ? null : value;
|
|
106
104
|
}
|
|
107
105
|
} );
|
|
108
106
|
|
|
@@ -239,6 +237,7 @@ export function useLayoutStyles( blockAttributes = {}, blockName, selector ) {
|
|
|
239
237
|
* @param { Object } options.layout Active block layout.
|
|
240
238
|
* @param { boolean } options.hasBlockGapSupport Whether block gap is supported.
|
|
241
239
|
* @param { * } options.globalBlockGapValue Global block gap fallback.
|
|
240
|
+
* @param { Object } options.viewportSettings Viewport breakpoint settings.
|
|
242
241
|
*
|
|
243
242
|
* @return { string } CSS rule.
|
|
244
243
|
*/
|
|
@@ -249,8 +248,9 @@ export function getResponsiveLayoutStyles( {
|
|
|
249
248
|
layout = {},
|
|
250
249
|
hasBlockGapSupport,
|
|
251
250
|
globalBlockGapValue,
|
|
251
|
+
viewportSettings,
|
|
252
252
|
} ) {
|
|
253
|
-
return Object.entries(
|
|
253
|
+
return Object.entries( getResponsiveMediaQueries( viewportSettings ) )
|
|
254
254
|
.map( ( [ viewport, mediaQuery ] ) => {
|
|
255
255
|
const viewportStyle = getStyleForState( attributes?.style, {
|
|
256
256
|
viewport,
|
|
@@ -301,29 +301,34 @@ function LayoutPanelPure( {
|
|
|
301
301
|
const settings = useBlockSettings( blockName );
|
|
302
302
|
// Block settings come from theme.json under settings.[blockName].
|
|
303
303
|
const { layout: layoutSettings } = settings;
|
|
304
|
-
const {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
304
|
+
const {
|
|
305
|
+
themeSupportsLayout,
|
|
306
|
+
activeBlockVariation,
|
|
307
|
+
selectedState,
|
|
308
|
+
isResponsiveEditing,
|
|
309
|
+
} = useSelect(
|
|
310
|
+
( select ) => {
|
|
311
|
+
const {
|
|
312
|
+
getBlockAttributes,
|
|
313
|
+
getSettings,
|
|
314
|
+
getSelectedBlockStyleState,
|
|
315
|
+
isResponsiveEditing: getIsResponsiveEditing,
|
|
316
|
+
} = unlock( select( blockEditorStore ) );
|
|
317
|
+
return {
|
|
318
|
+
activeBlockVariation: select(
|
|
319
|
+
blocksStore
|
|
320
|
+
).getActiveBlockVariation(
|
|
321
|
+
blockName,
|
|
322
|
+
getBlockAttributes( clientId ) || {},
|
|
323
|
+
'block'
|
|
324
|
+
),
|
|
325
|
+
themeSupportsLayout: getSettings().supportsLayout,
|
|
326
|
+
selectedState: getSelectedBlockStyleState( clientId ),
|
|
327
|
+
isResponsiveEditing: getIsResponsiveEditing(),
|
|
328
|
+
};
|
|
329
|
+
},
|
|
330
|
+
[ blockName, clientId ]
|
|
331
|
+
);
|
|
327
332
|
|
|
328
333
|
const blockEditingMode = useBlockEditingMode();
|
|
329
334
|
const isViewportLayoutState =
|
|
@@ -466,7 +471,7 @@ function LayoutPanelPure( {
|
|
|
466
471
|
const nextStateStyle = cleanEmptyObject( {
|
|
467
472
|
...stateStyle,
|
|
468
473
|
layout: getLayoutStateOverrides(
|
|
469
|
-
|
|
474
|
+
newLayout,
|
|
470
475
|
baseLayout,
|
|
471
476
|
stateStyle?.layout
|
|
472
477
|
),
|
|
@@ -573,6 +578,13 @@ function LayoutPanelPure( {
|
|
|
573
578
|
layout={ usedLayout }
|
|
574
579
|
onChange={ onChangeLayout }
|
|
575
580
|
layoutBlockSupport={ layoutBlockSupport }
|
|
581
|
+
controlsGroup={
|
|
582
|
+
isResponsiveEditing &&
|
|
583
|
+
hasViewportBlockStyleState( selectedState ) &&
|
|
584
|
+
! hasPseudoBlockStyleState( selectedState )
|
|
585
|
+
? 'style-state'
|
|
586
|
+
: 'block'
|
|
587
|
+
}
|
|
576
588
|
name={ blockName }
|
|
577
589
|
clientId={ clientId }
|
|
578
590
|
/>
|
|
@@ -593,7 +605,6 @@ export default {
|
|
|
593
605
|
function LayoutTypeSwitcher( { type, onChange } ) {
|
|
594
606
|
return (
|
|
595
607
|
<ToggleGroupControl
|
|
596
|
-
__next40pxDefaultSize
|
|
597
608
|
isBlock
|
|
598
609
|
label={ __( 'Layout type' ) }
|
|
599
610
|
hideLabelFromVision
|
|
@@ -642,6 +653,7 @@ function BlockWithLayoutStyles( {
|
|
|
642
653
|
props,
|
|
643
654
|
blockGapSupport,
|
|
644
655
|
globalBlockGapValue,
|
|
656
|
+
viewportSettings,
|
|
645
657
|
layoutClasses,
|
|
646
658
|
} ) {
|
|
647
659
|
const { name, attributes } = props;
|
|
@@ -677,6 +689,7 @@ function BlockWithLayoutStyles( {
|
|
|
677
689
|
layout: usedLayout,
|
|
678
690
|
hasBlockGapSupport,
|
|
679
691
|
globalBlockGapValue,
|
|
692
|
+
viewportSettings,
|
|
680
693
|
} );
|
|
681
694
|
const css = [ baseLayoutCSS, responsiveLayoutCSS ]
|
|
682
695
|
.filter( Boolean )
|
|
@@ -762,7 +775,12 @@ export const withLayoutStyles = createHigherOrderComponent(
|
|
|
762
775
|
globalStyles?.blocks?.[ name ]?.spacing?.blockGap ??
|
|
763
776
|
globalStyles?.spacing?.blockGap;
|
|
764
777
|
|
|
765
|
-
return {
|
|
778
|
+
return {
|
|
779
|
+
blockGapSupport,
|
|
780
|
+
globalBlockGapValue,
|
|
781
|
+
viewportSettings:
|
|
782
|
+
settings?.__experimentalFeatures?.viewport,
|
|
783
|
+
};
|
|
766
784
|
},
|
|
767
785
|
[ blockSupportsLayout, clientId, attributes?.className, name ]
|
|
768
786
|
);
|
package/src/hooks/position.js
CHANGED
|
@@ -8,10 +8,11 @@ import clsx from 'clsx';
|
|
|
8
8
|
*/
|
|
9
9
|
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
10
10
|
import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
|
|
11
|
-
import { BaseControl, CustomSelectControl } from '@wordpress/components';
|
|
12
11
|
import { useInstanceId } from '@wordpress/compose';
|
|
13
12
|
import { useSelect } from '@wordpress/data';
|
|
14
|
-
import { useMemo } from '@wordpress/element';
|
|
13
|
+
import { useId, useMemo } from '@wordpress/element';
|
|
14
|
+
// eslint-disable-next-line @wordpress/use-recommended-components -- Use the portal-based popup to avoid inspector clipping.
|
|
15
|
+
import { SelectControl } from '@wordpress/ui';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Internal dependencies
|
|
@@ -27,13 +28,13 @@ const POSITION_SUPPORT_KEY = 'position';
|
|
|
27
28
|
const DEFAULT_OPTION = {
|
|
28
29
|
key: 'default',
|
|
29
30
|
value: '',
|
|
30
|
-
|
|
31
|
+
label: __( 'Default' ),
|
|
31
32
|
};
|
|
32
33
|
|
|
33
34
|
const STICKY_OPTION = {
|
|
34
35
|
key: 'sticky',
|
|
35
36
|
value: 'sticky',
|
|
36
|
-
|
|
37
|
+
label: _x( 'Sticky', 'Name for the value of the CSS position property' ),
|
|
37
38
|
hint: __(
|
|
38
39
|
'The block will stick to the top of the window instead of scrolling.'
|
|
39
40
|
),
|
|
@@ -42,7 +43,7 @@ const STICKY_OPTION = {
|
|
|
42
43
|
const FIXED_OPTION = {
|
|
43
44
|
key: 'fixed',
|
|
44
45
|
value: 'fixed',
|
|
45
|
-
|
|
46
|
+
label: _x( 'Fixed', 'Name for the value of the CSS position property' ),
|
|
46
47
|
hint: __( 'The block will not move when the page is scrolled.' ),
|
|
47
48
|
};
|
|
48
49
|
|
|
@@ -262,28 +263,48 @@ export function PositionPanelPure( {
|
|
|
262
263
|
const selectedOption = value
|
|
263
264
|
? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION
|
|
264
265
|
: DEFAULT_OPTION;
|
|
266
|
+
const hintIdPrefix = useId();
|
|
265
267
|
|
|
266
268
|
// Only display position controls if there is at least one option to choose from.
|
|
267
269
|
return options.length > 1 ? (
|
|
268
270
|
<InspectorControls group="position">
|
|
269
|
-
<
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
271
|
+
<SelectControl
|
|
272
|
+
label={ __( 'Position' ) }
|
|
273
|
+
hideLabelFromVision
|
|
274
|
+
description={ stickyHelpText }
|
|
275
|
+
items={ options }
|
|
276
|
+
value={ selectedOption }
|
|
277
|
+
onValueChange={ ( selectedItem ) => {
|
|
278
|
+
onChangeType( selectedItem.value );
|
|
279
|
+
} }
|
|
280
|
+
>
|
|
281
|
+
{ options.map( ( option ) => {
|
|
282
|
+
const hintId = option.hint
|
|
283
|
+
? `${ hintIdPrefix }-${ option.key }`
|
|
284
|
+
: undefined;
|
|
285
|
+
|
|
286
|
+
return (
|
|
287
|
+
<SelectControl.Item
|
|
288
|
+
key={ option.key }
|
|
289
|
+
value={ option }
|
|
290
|
+
label={ option.label }
|
|
291
|
+
className="block-editor-hooks__position-control-item"
|
|
292
|
+
aria-describedby={ hintId }
|
|
293
|
+
>
|
|
294
|
+
<div>{ option.label }</div>
|
|
295
|
+
{ option.hint && (
|
|
296
|
+
<div
|
|
297
|
+
id={ hintId }
|
|
298
|
+
className="block-editor-hooks__position-control-item-hint"
|
|
299
|
+
aria-hidden="true"
|
|
300
|
+
>
|
|
301
|
+
{ option.hint }
|
|
302
|
+
</div>
|
|
303
|
+
) }
|
|
304
|
+
</SelectControl.Item>
|
|
305
|
+
);
|
|
306
|
+
} ) }
|
|
307
|
+
</SelectControl>
|
|
287
308
|
</InspectorControls>
|
|
288
309
|
) : null;
|
|
289
310
|
}
|
package/src/hooks/states.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
+
import { useMemo } from '@wordpress/element';
|
|
5
|
+
import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
|
|
4
6
|
import { __ } from '@wordpress/i18n';
|
|
5
7
|
|
|
6
8
|
/**
|
|
@@ -9,6 +11,10 @@ import { __ } from '@wordpress/i18n';
|
|
|
9
11
|
import StateControl from '../components/global-styles/state-control';
|
|
10
12
|
import StateControlBadges from '../components/global-styles/state-control-badges';
|
|
11
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 );
|
|
12
18
|
|
|
13
19
|
export const PSEUDO_STATE_LABELS = {
|
|
14
20
|
':hover': __( 'Hover' ),
|
|
@@ -22,18 +28,21 @@ export const RESPONSIVE_STATE_LABELS = {
|
|
|
22
28
|
'@mobile': __( 'Mobile' ),
|
|
23
29
|
};
|
|
24
30
|
|
|
25
|
-
// Viewport states are selected globally via the editor's device preview
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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 ] ) => ( {
|
|
32
42
|
value,
|
|
33
43
|
label,
|
|
34
|
-
} )
|
|
35
|
-
|
|
36
|
-
];
|
|
44
|
+
} ) );
|
|
45
|
+
}
|
|
37
46
|
|
|
38
47
|
// Keep in sync with WP_Theme_JSON_Gutenberg::VALID_BLOCK_PSEUDO_SELECTORS
|
|
39
48
|
// and packages/global-styles-engine/src/core/render.tsx.
|
|
@@ -54,6 +63,7 @@ function getPseudoStateOptions( name ) {
|
|
|
54
63
|
}
|
|
55
64
|
|
|
56
65
|
const DEFAULT_STATE_VALUE = 'default';
|
|
66
|
+
const EMPTY_STATE_OPTIONS = [];
|
|
57
67
|
|
|
58
68
|
/**
|
|
59
69
|
* Renders a pseudo-state selector in the block card header.
|
|
@@ -68,7 +78,10 @@ const DEFAULT_STATE_VALUE = 'default';
|
|
|
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 pseudoStateOptions =
|
|
81
|
+
const pseudoStateOptions = useMemo(
|
|
82
|
+
() => getPseudoStateOptions( name ),
|
|
83
|
+
[ name ]
|
|
84
|
+
);
|
|
72
85
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
73
86
|
|
|
74
87
|
if ( ! pseudoStateOptions.length ) {
|
|
@@ -96,7 +109,15 @@ export function BlockStatesControl( { name, value, onChange } ) {
|
|
|
96
109
|
* @return {Element|null} Badges component, or null if there is nothing to show.
|
|
97
110
|
*/
|
|
98
111
|
export function BlockStateBadges( { name, value, isResponsiveEditing } ) {
|
|
99
|
-
const pseudoStateOptions =
|
|
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
|
+
);
|
|
100
121
|
|
|
101
122
|
if ( ! pseudoStateOptions.length && ! isResponsiveEditing ) {
|
|
102
123
|
return null;
|
|
@@ -104,7 +125,9 @@ export function BlockStateBadges( { name, value, isResponsiveEditing } ) {
|
|
|
104
125
|
|
|
105
126
|
return (
|
|
106
127
|
<StateControlBadges
|
|
107
|
-
viewportStates={
|
|
128
|
+
viewportStates={
|
|
129
|
+
isResponsiveEditing ? deviceStateOptions : EMPTY_STATE_OPTIONS
|
|
130
|
+
}
|
|
108
131
|
pseudoStates={ pseudoStateOptions }
|
|
109
132
|
viewportValue={ value?.viewport ?? DEFAULT_STATE_VALUE }
|
|
110
133
|
pseudoStateValue={ value?.pseudo ?? DEFAULT_STATE_VALUE }
|