@wordpress/block-editor 14.3.4 → 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 +4 -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 +12 -24
- package/build/components/media-placeholder/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/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/layouts/flex.js +6 -38
- package/build/layouts/flex.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 +2 -0
- package/build/utils/block-bindings.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 +12 -24
- package/build-module/components/media-placeholder/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/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/layouts/flex.js +7 -39
- package/build-module/layouts/flex.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 +2 -0
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/content-rtl.css +14 -56
- package/build-style/content.css +14 -56
- 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/index.js +6 -12
- 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/duotone.js +4 -1
- package/src/hooks/layout-child.js +4 -1
- package/src/hooks/position.js +4 -1
- package/src/layouts/flex.js +10 -53
- 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 +2 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","useDispatch","Button","__experimentalVStack","VStack","__experimentalTruncate","Truncate","Flex","FlexBlock","FlexItem","store","blockEditorStore","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","jsx","_jsx","jsxs","_jsxs","BlockQuickNavigation","clientIds","onSelect","length","spacing","children","map","clientId","BlockQuickNavigationItem","blockInformation","blockTitle","context","isSelected","select","isBlockSelected","hasSelectedInnerBlock","selectBlock","__next40pxDefaultSize","isPressed","onClick","icon","style","textAlign"],"sources":["@wordpress/block-editor/src/components/block-quick-navigation/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalVStack as VStack,\n\t__experimentalTruncate as Truncate,\n\tFlex,\n\tFlexBlock,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport default function BlockQuickNavigation( { clientIds, onSelect } ) {\n\tif ( ! clientIds.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<VStack spacing={ 1 }>\n\t\t\t{ clientIds.map( ( clientId ) => (\n\t\t\t\t<BlockQuickNavigationItem\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</VStack>\n\t);\n}\n\nfunction BlockQuickNavigationItem( { clientId, onSelect } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isSelected } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tisSelected:\n\t\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( clientId, /* deep: */ true ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<Button\n\t\t\
|
|
1
|
+
{"version":3,"names":["useSelect","useDispatch","Button","__experimentalVStack","VStack","__experimentalTruncate","Truncate","Flex","FlexBlock","FlexItem","store","blockEditorStore","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","jsx","_jsx","jsxs","_jsxs","BlockQuickNavigation","clientIds","onSelect","length","spacing","children","map","clientId","BlockQuickNavigationItem","blockInformation","blockTitle","context","isSelected","select","isBlockSelected","hasSelectedInnerBlock","selectBlock","__next40pxDefaultSize","isPressed","onClick","icon","style","textAlign"],"sources":["@wordpress/block-editor/src/components/block-quick-navigation/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalVStack as VStack,\n\t__experimentalTruncate as Truncate,\n\tFlex,\n\tFlexBlock,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport default function BlockQuickNavigation( { clientIds, onSelect } ) {\n\tif ( ! clientIds.length ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<VStack spacing={ 1 }>\n\t\t\t{ clientIds.map( ( clientId ) => (\n\t\t\t\t<BlockQuickNavigationItem\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</VStack>\n\t);\n}\n\nfunction BlockQuickNavigationItem( { clientId, onSelect } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isSelected } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tisSelected:\n\t\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( clientId, /* deep: */ true ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tisPressed={ isSelected }\n\t\t\tonClick={ async () => {\n\t\t\t\tawait selectBlock( clientId );\n\t\t\t\tif ( onSelect ) {\n\t\t\t\t\tonSelect( clientId );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BlockIcon icon={ blockInformation?.icon } />\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexBlock style={ { textAlign: 'left' } }>\n\t\t\t\t\t<Truncate>{ blockTitle }</Truncate>\n\t\t\t\t</FlexBlock>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SACCC,MAAM,EACNC,oBAAoB,IAAIC,MAAM,EAC9BC,sBAAsB,IAAIC,QAAQ,EAClCC,IAAI,EACJC,SAAS,EACTC,QAAQ,QACF,uBAAuB;;AAE9B;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,0BAA0B,MAAM,kCAAkC;AACzE,OAAOC,oBAAoB,MAAM,wCAAwC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE1E,eAAe,SAASC,oBAAoBA,CAAE;EAAEC,SAAS;EAAEC;AAAS,CAAC,EAAG;EACvE,IAAK,CAAED,SAAS,CAACE,MAAM,EAAG;IACzB,OAAO,IAAI;EACZ;EACA,oBACCN,IAAA,CAACZ,MAAM;IAACmB,OAAO,EAAG,CAAG;IAAAC,QAAA,EAClBJ,SAAS,CAACK,GAAG,CAAIC,QAAQ,iBAC1BV,IAAA,CAACW,wBAAwB;MACxBN,QAAQ,EAAGA,QAAU;MAErBK,QAAQ,EAAGA;IAAU,GADfA,QAEN,CACA;EAAC,CACI,CAAC;AAEX;AAEA,SAASC,wBAAwBA,CAAE;EAAED,QAAQ;EAAEL;AAAS,CAAC,EAAG;EAC3D,MAAMO,gBAAgB,GAAGf,0BAA0B,CAAEa,QAAS,CAAC;EAC/D,MAAMG,UAAU,GAAGf,oBAAoB,CAAE;IACxCY,QAAQ;IACRI,OAAO,EAAE;EACV,CAAE,CAAC;EACH,MAAM;IAAEC;EAAW,CAAC,GAAG/B,SAAS,CAC7BgC,MAAM,IAAM;IACb,MAAM;MAAEC,eAAe;MAAEC;IAAsB,CAAC,GAC/CF,MAAM,CAAErB,gBAAiB,CAAC;IAE3B,OAAO;MACNoB,UAAU,EACTE,eAAe,CAAEP,QAAS,CAAC,IAC3BQ,qBAAqB,CAAER,QAAQ,EAAE,WAAY,IAAK;IACpD,CAAC;EACF,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;EACD,MAAM;IAAES;EAAY,CAAC,GAAGlC,WAAW,CAAEU,gBAAiB,CAAC;EAEvD,oBACCK,IAAA,CAACd,MAAM;IACNkC,qBAAqB;IACrBC,SAAS,EAAGN,UAAY;IACxBO,OAAO,EAAG,MAAAA,CAAA,KAAY;MACrB,MAAMH,WAAW,CAAET,QAAS,CAAC;MAC7B,IAAKL,QAAQ,EAAG;QACfA,QAAQ,CAAEK,QAAS,CAAC;MACrB;IACD,CAAG;IAAAF,QAAA,eAEHN,KAAA,CAACX,IAAI;MAAAiB,QAAA,gBACJR,IAAA,CAACP,QAAQ;QAAAe,QAAA,eACRR,IAAA,CAACJ,SAAS;UAAC2B,IAAI,EAAGX,gBAAgB,EAAEW;QAAM,CAAE;MAAC,CACpC,CAAC,eACXvB,IAAA,CAACR,SAAS;QAACgC,KAAK,EAAG;UAAEC,SAAS,EAAE;QAAO,CAAG;QAAAjB,QAAA,eACzCR,IAAA,CAACV,QAAQ;UAAAkB,QAAA,EAAGK;QAAU,CAAY;MAAC,CACzB,CAAC;IAAA,CACP;EAAC,CACA,CAAC;AAEX","ignoreList":[]}
|
|
@@ -58,7 +58,6 @@ export function BlockSettingsDropdown({
|
|
|
58
58
|
const firstBlockClientId = clientIds[0];
|
|
59
59
|
const {
|
|
60
60
|
firstParentClientId,
|
|
61
|
-
onlyBlock,
|
|
62
61
|
parentBlockType,
|
|
63
62
|
previousBlockClientId,
|
|
64
63
|
selectedBlockClientIds,
|
|
@@ -66,7 +65,6 @@ export function BlockSettingsDropdown({
|
|
|
66
65
|
isContentOnly
|
|
67
66
|
} = useSelect(select => {
|
|
68
67
|
const {
|
|
69
|
-
getBlockCount,
|
|
70
68
|
getBlockName,
|
|
71
69
|
getBlockRootClientId,
|
|
72
70
|
getPreviousBlockClientId,
|
|
@@ -82,7 +80,6 @@ export function BlockSettingsDropdown({
|
|
|
82
80
|
const parentBlockName = _firstParentClientId && getBlockName(_firstParentClientId);
|
|
83
81
|
return {
|
|
84
82
|
firstParentClientId: _firstParentClientId,
|
|
85
|
-
onlyBlock: 1 === getBlockCount(_firstParentClientId),
|
|
86
83
|
parentBlockType: _firstParentClientId && (getActiveBlockVariation(parentBlockName, getBlockAttributes(_firstParentClientId)) || getBlockType(parentBlockName)),
|
|
87
84
|
previousBlockClientId: getPreviousBlockClientId(firstBlockClientId),
|
|
88
85
|
selectedBlockClientIds: getSelectedBlockClientIds(),
|
|
@@ -153,6 +150,7 @@ export function BlockSettingsDropdown({
|
|
|
153
150
|
setOpenedBlockSettingsMenu(undefined);
|
|
154
151
|
}
|
|
155
152
|
}
|
|
153
|
+
const shouldShowBlockParentMenuItem = !parentBlockIsSelected && !!firstParentClientId;
|
|
156
154
|
return /*#__PURE__*/_jsx(BlockActions, {
|
|
157
155
|
clientIds: clientIds,
|
|
158
156
|
__experimentalUpdateSelection: !__experimentalSelectBlock,
|
|
@@ -160,88 +158,93 @@ export function BlockSettingsDropdown({
|
|
|
160
158
|
canCopyStyles,
|
|
161
159
|
canDuplicate,
|
|
162
160
|
canInsertBlock,
|
|
163
|
-
canMove,
|
|
164
161
|
canRemove,
|
|
165
162
|
onDuplicate,
|
|
166
163
|
onInsertAfter,
|
|
167
164
|
onInsertBefore,
|
|
168
165
|
onRemove,
|
|
169
166
|
onCopy,
|
|
170
|
-
onPasteStyles
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
shortcut:
|
|
206
|
-
|
|
167
|
+
onPasteStyles
|
|
168
|
+
}) => {
|
|
169
|
+
// It is possible that some plugins register fills for this menu
|
|
170
|
+
// even if Core doesn't render anything in the block settings menu.
|
|
171
|
+
// in which case, we may want to render the menu anyway.
|
|
172
|
+
// That said for now, we can start more conservative.
|
|
173
|
+
const isEmpty = !canRemove && !canDuplicate && !canInsertBlock && isContentOnly;
|
|
174
|
+
if (isEmpty) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
return /*#__PURE__*/_jsx(DropdownMenu, {
|
|
178
|
+
icon: moreVertical,
|
|
179
|
+
label: __('Options'),
|
|
180
|
+
className: "block-editor-block-settings-menu",
|
|
181
|
+
popoverProps: POPOVER_PROPS,
|
|
182
|
+
open: open,
|
|
183
|
+
onToggle: onToggle,
|
|
184
|
+
noIcons: true,
|
|
185
|
+
...props,
|
|
186
|
+
children: ({
|
|
187
|
+
onClose
|
|
188
|
+
}) => /*#__PURE__*/_jsxs(_Fragment, {
|
|
189
|
+
children: [/*#__PURE__*/_jsxs(MenuGroup, {
|
|
190
|
+
children: [/*#__PURE__*/_jsx(__unstableBlockSettingsMenuFirstItem.Slot, {
|
|
191
|
+
fillProps: {
|
|
192
|
+
onClose
|
|
193
|
+
}
|
|
194
|
+
}), shouldShowBlockParentMenuItem && /*#__PURE__*/_jsx(BlockParentSelectorMenuItem, {
|
|
195
|
+
parentClientId: firstParentClientId,
|
|
196
|
+
parentBlockType: parentBlockType
|
|
197
|
+
}), count === 1 && /*#__PURE__*/_jsx(BlockHTMLConvertButton, {
|
|
198
|
+
clientId: firstBlockClientId
|
|
199
|
+
}), !isContentOnly && /*#__PURE__*/_jsx(CopyMenuItem, {
|
|
200
|
+
clientIds: clientIds,
|
|
201
|
+
onCopy: onCopy,
|
|
202
|
+
shortcut: displayShortcut.primary('c')
|
|
203
|
+
}), canDuplicate && /*#__PURE__*/_jsx(MenuItem, {
|
|
204
|
+
onClick: pipe(onClose, onDuplicate, updateSelectionAfterDuplicate),
|
|
205
|
+
shortcut: shortcuts.duplicate,
|
|
206
|
+
children: __('Duplicate')
|
|
207
|
+
}), canInsertBlock && !isContentOnly && /*#__PURE__*/_jsxs(_Fragment, {
|
|
208
|
+
children: [/*#__PURE__*/_jsx(MenuItem, {
|
|
209
|
+
onClick: pipe(onClose, onInsertBefore),
|
|
210
|
+
shortcut: shortcuts.insertBefore,
|
|
211
|
+
children: __('Add before')
|
|
212
|
+
}), /*#__PURE__*/_jsx(MenuItem, {
|
|
213
|
+
onClick: pipe(onClose, onInsertAfter),
|
|
214
|
+
shortcut: shortcuts.insertAfter,
|
|
215
|
+
children: __('Add after')
|
|
216
|
+
})]
|
|
217
|
+
})]
|
|
218
|
+
}), canCopyStyles && !isContentOnly && /*#__PURE__*/_jsxs(MenuGroup, {
|
|
219
|
+
children: [/*#__PURE__*/_jsx(CopyMenuItem, {
|
|
220
|
+
clientIds: clientIds,
|
|
221
|
+
onCopy: onCopy,
|
|
222
|
+
label: __('Copy styles')
|
|
207
223
|
}), /*#__PURE__*/_jsx(MenuItem, {
|
|
208
|
-
onClick:
|
|
209
|
-
|
|
210
|
-
children: __('Add after')
|
|
224
|
+
onClick: onPasteStyles,
|
|
225
|
+
children: __('Paste styles')
|
|
211
226
|
})]
|
|
227
|
+
}), /*#__PURE__*/_jsx(BlockSettingsMenuControls.Slot, {
|
|
228
|
+
fillProps: {
|
|
229
|
+
onClose,
|
|
230
|
+
count,
|
|
231
|
+
firstBlockClientId
|
|
232
|
+
},
|
|
233
|
+
clientIds: clientIds
|
|
234
|
+
}), typeof children === 'function' ? children({
|
|
235
|
+
onClose
|
|
236
|
+
}) : Children.map(child => cloneElement(child, {
|
|
237
|
+
onClose
|
|
238
|
+
})), canRemove && /*#__PURE__*/_jsx(MenuGroup, {
|
|
239
|
+
children: /*#__PURE__*/_jsx(MenuItem, {
|
|
240
|
+
onClick: pipe(onClose, onRemove, updateSelectionAfterRemove),
|
|
241
|
+
shortcut: shortcuts.remove,
|
|
242
|
+
children: __('Delete')
|
|
243
|
+
})
|
|
212
244
|
})]
|
|
213
|
-
})
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
onCopy: onCopy,
|
|
217
|
-
label: __('Copy styles')
|
|
218
|
-
}), /*#__PURE__*/_jsx(MenuItem, {
|
|
219
|
-
onClick: onPasteStyles,
|
|
220
|
-
children: __('Paste styles')
|
|
221
|
-
})]
|
|
222
|
-
}), /*#__PURE__*/_jsx(BlockSettingsMenuControls.Slot, {
|
|
223
|
-
fillProps: {
|
|
224
|
-
onClose,
|
|
225
|
-
canMove,
|
|
226
|
-
onMoveTo,
|
|
227
|
-
onlyBlock,
|
|
228
|
-
count,
|
|
229
|
-
firstBlockClientId
|
|
230
|
-
},
|
|
231
|
-
clientIds: clientIds
|
|
232
|
-
}), typeof children === 'function' ? children({
|
|
233
|
-
onClose
|
|
234
|
-
}) : Children.map(child => cloneElement(child, {
|
|
235
|
-
onClose
|
|
236
|
-
})), canRemove && /*#__PURE__*/_jsx(MenuGroup, {
|
|
237
|
-
children: /*#__PURE__*/_jsx(MenuItem, {
|
|
238
|
-
onClick: pipe(onClose, onRemove, updateSelectionAfterRemove),
|
|
239
|
-
shortcut: shortcuts.remove,
|
|
240
|
-
children: __('Delete')
|
|
241
|
-
})
|
|
242
|
-
})]
|
|
243
|
-
})
|
|
244
|
-
})
|
|
245
|
+
})
|
|
246
|
+
});
|
|
247
|
+
}
|
|
245
248
|
});
|
|
246
249
|
}
|
|
247
250
|
export default BlockSettingsDropdown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","__","displayShortcut","keyboardShortcutsStore","pipe","useCopyToClipboard","BlockActions","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","BlockParentSelectorMenuItem","blockEditorStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","POPOVER_PROPS","className","placement","CopyMenuItem","clientIds","onCopy","label","shortcut","getBlocksByClientId","ref","copyMenuItemLabel","children","BlockSettingsDropdown","block","__experimentalSelectBlock","props","currentClientId","clientId","count","length","firstBlockClientId","firstParentClientId","onlyBlock","parentBlockType","previousBlockClientId","selectedBlockClientIds","openedBlockSettingsMenu","isContentOnly","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getOpenedBlockSettingsMenu","getBlockEditingMode","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","setOpenedBlockSettingsMenu","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","icon","popoverProps","noIcons","onClose","Slot","fillProps","parentClientId","primary","onClick","map","child"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport { Children, cloneElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport BlockParentSelectorMenuItem from './block-parent-selector-menu-item';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { clientIds, onCopy, label, shortcut } ) {\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst ref = useCopyToClipboard(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\tonCopy\n\t);\n\tconst copyMenuItemLabel = label ? label : __( 'Copy' );\n\treturn (\n\t\t<MenuItem ref={ ref } shortcut={ shortcut }>\n\t\t\t{ copyMenuItemLabel }\n\t\t</MenuItem>\n\t);\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\tchildren,\n\t__experimentalSelectBlock,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst count = clientIds.length;\n\tconst firstBlockClientId = clientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t\topenedBlockSettingsMenu,\n\t\tisContentOnly,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetOpenedBlockSettingsMenu,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t\topenedBlockSettingsMenu: getOpenedBlockSettingsMenu(),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( firstBlockClientId ) === 'contentOnly',\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tasync function updateSelectionAfterDuplicate( clientIdsPromise ) {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ids = await clientIdsPromise;\n\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t}\n\t}\n\n\tfunction updateSelectionAfterRemove() {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t// Focus the first block if there's no previous block nor parent block.\n\t\tif ( ! blockToFocus ) {\n\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t}\n\n\t\t// Only update the selection if the original selection is removed.\n\t\tconst shouldUpdateSelection =\n\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t}\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tfunction onToggle( localOpen ) {\n\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t} else if (\n\t\t\t! localOpen &&\n\t\t\topenedBlockSettingsMenu &&\n\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t) {\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t}\n\t}\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\topen={ open }\n\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\tnoIcons\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<BlockParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! isContentOnly && (\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tshortcut={ displayShortcut.primary(\n\t\t\t\t\t\t\t\t\t\t\t'c'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertBlock && ! isContentOnly && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && ! isContentOnly && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","__","displayShortcut","keyboardShortcutsStore","pipe","useCopyToClipboard","BlockActions","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","BlockParentSelectorMenuItem","blockEditorStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","POPOVER_PROPS","className","placement","CopyMenuItem","clientIds","onCopy","label","shortcut","getBlocksByClientId","ref","copyMenuItemLabel","children","BlockSettingsDropdown","block","__experimentalSelectBlock","props","currentClientId","clientId","count","length","firstBlockClientId","firstParentClientId","parentBlockType","previousBlockClientId","selectedBlockClientIds","openedBlockSettingsMenu","isContentOnly","select","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getOpenedBlockSettingsMenu","getBlockEditingMode","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","setOpenedBlockSettingsMenu","shortcuts","getShortcutRepresentation","duplicate","remove","insertAfter","insertBefore","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","shouldShowBlockParentMenuItem","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertBlock","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","isEmpty","icon","popoverProps","noIcons","onClose","Slot","fillProps","parentClientId","primary","onClick","map","child"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport { Children, cloneElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport BlockParentSelectorMenuItem from './block-parent-selector-menu-item';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { clientIds, onCopy, label, shortcut } ) {\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst ref = useCopyToClipboard(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\tonCopy\n\t);\n\tconst copyMenuItemLabel = label ? label : __( 'Copy' );\n\treturn (\n\t\t<MenuItem ref={ ref } shortcut={ shortcut }>\n\t\t\t{ copyMenuItemLabel }\n\t\t</MenuItem>\n\t);\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\tchildren,\n\t__experimentalSelectBlock,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst count = clientIds.length;\n\tconst firstBlockClientId = clientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t\topenedBlockSettingsMenu,\n\t\tisContentOnly,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetOpenedBlockSettingsMenu,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t\topenedBlockSettingsMenu: getOpenedBlockSettingsMenu(),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( firstBlockClientId ) === 'contentOnly',\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tasync function updateSelectionAfterDuplicate( clientIdsPromise ) {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ids = await clientIdsPromise;\n\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t}\n\t}\n\n\tfunction updateSelectionAfterRemove() {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t// Focus the first block if there's no previous block nor parent block.\n\t\tif ( ! blockToFocus ) {\n\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t}\n\n\t\t// Only update the selection if the original selection is removed.\n\t\tconst shouldUpdateSelection =\n\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t}\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tfunction onToggle( localOpen ) {\n\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t} else if (\n\t\t\t! localOpen &&\n\t\t\topenedBlockSettingsMenu &&\n\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t) {\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t}\n\t}\n\n\tconst shouldShowBlockParentMenuItem =\n\t\t! parentBlockIsSelected && !! firstParentClientId;\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertBlock,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t} ) => {\n\t\t\t\t// It is possible that some plugins register fills for this menu\n\t\t\t\t// even if Core doesn't render anything in the block settings menu.\n\t\t\t\t// in which case, we may want to render the menu anyway.\n\t\t\t\t// That said for now, we can start more conservative.\n\t\t\t\tconst isEmpty =\n\t\t\t\t\t! canRemove &&\n\t\t\t\t\t! canDuplicate &&\n\t\t\t\t\t! canInsertBlock &&\n\t\t\t\t\tisContentOnly;\n\n\t\t\t\tif ( isEmpty ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\t\topen={ open }\n\t\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\t\tnoIcons\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ shouldShowBlockParentMenuItem && (\n\t\t\t\t\t\t\t\t\t\t<BlockParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! isContentOnly && (\n\t\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ displayShortcut.primary(\n\t\t\t\t\t\t\t\t\t\t\t\t'c'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ canInsertBlock && ! isContentOnly && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tshortcut={\n\t\t\t\t\t\t\t\t\t\t\t\t\tshortcuts.insertBefore\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tshortcut={\n\t\t\t\t\t\t\t\t\t\t\t\t\tshortcuts.insertAfter\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t{ canCopyStyles && ! isContentOnly && (\n\t\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t);\n\t\t\t} }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { createSlotFill, MenuGroup,
|
|
4
|
+
import { createSlotFill, MenuGroup, __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
|
|
5
5
|
import { useSelect } from '@wordpress/data';
|
|
6
|
-
import { pipe } from '@wordpress/compose';
|
|
7
|
-
import { __ } from '@wordpress/i18n';
|
|
8
6
|
|
|
9
7
|
/**
|
|
10
8
|
* Internal dependencies
|
|
@@ -77,10 +75,7 @@ const BlockSettingsMenuControlsSlot = ({
|
|
|
77
75
|
clientId: selectedClientIds[0]
|
|
78
76
|
}), showRenameButton && /*#__PURE__*/_jsx(BlockRenameControl, {
|
|
79
77
|
clientId: selectedClientIds[0]
|
|
80
|
-
}), fills,
|
|
81
|
-
onClick: pipe(fillProps?.onClose, fillProps?.onMoveTo),
|
|
82
|
-
children: __('Move to')
|
|
83
|
-
}), selectedClientIds.length === 1 && /*#__PURE__*/_jsx(ModifyContentLockMenuItem, {
|
|
78
|
+
}), fills, selectedClientIds.length === 1 && /*#__PURE__*/_jsx(ModifyContentLockMenuItem, {
|
|
84
79
|
clientId: selectedClientIds[0],
|
|
85
80
|
onClose: fillProps?.onClose
|
|
86
81
|
}), fillProps?.count === 1 && !isContentOnly && /*#__PURE__*/_jsx(BlockModeToggle, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSlotFill","MenuGroup","
|
|
1
|
+
{"version":3,"names":["createSlotFill","MenuGroup","__experimentalStyleProvider","StyleProvider","useSelect","useConvertToGroupButtonProps","ConvertToGroupButton","BlockLockMenuItem","useBlockLock","store","blockEditorStore","BlockModeToggle","ModifyContentLockMenuItem","BlockRenameControl","useBlockRename","jsx","_jsx","jsxs","_jsxs","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","selectedBlocks","selectedClientIds","isContentOnly","select","getBlockNamesByClientId","getSelectedBlockClientIds","getBlockEditingMode","ids","canLock","canRename","showLockButton","length","showRenameButton","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","children","fills","onClose","clientId","count","firstBlockClientId","onToggle","BlockSettingsMenuControls","props","document"],"sources":["@wordpress/block-editor/src/components/block-settings-menu-controls/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockModeToggle from '../block-settings-menu/block-mode-toggle';\nimport { ModifyContentLockMenuItem } from '../content-lock';\nimport { BlockRenameControl, useBlockRename } from '../block-rename';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst { selectedBlocks, selectedClientIds, isContentOnly } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: getBlockNamesByClientId( ids ),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( ids[ 0 ] ) === 'contentOnly',\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst { canRename } = useBlockRename( selectedBlocks[ 0 ] );\n\tconst showLockButton =\n\t\tselectedClientIds.length === 1 && canLock && ! isContentOnly;\n\tconst showRenameButton =\n\t\tselectedClientIds.length === 1 && canRename && ! isContentOnly;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps =\n\t\tuseConvertToGroupButtonProps( selectedClientIds );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton = isGroupable || isUngroupable;\n\n\treturn (\n\t\t<Slot\n\t\t\tfillProps={ {\n\t\t\t\t...fillProps,\n\t\t\t\tselectedBlocks,\n\t\t\t\tselectedClientIds,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showRenameButton && (\n\t\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t\t<ModifyContentLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fillProps?.count === 1 && ! isContentOnly && (\n\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\tclientId={ fillProps?.firstBlockClientId }\n\t\t\t\t\t\t\t\tonToggle={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {Element} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,8 +24,7 @@ function BlockSwitcherDropdownMenuContents({
|
|
|
24
24
|
onClose,
|
|
25
25
|
clientIds,
|
|
26
26
|
hasBlockStyles,
|
|
27
|
-
canRemove
|
|
28
|
-
isUsingBindings
|
|
27
|
+
canRemove
|
|
29
28
|
}) {
|
|
30
29
|
const {
|
|
31
30
|
replaceBlocks,
|
|
@@ -35,20 +34,23 @@ function BlockSwitcherDropdownMenuContents({
|
|
|
35
34
|
const {
|
|
36
35
|
possibleBlockTransformations,
|
|
37
36
|
patterns,
|
|
38
|
-
blocks
|
|
37
|
+
blocks,
|
|
38
|
+
isUsingBindings
|
|
39
39
|
} = useSelect(select => {
|
|
40
40
|
const {
|
|
41
|
+
getBlockAttributes,
|
|
41
42
|
getBlocksByClientId,
|
|
42
43
|
getBlockRootClientId,
|
|
43
44
|
getBlockTransformItems,
|
|
44
45
|
__experimentalGetPatternTransformItems
|
|
45
46
|
} = select(blockEditorStore);
|
|
46
|
-
const rootClientId = getBlockRootClientId(
|
|
47
|
+
const rootClientId = getBlockRootClientId(clientIds[0]);
|
|
47
48
|
const _blocks = getBlocksByClientId(clientIds);
|
|
48
49
|
return {
|
|
49
50
|
blocks: _blocks,
|
|
50
51
|
possibleBlockTransformations: getBlockTransformItems(_blocks, rootClientId),
|
|
51
|
-
patterns: __experimentalGetPatternTransformItems(_blocks, rootClientId)
|
|
52
|
+
patterns: __experimentalGetPatternTransformItems(_blocks, rootClientId),
|
|
53
|
+
isUsingBindings: clientIds.every(clientId => !!getBlockAttributes(clientId)?.metadata?.bindings)
|
|
52
54
|
};
|
|
53
55
|
}, [clientIds]);
|
|
54
56
|
const blockVariationTransformations = useBlockVariationTransforms({
|
|
@@ -145,9 +147,7 @@ const BlockIndicator = ({
|
|
|
145
147
|
})]
|
|
146
148
|
});
|
|
147
149
|
export const BlockSwitcher = ({
|
|
148
|
-
clientIds
|
|
149
|
-
disabled,
|
|
150
|
-
isUsingBindings
|
|
150
|
+
clientIds
|
|
151
151
|
}) => {
|
|
152
152
|
const {
|
|
153
153
|
hasContentOnlyLocking,
|
|
@@ -156,13 +156,15 @@ export const BlockSwitcher = ({
|
|
|
156
156
|
icon,
|
|
157
157
|
invalidBlocks,
|
|
158
158
|
isReusable,
|
|
159
|
-
isTemplate
|
|
159
|
+
isTemplate,
|
|
160
|
+
isDisabled
|
|
160
161
|
} = useSelect(select => {
|
|
161
162
|
const {
|
|
162
163
|
getTemplateLock,
|
|
163
164
|
getBlocksByClientId,
|
|
164
165
|
getBlockAttributes,
|
|
165
|
-
canRemoveBlocks
|
|
166
|
+
canRemoveBlocks,
|
|
167
|
+
getBlockEditingMode
|
|
166
168
|
} = select(blockEditorStore);
|
|
167
169
|
const {
|
|
168
170
|
getBlockStyles,
|
|
@@ -180,6 +182,7 @@ export const BlockSwitcher = ({
|
|
|
180
182
|
}] = _blocks;
|
|
181
183
|
const _isSingleBlockSelected = _blocks.length === 1;
|
|
182
184
|
const blockType = getBlockType(firstBlockName);
|
|
185
|
+
const editingMode = getBlockEditingMode(clientIds[0]);
|
|
183
186
|
let _icon;
|
|
184
187
|
let _hasTemplateLock;
|
|
185
188
|
if (_isSingleBlockSelected) {
|
|
@@ -202,7 +205,8 @@ export const BlockSwitcher = ({
|
|
|
202
205
|
icon: _icon,
|
|
203
206
|
isReusable: _isSingleBlockSelected && isReusableBlock(_blocks[0]),
|
|
204
207
|
isTemplate: _isSingleBlockSelected && isTemplatePart(_blocks[0]),
|
|
205
|
-
hasContentOnlyLocking: _hasTemplateLock
|
|
208
|
+
hasContentOnlyLocking: _hasTemplateLock,
|
|
209
|
+
isDisabled: editingMode !== 'default'
|
|
206
210
|
};
|
|
207
211
|
}, [clientIds]);
|
|
208
212
|
const blockTitle = useBlockDisplayTitle({
|
|
@@ -214,7 +218,7 @@ export const BlockSwitcher = ({
|
|
|
214
218
|
}
|
|
215
219
|
const isSingleBlock = clientIds.length === 1;
|
|
216
220
|
const blockSwitcherLabel = isSingleBlock ? blockTitle : __('Multiple blocks selected');
|
|
217
|
-
const hideDropdown =
|
|
221
|
+
const hideDropdown = isDisabled || !hasBlockStyles && !canRemove || hasContentOnlyLocking;
|
|
218
222
|
if (hideDropdown) {
|
|
219
223
|
return /*#__PURE__*/_jsx(ToolbarGroup, {
|
|
220
224
|
children: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
@@ -258,8 +262,7 @@ export const BlockSwitcher = ({
|
|
|
258
262
|
onClose: onClose,
|
|
259
263
|
clientIds: clientIds,
|
|
260
264
|
hasBlockStyles: hasBlockStyles,
|
|
261
|
-
canRemove: canRemove
|
|
262
|
-
isUsingBindings: isUsingBindings
|
|
265
|
+
canRemove: canRemove
|
|
263
266
|
})
|
|
264
267
|
})
|
|
265
268
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","_n","sprintf","_x","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","__experimentalText","Text","MenuGroup","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","BlockIcon","BlockTransformationsMenu","useBlockVariationTransforms","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","isUsingBindings","replaceBlocks","multiSelect","updateBlockAttributes","possibleBlockTransformations","patterns","blocks","select","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","Array","isArray","_blocks","blockVariationTransformations","selectForMultipleBlocks","insertedBlocks","length","clientId","onBlockTransform","name","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isTemplate","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","className","children","connectedBlockDescription","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockIndicator","icon","showTitle","blockTitle","showColors","BlockSwitcher","disabled","hasContentOnlyLocking","invalidBlocks","isReusable","getTemplateLock","getBlockAttributes","canRemoveBlocks","getBlockStyles","getBlockType","getActiveBlockVariation","some","block","firstBlockName","_isSingleBlockSelected","blockType","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","maximumLength","blockSwitcherLabel","hideDropdown","title","blockSwitcherDescription","toggleProps","label","popoverProps","placement","description","menuProps","orientation"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n\tisUsingBindings,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nconst BlockIndicator = ( { icon, showTitle, blockTitle } ) => (\n\t<>\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\ticon={ icon }\n\t\t\tshowColors\n\t\t/>\n\t\t{ showTitle && blockTitle && (\n\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t{ blockTitle }\n\t\t\t</span>\n\t\t) }\n\t</>\n);\n\nexport const BlockSwitcher = ( { clientIds, disabled, isUsingBindings } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst hideDropdown =\n\t\tdisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIndicator\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowTitle={ isReusable || isTemplate }\n\t\t\t\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIndicator\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowTitle={ isReusable || isTemplate }\n\t\t\t\t\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t\tisUsingBindings={ isUsingBindings }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__","_n","sprintf","_x","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","__experimentalText","Text","MenuGroup","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","BlockIcon","BlockTransformationsMenu","useBlockVariationTransforms","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","possibleBlockTransformations","patterns","blocks","isUsingBindings","select","getBlockAttributes","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","_blocks","every","clientId","metadata","bindings","blockVariationTransformations","selectForMultipleBlocks","insertedBlocks","length","onBlockTransform","name","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isTemplate","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","className","children","connectedBlockDescription","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockIndicator","icon","showTitle","blockTitle","showColors","BlockSwitcher","hasContentOnlyLocking","invalidBlocks","isReusable","isDisabled","getTemplateLock","canRemoveBlocks","getBlockEditingMode","getBlockStyles","getBlockType","getActiveBlockVariation","some","block","firstBlockName","_isSingleBlockSelected","blockType","editingMode","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","maximumLength","blockSwitcherLabel","hideDropdown","disabled","title","blockSwitcherDescription","toggleProps","label","popoverProps","placement","description","menuProps","orientation"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nconst BlockIndicator = ( { icon, showTitle, blockTitle } ) => (\n\t<>\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\ticon={ icon }\n\t\t\tshowColors\n\t\t/>\n\t\t{ showTitle && blockTitle && (\n\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t{ blockTitle }\n\t\t\t</span>\n\t\t) }\n\t</>\n);\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst hideDropdown =\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIndicator\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowTitle={ isReusable || isTemplate }\n\t\t\t\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIndicator\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowTitle={ isReusable || isTemplate }\n\t\t\t\t\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
|