@wordpress/block-editor 12.5.0 → 12.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +2 -6
- package/build/autocompleters/block.js +6 -2
- package/build/autocompleters/block.js.map +1 -1
- 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-editing-mode/index.js +1 -1
- package/build/components/block-editing-mode/index.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.js +4 -2
- package/build/components/block-list/block.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-list/index.js +2 -4
- package/build/components/block-list/index.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 +6 -21
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-preview/auto.js +6 -1
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +1 -4
- 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-settings-menu/block-settings-dropdown.js +3 -17
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +7 -5
- package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
- package/build/components/block-toolbar/index.js +4 -33
- 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-toolbar/utils.js +56 -51
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +4 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-variation-picker/index.native.js +10 -20
- package/build/components/block-variation-picker/index.native.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/editor-styles/index.js +2 -2
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +11 -11
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/global-styles/behaviors-panel.js +66 -0
- package/build/components/global-styles/behaviors-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +21 -15
- 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/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 +131 -27
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +20 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +18 -3
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +4 -4
- package/build/components/global-styles/typography-utils.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 +7 -7
- 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/index.js +1 -10
- 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/hooks/use-block-types-state.js +6 -2
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-debounced-input.js +5 -7
- package/build/components/inserter/hooks/use-debounced-input.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +3 -2
- 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/reusable-block-rename-hint.js +23 -3
- package/build/components/inserter/reusable-block-rename-hint.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.js +3 -2
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/components/inserter-list-item/index.js +1 -1
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/link-control/index.js +51 -7
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +3 -3
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-item.js +1 -1
- package/build/components/link-control/search-item.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/list-view/use-list-view-drop-zone.js +6 -1
- package/build/components/list-view/use-list-view-drop-zone.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/media-replace-flow/index.native.js +15 -3
- package/build/components/media-replace-flow/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/rich-text/content.js +0 -36
- package/build/components/rich-text/content.js.map +1 -1
- package/build/components/rich-text/format-edit.js +57 -28
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/get-rich-text-values.js +111 -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 +2 -2
- package/build/components/spacing-sizes-control/utils.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/hooks/behaviors.js +5 -12
- package/build/hooks/behaviors.js.map +1 -1
- package/build/hooks/border.js +2 -1
- package/build/hooks/border.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/style.js +11 -2
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +1 -7
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +10 -3
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +3 -4
- package/build/store/actions.js.map +1 -1
- package/build/store/private-selectors.js +5 -6
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +0 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +23 -79
- 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/autocompleters/block.js +7 -3
- package/build-module/autocompleters/block.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-editing-mode/index.js +1 -1
- package/build-module/components/block-editing-mode/index.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.js +4 -2
- package/build-module/components/block-list/block.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-list/index.js +2 -3
- package/build-module/components/block-list/index.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 -22
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +6 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +1 -4
- 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-settings-menu/block-settings-dropdown.js +4 -18
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +9 -7
- package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +6 -35
- 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-toolbar/utils.js +54 -49
- package/build-module/components/block-toolbar/utils.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-variation-picker/index.native.js +13 -23
- package/build-module/components/block-variation-picker/index.native.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/editor-styles/index.js +2 -2
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +11 -11
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/global-styles/behaviors-panel.js +57 -0
- package/build-module/components/global-styles/behaviors-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +21 -15
- 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/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 +127 -27
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +2 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +18 -3
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +4 -4
- package/build-module/components/global-styles/typography-utils.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 +6 -6
- 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/index.js +0 -5
- 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/hooks/use-block-types-state.js +7 -3
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-debounced-input.js +5 -7
- package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +3 -2
- 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/reusable-block-rename-hint.js +22 -3
- package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +3 -2
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +1 -1
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/link-control/index.js +49 -7
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +3 -3
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-item.js +1 -1
- package/build-module/components/link-control/search-item.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/list-view/use-list-view-drop-zone.js +6 -1
- package/build-module/components/list-view/use-list-view-drop-zone.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/media-replace-flow/index.native.js +15 -3
- package/build-module/components/media-replace-flow/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/rich-text/content.js +1 -36
- package/build-module/components/rich-text/content.js.map +1 -1
- package/build-module/components/rich-text/format-edit.js +51 -26
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/get-rich-text-values.js +100 -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 +2 -2
- package/build-module/components/spacing-sizes-control/utils.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/hooks/behaviors.js +5 -12
- package/build-module/hooks/behaviors.js.map +1 -1
- package/build-module/hooks/border.js +2 -1
- package/build-module/hooks/border.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/style.js +11 -2
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +2 -7
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +7 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +4 -5
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-selectors.js +3 -3
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +0 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +20 -75
- 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 +2 -1
- package/build-style/content.css +2 -1
- package/build-style/style-rtl.css +25 -6
- package/build-style/style.css +25 -6
- package/package.json +32 -32
- package/src/autocompleters/block.js +21 -6
- 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/test/index.native.js +2 -57
- package/src/components/block-edit/edit.js +26 -9
- package/src/components/block-edit/test/edit.js +1 -1
- package/src/components/block-editing-mode/index.js +1 -1
- package/src/components/block-list/block-outline.native.js +26 -25
- package/src/components/block-list/block.js +6 -1
- 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/index.js +3 -6
- package/src/components/block-list/style.native.scss +3 -3
- package/src/components/block-list/test/block-invalid-warning.native.js +8 -1
- package/src/components/block-mover/index.native.js +3 -3
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +40 -6
- package/src/components/block-parent-selector/index.js +30 -42
- package/src/components/block-preview/auto.js +8 -1
- package/src/components/block-preview/style.scss +2 -1
- package/src/components/block-removal-warning-modal/index.js +0 -3
- package/src/components/block-settings/button.native.js +12 -6
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -13
- package/src/components/{block-mobile-toolbar/block-actions-menu.native.js → block-toolbar/block-toolbar-menu.native.js} +15 -10
- package/src/components/block-toolbar/index.js +36 -64
- 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-toolbar/utils.js +57 -45
- package/src/components/block-tools/block-contextual-toolbar.js +43 -35
- package/src/components/block-tools/style.scss +17 -5
- package/src/components/block-variation-picker/index.native.js +52 -72
- package/src/components/button-block-appender/styles.native.scss +2 -2
- package/src/components/caption/README.md +49 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
- package/src/components/colors-gradients/control.js +3 -2
- package/src/components/editor-styles/index.js +2 -2
- package/src/components/font-sizes/fluid-utils.js +17 -17
- package/src/components/font-sizes/test/fluid-utils.js +6 -6
- package/src/components/global-styles/behaviors-panel.js +71 -0
- package/src/components/global-styles/color-panel.js +23 -16
- package/src/components/global-styles/dimensions-panel.js +8 -2
- package/src/components/global-styles/get-block-css-selector.js +5 -9
- package/src/components/global-styles/hooks.js +134 -31
- package/src/components/global-styles/index.js +3 -0
- package/src/components/global-styles/test/typography-utils.js +6 -6
- package/src/components/global-styles/typography-panel.js +17 -5
- package/src/components/global-styles/typography-utils.js +4 -4
- package/src/components/global-styles/use-global-styles-output.js +36 -18
- package/src/components/global-styles/utils.js +17 -7
- package/src/components/iframe/index.js +30 -56
- package/src/components/iframe/use-compatibility-styles.js +5 -0
- package/src/components/index.js +0 -5
- 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/hooks/use-block-types-state.js +15 -6
- package/src/components/inserter/hooks/use-debounced-input.js +8 -7
- package/src/components/inserter/hooks/use-patterns-state.js +2 -1
- package/src/components/inserter/index.js +2 -3
- package/src/components/inserter/index.native.js +17 -36
- package/src/components/inserter/reusable-block-rename-hint.js +18 -1
- package/src/components/inserter/reusable-blocks-tab.js +4 -1
- package/src/components/inserter/style.native.scss +10 -15
- package/src/components/inserter-list-item/index.js +3 -1
- package/src/components/link-control/README.md +12 -3
- package/src/components/link-control/index.js +47 -7
- package/src/components/link-control/link-preview.js +6 -4
- package/src/components/link-control/search-item.js +1 -1
- package/src/components/link-control/style.scss +11 -3
- package/src/components/link-control/test/index.js +28 -1
- package/src/components/list-view/use-list-view-client-ids.js +2 -2
- package/src/components/list-view/use-list-view-drop-zone.js +5 -1
- 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/index.native.js +12 -3
- package/src/components/media-upload/test/index.native.js +1 -0
- package/src/components/preview-options/README.md +18 -17
- package/src/components/preview-options/index.js +2 -2
- package/src/components/rich-text/content.js +1 -46
- package/src/components/rich-text/format-edit.js +62 -38
- package/src/components/rich-text/get-rich-text-values.js +99 -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/test/utils.js +9 -1
- package/src/components/spacing-sizes-control/utils.js +2 -2
- package/src/components/text-transform-control/README.md +44 -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/hooks/behaviors.js +10 -16
- package/src/hooks/border.js +2 -1
- package/src/hooks/margin.js +4 -1
- package/src/hooks/padding.js +4 -1
- package/src/hooks/style.js +7 -3
- package/src/hooks/utils.js +5 -7
- package/src/private-apis.js +9 -1
- package/src/store/actions.js +23 -30
- package/src/store/private-selectors.js +3 -6
- package/src/store/reducer.js +0 -1
- package/src/store/selectors.js +36 -85
- package/src/store/test/actions.js +3 -0
- package/src/store/test/private-selectors.js +5 -5
- package/src/store/test/reducer.js +14 -7
- package/src/store/test/selectors.js +8 -7
- 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
|
@@ -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":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,EAAmBC,cAAnB,QAAyC,cAAzC;AAEA;AACA;AACA;;AACA,SACCC,YADD,EAECC,YAFD,EAGCC,YAHD,EAICC,aAJD,EAKCC,MALD,QAMO,uBANP;AAOA,SACCC,YADD,EAECC,mBAFD,EAGCC,eAHD,EAICC,SAJD,EAKCC,UALD,EAMCC,WAND,EAOCC,wBAPD,EAQCC,eARD,QASO,mBATP;AAUA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,YAAT,EAAuBC,UAAvB,EAAmCC,SAAnC,QAAoD,iBAApD;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,oBAAxC;AACA,SAASC,oBAAT,QAAqC,kBAArC;AACA,SAASC,MAAT,EAAiBC,QAAjB,QAAiC,oBAAjC;AACA,SAASC,KAAK,IAAIC,YAAlB,QAAsC,oBAAtC;AACA,SAASD,KAAK,IAAIE,mBAAlB,QAA6C,4BAA7C,C,CACA;AACA;;AACA,SAASF,KAAK,IAAIG,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASC,cAAT,QAA+B,kCAA/B;AACA,SAASJ,KAAK,IAAIK,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,wBAAP,MAAqC,8CAArC;AACA,SACCC,wBADD,EAECC,4BAFD,QAGO,6BAHP;;AAKA,MAAMC,gBAAgB,GAAG,CAAE;AAC1B;AACAC,EAAAA,UAF0B;AAG1BC,EAAAA,kBAH0B;AAI1BC,EAAAA,mBAJ0B;AAK1BC,EAAAA,mBAL0B;AAM1BC,EAAAA,QAN0B;AAO1BC,EAAAA,YAP0B;AAQ1BC,EAAAA,OAR0B;AAS1BC,EAAAA,MAT0B;AAU1BC,EAAAA,mBAV0B;AAW1BC,EAAAA,aAX0B;AAY1BC,EAAAA,YAZ0B;AAa1BC,EAAAA,qBAb0B;AAc1BC,EAAAA,oCAd0B;AAe1BC,EAAAA,SAf0B;AAgB1B;AACAC,EAAAA,mBAjB0B;AAkB1BC,EAAAA,sBAlB0B;AAmB1BC,EAAAA,cAnB0B;AAoB1BC,EAAAA,UApB0B;AAqB1BC,EAAAA,QArB0B;AAsB1BC,EAAAA,kBAtB0B;AAuB1BC,EAAAA,UAvB0B;AAwB1BC,EAAAA,YAxB0B;AAyB1B;AACAC,EAAAA,aA1B0B;AA2B1BC,EAAAA,qBA3B0B;AA4B1BC,EAAAA,QA5B0B;AA6B1BC,EAAAA,cA7B0B;AA8B1BC,EAAAA;AA9B0B,CAAF,KA+BlB;AACN,QAAM,CAAEC,SAAF,EAAaC,mBAAb,IAAqCvC,QAAQ,CAAEtB,YAAY,EAAd,CAAnD;AACA,QAAM8D,yBAAyB,GAAGzC,MAAM,EAAxC;AACA,QAAM0C,gCAAgC,GAAG1C,MAAM,EAA/C;AACA,QAAM2C,aAAa,GAAG;AAAEC,IAAAA,IAAI,EAAE,CAAE,MAAF,EAAU,aAAV;AAAR,GAAtB;AACA,QAAMC,cAAc,GAAGN,SAAS,IAAInD,UAAU,CAAE;AAAE0D,IAAAA,IAAI,EAAEP;AAAR,GAAF,CAAV,CAAmC,CAAnC,CAApC;AACA,QAAMQ,cAAc,GACnBF,cAAc,IACdhC,kBAAkB,CAAEgC,cAAc,CAACG,IAAjB,EAAuB1B,YAAvB,CAFnB;AAIA,QAAM2B,eAAe,GAAGrD,SAAS,CAC9BsD,MAAF,IACCA,MAAM,CAAE3C,gBAAF,CAAN,CAA2B4C,aAA3B,CAA0C5B,qBAA1C,CAF+B,EAGhC,CAAEA,qBAAF,CAHgC,CAAjC;AAMA,QAAM;AACL6B,IAAAA,WAAW,EAAE;AACZC,MAAAA,QAAQ,EAAEC,mBADE;AAEZC,MAAAA,OAAO,EAAEC;AAFG;AADR,MAKFlD,cAAc,CAAE6B,qBAAF,EAAyBQ,aAAzB,CALlB,CAhBM,CAuBN;;AACA,QAAMc,yBAAyB,GAAG/C,4BAA4B,EAC7D;AACA;AACAa,EAAAA,qBAAqB,GAAG,CAAEA,qBAAF,CAAH,GAA+B,EAHS,CAA9D;AAKA,QAAM;AAAEmC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAiCF,yBAAvC;AACA,QAAMG,wBAAwB,GAC7B,CAAEF,WAAW,IAAIC,aAAjB,KAAoClC,SADrC;AAEA,QAAMoC,qBAAqB,GAAGpD,wBAAwB,CAAE,EACvD,GAAGgD;AADoD,GAAF,CAAtD;AAIA,QAAMK,UAAU,GAAG;AAClBC,IAAAA,QAAQ,EAAE;AACTC,MAAAA,EAAE,EAAE,gBADK;AAETC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,gBAAF,CAFA;AAGT0E,MAAAA,KAAK,EAAE,gBAHE;AAITC,MAAAA,QAAQ,EAAEpC;AAJD,KADQ;AAOlBqC,IAAAA,cAAc,EAAE;AACfJ,MAAAA,EAAE,EAAE,sBADW;AAEfC,MAAAA,KAAK,EAAEX,mBAFQ;AAGfY,MAAAA,KAAK,EAAE,sBAHQ;AAIfG,MAAAA,QAAQ,EAAEnD,OAJK;AAKfiD,MAAAA,QAAQ,EAAErC;AALK,KAPE;AAclBwC,IAAAA,aAAa,EAAE;AACdN,MAAAA,EAAE,EAAE,qBADU;AAEdC,MAAAA,KAAK,EAAET,kBAFO;AAGdU,MAAAA,KAAK,EAAE,qBAHO;AAIdG,MAAAA,QAAQ,EAAElD,MAJI;AAKdgD,MAAAA,QAAQ,EAAEtC;AALI,KAdG;AAqBlB0C,IAAAA,MAAM,EAAE;AACPP,MAAAA,EAAE,EAAE,cADG;AAEPC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,cAAF,CAFF;AAGP0E,MAAAA,KAAK,EAAE,cAHA;AAIPM,MAAAA,SAAS,EAAE,IAJJ;AAKPH,MAAAA,QAAQ,EAAEtD,mBALH;AAMPoD,MAAAA,QAAQ,EAAE,MAAM;AACf/B,QAAAA,QAAQ;AACRV,QAAAA,mBAAmB,EAClB;AACAlC,QAAAA,EAAE,CAAE,eAAF,CAFgB,CAAnB;AAIA;AAZM,KArBU;AAmClBiF,IAAAA,eAAe,EAAE;AAChBT,MAAAA,EAAE,EAAE,uBADY;AAEhBC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,kBAAF,CAFO;AAGhB0E,MAAAA,KAAK,EAAE,uBAHS;AAIhBC,MAAAA,QAAQ,EAAE,MAAM;AACf,YAAKzB,gCAAgC,CAACgC,OAAtC,EAAgD;AAC/ChC,UAAAA,gCAAgC,CAACgC,OAAjC,CAAyCC,aAAzC;AACA;AACD;AARe,KAnCC;AA6ClBC,IAAAA,UAAU,EAAE;AACXZ,MAAAA,EAAE,EAAE,kBADO;AAEXC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,MAAF,CAFE;AAGX0E,MAAAA,KAAK,EAAE,kBAHI;AAIXC,MAAAA,QAAQ,EAAE,MAAM;AACf,cAAMU,eAAe,GAAG1F,SAAS,CAChC2B,mBAAmB,CAAES,qBAAF,CADa,CAAjC;AAGAiB,QAAAA,mBAAmB,CAAEqC,eAAF,CAAnB;AACAjG,QAAAA,YAAY,CAAEiG,eAAF,CAAZ;AACAnD,QAAAA,mBAAmB,EAClB;AACAlC,QAAAA,EAAE,CAAE,cAAF,CAFgB,CAAnB;AAIA;AAdU,KA7CM;AA6DlBsF,IAAAA,SAAS,EAAE;AACVd,MAAAA,EAAE,EAAE,iBADM;AAEVC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,WAAF,CAFC;AAGV0E,MAAAA,KAAK,EAAE,iBAHG;AAIVC,MAAAA,QAAQ,EAAE,MAAM;AACfvF,QAAAA,YAAY,CACXO,SAAS,CAAE2B,mBAAmB,CAAES,qBAAF,CAArB,CADE,CAAZ;AAGAU,QAAAA,YAAY,CAAEV,qBAAF,CAAZ;AACAG,QAAAA,mBAAmB,EAClB;AACAlC,QAAAA,EAAE,CAAE,WAAF,CAFgB,CAAnB;AAIA;AAbS,KA7DO;AA4ElBuF,IAAAA,WAAW,EAAE;AACZf,MAAAA,EAAE,EAAE,mBADQ;AAEZC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,mBAAF,CAFG;AAGZ0E,MAAAA,KAAK,EAAE,mBAHK;AAIZC,MAAAA,QAAQ,EAAE,MAAM;AACfa,QAAAA,YAAY;AACZtD,QAAAA,mBAAmB,EAClB;AACAlC,QAAAA,EAAE,CAAE,cAAF,CAFgB,CAAnB;AAIA;AAVW,KA5EK;AAwFlByF,IAAAA,eAAe,EAAE;AAChBjB,MAAAA,EAAE,EAAE,uBADY;AAEhBC,MAAAA,KAAK,EAAEzE,EAAE,CAAE,iBAAF,CAFO;AAGhB0E,MAAAA,KAAK,EAAE,uBAHS;AAIhBC,MAAAA,QAAQ,EAAE,MAAM;AACfvC,QAAAA,cAAc;AACdF,QAAAA,mBAAmB,EAClB;AACAlC,QAAAA,EAAE,CAAE,kBAAF,CAFgB,CAAnB;AAIA;AAVe,KAxFC;AAoGlBmC,IAAAA,sBAAsB,EAAE;AACvBqC,MAAAA,EAAE,EAAE,8BADmB;AAEvBC,MAAAA,KAAK,EACJhB,eAAe,GAAG,CAAlB,GACGzD,EAAE,CAAE,iBAAF,CADL,GAEGA,EAAE,CAAE,gBAAF,CALiB;AAMvB0E,MAAAA,KAAK,EAAE,8BANgB;AAOvBC,MAAAA,QAAQ,EAAE,MAAM;AACf;AACA,cAAMe,aAAa,GAAG1F,EAAE,CAAE,aAAF,CAAxB;;AACAkC,QAAAA,mBAAmB,CAClBjC,OAAO,CACNyF,aADM,EAEN7D,aAAa,EAAE8D,KAAf,EAAsBC,GAAtB,IAA6BxE,UAFvB,CADW,CAAnB;AAMAe,QAAAA,sBAAsB;AACtB;AAjBsB;AApGN,GAAnB;AAyHA,QAAM0D,OAAO,GAAG,CACfhD,cAAc,IAAIyB,UAAU,CAACM,cADd,EAEf/B,cAAc,IAAIyB,UAAU,CAACQ,aAFd,EAGfhC,iBAAiB,IAAIwB,UAAU,CAACC,QAHjB,EAIf,CAAE/C,QAAF,IACCQ,oCAAoC,CAAC8D,MADtC,IAECxB,UAAU,CAACW,eANG,EAOfxD,YAAY,IAAI6C,UAAU,CAACc,UAPZ,EAQf3D,YAAY,IAAI6C,UAAU,CAACgB,SARZ,EASf7D,YAAY,IAAI8B,cAAhB,IAAkCe,UAAU,CAACiB,WAT9B,EAUf9D,YAAY,IAAI6C,UAAU,CAACmB,eAVZ,EAWfrB,wBAAwB,IAAIF,WAA5B,IAA2CG,qBAAqB,CAAC0B,KAXlD,EAYf3B,wBAAwB,IACvBD,aADD,IAECE,qBAAqB,CAAC2B,OAdR,EAefpE,mBAAmB,IAClB6B,eAAe,GAAG,CADnB,IAECa,UAAU,CAACnC,sBAjBG,EAkBf,CAAEX,QAAF,IAAc8C,UAAU,CAACS,MAlBV,EAmBdkB,MAnBc,CAmBNC,OAnBM,CAAhB,CA7JM,CAkLN;;AACA,MAAK,CAAEL,OAAO,CAACC,MAAf,EAAwB;AACvB,WACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,MAAA,KAAK,EAAG9F,EAAE,CAAE,yBAAF,CADX;AAEC,MAAA,IAAI,EAAGO,oBAFR;AAGC,MAAA,QAAQ,EAAG;AAHZ,MADD,CADD;AASA;;AAED,WAASiF,YAAT,GAAwB;AACvB,QAAK,CAAEzC,SAAP,EAAmB;AAClB;AACA;;AAEDP,IAAAA,UAAU,CAAE5C,UAAU,CAAE;AAAE0D,MAAAA,IAAI,EAAEP;AAAR,KAAF,CAAV,CAAmC,CAAnC,CAAF,CAAV;AACA;;AAED,WAASoD,cAAT,CAAyBzB,KAAzB,EAAiC;AAChC,UAAM0B,YAAY,GAAGP,OAAO,CAACQ,IAAR,CAAgBC,IAAF,IAAYA,IAAI,CAAC5B,KAAL,KAAeA,KAAzC,CAArB;AACA0B,IAAAA,YAAY,CAACzB,QAAb;AACA;;AAED,WAAS4B,eAAT,GAA2B;AAC1B,QAAKtD,yBAAyB,CAACiC,OAA/B,EAAyC;AACxCjC,MAAAA,yBAAyB,CAACiC,OAA1B,CAAkCC,aAAlC;AACA;AACD;;AAED,QAAMqB,qBAAqB,GAAGX,OAAO,CACnCY,GAD4B,CACvB,CAAEC,MAAF,EAAUC,KAAV,KAAqBD,MAAM,CAAC7B,QAAP,IAAmB8B,KAAK,GAAG,CADzB,EAE5BV,MAF4B,CAEpBC,OAFoB,CAA9B;AAIA,QAAMU,iBAAiB,GACtB3H,QAAQ,CAAC4H,EAAT,KAAgB,KAAhB,GACG7G,EAAE,CAAE,wDAAF,CADL,GAEGA,EAAE,CAAE,wDAAF,CAHN;;AAKA,QAAM8G,SAAS,GAAG,MACjBpE,aAAa,GAAGxD,cAAc,CAAEwD,aAAF,CAAjB,GAAqCqE,SADnD;;AAGA,SACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,IAAA,KAAK,EAAG/G,EAAE,CAAE,yBAAF,CADX;AAEC,IAAA,OAAO,EAAGuG,eAFX;AAGC,IAAA,IAAI,EAAGhG,oBAHR;AAIC,IAAA,UAAU,EAAG;AACZyG,MAAAA,IAAI,EAAEJ;AADM;AAJd,IADD,EASC,cAAC,MAAD;AACC,IAAA,MAAM,EAAC,oBADR;AAEC,IAAA,GAAG,EAAG3D,yBAFP;AAGC,IAAA,OAAO,EAAG4C,OAHX;AAIC,IAAA,QAAQ,EAAGM,cAJZ;AAKC,IAAA,sBAAsB,EAAGN,OAAO,CAACC,MALlC;AAMC,IAAA,qBAAqB,EAAGU,qBANzB;AAOC,IAAA,gBAAgB,EAAGvH,QAAQ,CAAC4H,EAAT,KAAgB,KAPpC;AAQC,IAAA,SAAS,EAAG,IARb;AASC,IAAA,SAAS,EAAGC,SATb,CAUC;AAVD;AAWC,IAAA,KAAK,EAAG7G,OAAO,CAAED,EAAE,CAAE,kBAAF,CAAJ,EAA4BoB,UAA5B;AAXhB,IATD,EAsBC,cAAC,wBAAD;AACC,IAAA,aAAa,EAAGsB,aADjB;AAEC,IAAA,UAAU,EAAGtB,UAFd;AAGC,IAAA,SAAS,EAAG8B,gCAHb;AAIC,IAAA,uBAAuB,EAAGlB,oCAJ3B;AAKC,IAAA,aAAa,EAAGV,mBAAmB,CAAES,qBAAF,CALpC;AAMC,IAAA,qBAAqB,EAAGA;AANzB,IAtBD,CADD;AAiCA,CA9RD;;AAgSA,MAAMkF,gBAAgB,GAAG,EAAzB;AAEA,eAAe3G,OAAO,CACrBH,UAAU,CAAE,CAAEuD,MAAF,EAAU;AAAEwD,EAAAA;AAAF,CAAV,KAA4B;AACvC,QAAM;AACLC,IAAAA,aADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA,aAHK;AAILC,IAAAA,YAJK;AAKLC,IAAAA,sBALK;AAMLC,IAAAA,QANK;AAOLlG,IAAAA,mBAPK;AAQLmG,IAAAA,yBARK;AASLpG,IAAAA,kBATK;AAULqG,IAAAA,eAVK;AAWLC,IAAAA;AAXK,MAYFjE,MAAM,CAAE3C,gBAAF,CAZV;AAaA,QAAM6G,KAAK,GAAGJ,QAAQ,CAAEN,QAAF,CAAtB;AACA,QAAMW,SAAS,GAAGP,YAAY,CAAEJ,QAAF,CAA9B;AACA,QAAMY,SAAS,GAAGtI,YAAY,CAAEqI,SAAF,CAA9B;AACA,QAAMzG,UAAU,GAAG0G,SAAS,EAAEnC,KAA9B;AACA,QAAM7D,YAAY,GAAGsF,oBAAoB,CAAEF,QAAF,CAAzC;AACA,QAAMa,UAAU,GAAGV,aAAa,CAAEvF,YAAF,CAAhC;AAEA,QAAMkG,iBAAiB,GAAGb,aAAa,CAAED,QAAF,CAAvC;AACA,QAAMxF,OAAO,GAAGsG,iBAAiB,KAAK,CAAtC;AACA,QAAMrG,MAAM,GAAGqG,iBAAiB,KAAKD,UAAU,CAACjC,MAAX,GAAoB,CAAzD;AAEA,QAAMmC,WAAW,GAAG3G,mBAAmB,CAAE4F,QAAF,CAAvC;AAEA,QAAMzF,YAAY,GAAGwG,WAAW,CAACC,KAAZ,CAAqBC,UAAF,IAAkB;AACzD,WACC,CAAC,CAAEA,UAAH,IACAzI,eAAe,CAAEyI,UAAU,CAAC3E,IAAb,EAAmB,UAAnB,EAA+B,IAA/B,CADf,IAEAnC,kBAAkB,CAAE8G,UAAU,CAAC3E,IAAb,EAAmB1B,YAAnB,CAHnB;AAKA,GANoB,CAArB;AAQA,QAAMsG,cAAc,GAAGP,SAAS,KAAKpI,mBAAmB,EAAxD;AACA,QAAM4I,cAAc,GAAGT,KAAK,EAAEU,UAAP,CAAkBC,OAAlB,KAA8B,EAArD;AACA,QAAMC,iBAAiB,GAAGT,UAAU,CAACjC,MAAX,KAAsB,CAAhD;AACA,QAAMvE,mBAAmB,GACxBiH,iBAAiB,IAAIJ,cAArB,IAAuCC,cADxC;AAEA,QAAM7G,QAAQ,GAAG,CAAC,CAAEkG,eAAe,CAAE5F,YAAF,CAAnC;AAEA,QAAMC,qBAAqB,GAAG0F,yBAAyB,GAAI,CAAJ,CAAvD;AACA,QAAMgB,aAAa,GAAG1G,qBAAqB,GACxCT,mBAAmB,CAAES,qBAAF,CAAnB,CAA8C,CAA9C,CADwC,GAExCgF,SAFH;AAGA,QAAM/E,oCAAoC,GAAGyG,aAAa,GACvDlB,sBAAsB,CAAEkB,aAAF,EAAiB3G,YAAjB,CADiC,GAEvDmF,gBAFH;AAGA,QAAMhF,SAAS,GAAG0F,cAAc,CAAE5F,qBAAF,CAAhC;AAEA,QAAMH,mBAAmB,GAAGgG,KAAK,GAAG7H,eAAe,CAAE6H,KAAF,CAAlB,GAA8B,KAA/D;AACA,QAAM/F,aAAa,GAAGD,mBAAmB,GACtC8B,MAAM,CAAE7C,SAAF,CAAN,CAAoB6H,eAApB,CACA,UADA,EAEA,UAFA,EAGAd,KAAK,EAAEU,UAAP,CAAkBK,GAHlB,CADsC,GAMtC5B,SANH;AAQA,SAAO;AACN3F,IAAAA,UADM;AAENC,IAAAA,kBAFM;AAGNuH,IAAAA,YAAY,EAAEZ,iBAHR;AAIN1G,IAAAA,mBAJM;AAKNC,IAAAA,mBALM;AAMNC,IAAAA,QANM;AAONC,IAAAA,YAPM;AAQNC,IAAAA,OARM;AASNC,IAAAA,MATM;AAUNC,IAAAA,mBAVM;AAWNC,IAAAA,aAXM;AAYNC,IAAAA,YAZM;AAaNC,IAAAA,qBAbM;AAcNC,IAAAA,oCAdM;AAeNC,IAAAA;AAfM,GAAP;AAiBA,CA7ES,CADW,EA+ErB/B,YAAY,CACX,CACC2I,QADD,EAEC;AAAE3B,EAAAA,QAAF;AAAYpF,EAAAA,YAAZ;AAA0B8G,EAAAA,YAA1B;AAAwC7G,EAAAA;AAAxC,CAFD,EAGC;AAAE2B,EAAAA;AAAF,CAHD,KAIK;AACJ,QAAM;AACLoF,IAAAA,cADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,eAHK;AAILvG,IAAAA,YAJK;AAKLwG,IAAAA,WALK;AAMLC,IAAAA,YANK;AAOLC,IAAAA;AAPK,MAQFN,QAAQ,CAAE9H,gBAAF,CARZ;AASA,QAAM;AAAEwB,IAAAA;AAAF,MAAyBsG,QAAQ,CAAE,gBAAF,CAAvC;AACA,QAAM;AAAEO,IAAAA,oBAAF;AAAwB5B,IAAAA;AAAxB,MACL9D,MAAM,CAAE3C,gBAAF,CADP;AAEA,QAAM;AAAEmB,IAAAA;AAAF,MAA0B2G,QAAQ,CAAElI,YAAF,CAAxC;AAEA,QAAM;AAAE0I,IAAAA,kCAAkC,EAAEC;AAAtC,MACLT,QAAQ,CAAEjI,mBAAF,CADT;AAGA,SAAO;AACNsB,IAAAA,mBADM;;AAENC,IAAAA,sBAAsB,GAAG;AACxBgH,MAAAA,kBAAkB,GADM,CAExB;AACA;;AACAI,MAAAA,YAAY,CAAE,MACbD,oBAAoB,CAAEvH,qBAAF,CADT,CAAZ;AAGA,KATK;;AAUNK,IAAAA,cAAc,GAAG;AAChB,aAAO4G,eAAe,CAAE,CAAE9B,QAAF,CAAF,CAAtB;AACA,KAZK;;AAaN7E,IAAAA,UAAU,EAAE,CAAE,GAAGmH,IAAL,KACXV,cAAc,CAAE,CAAE5B,QAAF,CAAF,EAAgBpF,YAAhB,EAA8B,GAAG0H,IAAjC,CAdT;AAeNlH,IAAAA,QAAQ,EAAE,CAAE,GAAGkH,IAAL,KACTT,YAAY,CAAE,CAAE7B,QAAF,CAAF,EAAgBpF,YAAhB,EAA8B,GAAG0H,IAAjC,CAhBP;AAiBNjH,IAAAA,kBAAkB,EAAE,MACnBA,kBAAkB,CAAE,iBAAF,CAlBb;AAmBNC,IAAAA,UAAU,EAAIa,cAAF,IAAsB;AACjC,YAAMoG,eAAe,GAAG3J,wBAAwB,CAC/C0H,QAAQ,CAAE4B,oBAAoB,EAAtB,CADuC,CAAhD;;AAIA,UAAK,CAAEK,eAAP,EAAyB;AACxB,cAAMC,aAAa,GAAG7J,WAAW,CAChCwD,cAAc,CAACG,IADiB,EAEhCH,cAAc,CAACiF,UAFiB,EAGhCjF,cAAc,CAAC4E,WAHiB,CAAjC;AAMAgB,QAAAA,WAAW,CACVS,aADU,EAEVd,YAAY,GAAG,CAFL,EAGV9G,YAHU,CAAX;AAKA,OAZD,MAYO;AACNoH,QAAAA,YAAY,CAAEhC,QAAF,EAAY7D,cAAZ,CAAZ;AACA;AACD,KAvCK;AAwCNZ,IAAAA;AAxCM,GAAP;AA0CA,CAjEU,CA/ES,EAkJrBpC,cAlJqB,CAAP,CAmJZc,gBAnJY,CAAf","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"]}
|
|
@@ -8,7 +8,7 @@ import classnames from 'classnames';
|
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { useSelect
|
|
11
|
+
import { useSelect } from '@wordpress/data';
|
|
12
12
|
import { useRef } from '@wordpress/element';
|
|
13
13
|
import { useViewportMatch } from '@wordpress/compose';
|
|
14
14
|
import { getBlockType, hasBlockSupport, isReusableBlock, isTemplatePart } from '@wordpress/blocks';
|
|
@@ -26,7 +26,7 @@ import BlockSettingsMenu from '../block-settings-menu';
|
|
|
26
26
|
import { BlockLockToolbar } from '../block-lock';
|
|
27
27
|
import { BlockGroupToolbar } from '../convert-to-group-buttons';
|
|
28
28
|
import BlockEditVisuallyButton from '../block-edit-visually-button';
|
|
29
|
-
import {
|
|
29
|
+
import { useShowHoveredOrFocusedGestures } from './utils';
|
|
30
30
|
import { store as blockEditorStore } from '../../store';
|
|
31
31
|
import __unstableBlockNameContext from './block-name-context';
|
|
32
32
|
import { unlock } from '../../lock-unlock';
|
|
@@ -36,10 +36,7 @@ const BlockToolbar = ({
|
|
|
36
36
|
}) => {
|
|
37
37
|
const {
|
|
38
38
|
blockClientIds,
|
|
39
|
-
blockClientId,
|
|
40
39
|
blockType,
|
|
41
|
-
hasFixedToolbar,
|
|
42
|
-
isDistractionFree,
|
|
43
40
|
isValid,
|
|
44
41
|
isVisual,
|
|
45
42
|
blockEditingMode
|
|
@@ -50,19 +47,14 @@ const BlockToolbar = ({
|
|
|
50
47
|
getSelectedBlockClientIds,
|
|
51
48
|
isBlockValid,
|
|
52
49
|
getBlockRootClientId,
|
|
53
|
-
getSettings,
|
|
54
50
|
getBlockEditingMode
|
|
55
51
|
} = unlock(select(blockEditorStore));
|
|
56
52
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
57
53
|
const selectedBlockClientId = selectedBlockClientIds[0];
|
|
58
54
|
const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
59
|
-
const settings = getSettings();
|
|
60
55
|
return {
|
|
61
56
|
blockClientIds: selectedBlockClientIds,
|
|
62
|
-
blockClientId: selectedBlockClientId,
|
|
63
57
|
blockType: selectedBlockClientId && getBlockType(getBlockName(selectedBlockClientId)),
|
|
64
|
-
hasFixedToolbar: settings.hasFixedToolbar,
|
|
65
|
-
isDistractionFree: settings.isDistractionFree,
|
|
66
58
|
rootClientId: blockRootClientId,
|
|
67
59
|
isValid: selectedBlockClientIds.every(id => isBlockValid(id)),
|
|
68
60
|
isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
|
|
@@ -72,28 +64,10 @@ const BlockToolbar = ({
|
|
|
72
64
|
const toolbarWrapperRef = useRef(null); // Handles highlighting the current block outline on hover or focus of the
|
|
73
65
|
// block type toolbar area.
|
|
74
66
|
|
|
75
|
-
const {
|
|
76
|
-
toggleBlockHighlight
|
|
77
|
-
} = useDispatch(blockEditorStore);
|
|
78
67
|
const nodeRef = useRef();
|
|
79
|
-
const {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} = useShowMoversGestures({
|
|
83
|
-
ref: nodeRef,
|
|
84
|
-
|
|
85
|
-
onChange(isFocused) {
|
|
86
|
-
if (isFocused && isDistractionFree) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
toggleBlockHighlight(blockClientId, isFocused);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}); // Account for the cases where the block toolbar is rendered within the
|
|
94
|
-
// header area and not contextually to the block.
|
|
95
|
-
|
|
96
|
-
const displayHeaderToolbar = useViewportMatch('medium', '<') || hasFixedToolbar;
|
|
68
|
+
const showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures({
|
|
69
|
+
ref: nodeRef
|
|
70
|
+
});
|
|
97
71
|
const isLargeViewport = !useViewportMatch('medium', '<');
|
|
98
72
|
|
|
99
73
|
if (blockType) {
|
|
@@ -102,8 +76,6 @@ const BlockToolbar = ({
|
|
|
102
76
|
}
|
|
103
77
|
}
|
|
104
78
|
|
|
105
|
-
const shouldShowMovers = displayHeaderToolbar || showMovers;
|
|
106
|
-
|
|
107
79
|
if (blockClientIds.length === 0) {
|
|
108
80
|
return null;
|
|
109
81
|
}
|
|
@@ -112,7 +84,6 @@ const BlockToolbar = ({
|
|
|
112
84
|
const isMultiToolbar = blockClientIds.length > 1;
|
|
113
85
|
const isSynced = isReusableBlock(blockType) || isTemplatePart(blockType);
|
|
114
86
|
const classes = classnames('block-editor-block-toolbar', {
|
|
115
|
-
'is-showing-movers': shouldShowMovers,
|
|
116
87
|
'is-synced': isSynced
|
|
117
88
|
});
|
|
118
89
|
return createElement("div", {
|
|
@@ -120,7 +91,7 @@ const BlockToolbar = ({
|
|
|
120
91
|
ref: toolbarWrapperRef
|
|
121
92
|
}, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && createElement(BlockParentSelector, null), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && createElement("div", {
|
|
122
93
|
ref: nodeRef,
|
|
123
|
-
...
|
|
94
|
+
...showHoveredOrFocusedGestures
|
|
124
95
|
}, createElement(ToolbarGroup, {
|
|
125
96
|
className: "block-editor-block-toolbar__block-controls"
|
|
126
97
|
}, createElement(BlockSwitcher, {
|
|
@@ -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","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 {\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\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( 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 } 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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowHoveredOrFocusedGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","blockClientIds","blockType","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getBlockEditingMode","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","rootClientId","every","id","toolbarWrapperRef","nodeRef","showHoveredOrFocusedGestures","ref","isLargeViewport","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SACCC,YADD,EAECC,eAFD,EAGCC,eAHD,EAICC,cAJD,QAKO,mBALP;AAMA,SAASC,YAAT,QAA6B,uBAA7B;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,OAAOC,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,8BAAP,MAA2C,2BAA3C;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,SAASC,gBAAT,QAAiC,eAAjC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,SAASC,+BAAT,QAAgD,SAAhD;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,0BAAP,MAAuC,sBAAvC;AACA,SAASC,MAAT,QAAuB,mBAAvB;;AAEA,MAAMC,YAAY,GAAG,CAAE;AAAEC,EAAAA;AAAF,CAAF,KAA0B;AAC9C,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,SAAlB;AAA6BC,IAAAA,OAA7B;AAAsCC,IAAAA,QAAtC;AAAgDC,IAAAA;AAAhD,MACL5B,SAAS,CAAI6B,MAAF,IAAc;AACxB,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA,yBAHK;AAILC,MAAAA,YAJK;AAKLC,MAAAA,oBALK;AAMLC,MAAAA;AANK,QAOFd,MAAM,CAAEQ,MAAM,CAAEV,gBAAF,CAAR,CAPV;AAQA,UAAMiB,sBAAsB,GAAGJ,yBAAyB,EAAxD;AACA,UAAMK,qBAAqB,GAAGD,sBAAsB,CAAE,CAAF,CAApD;AACA,UAAME,iBAAiB,GAAGJ,oBAAoB,CAC7CG,qBAD6C,CAA9C;AAGA,WAAO;AACNb,MAAAA,cAAc,EAAEY,sBADV;AAENX,MAAAA,SAAS,EACRY,qBAAqB,IACrBlC,YAAY,CAAE2B,YAAY,CAAEO,qBAAF,CAAd,CAJP;AAKNE,MAAAA,YAAY,EAAED,iBALR;AAMNZ,MAAAA,OAAO,EAAEU,sBAAsB,CAACI,KAAvB,CAAgCC,EAAF,IACtCR,YAAY,CAAEQ,EAAF,CADJ,CANH;AASNd,MAAAA,QAAQ,EAAES,sBAAsB,CAACI,KAAvB,CACPC,EAAF,IAAUV,YAAY,CAAEU,EAAF,CAAZ,KAAuB,QADxB,CATJ;AAYNb,MAAAA,gBAAgB,EAAEO,mBAAmB,CAAEE,qBAAF;AAZ/B,KAAP;AAcA,GA5BQ,EA4BN,EA5BM,CADV;AA+BA,QAAMK,iBAAiB,GAAGzC,MAAM,CAAE,IAAF,CAAhC,CAhC8C,CAkC9C;AACA;;AACA,QAAM0C,OAAO,GAAG1C,MAAM,EAAtB;AACA,QAAM2C,4BAA4B,GAAG3B,+BAA+B,CAAE;AACrE4B,IAAAA,GAAG,EAAEF;AADgE,GAAF,CAApE;AAIA,QAAMG,eAAe,GAAG,CAAE5C,gBAAgB,CAAE,QAAF,EAAY,GAAZ,CAA1C;;AAEA,MAAKuB,SAAL,EAAiB;AAChB,QAAK,CAAErB,eAAe,CAAEqB,SAAF,EAAa,uBAAb,EAAsC,IAAtC,CAAtB,EAAqE;AACpE,aAAO,IAAP;AACA;AACD;;AAED,MAAKD,cAAc,CAACuB,MAAf,KAA0B,CAA/B,EAAmC;AAClC,WAAO,IAAP;AACA;;AAED,QAAMC,uBAAuB,GAAGtB,OAAO,IAAIC,QAA3C;AACA,QAAMsB,cAAc,GAAGzB,cAAc,CAACuB,MAAf,GAAwB,CAA/C;AACA,QAAMG,QAAQ,GACb7C,eAAe,CAAEoB,SAAF,CAAf,IAAgCnB,cAAc,CAAEmB,SAAF,CAD/C;AAGA,QAAM0B,OAAO,GAAGpD,UAAU,CAAE,4BAAF,EAAgC;AACzD,iBAAamD;AAD4C,GAAhC,CAA1B;AAIA,SACC;AAAK,IAAA,SAAS,EAAGC,OAAjB;AAA2B,IAAA,GAAG,EAAGT;AAAjC,KACG,CAAEO,cAAF,IACDH,eADC,IAEDlB,gBAAgB,KAAK,SAFpB,IAEiC,cAAC,mBAAD,OAHpC,EAIG,CAAEoB,uBAAuB,IAAIC,cAA7B,KACDrB,gBAAgB,KAAK,SADpB,IAEA;AAAK,IAAA,GAAG,EAAGe,OAAX;AAAA,OAA0BC;AAA1B,KACC,cAAC,YAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,cAAC,aAAD;AAAe,IAAA,SAAS,EAAGpB;AAA3B,IADD,EAEG,CAAEyB,cAAF,IACD,cAAC,gBAAD;AACC,IAAA,QAAQ,EAAGzB,cAAc,CAAE,CAAF,CAD1B;AAEC,IAAA,UAAU,EAAGkB;AAFd,IAHF,EAQC,cAAC,UAAD;AACC,IAAA,SAAS,EAAGlB,cADb;AAEC,IAAA,cAAc,EAAGD;AAFlB,IARD,CADD,CANH,EAsBGyB,uBAAuB,IAAIC,cAA3B,IACD,cAAC,iBAAD,OAvBF,EAyBGD,uBAAuB,IACxB,8BACC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,QADP;AAEC,IAAA,SAAS,EAAC;AAFX,IADD,EAKC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,OADP;AAEC,IAAA,SAAS,EAAC;AAFX,IALD,EASC,cAAC,aAAD,CAAe,IAAf;AAAoB,IAAA,SAAS,EAAC;AAA9B,IATD,EAUC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,QADP;AAEC,IAAA,SAAS,EAAC;AAFX,IAVD,EAcC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,OADP;AAEC,IAAA,SAAS,EAAC;AAFX,IAdD,EAkBC,cAAC,0BAAD,CAA4B,QAA5B;AACC,IAAA,KAAK,EAAGvB,SAAS,EAAE2B;AADpB,KAGC,cAAC,8BAAD,CAAgC,IAAhC,OAHD,CAlBD,CA1BF,EAmDC,cAAC,uBAAD;AAAyB,IAAA,SAAS,EAAG5B;AAArC,IAnDD,EAoDGI,gBAAgB,KAAK,SAArB,IACD,cAAC,iBAAD;AAAmB,IAAA,SAAS,EAAGJ;AAA/B,IArDF,CADD;AA0DA,CAxHD;AA0HA;AACA;AACA;;;AACA,eAAeF,YAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } 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 { useShowHoveredOrFocusedGestures } 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 { blockClientIds, blockType, isValid, isVisual, blockEditingMode } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockMode,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tisBlockValid,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst blockRootClientId = getBlockRootClientId(\n\t\t\t\tselectedBlockClientId\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\t\tblockType:\n\t\t\t\t\tselectedBlockClientId &&\n\t\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\t\trootClientId: blockRootClientId,\n\t\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\t\tisBlockValid( id )\n\t\t\t\t),\n\t\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t\t),\n\t\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t\t};\n\t\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 nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\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\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-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 } { ...showHoveredOrFocusedGestures }>\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"]}
|
|
@@ -1,47 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
4
5
|
import { useState, useRef, useEffect } from '@wordpress/element';
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { store as blockEditorStore } from '../../store';
|
|
5
11
|
const {
|
|
6
12
|
clearTimeout,
|
|
7
13
|
setTimeout
|
|
8
14
|
} = window;
|
|
9
|
-
|
|
10
|
-
const noop = () => {};
|
|
11
|
-
|
|
12
15
|
const DEBOUNCE_TIMEOUT = 200;
|
|
13
16
|
/**
|
|
14
|
-
* Hook that creates
|
|
17
|
+
* Hook that creates debounced callbacks when the node is hovered or focused.
|
|
15
18
|
*
|
|
16
|
-
* @param {Object}
|
|
17
|
-
* @param {Object}
|
|
18
|
-
* @param {boolean}
|
|
19
|
-
* @param {number}
|
|
20
|
-
* @param {
|
|
19
|
+
* @param {Object} props Component props.
|
|
20
|
+
* @param {Object} props.ref Element reference.
|
|
21
|
+
* @param {boolean} props.isFocused Whether the component has current focus.
|
|
22
|
+
* @param {number} props.highlightParent Whether to highlight the parent block. It defaults in highlighting the selected block.
|
|
23
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
21
24
|
*/
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
function useDebouncedShowGestures({
|
|
24
27
|
ref,
|
|
25
28
|
isFocused,
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
highlightParent,
|
|
30
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
28
31
|
}) {
|
|
29
|
-
const
|
|
32
|
+
const {
|
|
33
|
+
getSelectedBlockClientId,
|
|
34
|
+
getBlockRootClientId
|
|
35
|
+
} = useSelect(blockEditorStore);
|
|
36
|
+
const {
|
|
37
|
+
toggleBlockHighlight
|
|
38
|
+
} = useDispatch(blockEditorStore);
|
|
30
39
|
const timeoutRef = useRef();
|
|
40
|
+
const isDistractionFree = useSelect(select => select(blockEditorStore).getSettings().isDistractionFree, []);
|
|
31
41
|
|
|
32
42
|
const handleOnChange = nextIsFocused => {
|
|
33
|
-
if (
|
|
34
|
-
|
|
43
|
+
if (nextIsFocused && isDistractionFree) {
|
|
44
|
+
return;
|
|
35
45
|
}
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
const selectedBlockClientId = getSelectedBlockClientId();
|
|
48
|
+
const clientId = highlightParent ? getBlockRootClientId(selectedBlockClientId) : selectedBlockClientId;
|
|
49
|
+
toggleBlockHighlight(clientId, nextIsFocused);
|
|
38
50
|
};
|
|
39
51
|
|
|
40
52
|
const getIsHovered = () => {
|
|
41
53
|
return ref?.current && ref.current.matches(':hover');
|
|
42
54
|
};
|
|
43
55
|
|
|
44
|
-
const
|
|
56
|
+
const shouldHideGestures = () => {
|
|
45
57
|
const isHovered = getIsHovered();
|
|
46
58
|
return !isFocused && !isHovered;
|
|
47
59
|
};
|
|
@@ -54,26 +66,23 @@ export function useDebouncedShowMovers({
|
|
|
54
66
|
}
|
|
55
67
|
};
|
|
56
68
|
|
|
57
|
-
const
|
|
69
|
+
const debouncedShowGestures = event => {
|
|
58
70
|
if (event) {
|
|
59
71
|
event.stopPropagation();
|
|
60
72
|
}
|
|
61
73
|
|
|
62
74
|
clearTimeoutRef();
|
|
63
|
-
|
|
64
|
-
if (!showMovers) {
|
|
65
|
-
handleOnChange(true);
|
|
66
|
-
}
|
|
75
|
+
handleOnChange(true);
|
|
67
76
|
};
|
|
68
77
|
|
|
69
|
-
const
|
|
78
|
+
const debouncedHideGestures = event => {
|
|
70
79
|
if (event) {
|
|
71
80
|
event.stopPropagation();
|
|
72
81
|
}
|
|
73
82
|
|
|
74
83
|
clearTimeoutRef();
|
|
75
84
|
timeoutRef.current = setTimeout(() => {
|
|
76
|
-
if (
|
|
85
|
+
if (shouldHideGestures()) {
|
|
77
86
|
handleOnChange(false);
|
|
78
87
|
}
|
|
79
88
|
}, debounceTimeout);
|
|
@@ -89,36 +98,35 @@ export function useDebouncedShowMovers({
|
|
|
89
98
|
clearTimeoutRef();
|
|
90
99
|
}, []);
|
|
91
100
|
return {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
debouncedHideMovers
|
|
101
|
+
debouncedShowGestures,
|
|
102
|
+
debouncedHideGestures
|
|
95
103
|
};
|
|
96
104
|
}
|
|
97
105
|
/**
|
|
98
|
-
* Hook that provides
|
|
99
|
-
* that interact with the
|
|
106
|
+
* Hook that provides gesture events for DOM elements
|
|
107
|
+
* that interact with the isFocused state.
|
|
100
108
|
*
|
|
101
|
-
* @param {Object}
|
|
102
|
-
* @param {Object}
|
|
103
|
-
* @param {number}
|
|
104
|
-
* @param {
|
|
109
|
+
* @param {Object} props Component props.
|
|
110
|
+
* @param {Object} props.ref Element reference.
|
|
111
|
+
* @param {number} [props.highlightParent=false] Whether to highlight the parent block. It defaults to highlighting the selected block.
|
|
112
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
105
113
|
*/
|
|
106
114
|
|
|
107
|
-
|
|
115
|
+
|
|
116
|
+
export function useShowHoveredOrFocusedGestures({
|
|
108
117
|
ref,
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
highlightParent = false,
|
|
119
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
111
120
|
}) {
|
|
112
121
|
const [isFocused, setIsFocused] = useState(false);
|
|
113
122
|
const {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
} = useDebouncedShowMovers({
|
|
123
|
+
debouncedShowGestures,
|
|
124
|
+
debouncedHideGestures
|
|
125
|
+
} = useDebouncedShowGestures({
|
|
118
126
|
ref,
|
|
119
127
|
debounceTimeout,
|
|
120
128
|
isFocused,
|
|
121
|
-
|
|
129
|
+
highlightParent
|
|
122
130
|
});
|
|
123
131
|
const registerRef = useRef(false);
|
|
124
132
|
|
|
@@ -132,14 +140,14 @@ export function useShowMoversGestures({
|
|
|
132
140
|
const handleOnFocus = () => {
|
|
133
141
|
if (isFocusedWithin()) {
|
|
134
142
|
setIsFocused(true);
|
|
135
|
-
|
|
143
|
+
debouncedShowGestures();
|
|
136
144
|
}
|
|
137
145
|
};
|
|
138
146
|
|
|
139
147
|
const handleOnBlur = () => {
|
|
140
148
|
if (!isFocusedWithin()) {
|
|
141
149
|
setIsFocused(false);
|
|
142
|
-
|
|
150
|
+
debouncedHideGestures();
|
|
143
151
|
}
|
|
144
152
|
};
|
|
145
153
|
/**
|
|
@@ -160,13 +168,10 @@ export function useShowMoversGestures({
|
|
|
160
168
|
node.removeEventListener('blur', handleOnBlur);
|
|
161
169
|
}
|
|
162
170
|
};
|
|
163
|
-
}, [ref, registerRef, setIsFocused,
|
|
171
|
+
}, [ref, registerRef, setIsFocused, debouncedShowGestures, debouncedHideGestures]);
|
|
164
172
|
return {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
onMouseMove: debouncedShowMovers,
|
|
168
|
-
onMouseLeave: debouncedHideMovers
|
|
169
|
-
}
|
|
173
|
+
onMouseMove: debouncedShowGestures,
|
|
174
|
+
onMouseLeave: debouncedHideGestures
|
|
170
175
|
};
|
|
171
176
|
}
|
|
172
177
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["useState","useRef","useEffect","clearTimeout","setTimeout","window","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["useSelect","useDispatch","useState","useRef","useEffect","store","blockEditorStore","clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowGestures","ref","isFocused","highlightParent","debounceTimeout","getSelectedBlockClientId","getBlockRootClientId","toggleBlockHighlight","timeoutRef","isDistractionFree","select","getSettings","handleOnChange","nextIsFocused","selectedBlockClientId","clientId","getIsHovered","current","matches","shouldHideGestures","isHovered","clearTimeoutRef","timeout","debouncedShowGestures","event","stopPropagation","debouncedHideGestures","useShowHoveredOrFocusedGestures","setIsFocused","registerRef","isFocusedWithin","contains","ownerDocument","activeElement","node","handleOnFocus","handleOnBlur","addEventListener","removeEventListener","onMouseMove","onMouseLeave"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst { clearTimeout, setTimeout } = window;\nconst DEBOUNCE_TIMEOUT = 200;\n\n/**\n * Hook that creates debounced callbacks when the node is hovered or focused.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {boolean} props.isFocused Whether the component has current focus.\n * @param {number} props.highlightParent Whether to highlight the parent block. It defaults in highlighting the selected block.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n */\nfunction useDebouncedShowGestures( {\n\tref,\n\tisFocused,\n\thighlightParent,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n} ) {\n\tconst { getSelectedBlockClientId, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst timeoutRef = useRef();\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst handleOnChange = ( nextIsFocused ) => {\n\t\tif ( nextIsFocused && isDistractionFree ) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst clientId = highlightParent\n\t\t\t? getBlockRootClientId( selectedBlockClientId )\n\t\t\t: selectedBlockClientId;\n\t\ttoggleBlockHighlight( clientId, nextIsFocused );\n\t};\n\n\tconst getIsHovered = () => {\n\t\treturn ref?.current && ref.current.matches( ':hover' );\n\t};\n\n\tconst shouldHideGestures = () => {\n\t\tconst isHovered = getIsHovered();\n\t\treturn ! isFocused && ! isHovered;\n\t};\n\n\tconst clearTimeoutRef = () => {\n\t\tconst timeout = timeoutRef.current;\n\n\t\tif ( timeout && clearTimeout ) {\n\t\t\tclearTimeout( timeout );\n\t\t}\n\t};\n\n\tconst debouncedShowGestures = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\t\thandleOnChange( true );\n\t};\n\n\tconst debouncedHideGestures = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\tif ( shouldHideGestures() ) {\n\t\t\t\thandleOnChange( false );\n\t\t\t}\n\t\t}, debounceTimeout );\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\t/**\n\t\t\t * We need to call the change handler with `isFocused`\n\t\t\t * set to false on unmount because we also clear the\n\t\t\t * timeout that would handle that.\n\t\t\t */\n\t\t\thandleOnChange( false );\n\t\t\tclearTimeoutRef();\n\t\t},\n\t\t[]\n\t);\n\n\treturn {\n\t\tdebouncedShowGestures,\n\t\tdebouncedHideGestures,\n\t};\n}\n\n/**\n * Hook that provides gesture events for DOM elements\n * that interact with the isFocused state.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {number} [props.highlightParent=false] Whether to highlight the parent block. It defaults to highlighting the selected block.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n */\nexport function useShowHoveredOrFocusedGestures( {\n\tref,\n\thighlightParent = false,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst { debouncedShowGestures, debouncedHideGestures } =\n\t\tuseDebouncedShowGestures( {\n\t\t\tref,\n\t\t\tdebounceTimeout,\n\t\t\tisFocused,\n\t\t\thighlightParent,\n\t\t} );\n\n\tconst registerRef = useRef( false );\n\n\tconst isFocusedWithin = () => {\n\t\treturn (\n\t\t\tref?.current &&\n\t\t\tref.current.contains( ref.current.ownerDocument.activeElement )\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tconst node = ref.current;\n\n\t\tconst handleOnFocus = () => {\n\t\t\tif ( isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( true );\n\t\t\t\tdebouncedShowGestures();\n\t\t\t}\n\t\t};\n\n\t\tconst handleOnBlur = () => {\n\t\t\tif ( ! isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( false );\n\t\t\t\tdebouncedHideGestures();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Events are added via DOM events (vs. React synthetic events),\n\t\t * as the child React components swallow mouse events.\n\t\t */\n\t\tif ( node && ! registerRef.current ) {\n\t\t\tnode.addEventListener( 'focus', handleOnFocus, true );\n\t\t\tnode.addEventListener( 'blur', handleOnBlur, true );\n\t\t\tregisterRef.current = true;\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( node ) {\n\t\t\t\tnode.removeEventListener( 'focus', handleOnFocus );\n\t\t\t\tnode.removeEventListener( 'blur', handleOnBlur );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tref,\n\t\tregisterRef,\n\t\tsetIsFocused,\n\t\tdebouncedShowGestures,\n\t\tdebouncedHideGestures,\n\t] );\n\n\treturn {\n\t\tonMouseMove: debouncedShowGestures,\n\t\tonMouseLeave: debouncedHideGestures,\n\t};\n}\n"]}
|