@wordpress/block-editor 12.13.0 → 12.15.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 +1 -1
- package/build/components/block-heading-level-dropdown/index.js +1 -1
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -0
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.js +2 -9
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list-appender/index.js +16 -3
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-parent-selector/index.js +1 -1
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +25 -16
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-list/index.js +36 -19
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +6 -4
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-rename/index.js +28 -0
- package/build/components/block-rename/index.js.map +1 -0
- package/build/components/block-rename/is-empty-string.js +10 -0
- package/build/components/block-rename/is-empty-string.js.map +1 -0
- package/build/components/block-rename/modal.js +87 -0
- package/build/components/block-rename/modal.js.map +1 -0
- package/build/components/block-rename/rename-control.js +74 -0
- package/build/components/block-rename/rename-control.js.map +1 -0
- package/build/components/block-rename/use-block-rename.js +17 -0
- package/build/components/block-rename/use-block-rename.js.map +1 -0
- package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +7 -0
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +0 -8
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build/components/block-tools/back-compat.js +2 -2
- package/build/components/block-tools/back-compat.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +11 -81
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/empty-block-inserter.js +56 -0
- package/build/components/block-tools/empty-block-inserter.js.map +1 -0
- package/build/components/block-tools/index.js +48 -9
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/selected-block-tools.js +113 -0
- package/build/components/block-tools/selected-block-tools.js.map +1 -0
- package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
- package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
- package/build/components/block-types-list/index.js +6 -2
- package/build/components/block-types-list/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +8 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/editable-text/index.js +1 -2
- package/build/components/editable-text/index.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +1 -1
- package/build/components/global-styles/advanced-panel.js.map +1 -1
- package/build/components/iframe/index.js +4 -3
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-size-control/index.js +0 -5
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +3 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
- package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/index.js +75 -0
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
- package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
- package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
- package/build/components/inserter/block-patterns-tab/utils.js +69 -0
- package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
- package/build/components/inserter/hooks/use-patterns-state.js +2 -1
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +9 -5
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +15 -12
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/menu.js +3 -4
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter-listbox/index.js +11 -6
- package/build/components/inserter-listbox/index.js.map +1 -1
- package/build/components/inserter-listbox/item.js +24 -23
- package/build/components/inserter-listbox/item.js.map +1 -1
- package/build/components/inserter-listbox/row.js +5 -5
- package/build/components/inserter-listbox/row.js.map +1 -1
- package/build/components/link-control/index.js +6 -5
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +39 -0
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +16 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +3 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
- package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +69 -18
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/preview-options/index.js +4 -2
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -14
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/rich-text/index.js +0 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +4 -2
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/format-edit.js +45 -0
- package/build/components/rich-text/native/format-edit.js.map +1 -0
- package/build/components/rich-text/native/get-format-colors.native.js +41 -0
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
- package/build/components/rich-text/native/index.js +9 -0
- package/build/components/rich-text/native/index.js.map +1 -0
- package/build/components/rich-text/native/index.native.js +1189 -0
- package/build/components/rich-text/native/index.native.js.map +1 -0
- package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
- package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
- package/build/components/rich-text/native/use-format-types.js +111 -0
- package/build/components/rich-text/native/use-format-types.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +30 -1
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +2 -5
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -1
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +4 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +2 -1
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-settings/index.js +2 -2
- package/build/components/use-settings/index.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +7 -3
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +10 -10
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +2 -2
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/anchor.js +7 -6
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +16 -4
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +7 -8
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-renaming.js +42 -0
- package/build/hooks/block-renaming.js.map +1 -1
- package/build/hooks/content-lock-ui.js +5 -5
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/custom-class-name.js +8 -7
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/custom-fields.js +57 -52
- package/build/hooks/custom-fields.js.map +1 -1
- package/build/hooks/duotone.js +9 -20
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +0 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +103 -93
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +10 -9
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +10 -13
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +30 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +4 -3
- package/build/layouts/constrained.js.map +1 -1
- package/build/private-apis.js +3 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +30 -37
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +18 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +18 -13
- package/build/store/selectors.js.map +1 -1
- package/build/utils/transform-styles/index.js +26 -6
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -0
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.js +3 -10
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +16 -3
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +1 -1
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +24 -15
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +36 -19
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +7 -5
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-rename/index.js +4 -0
- package/build-module/components/block-rename/index.js.map +1 -0
- package/build-module/components/block-rename/is-empty-string.js +4 -0
- package/build-module/components/block-rename/is-empty-string.js.map +1 -0
- package/build-module/components/block-rename/modal.js +79 -0
- package/build-module/components/block-rename/modal.js.map +1 -0
- package/build-module/components/block-rename/rename-control.js +66 -0
- package/build-module/components/block-rename/rename-control.js.map +1 -0
- package/build-module/components/block-rename/use-block-rename.js +10 -0
- package/build-module/components/block-rename/use-block-rename.js.map +1 -0
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +7 -0
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +0 -8
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
- package/build-module/components/block-tools/back-compat.js +1 -1
- package/build-module/components/block-tools/back-compat.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/empty-block-inserter.js +48 -0
- package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
- package/build-module/components/block-tools/index.js +48 -9
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/selected-block-tools.js +105 -0
- package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
- package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
- package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
- package/build-module/components/block-types-list/index.js +6 -2
- package/build-module/components/block-types-list/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +8 -1
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/editable-text/index.js +1 -2
- package/build-module/components/editable-text/index.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +1 -1
- package/build-module/components/global-styles/advanced-panel.js.map +1 -1
- package/build-module/components/iframe/index.js +4 -3
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-size-control/index.js +0 -5
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +3 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
- package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +3 -3
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
- package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
- package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js +57 -0
- package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
- package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +9 -5
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +15 -12
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/menu.js +4 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter-listbox/index.js +13 -8
- package/build-module/components/inserter-listbox/index.js.map +1 -1
- package/build-module/components/inserter-listbox/item.js +25 -23
- package/build-module/components/inserter-listbox/item.js.map +1 -1
- package/build-module/components/inserter-listbox/row.js +6 -5
- package/build-module/components/inserter-listbox/row.js.map +1 -1
- package/build-module/components/link-control/index.js +7 -6
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +39 -0
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +16 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +3 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
- package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +69 -17
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/preview-options/index.js +4 -2
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -14
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/rich-text/index.js +0 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +4 -2
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/format-edit.js +38 -0
- package/build-module/components/rich-text/native/format-edit.js.map +1 -0
- package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
- package/build-module/components/rich-text/native/index.js +2 -0
- package/build-module/components/rich-text/native/index.js.map +1 -0
- package/build-module/components/rich-text/native/index.native.js +1179 -0
- package/build-module/components/rich-text/native/index.native.js.map +1 -0
- package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
- package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
- package/build-module/components/rich-text/native/use-format-types.js +104 -0
- package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +31 -2
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +2 -5
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -1
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +4 -1
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +2 -1
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +2 -2
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +7 -3
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +8 -8
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +2 -2
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/anchor.js +5 -4
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +17 -5
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +5 -6
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-renaming.js +40 -0
- package/build-module/hooks/block-renaming.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +3 -3
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +6 -5
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/custom-fields.js +57 -52
- package/build-module/hooks/custom-fields.js.map +1 -1
- package/build-module/hooks/duotone.js +10 -21
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +0 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +103 -93
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +11 -10
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +10 -13
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +30 -1
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +4 -3
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/private-apis.js +4 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +29 -37
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +17 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +17 -13
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +24 -7
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +6 -6
- package/build-style/content.css +6 -6
- package/build-style/style-rtl.css +26 -20
- package/build-style/style.css +26 -20
- package/package.json +31 -31
- package/src/components/block-heading-level-dropdown/index.js +1 -1
- package/src/components/block-list/block.native.js +2 -0
- package/src/components/block-list/index.js +4 -18
- package/src/components/block-list-appender/index.js +20 -4
- package/src/components/block-parent-selector/index.js +1 -1
- package/src/components/block-pattern-setup/index.js +38 -22
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
- package/src/components/block-pattern-setup/style.scss +4 -1
- package/src/components/block-patterns-list/README.md +4 -4
- package/src/components/block-patterns-list/index.js +60 -34
- package/src/components/block-patterns-list/style.scss +7 -0
- package/src/components/block-quick-navigation/index.js +11 -5
- package/src/components/block-rename/index.js +3 -0
- package/src/components/block-rename/is-empty-string.js +3 -0
- package/src/components/block-rename/modal.js +115 -0
- package/src/components/block-rename/rename-control.js +80 -0
- package/src/components/block-rename/use-block-rename.js +10 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
- package/src/components/block-settings-menu-controls/index.js +9 -0
- package/src/components/block-styles/index.js +0 -10
- package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
- package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
- package/src/components/block-toolbar/style.scss +8 -0
- package/src/components/block-tools/back-compat.js +1 -1
- package/src/components/block-tools/block-contextual-toolbar.js +11 -134
- package/src/components/block-tools/empty-block-inserter.js +56 -0
- package/src/components/block-tools/index.js +72 -16
- package/src/components/block-tools/selected-block-tools.js +127 -0
- package/src/components/block-tools/style.scss +0 -10
- package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
- package/src/components/block-types-list/index.js +5 -4
- package/src/components/button-block-appender/content.scss +2 -2
- package/src/components/date-format-picker/index.js +7 -0
- package/src/components/editable-text/README.md +0 -36
- package/src/components/editable-text/index.js +1 -8
- package/src/components/global-styles/advanced-panel.js +1 -1
- package/src/components/iframe/index.js +4 -3
- package/src/components/image-size-control/index.js +0 -6
- package/src/components/inner-blocks/index.js +6 -2
- package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
- package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
- package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +9 -2
- package/src/components/inserter/block-patterns-tab/index.js +118 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +179 -0
- package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
- package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +101 -0
- package/src/components/inserter/block-patterns-tab/utils.js +78 -0
- package/src/components/inserter/hooks/use-patterns-state.js +3 -1
- package/src/components/inserter/media-tab/media-list.js +7 -7
- package/src/components/inserter/media-tab/media-preview.js +27 -22
- package/src/components/inserter/menu.js +4 -5
- package/src/components/inserter-listbox/index.js +11 -7
- package/src/components/inserter-listbox/item.js +11 -12
- package/src/components/inserter-listbox/row.js +6 -12
- package/src/components/link-control/README.md +2 -2
- package/src/components/link-control/index.js +15 -6
- package/src/components/link-control/style.scss +8 -5
- package/src/components/list-view/block-select-button.js +44 -1
- package/src/components/list-view/block.js +11 -11
- package/src/components/list-view/index.js +2 -0
- package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
- package/src/components/media-replace-flow/style.scss +2 -2
- package/src/components/navigable-toolbar/index.js +71 -25
- package/src/components/plain-text/README.md +2 -30
- package/src/components/preview-options/index.js +2 -0
- package/src/components/provider/use-block-sync.js +2 -21
- package/src/components/rich-text/README.md +6 -63
- package/src/components/rich-text/index.js +0 -1
- package/src/components/rich-text/index.native.js +4 -2
- package/src/components/rich-text/native/format-edit.js +44 -0
- package/src/components/rich-text/native/get-format-colors.native.js +54 -0
- package/src/components/rich-text/native/index.js +1 -0
- package/src/components/rich-text/native/index.native.js +1406 -0
- package/src/components/rich-text/native/style.native.scss +28 -0
- package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
- package/src/components/rich-text/native/test/index.native.js +278 -0
- package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
- package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
- package/src/components/rich-text/native/use-format-types.js +146 -0
- package/src/components/rich-text/use-input-rules.js +30 -2
- package/src/components/rich-text/use-paste-handler.js +1 -6
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
- package/src/components/url-input/README.md +1 -74
- package/src/components/url-popover/image-url-input-ui.js +1 -0
- package/src/components/use-block-drop-zone/index.js +4 -1
- package/src/components/use-moving-animation/index.js +1 -1
- package/src/components/use-settings/index.js +2 -2
- package/src/components/use-settings/test/index.js +1 -1
- package/src/components/writing-flow/use-tab-nav.js +8 -3
- package/src/hooks/align.js +8 -8
- package/src/hooks/align.native.js +2 -2
- package/src/hooks/anchor.js +21 -23
- package/src/hooks/background.js +28 -6
- package/src/hooks/block-hooks.js +20 -16
- package/src/hooks/block-renaming.js +47 -0
- package/src/hooks/content-lock-ui.js +3 -3
- package/src/hooks/custom-class-name.js +7 -6
- package/src/hooks/custom-fields.js +73 -70
- package/src/hooks/duotone.js +23 -33
- package/src/hooks/index.js +0 -1
- package/src/hooks/layout.js +126 -113
- package/src/hooks/position.js +8 -21
- package/src/hooks/style.js +17 -31
- package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
- package/src/hooks/test/align.js +4 -4
- package/src/hooks/utils.js +33 -1
- package/src/layouts/constrained.js +57 -50
- package/src/private-apis.js +4 -1
- package/src/store/actions.js +26 -72
- package/src/store/reducer.js +19 -0
- package/src/store/selectors.js +15 -19
- package/src/style.scss +1 -1
- package/src/utils/test/transform-styles.js +49 -0
- package/src/utils/transform-styles/index.js +39 -13
- package/build/components/block-tools/selected-block-popover.js +0 -221
- package/build/components/block-tools/selected-block-popover.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
- package/build/components/inserter/block-patterns-filter.js.map +0 -1
- package/build/components/inserter/block-patterns-tab.js +0 -270
- package/build/components/inserter/block-patterns-tab.js.map +0 -1
- package/build/hooks/block-rename-ui.js +0 -165
- package/build/hooks/block-rename-ui.js.map +0 -1
- package/build/store/utils.js +0 -22
- package/build/store/utils.js.map +0 -1
- package/build-module/components/block-tools/selected-block-popover.js +0 -213
- package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
- package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
- package/build-module/components/inserter/block-patterns-tab.js +0 -254
- package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
- package/build-module/hooks/block-rename-ui.js +0 -157
- package/build-module/hooks/block-rename-ui.js.map +0 -1
- package/build-module/store/utils.js +0 -16
- package/build-module/store/utils.js.map +0 -1
- package/src/components/block-tools/selected-block-popover.js +0 -265
- package/src/components/inserter/block-patterns-tab.js +0 -448
- package/src/hooks/block-rename-ui.js +0 -226
- package/src/store/utils.js +0 -12
- /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
- /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
store as keyboardShortcutsStore,
|
|
21
21
|
__unstableUseShortcutEventMatch,
|
|
22
22
|
} from '@wordpress/keyboard-shortcuts';
|
|
23
|
-
import { pipe, useCopyToClipboard } from '@wordpress/compose';
|
|
23
|
+
import { pipe, useCopyToClipboard, useViewportMatch } from '@wordpress/compose';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Internal dependencies
|
|
@@ -47,6 +47,38 @@ function CopyMenuItem( { blocks, onCopy, label } ) {
|
|
|
47
47
|
return <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
function ParentSelectorMenuItem( { parentClientId, parentBlockType } ) {
|
|
51
|
+
const isSmallViewport = useViewportMatch( 'medium', '<' );
|
|
52
|
+
const { selectBlock } = useDispatch( blockEditorStore );
|
|
53
|
+
|
|
54
|
+
// Allows highlighting the parent block outline when focusing or hovering
|
|
55
|
+
// the parent block selector within the child.
|
|
56
|
+
const menuItemRef = useRef();
|
|
57
|
+
const gesturesProps = useShowHoveredOrFocusedGestures( {
|
|
58
|
+
ref: menuItemRef,
|
|
59
|
+
highlightParent: true,
|
|
60
|
+
} );
|
|
61
|
+
|
|
62
|
+
if ( ! isSmallViewport ) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<MenuItem
|
|
68
|
+
{ ...gesturesProps }
|
|
69
|
+
ref={ menuItemRef }
|
|
70
|
+
icon={ <BlockIcon icon={ parentBlockType.icon } /> }
|
|
71
|
+
onClick={ () => selectBlock( parentClientId ) }
|
|
72
|
+
>
|
|
73
|
+
{ sprintf(
|
|
74
|
+
/* translators: %s: Name of the block's parent. */
|
|
75
|
+
__( 'Select parent block (%s)' ),
|
|
76
|
+
parentBlockType.title
|
|
77
|
+
) }
|
|
78
|
+
</MenuItem>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
50
82
|
export function BlockSettingsDropdown( {
|
|
51
83
|
block,
|
|
52
84
|
clientIds,
|
|
@@ -132,8 +164,6 @@ export function BlockSettingsDropdown( {
|
|
|
132
164
|
};
|
|
133
165
|
}, [] );
|
|
134
166
|
const isMatch = __unstableUseShortcutEventMatch();
|
|
135
|
-
|
|
136
|
-
const { selectBlock } = useDispatch( blockEditorStore );
|
|
137
167
|
const hasSelectedBlocks = selectedBlockClientIds.length > 0;
|
|
138
168
|
|
|
139
169
|
const updateSelectionAfterDuplicate = useCallback(
|
|
@@ -175,14 +205,6 @@ export function BlockSettingsDropdown( {
|
|
|
175
205
|
const removeBlockLabel =
|
|
176
206
|
count === 1 ? __( 'Delete' ) : __( 'Delete blocks' );
|
|
177
207
|
|
|
178
|
-
// Allows highlighting the parent block outline when focusing or hovering
|
|
179
|
-
// the parent block selector within the child.
|
|
180
|
-
const selectParentButtonRef = useRef();
|
|
181
|
-
const showParentOutlineGestures = useShowHoveredOrFocusedGestures( {
|
|
182
|
-
ref: selectParentButtonRef,
|
|
183
|
-
highlightParent: true,
|
|
184
|
-
} );
|
|
185
|
-
|
|
186
208
|
// This can occur when the selected block (the parent)
|
|
187
209
|
// displays child blocks within a List View.
|
|
188
210
|
const parentBlockIsSelected =
|
|
@@ -297,30 +319,12 @@ export function BlockSettingsDropdown( {
|
|
|
297
319
|
/>
|
|
298
320
|
{ ! parentBlockIsSelected &&
|
|
299
321
|
!! firstParentClientId && (
|
|
300
|
-
<
|
|
301
|
-
{
|
|
302
|
-
|
|
303
|
-
icon={
|
|
304
|
-
<BlockIcon
|
|
305
|
-
icon={
|
|
306
|
-
parentBlockType.icon
|
|
307
|
-
}
|
|
308
|
-
/>
|
|
309
|
-
}
|
|
310
|
-
onClick={ () =>
|
|
311
|
-
selectBlock(
|
|
312
|
-
firstParentClientId
|
|
313
|
-
)
|
|
322
|
+
<ParentSelectorMenuItem
|
|
323
|
+
parentClientId={
|
|
324
|
+
firstParentClientId
|
|
314
325
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
/* translators: %s: Name of the block's parent. */
|
|
318
|
-
__(
|
|
319
|
-
'Select parent block (%s)'
|
|
320
|
-
),
|
|
321
|
-
parentBlockType.title
|
|
322
|
-
) }
|
|
323
|
-
</MenuItem>
|
|
326
|
+
parentBlockType={ parentBlockType }
|
|
327
|
+
/>
|
|
324
328
|
) }
|
|
325
329
|
{ count === 1 && (
|
|
326
330
|
<BlockHTMLConvertButton
|
|
@@ -22,6 +22,8 @@ import { BlockLockMenuItem, useBlockLock } from '../block-lock';
|
|
|
22
22
|
import { store as blockEditorStore } from '../../store';
|
|
23
23
|
import BlockModeToggle from '../block-settings-menu/block-mode-toggle';
|
|
24
24
|
|
|
25
|
+
import { BlockRenameControl, useBlockRename } from '../block-rename';
|
|
26
|
+
|
|
25
27
|
const { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );
|
|
26
28
|
|
|
27
29
|
const BlockSettingsMenuControlsSlot = ( {
|
|
@@ -44,7 +46,9 @@ const BlockSettingsMenuControlsSlot = ( {
|
|
|
44
46
|
);
|
|
45
47
|
|
|
46
48
|
const { canLock } = useBlockLock( selectedClientIds[ 0 ] );
|
|
49
|
+
const { canRename } = useBlockRename( selectedBlocks[ 0 ] );
|
|
47
50
|
const showLockButton = selectedClientIds.length === 1 && canLock;
|
|
51
|
+
const showRenameButton = selectedClientIds.length === 1 && canRename;
|
|
48
52
|
|
|
49
53
|
// Check if current selection of blocks is Groupable or Ungroupable
|
|
50
54
|
// and pass this props down to ConvertToGroupButton.
|
|
@@ -84,6 +88,11 @@ const BlockSettingsMenuControlsSlot = ( {
|
|
|
84
88
|
clientId={ selectedClientIds[ 0 ] }
|
|
85
89
|
/>
|
|
86
90
|
) }
|
|
91
|
+
{ showRenameButton && (
|
|
92
|
+
<BlockRenameControl
|
|
93
|
+
clientId={ selectedClientIds[ 0 ] }
|
|
94
|
+
/>
|
|
95
|
+
) }
|
|
87
96
|
{ fills }
|
|
88
97
|
{ fillProps?.canMove && ! fillProps?.onlyBlock && (
|
|
89
98
|
<MenuItem
|
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
__experimentalTruncate as Truncate,
|
|
14
14
|
Popover,
|
|
15
15
|
} from '@wordpress/components';
|
|
16
|
-
import deprecated from '@wordpress/deprecated';
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* Internal dependencies
|
|
@@ -120,12 +119,3 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
|
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
export default BlockStyles;
|
|
123
|
-
|
|
124
|
-
BlockStyles.Slot = () => {
|
|
125
|
-
deprecated( 'BlockStyles.Slot', {
|
|
126
|
-
version: '6.4',
|
|
127
|
-
since: '6.2',
|
|
128
|
-
} );
|
|
129
|
-
|
|
130
|
-
return null;
|
|
131
|
-
};
|
|
@@ -11,9 +11,7 @@ import {
|
|
|
11
11
|
MenuItem,
|
|
12
12
|
Popover,
|
|
13
13
|
VisuallyHidden,
|
|
14
|
-
|
|
15
|
-
__unstableUseCompositeState as useCompositeState,
|
|
16
|
-
__unstableCompositeItem as CompositeItem,
|
|
14
|
+
privateApis as componentsPrivateApis,
|
|
17
15
|
} from '@wordpress/components';
|
|
18
16
|
|
|
19
17
|
/**
|
|
@@ -21,6 +19,13 @@ import {
|
|
|
21
19
|
*/
|
|
22
20
|
import BlockPreview from '../block-preview';
|
|
23
21
|
import useTransformedPatterns from './use-transformed-patterns';
|
|
22
|
+
import { unlock } from '../../lock-unlock';
|
|
23
|
+
|
|
24
|
+
const {
|
|
25
|
+
CompositeV2: Composite,
|
|
26
|
+
CompositeItemV2: CompositeItem,
|
|
27
|
+
useCompositeStoreV2: useCompositeStore,
|
|
28
|
+
} = unlock( componentsPrivateApis );
|
|
24
29
|
|
|
25
30
|
function PatternTransformationsMenu( {
|
|
26
31
|
blocks,
|
|
@@ -73,10 +78,10 @@ function PreviewPatternsPopover( { patterns, onSelect } ) {
|
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
function BlockPatternsList( { patterns, onSelect } ) {
|
|
76
|
-
const composite =
|
|
81
|
+
const composite = useCompositeStore();
|
|
77
82
|
return (
|
|
78
83
|
<Composite
|
|
79
|
-
{
|
|
84
|
+
store={ composite }
|
|
80
85
|
role="listbox"
|
|
81
86
|
className="block-editor-block-switcher__preview-patterns-container"
|
|
82
87
|
aria-label={ __( 'Patterns list' ) }
|
|
@@ -86,14 +91,13 @@ function BlockPatternsList( { patterns, onSelect } ) {
|
|
|
86
91
|
key={ pattern.name }
|
|
87
92
|
pattern={ pattern }
|
|
88
93
|
onSelect={ onSelect }
|
|
89
|
-
composite={ composite }
|
|
90
94
|
/>
|
|
91
95
|
) ) }
|
|
92
96
|
</Composite>
|
|
93
97
|
);
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
function BlockPattern( { pattern, onSelect
|
|
100
|
+
function BlockPattern( { pattern, onSelect } ) {
|
|
97
101
|
// TODO check pattern/preview width...
|
|
98
102
|
const baseClassName =
|
|
99
103
|
'block-editor-block-switcher__preview-patterns-container';
|
|
@@ -104,14 +108,16 @@ function BlockPattern( { pattern, onSelect, composite } ) {
|
|
|
104
108
|
return (
|
|
105
109
|
<div className={ `${ baseClassName }-list__list-item` }>
|
|
106
110
|
<CompositeItem
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
render={
|
|
112
|
+
<div
|
|
113
|
+
role="option"
|
|
114
|
+
aria-label={ pattern.title }
|
|
115
|
+
aria-describedby={
|
|
116
|
+
pattern.description ? descriptionId : undefined
|
|
117
|
+
}
|
|
118
|
+
className={ `${ baseClassName }-list__item` }
|
|
119
|
+
/>
|
|
113
120
|
}
|
|
114
|
-
className={ `${ baseClassName }-list__item` }
|
|
115
121
|
onClick={ () => onSelect( pattern.transformedBlocks ) }
|
|
116
122
|
>
|
|
117
123
|
<BlockPreview
|
|
@@ -212,10 +212,7 @@ const BlockActionsMenu = ( {
|
|
|
212
212
|
},
|
|
213
213
|
convertToRegularBlocks: {
|
|
214
214
|
id: 'convertToRegularBlocksOption',
|
|
215
|
-
label:
|
|
216
|
-
innerBlockCount > 1
|
|
217
|
-
? __( 'Detach patterns' )
|
|
218
|
-
: __( 'Detach pattern' ),
|
|
215
|
+
label: __( 'Detach' ),
|
|
219
216
|
value: 'convertToRegularBlocksOption',
|
|
220
217
|
onSelect: () => {
|
|
221
218
|
/* translators: %s: name of the synced block */
|
|
@@ -56,6 +56,14 @@
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
.block-editor-block-contextual-toolbar.is-fixed {
|
|
60
|
+
position: sticky;
|
|
61
|
+
top: 0;
|
|
62
|
+
z-index: z-index(".block-editor-block-popover");
|
|
63
|
+
display: block;
|
|
64
|
+
width: 100%;
|
|
65
|
+
}
|
|
66
|
+
|
|
59
67
|
// on desktop browsers the fixed toolbar has tweaked borders
|
|
60
68
|
@include break-medium() {
|
|
61
69
|
.block-editor-block-contextual-toolbar.is-fixed {
|
|
@@ -9,7 +9,7 @@ import deprecated from '@wordpress/deprecated';
|
|
|
9
9
|
* Internal dependencies
|
|
10
10
|
*/
|
|
11
11
|
import InsertionPoint, { InsertionPointOpenRef } from './insertion-point';
|
|
12
|
-
import BlockPopover from './selected-block-
|
|
12
|
+
import BlockPopover from './selected-block-tools';
|
|
13
13
|
|
|
14
14
|
export default function BlockToolsBackCompat( { children } ) {
|
|
15
15
|
const openRef = useContext( InsertionPointOpenRef );
|
|
@@ -7,21 +7,8 @@ import classnames from 'classnames';
|
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
import { __ } from '@wordpress/i18n';
|
|
10
|
-
import {
|
|
11
|
-
useLayoutEffect,
|
|
12
|
-
useEffect,
|
|
13
|
-
useRef,
|
|
14
|
-
useState,
|
|
15
|
-
} from '@wordpress/element';
|
|
16
10
|
import { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';
|
|
17
11
|
import { useSelect } from '@wordpress/data';
|
|
18
|
-
import {
|
|
19
|
-
ToolbarItem,
|
|
20
|
-
ToolbarButton,
|
|
21
|
-
ToolbarGroup,
|
|
22
|
-
} from '@wordpress/components';
|
|
23
|
-
import { next, previous } from '@wordpress/icons';
|
|
24
|
-
import { useViewportMatch } from '@wordpress/compose';
|
|
25
12
|
|
|
26
13
|
/**
|
|
27
14
|
* Internal dependencies
|
|
@@ -31,12 +18,11 @@ import BlockToolbar from '../block-toolbar';
|
|
|
31
18
|
import { store as blockEditorStore } from '../../store';
|
|
32
19
|
import { useHasAnyBlockControls } from '../block-controls/use-has-block-controls';
|
|
33
20
|
|
|
34
|
-
function BlockContextualToolbar( {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const isLargeViewport = useViewportMatch( 'medium' );
|
|
21
|
+
export default function BlockContextualToolbar( {
|
|
22
|
+
focusOnMount,
|
|
23
|
+
isFixed,
|
|
24
|
+
...props
|
|
25
|
+
} ) {
|
|
40
26
|
const {
|
|
41
27
|
blockType,
|
|
42
28
|
blockEditingMode,
|
|
@@ -78,94 +64,8 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
|
|
|
78
64
|
};
|
|
79
65
|
}, [] );
|
|
80
66
|
|
|
81
|
-
useEffect( () => {
|
|
82
|
-
setIsCollapsed( false );
|
|
83
|
-
}, [ selectedBlockClientId ] );
|
|
84
|
-
|
|
85
|
-
const isLargerThanTabletViewport = useViewportMatch( 'large', '>=' );
|
|
86
|
-
const isFullscreen =
|
|
87
|
-
document.body.classList.contains( 'is-fullscreen-mode' );
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The following code is a workaround to fix the width of the toolbar
|
|
91
|
-
* it should be removed when the toolbar will be rendered inline
|
|
92
|
-
* FIXME: remove this layout effect when the toolbar is no longer
|
|
93
|
-
* absolutely positioned
|
|
94
|
-
*/
|
|
95
|
-
useLayoutEffect( () => {
|
|
96
|
-
// don't do anything if not fixed toolbar
|
|
97
|
-
if ( ! isFixed ) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const blockToolbar = document.querySelector(
|
|
102
|
-
'.block-editor-block-contextual-toolbar'
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
if ( ! blockToolbar ) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if ( ! blockType ) {
|
|
110
|
-
blockToolbar.style.width = 'initial';
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if ( ! isLargerThanTabletViewport ) {
|
|
115
|
-
// set the width of the toolbar to auto
|
|
116
|
-
blockToolbar.style = {};
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if ( isCollapsed ) {
|
|
121
|
-
// set the width of the toolbar to auto
|
|
122
|
-
blockToolbar.style.width = 'auto';
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// get the width of the pinned items in the post editor or widget editor
|
|
127
|
-
const pinnedItems = document.querySelector(
|
|
128
|
-
'.edit-post-header__settings, .edit-widgets-header__actions'
|
|
129
|
-
);
|
|
130
|
-
// get the width of the left header in the site editor
|
|
131
|
-
const leftHeader = document.querySelector(
|
|
132
|
-
'.edit-site-header-edit-mode__end'
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
const computedToolbarStyle = window.getComputedStyle( blockToolbar );
|
|
136
|
-
const computedPinnedItemsStyle = pinnedItems
|
|
137
|
-
? window.getComputedStyle( pinnedItems )
|
|
138
|
-
: false;
|
|
139
|
-
const computedLeftHeaderStyle = leftHeader
|
|
140
|
-
? window.getComputedStyle( leftHeader )
|
|
141
|
-
: false;
|
|
142
|
-
|
|
143
|
-
const marginLeft = parseFloat( computedToolbarStyle.marginLeft );
|
|
144
|
-
const pinnedItemsWidth = computedPinnedItemsStyle
|
|
145
|
-
? parseFloat( computedPinnedItemsStyle.width )
|
|
146
|
-
: 0;
|
|
147
|
-
const leftHeaderWidth = computedLeftHeaderStyle
|
|
148
|
-
? parseFloat( computedLeftHeaderStyle.width )
|
|
149
|
-
: 0;
|
|
150
|
-
|
|
151
|
-
// set the new witdth of the toolbar
|
|
152
|
-
blockToolbar.style.width = `calc(100% - ${
|
|
153
|
-
leftHeaderWidth +
|
|
154
|
-
pinnedItemsWidth +
|
|
155
|
-
marginLeft +
|
|
156
|
-
( pinnedItems || leftHeader ? 2 : 0 ) + // Prevents button focus border from being cut off
|
|
157
|
-
( isFullscreen ? 0 : 160 ) // the width of the admin sidebar expanded
|
|
158
|
-
}px)`;
|
|
159
|
-
}, [
|
|
160
|
-
isFixed,
|
|
161
|
-
isLargerThanTabletViewport,
|
|
162
|
-
isCollapsed,
|
|
163
|
-
isFullscreen,
|
|
164
|
-
blockType,
|
|
165
|
-
] );
|
|
166
|
-
|
|
167
67
|
const isToolbarEnabled =
|
|
168
|
-
|
|
68
|
+
blockType &&
|
|
169
69
|
hasBlockSupport( blockType, '__experimentalToolbar', true );
|
|
170
70
|
const hasAnyBlockControls = useHasAnyBlockControls();
|
|
171
71
|
if (
|
|
@@ -179,45 +79,22 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
|
|
|
179
79
|
const classes = classnames( 'block-editor-block-contextual-toolbar', {
|
|
180
80
|
'has-parent': hasParents && showParentSelector,
|
|
181
81
|
'is-fixed': isFixed,
|
|
182
|
-
'is-collapsed': isCollapsed,
|
|
183
82
|
} );
|
|
184
83
|
|
|
185
84
|
return (
|
|
186
85
|
<NavigableToolbar
|
|
187
86
|
focusOnMount={ focusOnMount }
|
|
87
|
+
focusEditorOnEscape
|
|
188
88
|
className={ classes }
|
|
189
89
|
/* translators: accessibility text for the block toolbar */
|
|
190
90
|
aria-label={ __( 'Block tools' ) }
|
|
191
91
|
variant={ isFixed ? 'unstyled' : undefined }
|
|
92
|
+
// Resets the index whenever the active block changes so
|
|
93
|
+
// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169
|
|
94
|
+
key={ selectedBlockClientId }
|
|
192
95
|
{ ...props }
|
|
193
96
|
>
|
|
194
|
-
|
|
195
|
-
{ isFixed && isLargeViewport && blockType && (
|
|
196
|
-
<ToolbarGroup
|
|
197
|
-
className={
|
|
198
|
-
isCollapsed
|
|
199
|
-
? 'block-editor-block-toolbar__group-expand-fixed-toolbar'
|
|
200
|
-
: 'block-editor-block-toolbar__group-collapse-fixed-toolbar'
|
|
201
|
-
}
|
|
202
|
-
>
|
|
203
|
-
<ToolbarItem
|
|
204
|
-
as={ ToolbarButton }
|
|
205
|
-
ref={ toolbarButtonRef }
|
|
206
|
-
icon={ isCollapsed ? next : previous }
|
|
207
|
-
onClick={ () => {
|
|
208
|
-
setIsCollapsed( ( collapsed ) => ! collapsed );
|
|
209
|
-
toolbarButtonRef.current.focus();
|
|
210
|
-
} }
|
|
211
|
-
label={
|
|
212
|
-
isCollapsed
|
|
213
|
-
? __( 'Show block tools' )
|
|
214
|
-
: __( 'Hide block tools' )
|
|
215
|
-
}
|
|
216
|
-
/>
|
|
217
|
-
</ToolbarGroup>
|
|
218
|
-
) }
|
|
97
|
+
<BlockToolbar hideDragHandle={ isFixed } />
|
|
219
98
|
</NavigableToolbar>
|
|
220
99
|
);
|
|
221
100
|
}
|
|
222
|
-
|
|
223
|
-
export default BlockContextualToolbar;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import classnames from 'classnames';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import BlockPopover from '../block-popover';
|
|
10
|
+
import useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';
|
|
11
|
+
import Inserter from '../inserter';
|
|
12
|
+
import useSelectedBlockToolProps from './use-selected-block-tool-props';
|
|
13
|
+
|
|
14
|
+
export default function EmptyBlockInserter( {
|
|
15
|
+
clientId,
|
|
16
|
+
__unstableContentRef,
|
|
17
|
+
} ) {
|
|
18
|
+
const {
|
|
19
|
+
capturingClientId,
|
|
20
|
+
isInsertionPointVisible,
|
|
21
|
+
lastClientId,
|
|
22
|
+
rootClientId,
|
|
23
|
+
} = useSelectedBlockToolProps( clientId );
|
|
24
|
+
|
|
25
|
+
const popoverProps = useBlockToolbarPopoverProps( {
|
|
26
|
+
contentElement: __unstableContentRef?.current,
|
|
27
|
+
clientId,
|
|
28
|
+
} );
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<BlockPopover
|
|
32
|
+
clientId={ capturingClientId || clientId }
|
|
33
|
+
__unstableCoverTarget
|
|
34
|
+
bottomClientId={ lastClientId }
|
|
35
|
+
className={ classnames(
|
|
36
|
+
'block-editor-block-list__block-side-inserter-popover',
|
|
37
|
+
{
|
|
38
|
+
'is-insertion-point-visible': isInsertionPointVisible,
|
|
39
|
+
}
|
|
40
|
+
) }
|
|
41
|
+
__unstableContentRef={ __unstableContentRef }
|
|
42
|
+
resize={ false }
|
|
43
|
+
shift={ false }
|
|
44
|
+
{ ...popoverProps }
|
|
45
|
+
>
|
|
46
|
+
<div className="block-editor-block-list__empty-block-inserter">
|
|
47
|
+
<Inserter
|
|
48
|
+
position="bottom right"
|
|
49
|
+
rootClientId={ rootClientId }
|
|
50
|
+
clientId={ clientId }
|
|
51
|
+
__experimentalIsQuick
|
|
52
|
+
/>
|
|
53
|
+
</div>
|
|
54
|
+
</BlockPopover>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -6,28 +6,48 @@ import { useViewportMatch } from '@wordpress/compose';
|
|
|
6
6
|
import { Popover } from '@wordpress/components';
|
|
7
7
|
import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
|
|
8
8
|
import { useRef } from '@wordpress/element';
|
|
9
|
+
import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Internal dependencies
|
|
12
13
|
*/
|
|
14
|
+
import EmptyBlockInserter from './empty-block-inserter';
|
|
13
15
|
import {
|
|
14
16
|
InsertionPointOpenRef,
|
|
15
17
|
default as InsertionPoint,
|
|
16
18
|
} from './insertion-point';
|
|
17
|
-
import
|
|
19
|
+
import SelectedBlockTools from './selected-block-tools';
|
|
18
20
|
import { store as blockEditorStore } from '../../store';
|
|
19
21
|
import BlockContextualToolbar from './block-contextual-toolbar';
|
|
20
22
|
import usePopoverScroll from '../block-popover/use-popover-scroll';
|
|
21
23
|
import ZoomOutModeInserters from './zoom-out-mode-inserters';
|
|
22
24
|
|
|
23
25
|
function selector( select ) {
|
|
24
|
-
const {
|
|
25
|
-
|
|
26
|
+
const {
|
|
27
|
+
getSelectedBlockClientId,
|
|
28
|
+
getFirstMultiSelectedBlockClientId,
|
|
29
|
+
getBlock,
|
|
30
|
+
getSettings,
|
|
31
|
+
__unstableGetEditorMode,
|
|
32
|
+
isTyping,
|
|
33
|
+
} = select( blockEditorStore );
|
|
34
|
+
|
|
35
|
+
const clientId =
|
|
36
|
+
getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();
|
|
37
|
+
|
|
38
|
+
const { name = '', attributes = {} } = getBlock( clientId ) || {};
|
|
26
39
|
|
|
27
40
|
return {
|
|
28
|
-
|
|
41
|
+
clientId,
|
|
29
42
|
hasFixedToolbar: getSettings().hasFixedToolbar,
|
|
43
|
+
hasSelectedBlock: clientId && name,
|
|
30
44
|
isTyping: isTyping(),
|
|
45
|
+
isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
|
|
46
|
+
showEmptyBlockSideInserter:
|
|
47
|
+
clientId &&
|
|
48
|
+
! isTyping() &&
|
|
49
|
+
__unstableGetEditorMode() === 'edit' &&
|
|
50
|
+
isUnmodifiedDefaultBlock( { name, attributes } ),
|
|
31
51
|
};
|
|
32
52
|
}
|
|
33
53
|
|
|
@@ -46,10 +66,14 @@ export default function BlockTools( {
|
|
|
46
66
|
...props
|
|
47
67
|
} ) {
|
|
48
68
|
const isLargeViewport = useViewportMatch( 'medium' );
|
|
49
|
-
const {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
69
|
+
const {
|
|
70
|
+
clientId,
|
|
71
|
+
hasFixedToolbar,
|
|
72
|
+
hasSelectedBlock,
|
|
73
|
+
isTyping,
|
|
74
|
+
isZoomOutMode,
|
|
75
|
+
showEmptyBlockSideInserter,
|
|
76
|
+
} = useSelect( selector, [] );
|
|
53
77
|
const isMatch = useShortcutEventMatch();
|
|
54
78
|
const { getSelectedBlockClientIds, getBlockRootClientId } =
|
|
55
79
|
useSelect( blockEditorStore );
|
|
@@ -106,6 +130,15 @@ export default function BlockTools( {
|
|
|
106
130
|
insertBeforeBlock( clientIds[ 0 ] );
|
|
107
131
|
}
|
|
108
132
|
} else if ( isMatch( 'core/block-editor/unselect', event ) ) {
|
|
133
|
+
if ( event.target.closest( '[role=toolbar]' ) ) {
|
|
134
|
+
// This shouldn't be necessary, but we have a combination of a few things all combining to create a situation where:
|
|
135
|
+
// - Because the block toolbar uses createPortal to populate the block toolbar fills, we can't rely on the React event bubbling to hit the onKeyDown listener for the block toolbar
|
|
136
|
+
// - Since we can't use the React tree, we use the DOM tree which _should_ handle the event bubbling correctly from a `createPortal` element.
|
|
137
|
+
// - This bubbles via the React tree, which hits this `unselect` escape keypress before the block toolbar DOM event listener has access to it.
|
|
138
|
+
// An alternative would be to remove the addEventListener on the navigableToolbar and use this event to handle it directly right here. That feels hacky too though.
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
109
142
|
const clientIds = getSelectedBlockClientIds();
|
|
110
143
|
if ( clientIds.length ) {
|
|
111
144
|
event.preventDefault();
|
|
@@ -129,6 +162,12 @@ export default function BlockTools( {
|
|
|
129
162
|
const blockToolbarRef = usePopoverScroll( __unstableContentRef );
|
|
130
163
|
const blockToolbarAfterRef = usePopoverScroll( __unstableContentRef );
|
|
131
164
|
|
|
165
|
+
// Conditions for fixed toolbar
|
|
166
|
+
// 1. Not zoom out mode
|
|
167
|
+
// 2. It's a large viewport. If it's a smaller viewport, let the floating toolbar handle it as it already has styles attached to make it render that way.
|
|
168
|
+
// 3. Fixed toolbar is enabled
|
|
169
|
+
const isTopToolbar = ! isZoomOutMode && hasFixedToolbar && isLargeViewport;
|
|
170
|
+
|
|
132
171
|
return (
|
|
133
172
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
134
173
|
<div { ...props } onKeyDown={ onKeyDown }>
|
|
@@ -138,17 +177,34 @@ export default function BlockTools( {
|
|
|
138
177
|
__unstableContentRef={ __unstableContentRef }
|
|
139
178
|
/>
|
|
140
179
|
) }
|
|
141
|
-
{
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
180
|
+
{ /* If there is no slot available, such as in the standalone block editor, render within the editor */ }
|
|
181
|
+
|
|
182
|
+
{ ! isLargeViewport && ( // Small viewports always get a fixed toolbar
|
|
183
|
+
<BlockContextualToolbar isFixed />
|
|
184
|
+
) }
|
|
185
|
+
|
|
186
|
+
{ showEmptyBlockSideInserter && (
|
|
187
|
+
<EmptyBlockInserter
|
|
188
|
+
__unstableContentRef={ __unstableContentRef }
|
|
189
|
+
clientId={ clientId }
|
|
190
|
+
/>
|
|
191
|
+
) }
|
|
145
192
|
{ /* Even if the toolbar is fixed, the block popover is still
|
|
146
193
|
needed for navigation and zoom-out mode. */ }
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
194
|
+
{ ! showEmptyBlockSideInserter && hasSelectedBlock && (
|
|
195
|
+
<SelectedBlockTools
|
|
196
|
+
__unstableContentRef={ __unstableContentRef }
|
|
197
|
+
clientId={ clientId }
|
|
198
|
+
/>
|
|
199
|
+
) }
|
|
200
|
+
|
|
150
201
|
{ /* Used for the inline rich text toolbar. */ }
|
|
151
|
-
|
|
202
|
+
{ ! isTopToolbar && (
|
|
203
|
+
<Popover.Slot
|
|
204
|
+
name="block-toolbar"
|
|
205
|
+
ref={ blockToolbarRef }
|
|
206
|
+
/>
|
|
207
|
+
) }
|
|
152
208
|
{ children }
|
|
153
209
|
{ /* Used for inline rich text popovers. */ }
|
|
154
210
|
<Popover.Slot
|