@wordpress/block-editor 14.3.3 → 14.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +46 -0
- package/build/autocompleters/link.js +2 -1
- package/build/autocompleters/link.js.map +1 -1
- package/build/components/block-actions/index.js +1 -13
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-inspector/index.js +56 -75
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +5 -19
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +5 -8
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +3 -11
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +5 -3
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list/zoom-out-separator.js +14 -6
- package/build/components/block-list/zoom-out-separator.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +2 -4
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-parent-selector/index.js +13 -10
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +10 -20
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +11 -13
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +2 -4
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +79 -76
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -6
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +17 -14
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +16 -19
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/use-has-block-toolbar.js +3 -5
- package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build/components/block-tools/index.js +8 -11
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +1 -4
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -5
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserter-button.js +1 -12
- package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +14 -17
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +2 -12
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/block-variation-picker/index.js +2 -4
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +3 -4
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/button-block-appender/index.js +2 -4
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +2 -4
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/global-styles/border-panel.js +1 -1
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +2 -4
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +3 -3
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +2 -4
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/shadow-panel-components.js +24 -29
- package/build/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build/components/inner-blocks/index.js +1 -9
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +1 -1
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +24 -5
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js +22 -12
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +23 -10
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +35 -13
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/menu.js +2 -2
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/mobile-tab-navigation.js +5 -5
- package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -4
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inspector-controls-tabs/index.js +11 -8
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/inspector-popover-header/index.js +4 -8
- package/build/components/inspector-popover-header/index.js.map +1 -1
- package/build/components/link-control/index.js +5 -10
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +2 -4
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/list-view/block-contents.js +1 -25
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block-select-button.js +1 -4
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/media-placeholder/index.js +29 -43
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/rich-text/index.js +4 -8
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +2 -4
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/tool-selector/index.js +13 -12
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-input/button.js +14 -16
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +2 -4
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-commands/index.js +0 -61
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +2 -25
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/block-bindings.js +6 -13
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/duotone.js +4 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/layout-child.js +3 -1
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/position.js +3 -2
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +5 -4
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/layouts/flex.js +6 -38
- package/build/layouts/flex.js.map +1 -1
- package/build/private-apis.js +0 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +13 -14
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +15 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +104 -7
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +22 -26
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +127 -56
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +4 -3
- package/build/store/utils.js.map +1 -1
- package/build/utils/block-bindings.js +50 -0
- package/build/utils/block-bindings.js.map +1 -1
- package/build/utils/index.js +7 -0
- package/build/utils/index.js.map +1 -1
- package/build-module/autocompleters/link.js +2 -1
- package/build-module/autocompleters/link.js.map +1 -1
- package/build-module/components/block-actions/index.js +1 -13
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +57 -76
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -19
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +5 -8
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +3 -11
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -12
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +5 -3
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list/zoom-out-separator.js +14 -6
- package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +2 -4
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +13 -10
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +10 -20
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +11 -13
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +2 -4
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +79 -76
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +2 -7
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +17 -14
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +17 -20
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -5
- package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build-module/components/block-tools/index.js +8 -11
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +1 -4
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -5
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +1 -12
- package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +14 -17
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +2 -12
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +2 -4
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +3 -4
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +2 -4
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +2 -4
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +1 -1
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +2 -4
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +1 -1
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +2 -4
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/shadow-panel-components.js +25 -30
- package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +1 -9
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +1 -1
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +27 -8
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js +22 -12
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +23 -10
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +35 -13
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/menu.js +2 -2
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js +6 -6
- package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -4
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/index.js +12 -9
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/inspector-popover-header/index.js +4 -8
- package/build-module/components/inspector-popover-header/index.js.map +1 -1
- package/build-module/components/link-control/index.js +5 -10
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +2 -4
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +1 -25
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +2 -5
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +30 -44
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +4 -8
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +2 -4
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +13 -12
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-input/button.js +15 -17
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +2 -4
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +1 -62
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +3 -26
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/block-bindings.js +6 -13
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/duotone.js +4 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/layout-child.js +4 -1
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/position.js +4 -1
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +5 -4
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/layouts/flex.js +7 -39
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/private-apis.js +0 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +12 -12
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +14 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +98 -7
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +21 -25
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +129 -58
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +3 -2
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/block-bindings.js +50 -0
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-module/utils/index.js +1 -0
- package/build-module/utils/index.js.map +1 -1
- package/build-style/content-rtl.css +16 -70
- package/build-style/content.css +16 -70
- package/build-style/default-editor-styles-rtl.css +10 -1
- package/build-style/default-editor-styles.css +10 -1
- package/build-style/style-rtl.css +51 -149
- package/build-style/style.css +51 -149
- package/package.json +32 -32
- package/src/autocompleters/link.js +2 -1
- package/src/components/block-actions/index.js +1 -13
- package/src/components/block-draggable/style.scss +2 -2
- package/src/components/block-inspector/index.js +79 -95
- package/src/components/block-inspector/style.scss +2 -0
- package/src/components/block-list/block.js +7 -28
- package/src/components/block-list/content.scss +1 -61
- package/src/components/block-list/index.js +21 -29
- package/src/components/block-list/use-block-props/index.js +3 -10
- package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +19 -11
- package/src/components/block-list/use-in-between-inserter.js +5 -2
- package/src/components/block-list/zoom-out-separator.js +24 -8
- package/src/components/block-navigation/dropdown.js +1 -2
- package/src/components/block-parent-selector/index.js +13 -10
- package/src/components/block-pattern-setup/setup-toolbar.js +5 -10
- package/src/components/block-patterns-paging/index.js +8 -7
- package/src/components/block-patterns-paging/style.scss +10 -27
- package/src/components/block-quick-navigation/index.js +1 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +120 -106
- package/src/components/block-settings-menu-controls/index.js +0 -15
- package/src/components/block-switcher/index.js +37 -30
- package/src/components/block-toolbar/index.js +22 -34
- package/src/components/block-toolbar/style.scss +10 -1
- package/src/components/block-toolbar/use-has-block-toolbar.js +19 -31
- package/src/components/block-tools/index.js +7 -16
- package/src/components/block-tools/insertion-point.js +1 -4
- package/src/components/block-tools/style.scss +3 -88
- package/src/components/block-tools/use-show-block-tools.js +2 -12
- package/src/components/block-tools/zoom-out-mode-inserter-button.js +2 -17
- package/src/components/block-tools/zoom-out-mode-inserters.js +11 -19
- package/src/components/block-tools/zoom-out-toolbar.js +2 -13
- package/src/components/block-variation-picker/index.js +1 -2
- package/src/components/block-variation-transforms/index.js +2 -2
- package/src/components/button-block-appender/content.scss +0 -5
- package/src/components/button-block-appender/index.js +1 -2
- package/src/components/colors-gradients/dropdown.js +1 -5
- package/src/components/font-family/README.md +5 -1
- package/src/components/global-styles/border-panel.js +1 -1
- package/src/components/global-styles/color-panel.js +1 -5
- package/src/components/global-styles/dimensions-panel.js +1 -1
- package/src/components/global-styles/filters-panel.js +1 -2
- package/src/components/global-styles/shadow-panel-components.js +28 -33
- package/src/components/global-styles/style.scss +5 -0
- package/src/components/inner-blocks/index.js +1 -16
- package/src/components/inserter/block-types-tab.js +1 -1
- package/src/components/inserter/hooks/use-block-types-state.js +34 -14
- package/src/components/inserter/hooks/use-insertion-point.js +35 -13
- package/src/components/inserter/hooks/use-patterns-state.js +46 -9
- package/src/components/inserter/media-tab/media-preview.js +38 -12
- package/src/components/inserter/menu.js +2 -2
- package/src/components/inserter/mobile-tab-navigation.js +10 -13
- package/src/components/inserter/quick-inserter.js +5 -4
- package/src/components/inserter/style.scss +0 -28
- package/src/components/inspector-controls-tabs/index.js +21 -20
- package/src/components/inspector-controls-tabs/style.scss +2 -6
- package/src/components/inspector-popover-header/index.js +2 -4
- package/src/components/inspector-popover-header/style.scss +0 -13
- package/src/components/link-control/index.js +2 -5
- package/src/components/link-control/settings-drawer.js +1 -2
- package/src/components/list-view/block-contents.js +1 -28
- package/src/components/list-view/block-select-button.js +2 -5
- package/src/components/list-view/style.scss +18 -14
- package/src/components/media-placeholder/content.scss +3 -19
- package/src/components/media-placeholder/index.js +23 -29
- package/src/components/rich-text/index.js +4 -13
- package/src/components/skip-to-selected-block/index.js +1 -2
- package/src/components/skip-to-selected-block/style.scss +0 -9
- package/src/components/tool-selector/index.js +14 -9
- package/src/components/tool-selector/style.scss +5 -0
- package/src/components/url-input/button.js +16 -12
- package/src/components/url-input/index.js +1 -2
- package/src/components/url-input/style.scss +0 -6
- package/src/components/use-block-commands/index.js +0 -58
- package/src/components/writing-flow/use-tab-nav.js +4 -36
- package/src/content.scss +0 -1
- package/src/hooks/block-bindings.js +9 -10
- package/src/hooks/duotone.js +4 -1
- package/src/hooks/layout-child.js +4 -1
- package/src/hooks/position.js +4 -1
- package/src/hooks/use-bindings-attributes.js +66 -63
- package/src/layouts/flex.js +10 -53
- package/src/private-apis.js +0 -2
- package/src/store/actions.js +14 -13
- package/src/store/private-actions.js +14 -0
- package/src/store/private-selectors.js +120 -16
- package/src/store/reducer.js +22 -28
- package/src/store/selectors.js +203 -114
- package/src/store/test/private-actions.js +15 -0
- package/src/store/test/private-selectors.js +34 -0
- package/src/store/test/reducer.js +40 -4
- package/src/store/test/selectors.js +183 -20
- package/src/store/utils.js +4 -2
- package/src/utils/block-bindings.js +49 -0
- package/src/utils/index.js +1 -0
- package/build/components/block-controls/use-has-block-controls.js +0 -43
- package/build/components/block-controls/use-has-block-controls.js.map +0 -1
- package/build/components/block-list/use-block-props/use-nav-mode-exit.js +0 -54
- package/build/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
- package/build/components/block-tools/block-selection-button.js +0 -259
- package/build/components/block-tools/block-selection-button.js.map +0 -1
- package/build/components/block-tools/block-toolbar-breadcrumb.js +0 -57
- package/build/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
- package/build/components/inserter/tabs.js +0 -78
- package/build/components/inserter/tabs.js.map +0 -1
- package/build-module/components/block-controls/use-has-block-controls.js +0 -34
- package/build-module/components/block-controls/use-has-block-controls.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js +0 -48
- package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js.map +0 -1
- package/build-module/components/block-tools/block-selection-button.js +0 -254
- package/build-module/components/block-tools/block-selection-button.js.map +0 -1
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js +0 -49
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +0 -1
- package/build-module/components/inserter/tabs.js +0 -72
- package/build-module/components/inserter/tabs.js.map +0 -1
- package/src/components/block-controls/use-has-block-controls.js +0 -35
- package/src/components/block-list/use-block-props/use-nav-mode-exit.js +0 -46
- package/src/components/block-tools/block-selection-button.js +0 -302
- package/src/components/block-tools/block-toolbar-breadcrumb.js +0 -51
- package/src/components/inner-blocks/content.scss +0 -13
- package/src/components/inserter/tabs.js +0 -78
- package/src/components/inserter/test/block-types-tab.native.js +0 -67
package/src/store/selectors.js
CHANGED
|
@@ -21,7 +21,7 @@ import { createSelector, createRegistrySelector } from '@wordpress/data';
|
|
|
21
21
|
* Internal dependencies
|
|
22
22
|
*/
|
|
23
23
|
import {
|
|
24
|
-
|
|
24
|
+
isFiltered,
|
|
25
25
|
checkAllowListRecursive,
|
|
26
26
|
checkAllowList,
|
|
27
27
|
getAllPatternsDependants,
|
|
@@ -38,6 +38,8 @@ import {
|
|
|
38
38
|
getTemporarilyEditingAsBlocks,
|
|
39
39
|
getTemporarilyEditingFocusModeToRevert,
|
|
40
40
|
getSectionRootClientId,
|
|
41
|
+
isSectionBlock,
|
|
42
|
+
getParentSectionBlock,
|
|
41
43
|
} from './private-selectors';
|
|
42
44
|
|
|
43
45
|
/**
|
|
@@ -78,7 +80,9 @@ const EMPTY_ARRAY = [];
|
|
|
78
80
|
*/
|
|
79
81
|
const EMPTY_SET = new Set();
|
|
80
82
|
|
|
81
|
-
const
|
|
83
|
+
const DEFAULT_INSERTER_OPTIONS = {
|
|
84
|
+
[ isFiltered ]: true,
|
|
85
|
+
};
|
|
82
86
|
|
|
83
87
|
/**
|
|
84
88
|
* Returns a block's name given its client ID, or null if no block exists with
|
|
@@ -1450,8 +1454,7 @@ export function isCaretWithinFormattedText() {
|
|
|
1450
1454
|
}
|
|
1451
1455
|
|
|
1452
1456
|
/**
|
|
1453
|
-
* Returns the
|
|
1454
|
-
* be placed. Defaults to the last index.
|
|
1457
|
+
* Returns the location of the insertion cue. Defaults to the last index.
|
|
1455
1458
|
*
|
|
1456
1459
|
* @param {Object} state Editor state.
|
|
1457
1460
|
*
|
|
@@ -1462,11 +1465,11 @@ export const getBlockInsertionPoint = createSelector(
|
|
|
1462
1465
|
let rootClientId, index;
|
|
1463
1466
|
|
|
1464
1467
|
const {
|
|
1465
|
-
|
|
1468
|
+
insertionCue,
|
|
1466
1469
|
selection: { selectionEnd },
|
|
1467
1470
|
} = state;
|
|
1468
|
-
if (
|
|
1469
|
-
return
|
|
1471
|
+
if ( insertionCue !== null ) {
|
|
1472
|
+
return insertionCue;
|
|
1470
1473
|
}
|
|
1471
1474
|
|
|
1472
1475
|
const { clientId } = selectionEnd;
|
|
@@ -1481,7 +1484,7 @@ export const getBlockInsertionPoint = createSelector(
|
|
|
1481
1484
|
return { rootClientId, index };
|
|
1482
1485
|
},
|
|
1483
1486
|
( state ) => [
|
|
1484
|
-
state.
|
|
1487
|
+
state.insertionCue,
|
|
1485
1488
|
state.selection.selectionEnd.clientId,
|
|
1486
1489
|
state.blocks.parents,
|
|
1487
1490
|
state.blocks.order,
|
|
@@ -1489,14 +1492,14 @@ export const getBlockInsertionPoint = createSelector(
|
|
|
1489
1492
|
);
|
|
1490
1493
|
|
|
1491
1494
|
/**
|
|
1492
|
-
* Returns true if
|
|
1495
|
+
* Returns true if the block insertion point is visible.
|
|
1493
1496
|
*
|
|
1494
1497
|
* @param {Object} state Global application state.
|
|
1495
1498
|
*
|
|
1496
1499
|
* @return {?boolean} Whether the insertion point is visible or not.
|
|
1497
1500
|
*/
|
|
1498
1501
|
export function isBlockInsertionPointVisible( state ) {
|
|
1499
|
-
return state.
|
|
1502
|
+
return state.insertionCue !== null;
|
|
1500
1503
|
}
|
|
1501
1504
|
|
|
1502
1505
|
/**
|
|
@@ -1537,6 +1540,59 @@ export function getTemplateLock( state, rootClientId ) {
|
|
|
1537
1540
|
return getBlockListSettings( state, rootClientId )?.templateLock ?? false;
|
|
1538
1541
|
}
|
|
1539
1542
|
|
|
1543
|
+
/**
|
|
1544
|
+
* Determines if the given block type is visible in the inserter.
|
|
1545
|
+
* Note that this is different than whether a block is allowed to be inserted.
|
|
1546
|
+
* In some cases, the block is not allowed in a given position but
|
|
1547
|
+
* it should still be visible in the inserter to be able to add it
|
|
1548
|
+
* to a different position.
|
|
1549
|
+
*
|
|
1550
|
+
* @param {Object} state Editor state.
|
|
1551
|
+
* @param {string|Object} blockNameOrType The block type object, e.g., the response
|
|
1552
|
+
* from the block directory; or a string name of
|
|
1553
|
+
* an installed block type, e.g.' core/paragraph'.
|
|
1554
|
+
*
|
|
1555
|
+
* @return {boolean} Whether the given block type is allowed to be inserted.
|
|
1556
|
+
*/
|
|
1557
|
+
const isBlockVisibleInTheInserter = ( state, blockNameOrType ) => {
|
|
1558
|
+
let blockType;
|
|
1559
|
+
let blockName;
|
|
1560
|
+
if ( blockNameOrType && 'object' === typeof blockNameOrType ) {
|
|
1561
|
+
blockType = blockNameOrType;
|
|
1562
|
+
blockName = blockNameOrType.name;
|
|
1563
|
+
} else {
|
|
1564
|
+
blockType = getBlockType( blockNameOrType );
|
|
1565
|
+
blockName = blockNameOrType;
|
|
1566
|
+
}
|
|
1567
|
+
if ( ! blockType ) {
|
|
1568
|
+
return false;
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
const { allowedBlockTypes } = getSettings( state );
|
|
1572
|
+
|
|
1573
|
+
const isBlockAllowedInEditor = checkAllowList(
|
|
1574
|
+
allowedBlockTypes,
|
|
1575
|
+
blockName,
|
|
1576
|
+
true
|
|
1577
|
+
);
|
|
1578
|
+
if ( ! isBlockAllowedInEditor ) {
|
|
1579
|
+
return false;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
// If parent blocks are not visible, child blocks should be hidden too.
|
|
1583
|
+
if ( !! blockType.parent?.length ) {
|
|
1584
|
+
return blockType.parent.some(
|
|
1585
|
+
( name ) =>
|
|
1586
|
+
isBlockVisibleInTheInserter( state, name ) ||
|
|
1587
|
+
// Exception for blocks with post-content parent,
|
|
1588
|
+
// the root level is often consider as "core/post-content".
|
|
1589
|
+
// This exception should only apply to the post editor ideally though.
|
|
1590
|
+
name === 'core/post-content'
|
|
1591
|
+
);
|
|
1592
|
+
}
|
|
1593
|
+
return true;
|
|
1594
|
+
};
|
|
1595
|
+
|
|
1540
1596
|
/**
|
|
1541
1597
|
* Determines if the given block type is allowed to be inserted into the block list.
|
|
1542
1598
|
* This function is not exported and not memoized because using a memoized selector
|
|
@@ -1555,6 +1611,10 @@ const canInsertBlockTypeUnmemoized = (
|
|
|
1555
1611
|
blockName,
|
|
1556
1612
|
rootClientId = null
|
|
1557
1613
|
) => {
|
|
1614
|
+
if ( ! isBlockVisibleInTheInserter( state, blockName ) ) {
|
|
1615
|
+
return false;
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1558
1618
|
let blockType;
|
|
1559
1619
|
if ( blockName && 'object' === typeof blockName ) {
|
|
1560
1620
|
blockType = blockName;
|
|
@@ -1562,23 +1622,14 @@ const canInsertBlockTypeUnmemoized = (
|
|
|
1562
1622
|
} else {
|
|
1563
1623
|
blockType = getBlockType( blockName );
|
|
1564
1624
|
}
|
|
1565
|
-
if ( ! blockType ) {
|
|
1566
|
-
return false;
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
const { allowedBlockTypes } = getSettings( state );
|
|
1570
1625
|
|
|
1571
|
-
const
|
|
1572
|
-
|
|
1573
|
-
blockName,
|
|
1574
|
-
true
|
|
1575
|
-
);
|
|
1576
|
-
if ( ! isBlockAllowedInEditor ) {
|
|
1626
|
+
const isLocked = !! getTemplateLock( state, rootClientId );
|
|
1627
|
+
if ( isLocked ) {
|
|
1577
1628
|
return false;
|
|
1578
1629
|
}
|
|
1579
1630
|
|
|
1580
|
-
const
|
|
1581
|
-
if (
|
|
1631
|
+
const _isSectionBlock = !! isSectionBlock( state, rootClientId );
|
|
1632
|
+
if ( _isSectionBlock ) {
|
|
1582
1633
|
return false;
|
|
1583
1634
|
}
|
|
1584
1635
|
|
|
@@ -1733,6 +1784,11 @@ export function canRemoveBlock( state, clientId ) {
|
|
|
1733
1784
|
return false;
|
|
1734
1785
|
}
|
|
1735
1786
|
|
|
1787
|
+
const isBlockWithinSection = !! getParentSectionBlock( state, clientId );
|
|
1788
|
+
if ( isBlockWithinSection ) {
|
|
1789
|
+
return false;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1736
1792
|
return getBlockEditingMode( state, rootClientId ) !== 'disabled';
|
|
1737
1793
|
}
|
|
1738
1794
|
|
|
@@ -1959,6 +2015,7 @@ const buildBlockTypeItem =
|
|
|
1959
2015
|
description: blockType.description,
|
|
1960
2016
|
category: blockType.category,
|
|
1961
2017
|
keywords: blockType.keywords,
|
|
2018
|
+
parent: blockType.parent,
|
|
1962
2019
|
variations: inserterVariations,
|
|
1963
2020
|
example: blockType.example,
|
|
1964
2021
|
utility: 1, // Deprecated.
|
|
@@ -1996,7 +2053,7 @@ const buildBlockTypeItem =
|
|
|
1996
2053
|
*/
|
|
1997
2054
|
export const getInserterItems = createRegistrySelector( ( select ) =>
|
|
1998
2055
|
createSelector(
|
|
1999
|
-
( state, rootClientId = null, options =
|
|
2056
|
+
( state, rootClientId = null, options = DEFAULT_INSERTER_OPTIONS ) => {
|
|
2000
2057
|
const buildReusableBlockInserterItem = ( reusableBlock ) => {
|
|
2001
2058
|
const icon = ! reusableBlock.wp_pattern_sync_status
|
|
2002
2059
|
? {
|
|
@@ -2044,56 +2101,7 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
|
|
|
2044
2101
|
)
|
|
2045
2102
|
.map( buildBlockTypeInserterItem );
|
|
2046
2103
|
|
|
2047
|
-
if ( options[
|
|
2048
|
-
blockTypeInserterItems = blockTypeInserterItems.reduce(
|
|
2049
|
-
( accumulator, item ) => {
|
|
2050
|
-
item.rootClientId = rootClientId ?? '';
|
|
2051
|
-
|
|
2052
|
-
while (
|
|
2053
|
-
! canInsertBlockTypeUnmemoized(
|
|
2054
|
-
state,
|
|
2055
|
-
item.name,
|
|
2056
|
-
item.rootClientId
|
|
2057
|
-
)
|
|
2058
|
-
) {
|
|
2059
|
-
if ( ! item.rootClientId ) {
|
|
2060
|
-
let sectionRootClientId;
|
|
2061
|
-
try {
|
|
2062
|
-
sectionRootClientId =
|
|
2063
|
-
getSectionRootClientId( state );
|
|
2064
|
-
} catch ( e ) {}
|
|
2065
|
-
if (
|
|
2066
|
-
sectionRootClientId &&
|
|
2067
|
-
canInsertBlockTypeUnmemoized(
|
|
2068
|
-
state,
|
|
2069
|
-
item.name,
|
|
2070
|
-
sectionRootClientId
|
|
2071
|
-
)
|
|
2072
|
-
) {
|
|
2073
|
-
item.rootClientId = sectionRootClientId;
|
|
2074
|
-
} else {
|
|
2075
|
-
delete item.rootClientId;
|
|
2076
|
-
}
|
|
2077
|
-
break;
|
|
2078
|
-
} else {
|
|
2079
|
-
const parentClientId = getBlockRootClientId(
|
|
2080
|
-
state,
|
|
2081
|
-
item.rootClientId
|
|
2082
|
-
);
|
|
2083
|
-
item.rootClientId = parentClientId;
|
|
2084
|
-
}
|
|
2085
|
-
}
|
|
2086
|
-
|
|
2087
|
-
// We could also add non insertable items and gray them out.
|
|
2088
|
-
if ( item.hasOwnProperty( 'rootClientId' ) ) {
|
|
2089
|
-
accumulator.push( item );
|
|
2090
|
-
}
|
|
2091
|
-
|
|
2092
|
-
return accumulator;
|
|
2093
|
-
},
|
|
2094
|
-
[]
|
|
2095
|
-
);
|
|
2096
|
-
} else {
|
|
2104
|
+
if ( options[ isFiltered ] !== false ) {
|
|
2097
2105
|
blockTypeInserterItems = blockTypeInserterItems.filter(
|
|
2098
2106
|
( blockType ) =>
|
|
2099
2107
|
canIncludeBlockTypeInInserter(
|
|
@@ -2102,6 +2110,19 @@ export const getInserterItems = createRegistrySelector( ( select ) =>
|
|
|
2102
2110
|
rootClientId
|
|
2103
2111
|
)
|
|
2104
2112
|
);
|
|
2113
|
+
} else {
|
|
2114
|
+
blockTypeInserterItems = blockTypeInserterItems
|
|
2115
|
+
.filter( ( blockType ) =>
|
|
2116
|
+
isBlockVisibleInTheInserter( state, blockType )
|
|
2117
|
+
)
|
|
2118
|
+
.map( ( blockType ) => ( {
|
|
2119
|
+
...blockType,
|
|
2120
|
+
isAllowedInCurrentRoot: canIncludeBlockTypeInInserter(
|
|
2121
|
+
state,
|
|
2122
|
+
blockType,
|
|
2123
|
+
rootClientId
|
|
2124
|
+
),
|
|
2125
|
+
} ) );
|
|
2105
2126
|
}
|
|
2106
2127
|
|
|
2107
2128
|
const items = blockTypeInserterItems.reduce(
|
|
@@ -2373,37 +2394,50 @@ const getAllowedPatternsDependants = ( select ) => ( state, rootClientId ) => [
|
|
|
2373
2394
|
*/
|
|
2374
2395
|
export const __experimentalGetAllowedPatterns = createRegistrySelector(
|
|
2375
2396
|
( select ) => {
|
|
2376
|
-
return createSelector(
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2397
|
+
return createSelector(
|
|
2398
|
+
(
|
|
2399
|
+
state,
|
|
2400
|
+
rootClientId = null,
|
|
2401
|
+
options = DEFAULT_INSERTER_OPTIONS
|
|
2402
|
+
) => {
|
|
2403
|
+
const { getAllPatterns } = unlock( select( STORE_NAME ) );
|
|
2404
|
+
const patterns = getAllPatterns();
|
|
2405
|
+
const { allowedBlockTypes } = getSettings( state );
|
|
2406
|
+
const parsedPatterns = patterns
|
|
2407
|
+
.filter( ( { inserter = true } ) => !! inserter )
|
|
2408
|
+
.map( ( pattern ) => {
|
|
2409
|
+
return {
|
|
2410
|
+
...pattern,
|
|
2411
|
+
get blocks() {
|
|
2412
|
+
return getParsedPattern( pattern ).blocks;
|
|
2413
|
+
},
|
|
2414
|
+
};
|
|
2415
|
+
} );
|
|
2416
|
+
|
|
2417
|
+
const availableParsedPatterns = parsedPatterns.filter(
|
|
2418
|
+
( pattern ) =>
|
|
2419
|
+
checkAllowListRecursive(
|
|
2420
|
+
getGrammar( pattern ),
|
|
2421
|
+
allowedBlockTypes
|
|
2422
|
+
)
|
|
2423
|
+
);
|
|
2424
|
+
const patternsAllowed = availableParsedPatterns.filter(
|
|
2425
|
+
( pattern ) =>
|
|
2426
|
+
getGrammar( pattern ).every( ( { blockName: name } ) =>
|
|
2427
|
+
options[ isFiltered ] !== false
|
|
2428
|
+
? canInsertBlockType(
|
|
2429
|
+
state,
|
|
2430
|
+
name,
|
|
2431
|
+
rootClientId
|
|
2432
|
+
)
|
|
2433
|
+
: isBlockVisibleInTheInserter( state, name )
|
|
2434
|
+
)
|
|
2435
|
+
);
|
|
2404
2436
|
|
|
2405
|
-
|
|
2406
|
-
|
|
2437
|
+
return patternsAllowed;
|
|
2438
|
+
},
|
|
2439
|
+
getAllowedPatternsDependants( select )
|
|
2440
|
+
);
|
|
2407
2441
|
}
|
|
2408
2442
|
);
|
|
2409
2443
|
|
|
@@ -2674,12 +2708,17 @@ export function __unstableGetEditorMode( state ) {
|
|
|
2674
2708
|
/**
|
|
2675
2709
|
* Returns whether block moving mode is enabled.
|
|
2676
2710
|
*
|
|
2677
|
-
* @
|
|
2678
|
-
*
|
|
2679
|
-
* @return {string} Client Id of moving block.
|
|
2711
|
+
* @deprecated
|
|
2680
2712
|
*/
|
|
2681
|
-
export function hasBlockMovingClientId(
|
|
2682
|
-
|
|
2713
|
+
export function hasBlockMovingClientId() {
|
|
2714
|
+
deprecated(
|
|
2715
|
+
'wp.data.select( "core/block-editor" ).hasBlockMovingClientId',
|
|
2716
|
+
{
|
|
2717
|
+
since: '6.7',
|
|
2718
|
+
hint: 'Block moving mode feature has been removed',
|
|
2719
|
+
}
|
|
2720
|
+
);
|
|
2721
|
+
return false;
|
|
2683
2722
|
}
|
|
2684
2723
|
|
|
2685
2724
|
/**
|
|
@@ -2862,11 +2901,9 @@ export function __unstableHasActiveBlockOverlayActive( state, clientId ) {
|
|
|
2862
2901
|
'__experimentalDisableBlockOverlay',
|
|
2863
2902
|
false
|
|
2864
2903
|
);
|
|
2865
|
-
const shouldEnableIfUnselected =
|
|
2866
|
-
|
|
2867
|
-
(
|
|
2868
|
-
? false
|
|
2869
|
-
: areInnerBlocksControlled( state, clientId ) );
|
|
2904
|
+
const shouldEnableIfUnselected = blockSupportDisable
|
|
2905
|
+
? false
|
|
2906
|
+
: areInnerBlocksControlled( state, clientId );
|
|
2870
2907
|
|
|
2871
2908
|
return (
|
|
2872
2909
|
shouldEnableIfUnselected &&
|
|
@@ -2886,6 +2923,14 @@ export function __unstableIsWithinBlockOverlay( state, clientId ) {
|
|
|
2886
2923
|
return false;
|
|
2887
2924
|
}
|
|
2888
2925
|
|
|
2926
|
+
function isWithinBlock( state, clientId, parentClientId ) {
|
|
2927
|
+
let parent = state.blocks.parents.get( clientId );
|
|
2928
|
+
while ( !! parent && parent !== parentClientId ) {
|
|
2929
|
+
parent = state.blocks.parents.get( parent );
|
|
2930
|
+
}
|
|
2931
|
+
return parent === parentClientId;
|
|
2932
|
+
}
|
|
2933
|
+
|
|
2889
2934
|
/**
|
|
2890
2935
|
* @typedef {import('../components/block-editing-mode').BlockEditingMode} BlockEditingMode
|
|
2891
2936
|
*/
|
|
@@ -2953,15 +2998,58 @@ export const getBlockEditingMode = createRegistrySelector(
|
|
|
2953
2998
|
return 'disabled';
|
|
2954
2999
|
}
|
|
2955
3000
|
|
|
3001
|
+
if ( editorMode === 'navigation' ) {
|
|
3002
|
+
const sectionRootClientId = getSectionRootClientId( state );
|
|
3003
|
+
|
|
3004
|
+
// The root section is "default mode"
|
|
3005
|
+
if ( clientId === sectionRootClientId ) {
|
|
3006
|
+
return 'default';
|
|
3007
|
+
}
|
|
3008
|
+
|
|
3009
|
+
// Sections should always be contentOnly in navigation mode.
|
|
3010
|
+
const sectionsClientIds = getBlockOrder(
|
|
3011
|
+
state,
|
|
3012
|
+
sectionRootClientId
|
|
3013
|
+
);
|
|
3014
|
+
if ( sectionsClientIds.includes( clientId ) ) {
|
|
3015
|
+
return 'contentOnly';
|
|
3016
|
+
}
|
|
3017
|
+
|
|
3018
|
+
// Blocks outside sections should be disabled.
|
|
3019
|
+
const isWithinSectionRoot = isWithinBlock(
|
|
3020
|
+
state,
|
|
3021
|
+
clientId,
|
|
3022
|
+
sectionRootClientId
|
|
3023
|
+
);
|
|
3024
|
+
if ( ! isWithinSectionRoot ) {
|
|
3025
|
+
return 'disabled';
|
|
3026
|
+
}
|
|
3027
|
+
|
|
3028
|
+
// The rest of the blocks depend on whether they are content blocks or not.
|
|
3029
|
+
// This "flattens" the sections tree.
|
|
3030
|
+
const name = getBlockName( state, clientId );
|
|
3031
|
+
const { hasContentRoleAttribute } = unlock(
|
|
3032
|
+
select( blocksStore )
|
|
3033
|
+
);
|
|
3034
|
+
const isContent = hasContentRoleAttribute( name );
|
|
3035
|
+
|
|
3036
|
+
return isContent ? 'contentOnly' : 'disabled';
|
|
3037
|
+
}
|
|
3038
|
+
|
|
3039
|
+
// In normal mode, consider that an explicitely set editing mode takes over.
|
|
2956
3040
|
const blockEditingMode = state.blockEditingModes.get( clientId );
|
|
2957
3041
|
if ( blockEditingMode ) {
|
|
2958
3042
|
return blockEditingMode;
|
|
2959
3043
|
}
|
|
3044
|
+
|
|
3045
|
+
// In normal mode, top level is default mode.
|
|
2960
3046
|
if ( ! clientId ) {
|
|
2961
3047
|
return 'default';
|
|
2962
3048
|
}
|
|
3049
|
+
|
|
2963
3050
|
const rootClientId = getBlockRootClientId( state, clientId );
|
|
2964
3051
|
const templateLock = getTemplateLock( state, rootClientId );
|
|
3052
|
+
// If the parent of the block is contentOnly locked, check whether it's a content block.
|
|
2965
3053
|
if ( templateLock === 'contentOnly' ) {
|
|
2966
3054
|
const name = getBlockName( state, clientId );
|
|
2967
3055
|
const { hasContentRoleAttribute } = unlock(
|
|
@@ -2970,6 +3058,7 @@ export const getBlockEditingMode = createRegistrySelector(
|
|
|
2970
3058
|
const isContent = hasContentRoleAttribute( name );
|
|
2971
3059
|
return isContent ? 'contentOnly' : 'disabled';
|
|
2972
3060
|
}
|
|
3061
|
+
// Otherwise, check if there's an ancestor that is contentOnly
|
|
2973
3062
|
const parentMode = getBlockEditingMode( state, rootClientId );
|
|
2974
3063
|
return parentMode === 'contentOnly' ? 'default' : parentMode;
|
|
2975
3064
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
showBlockInterface,
|
|
7
7
|
expandBlock,
|
|
8
8
|
__experimentalUpdateSettings,
|
|
9
|
+
setInsertionPoint,
|
|
9
10
|
setOpenedBlockSettingsMenu,
|
|
10
11
|
startDragging,
|
|
11
12
|
stopDragging,
|
|
@@ -123,4 +124,18 @@ describe( 'private actions', () => {
|
|
|
123
124
|
} );
|
|
124
125
|
} );
|
|
125
126
|
} );
|
|
127
|
+
|
|
128
|
+
describe( 'setInsertionPoint', () => {
|
|
129
|
+
it( 'should return the SET_INSERTION_POINT action', () => {
|
|
130
|
+
expect(
|
|
131
|
+
setInsertionPoint( {
|
|
132
|
+
rootClientId: '',
|
|
133
|
+
index: '123',
|
|
134
|
+
} )
|
|
135
|
+
).toEqual( {
|
|
136
|
+
type: 'SET_INSERTION_POINT',
|
|
137
|
+
value: { rootClientId: '', index: '123' },
|
|
138
|
+
} );
|
|
139
|
+
} );
|
|
140
|
+
} );
|
|
126
141
|
} );
|
|
@@ -394,6 +394,10 @@ describe( 'private selectors', () => {
|
|
|
394
394
|
parents: new Map( [
|
|
395
395
|
[ '6cf70164-9097-4460-bcbf-200560546988', '' ],
|
|
396
396
|
] ),
|
|
397
|
+
order: new Map( [
|
|
398
|
+
[ '6cf70164-9097-4460-bcbf-200560546988', [] ],
|
|
399
|
+
[ '', [ '6cf70164-9097-4460-bcbf-200560546988' ] ],
|
|
400
|
+
] ),
|
|
397
401
|
},
|
|
398
402
|
blockEditingModes: new Map(),
|
|
399
403
|
};
|
|
@@ -424,6 +428,21 @@ describe( 'private selectors', () => {
|
|
|
424
428
|
'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
|
|
425
429
|
],
|
|
426
430
|
] ),
|
|
431
|
+
|
|
432
|
+
order: new Map( [
|
|
433
|
+
[
|
|
434
|
+
'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337',
|
|
435
|
+
[
|
|
436
|
+
'9b9c5c3f-2e46-4f02-9e14-9fe9515b958f',
|
|
437
|
+
'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
|
|
438
|
+
],
|
|
439
|
+
],
|
|
440
|
+
[
|
|
441
|
+
'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
|
|
442
|
+
[ '4c2b7140-fffd-44b4-b2a7-820c670a6514' ],
|
|
443
|
+
],
|
|
444
|
+
[ '', [ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337' ] ],
|
|
445
|
+
] ),
|
|
427
446
|
},
|
|
428
447
|
blockEditingModes: new Map( [
|
|
429
448
|
[ '', 'disabled' ],
|
|
@@ -461,6 +480,21 @@ describe( 'private selectors', () => {
|
|
|
461
480
|
'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
|
|
462
481
|
],
|
|
463
482
|
] ),
|
|
483
|
+
order: new Map( [
|
|
484
|
+
[
|
|
485
|
+
'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337',
|
|
486
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f' ],
|
|
487
|
+
],
|
|
488
|
+
[
|
|
489
|
+
'9b9c5c3f-2e46-4f02-9e14-9fe9515b958f',
|
|
490
|
+
[ 'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c' ],
|
|
491
|
+
],
|
|
492
|
+
[
|
|
493
|
+
'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
|
|
494
|
+
[ '4c2b7140-fffd-44b4-b2a7-820c670a6514' ],
|
|
495
|
+
],
|
|
496
|
+
[ '', [ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337' ] ],
|
|
497
|
+
] ),
|
|
464
498
|
},
|
|
465
499
|
blockEditingModes: new Map( [
|
|
466
500
|
[ '', 'disabled' ],
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
isMultiSelecting,
|
|
29
29
|
preferences,
|
|
30
30
|
blocksMode,
|
|
31
|
+
insertionCue,
|
|
31
32
|
insertionPoint,
|
|
32
33
|
template,
|
|
33
34
|
blockListSettings,
|
|
@@ -2378,15 +2379,15 @@ describe( 'state', () => {
|
|
|
2378
2379
|
} );
|
|
2379
2380
|
} );
|
|
2380
2381
|
|
|
2381
|
-
describe( '
|
|
2382
|
+
describe( 'insertionCue', () => {
|
|
2382
2383
|
it( 'should default to null', () => {
|
|
2383
|
-
const state =
|
|
2384
|
+
const state = insertionCue( undefined, {} );
|
|
2384
2385
|
|
|
2385
2386
|
expect( state ).toBe( null );
|
|
2386
2387
|
} );
|
|
2387
2388
|
|
|
2388
2389
|
it( 'should set insertion point', () => {
|
|
2389
|
-
const state =
|
|
2390
|
+
const state = insertionCue( null, {
|
|
2390
2391
|
type: 'SHOW_INSERTION_POINT',
|
|
2391
2392
|
rootClientId: 'clientId1',
|
|
2392
2393
|
index: 0,
|
|
@@ -2403,7 +2404,7 @@ describe( 'state', () => {
|
|
|
2403
2404
|
rootClientId: 'clientId1',
|
|
2404
2405
|
index: 0,
|
|
2405
2406
|
} );
|
|
2406
|
-
const state =
|
|
2407
|
+
const state = insertionCue( original, {
|
|
2407
2408
|
type: 'HIDE_INSERTION_POINT',
|
|
2408
2409
|
} );
|
|
2409
2410
|
|
|
@@ -3485,4 +3486,39 @@ describe( 'state', () => {
|
|
|
3485
3486
|
expect( state ).toBe( null );
|
|
3486
3487
|
} );
|
|
3487
3488
|
} );
|
|
3489
|
+
|
|
3490
|
+
describe( 'insertionPoint', () => {
|
|
3491
|
+
it( 'should default to null', () => {
|
|
3492
|
+
const state = insertionPoint( undefined, {} );
|
|
3493
|
+
|
|
3494
|
+
expect( state ).toBe( null );
|
|
3495
|
+
} );
|
|
3496
|
+
|
|
3497
|
+
it( 'should set insertion point', () => {
|
|
3498
|
+
const state = insertionPoint( null, {
|
|
3499
|
+
type: 'SET_INSERTION_POINT',
|
|
3500
|
+
value: {
|
|
3501
|
+
rootClientId: 'clientId1',
|
|
3502
|
+
index: 4,
|
|
3503
|
+
},
|
|
3504
|
+
} );
|
|
3505
|
+
|
|
3506
|
+
expect( state ).toEqual( {
|
|
3507
|
+
rootClientId: 'clientId1',
|
|
3508
|
+
index: 4,
|
|
3509
|
+
} );
|
|
3510
|
+
} );
|
|
3511
|
+
|
|
3512
|
+
it( 'should clear the insertion point on block selection', () => {
|
|
3513
|
+
const original = deepFreeze( {
|
|
3514
|
+
rootClientId: 'clientId1',
|
|
3515
|
+
index: 4,
|
|
3516
|
+
} );
|
|
3517
|
+
const state = insertionPoint( original, {
|
|
3518
|
+
type: 'SELECT_BLOCK',
|
|
3519
|
+
} );
|
|
3520
|
+
|
|
3521
|
+
expect( state ).toBe( null );
|
|
3522
|
+
} );
|
|
3523
|
+
} );
|
|
3488
3524
|
} );
|