@wordpress/block-editor 12.4.0 → 12.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +1 -0
- package/build/components/block-draggable/index.js +6 -3
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/index.native.js +2 -2
- package/build/components/block-draggable/index.native.js.map +1 -1
- package/build/components/block-edit/edit.js +25 -13
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-heading-level-dropdown/heading-level-icon.js +10 -2
- package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.native.js +4 -3
- package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build/components/block-list/block-outline.native.js +14 -18
- package/build/components/block-list/block-outline.native.js.map +1 -1
- package/build/components/block-list/block.native.js +21 -42
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-lock/toolbar.js +25 -6
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mover/index.native.js +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-parent-selector/index.js +8 -5
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +15 -25
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-settings/button.native.js +2 -2
- package/build/components/block-settings/button.native.js.map +1 -1
- package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +10 -11
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
- package/build/components/block-toolbar/index.js +12 -8
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/index.native.js +62 -3
- package/build/components/block-toolbar/index.native.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +7 -11
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/colors-gradients/control.js +4 -2
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/dimensions-tool/aspect-ratio-tool.js +99 -0
- package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
- package/build/components/dimensions-tool/index.js +207 -0
- package/build/components/dimensions-tool/index.js.map +1 -0
- package/build/components/dimensions-tool/scale-tool.js +111 -0
- package/build/components/dimensions-tool/scale-tool.js.map +1 -0
- package/build/components/dimensions-tool/width-height-tool.js +125 -0
- package/build/components/dimensions-tool/width-height-tool.js.map +1 -0
- package/build/components/global-styles/color-panel.js +22 -16
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +13 -2
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +1 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/get-block-css-selector.js +4 -8
- package/build/components/global-styles/get-block-css-selector.js.map +1 -1
- package/build/components/global-styles/hooks.js +15 -25
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +52 -5
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +12 -18
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +6 -6
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +36 -48
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/iframe/use-compatibility-styles.js +5 -0
- package/build/components/iframe/use-compatibility-styles.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +1 -2
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-size-control/index.js +6 -0
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +3 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +3 -1
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +33 -7
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +7 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/index.js +2 -4
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +21 -32
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +2 -21
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/reusable-block-rename-hint.js +82 -0
- package/build/components/inserter/reusable-block-rename-hint.js.map +1 -0
- package/build/components/inserter/reusable-blocks-tab.js +6 -2
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/tabs.native.js +1 -1
- package/build/components/inserter/tabs.native.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +9 -1
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/link-control/constants.js +1 -1
- package/build/components/link-control/constants.js.map +1 -1
- package/build/components/link-control/index.js +21 -16
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-create-button.js +5 -21
- package/build/components/link-control/search-create-button.js.map +1 -1
- package/build/components/link-control/search-input.js +4 -4
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +13 -30
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/link-control/search-results.js +2 -2
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +2 -3
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/list-view/appender.js +2 -6
- package/build/components/list-view/appender.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +2 -2
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +65 -31
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +2 -2
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/provider/index.js +5 -2
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +21 -0
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/resolution-tool/index.js +55 -0
- package/build/components/resolution-tool/index.js.map +1 -0
- package/build/components/rich-text/content.js +0 -36
- package/build/components/rich-text/content.js.map +1 -1
- package/build/components/rich-text/get-rich-text-values.js +118 -0
- package/build/components/rich-text/get-rich-text-values.js.map +1 -0
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/axial.js +6 -2
- package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/separated.js +5 -1
- package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/single.js +5 -1
- package/build/components/spacing-sizes-control/input-controls/single.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/url-input/index.js +4 -2
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +7 -3
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.native.js +49 -8
- package/build/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build/components/use-setting/index.js +5 -9
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +10 -27
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-mode-control/index.js +70 -0
- package/build/components/writing-mode-control/index.js.map +1 -0
- package/build/hooks/behaviors.js +25 -20
- package/build/hooks/behaviors.js.map +1 -1
- package/build/hooks/margin.js +1 -1
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +1 -1
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/supports.js +7 -1
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +2 -1
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +5 -9
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +16 -3
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +3 -0
- package/build/private-apis.native.js.map +1 -1
- package/build/store/actions.js +196 -2
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +1 -0
- package/build/store/defaults.js.map +1 -1
- package/build/store/index.js +10 -1
- package/build/store/index.js.map +1 -1
- package/build/store/private-actions.js +46 -40
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +8 -9
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +22 -9
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +52 -23
- package/build/store/selectors.js.map +1 -1
- package/build/utils/object.js +38 -2
- package/build/utils/object.js.map +1 -1
- package/build-module/components/block-draggable/index.js +6 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/index.native.js +2 -2
- package/build-module/components/block-draggable/index.native.js.map +1 -1
- package/build-module/components/block-edit/edit.js +27 -10
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +9 -2
- package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.native.js +4 -3
- package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build-module/components/block-list/block-outline.native.js +14 -18
- package/build-module/components/block-list/block-outline.native.js.map +1 -1
- package/build-module/components/block-list/block.native.js +24 -43
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +25 -7
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +3 -3
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +7 -5
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +17 -24
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-settings/button.native.js +3 -3
- package/build-module/components/block-settings/button.native.js.map +1 -1
- package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +13 -13
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +12 -8
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.native.js +60 -4
- package/build-module/components/block-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +8 -11
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +3 -2
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js +87 -0
- package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
- package/build-module/components/dimensions-tool/index.js +195 -0
- package/build-module/components/dimensions-tool/index.js.map +1 -0
- package/build-module/components/dimensions-tool/scale-tool.js +103 -0
- package/build-module/components/dimensions-tool/scale-tool.js.map +1 -0
- package/build-module/components/dimensions-tool/width-height-tool.js +122 -0
- package/build-module/components/dimensions-tool/width-height-tool.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +22 -16
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +13 -2
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +2 -2
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/get-block-css-selector.js +4 -8
- package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +14 -24
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +51 -5
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +13 -18
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +5 -5
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +37 -49
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/iframe/use-compatibility-styles.js +5 -0
- package/build-module/components/iframe/use-compatibility-styles.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +1 -2
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-size-control/index.js +5 -0
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +3 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +3 -1
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +30 -7
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +7 -33
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +3 -4
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +9 -3
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/index.js +2 -4
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +22 -33
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +2 -21
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/reusable-block-rename-hint.js +67 -0
- package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -0
- package/build-module/components/inserter/reusable-blocks-tab.js +5 -2
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/tabs.native.js +1 -1
- package/build-module/components/inserter/tabs.native.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +9 -2
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/link-control/constants.js +1 -1
- package/build-module/components/link-control/constants.js.map +1 -1
- package/build-module/components/link-control/index.js +21 -16
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-create-button.js +7 -20
- package/build-module/components/link-control/search-create-button.js.map +1 -1
- package/build-module/components/link-control/search-input.js +4 -4
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +14 -28
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/link-control/search-results.js +3 -3
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +4 -5
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/list-view/appender.js +2 -6
- package/build-module/components/list-view/appender.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +2 -2
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +66 -33
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +2 -2
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/provider/index.js +5 -2
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +21 -0
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/resolution-tool/index.js +45 -0
- package/build-module/components/resolution-tool/index.js.map +1 -0
- package/build-module/components/rich-text/content.js +1 -36
- package/build-module/components/rich-text/content.js.map +1 -1
- package/build-module/components/rich-text/get-rich-text-values.js +105 -0
- package/build-module/components/rich-text/get-rich-text-values.js.map +1 -0
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/axial.js +7 -3
- package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/separated.js +6 -2
- package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/single.js +6 -2
- package/build-module/components/spacing-sizes-control/input-controls/single.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +1 -1
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +7 -3
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.native.js +50 -8
- package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
- package/build-module/components/use-setting/index.js +5 -9
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +8 -26
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +57 -0
- package/build-module/components/writing-mode-control/index.js.map +1 -0
- package/build-module/hooks/behaviors.js +26 -20
- package/build-module/hooks/behaviors.js.map +1 -1
- package/build-module/hooks/margin.js +1 -1
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +1 -1
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/supports.js +7 -1
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +2 -1
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +6 -9
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +11 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +2 -0
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/actions.js +193 -3
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +1 -0
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/index.js +10 -1
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/private-actions.js +45 -36
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +5 -5
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +22 -9
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +49 -21
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/object.js +34 -2
- package/build-module/utils/object.js.map +1 -1
- package/build-style/content-rtl.css +4 -0
- package/build-style/content.css +4 -0
- package/build-style/style-rtl.css +137 -129
- package/build-style/style.css +137 -129
- package/package.json +33 -32
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -6
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -5
- package/src/components/block-controls/README.md +89 -0
- package/src/components/block-draggable/index.js +13 -4
- package/src/components/block-draggable/index.native.js +7 -3
- package/src/components/block-draggable/style.scss +1 -0
- package/src/components/block-draggable/test/index.native.js +0 -54
- package/src/components/block-edit/edit.js +26 -9
- package/src/components/block-edit/test/edit.js +1 -1
- package/src/components/block-heading-level-dropdown/heading-level-icon.js +6 -1
- package/src/components/block-heading-level-dropdown/index.native.js +8 -4
- package/src/components/block-inspector/style.scss +2 -1
- package/src/components/block-list/block-outline.native.js +26 -25
- package/src/components/block-list/block.native.js +24 -38
- package/src/components/block-list/block.native.scss +18 -40
- package/src/components/block-list/style.native.scss +3 -3
- package/src/components/block-lock/toolbar.js +34 -6
- package/src/components/block-mover/index.native.js +3 -3
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +16 -6
- package/src/components/block-parent-selector/index.js +13 -8
- package/src/components/block-removal-warning-modal/index.js +17 -33
- package/src/components/block-settings/button.native.js +12 -6
- package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +19 -18
- package/src/components/block-toolbar/index.js +11 -9
- package/src/components/block-toolbar/index.native.js +86 -6
- package/src/components/{block-mobile-toolbar/test/block-actions-menu.native.js → block-toolbar/test/block-toolbar-menu.native.js} +20 -54
- package/src/components/block-toolbar/test/index.native.js +42 -0
- package/src/components/block-tools/block-contextual-toolbar.js +5 -11
- package/src/components/block-tools/style.scss +73 -26
- package/src/components/button-block-appender/styles.native.scss +2 -2
- package/src/components/caption/README.md +49 -0
- package/src/components/colors-gradients/control.js +3 -2
- package/src/components/default-block-appender/content.scss +11 -0
- package/src/components/dimensions-tool/aspect-ratio-tool.js +124 -0
- package/src/components/dimensions-tool/index.js +212 -0
- package/src/components/dimensions-tool/scale-tool.js +124 -0
- package/src/components/dimensions-tool/stories/aspect-ratio-tool.js +52 -0
- package/src/components/dimensions-tool/stories/index.js +54 -0
- package/src/components/dimensions-tool/stories/scale-tool.js +48 -0
- package/src/components/dimensions-tool/stories/width-height-tool.js +54 -0
- package/src/components/dimensions-tool/test/index.js +641 -0
- package/src/components/dimensions-tool/width-height-tool.js +113 -0
- package/src/components/font-family/README.md +71 -0
- package/src/components/global-styles/color-panel.js +24 -17
- package/src/components/global-styles/dimensions-panel.js +8 -2
- package/src/components/global-styles/filters-panel.js +2 -2
- package/src/components/global-styles/get-block-css-selector.js +5 -9
- package/src/components/global-styles/hooks.js +22 -26
- package/src/components/global-styles/typography-panel.js +57 -5
- package/src/components/global-styles/use-global-styles-output.js +36 -18
- package/src/components/global-styles/utils.js +15 -6
- package/src/components/iframe/index.js +30 -56
- package/src/components/iframe/use-compatibility-styles.js +5 -0
- package/src/components/image-editor/aspect-ratio-dropdown.js +1 -1
- package/src/components/image-editor/use-save-image.js +0 -1
- package/src/components/image-size-control/index.js +6 -0
- package/src/components/index.js +1 -0
- package/src/components/inner-blocks/README.md +10 -0
- package/src/components/inner-blocks/index.js +4 -0
- package/src/components/inner-blocks/index.native.js +4 -0
- package/src/components/inner-blocks/use-nested-settings-update.js +32 -5
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +8 -2
- package/src/components/inserter/block-patterns-tab.js +8 -56
- package/src/components/inserter/hooks/use-block-types-state.js +3 -4
- package/src/components/inserter/hooks/use-patterns-state.js +35 -19
- package/src/components/inserter/index.js +2 -3
- package/src/components/inserter/index.native.js +17 -36
- package/src/components/inserter/media-tab/hooks.js +2 -22
- package/src/components/inserter/reusable-block-rename-hint.js +69 -0
- package/src/components/inserter/reusable-blocks-tab.js +5 -1
- package/src/components/inserter/reusable-blocks-tab.native.js +2 -2
- package/src/components/inserter/style.native.scss +10 -15
- package/src/components/inserter/style.scss +28 -0
- package/src/components/inserter/tabs.native.js +5 -1
- package/src/components/inserter-draggable-blocks/index.js +13 -2
- package/src/components/link-control/constants.js +1 -1
- package/src/components/link-control/index.js +36 -29
- package/src/components/link-control/search-create-button.js +8 -26
- package/src/components/link-control/search-input.js +4 -3
- package/src/components/link-control/search-item.js +21 -43
- package/src/components/link-control/search-results.js +48 -46
- package/src/components/link-control/settings-drawer.js +6 -5
- package/src/components/link-control/style.scss +58 -123
- package/src/components/link-control/test/index.js +161 -123
- package/src/components/list-view/appender.js +5 -6
- package/src/components/list-view/style.scss +1 -2
- package/src/components/list-view/use-list-view-client-ids.js +2 -2
- package/src/components/media-placeholder/index.native.js +108 -59
- package/src/components/media-placeholder/styles.native.scss +59 -24
- package/src/components/media-replace-flow/test/index.js +1 -1
- package/src/components/panel-color-settings/README.md +98 -0
- package/src/components/preview-options/README.md +18 -17
- package/src/components/preview-options/index.js +2 -2
- package/src/components/provider/index.js +9 -2
- package/src/components/provider/test/use-block-sync.js +21 -6
- package/src/components/provider/use-block-sync.js +19 -0
- package/src/components/recursion-provider/README.md +101 -0
- package/src/components/resolution-tool/index.js +56 -0
- package/src/components/resolution-tool/stories/index.js +48 -0
- package/src/components/rich-text/content.js +1 -46
- package/src/components/rich-text/get-rich-text-values.js +105 -0
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
- package/src/components/spacing-sizes-control/input-controls/axial.js +17 -2
- package/src/components/spacing-sizes-control/input-controls/separated.js +17 -2
- package/src/components/spacing-sizes-control/input-controls/single.js +12 -2
- package/src/components/spacing-sizes-control/utils.js +1 -1
- package/src/components/text-transform-control/README.md +44 -0
- package/src/components/url-input/index.js +2 -0
- package/src/components/use-block-display-information/index.js +12 -5
- package/src/components/use-block-drop-zone/index.native.js +65 -28
- package/src/components/use-setting/index.js +8 -8
- package/src/components/writing-flow/use-tab-nav.js +10 -33
- package/src/components/writing-mode-control/index.js +68 -0
- package/src/components/writing-mode-control/style.scss +18 -0
- package/src/hooks/behaviors.js +25 -16
- package/src/hooks/margin.js +4 -1
- package/src/hooks/padding.js +4 -1
- package/src/hooks/supports.js +7 -0
- package/src/hooks/typography.js +2 -0
- package/src/hooks/utils.js +8 -7
- package/src/private-apis.js +13 -1
- package/src/private-apis.native.js +2 -0
- package/src/store/actions.js +195 -3
- package/src/store/defaults.js +1 -0
- package/src/store/index.js +10 -0
- package/src/store/private-actions.js +39 -39
- package/src/store/private-selectors.js +5 -8
- package/src/store/reducer.js +22 -9
- package/src/store/selectors.js +87 -25
- package/src/store/test/actions.js +114 -0
- package/src/store/test/private-actions.js +56 -0
- package/src/store/test/private-selectors.js +5 -5
- package/src/store/test/reducer.js +14 -7
- package/src/store/test/selectors.js +1 -1
- package/src/utils/object.js +32 -2
- package/src/utils/test/object.js +36 -0
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
- package/build/components/block-mobile-toolbar/index.native.js +0 -135
- package/build/components/block-mobile-toolbar/index.native.js.map +0 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +0 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +0 -116
- package/build-module/components/block-mobile-toolbar/index.native.js.map +0 -1
- package/src/components/block-mobile-toolbar/index.native.js +0 -127
- package/src/components/block-mobile-toolbar/style.native.scss +0 -16
- /package/src/components/{block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap → block-toolbar/test/__snapshots__/block-toolbar-menu.native.js.snap} +0 -0
|
@@ -6,41 +6,34 @@ import { createElement } from "@wordpress/element";
|
|
|
6
6
|
import { useEffect } from '@wordpress/element';
|
|
7
7
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
8
8
|
import { Modal, Button, __experimentalHStack as HStack } from '@wordpress/components';
|
|
9
|
-
import { __
|
|
9
|
+
import { __ } from '@wordpress/i18n';
|
|
10
10
|
/**
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { store as blockEditorStore } from '../../store';
|
|
15
|
-
import { unlock } from '../../lock-unlock';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
// @see https://github.com/WordPress/gutenberg/pull/51145
|
|
21
|
-
|
|
22
|
-
export const blockTypePromptMessages = {
|
|
23
|
-
'core/query': __('Query Loop displays a list of posts or pages.'),
|
|
24
|
-
'core/post-content': __('Post Content displays the content of a post or page.')
|
|
25
|
-
};
|
|
26
|
-
export function BlockRemovalWarningModal() {
|
|
15
|
+
import { unlock } from '../../lock-unlock';
|
|
16
|
+
export function BlockRemovalWarningModal({
|
|
17
|
+
rules
|
|
18
|
+
}) {
|
|
27
19
|
const {
|
|
28
20
|
clientIds,
|
|
29
21
|
selectPrevious,
|
|
30
22
|
blockNamesForPrompt
|
|
31
23
|
} = useSelect(select => unlock(select(blockEditorStore)).getRemovalPromptData());
|
|
32
24
|
const {
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
clearBlockRemovalPrompt,
|
|
26
|
+
setBlockRemovalRules,
|
|
35
27
|
privateRemoveBlocks
|
|
36
|
-
} = unlock(useDispatch(blockEditorStore)); //
|
|
28
|
+
} = unlock(useDispatch(blockEditorStore)); // Load block removal rules, simultaneously signalling that the block
|
|
29
|
+
// removal prompt is in place.
|
|
37
30
|
|
|
38
31
|
useEffect(() => {
|
|
39
|
-
|
|
32
|
+
setBlockRemovalRules(rules);
|
|
40
33
|
return () => {
|
|
41
|
-
|
|
34
|
+
setBlockRemovalRules();
|
|
42
35
|
};
|
|
43
|
-
}, [
|
|
36
|
+
}, [rules, setBlockRemovalRules]);
|
|
44
37
|
|
|
45
38
|
if (!blockNamesForPrompt) {
|
|
46
39
|
return;
|
|
@@ -50,24 +43,24 @@ export function BlockRemovalWarningModal() {
|
|
|
50
43
|
privateRemoveBlocks(clientIds, selectPrevious,
|
|
51
44
|
/* force */
|
|
52
45
|
true);
|
|
53
|
-
|
|
46
|
+
clearBlockRemovalPrompt();
|
|
54
47
|
};
|
|
55
48
|
|
|
56
49
|
return createElement(Modal, {
|
|
57
50
|
title: __('Are you sure?'),
|
|
58
|
-
onRequestClose:
|
|
59
|
-
}, blockNamesForPrompt.length === 1 ? createElement("p", null,
|
|
51
|
+
onRequestClose: clearBlockRemovalPrompt
|
|
52
|
+
}, blockNamesForPrompt.length === 1 ? createElement("p", null, rules[blockNamesForPrompt[0]]) : createElement("ul", {
|
|
60
53
|
style: {
|
|
61
54
|
listStyleType: 'disc',
|
|
62
55
|
paddingLeft: '1rem'
|
|
63
56
|
}
|
|
64
57
|
}, blockNamesForPrompt.map(name => createElement("li", {
|
|
65
58
|
key: name
|
|
66
|
-
},
|
|
59
|
+
}, rules[name]))), createElement("p", null, blockNamesForPrompt.length > 1 ? __('Removing these blocks is not advised.') : __('Removing this block is not advised.')), createElement(HStack, {
|
|
67
60
|
justify: "right"
|
|
68
61
|
}, createElement(Button, {
|
|
69
62
|
variant: "tertiary",
|
|
70
|
-
onClick:
|
|
63
|
+
onClick: clearBlockRemovalPrompt
|
|
71
64
|
}, __('Cancel')), createElement(Button, {
|
|
72
65
|
variant: "primary",
|
|
73
66
|
onClick: onConfirmRemoval
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"names":["useEffect","useDispatch","useSelect","Modal","Button","__experimentalHStack","HStack","__","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"names":["useEffect","useDispatch","useSelect","Modal","Button","__experimentalHStack","HStack","__","store","blockEditorStore","unlock","BlockRemovalWarningModal","rules","clientIds","selectPrevious","blockNamesForPrompt","select","getRemovalPromptData","clearBlockRemovalPrompt","setBlockRemovalRules","privateRemoveBlocks","onConfirmRemoval","length","listStyleType","paddingLeft","map","name"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,oBAA1B;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SACCC,KADD,EAECC,MAFD,EAGCC,oBAAoB,IAAIC,MAHzB,QAIO,uBAJP;AAKA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AAEA,OAAO,SAASC,wBAAT,CAAmC;AAAEC,EAAAA;AAAF,CAAnC,EAA+C;AACrD,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,cAAb;AAA6BC,IAAAA;AAA7B,MAAqDb,SAAS,CACjEc,MAAF,IACCN,MAAM,CAAEM,MAAM,CAAEP,gBAAF,CAAR,CAAN,CAAqCQ,oBAArC,EAFkE,CAApE;AAKA,QAAM;AACLC,IAAAA,uBADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA;AAHK,MAIFV,MAAM,CAAET,WAAW,CAAEQ,gBAAF,CAAb,CAJV,CANqD,CAYrD;AACA;;AACAT,EAAAA,SAAS,CAAE,MAAM;AAChBmB,IAAAA,oBAAoB,CAAEP,KAAF,CAApB;AACA,WAAO,MAAM;AACZO,MAAAA,oBAAoB;AACpB,KAFD;AAGA,GALQ,EAKN,CAAEP,KAAF,EAASO,oBAAT,CALM,CAAT;;AAOA,MAAK,CAAEJ,mBAAP,EAA6B;AAC5B;AACA;;AAED,QAAMM,gBAAgB,GAAG,MAAM;AAC9BD,IAAAA,mBAAmB,CAAEP,SAAF,EAAaC,cAAb;AAA6B;AAAY,QAAzC,CAAnB;AACAI,IAAAA,uBAAuB;AACvB,GAHD;;AAKA,SACC,cAAC,KAAD;AACC,IAAA,KAAK,EAAGX,EAAE,CAAE,eAAF,CADX;AAEC,IAAA,cAAc,EAAGW;AAFlB,KAIGH,mBAAmB,CAACO,MAApB,KAA+B,CAA/B,GACD,yBAAKV,KAAK,CAAEG,mBAAmB,CAAE,CAAF,CAArB,CAAV,CADC,GAGD;AAAI,IAAA,KAAK,EAAG;AAAEQ,MAAAA,aAAa,EAAE,MAAjB;AAAyBC,MAAAA,WAAW,EAAE;AAAtC;AAAZ,KACGT,mBAAmB,CAACU,GAApB,CAA2BC,IAAF,IAC1B;AAAI,IAAA,GAAG,EAAGA;AAAV,KAAmBd,KAAK,CAAEc,IAAF,CAAxB,CADC,CADH,CAPF,EAaC,yBACGX,mBAAmB,CAACO,MAApB,GAA6B,CAA7B,GACCf,EAAE,CAAE,uCAAF,CADH,GAECA,EAAE,CAAE,qCAAF,CAHN,CAbD,EAkBC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC;AAAhB,KACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGW;AAArC,KACGX,EAAE,CAAE,QAAF,CADL,CADD,EAIC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAGc;AAApC,KACGd,EAAE,CAAE,QAAF,CADL,CAJD,CAlBD,CADD;AA6BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function BlockRemovalWarningModal( { rules } ) {\n\tconst { clientIds, selectPrevious, blockNamesForPrompt } = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearBlockRemovalPrompt,\n\t\tsetBlockRemovalRules,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Load block removal rules, simultaneously signalling that the block\n\t// removal prompt is in place.\n\tuseEffect( () => {\n\t\tsetBlockRemovalRules( rules );\n\t\treturn () => {\n\t\t\tsetBlockRemovalRules();\n\t\t};\n\t}, [ rules, setBlockRemovalRules ] );\n\n\tif ( ! blockNamesForPrompt ) {\n\t\treturn;\n\t}\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearBlockRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Are you sure?' ) }\n\t\t\tonRequestClose={ clearBlockRemovalPrompt }\n\t\t>\n\t\t\t{ blockNamesForPrompt.length === 1 ? (\n\t\t\t\t<p>{ rules[ blockNamesForPrompt[ 0 ] ] }</p>\n\t\t\t) : (\n\t\t\t\t<ul style={ { listStyleType: 'disc', paddingLeft: '1rem' } }>\n\t\t\t\t\t{ blockNamesForPrompt.map( ( name ) => (\n\t\t\t\t\t\t<li key={ name }>{ rules[ name ] }</li>\n\t\t\t\t\t) ) }\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t\t<p>\n\t\t\t\t{ blockNamesForPrompt.length > 1\n\t\t\t\t\t? __( 'Removing these blocks is not advised.' )\n\t\t\t\t\t: __( 'Removing this block is not advised.' ) }\n\t\t\t</p>\n\t\t\t<HStack justify=\"right\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ clearBlockRemovalPrompt }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" onClick={ onConfirmRemoval }>\n\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</Modal>\n\t);\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { createElement } from "@wordpress/element";
|
|
|
3
3
|
/**
|
|
4
4
|
* WordPress dependencies
|
|
5
5
|
*/
|
|
6
|
-
import { createSlotFill, ToolbarButton } from '@wordpress/components';
|
|
6
|
+
import { createSlotFill, ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
7
7
|
import { __ } from '@wordpress/i18n';
|
|
8
8
|
import { withDispatch } from '@wordpress/data';
|
|
9
9
|
import { cog } from '@wordpress/icons';
|
|
@@ -14,11 +14,11 @@ const {
|
|
|
14
14
|
|
|
15
15
|
const SettingsButton = ({
|
|
16
16
|
openGeneralSidebar
|
|
17
|
-
}) => createElement(ToolbarButton, {
|
|
17
|
+
}) => createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
18
18
|
title: __('Open Settings'),
|
|
19
19
|
icon: cog,
|
|
20
20
|
onClick: openGeneralSidebar
|
|
21
|
-
});
|
|
21
|
+
}));
|
|
22
22
|
|
|
23
23
|
const SettingsButtonFill = props => createElement(Fill, null, createElement(SettingsButton, { ...props
|
|
24
24
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-settings/button.native.js"],"names":["createSlotFill","ToolbarButton","__","withDispatch","cog","Fill","Slot","SettingsButton","openGeneralSidebar","SettingsButtonFill","props","SettingsToolbarButton","dispatch"],"mappings":";;AAAA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-settings/button.native.js"],"names":["createSlotFill","ToolbarButton","ToolbarGroup","__","withDispatch","cog","Fill","Slot","SettingsButton","openGeneralSidebar","SettingsButtonFill","props","SettingsToolbarButton","dispatch"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,cADD,EAECC,aAFD,EAGCC,YAHD,QAIO,uBAJP;AAKA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,YAAT,QAA6B,iBAA7B;AACA,SAASC,GAAT,QAAoB,kBAApB;AAEA,MAAM;AAAEC,EAAAA,IAAF;AAAQC,EAAAA;AAAR,IAAiBP,cAAc,CAAE,uBAAF,CAArC;;AAEA,MAAMQ,cAAc,GAAG,CAAE;AAAEC,EAAAA;AAAF,CAAF,KACtB,cAAC,YAAD,QACC,cAAC,aAAD;AACC,EAAA,KAAK,EAAGN,EAAE,CAAE,eAAF,CADX;AAEC,EAAA,IAAI,EAAGE,GAFR;AAGC,EAAA,OAAO,EAAGI;AAHX,EADD,CADD;;AAUA,MAAMC,kBAAkB,GAAKC,KAAF,IAC1B,cAAC,IAAD,QACC,cAAC,cAAD,OAAqBA;AAArB,EADD,CADD;;AAMA,MAAMC,qBAAqB,GAAGR,YAAY,CAAIS,QAAF,IAAgB;AAC3D,QAAM;AAAEJ,IAAAA;AAAF,MAAyBI,QAAQ,CAAE,gBAAF,CAAvC;AAEA,SAAO;AACNJ,IAAAA,kBAAkB,EAAE,MAAMA,kBAAkB,CAAE,iBAAF;AADtC,GAAP;AAGA,CANyC,CAAZ,CAMzBC,kBANyB,CAA9B;AAQAE,qBAAqB,CAACL,IAAtB,GAA6BA,IAA7B;AAEA,eAAeK,qBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { withDispatch } from '@wordpress/data';\nimport { cog } from '@wordpress/icons';\n\nconst { Fill, Slot } = createSlotFill( 'SettingsToolbarButton' );\n\nconst SettingsButton = ( { openGeneralSidebar } ) => (\n\t<ToolbarGroup>\n\t\t<ToolbarButton\n\t\t\ttitle={ __( 'Open Settings' ) }\n\t\t\ticon={ cog }\n\t\t\tonClick={ openGeneralSidebar }\n\t\t/>\n\t</ToolbarGroup>\n);\n\nconst SettingsButtonFill = ( props ) => (\n\t<Fill>\n\t\t<SettingsButton { ...props } />\n\t</Fill>\n);\n\nconst SettingsToolbarButton = withDispatch( ( dispatch ) => {\n\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\n\treturn {\n\t\topenGeneralSidebar: () => openGeneralSidebar( 'edit-post/block' ),\n\t};\n} )( SettingsButtonFill );\n\nSettingsToolbarButton.Slot = Slot;\n\nexport default SettingsToolbarButton;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createElement
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* External dependencies
|
|
@@ -8,7 +8,7 @@ import { Platform, findNodeHandle } from 'react-native';
|
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { getClipboard, setClipboard, ToolbarButton, Picker } from '@wordpress/components';
|
|
11
|
+
import { getClipboard, setClipboard, ToolbarGroup, ToolbarButton, Picker } from '@wordpress/components';
|
|
12
12
|
import { getBlockType, getDefaultBlockName, hasBlockSupport, serialize, rawHandler, createBlock, isUnmodifiedDefaultBlock, isReusableBlock } from '@wordpress/blocks';
|
|
13
13
|
import { __, sprintf } from '@wordpress/i18n';
|
|
14
14
|
import { withDispatch, withSelect, useSelect } from '@wordpress/data';
|
|
@@ -79,7 +79,9 @@ const BlockActionsMenu = ({
|
|
|
79
79
|
}
|
|
80
80
|
} = getMoversSetup(isStackedHorizontally, moversOptions); // Check if selected block is Groupable and/or Ungroupable.
|
|
81
81
|
|
|
82
|
-
const convertToGroupButtonProps = useConvertToGroupButtonProps(
|
|
82
|
+
const convertToGroupButtonProps = useConvertToGroupButtonProps( // `selectedBlockClientId` can be undefined in some cases where this
|
|
83
|
+
// component gets re-rendered right after the block is removed.
|
|
84
|
+
selectedBlockClientId ? [selectedBlockClientId] : []);
|
|
83
85
|
const {
|
|
84
86
|
isGroupable,
|
|
85
87
|
isUngroupable
|
|
@@ -175,14 +177,12 @@ const BlockActionsMenu = ({
|
|
|
175
177
|
},
|
|
176
178
|
convertToRegularBlocks: {
|
|
177
179
|
id: 'convertToRegularBlocksOption',
|
|
178
|
-
label: innerBlockCount > 1 ? __('
|
|
180
|
+
label: innerBlockCount > 1 ? __('Detach patterns') : __('Detach pattern'),
|
|
179
181
|
value: 'convertToRegularBlocksOption',
|
|
180
182
|
onSelect: () => {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
/* translators: %s: name of the reusable block */
|
|
185
|
-
__('%s converted to regular block');
|
|
183
|
+
/* translators: %s: name of the synced block */
|
|
184
|
+
const successNotice = __('%s detached');
|
|
185
|
+
|
|
186
186
|
createSuccessNotice(sprintf(successNotice, reusableBlock?.title?.raw || blockTitle));
|
|
187
187
|
convertToRegularBlocks();
|
|
188
188
|
}
|
|
@@ -191,11 +191,11 @@ const BlockActionsMenu = ({
|
|
|
191
191
|
const options = [wrapBlockMover && allOptions.backwardButton, wrapBlockMover && allOptions.forwardButton, wrapBlockSettings && allOptions.settings, !isLocked && selectedBlockPossibleTransformations.length && allOptions.transformButton, canDuplicate && allOptions.copyButton, canDuplicate && allOptions.cutButton, canDuplicate && isPasteEnabled && allOptions.pasteButton, canDuplicate && allOptions.duplicateButton, showConvertToGroupButton && isGroupable && convertToGroupButtons.group, showConvertToGroupButton && isUngroupable && convertToGroupButtons.ungroup, isReusableBlockType && innerBlockCount > 0 && allOptions.convertToRegularBlocks, !isLocked && allOptions.delete].filter(Boolean); // End early if there are no options to show.
|
|
192
192
|
|
|
193
193
|
if (!options.length) {
|
|
194
|
-
return createElement(ToolbarButton, {
|
|
194
|
+
return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
195
195
|
title: __('Open Block Actions Menu'),
|
|
196
196
|
icon: moreHorizontalMobile,
|
|
197
197
|
disabled: true
|
|
198
|
-
});
|
|
198
|
+
}));
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
function onPasteBlock() {
|
|
@@ -224,7 +224,7 @@ const BlockActionsMenu = ({
|
|
|
224
224
|
|
|
225
225
|
const getAnchor = () => anchorNodeRef ? findNodeHandle(anchorNodeRef) : undefined;
|
|
226
226
|
|
|
227
|
-
return createElement(
|
|
227
|
+
return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
228
228
|
title: __('Open Block Actions Menu'),
|
|
229
229
|
onClick: onPickerPresent,
|
|
230
230
|
icon: moreHorizontalMobile,
|
|
@@ -371,4 +371,4 @@ export default compose(withSelect((select, {
|
|
|
371
371
|
removeBlocks
|
|
372
372
|
};
|
|
373
373
|
}), withInstanceId)(BlockActionsMenu);
|
|
374
|
-
//# sourceMappingURL=block-
|
|
374
|
+
//# sourceMappingURL=block-toolbar-menu.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/block-toolbar-menu.native.js"],"names":["Platform","findNodeHandle","getClipboard","setClipboard","ToolbarGroup","ToolbarButton","Picker","getBlockType","getDefaultBlockName","hasBlockSupport","serialize","rawHandler","createBlock","isUnmodifiedDefaultBlock","isReusableBlock","__","sprintf","withDispatch","withSelect","useSelect","withInstanceId","compose","moreHorizontalMobile","useRef","useState","store","noticesStore","reusableBlocksStore","coreStore","getMoversSetup","blockEditorStore","BlockTransformationsMenu","useConvertToGroupButtons","useConvertToGroupButtonProps","BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","canRemove","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","innerBlockCount","select","getBlockCount","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","convertToGroupButtons","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","successNotice","title","raw","options","length","group","ungroup","filter","Boolean","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","accessibilityHint","OS","getAnchor","undefined","hint","EMPTY_BLOCK_LIST","clientId","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","canRemoveBlock","block","blockName","blockType","blockOrder","currentBlockIndex","innerBlocks","every","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlock","clearSelectedBlock","getBlockSelectionEnd","__experimentalConvertBlockToStatic","convertBlockToStatic","setImmediate","args","canReplaceBlock","insertedBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarGroup,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect, useSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n// Disable Reason: Needs to be refactored.\n// eslint-disable-next-line no-restricted-imports\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\tcanRemove,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst innerBlockCount = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockCount( selectedBlockClientId ),\n\t\t[ selectedBlockClientId ]\n\t);\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\t// Check if selected block is Groupable and/or Ungroupable.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps(\n\t\t// `selectedBlockClientId` can be undefined in some cases where this\n\t\t// component gets re-rendered right after the block is removed.\n\t\tselectedBlockClientId ? [ selectedBlockClientId ] : []\n\t);\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel:\n\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t: __( 'Detach pattern' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\t/* translators: %s: name of the synced block */\n\t\t\t\tconst successNotice = __( '%s detached' );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\tsuccessNotice,\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tshowConvertToGroupButton && isGroupable && convertToGroupButtons.group,\n\t\tshowConvertToGroupButton &&\n\t\t\tisUngroupable &&\n\t\t\tconvertToGroupButtons.ungroup,\n\t\tisReusableBlockType &&\n\t\t\tinnerBlockCount > 0 &&\n\t\t\tallOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t].filter( Boolean );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\t\tdisabled={ true }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\ttestID=\"block-actions-menu\"\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n};\n\nconst EMPTY_BLOCK_LIST = [];\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t\tcanRemoveBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst block = getBlock( clientId );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst currentBlockIndex = getBlockIndex( clientId );\n\t\tconst isFirst = currentBlockIndex === 0;\n\t\tconst isLast = currentBlockIndex === blockOrder.length - 1;\n\n\t\tconst innerBlocks = getBlocksByClientId( clientId );\n\n\t\tconst canDuplicate = innerBlocks.every( ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? getBlocksByClientId( selectedBlockClientId )[ 0 ]\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( selectedBlock, rootClientId )\n\t\t\t: EMPTY_BLOCK_LIST;\n\t\tconst canRemove = canRemoveBlock( selectedBlockClientId );\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: currentBlockIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t\tcanRemove,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientId, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlock,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\t\t\tdispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( [ clientId ] );\n\t\t\t\t},\n\t\t\t\tonMoveDown: ( ...args ) =>\n\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId, ...args ),\n\t\t\t\tonMoveUp: ( ...args ) =>\n\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId, ...args ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlock( clientId, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
|
|
@@ -34,9 +34,11 @@ import { unlock } from '../../lock-unlock';
|
|
|
34
34
|
const BlockToolbar = ({
|
|
35
35
|
hideDragHandle
|
|
36
36
|
}) => {
|
|
37
|
+
const {
|
|
38
|
+
getSelectedBlockClientId
|
|
39
|
+
} = useSelect(blockEditorStore);
|
|
37
40
|
const {
|
|
38
41
|
blockClientIds,
|
|
39
|
-
blockClientId,
|
|
40
42
|
blockType,
|
|
41
43
|
hasFixedToolbar,
|
|
42
44
|
isDistractionFree,
|
|
@@ -59,7 +61,6 @@ const BlockToolbar = ({
|
|
|
59
61
|
const settings = getSettings();
|
|
60
62
|
return {
|
|
61
63
|
blockClientIds: selectedBlockClientIds,
|
|
62
|
-
blockClientId: selectedBlockClientId,
|
|
63
64
|
blockType: selectedBlockClientId && getBlockType(getBlockName(selectedBlockClientId)),
|
|
64
65
|
hasFixedToolbar: settings.hasFixedToolbar,
|
|
65
66
|
isDistractionFree: settings.isDistractionFree,
|
|
@@ -68,7 +69,8 @@ const BlockToolbar = ({
|
|
|
68
69
|
isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
|
|
69
70
|
blockEditingMode: getBlockEditingMode(selectedBlockClientId)
|
|
70
71
|
};
|
|
71
|
-
}, []);
|
|
72
|
+
}, []);
|
|
73
|
+
const toolbarWrapperRef = useRef(null); // Handles highlighting the current block outline on hover or focus of the
|
|
72
74
|
// block type toolbar area.
|
|
73
75
|
|
|
74
76
|
const {
|
|
@@ -86,7 +88,7 @@ const BlockToolbar = ({
|
|
|
86
88
|
return;
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
toggleBlockHighlight(
|
|
91
|
+
toggleBlockHighlight(getSelectedBlockClientId(), isFocused);
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
}); // Account for the cases where the block toolbar is rendered within the
|
|
@@ -115,16 +117,18 @@ const BlockToolbar = ({
|
|
|
115
117
|
'is-synced': isSynced
|
|
116
118
|
});
|
|
117
119
|
return createElement("div", {
|
|
118
|
-
className: classes
|
|
119
|
-
|
|
120
|
+
className: classes,
|
|
121
|
+
ref: toolbarWrapperRef
|
|
122
|
+
}, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && createElement(BlockParentSelector, null), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && createElement("div", {
|
|
120
123
|
ref: nodeRef,
|
|
121
124
|
...showMoversGestures
|
|
122
|
-
},
|
|
125
|
+
}, createElement(ToolbarGroup, {
|
|
123
126
|
className: "block-editor-block-toolbar__block-controls"
|
|
124
127
|
}, createElement(BlockSwitcher, {
|
|
125
128
|
clientIds: blockClientIds
|
|
126
129
|
}), !isMultiToolbar && createElement(BlockLockToolbar, {
|
|
127
|
-
clientId: blockClientIds[0]
|
|
130
|
+
clientId: blockClientIds[0],
|
|
131
|
+
wrapperRef: toolbarWrapperRef
|
|
128
132
|
}), createElement(BlockMover, {
|
|
129
133
|
clientIds: blockClientIds,
|
|
130
134
|
hideDragHandle: hideDragHandle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useDispatch","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowMoversGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","getBlockEditingMode","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tblockEditingMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useDispatch","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowMoversGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","getSelectedBlockClientId","blockClientIds","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","getBlockEditingMode","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toolbarWrapperRef","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst { getSelectedBlockClientId } = useSelect( blockEditorStore );\n\tconst {\n\t\tblockClientIds,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tblockEditingMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( getSelectedBlockClientId(), isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes } ref={ toolbarWrapperRef }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t\twrapperRef={ toolbarWrapperRef }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
@@ -3,41 +3,97 @@ import { createElement, Fragment } from "@wordpress/element";
|
|
|
3
3
|
/**
|
|
4
4
|
* WordPress dependencies
|
|
5
5
|
*/
|
|
6
|
-
import { useSelect } from '@wordpress/data';
|
|
6
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
7
|
+
import { useCallback } from '@wordpress/element';
|
|
7
8
|
/**
|
|
8
9
|
* Internal dependencies
|
|
9
10
|
*/
|
|
10
11
|
|
|
12
|
+
import BlockActionsMenu from './block-toolbar-menu';
|
|
11
13
|
import BlockControls from '../block-controls';
|
|
14
|
+
import BlockMover from '../block-mover';
|
|
12
15
|
import UngroupButton from '../ungroup-button';
|
|
16
|
+
import { BlockSettingsButton } from '../block-settings';
|
|
13
17
|
import { store as blockEditorStore } from '../../store';
|
|
14
|
-
|
|
18
|
+
const REMOVE_EMPY_PARENT_BLOCKS = ['core/buttons', 'core/columns', 'core/social-links'];
|
|
19
|
+
export default function BlockToolbar({
|
|
20
|
+
anchorNodeRef
|
|
21
|
+
}) {
|
|
15
22
|
const {
|
|
23
|
+
rootClientId,
|
|
24
|
+
blockClientId,
|
|
16
25
|
isSelected,
|
|
17
|
-
isValidAndVisual
|
|
26
|
+
isValidAndVisual,
|
|
27
|
+
isStackedHorizontally,
|
|
28
|
+
parentBlockName,
|
|
29
|
+
parentNumberOfInnerBlocks
|
|
18
30
|
} = useSelect(select => {
|
|
19
31
|
const {
|
|
32
|
+
getBlockListSettings,
|
|
20
33
|
getBlockMode,
|
|
34
|
+
getBlockName,
|
|
35
|
+
getBlockCount,
|
|
36
|
+
getBlockRootClientId,
|
|
21
37
|
getSelectedBlockClientIds,
|
|
22
38
|
isBlockValid
|
|
23
39
|
} = select(blockEditorStore);
|
|
24
40
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
41
|
+
const selectedBlockClientId = selectedBlockClientIds[0];
|
|
42
|
+
const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
43
|
+
const blockListSettings = getBlockListSettings(blockRootClientId);
|
|
44
|
+
const orientation = blockListSettings?.orientation;
|
|
45
|
+
const isBlockStackedHorizontally = orientation === 'horizontal';
|
|
46
|
+
const parentName = getBlockName(blockRootClientId);
|
|
47
|
+
const numberOfInnerBlocks = getBlockCount(blockRootClientId);
|
|
25
48
|
return {
|
|
49
|
+
rootClientId: blockRootClientId,
|
|
50
|
+
blockClientId: selectedBlockClientId,
|
|
26
51
|
isSelected: selectedBlockClientIds.length > 0,
|
|
52
|
+
isStackedHorizontally: isBlockStackedHorizontally,
|
|
53
|
+
parentBlockName: parentName,
|
|
54
|
+
parentNumberOfInnerBlocks: numberOfInnerBlocks,
|
|
27
55
|
isValidAndVisual: selectedBlockClientIds.length === 1 ? isBlockValid(selectedBlockClientIds[0]) && getBlockMode(selectedBlockClientIds[0]) === 'visual' : false
|
|
28
56
|
};
|
|
29
57
|
}, []);
|
|
58
|
+
const {
|
|
59
|
+
removeBlock
|
|
60
|
+
} = useDispatch(blockEditorStore);
|
|
61
|
+
const onRemove = useCallback(() => {
|
|
62
|
+
// Temp: remove parent block for specific cases where they don't
|
|
63
|
+
// have inner blocks, ideally we should match the behavior as in
|
|
64
|
+
// the Web editor and show a placeholder instead of removing the parent.
|
|
65
|
+
if (REMOVE_EMPY_PARENT_BLOCKS.includes(parentBlockName) && parentNumberOfInnerBlocks === 1) {
|
|
66
|
+
removeBlock(rootClientId);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
removeBlock(blockClientId);
|
|
71
|
+
}, [blockClientId, parentBlockName, parentNumberOfInnerBlocks, removeBlock, rootClientId]);
|
|
30
72
|
|
|
31
73
|
if (!isSelected) {
|
|
32
74
|
return null;
|
|
33
75
|
}
|
|
34
76
|
|
|
35
|
-
return createElement(Fragment, null, isValidAndVisual && createElement(Fragment, null, createElement(
|
|
77
|
+
return createElement(Fragment, null, isValidAndVisual && createElement(Fragment, null, createElement(BlockSettingsButton.Slot, null, (fills = [null]) => {
|
|
78
|
+
if (!fills?.length > 0) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return fills[0];
|
|
83
|
+
}), createElement(BlockControls.Slot, {
|
|
36
84
|
group: "block"
|
|
37
85
|
}), createElement(BlockControls.Slot, null), createElement(BlockControls.Slot, {
|
|
38
86
|
group: "inline"
|
|
39
87
|
}), createElement(BlockControls.Slot, {
|
|
40
88
|
group: "other"
|
|
89
|
+
}), createElement(UngroupButton, null), createElement(BlockMover, {
|
|
90
|
+
clientIds: [blockClientId],
|
|
91
|
+
isStackedHorizontally: isStackedHorizontally
|
|
92
|
+
}), createElement(BlockActionsMenu, {
|
|
93
|
+
clientId: blockClientId,
|
|
94
|
+
isStackedHorizontally: isStackedHorizontally,
|
|
95
|
+
onDelete: onRemove,
|
|
96
|
+
anchorNodeRef: anchorNodeRef
|
|
41
97
|
})));
|
|
42
98
|
}
|
|
43
99
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.native.js"],"names":["useSelect","BlockControls","UngroupButton","store","blockEditorStore","BlockToolbar","isSelected","isValidAndVisual","select","getBlockMode","getSelectedBlockClientIds","isBlockValid","selectedBlockClientIds","length"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.native.js"],"names":["useSelect","useDispatch","useCallback","BlockActionsMenu","BlockControls","BlockMover","UngroupButton","BlockSettingsButton","store","blockEditorStore","REMOVE_EMPY_PARENT_BLOCKS","BlockToolbar","anchorNodeRef","rootClientId","blockClientId","isSelected","isValidAndVisual","isStackedHorizontally","parentBlockName","parentNumberOfInnerBlocks","select","getBlockListSettings","getBlockMode","getBlockName","getBlockCount","getBlockRootClientId","getSelectedBlockClientIds","isBlockValid","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","blockListSettings","orientation","isBlockStackedHorizontally","parentName","numberOfInnerBlocks","length","removeBlock","onRemove","includes","fills"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockActionsMenu from './block-toolbar-menu';\nimport BlockControls from '../block-controls';\nimport BlockMover from '../block-mover';\nimport UngroupButton from '../ungroup-button';\nimport { BlockSettingsButton } from '../block-settings';\nimport { store as blockEditorStore } from '../../store';\n\nconst REMOVE_EMPY_PARENT_BLOCKS = [\n\t'core/buttons',\n\t'core/columns',\n\t'core/social-links',\n];\n\nexport default function BlockToolbar( { anchorNodeRef } ) {\n\tconst {\n\t\trootClientId,\n\t\tblockClientId,\n\t\tisSelected,\n\t\tisValidAndVisual,\n\t\tisStackedHorizontally,\n\t\tparentBlockName,\n\t\tparentNumberOfInnerBlocks,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockListSettings,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockName,\n\t\t\tgetBlockCount,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst blockListSettings = getBlockListSettings( blockRootClientId );\n\t\tconst orientation = blockListSettings?.orientation;\n\t\tconst isBlockStackedHorizontally = orientation === 'horizontal';\n\t\tconst parentName = getBlockName( blockRootClientId );\n\t\tconst numberOfInnerBlocks = getBlockCount( blockRootClientId );\n\n\t\treturn {\n\t\t\trootClientId: blockRootClientId,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tisSelected: selectedBlockClientIds.length > 0,\n\t\t\tisStackedHorizontally: isBlockStackedHorizontally,\n\t\t\tparentBlockName: parentName,\n\t\t\tparentNumberOfInnerBlocks: numberOfInnerBlocks,\n\t\t\tisValidAndVisual:\n\t\t\t\tselectedBlockClientIds.length === 1\n\t\t\t\t\t? isBlockValid( selectedBlockClientIds[ 0 ] ) &&\n\t\t\t\t\t getBlockMode( selectedBlockClientIds[ 0 ] ) === 'visual'\n\t\t\t\t\t: false,\n\t\t};\n\t}, [] );\n\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => {\n\t\t// Temp: remove parent block for specific cases where they don't\n\t\t// have inner blocks, ideally we should match the behavior as in\n\t\t// the Web editor and show a placeholder instead of removing the parent.\n\t\tif (\n\t\t\tREMOVE_EMPY_PARENT_BLOCKS.includes( parentBlockName ) &&\n\t\t\tparentNumberOfInnerBlocks === 1\n\t\t) {\n\t\t\tremoveBlock( rootClientId );\n\t\t\treturn;\n\t\t}\n\n\t\tremoveBlock( blockClientId );\n\t}, [\n\t\tblockClientId,\n\t\tparentBlockName,\n\t\tparentNumberOfInnerBlocks,\n\t\tremoveBlock,\n\t\trootClientId,\n\t] );\n\n\tif ( ! isSelected ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ isValidAndVisual && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockSettingsButton.Slot>\n\t\t\t\t\t\t{ /* Render only one settings icon even if we have more than one fill - need for hooks with controls. */ }\n\t\t\t\t\t\t{ ( fills = [ null ] ) => {\n\t\t\t\t\t\t\tif ( ! fills?.length > 0 ) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn fills[ 0 ];\n\t\t\t\t\t\t} }\n\t\t\t\t\t</BlockSettingsButton.Slot>\n\t\t\t\t\t<BlockControls.Slot group=\"block\" />\n\t\t\t\t\t<BlockControls.Slot />\n\t\t\t\t\t<BlockControls.Slot group=\"inline\" />\n\t\t\t\t\t<BlockControls.Slot group=\"other\" />\n\t\t\t\t\t<UngroupButton />\n\n\t\t\t\t\t<BlockMover\n\t\t\t\t\t\tclientIds={ [ blockClientId ] }\n\t\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<BlockActionsMenu\n\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\tisStackedHorizontally={ isStackedHorizontally }\n\t\t\t\t\t\tonDelete={ onRemove }\n\t\t\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -13,7 +13,7 @@ import { useEffect, useRef, useState } from '@wordpress/element';
|
|
|
13
13
|
import { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';
|
|
14
14
|
import { useSelect } from '@wordpress/data';
|
|
15
15
|
import { ToolbarItem, ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
16
|
-
import {
|
|
16
|
+
import { next, previous } from '@wordpress/icons';
|
|
17
17
|
import { useViewportMatch } from '@wordpress/compose';
|
|
18
18
|
/**
|
|
19
19
|
* Internal dependencies
|
|
@@ -22,7 +22,6 @@ import { useViewportMatch } from '@wordpress/compose';
|
|
|
22
22
|
import NavigableToolbar from '../navigable-toolbar';
|
|
23
23
|
import BlockToolbar from '../block-toolbar';
|
|
24
24
|
import { store as blockEditorStore } from '../../store';
|
|
25
|
-
import BlockIcon from '../block-icon';
|
|
26
25
|
import { unlock } from '../../lock-unlock';
|
|
27
26
|
|
|
28
27
|
function BlockContextualToolbar({
|
|
@@ -59,7 +58,7 @@ function BlockContextualToolbar({
|
|
|
59
58
|
selectedBlockClientId: _selectedBlockClientId,
|
|
60
59
|
blockType: _selectedBlockClientId && getBlockType(getBlockName(_selectedBlockClientId)),
|
|
61
60
|
hasParents: parents.length,
|
|
62
|
-
showParentSelector: parentBlockType && hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1 && getBlockEditingMode(_selectedBlockClientId) === 'default'
|
|
61
|
+
showParentSelector: parentBlockType && getBlockEditingMode(firstParentClientId) === 'default' && hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1 && getBlockEditingMode(_selectedBlockClientId) === 'default'
|
|
63
62
|
};
|
|
64
63
|
}, []);
|
|
65
64
|
useEffect(() => {
|
|
@@ -83,22 +82,20 @@ function BlockContextualToolbar({
|
|
|
83
82
|
,
|
|
84
83
|
"aria-label": __('Block tools'),
|
|
85
84
|
...props
|
|
86
|
-
},
|
|
85
|
+
}, !isCollapsed && createElement(BlockToolbar, {
|
|
86
|
+
hideDragHandle: isFixed
|
|
87
|
+
}), isFixed && isLargeViewport && blockType && createElement(ToolbarGroup, {
|
|
87
88
|
className: isCollapsed ? 'block-editor-block-toolbar__group-expand-fixed-toolbar' : 'block-editor-block-toolbar__group-collapse-fixed-toolbar'
|
|
88
89
|
}, createElement(ToolbarItem, {
|
|
89
90
|
as: ToolbarButton,
|
|
90
91
|
ref: toolbarButtonRef,
|
|
91
|
-
icon: isCollapsed ?
|
|
92
|
-
icon: blockType.icon
|
|
93
|
-
}) : levelUp,
|
|
92
|
+
icon: isCollapsed ? next : previous,
|
|
94
93
|
onClick: () => {
|
|
95
94
|
setIsCollapsed(collapsed => !collapsed);
|
|
96
95
|
toolbarButtonRef.current.focus();
|
|
97
96
|
},
|
|
98
|
-
label: isCollapsed ? __('Show block tools') : __('
|
|
99
|
-
}))
|
|
100
|
-
hideDragHandle: isFixed
|
|
101
|
-
}));
|
|
97
|
+
label: isCollapsed ? __('Show block tools') : __('Hide block tools')
|
|
98
|
+
})));
|
|
102
99
|
}
|
|
103
100
|
|
|
104
101
|
export default BlockContextualToolbar;
|