@wordpress/block-editor 14.5.0 → 14.7.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 +4 -0
- package/README.md +0 -8
- package/build/autocompleters/block.js +13 -5
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-canvas/index.js +10 -0
- package/build/components/block-canvas/index.js.map +1 -1
- package/build/components/block-card/index.js +2 -2
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-full-height-alignment-control/index.js +1 -1
- package/build/components/block-full-height-alignment-control/index.js.map +1 -1
- package/build/components/block-list/block.js +15 -29
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +1 -7
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.js +5 -5
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +1 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -3
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +1 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-patterns-list/index.js +23 -26
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +1 -1
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-popover/index.js +3 -46
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/async.js +51 -0
- package/build/components/block-preview/async.js.map +1 -0
- package/build/components/block-preview/index.js +6 -3
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu/index.js +4 -3
- package/build/components/block-settings-menu/index.js.map +1 -1
- package/build/components/block-toolbar/change-design.js +119 -0
- package/build/components/block-toolbar/change-design.js.map +1 -0
- package/build/components/block-toolbar/index.js +19 -7
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/index.js +16 -19
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +4 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +7 -10
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +20 -29
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +2 -2
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/block-vertical-alignment-control/ui.js +6 -10
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/border-radius-control/linked-button.js +7 -10
- package/build/components/border-radius-control/linked-button.js.map +1 -1
- package/build/components/collab/block-comment-icon-slot.js +18 -0
- package/build/components/collab/block-comment-icon-slot.js.map +1 -0
- package/build/components/collab/block-comment-icon-toolbar-slot.js +18 -0
- package/build/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +4 -4
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/global-styles/color-panel.js +1 -4
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +26 -14
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-context.native.js +6 -0
- package/build/components/global-styles/use-global-styles-context.native.js.map +1 -1
- package/build/components/iframe/get-compatibility-styles.js +4 -4
- package/build/components/iframe/get-compatibility-styles.js.map +1 -1
- package/build/components/iframe/index.js +33 -22
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-size-control/index.js +61 -20
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -5
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +1 -2
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +5 -3
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +3 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/utils.js +5 -1
- package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +15 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +0 -5
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build/components/inserter/menu.js +4 -2
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-results.js +0 -2
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter-button/index.native.js +1 -1
- package/build/components/inserter-button/index.native.js.map +1 -1
- package/build/components/inspector-controls-tabs/index.js +0 -2
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/inspector-controls-tabs/utils.js +3 -6
- package/build/components/inspector-controls-tabs/utils.js.map +1 -1
- package/build/components/link-control/link-preview.js +12 -9
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/list-view/appender.js +4 -3
- package/build/components/list-view/appender.js.map +1 -1
- package/build/components/list-view/branch.js +6 -5
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +1 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +4 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/provider/index.js +1 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/rich-text/event-listeners/index.js +3 -1
- package/build/components/rich-text/event-listeners/index.js.map +1 -1
- package/build/components/rich-text/index.js +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +2 -6
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +2 -2
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/spacing-sizes-control/linked-button.js +1 -5
- package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
- package/build/components/tabbed-sidebar/index.js +1 -1
- package/build/components/tabbed-sidebar/index.js.map +1 -1
- package/build/components/tool-selector/index.js +1 -4
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-input/index.js +4 -2
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-commands/index.js +6 -7
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +5 -5
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.native.js +0 -1
- package/build/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build/components/use-moving-animation/index.js +1 -3
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-settings/index.js +1 -3
- package/build/components/use-settings/index.js.map +1 -1
- package/build/components/writing-flow/index.js +5 -3
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +2 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/block-bindings.js +19 -8
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/contrast-checker.js +0 -1
- package/build/hooks/contrast-checker.js.map +1 -1
- package/build/hooks/duotone.js +2 -2
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-family.js +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/style.js +4 -1
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/supports.js +6 -6
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +5 -5
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-zoom-out.js +13 -22
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +2 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +0 -7
- package/build/index.js.map +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +6 -3
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +2 -33
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +1 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/private-actions.js +57 -8
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +10 -22
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +16 -6
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +53 -15
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +5 -4
- package/build/store/utils.js.map +1 -1
- package/build/utils/dom.js +37 -17
- package/build/utils/dom.js.map +1 -1
- package/build/utils/get-font-styles-and-weights.js +1 -1
- package/build/utils/get-font-styles-and-weights.js.map +1 -1
- package/build/utils/transform-styles/index.js +4 -3
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/autocompleters/block.js +14 -6
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-canvas/index.js +11 -1
- package/build-module/components/block-canvas/index.js.map +1 -1
- package/build-module/components/block-card/index.js +3 -3
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-full-height-alignment-control/index.js +1 -1
- package/build-module/components/block-full-height-alignment-control/index.js.map +1 -1
- package/build-module/components/block-list/block.js +16 -28
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +1 -7
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.js +5 -5
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -3
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +23 -26
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +1 -1
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-popover/index.js +4 -47
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/async.js +44 -0
- package/build-module/components/block-preview/async.js.map +1 -0
- package/build-module/components/block-preview/index.js +6 -3
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu/index.js +5 -4
- package/build-module/components/block-settings-menu/index.js.map +1 -1
- package/build-module/components/block-toolbar/change-design.js +111 -0
- package/build-module/components/block-toolbar/change-design.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +19 -7
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/index.js +17 -20
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +4 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -2
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +7 -10
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +20 -29
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +2 -2
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/ui.js +6 -10
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/border-radius-control/linked-button.js +8 -11
- package/build-module/components/border-radius-control/linked-button.js.map +1 -1
- package/build-module/components/collab/block-comment-icon-slot.js +11 -0
- package/build-module/components/collab/block-comment-icon-slot.js.map +1 -0
- package/build-module/components/collab/block-comment-icon-toolbar-slot.js +11 -0
- package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +4 -4
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +2 -5
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +26 -14
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-context.native.js +6 -0
- package/build-module/components/global-styles/use-global-styles-context.native.js.map +1 -1
- package/build-module/components/iframe/get-compatibility-styles.js +4 -4
- package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
- package/build-module/components/iframe/index.js +33 -22
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-size-control/index.js +62 -21
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -5
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +1 -2
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +6 -4
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +4 -1
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/utils.js +4 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +15 -2
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +1 -6
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build-module/components/inserter/menu.js +5 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-results.js +0 -2
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter-button/index.native.js +1 -1
- package/build-module/components/inserter-button/index.native.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/index.js +0 -2
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/utils.js +3 -6
- package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +13 -10
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/list-view/appender.js +4 -3
- package/build-module/components/list-view/appender.js.map +1 -1
- package/build-module/components/list-view/branch.js +7 -6
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +1 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +4 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/provider/index.js +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/index.js +4 -2
- package/build-module/components/rich-text/event-listeners/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +2 -6
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +3 -3
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/spacing-sizes-control/linked-button.js +2 -6
- package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
- package/build-module/components/tabbed-sidebar/index.js +1 -1
- package/build-module/components/tabbed-sidebar/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +1 -4
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +5 -5
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +5 -5
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.native.js +0 -1
- package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +1 -3
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +1 -3
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +5 -3
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +2 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/block-bindings.js +20 -9
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/contrast-checker.js +0 -1
- package/build-module/hooks/contrast-checker.js.map +1 -1
- package/build-module/hooks/duotone.js +2 -2
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-family.js +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/style.js +4 -1
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/supports.js +6 -6
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +5 -5
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +15 -23
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +2 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +7 -5
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +2 -33
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +1 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/private-actions.js +54 -7
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +10 -21
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +16 -6
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +54 -16
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +3 -3
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/dom.js +35 -16
- package/build-module/utils/dom.js.map +1 -1
- package/build-module/utils/get-font-styles-and-weights.js +2 -2
- package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +3 -2
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +16 -10
- package/build-style/content.css +16 -10
- package/build-style/style-rtl.css +47 -25
- package/build-style/style.css +47 -25
- package/build-types/utils/dom.d.ts +7 -9
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +34 -32
- package/src/autocompleters/block.js +16 -7
- package/src/components/block-canvas/index.js +17 -1
- package/src/components/block-canvas/style.scss +3 -1
- package/src/components/block-card/index.js +3 -3
- package/src/components/block-full-height-alignment-control/index.js +1 -1
- package/src/components/block-inspector/style.scss +2 -7
- package/src/components/block-list/block.js +29 -50
- package/src/components/block-list/block.native.js +0 -4
- package/src/components/block-list/content.scss +1 -1
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/use-block-props/index.js +0 -2
- package/src/components/block-list/use-block-props/use-focus-first-element.js +5 -3
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +7 -20
- package/src/components/block-list/use-in-between-inserter.js +1 -1
- package/src/components/block-patterns-list/README.md +8 -8
- package/src/components/block-patterns-list/index.js +35 -51
- package/src/components/block-patterns-list/stories/fixtures.js +834 -0
- package/src/components/block-patterns-list/stories/index.story.js +64 -0
- package/src/components/block-patterns-list/style.scss +2 -0
- package/src/components/block-patterns-paging/index.js +1 -1
- package/src/components/block-popover/index.js +4 -66
- package/src/components/block-preview/async.js +43 -0
- package/src/components/block-preview/index.js +8 -3
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-settings-menu/index.js +3 -0
- package/src/components/block-toolbar/change-design.js +127 -0
- package/src/components/block-toolbar/index.js +25 -8
- package/src/components/block-toolbar/style.scss +16 -0
- package/src/components/block-tools/index.js +30 -27
- package/src/components/block-tools/insertion-point.js +4 -3
- package/src/components/block-tools/style.scss +12 -20
- package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -2
- package/src/components/block-tools/use-show-block-tools.js +3 -14
- package/src/components/block-tools/zoom-out-mode-inserters.js +25 -40
- package/src/components/block-variation-transforms/index.js +2 -2
- package/src/components/block-vertical-alignment-control/ui.js +11 -15
- package/src/components/border-radius-control/linked-button.js +9 -11
- package/src/components/collab/block-comment-icon-slot.js +12 -0
- package/src/components/collab/block-comment-icon-toolbar-slot.js +12 -0
- package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
- package/src/components/convert-to-group-buttons/toolbar.js +4 -4
- package/src/components/default-block-appender/content.scss +13 -19
- package/src/components/global-styles/color-panel.js +2 -10
- package/src/components/global-styles/dimensions-panel.js +22 -16
- package/src/components/global-styles/test/use-global-styles-context.native.js +1 -0
- package/src/components/global-styles/use-global-styles-context.native.js +6 -0
- package/src/components/iframe/content.scss +4 -9
- package/src/components/iframe/get-compatibility-styles.js +4 -9
- package/src/components/iframe/index.js +48 -34
- package/src/components/iframe/style.scss +2 -3
- package/src/components/image-size-control/index.js +74 -43
- package/src/components/image-size-control/test/index.js +5 -63
- package/src/components/inner-blocks/index.js +12 -6
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +3 -6
- package/src/components/inserter/block-patterns-tab/index.js +0 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -4
- package/src/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +8 -0
- package/src/components/inserter/block-patterns-tab/utils.js +5 -0
- package/src/components/inserter/category-tabs/index.js +16 -2
- package/src/components/inserter/hooks/use-block-types-state.js +6 -1
- package/src/components/inserter/hooks/use-patterns-paging.js +1 -6
- package/src/components/inserter/menu.js +6 -4
- package/src/components/inserter/search-results.js +0 -6
- package/src/components/inserter/style.scss +13 -0
- package/src/components/inserter-button/index.native.js +1 -1
- package/src/components/inspector-controls-tabs/index.js +1 -6
- package/src/components/inspector-controls-tabs/utils.js +0 -3
- package/src/components/link-control/link-preview.js +15 -8
- package/src/components/link-control/test/index.js +63 -24
- package/src/components/list-view/appender.js +5 -6
- package/src/components/list-view/branch.js +8 -6
- package/src/components/list-view/index.js +1 -2
- package/src/components/media-placeholder/index.js +4 -4
- package/src/components/provider/index.js +1 -3
- package/src/components/provider/test/experimental-provider.js +43 -1
- package/src/components/rich-text/event-listeners/index.js +4 -2
- package/src/components/rich-text/index.js +8 -1
- package/src/components/rich-text/index.native.js +0 -2
- package/src/components/spacing-sizes-control/index.js +3 -3
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
- package/src/components/spacing-sizes-control/linked-button.js +2 -12
- package/src/components/tabbed-sidebar/index.js +1 -1
- package/src/components/tabbed-sidebar/style.scss +1 -1
- package/src/components/tool-selector/index.js +1 -5
- package/src/components/url-input/index.js +4 -5
- package/src/components/use-block-commands/index.js +245 -234
- package/src/components/use-block-drop-zone/index.js +5 -5
- package/src/components/use-block-drop-zone/index.native.js +0 -1
- package/src/components/use-moving-animation/index.js +0 -1
- package/src/components/use-settings/index.js +0 -1
- package/src/components/writing-flow/index.js +5 -3
- package/src/components/writing-flow/use-tab-nav.js +1 -2
- package/src/hooks/block-bindings.js +48 -31
- package/src/hooks/contrast-checker.js +0 -1
- package/src/hooks/duotone.js +2 -2
- package/src/hooks/font-family.js +1 -1
- package/src/hooks/style.js +7 -3
- package/src/hooks/supports.js +6 -6
- package/src/hooks/typography.js +5 -5
- package/src/hooks/use-zoom-out.js +14 -34
- package/src/hooks/utils.js +7 -2
- package/src/index.js +0 -1
- package/src/private-apis.js +6 -3
- package/src/store/actions.js +3 -52
- package/src/store/defaults.js +2 -1
- package/src/store/private-actions.js +71 -8
- package/src/store/private-selectors.js +14 -25
- package/src/store/reducer.js +25 -11
- package/src/store/selectors.js +116 -53
- package/src/store/test/actions.js +41 -0
- package/src/store/test/private-selectors.js +5 -0
- package/src/store/test/reducer.js +23 -0
- package/src/store/utils.js +12 -11
- package/src/utils/dom.js +42 -17
- package/src/utils/get-font-styles-and-weights.js +2 -2
- package/src/utils/test/dom.js +224 -0
- package/src/utils/transform-styles/index.js +3 -2
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -57
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
- package/build/components/block-toolbar/shuffle.js +0 -110
- package/build/components/block-toolbar/shuffle.js.map +0 -1
- package/build/components/block-tools/zoom-out-popover.js +0 -58
- package/build/components/block-tools/zoom-out-popover.js.map +0 -1
- package/build/components/block-tools/zoom-out-toolbar.js +0 -132
- package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
- package/build/components/block-vertical-alignment-control/icons.js +0 -48
- package/build/components/block-vertical-alignment-control/icons.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -51
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
- package/build-module/components/block-toolbar/shuffle.js +0 -103
- package/build-module/components/block-toolbar/shuffle.js.map +0 -1
- package/build-module/components/block-tools/zoom-out-popover.js +0 -49
- package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +0 -124
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
- package/build-module/components/block-vertical-alignment-control/icons.js +0 -41
- package/build-module/components/block-vertical-alignment-control/icons.js.map +0 -1
- package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -65
- package/src/components/block-toolbar/shuffle.js +0 -111
- package/src/components/block-tools/zoom-out-popover.js +0 -47
- package/src/components/block-tools/zoom-out-toolbar.js +0 -135
- package/src/components/block-vertical-alignment-control/icons.js +0 -34
- /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import blockLibraryStyles from '!!raw-loader!../../../../../block-library/build-style/style.css';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import BlockPatternsList from '../';
|
|
10
|
+
import { ExperimentalBlockEditorProvider } from '../../provider';
|
|
11
|
+
import patterns from './fixtures';
|
|
12
|
+
|
|
13
|
+
const blockEditorSettings = {
|
|
14
|
+
styles: [ { css: blockLibraryStyles } ],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
component: BlockPatternsList,
|
|
19
|
+
title: 'BlockEditor/BlockPatternsList',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const Default = {
|
|
23
|
+
render: function Template( props ) {
|
|
24
|
+
return (
|
|
25
|
+
<ExperimentalBlockEditorProvider settings={ blockEditorSettings }>
|
|
26
|
+
<BlockPatternsList { ...props } />
|
|
27
|
+
</ExperimentalBlockEditorProvider>
|
|
28
|
+
);
|
|
29
|
+
},
|
|
30
|
+
args: {
|
|
31
|
+
blockPatterns: patterns,
|
|
32
|
+
isDraggable: false,
|
|
33
|
+
label: 'Block patterns story',
|
|
34
|
+
showTitlesAsTooltip: false,
|
|
35
|
+
},
|
|
36
|
+
argTypes: {
|
|
37
|
+
blockPatterns: { description: 'The patterns to render.' },
|
|
38
|
+
shownPatterns: {
|
|
39
|
+
description:
|
|
40
|
+
'Usually this component is used with `useAsyncList` for performance reasons and you should provide the returned list from that hook. Alternatively it should have the same value with `blockPatterns`.',
|
|
41
|
+
},
|
|
42
|
+
onClickPattern: { type: 'function' },
|
|
43
|
+
onHover: { type: 'function' },
|
|
44
|
+
showTitlesAsTooltip: {
|
|
45
|
+
description:
|
|
46
|
+
'Whether to render the title of each pattern as a tooltip. If enabled',
|
|
47
|
+
},
|
|
48
|
+
orientation: {
|
|
49
|
+
description: 'Orientation for the underlying composite widget.',
|
|
50
|
+
table: {
|
|
51
|
+
defaultValue: { summary: 'both' },
|
|
52
|
+
type: { summary: 'string' },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
category: { description: 'The currently selected pattern category.' },
|
|
56
|
+
isDraggable: {
|
|
57
|
+
description: 'Whether the pattern list item should be draggable.',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
parameters: {
|
|
61
|
+
actions: { argTypesRegex: '^on.*' },
|
|
62
|
+
controls: { expanded: true },
|
|
63
|
+
},
|
|
64
|
+
};
|
|
@@ -62,7 +62,7 @@ export default function Pagination( {
|
|
|
62
62
|
</HStack>
|
|
63
63
|
<Text variant="muted">
|
|
64
64
|
{ sprintf(
|
|
65
|
-
// translators:
|
|
65
|
+
// translators: 1: Current page number. 2: Total number of pages.
|
|
66
66
|
_x( '%1$s of %2$s', 'paging' ),
|
|
67
67
|
currentPage,
|
|
68
68
|
numPages
|
|
@@ -8,7 +8,6 @@ import clsx from 'clsx';
|
|
|
8
8
|
*/
|
|
9
9
|
import { useMergeRefs } from '@wordpress/compose';
|
|
10
10
|
import { Popover } from '@wordpress/components';
|
|
11
|
-
import { useSelect } from '@wordpress/data';
|
|
12
11
|
import {
|
|
13
12
|
forwardRef,
|
|
14
13
|
useMemo,
|
|
@@ -21,9 +20,7 @@ import {
|
|
|
21
20
|
*/
|
|
22
21
|
import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
23
22
|
import usePopoverScroll from './use-popover-scroll';
|
|
24
|
-
import { rectUnion,
|
|
25
|
-
import { store as blockEditorStore } from '../../store';
|
|
26
|
-
import { unlock } from '../../lock-unlock';
|
|
23
|
+
import { rectUnion, getElementBounds } from '../../utils/dom';
|
|
27
24
|
|
|
28
25
|
const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
|
|
29
26
|
|
|
@@ -77,38 +74,12 @@ function BlockPopover(
|
|
|
77
74
|
};
|
|
78
75
|
}, [ selectedElement ] );
|
|
79
76
|
|
|
80
|
-
const { isZoomOut, parentSectionBlock, isSectionSelected } = useSelect(
|
|
81
|
-
( select ) => {
|
|
82
|
-
const {
|
|
83
|
-
isZoomOut: isZoomOutSelector,
|
|
84
|
-
getSectionRootClientId,
|
|
85
|
-
getParentSectionBlock,
|
|
86
|
-
getBlockOrder,
|
|
87
|
-
} = unlock( select( blockEditorStore ) );
|
|
88
|
-
|
|
89
|
-
return {
|
|
90
|
-
isZoomOut: isZoomOutSelector(),
|
|
91
|
-
parentSectionBlock:
|
|
92
|
-
getParentSectionBlock( clientId ) ?? clientId,
|
|
93
|
-
isSectionSelected: getBlockOrder(
|
|
94
|
-
getSectionRootClientId()
|
|
95
|
-
).includes( clientId ),
|
|
96
|
-
};
|
|
97
|
-
},
|
|
98
|
-
[ clientId ]
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
// This element is used to position the zoom out view vertical toolbar
|
|
102
|
-
// correctly, relative to the selected section.
|
|
103
|
-
const parentSectionElement = useBlockElement( parentSectionBlock );
|
|
104
|
-
|
|
105
77
|
const popoverAnchor = useMemo( () => {
|
|
106
78
|
if (
|
|
107
79
|
// popoverDimensionsRecomputeCounter is by definition always equal or greater
|
|
108
80
|
// than 0. This check is only there to satisfy the correctness of the
|
|
109
81
|
// exhaustive-deps rule for the `useMemo` hook.
|
|
110
82
|
popoverDimensionsRecomputeCounter < 0 ||
|
|
111
|
-
( isZoomOut && ! parentSectionElement ) ||
|
|
112
83
|
! selectedElement ||
|
|
113
84
|
( bottomClientId && ! lastSelectedElement )
|
|
114
85
|
) {
|
|
@@ -117,53 +88,20 @@ function BlockPopover(
|
|
|
117
88
|
|
|
118
89
|
return {
|
|
119
90
|
getBoundingClientRect() {
|
|
120
|
-
// The zoom out view has a vertical block toolbar that should always
|
|
121
|
-
// be on the edge of the canvas, aligned to the top of the currently
|
|
122
|
-
// selected section. This condition changes the anchor of the toolbar
|
|
123
|
-
// to the section instead of the block to handle blocks that are
|
|
124
|
-
// not full width and nested blocks to keep section height.
|
|
125
|
-
if ( isZoomOut && isSectionSelected ) {
|
|
126
|
-
// Compute the height based on the parent section of the
|
|
127
|
-
// selected block, because the selected block may be
|
|
128
|
-
// shorter than the section.
|
|
129
|
-
const canvasElementRect = getVisibleElementBounds(
|
|
130
|
-
__unstableContentRef.current
|
|
131
|
-
);
|
|
132
|
-
const parentSectionElementRect =
|
|
133
|
-
getVisibleElementBounds( parentSectionElement );
|
|
134
|
-
const anchorHeight =
|
|
135
|
-
parentSectionElementRect.bottom -
|
|
136
|
-
parentSectionElementRect.top;
|
|
137
|
-
|
|
138
|
-
// Always use the width of the section root element to make sure
|
|
139
|
-
// the toolbar is always on the edge of the canvas.
|
|
140
|
-
const anchorWidth = canvasElementRect.width;
|
|
141
|
-
return new window.DOMRectReadOnly(
|
|
142
|
-
canvasElementRect.left,
|
|
143
|
-
parentSectionElementRect.top,
|
|
144
|
-
anchorWidth,
|
|
145
|
-
anchorHeight
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
91
|
return lastSelectedElement
|
|
150
92
|
? rectUnion(
|
|
151
|
-
|
|
152
|
-
|
|
93
|
+
getElementBounds( selectedElement ),
|
|
94
|
+
getElementBounds( lastSelectedElement )
|
|
153
95
|
)
|
|
154
|
-
:
|
|
96
|
+
: getElementBounds( selectedElement );
|
|
155
97
|
},
|
|
156
98
|
contextElement: selectedElement,
|
|
157
99
|
};
|
|
158
100
|
}, [
|
|
159
101
|
popoverDimensionsRecomputeCounter,
|
|
160
|
-
isZoomOut,
|
|
161
|
-
parentSectionElement,
|
|
162
102
|
selectedElement,
|
|
163
103
|
bottomClientId,
|
|
164
104
|
lastSelectedElement,
|
|
165
|
-
isSectionSelected,
|
|
166
|
-
__unstableContentRef,
|
|
167
105
|
] );
|
|
168
106
|
|
|
169
107
|
if ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useEffect, useState, flushSync } from '@wordpress/element';
|
|
5
|
+
import { createQueue } from '@wordpress/priority-queue';
|
|
6
|
+
|
|
7
|
+
const blockPreviewQueue = createQueue();
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Renders a component at the next idle time.
|
|
11
|
+
* @param {*} props
|
|
12
|
+
*/
|
|
13
|
+
export function Async( { children, placeholder } ) {
|
|
14
|
+
const [ shouldRender, setShouldRender ] = useState( false );
|
|
15
|
+
|
|
16
|
+
// In the future, we could try to use startTransition here, but currently
|
|
17
|
+
// react will batch all transitions, which means all previews will be
|
|
18
|
+
// rendered at the same time.
|
|
19
|
+
// https://react.dev/reference/react/startTransition#caveats
|
|
20
|
+
// > If there are multiple ongoing Transitions, React currently batches them
|
|
21
|
+
// > together. This is a limitation that will likely be removed in a future
|
|
22
|
+
// > release.
|
|
23
|
+
|
|
24
|
+
useEffect( () => {
|
|
25
|
+
const context = {};
|
|
26
|
+
blockPreviewQueue.add( context, () => {
|
|
27
|
+
// Synchronously run all renders so it consumes timeRemaining.
|
|
28
|
+
// See https://github.com/WordPress/gutenberg/pull/48238
|
|
29
|
+
flushSync( () => {
|
|
30
|
+
setShouldRender( true );
|
|
31
|
+
} );
|
|
32
|
+
} );
|
|
33
|
+
return () => {
|
|
34
|
+
blockPreviewQueue.cancel( context );
|
|
35
|
+
};
|
|
36
|
+
}, [] );
|
|
37
|
+
|
|
38
|
+
if ( ! shouldRender ) {
|
|
39
|
+
return placeholder;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return children;
|
|
43
|
+
}
|
|
@@ -19,6 +19,7 @@ import AutoHeightBlockPreview from './auto';
|
|
|
19
19
|
import EditorStyles from '../editor-styles';
|
|
20
20
|
import { store as blockEditorStore } from '../../store';
|
|
21
21
|
import { BlockListItems } from '../block-list';
|
|
22
|
+
import { Async } from './async';
|
|
22
23
|
|
|
23
24
|
const EMPTY_ADDITIONAL_STYLES = [];
|
|
24
25
|
|
|
@@ -59,7 +60,7 @@ export function BlockPreview( {
|
|
|
59
60
|
() => ( {
|
|
60
61
|
...originalSettings,
|
|
61
62
|
focusMode: false, // Disable "Spotlight mode".
|
|
62
|
-
|
|
63
|
+
isPreviewMode: true,
|
|
63
64
|
} ),
|
|
64
65
|
[ originalSettings ]
|
|
65
66
|
);
|
|
@@ -86,6 +87,10 @@ export function BlockPreview( {
|
|
|
86
87
|
);
|
|
87
88
|
}
|
|
88
89
|
|
|
90
|
+
const MemoizedBlockPreview = memo( BlockPreview );
|
|
91
|
+
|
|
92
|
+
MemoizedBlockPreview.Async = Async;
|
|
93
|
+
|
|
89
94
|
/**
|
|
90
95
|
* BlockPreview renders a preview of a block or array of blocks.
|
|
91
96
|
*
|
|
@@ -97,7 +102,7 @@ export function BlockPreview( {
|
|
|
97
102
|
*
|
|
98
103
|
* @return {Component} The component to be rendered.
|
|
99
104
|
*/
|
|
100
|
-
export default
|
|
105
|
+
export default MemoizedBlockPreview;
|
|
101
106
|
|
|
102
107
|
/**
|
|
103
108
|
* This hook is used to lightly mark an element as a block preview wrapper
|
|
@@ -124,7 +129,7 @@ export function useBlockPreview( { blocks, props = {}, layout } ) {
|
|
|
124
129
|
...originalSettings,
|
|
125
130
|
styles: undefined, // Clear styles included by the parent settings, as they are already output by the parent's EditorStyles.
|
|
126
131
|
focusMode: false, // Disable "Spotlight mode".
|
|
127
|
-
|
|
132
|
+
isPreviewMode: true,
|
|
128
133
|
} ),
|
|
129
134
|
[ originalSettings ]
|
|
130
135
|
);
|
|
@@ -19,6 +19,7 @@ import { pipe, useCopyToClipboard } from '@wordpress/compose';
|
|
|
19
19
|
* Internal dependencies
|
|
20
20
|
*/
|
|
21
21
|
import BlockActions from '../block-actions';
|
|
22
|
+
import __unstableCommentIconFill from '../../components/collab/block-comment-icon-slot';
|
|
22
23
|
import BlockHTMLConvertButton from './block-html-convert-button';
|
|
23
24
|
import __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';
|
|
24
25
|
import BlockSettingsMenuControls from '../block-settings-menu-controls';
|
|
@@ -294,6 +295,9 @@ export function BlockSettingsDropdown( {
|
|
|
294
295
|
</MenuItem>
|
|
295
296
|
</>
|
|
296
297
|
) }
|
|
298
|
+
<__unstableCommentIconFill.Slot
|
|
299
|
+
fillProps={ { onClose } }
|
|
300
|
+
/>
|
|
297
301
|
</MenuGroup>
|
|
298
302
|
{ canCopyStyles && ! isContentOnly && (
|
|
299
303
|
<MenuGroup>
|
|
@@ -7,10 +7,13 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
|
|
|
7
7
|
* Internal dependencies
|
|
8
8
|
*/
|
|
9
9
|
import BlockSettingsDropdown from './block-settings-dropdown';
|
|
10
|
+
import __unstableCommentIconToolbarFill from '../../components/collab/block-comment-icon-toolbar-slot';
|
|
10
11
|
|
|
11
12
|
export function BlockSettingsMenu( { clientIds, ...props } ) {
|
|
12
13
|
return (
|
|
13
14
|
<ToolbarGroup>
|
|
15
|
+
<__unstableCommentIconToolbarFill.Slot />
|
|
16
|
+
|
|
14
17
|
<ToolbarItem>
|
|
15
18
|
{ ( toggleProps ) => (
|
|
16
19
|
<BlockSettingsDropdown
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
ToolbarButton,
|
|
6
|
+
ToolbarGroup,
|
|
7
|
+
Dropdown,
|
|
8
|
+
__experimentalDropdownContentWrapper as DropdownContentWrapper,
|
|
9
|
+
} from '@wordpress/components';
|
|
10
|
+
import { __ } from '@wordpress/i18n';
|
|
11
|
+
import { cloneBlock } from '@wordpress/blocks';
|
|
12
|
+
import { useMemo } from '@wordpress/element';
|
|
13
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Internal dependencies
|
|
17
|
+
*/
|
|
18
|
+
import { store as blockEditorStore } from '../../store';
|
|
19
|
+
import BlockPatternsList from '../block-patterns-list';
|
|
20
|
+
|
|
21
|
+
const EMPTY_ARRAY = [];
|
|
22
|
+
const MAX_PATTERNS_TO_SHOW = 6;
|
|
23
|
+
const POPOVER_PROPS = {
|
|
24
|
+
placement: 'bottom-start',
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default function ChangeDesign( { clientId } ) {
|
|
28
|
+
const { categories, currentPatternName, patterns } = useSelect(
|
|
29
|
+
( select ) => {
|
|
30
|
+
const {
|
|
31
|
+
getBlockAttributes,
|
|
32
|
+
getBlockRootClientId,
|
|
33
|
+
__experimentalGetAllowedPatterns,
|
|
34
|
+
} = select( blockEditorStore );
|
|
35
|
+
const attributes = getBlockAttributes( clientId );
|
|
36
|
+
const _categories = attributes?.metadata?.categories || EMPTY_ARRAY;
|
|
37
|
+
const rootBlock = getBlockRootClientId( clientId );
|
|
38
|
+
|
|
39
|
+
// Calling `__experimentalGetAllowedPatterns` is expensive.
|
|
40
|
+
// Checking if the block can be changed prevents unnecessary selector calls.
|
|
41
|
+
// See: https://github.com/WordPress/gutenberg/pull/64736.
|
|
42
|
+
const _patterns =
|
|
43
|
+
_categories.length > 0
|
|
44
|
+
? __experimentalGetAllowedPatterns( rootBlock )
|
|
45
|
+
: EMPTY_ARRAY;
|
|
46
|
+
return {
|
|
47
|
+
categories: _categories,
|
|
48
|
+
currentPatternName: attributes?.metadata?.patternName,
|
|
49
|
+
patterns: _patterns,
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
[ clientId ]
|
|
53
|
+
);
|
|
54
|
+
const { replaceBlocks } = useDispatch( blockEditorStore );
|
|
55
|
+
const sameCategoryPatternsWithSingleWrapper = useMemo( () => {
|
|
56
|
+
if ( categories.length === 0 || ! patterns || patterns.length === 0 ) {
|
|
57
|
+
return EMPTY_ARRAY;
|
|
58
|
+
}
|
|
59
|
+
return patterns
|
|
60
|
+
.filter( ( pattern ) => {
|
|
61
|
+
const isCorePattern =
|
|
62
|
+
pattern.source === 'core' ||
|
|
63
|
+
( pattern.source?.startsWith( 'pattern-directory' ) &&
|
|
64
|
+
pattern.source !== 'pattern-directory/theme' );
|
|
65
|
+
return (
|
|
66
|
+
// Check if the pattern has only one top level block,
|
|
67
|
+
// otherwise we may switch to a pattern that doesn't have replacement suggestions.
|
|
68
|
+
pattern.blocks.length === 1 &&
|
|
69
|
+
// We exclude the core patterns and pattern directory patterns that are not theme patterns.
|
|
70
|
+
! isCorePattern &&
|
|
71
|
+
// Exclude current pattern.
|
|
72
|
+
currentPatternName !== pattern.name &&
|
|
73
|
+
pattern.categories?.some( ( category ) => {
|
|
74
|
+
return categories.includes( category );
|
|
75
|
+
} ) &&
|
|
76
|
+
// Check if the pattern is not a synced pattern.
|
|
77
|
+
( pattern.syncStatus === 'unsynced' || ! pattern.id )
|
|
78
|
+
);
|
|
79
|
+
} )
|
|
80
|
+
.slice( 0, MAX_PATTERNS_TO_SHOW );
|
|
81
|
+
}, [ categories, currentPatternName, patterns ] );
|
|
82
|
+
|
|
83
|
+
if ( sameCategoryPatternsWithSingleWrapper.length < 2 ) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const onClickPattern = ( pattern ) => {
|
|
88
|
+
const newBlocks = ( pattern.blocks ?? [] ).map( ( block ) => {
|
|
89
|
+
return cloneBlock( block );
|
|
90
|
+
} );
|
|
91
|
+
newBlocks[ 0 ].attributes.metadata = {
|
|
92
|
+
...newBlocks[ 0 ].attributes.metadata,
|
|
93
|
+
categories,
|
|
94
|
+
};
|
|
95
|
+
replaceBlocks( clientId, newBlocks );
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
return (
|
|
99
|
+
<Dropdown
|
|
100
|
+
popoverProps={ POPOVER_PROPS }
|
|
101
|
+
renderToggle={ ( { onToggle, isOpen } ) => {
|
|
102
|
+
return (
|
|
103
|
+
<ToolbarGroup>
|
|
104
|
+
<ToolbarButton
|
|
105
|
+
onClick={ () => onToggle( ! isOpen ) }
|
|
106
|
+
aria-expanded={ isOpen }
|
|
107
|
+
>
|
|
108
|
+
{ __( 'Change design' ) }
|
|
109
|
+
</ToolbarButton>
|
|
110
|
+
</ToolbarGroup>
|
|
111
|
+
);
|
|
112
|
+
} }
|
|
113
|
+
renderContent={ () => (
|
|
114
|
+
<DropdownContentWrapper
|
|
115
|
+
className="block-editor-block-toolbar-change-design-content-wrapper"
|
|
116
|
+
paddingSize="none"
|
|
117
|
+
>
|
|
118
|
+
<BlockPatternsList
|
|
119
|
+
blockPatterns={ sameCategoryPatternsWithSingleWrapper }
|
|
120
|
+
onClickPattern={ onClickPattern }
|
|
121
|
+
showTitlesAsTooltip
|
|
122
|
+
/>
|
|
123
|
+
</DropdownContentWrapper>
|
|
124
|
+
) }
|
|
125
|
+
/>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
@@ -35,6 +35,7 @@ import { store as blockEditorStore } from '../../store';
|
|
|
35
35
|
import __unstableBlockNameContext from './block-name-context';
|
|
36
36
|
import NavigableToolbar from '../navigable-toolbar';
|
|
37
37
|
import { useHasBlockToolbar } from './use-has-block-toolbar';
|
|
38
|
+
import ChangeDesign from './change-design';
|
|
38
39
|
import { unlock } from '../../lock-unlock';
|
|
39
40
|
|
|
40
41
|
/**
|
|
@@ -67,6 +68,10 @@ export function PrivateBlockToolbar( {
|
|
|
67
68
|
isUsingBindings,
|
|
68
69
|
hasParentPattern,
|
|
69
70
|
hasContentOnlyLocking,
|
|
71
|
+
showShuffleButton,
|
|
72
|
+
showSlots,
|
|
73
|
+
showGroupButtons,
|
|
74
|
+
showLockButtons,
|
|
70
75
|
} = useSelect( ( select ) => {
|
|
71
76
|
const {
|
|
72
77
|
getBlockName,
|
|
@@ -79,6 +84,7 @@ export function PrivateBlockToolbar( {
|
|
|
79
84
|
getBlockParentsByBlockName,
|
|
80
85
|
getTemplateLock,
|
|
81
86
|
getParentSectionBlock,
|
|
87
|
+
isZoomOut,
|
|
82
88
|
} = unlock( select( blockEditorStore ) );
|
|
83
89
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
84
90
|
const selectedBlockClientId = selectedBlockClientIds[ 0 ];
|
|
@@ -119,6 +125,7 @@ export function PrivateBlockToolbar( {
|
|
|
119
125
|
shouldShowVisualToolbar: isValid && isVisual,
|
|
120
126
|
toolbarKey: `${ selectedBlockClientId }${ parentClientId }`,
|
|
121
127
|
showParentSelector:
|
|
128
|
+
! isZoomOut() &&
|
|
122
129
|
parentBlockType &&
|
|
123
130
|
getBlockEditingMode( parentClientId ) !== 'disabled' &&
|
|
124
131
|
hasBlockSupport(
|
|
@@ -130,6 +137,10 @@ export function PrivateBlockToolbar( {
|
|
|
130
137
|
isUsingBindings: _isUsingBindings,
|
|
131
138
|
hasParentPattern: _hasParentPattern,
|
|
132
139
|
hasContentOnlyLocking: _hasTemplateLock,
|
|
140
|
+
showShuffleButton: isZoomOut(),
|
|
141
|
+
showSlots: ! isZoomOut(),
|
|
142
|
+
showGroupButtons: ! isZoomOut(),
|
|
143
|
+
showLockButtons: ! isZoomOut(),
|
|
133
144
|
};
|
|
134
145
|
}, [] );
|
|
135
146
|
|
|
@@ -179,7 +190,7 @@ export function PrivateBlockToolbar( {
|
|
|
179
190
|
key={ toolbarKey }
|
|
180
191
|
>
|
|
181
192
|
<div ref={ toolbarWrapperRef } className={ innerClasses }>
|
|
182
|
-
{ ! isMultiToolbar && isLargeViewport && (
|
|
193
|
+
{ showParentSelector && ! isMultiToolbar && isLargeViewport && (
|
|
183
194
|
<BlockParentSelector />
|
|
184
195
|
) }
|
|
185
196
|
{ ( shouldShowVisualToolbar || isMultiToolbar ) &&
|
|
@@ -190,11 +201,13 @@ export function PrivateBlockToolbar( {
|
|
|
190
201
|
>
|
|
191
202
|
<ToolbarGroup className="block-editor-block-toolbar__block-controls">
|
|
192
203
|
<BlockSwitcher clientIds={ blockClientIds } />
|
|
193
|
-
{ ! isMultiToolbar &&
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
204
|
+
{ ! isMultiToolbar &&
|
|
205
|
+
isDefaultEditingMode &&
|
|
206
|
+
showLockButtons && (
|
|
207
|
+
<BlockLockToolbar
|
|
208
|
+
clientId={ blockClientId }
|
|
209
|
+
/>
|
|
210
|
+
) }
|
|
198
211
|
<BlockMover
|
|
199
212
|
clientIds={ blockClientIds }
|
|
200
213
|
hideDragHandle={ hideDragHandle }
|
|
@@ -204,8 +217,12 @@ export function PrivateBlockToolbar( {
|
|
|
204
217
|
) }
|
|
205
218
|
{ ! hasContentOnlyLocking &&
|
|
206
219
|
shouldShowVisualToolbar &&
|
|
207
|
-
isMultiToolbar &&
|
|
208
|
-
|
|
220
|
+
isMultiToolbar &&
|
|
221
|
+
showGroupButtons && <BlockGroupToolbar /> }
|
|
222
|
+
{ showShuffleButton && (
|
|
223
|
+
<ChangeDesign clientId={ blockClientIds[ 0 ] } />
|
|
224
|
+
) }
|
|
225
|
+
{ shouldShowVisualToolbar && showSlots && (
|
|
209
226
|
<>
|
|
210
227
|
<BlockControls.Slot
|
|
211
228
|
group="parent"
|
|
@@ -285,3 +285,19 @@
|
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
|
+
|
|
289
|
+
.block-editor-block-toolbar-change-design-content-wrapper {
|
|
290
|
+
padding: $grid-unit-15;
|
|
291
|
+
width: 320px;
|
|
292
|
+
.block-editor-block-patterns-list {
|
|
293
|
+
display: grid;
|
|
294
|
+
grid-template-columns: 1fr 1fr;
|
|
295
|
+
grid-gap: $grid-unit-15;
|
|
296
|
+
.block-editor-block-patterns-list__list-item {
|
|
297
|
+
margin-bottom: 0;
|
|
298
|
+
}
|
|
299
|
+
.block-editor-inserter__media-list__list-item {
|
|
300
|
+
min-height: 100px;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
@@ -8,7 +8,7 @@ import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordp
|
|
|
8
8
|
import { useRef } from '@wordpress/element';
|
|
9
9
|
import { switchToBlockType, store as blocksStore } from '@wordpress/blocks';
|
|
10
10
|
import { speak } from '@wordpress/a11y';
|
|
11
|
-
import { __ } from '@wordpress/i18n';
|
|
11
|
+
import { __, sprintf, _n } from '@wordpress/i18n';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
default as InsertionPoint,
|
|
20
20
|
} from './insertion-point';
|
|
21
21
|
import BlockToolbarPopover from './block-toolbar-popover';
|
|
22
|
-
import ZoomOutPopover from './zoom-out-popover';
|
|
23
22
|
import { store as blockEditorStore } from '../../store';
|
|
24
23
|
import usePopoverScroll from '../block-popover/use-popover-scroll';
|
|
25
24
|
import ZoomOutModeInserters from './zoom-out-mode-inserters';
|
|
@@ -31,21 +30,19 @@ function selector( select ) {
|
|
|
31
30
|
getSelectedBlockClientId,
|
|
32
31
|
getFirstMultiSelectedBlockClientId,
|
|
33
32
|
getSettings,
|
|
34
|
-
__unstableGetEditorMode,
|
|
35
33
|
isTyping,
|
|
36
34
|
isDragging,
|
|
35
|
+
isZoomOut,
|
|
37
36
|
} = unlock( select( blockEditorStore ) );
|
|
38
37
|
|
|
39
38
|
const clientId =
|
|
40
39
|
getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();
|
|
41
40
|
|
|
42
|
-
const editorMode = __unstableGetEditorMode();
|
|
43
|
-
|
|
44
41
|
return {
|
|
45
42
|
clientId,
|
|
46
43
|
hasFixedToolbar: getSettings().hasFixedToolbar,
|
|
47
44
|
isTyping: isTyping(),
|
|
48
|
-
isZoomOutMode:
|
|
45
|
+
isZoomOutMode: isZoomOut(),
|
|
49
46
|
isDragging: isDragging(),
|
|
50
47
|
};
|
|
51
48
|
}
|
|
@@ -75,11 +72,8 @@ export default function BlockTools( {
|
|
|
75
72
|
isGroupable,
|
|
76
73
|
} = useSelect( blockEditorStore );
|
|
77
74
|
const { getGroupingBlockName } = useSelect( blocksStore );
|
|
78
|
-
const {
|
|
79
|
-
|
|
80
|
-
showBlockToolbarPopover,
|
|
81
|
-
showZoomOutToolbar,
|
|
82
|
-
} = useShowBlockTools();
|
|
75
|
+
const { showEmptyBlockSideInserter, showBlockToolbarPopover } =
|
|
76
|
+
useShowBlockTools();
|
|
83
77
|
|
|
84
78
|
const {
|
|
85
79
|
duplicateBlocks,
|
|
@@ -98,19 +92,35 @@ export default function BlockTools( {
|
|
|
98
92
|
return;
|
|
99
93
|
}
|
|
100
94
|
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
106
|
-
moveBlocksUp( clientIds, rootClientId );
|
|
107
|
-
}
|
|
108
|
-
} else if ( isMatch( 'core/block-editor/move-down', event ) ) {
|
|
95
|
+
if (
|
|
96
|
+
isMatch( 'core/block-editor/move-up', event ) ||
|
|
97
|
+
isMatch( 'core/block-editor/move-down', event )
|
|
98
|
+
) {
|
|
109
99
|
const clientIds = getSelectedBlockClientIds();
|
|
110
100
|
if ( clientIds.length ) {
|
|
111
101
|
event.preventDefault();
|
|
112
102
|
const rootClientId = getBlockRootClientId( clientIds[ 0 ] );
|
|
113
|
-
|
|
103
|
+
const direction = isMatch( 'core/block-editor/move-up', event )
|
|
104
|
+
? 'up'
|
|
105
|
+
: 'down';
|
|
106
|
+
if ( direction === 'up' ) {
|
|
107
|
+
moveBlocksUp( clientIds, rootClientId );
|
|
108
|
+
} else {
|
|
109
|
+
moveBlocksDown( clientIds, rootClientId );
|
|
110
|
+
}
|
|
111
|
+
const blockLength = Array.isArray( clientIds )
|
|
112
|
+
? clientIds.length
|
|
113
|
+
: 1;
|
|
114
|
+
const message = sprintf(
|
|
115
|
+
// translators: %d: the name of the block that has been moved
|
|
116
|
+
_n(
|
|
117
|
+
'%d block moved.',
|
|
118
|
+
'%d blocks moved.',
|
|
119
|
+
clientIds.length
|
|
120
|
+
),
|
|
121
|
+
blockLength
|
|
122
|
+
);
|
|
123
|
+
speak( message );
|
|
114
124
|
}
|
|
115
125
|
} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {
|
|
116
126
|
const clientIds = getSelectedBlockClientIds();
|
|
@@ -211,13 +221,6 @@ export default function BlockTools( {
|
|
|
211
221
|
/>
|
|
212
222
|
) }
|
|
213
223
|
|
|
214
|
-
{ showZoomOutToolbar && (
|
|
215
|
-
<ZoomOutPopover
|
|
216
|
-
__unstableContentRef={ __unstableContentRef }
|
|
217
|
-
clientId={ clientId }
|
|
218
|
-
/>
|
|
219
|
-
) }
|
|
220
|
-
|
|
221
224
|
{ /* Used for the inline rich text toolbar. Until this toolbar is combined into BlockToolbar, someone implementing their own BlockToolbar will also need to use this to see the image caption toolbar. */ }
|
|
222
225
|
{ ! isZoomOutMode && ! hasFixedToolbar && (
|
|
223
226
|
<Popover.Slot
|