@wordpress/block-editor 11.0.0 → 11.2.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 +16 -1
- package/LICENSE.md +1 -1
- package/README.md +2 -1
- package/build/components/alignment-control/ui.js +1 -7
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-actions/index.js +9 -0
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/use-available-alignments.js +4 -3
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-icon/index.js +4 -2
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +58 -5
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list-appender/index.js +46 -34
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +39 -34
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +1 -1
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +14 -7
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-preview/auto.js +1 -4
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +3 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-styles/index.native.js +1 -3
- package/build/components/block-styles/index.native.js.map +1 -1
- package/build/components/block-styles/utils.js +7 -10
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-toolbar/index.native.js +6 -8
- package/build/components/block-toolbar/index.native.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +1 -3
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +43 -10
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-variation-picker/index.js +1 -1
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/colors/utils.js +2 -6
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +0 -3
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +0 -2
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -19
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -3
- package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build/components/copy-handler/index.js +37 -9
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-style-picker/index.js +1 -0
- package/build/components/default-style-picker/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +5 -2
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/font-sizes/utils.js +10 -4
- package/build/components/font-sizes/utils.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +14 -12
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/gradients/use-gradient.js +2 -8
- package/build/components/gradients/use-gradient.js.map +1 -1
- package/build/components/iframe/index.js +48 -101
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/iframe/use-compatibility-styles.js +98 -0
- package/build/components/iframe/use-compatibility-styles.js.map +1 -0
- package/build/components/image-size-control/index.js +1 -0
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +6 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +4 -4
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js +4 -3
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/index.js +16 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +8 -5
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/menu.js +11 -5
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +6 -3
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-items.js +15 -14
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +4 -2
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inspector-controls/groups.js +3 -1
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/position-controls-panel.js +46 -0
- package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
- package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -0
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-select-button.js +1 -1
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +3 -44
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/block-contents.js +38 -5
- package/build/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build/components/off-canvas-editor/block-select-button.js +3 -2
- package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
- package/build/components/off-canvas-editor/block.js +51 -57
- package/build/components/off-canvas-editor/block.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +12 -5
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/off-canvas-editor/use-inserted-block.js +58 -0
- package/build/components/off-canvas-editor/use-inserted-block.js.map +1 -0
- package/build/components/provider/index.js +3 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/responsive-block-control/label.js.map +1 -1
- package/build/components/rich-text/format-edit.js +12 -10
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-enter.js +4 -5
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +21 -12
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/index.js +0 -1
- package/build/components/spacing-sizes-control/index.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -1
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/typewriter/index.js +1 -1
- package/build/components/typewriter/index.js.map +1 -1
- package/build/components/url-input/button.js +1 -0
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +15 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -2
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/url-popover/link-editor.js +1 -0
- package/build/components/url-popover/link-editor.js.map +1 -1
- package/build/components/use-paste-styles/index.js +188 -0
- package/build/components/use-paste-styles/index.js.map +1 -0
- package/build/components/writing-flow/index.js +1 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +22 -29
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/hooks/border.js +0 -1
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +0 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +1 -2
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/font-family.js +4 -4
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +5 -3
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/metadata.js +1 -1
- package/build/hooks/metadata.js.map +1 -1
- package/build/hooks/position.js +376 -0
- package/build/hooks/position.js.map +1 -0
- package/build/hooks/supports.js +328 -0
- package/build/hooks/supports.js.map +1 -0
- package/build/hooks/use-typography-props.js +11 -8
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build/store/reducer.js +27 -9
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +9 -7
- package/build/store/selectors.js.map +1 -1
- package/build/utils/pasting.js +6 -11
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +1 -6
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-actions/index.js +6 -0
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js +4 -3
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-icon/index.js +4 -2
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +58 -6
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +46 -34
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +39 -32
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -18
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +14 -7
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -4
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +2 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-styles/index.native.js +1 -2
- package/build-module/components/block-styles/index.native.js.map +1 -1
- package/build-module/components/block-styles/utils.js +7 -9
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-toolbar/index.native.js +6 -8
- package/build-module/components/block-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +1 -2
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +42 -11
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +1 -1
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/colors/utils.js +3 -7
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +0 -3
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +0 -2
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +4 -19
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
- package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
- package/build-module/components/copy-handler/index.js +38 -10
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-style-picker/index.js +1 -0
- package/build-module/components/default-style-picker/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +5 -2
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/font-sizes/utils.js +11 -5
- package/build-module/components/font-sizes/utils.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +14 -11
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/gradients/use-gradient.js +2 -7
- package/build-module/components/gradients/use-gradient.js.map +1 -1
- package/build-module/components/iframe/index.js +46 -102
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/iframe/use-compatibility-styles.js +90 -0
- package/build-module/components/iframe/use-compatibility-styles.js.map +1 -0
- package/build-module/components/image-size-control/index.js +1 -0
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +6 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +4 -4
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js +4 -3
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/index.js +16 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +8 -5
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/menu.js +11 -5
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +6 -3
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +15 -13
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +4 -2
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +3 -1
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/position-controls-panel.js +33 -0
- package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/settings-tab.js +2 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +4 -11
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -0
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +1 -1
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +5 -44
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/block-contents.js +37 -7
- package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
- package/build-module/components/off-canvas-editor/block-select-button.js +3 -2
- package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
- package/build-module/components/off-canvas-editor/block.js +54 -60
- package/build-module/components/off-canvas-editor/block.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +12 -5
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/use-inserted-block.js +47 -0
- package/build-module/components/off-canvas-editor/use-inserted-block.js.map +1 -0
- package/build-module/components/provider/index.js +3 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/responsive-block-control/label.js +1 -2
- package/build-module/components/responsive-block-control/label.js.map +1 -1
- package/build-module/components/rich-text/format-edit.js +12 -9
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +4 -5
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +22 -12
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/index.js +0 -1
- package/build-module/components/spacing-sizes-control/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +1 -1
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/typewriter/index.js +1 -1
- package/build-module/components/typewriter/index.js.map +1 -1
- package/build-module/components/url-input/button.js +1 -0
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +14 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +3 -3
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/url-popover/link-editor.js +1 -0
- package/build-module/components/url-popover/link-editor.js.map +1 -1
- package/build-module/components/use-paste-styles/index.js +174 -0
- package/build-module/components/use-paste-styles/index.js.map +1 -0
- package/build-module/components/writing-flow/index.js +1 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +22 -29
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/hooks/border.js +0 -1
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +0 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +1 -2
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/font-family.js +5 -5
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +5 -3
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/metadata.js +1 -1
- package/build-module/hooks/metadata.js.map +1 -1
- package/build-module/hooks/position.js +337 -0
- package/build-module/hooks/position.js.map +1 -0
- package/build-module/hooks/supports.js +257 -0
- package/build-module/hooks/supports.js.map +1 -0
- package/build-module/hooks/use-typography-props.js +11 -8
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/build-module/store/reducer.js +27 -8
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +9 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/pasting.js +6 -10
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +60 -3
- package/build-style/content.css +60 -3
- package/build-style/default-editor-styles-rtl.css +3 -3
- package/build-style/default-editor-styles.css +3 -3
- package/build-style/style-rtl.css +62 -69
- package/build-style/style.css +62 -69
- package/package.json +29 -29
- package/src/components/alignment-control/test/index.js +2 -0
- package/src/components/alignment-control/ui.js +1 -7
- package/src/components/block-actions/index.js +5 -0
- package/src/components/block-alignment-control/test/index.js +2 -0
- package/src/components/block-alignment-control/use-available-alignments.js +4 -3
- package/src/components/block-icon/index.js +4 -2
- package/src/components/block-icon/test/index.js +9 -5
- package/src/components/block-inspector/index.js +79 -4
- package/src/components/block-inspector/style.scss +7 -0
- package/src/components/block-list-appender/index.js +65 -54
- package/src/components/block-list-appender/index.native.js +45 -34
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +18 -22
- package/src/components/block-mobile-toolbar/index.native.js +1 -1
- package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +125 -0
- package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +439 -0
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +42 -0
- package/src/components/block-mover/test/index.native.js +157 -1
- package/src/components/block-pattern-setup/index.js +15 -6
- package/src/components/block-pattern-setup/style.scss +29 -1
- package/src/components/block-preview/auto.js +2 -4
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-styles/index.js +4 -1
- package/src/components/block-styles/index.native.js +1 -2
- package/src/components/block-styles/utils.js +5 -7
- package/src/components/block-switcher/test/index.js +3 -2
- package/src/components/block-toolbar/index.native.js +8 -11
- package/src/components/block-tools/selected-block-popover.js +1 -3
- package/src/components/block-tools/use-block-toolbar-popover-props.js +68 -12
- package/src/components/block-variation-picker/index.js +5 -1
- package/src/components/block-vertical-alignment-control/test/index.js +2 -0
- package/src/components/button-block-appender/{style.scss → content.scss} +0 -0
- package/src/components/colors/test/with-colors.js +2 -0
- package/src/components/colors/utils.js +5 -3
- package/src/components/colors-gradients/control.js +0 -7
- package/src/components/colors-gradients/dropdown.js +0 -2
- package/src/components/colors-gradients/panel-color-gradient-settings.js +4 -22
- package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
- package/src/components/copy-handler/index.js +53 -7
- package/src/components/default-block-appender/test/index.js +2 -0
- package/src/components/default-style-picker/index.js +1 -0
- package/src/components/font-sizes/fluid-utils.js +7 -1
- package/src/components/font-sizes/utils.js +5 -3
- package/src/components/font-sizes/with-font-sizes.js +36 -36
- package/src/components/gradients/use-gradient.js +2 -7
- package/src/components/iframe/index.js +60 -122
- package/src/components/iframe/use-compatibility-styles.js +101 -0
- package/src/components/image-size-control/index.js +1 -0
- package/src/components/image-size-control/test/index.js +147 -79
- package/src/components/inner-blocks/index.js +4 -2
- package/src/components/inserter/block-patterns-tab.js +7 -4
- package/src/components/inserter/hooks/use-insertion-point.js +3 -2
- package/src/components/inserter/index.js +61 -43
- package/src/components/inserter/media-tab/hooks.js +5 -4
- package/src/components/inserter/menu.js +8 -4
- package/src/components/inserter/quick-inserter.js +3 -0
- package/src/components/inserter/search-items.js +1 -2
- package/src/components/inserter/search-results.js +2 -0
- package/src/components/inserter/test/__snapshots__/index.native.js.snap +117 -0
- package/src/components/inserter/test/index.native.js +255 -1
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/position-controls-panel.js +37 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +2 -0
- package/src/components/inspector-controls-tabs/style.scss +15 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -8
- package/src/components/link-control/search-input.js +1 -0
- package/src/components/link-control/style.scss +1 -0
- package/src/components/link-control/test/index.js +18 -4
- package/src/components/list-view/block-select-button.js +1 -1
- package/src/components/list-view/style.scss +14 -10
- package/src/components/media-replace-flow/test/index.js +2 -0
- package/src/components/off-canvas-editor/appender.js +4 -49
- package/src/components/off-canvas-editor/block-contents.js +84 -23
- package/src/components/off-canvas-editor/block-select-button.js +6 -2
- package/src/components/off-canvas-editor/block.js +90 -105
- package/src/components/off-canvas-editor/index.js +21 -2
- package/src/components/off-canvas-editor/style.scss +5 -1
- package/src/components/off-canvas-editor/test/use-inserted-block.js +108 -0
- package/src/components/off-canvas-editor/use-inserted-block.js +47 -0
- package/src/components/provider/index.js +4 -1
- package/src/components/responsive-block-control/label.js +2 -3
- package/src/components/responsive-block-control/test/index.js +4 -2
- package/src/components/rich-text/format-edit.js +6 -10
- package/src/components/rich-text/index.js +1 -0
- package/src/components/rich-text/use-enter.js +4 -4
- package/src/components/rich-text/use-paste-handler.js +33 -14
- package/src/components/spacing-sizes-control/index.js +0 -1
- package/src/components/spacing-sizes-control/utils.js +1 -1
- package/src/components/typewriter/index.js +3 -1
- package/src/components/url-input/README.md +5 -0
- package/src/components/url-input/button.js +1 -0
- package/src/components/url-input/index.js +15 -1
- package/src/components/url-input/test/button.js +2 -0
- package/src/components/url-popover/image-url-input-ui.js +5 -4
- package/src/components/url-popover/link-editor.js +1 -0
- package/src/components/url-popover/test/index.js +21 -5
- package/src/components/use-paste-styles/index.js +230 -0
- package/src/components/warning/test/index.js +2 -0
- package/src/components/writing-flow/index.js +1 -1
- package/src/components/writing-flow/use-arrow-nav.js +20 -28
- package/src/content.scss +1 -0
- package/src/hooks/border.js +0 -1
- package/src/hooks/color-panel.js +0 -1
- package/src/hooks/color.js +0 -2
- package/src/hooks/font-family.js +3 -5
- package/src/hooks/font-size.js +13 -4
- package/src/hooks/index.js +1 -0
- package/src/hooks/metadata.js +1 -2
- package/src/hooks/position.js +375 -0
- package/src/hooks/position.scss +18 -0
- package/src/hooks/supports.js +302 -0
- package/src/hooks/test/__snapshots__/align.native.js.snap +73 -0
- package/src/hooks/test/align.native.js +133 -0
- package/src/hooks/test/use-typography-props.js +26 -0
- package/src/hooks/use-typography-props.js +15 -7
- package/src/store/reducer.js +20 -8
- package/src/store/selectors.js +7 -8
- package/src/store/test/reducer.js +45 -3
- package/src/store/test/selectors.js +12 -9
- package/src/style.scss +2 -1
- package/src/utils/pasting.js +3 -9
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/colors-gradients/use-common-single-multiple-selects.js +0 -21
- package/build/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
- package/build/components/rich-text/file-paste-handler.js +0 -21
- package/build/components/rich-text/file-paste-handler.js.map +0 -1
- package/build-module/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
- package/build-module/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
- package/build-module/components/rich-text/file-paste-handler.js +0 -13
- package/build-module/components/rich-text/file-paste-handler.js.map +0 -1
- package/src/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
- package/src/components/rich-text/file-paste-handler.js +0 -13
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { render, screen
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Internal dependencies
|
|
@@ -11,8 +12,6 @@ import ImageSizeControl from '../index';
|
|
|
11
12
|
describe( 'ImageSizeControl', () => {
|
|
12
13
|
const mockOnChange = jest.fn();
|
|
13
14
|
const mockOnChangeImage = jest.fn();
|
|
14
|
-
const getHeightInput = () => screen.getByLabelText( 'Height' );
|
|
15
|
-
const getWidthInput = () => screen.getByLabelText( 'Width' );
|
|
16
15
|
|
|
17
16
|
afterEach( () => {
|
|
18
17
|
// Cleanup on exiting.
|
|
@@ -31,8 +30,12 @@ describe( 'ImageSizeControl', () => {
|
|
|
31
30
|
/>
|
|
32
31
|
);
|
|
33
32
|
|
|
34
|
-
expect(
|
|
35
|
-
|
|
33
|
+
expect(
|
|
34
|
+
screen.getByRole( 'spinbutton', { name: 'Height' } )
|
|
35
|
+
).toHaveValue( 300 );
|
|
36
|
+
expect(
|
|
37
|
+
screen.getByRole( 'spinbutton', { name: 'Width' } )
|
|
38
|
+
).toHaveValue( 400 );
|
|
36
39
|
} );
|
|
37
40
|
|
|
38
41
|
it( 'returns default dimensions when custom dimensions are undefined', () => {
|
|
@@ -44,15 +47,23 @@ describe( 'ImageSizeControl', () => {
|
|
|
44
47
|
/>
|
|
45
48
|
);
|
|
46
49
|
|
|
47
|
-
expect(
|
|
48
|
-
|
|
50
|
+
expect(
|
|
51
|
+
screen.getByRole( 'spinbutton', { name: 'Height' } )
|
|
52
|
+
).toHaveValue( 100 );
|
|
53
|
+
expect(
|
|
54
|
+
screen.getByRole( 'spinbutton', { name: 'Width' } )
|
|
55
|
+
).toHaveValue( 200 );
|
|
49
56
|
} );
|
|
50
57
|
|
|
51
|
-
it( 'returns
|
|
58
|
+
it( 'returns no value when custom and default dimensions are undefined', () => {
|
|
52
59
|
render( <ImageSizeControl onChange={ mockOnChange } /> );
|
|
53
60
|
|
|
54
|
-
expect(
|
|
55
|
-
|
|
61
|
+
expect(
|
|
62
|
+
screen.getByRole( 'spinbutton', { name: 'Height' } )
|
|
63
|
+
).toHaveValue( null );
|
|
64
|
+
expect(
|
|
65
|
+
screen.getByRole( 'spinbutton', { name: 'Width' } )
|
|
66
|
+
).toHaveValue( null );
|
|
56
67
|
} );
|
|
57
68
|
|
|
58
69
|
it( 'returns default dimensions when initially undefined defaults are defined on rerender', () => {
|
|
@@ -62,12 +73,14 @@ describe( 'ImageSizeControl', () => {
|
|
|
62
73
|
<ImageSizeControl onChange={ mockOnChange } />
|
|
63
74
|
);
|
|
64
75
|
|
|
65
|
-
const heightInput =
|
|
66
|
-
|
|
76
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
77
|
+
name: 'Height',
|
|
78
|
+
} );
|
|
79
|
+
const widthInput = screen.getByRole( 'spinbutton', { name: 'Width' } );
|
|
67
80
|
|
|
68
81
|
// The dimensions are initially set to an empty string.
|
|
69
|
-
expect( heightInput
|
|
70
|
-
expect( widthInput
|
|
82
|
+
expect( heightInput ).toHaveValue( null );
|
|
83
|
+
expect( widthInput ).toHaveValue( null );
|
|
71
84
|
|
|
72
85
|
// When new default dimensions are passed on a rerender (for example after they
|
|
73
86
|
// are calculated following an image upload), update values to the new defaults.
|
|
@@ -80,48 +93,66 @@ describe( 'ImageSizeControl', () => {
|
|
|
80
93
|
);
|
|
81
94
|
|
|
82
95
|
// The dimensions should update to the defaults.
|
|
83
|
-
expect( heightInput
|
|
84
|
-
expect( widthInput
|
|
96
|
+
expect( heightInput ).toHaveValue( 300 );
|
|
97
|
+
expect( widthInput ).toHaveValue( 400 );
|
|
85
98
|
} );
|
|
86
99
|
|
|
87
100
|
describe( 'updating dimension inputs', () => {
|
|
88
|
-
it( 'updates height and calls onChange', () => {
|
|
101
|
+
it( 'updates height and calls onChange', async () => {
|
|
102
|
+
const user = userEvent.setup();
|
|
89
103
|
render( <ImageSizeControl onChange={ mockOnChange } /> );
|
|
90
104
|
|
|
91
|
-
const heightInput =
|
|
92
|
-
|
|
105
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
106
|
+
name: 'Height',
|
|
107
|
+
} );
|
|
108
|
+
const widthInput = screen.getByRole( 'spinbutton', {
|
|
109
|
+
name: 'Width',
|
|
110
|
+
} );
|
|
93
111
|
|
|
94
|
-
expect( heightInput
|
|
95
|
-
expect( widthInput
|
|
112
|
+
expect( heightInput ).toHaveValue( null );
|
|
113
|
+
expect( widthInput ).toHaveValue( null );
|
|
96
114
|
|
|
97
|
-
|
|
115
|
+
const newHeight = '500';
|
|
98
116
|
|
|
99
|
-
|
|
100
|
-
|
|
117
|
+
await user.clear( heightInput );
|
|
118
|
+
await user.type( heightInput, newHeight );
|
|
101
119
|
|
|
102
|
-
expect(
|
|
103
|
-
expect(
|
|
120
|
+
expect( mockOnChange ).toHaveBeenCalledTimes( newHeight.length );
|
|
121
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( { height: 500 } );
|
|
122
|
+
|
|
123
|
+
expect( heightInput ).toHaveValue( 500 );
|
|
124
|
+
expect( widthInput ).toHaveValue( null );
|
|
104
125
|
} );
|
|
105
126
|
|
|
106
|
-
it( 'updates width and calls onChange', () => {
|
|
127
|
+
it( 'updates width and calls onChange', async () => {
|
|
128
|
+
const user = userEvent.setup();
|
|
129
|
+
|
|
107
130
|
render( <ImageSizeControl onChange={ mockOnChange } /> );
|
|
108
131
|
|
|
109
|
-
const heightInput =
|
|
110
|
-
|
|
132
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
133
|
+
name: 'Height',
|
|
134
|
+
} );
|
|
135
|
+
const widthInput = screen.getByRole( 'spinbutton', {
|
|
136
|
+
name: 'Width',
|
|
137
|
+
} );
|
|
111
138
|
|
|
112
|
-
expect( heightInput
|
|
113
|
-
expect( widthInput
|
|
139
|
+
expect( heightInput ).toHaveValue( null );
|
|
140
|
+
expect( widthInput ).toHaveValue( null );
|
|
114
141
|
|
|
115
|
-
|
|
142
|
+
const newWidth = '500';
|
|
143
|
+
await user.clear( widthInput );
|
|
144
|
+
await user.type( widthInput, newWidth );
|
|
116
145
|
|
|
117
|
-
expect( mockOnChange ).toHaveBeenCalledTimes(
|
|
118
|
-
expect( mockOnChange ).
|
|
146
|
+
expect( mockOnChange ).toHaveBeenCalledTimes( newWidth.length );
|
|
147
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( { width: 500 } );
|
|
119
148
|
|
|
120
|
-
expect( heightInput
|
|
121
|
-
expect( widthInput
|
|
149
|
+
expect( heightInput ).toHaveValue( null );
|
|
150
|
+
expect( widthInput ).toHaveValue( 500 );
|
|
122
151
|
} );
|
|
123
152
|
|
|
124
|
-
it( 'updates height and calls onChange for empty value', () => {
|
|
153
|
+
it( 'updates height and calls onChange for empty value', async () => {
|
|
154
|
+
const user = userEvent.setup();
|
|
155
|
+
|
|
125
156
|
render(
|
|
126
157
|
<ImageSizeControl
|
|
127
158
|
imageHeight="100"
|
|
@@ -130,27 +161,33 @@ describe( 'ImageSizeControl', () => {
|
|
|
130
161
|
/>
|
|
131
162
|
);
|
|
132
163
|
|
|
133
|
-
const heightInput =
|
|
134
|
-
|
|
164
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
165
|
+
name: 'Height',
|
|
166
|
+
} );
|
|
167
|
+
const widthInput = screen.getByRole( 'spinbutton', {
|
|
168
|
+
name: 'Width',
|
|
169
|
+
} );
|
|
135
170
|
|
|
136
|
-
expect( heightInput
|
|
137
|
-
expect( widthInput
|
|
171
|
+
expect( heightInput ).toHaveValue( 100 );
|
|
172
|
+
expect( widthInput ).toHaveValue( 100 );
|
|
138
173
|
|
|
139
|
-
|
|
174
|
+
await user.clear( heightInput );
|
|
140
175
|
|
|
141
176
|
// onChange is called and sets the dimension to undefined rather than
|
|
142
177
|
// the empty string.
|
|
143
178
|
expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
|
|
144
|
-
expect( mockOnChange ).
|
|
179
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( {
|
|
145
180
|
height: undefined,
|
|
146
181
|
} );
|
|
147
182
|
|
|
148
183
|
// Height is updated to empty value and does not reset to default.
|
|
149
|
-
expect( heightInput
|
|
150
|
-
expect( widthInput
|
|
184
|
+
expect( heightInput ).toHaveValue( null );
|
|
185
|
+
expect( widthInput ).toHaveValue( 100 );
|
|
151
186
|
} );
|
|
152
187
|
|
|
153
|
-
it( 'updates width and calls onChange for empty value', () => {
|
|
188
|
+
it( 'updates width and calls onChange for empty value', async () => {
|
|
189
|
+
const user = userEvent.setup();
|
|
190
|
+
|
|
154
191
|
render(
|
|
155
192
|
<ImageSizeControl
|
|
156
193
|
imageHeight="100"
|
|
@@ -159,29 +196,35 @@ describe( 'ImageSizeControl', () => {
|
|
|
159
196
|
/>
|
|
160
197
|
);
|
|
161
198
|
|
|
162
|
-
const heightInput =
|
|
163
|
-
|
|
199
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
200
|
+
name: 'Height',
|
|
201
|
+
} );
|
|
202
|
+
const widthInput = screen.getByRole( 'spinbutton', {
|
|
203
|
+
name: 'Width',
|
|
204
|
+
} );
|
|
164
205
|
|
|
165
|
-
expect( heightInput
|
|
166
|
-
expect( widthInput
|
|
206
|
+
expect( heightInput ).toHaveValue( 100 );
|
|
207
|
+
expect( widthInput ).toHaveValue( 100 );
|
|
167
208
|
|
|
168
|
-
|
|
209
|
+
await user.clear( widthInput );
|
|
169
210
|
|
|
170
211
|
// onChange is called and sets the dimension to undefined rather than
|
|
171
212
|
// the empty string.
|
|
172
213
|
expect( mockOnChange ).toHaveBeenCalledTimes( 1 );
|
|
173
|
-
expect( mockOnChange ).
|
|
214
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( {
|
|
174
215
|
width: undefined,
|
|
175
216
|
} );
|
|
176
217
|
|
|
177
218
|
// Width is updated to empty value and does not reset to default.
|
|
178
|
-
expect( heightInput
|
|
179
|
-
expect( widthInput
|
|
219
|
+
expect( heightInput ).toHaveValue( 100 );
|
|
220
|
+
expect( widthInput ).toHaveValue( null );
|
|
180
221
|
} );
|
|
181
222
|
} );
|
|
182
223
|
|
|
183
224
|
describe( 'reset button', () => {
|
|
184
|
-
it( 'resets both height and width to default values', () => {
|
|
225
|
+
it( 'resets both height and width to default values', async () => {
|
|
226
|
+
const user = userEvent.setup();
|
|
227
|
+
|
|
185
228
|
render(
|
|
186
229
|
<ImageSizeControl
|
|
187
230
|
imageHeight="100"
|
|
@@ -192,29 +235,35 @@ describe( 'ImageSizeControl', () => {
|
|
|
192
235
|
/>
|
|
193
236
|
);
|
|
194
237
|
|
|
195
|
-
const heightInput =
|
|
196
|
-
|
|
238
|
+
const heightInput = screen.getByRole( 'spinbutton', {
|
|
239
|
+
name: 'Height',
|
|
240
|
+
} );
|
|
241
|
+
const widthInput = screen.getByRole( 'spinbutton', {
|
|
242
|
+
name: 'Width',
|
|
243
|
+
} );
|
|
197
244
|
|
|
198
245
|
// The initial dimension values display first.
|
|
199
|
-
expect( heightInput
|
|
200
|
-
expect( widthInput
|
|
246
|
+
expect( heightInput ).toHaveValue( 300 );
|
|
247
|
+
expect( widthInput ).toHaveValue( 400 );
|
|
201
248
|
|
|
202
|
-
|
|
249
|
+
await user.click( screen.getByRole( 'button', { name: 'Reset' } ) );
|
|
203
250
|
|
|
204
251
|
// Both attributes are set to undefined to clear custom values.
|
|
205
|
-
expect( mockOnChange ).
|
|
252
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( {
|
|
206
253
|
height: undefined,
|
|
207
254
|
width: undefined,
|
|
208
255
|
} );
|
|
209
256
|
|
|
210
257
|
// The inputs display the default values once more.
|
|
211
|
-
expect( heightInput
|
|
212
|
-
expect( widthInput
|
|
258
|
+
expect( heightInput ).toHaveValue( 100 );
|
|
259
|
+
expect( widthInput ).toHaveValue( 200 );
|
|
213
260
|
} );
|
|
214
261
|
} );
|
|
215
262
|
|
|
216
263
|
describe( 'image size percentage presets', () => {
|
|
217
|
-
it( 'updates height and width attributes on selection', () => {
|
|
264
|
+
it( 'updates height and width attributes on selection', async () => {
|
|
265
|
+
const user = userEvent.setup();
|
|
266
|
+
|
|
218
267
|
render(
|
|
219
268
|
<ImageSizeControl
|
|
220
269
|
imageHeight="100"
|
|
@@ -223,18 +272,25 @@ describe( 'ImageSizeControl', () => {
|
|
|
223
272
|
/>
|
|
224
273
|
);
|
|
225
274
|
|
|
226
|
-
|
|
275
|
+
const button = screen.getByRole( 'button', {
|
|
276
|
+
name: '50%',
|
|
277
|
+
pressed: false,
|
|
278
|
+
} );
|
|
279
|
+
|
|
280
|
+
await user.click( button );
|
|
227
281
|
|
|
228
|
-
expect(
|
|
282
|
+
expect( button ).toHaveClass( 'is-pressed' );
|
|
229
283
|
|
|
230
284
|
// Both attributes are set to the rounded scaled value.
|
|
231
|
-
expect( mockOnChange ).
|
|
285
|
+
expect( mockOnChange ).toHaveBeenLastCalledWith( {
|
|
232
286
|
height: 50,
|
|
233
287
|
width: 101,
|
|
234
288
|
} );
|
|
235
289
|
} );
|
|
236
290
|
|
|
237
|
-
it( 'updates height and width inputs on selection', () => {
|
|
291
|
+
it( 'updates height and width inputs on selection', async () => {
|
|
292
|
+
const user = userEvent.setup();
|
|
293
|
+
|
|
238
294
|
render(
|
|
239
295
|
<ImageSizeControl
|
|
240
296
|
imageHeight="100"
|
|
@@ -243,11 +299,20 @@ describe( 'ImageSizeControl', () => {
|
|
|
243
299
|
/>
|
|
244
300
|
);
|
|
245
301
|
|
|
246
|
-
|
|
302
|
+
const button = screen.getByRole( 'button', {
|
|
303
|
+
name: '50%',
|
|
304
|
+
pressed: false,
|
|
305
|
+
} );
|
|
306
|
+
|
|
307
|
+
await user.click( button );
|
|
247
308
|
|
|
248
309
|
// Both attributes are set to the rounded scaled value.
|
|
249
|
-
expect(
|
|
250
|
-
|
|
310
|
+
expect(
|
|
311
|
+
screen.getByRole( 'spinbutton', { name: 'Height' } )
|
|
312
|
+
).toHaveValue( 50 );
|
|
313
|
+
expect(
|
|
314
|
+
screen.getByRole( 'spinbutton', { name: 'Width' } )
|
|
315
|
+
).toHaveValue( 101 );
|
|
251
316
|
} );
|
|
252
317
|
} );
|
|
253
318
|
|
|
@@ -268,12 +333,14 @@ describe( 'ImageSizeControl', () => {
|
|
|
268
333
|
/>
|
|
269
334
|
);
|
|
270
335
|
|
|
271
|
-
expect(
|
|
272
|
-
'
|
|
273
|
-
);
|
|
336
|
+
expect(
|
|
337
|
+
screen.getByRole( 'combobox', { name: 'Image size' } )
|
|
338
|
+
).toHaveValue( 'medium' );
|
|
274
339
|
} );
|
|
275
340
|
|
|
276
|
-
it( 'calls onChangeImage with selected slug on selection', () => {
|
|
341
|
+
it( 'calls onChangeImage with selected slug on selection', async () => {
|
|
342
|
+
const user = userEvent.setup();
|
|
343
|
+
|
|
277
344
|
render(
|
|
278
345
|
<ImageSizeControl
|
|
279
346
|
imageSizeOptions={ IMAGE_SIZE_OPTIONS }
|
|
@@ -283,12 +350,13 @@ describe( 'ImageSizeControl', () => {
|
|
|
283
350
|
/>
|
|
284
351
|
);
|
|
285
352
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
353
|
+
await user.selectOptions(
|
|
354
|
+
screen.getByRole( 'combobox', { name: 'Image size' } ),
|
|
355
|
+
'thumbnail'
|
|
356
|
+
);
|
|
289
357
|
|
|
290
358
|
// onChangeImage is called with the slug and the event.
|
|
291
|
-
expect( mockOnChangeImage ).
|
|
359
|
+
expect( mockOnChangeImage ).toHaveBeenLastCalledWith(
|
|
292
360
|
'thumbnail',
|
|
293
361
|
expect.any( Object )
|
|
294
362
|
);
|
|
@@ -87,8 +87,10 @@ function UncontrolledInnerBlocks( props ) {
|
|
|
87
87
|
|
|
88
88
|
const blockType = getBlockType( block.name );
|
|
89
89
|
|
|
90
|
-
if (
|
|
91
|
-
|
|
90
|
+
if (
|
|
91
|
+
Object.keys( blockType?.providesContext ?? {} ).length === 0
|
|
92
|
+
) {
|
|
93
|
+
return { name: block.name };
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
return {
|
|
@@ -28,8 +28,11 @@ import BlockPatternList from '../block-patterns-list';
|
|
|
28
28
|
import PatternsExplorerModal from './block-patterns-explorer/explorer';
|
|
29
29
|
import MobileTabNavigation from './mobile-tab-navigation';
|
|
30
30
|
|
|
31
|
-
function usePatternsCategories() {
|
|
32
|
-
const [ allPatterns, allCategories ] = usePatternsState(
|
|
31
|
+
function usePatternsCategories( rootClientId ) {
|
|
32
|
+
const [ allPatterns, allCategories ] = usePatternsState(
|
|
33
|
+
undefined,
|
|
34
|
+
rootClientId
|
|
35
|
+
);
|
|
33
36
|
|
|
34
37
|
const hasRegisteredCategory = useCallback(
|
|
35
38
|
( pattern ) => {
|
|
@@ -128,7 +131,7 @@ export function BlockPatternsCategoryPanel( {
|
|
|
128
131
|
rootClientId
|
|
129
132
|
);
|
|
130
133
|
|
|
131
|
-
const availableCategories = usePatternsCategories();
|
|
134
|
+
const availableCategories = usePatternsCategories( rootClientId );
|
|
132
135
|
const currentCategoryPatterns = useMemo(
|
|
133
136
|
() =>
|
|
134
137
|
allPatterns.filter( ( pattern ) => {
|
|
@@ -184,7 +187,7 @@ function BlockPatternsTabs( {
|
|
|
184
187
|
rootClientId,
|
|
185
188
|
} ) {
|
|
186
189
|
const [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );
|
|
187
|
-
const categories = usePatternsCategories();
|
|
190
|
+
const categories = usePatternsCategories( rootClientId );
|
|
188
191
|
const isMobile = useViewportMatch( 'medium', '<' );
|
|
189
192
|
return (
|
|
190
193
|
<>
|
|
@@ -39,6 +39,7 @@ function useInsertionPoint( {
|
|
|
39
39
|
isAppender,
|
|
40
40
|
onSelect,
|
|
41
41
|
shouldFocusBlock = true,
|
|
42
|
+
selectBlockOnInsert = true,
|
|
42
43
|
} ) {
|
|
43
44
|
const { getSelectedBlock } = useSelect( blockEditorStore );
|
|
44
45
|
const { destinationRootClientId, destinationIndex } = useSelect(
|
|
@@ -108,7 +109,7 @@ function useInsertionPoint( {
|
|
|
108
109
|
blocks,
|
|
109
110
|
destinationIndex,
|
|
110
111
|
destinationRootClientId,
|
|
111
|
-
|
|
112
|
+
selectBlockOnInsert,
|
|
112
113
|
shouldFocusBlock || shouldForceFocusBlock ? 0 : null,
|
|
113
114
|
meta
|
|
114
115
|
);
|
|
@@ -122,7 +123,7 @@ function useInsertionPoint( {
|
|
|
122
123
|
speak( message );
|
|
123
124
|
|
|
124
125
|
if ( onSelect ) {
|
|
125
|
-
onSelect();
|
|
126
|
+
onSelect( blocks );
|
|
126
127
|
}
|
|
127
128
|
},
|
|
128
129
|
[
|
|
@@ -143,18 +143,31 @@ class Inserter extends Component {
|
|
|
143
143
|
// Feel free to make them stable after a few releases.
|
|
144
144
|
__experimentalIsQuick: isQuick,
|
|
145
145
|
prioritizePatterns,
|
|
146
|
+
onSelectOrClose,
|
|
147
|
+
selectBlockOnInsert,
|
|
146
148
|
} = this.props;
|
|
147
149
|
|
|
148
150
|
if ( isQuick ) {
|
|
149
151
|
return (
|
|
150
152
|
<QuickInserter
|
|
151
|
-
onSelect={ () => {
|
|
153
|
+
onSelect={ ( blocks ) => {
|
|
154
|
+
const firstBlock =
|
|
155
|
+
Array.isArray( blocks ) && blocks?.length
|
|
156
|
+
? blocks[ 0 ]
|
|
157
|
+
: blocks;
|
|
158
|
+
if (
|
|
159
|
+
onSelectOrClose &&
|
|
160
|
+
typeof onSelectOrClose === 'function'
|
|
161
|
+
) {
|
|
162
|
+
onSelectOrClose( firstBlock );
|
|
163
|
+
}
|
|
152
164
|
onClose();
|
|
153
165
|
} }
|
|
154
166
|
rootClientId={ rootClientId }
|
|
155
167
|
clientId={ clientId }
|
|
156
168
|
isAppender={ isAppender }
|
|
157
169
|
prioritizePatterns={ prioritizePatterns }
|
|
170
|
+
selectBlockOnInsert={ selectBlockOnInsert }
|
|
158
171
|
/>
|
|
159
172
|
);
|
|
160
173
|
}
|
|
@@ -207,48 +220,53 @@ class Inserter extends Component {
|
|
|
207
220
|
}
|
|
208
221
|
|
|
209
222
|
export default compose( [
|
|
210
|
-
withSelect(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
rootClientId
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
223
|
+
withSelect(
|
|
224
|
+
( select, { clientId, rootClientId, shouldDirectInsert = true } ) => {
|
|
225
|
+
const {
|
|
226
|
+
getBlockRootClientId,
|
|
227
|
+
hasInserterItems,
|
|
228
|
+
__experimentalGetAllowedBlocks,
|
|
229
|
+
__experimentalGetDirectInsertBlock,
|
|
230
|
+
getSettings,
|
|
231
|
+
} = select( blockEditorStore );
|
|
232
|
+
|
|
233
|
+
const { getBlockVariations } = select( blocksStore );
|
|
234
|
+
|
|
235
|
+
rootClientId =
|
|
236
|
+
rootClientId || getBlockRootClientId( clientId ) || undefined;
|
|
237
|
+
|
|
238
|
+
const allowedBlocks =
|
|
239
|
+
__experimentalGetAllowedBlocks( rootClientId );
|
|
240
|
+
|
|
241
|
+
const directInsertBlock =
|
|
242
|
+
shouldDirectInsert &&
|
|
243
|
+
__experimentalGetDirectInsertBlock( rootClientId );
|
|
244
|
+
|
|
245
|
+
const settings = getSettings();
|
|
246
|
+
|
|
247
|
+
const hasSingleBlockType =
|
|
248
|
+
allowedBlocks?.length === 1 &&
|
|
249
|
+
getBlockVariations( allowedBlocks[ 0 ].name, 'inserter' )
|
|
250
|
+
?.length === 0;
|
|
251
|
+
|
|
252
|
+
let allowedBlockType = false;
|
|
253
|
+
if ( hasSingleBlockType ) {
|
|
254
|
+
allowedBlockType = allowedBlocks[ 0 ];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return {
|
|
258
|
+
hasItems: hasInserterItems( rootClientId ),
|
|
259
|
+
hasSingleBlockType,
|
|
260
|
+
blockTitle: allowedBlockType ? allowedBlockType.title : '',
|
|
261
|
+
allowedBlockType,
|
|
262
|
+
directInsertBlock,
|
|
263
|
+
rootClientId,
|
|
264
|
+
prioritizePatterns:
|
|
265
|
+
settings.__experimentalPreferPatternsOnRoot &&
|
|
266
|
+
! rootClientId,
|
|
267
|
+
};
|
|
239
268
|
}
|
|
240
|
-
|
|
241
|
-
return {
|
|
242
|
-
hasItems: hasInserterItems( rootClientId ),
|
|
243
|
-
hasSingleBlockType,
|
|
244
|
-
blockTitle: allowedBlockType ? allowedBlockType.title : '',
|
|
245
|
-
allowedBlockType,
|
|
246
|
-
directInsertBlock,
|
|
247
|
-
rootClientId,
|
|
248
|
-
prioritizePatterns:
|
|
249
|
-
settings.__experimentalPreferPatternsOnRoot && ! rootClientId,
|
|
250
|
-
};
|
|
251
|
-
} ),
|
|
269
|
+
),
|
|
252
270
|
withDispatch( ( dispatch, ownProps, { select } ) => {
|
|
253
271
|
return {
|
|
254
272
|
insertOnlyAllowedBlock() {
|
|
@@ -380,7 +398,7 @@ export default compose( [
|
|
|
380
398
|
|
|
381
399
|
if ( onSelectOrClose ) {
|
|
382
400
|
onSelectOrClose( {
|
|
383
|
-
|
|
401
|
+
clientId: blockToInsert?.clientId,
|
|
384
402
|
} );
|
|
385
403
|
}
|
|
386
404
|
|
|
@@ -66,14 +66,15 @@ export function useMediaCategories( rootClientId ) {
|
|
|
66
66
|
per_page: 1,
|
|
67
67
|
_fields: [ 'id' ],
|
|
68
68
|
};
|
|
69
|
-
const [ image, video, audio ] = await Promise.
|
|
69
|
+
const [ image, video, audio ] = await Promise.allSettled( [
|
|
70
70
|
fetchMedia( { ...query, media_type: 'image' } ),
|
|
71
71
|
fetchMedia( { ...query, media_type: 'video' } ),
|
|
72
72
|
fetchMedia( { ...query, media_type: 'audio' } ),
|
|
73
73
|
] );
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
const
|
|
74
|
+
// The `value` property is only present if the promise's status is "fulfilled".
|
|
75
|
+
const showImage = canInsertImage && !! image.value?.length;
|
|
76
|
+
const showVideo = canInsertVideo && !! video.value?.length;
|
|
77
|
+
const showAudio = canInsertAudio && !! audio.value?.length;
|
|
77
78
|
setCategories(
|
|
78
79
|
MEDIA_CATEGORIES.filter(
|
|
79
80
|
( { mediaType } ) =>
|
|
@@ -67,20 +67,24 @@ function InserterMenu(
|
|
|
67
67
|
insertionIndex: __experimentalInsertionIndex,
|
|
68
68
|
shouldFocusBlock,
|
|
69
69
|
} );
|
|
70
|
-
const { showPatterns,
|
|
70
|
+
const { showPatterns, inserterItems } = useSelect(
|
|
71
71
|
( select ) => {
|
|
72
|
-
const { __experimentalGetAllowedPatterns,
|
|
72
|
+
const { __experimentalGetAllowedPatterns, getInserterItems } =
|
|
73
73
|
select( blockEditorStore );
|
|
74
74
|
return {
|
|
75
75
|
showPatterns: !! __experimentalGetAllowedPatterns(
|
|
76
76
|
destinationRootClientId
|
|
77
77
|
).length,
|
|
78
|
-
|
|
79
|
-
!! getSettings().__experimentalReusableBlocks?.length,
|
|
78
|
+
inserterItems: getInserterItems( destinationRootClientId ),
|
|
80
79
|
};
|
|
81
80
|
},
|
|
82
81
|
[ destinationRootClientId ]
|
|
83
82
|
);
|
|
83
|
+
const hasReusableBlocks = useMemo( () => {
|
|
84
|
+
return inserterItems.some(
|
|
85
|
+
( { category } ) => category === 'reusable'
|
|
86
|
+
);
|
|
87
|
+
}, [ inserterItems ] );
|
|
84
88
|
|
|
85
89
|
const mediaCategories = useMediaCategories( destinationRootClientId );
|
|
86
90
|
const showMedia = !! mediaCategories.length;
|
|
@@ -31,6 +31,7 @@ export default function QuickInserter( {
|
|
|
31
31
|
clientId,
|
|
32
32
|
isAppender,
|
|
33
33
|
prioritizePatterns,
|
|
34
|
+
selectBlockOnInsert,
|
|
34
35
|
} ) {
|
|
35
36
|
const [ filterValue, setFilterValue ] = useState( '' );
|
|
36
37
|
const [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {
|
|
@@ -38,6 +39,7 @@ export default function QuickInserter( {
|
|
|
38
39
|
rootClientId,
|
|
39
40
|
clientId,
|
|
40
41
|
isAppender,
|
|
42
|
+
selectBlockOnInsert,
|
|
41
43
|
} );
|
|
42
44
|
const [ blockTypes ] = useBlockTypesState(
|
|
43
45
|
destinationRootClientId,
|
|
@@ -121,6 +123,7 @@ export default function QuickInserter( {
|
|
|
121
123
|
maxBlockTypes={ SHOWN_BLOCK_TYPES }
|
|
122
124
|
isDraggable={ false }
|
|
123
125
|
prioritizePatterns={ prioritizePatterns }
|
|
126
|
+
selectBlockOnInsert={ selectBlockOnInsert }
|
|
124
127
|
/>
|
|
125
128
|
</div>
|
|
126
129
|
|