@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.0.1
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 +6 -0
- package/README.md +13 -1
- package/build/components/alignment-control/ui.js +6 -5
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/autocomplete/index.js +2 -2
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +5 -9
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +5 -5
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-content-overlay/index.js +2 -4
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.js +2 -1
- package/build/components/block-draggable/draggable-chip.js.map +1 -1
- package/build/components/block-edit/edit.js +1 -1
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-inspector/index.js +125 -17
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-list-compact.native.js +2 -1
- package/build/components/block-list/block-list-compact.native.js.map +1 -1
- package/build/components/block-list/block.js +40 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +14 -11
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +7 -12
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +20 -21
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js +1 -7
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +3 -1
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -6
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -6
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +24 -8
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-popover/inbetween.js +82 -52
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +31 -7
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +4 -2
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +3 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +7 -1
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +114 -25
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -8
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +13 -5
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +33 -15
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +4 -9
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +9 -8
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build/components/block-vertical-alignment-control/ui.js +5 -2
- package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build/components/border-radius-control/linked-button.js +5 -6
- package/build/components/border-radius-control/linked-button.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +1 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +8 -3
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/iframe/index.js +31 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +1 -7
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -3
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +28 -17
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +28 -4
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -6
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/library.js +14 -3
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +21 -8
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/tabs.js +11 -4
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/link-control/link-preview.js +1 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +6 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-item.js +36 -5
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block.js +23 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +19 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +30 -28
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js +8 -4
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +0 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/provider/use-block-sync.js +1 -7
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +1 -1
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +9 -9
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +31 -21
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +11 -20
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/spacing-sizes-control/linked-button.js +2 -3
- package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +1 -4
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/components/text-decoration-control/index.js +19 -15
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +25 -17
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/tool-selector/index.js +6 -11
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +6 -4
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/url-popover/index.js +1 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +7 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +9 -28
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +1 -7
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/hooks/align.js +14 -2
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/color-panel.js +2 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/content-lock-ui.js +145 -0
- package/build/hooks/content-lock-ui.js.map +1 -0
- package/build/hooks/duotone.js +8 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +14 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +11 -9
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/metadata-name.js +55 -0
- package/build/hooks/metadata-name.js.map +1 -0
- package/build/hooks/metadata.js +65 -0
- package/build/hooks/metadata.js.map +1 -0
- package/build/hooks/typography.js +10 -11
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-typography-props.js +51 -0
- package/build/hooks/use-typography-props.js.map +1 -0
- package/build/hooks/utils.js +3 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +59 -20
- package/build/layouts/constrained.js.map +1 -1
- package/build/store/actions.js +65 -21
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +43 -19
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +96 -10
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +1 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +6 -5
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/autocomplete/index.js +2 -2
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +5 -8
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +5 -5
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +2 -4
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.js +2 -1
- package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
- package/build-module/components/block-edit/edit.js +1 -1
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-inspector/index.js +127 -19
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-list-compact.native.js +2 -1
- package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
- package/build-module/components/block-list/block.js +41 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -4
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +13 -11
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +7 -12
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +20 -20
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js +1 -6
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +3 -1
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -5
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -5
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +24 -7
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +83 -53
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +31 -7
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +4 -2
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +3 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +6 -1
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +9 -8
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +12 -5
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +30 -15
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +4 -9
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +9 -8
- 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 +13 -8
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
- package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
- package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
- package/build-module/components/border-radius-control/linked-button.js +5 -6
- package/build-module/components/border-radius-control/linked-button.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +1 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +8 -3
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/iframe/index.js +32 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +1 -6
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -3
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +28 -17
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +28 -4
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -6
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/library.js +14 -3
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +20 -8
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/tabs.js +11 -4
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +1 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +6 -2
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-item.js +37 -6
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block.js +23 -11
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +19 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +30 -28
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js +8 -4
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +0 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +1 -6
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +1 -1
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +10 -10
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +31 -20
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +11 -18
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/spacing-sizes-control/linked-button.js +2 -3
- package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +1 -4
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +21 -16
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +28 -20
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +6 -11
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +6 -4
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/url-popover/index.js +1 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +7 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +9 -28
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +1 -6
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/hooks/align.js +12 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/color-panel.js +2 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +128 -0
- package/build-module/hooks/content-lock-ui.js.map +1 -0
- package/build-module/hooks/duotone.js +6 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +4 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +11 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/metadata-name.js +45 -0
- package/build-module/hooks/metadata-name.js.map +1 -0
- package/build-module/hooks/metadata.js +50 -0
- package/build-module/hooks/metadata.js.map +1 -0
- package/build-module/hooks/typography.js +10 -11
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +38 -0
- package/build-module/hooks/use-typography-props.js.map +1 -0
- package/build-module/hooks/utils.js +4 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +61 -22
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/store/actions.js +58 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +41 -19
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +81 -10
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +1 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +142 -46
- package/build-style/style.css +142 -46
- package/package.json +28 -28
- package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
- package/src/components/alignment-control/test/index.js +124 -33
- package/src/components/alignment-control/ui.js +8 -3
- package/src/components/autocomplete/index.js +2 -5
- package/src/components/block-actions/index.js +9 -8
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
- package/src/components/block-alignment-control/test/index.js +95 -31
- package/src/components/block-alignment-control/ui.js +2 -2
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
- package/src/components/block-compare/test/block-view.js +3 -3
- package/src/components/block-content-overlay/index.js +2 -6
- package/src/components/block-content-overlay/style.scss +24 -3
- package/src/components/block-draggable/draggable-chip.js +4 -1
- package/src/components/block-edit/edit.js +5 -1
- package/src/components/block-edit/test/edit.js +23 -21
- package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
- package/src/components/block-icon/test/index.js +31 -16
- package/src/components/block-inspector/index.js +126 -12
- package/src/components/block-inspector/style.scss +7 -1
- package/src/components/block-list/block-list-compact.native.js +1 -1
- package/src/components/block-list/block.js +53 -13
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/style.scss +57 -11
- package/src/components/block-list/test/block-list-context.native.js +11 -13
- package/src/components/block-list/use-block-props/index.js +10 -10
- package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
- package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
- package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +11 -13
- package/src/components/block-list-appender/index.js +27 -18
- package/src/components/block-list-appender/index.native.js +3 -6
- package/src/components/block-lock/use-block-lock.js +2 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
- package/src/components/block-mover/button.js +6 -5
- package/src/components/block-mover/index.js +8 -7
- package/src/components/block-mover/index.native.js +20 -13
- package/src/components/block-popover/inbetween.js +124 -62
- package/src/components/block-popover/index.js +47 -8
- package/src/components/block-popover/style.scss +3 -4
- package/src/components/block-preview/auto.js +4 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
- package/src/components/block-settings-menu-controls/README.md +9 -0
- package/src/components/block-settings-menu-controls/index.js +13 -2
- package/src/components/block-styles/preview-panel.js +3 -0
- package/src/components/block-switcher/block-transformations-menu.js +127 -33
- package/src/components/block-switcher/style.scss +4 -2
- package/src/components/block-title/test/index.js +28 -25
- package/src/components/block-toolbar/index.js +27 -17
- package/src/components/block-tools/block-contextual-toolbar.js +10 -3
- package/src/components/block-tools/block-selection-button.js +35 -16
- package/src/components/block-tools/index.js +40 -24
- package/src/components/block-tools/insertion-point.js +3 -7
- package/src/components/block-tools/selected-block-popover.js +9 -7
- package/src/components/block-tools/style.scss +5 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
- package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
- package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
- package/src/components/block-vertical-alignment-control/test/index.js +92 -23
- package/src/components/block-vertical-alignment-control/ui.js +3 -2
- package/src/components/border-radius-control/linked-button.js +12 -11
- package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
- package/src/components/colors/test/with-colors.js +37 -12
- package/src/components/colors-gradients/dropdown.js +1 -1
- package/src/components/contrast-checker/test/index.js +135 -116
- package/src/components/convert-to-group-buttons/toolbar.js +6 -2
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
- package/src/components/default-block-appender/test/index.js +32 -18
- package/src/components/font-sizes/README.MD +9 -0
- package/src/components/iframe/index.js +64 -5
- package/src/components/inner-blocks/README.md +2 -1
- package/src/components/inner-blocks/default-block-appender.js +1 -6
- package/src/components/inner-blocks/index.js +10 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +40 -25
- package/src/components/inner-blocks/use-nested-settings-update.js +32 -3
- package/src/components/inserter/index.js +2 -8
- package/src/components/inserter/library.js +11 -5
- package/src/components/inserter/menu.js +42 -29
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/stories/fixtures.js +44 -0
- package/src/components/inserter/stories/index.js +90 -0
- package/src/components/inserter/style.scss +21 -27
- package/src/components/inserter/tabs.js +8 -4
- package/src/components/link-control/link-preview.js +5 -3
- package/src/components/link-control/search-input.js +2 -2
- package/src/components/link-control/search-item.js +39 -7
- package/src/components/list-view/block.js +29 -10
- package/src/components/list-view/branch.js +27 -4
- package/src/components/list-view/drop-indicator.js +33 -32
- package/src/components/list-view/index.js +8 -3
- package/src/components/list-view/use-block-selection.js +0 -1
- package/src/components/media-placeholder/test/index.js +2 -2
- package/src/components/media-replace-flow/README.md +1 -1
- package/src/components/provider/use-block-sync.js +3 -6
- package/src/components/publish-date-time-picker/index.js +1 -1
- package/src/components/rich-text/format-toolbar-container.js +18 -10
- package/src/components/rich-text/index.js +26 -37
- package/src/components/rich-text/index.native.js +8 -21
- package/src/components/spacing-sizes-control/linked-button.js +2 -3
- package/src/components/spacing-sizes-control/style.scss +4 -1
- package/src/components/spacing-sizes-control/utils.js +1 -8
- package/src/components/text-decoration-control/index.js +31 -23
- package/src/components/text-decoration-control/style.scss +18 -0
- package/src/components/text-transform-control/index.js +42 -26
- package/src/components/text-transform-control/style.scss +18 -0
- package/src/components/tool-selector/index.js +9 -11
- package/src/components/url-input/test/button.js +145 -71
- package/src/components/url-popover/image-url-input-ui.js +5 -3
- package/src/components/url-popover/index.js +1 -1
- package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
- package/src/components/url-popover/test/index.js +14 -12
- package/src/components/use-block-drop-zone/index.js +15 -4
- package/src/components/use-moving-animation/index.js +9 -24
- package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
- package/src/components/warning/test/index.js +32 -29
- package/src/components/writing-flow/use-select-all.js +4 -6
- package/src/hooks/align.js +22 -13
- package/src/hooks/color-panel.js +2 -1
- package/src/hooks/content-lock-ui.js +161 -0
- package/src/hooks/duotone.js +13 -1
- package/src/hooks/index.js +4 -0
- package/src/hooks/layout.js +25 -19
- package/src/hooks/layout.scss +7 -1
- package/src/hooks/metadata-name.js +48 -0
- package/src/hooks/metadata.js +64 -0
- package/src/hooks/test/use-typography-props.js +28 -0
- package/src/hooks/typography.js +13 -14
- package/src/hooks/use-typography-props.js +41 -0
- package/src/hooks/utils.js +2 -11
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +73 -24
- package/src/store/actions.js +45 -4
- package/src/store/reducer.js +36 -21
- package/src/store/selectors.js +99 -20
- package/src/store/test/reducer.js +8 -5
- package/src/store/test/selectors.js +4 -4
- package/src/style.scss +2 -0
- package/src/utils/parse-css-unit-to-px.js +1 -1
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Internal dependencies
|
|
@@ -9,42 +10,55 @@ import { shallow } from 'enzyme';
|
|
|
9
10
|
import { DefaultBlockAppender, ZWNBSP } from '../';
|
|
10
11
|
|
|
11
12
|
describe( 'DefaultBlockAppender', () => {
|
|
12
|
-
const expectOnAppendCalled = ( onAppend ) => {
|
|
13
|
-
expect( onAppend ).toHaveBeenCalledTimes( 1 );
|
|
14
|
-
expect( onAppend ).toHaveBeenCalledWith();
|
|
15
|
-
};
|
|
16
|
-
|
|
17
13
|
it( 'should match snapshot', () => {
|
|
18
14
|
const onAppend = jest.fn();
|
|
19
|
-
|
|
15
|
+
|
|
16
|
+
const { container } = render(
|
|
20
17
|
<DefaultBlockAppender onAppend={ onAppend } showPrompt />
|
|
21
18
|
);
|
|
22
19
|
|
|
23
|
-
expect(
|
|
20
|
+
expect( container ).toMatchSnapshot();
|
|
24
21
|
} );
|
|
25
22
|
|
|
26
|
-
it( 'should append a default block when input focused', () => {
|
|
23
|
+
it( 'should append a default block when input focused', async () => {
|
|
24
|
+
const user = userEvent.setup( {
|
|
25
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
26
|
+
} );
|
|
27
27
|
const onAppend = jest.fn();
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
const { container } = render(
|
|
29
30
|
<DefaultBlockAppender onAppend={ onAppend } showPrompt />
|
|
30
31
|
);
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
await user.click(
|
|
34
|
+
screen.getByRole( 'button', { name: 'Add default block' } )
|
|
35
|
+
);
|
|
33
36
|
|
|
34
|
-
expect(
|
|
37
|
+
expect( container ).toMatchSnapshot();
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
// Called once for focusing and once for clicking.
|
|
40
|
+
expect( onAppend ).toHaveBeenCalledTimes( 2 );
|
|
41
|
+
expect( onAppend ).toHaveBeenCalledWith();
|
|
37
42
|
} );
|
|
38
43
|
|
|
39
|
-
it( 'should optionally show without prompt', () => {
|
|
44
|
+
it( 'should optionally show without prompt', async () => {
|
|
45
|
+
const user = userEvent.setup( {
|
|
46
|
+
advanceTimers: jest.advanceTimersByTime,
|
|
47
|
+
} );
|
|
40
48
|
const onAppend = jest.fn();
|
|
41
|
-
|
|
49
|
+
|
|
50
|
+
const { container } = render(
|
|
42
51
|
<DefaultBlockAppender onAppend={ onAppend } showPrompt={ false } />
|
|
43
52
|
);
|
|
44
|
-
const input = wrapper.find( 'p' );
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
const appender = screen.getByRole( 'button', {
|
|
55
|
+
name: 'Add default block',
|
|
56
|
+
} );
|
|
57
|
+
|
|
58
|
+
await user.click( appender );
|
|
59
|
+
|
|
60
|
+
expect( appender ).toContainHTML( ZWNBSP );
|
|
47
61
|
|
|
48
|
-
expect(
|
|
62
|
+
expect( container ).toMatchSnapshot();
|
|
49
63
|
} );
|
|
50
64
|
} );
|
|
@@ -31,6 +31,7 @@ const MyFontSizePicker = () => {
|
|
|
31
31
|
|
|
32
32
|
return (
|
|
33
33
|
<FontSizePicker
|
|
34
|
+
__nextHasNoMarginBottom
|
|
34
35
|
value={ fontSize }
|
|
35
36
|
fallbackFontSize={ fallbackFontSize }
|
|
36
37
|
onChange={ ( newFontSize ) => {
|
|
@@ -79,3 +80,11 @@ If `true`, the UI will contain a slider, instead of a numeric text input field.
|
|
|
79
80
|
- Type: `Boolean`
|
|
80
81
|
- Required: no
|
|
81
82
|
- Default: `false`
|
|
83
|
+
|
|
84
|
+
### __nextHasNoMarginBottom
|
|
85
|
+
|
|
86
|
+
Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.4. (The prop can be safely removed once this happens.)
|
|
87
|
+
|
|
88
|
+
- Type: `Boolean`
|
|
89
|
+
- Required: no
|
|
90
|
+
- Default: `false`
|
|
@@ -14,7 +14,11 @@ import {
|
|
|
14
14
|
useReducer,
|
|
15
15
|
} from '@wordpress/element';
|
|
16
16
|
import { __ } from '@wordpress/i18n';
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
useResizeObserver,
|
|
19
|
+
useMergeRefs,
|
|
20
|
+
useRefEffect,
|
|
21
|
+
} from '@wordpress/compose';
|
|
18
22
|
import { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
|
|
19
23
|
|
|
20
24
|
/**
|
|
@@ -184,7 +188,7 @@ async function loadScript( head, { id, src } ) {
|
|
|
184
188
|
}
|
|
185
189
|
|
|
186
190
|
function Iframe(
|
|
187
|
-
{ contentRef, children, head, tabIndex = 0, assets, ...props },
|
|
191
|
+
{ contentRef, children, head, tabIndex = 0, assets, isZoomedOut, ...props },
|
|
188
192
|
ref
|
|
189
193
|
) {
|
|
190
194
|
const [ , forceRender ] = useReducer( () => ( {} ) );
|
|
@@ -194,10 +198,18 @@ function Iframe(
|
|
|
194
198
|
const scripts = useParsedAssets( assets?.scripts );
|
|
195
199
|
const clearerRef = useBlockSelectionClearer();
|
|
196
200
|
const [ before, writingFlowRef, after ] = useWritingFlow();
|
|
201
|
+
const [ contentResizeListener, { height: contentHeight } ] =
|
|
202
|
+
useResizeObserver();
|
|
197
203
|
const setRef = useRefEffect( ( node ) => {
|
|
204
|
+
let iFrameDocument;
|
|
205
|
+
// Prevent the default browser action for files dropped outside of dropzones.
|
|
206
|
+
function preventFileDropDefault( event ) {
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
}
|
|
198
209
|
function setDocumentIfReady() {
|
|
199
210
|
const { contentDocument, ownerDocument } = node;
|
|
200
211
|
const { readyState, documentElement } = contentDocument;
|
|
212
|
+
iFrameDocument = contentDocument;
|
|
201
213
|
|
|
202
214
|
if ( readyState !== 'interactive' && readyState !== 'complete' ) {
|
|
203
215
|
return false;
|
|
@@ -223,14 +235,35 @@ function Iframe(
|
|
|
223
235
|
documentElement.removeChild( contentDocument.head );
|
|
224
236
|
documentElement.removeChild( contentDocument.body );
|
|
225
237
|
|
|
238
|
+
iFrameDocument.addEventListener(
|
|
239
|
+
'dragover',
|
|
240
|
+
preventFileDropDefault,
|
|
241
|
+
false
|
|
242
|
+
);
|
|
243
|
+
iFrameDocument.addEventListener(
|
|
244
|
+
'drop',
|
|
245
|
+
preventFileDropDefault,
|
|
246
|
+
false
|
|
247
|
+
);
|
|
226
248
|
return true;
|
|
227
249
|
}
|
|
228
250
|
|
|
229
251
|
// Document set with srcDoc is not immediately ready.
|
|
230
252
|
node.addEventListener( 'load', setDocumentIfReady );
|
|
231
253
|
|
|
232
|
-
return () =>
|
|
254
|
+
return () => {
|
|
255
|
+
node.removeEventListener( 'load', setDocumentIfReady );
|
|
256
|
+
iFrameDocument?.removeEventListener(
|
|
257
|
+
'dragover',
|
|
258
|
+
preventFileDropDefault
|
|
259
|
+
);
|
|
260
|
+
iFrameDocument?.removeEventListener(
|
|
261
|
+
'drop',
|
|
262
|
+
preventFileDropDefault
|
|
263
|
+
);
|
|
264
|
+
};
|
|
233
265
|
}, [] );
|
|
266
|
+
|
|
234
267
|
const headRef = useRefEffect( ( element ) => {
|
|
235
268
|
scripts
|
|
236
269
|
.reduce(
|
|
@@ -285,14 +318,40 @@ function Iframe(
|
|
|
285
318
|
{ iframeDocument &&
|
|
286
319
|
createPortal(
|
|
287
320
|
<>
|
|
288
|
-
<head ref={ headRef }>
|
|
321
|
+
<head ref={ headRef }>
|
|
322
|
+
{ head }
|
|
323
|
+
<style>
|
|
324
|
+
{ `html { transition: background 5s; ${
|
|
325
|
+
isZoomedOut
|
|
326
|
+
? 'background: #2f2f2f; transition: background 0s;'
|
|
327
|
+
: ''
|
|
328
|
+
} }` }
|
|
329
|
+
</style>
|
|
330
|
+
</head>
|
|
289
331
|
<body
|
|
290
332
|
ref={ bodyRef }
|
|
291
333
|
className={ classnames(
|
|
334
|
+
'block-editor-iframe__body',
|
|
292
335
|
BODY_CLASS_NAME,
|
|
293
|
-
...bodyClasses
|
|
336
|
+
...bodyClasses,
|
|
337
|
+
{
|
|
338
|
+
'is-zoomed-out': isZoomedOut,
|
|
339
|
+
}
|
|
294
340
|
) }
|
|
341
|
+
style={
|
|
342
|
+
isZoomedOut
|
|
343
|
+
? {
|
|
344
|
+
// This is the remaining percentage from the scaling down
|
|
345
|
+
// of the iframe body(`scale(0.45)`). We also need to subtract
|
|
346
|
+
// the body's bottom margin.
|
|
347
|
+
marginBottom: `-${
|
|
348
|
+
contentHeight * 0.55 - 100
|
|
349
|
+
}px`,
|
|
350
|
+
}
|
|
351
|
+
: {}
|
|
352
|
+
}
|
|
295
353
|
>
|
|
354
|
+
{ contentResizeListener }
|
|
296
355
|
{ /*
|
|
297
356
|
* This is a wrapper for the extra styles and scripts
|
|
298
357
|
* rendered imperatively by cloning the parent,
|
|
@@ -125,11 +125,12 @@ Template locking of `InnerBlocks` is similar to [Custom Post Type templates lock
|
|
|
125
125
|
Template locking allows locking the `InnerBlocks` area for the current template.
|
|
126
126
|
_Options:_
|
|
127
127
|
|
|
128
|
+
- `contentOnly` — prevents all operations. Additionally, the block types that don't have content are hidden from the list view and can't gain focus within the block list. Unlike the other lock types, this is not overrideable by children.
|
|
128
129
|
- `'all'` — prevents all operations. It is not possible to insert new blocks. Move existing blocks or delete them.
|
|
129
130
|
- `'insert'` — prevents inserting or removing blocks, but allows moving existing ones.
|
|
130
131
|
- `false` — prevents locking from being applied to an `InnerBlocks` area even if a parent block contains locking. ( Boolean )
|
|
131
132
|
|
|
132
|
-
If locking is not set in an `InnerBlocks` area: the locking of the parent `InnerBlocks` area is used.
|
|
133
|
+
If locking is not set in an `InnerBlocks` area: the locking of the parent `InnerBlocks` area is used. Note that `contentOnly` can't be overriden: it's present, the `templateLock` value of any children is ignored.
|
|
133
134
|
|
|
134
135
|
If the block is a top level block: the locking of the Custom Post Type is used.
|
|
135
136
|
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { last } from 'lodash';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* WordPress dependencies
|
|
8
3
|
*/
|
|
@@ -28,7 +23,7 @@ export default compose( [
|
|
|
28
23
|
const blockClientIds = getBlockOrder( clientId );
|
|
29
24
|
|
|
30
25
|
return {
|
|
31
|
-
lastBlockClientId:
|
|
26
|
+
lastBlockClientId: blockClientIds[ blockClientIds.length - 1 ],
|
|
32
27
|
};
|
|
33
28
|
} ),
|
|
34
29
|
] )( DefaultBlockAppender );
|
|
@@ -77,6 +77,13 @@ function UncontrolledInnerBlocks( props ) {
|
|
|
77
77
|
const context = useSelect(
|
|
78
78
|
( select ) => {
|
|
79
79
|
const block = select( blockEditorStore ).getBlock( clientId );
|
|
80
|
+
|
|
81
|
+
// This check is here to avoid the Redux zombie bug where a child subscription
|
|
82
|
+
// is called before a parent, causing potential JS errors when the child has been removed.
|
|
83
|
+
if ( ! block ) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
80
87
|
const blockType = getBlockType( block.name );
|
|
81
88
|
|
|
82
89
|
if ( ! blockType || ! blockType.providesContext ) {
|
|
@@ -155,10 +162,11 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
|
|
|
155
162
|
getBlockName,
|
|
156
163
|
isBlockSelected,
|
|
157
164
|
hasSelectedInnerBlock,
|
|
158
|
-
|
|
165
|
+
__unstableGetEditorMode,
|
|
159
166
|
} = select( blockEditorStore );
|
|
160
167
|
const blockName = getBlockName( clientId );
|
|
161
|
-
const enableClickThrough =
|
|
168
|
+
const enableClickThrough =
|
|
169
|
+
__unstableGetEditorMode() === 'navigation' || isSmallScreen;
|
|
162
170
|
return {
|
|
163
171
|
__experimentalCaptureToolbars: select(
|
|
164
172
|
blocksStore
|
|
@@ -19,8 +19,8 @@ import { store as blockEditorStore } from '../../store';
|
|
|
19
19
|
* This hook makes sure that a block's inner blocks stay in sync with the given
|
|
20
20
|
* block "template". The template is a block hierarchy to which inner blocks must
|
|
21
21
|
* conform. If the blocks get "out of sync" with the template and the template
|
|
22
|
-
* is meant to be locked (e.g. templateLock = "all"
|
|
23
|
-
* blocks with the correct value after synchronizing it with the template.
|
|
22
|
+
* is meant to be locked (e.g. templateLock = "all" or templateLock = "contentOnly"),
|
|
23
|
+
* then we replace the inner blocks with the correct value after synchronizing it with the template.
|
|
24
24
|
*
|
|
25
25
|
* @param {string} clientId The block client ID.
|
|
26
26
|
* @param {Object} template The template to match.
|
|
@@ -47,38 +47,53 @@ export default function useInnerBlockTemplateSync(
|
|
|
47
47
|
( select ) => select( blockEditorStore ).getBlocks( clientId ),
|
|
48
48
|
[ clientId ]
|
|
49
49
|
);
|
|
50
|
+
const { getBlocks } = useSelect( blockEditorStore );
|
|
50
51
|
|
|
51
52
|
// Maintain a reference to the previous value so we can do a deep equality check.
|
|
52
53
|
const existingTemplate = useRef( null );
|
|
53
54
|
useLayoutEffect( () => {
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
|
|
55
|
+
// There's an implicit dependency between useInnerBlockTemplateSync and useNestedSettingsUpdate
|
|
56
|
+
// The former needs to happen after the latter and since the latter is using microtasks to batch updates (performance optimization),
|
|
57
|
+
// we need to schedule this one in a microtask as well.
|
|
58
|
+
// Exemple: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.
|
|
59
|
+
window.queueMicrotask( () => {
|
|
60
|
+
// Only synchronize innerBlocks with template if innerBlocks are empty
|
|
61
|
+
// or a locking "all" or "contentOnly" exists directly on the block.
|
|
62
|
+
const currentInnerBlocks = getBlocks( clientId );
|
|
63
|
+
const shouldApplyTemplate =
|
|
64
|
+
currentInnerBlocks.length === 0 ||
|
|
65
|
+
templateLock === 'all' ||
|
|
66
|
+
templateLock === 'contentOnly';
|
|
67
|
+
|
|
57
68
|
const hasTemplateChanged = ! isEqual(
|
|
58
69
|
template,
|
|
59
70
|
existingTemplate.current
|
|
60
71
|
);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
|
|
73
|
+
if ( ! shouldApplyTemplate || ! hasTemplateChanged ) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
existingTemplate.current = template;
|
|
78
|
+
const nextBlocks = synchronizeBlocksWithTemplate(
|
|
79
|
+
currentInnerBlocks,
|
|
80
|
+
template
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
if ( ! isEqual( nextBlocks, currentInnerBlocks ) ) {
|
|
84
|
+
replaceInnerBlocks(
|
|
85
|
+
clientId,
|
|
86
|
+
nextBlocks,
|
|
87
|
+
currentInnerBlocks.length === 0 &&
|
|
88
|
+
templateInsertUpdatesSelection &&
|
|
89
|
+
nextBlocks.length !== 0,
|
|
90
|
+
// This ensures the "initialPosition" doesn't change when applying the template
|
|
91
|
+
// If we're supposed to focus the block, we'll focus the first inner block
|
|
92
|
+
// otherwise, we won't apply any auto-focus.
|
|
93
|
+
// This ensures for instance that the focus stays in the inserter when inserting the "buttons" block.
|
|
94
|
+
getSelectedBlocksInitialCaretPosition()
|
|
66
95
|
);
|
|
67
|
-
if ( ! isEqual( nextBlocks, innerBlocks ) ) {
|
|
68
|
-
replaceInnerBlocks(
|
|
69
|
-
clientId,
|
|
70
|
-
nextBlocks,
|
|
71
|
-
innerBlocks.length === 0 &&
|
|
72
|
-
templateInsertUpdatesSelection &&
|
|
73
|
-
nextBlocks.length !== 0,
|
|
74
|
-
// This ensures the "initialPosition" doesn't change when applying the template
|
|
75
|
-
// If we're supposed to focus the block, we'll focus the first inner block
|
|
76
|
-
// otherwise, we won't apply any auto-focus.
|
|
77
|
-
// This ensures for instance that the focus stays in the inserter when inserting the "buttons" block.
|
|
78
|
-
getSelectedBlocksInitialCaretPosition()
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
96
|
}
|
|
82
|
-
}
|
|
97
|
+
} );
|
|
83
98
|
}, [ innerBlocks, template, templateLock, clientId ] );
|
|
84
99
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useLayoutEffect, useMemo } from '@wordpress/element';
|
|
5
|
-
import { useSelect, useDispatch } from '@wordpress/data';
|
|
5
|
+
import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
|
|
6
6
|
import isShallowEqual from '@wordpress/is-shallow-equal';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -13,6 +13,8 @@ import { getLayoutType } from '../../layouts';
|
|
|
13
13
|
|
|
14
14
|
/** @typedef {import('../../selectors').WPDirectInsertBlock } WPDirectInsertBlock */
|
|
15
15
|
|
|
16
|
+
const pendingSettingsUpdates = new WeakMap();
|
|
17
|
+
|
|
16
18
|
/**
|
|
17
19
|
* This hook is a side effect which updates the block-editor store when changes
|
|
18
20
|
* happen to inner block settings. The given props are transformed into a
|
|
@@ -46,6 +48,7 @@ export default function useNestedSettingsUpdate(
|
|
|
46
48
|
layout
|
|
47
49
|
) {
|
|
48
50
|
const { updateBlockListSettings } = useDispatch( blockEditorStore );
|
|
51
|
+
const registry = useRegistry();
|
|
49
52
|
|
|
50
53
|
const { blockListSettings, parentLock } = useSelect(
|
|
51
54
|
( select ) => {
|
|
@@ -69,7 +72,9 @@ export default function useNestedSettingsUpdate(
|
|
|
69
72
|
const newSettings = {
|
|
70
73
|
allowedBlocks: _allowedBlocks,
|
|
71
74
|
templateLock:
|
|
72
|
-
templateLock === undefined
|
|
75
|
+
templateLock === undefined || parentLock === 'contentOnly'
|
|
76
|
+
? parentLock
|
|
77
|
+
: templateLock,
|
|
73
78
|
};
|
|
74
79
|
|
|
75
80
|
// These values are not defined for RN, so only include them if they
|
|
@@ -96,7 +101,30 @@ export default function useNestedSettingsUpdate(
|
|
|
96
101
|
}
|
|
97
102
|
|
|
98
103
|
if ( ! isShallowEqual( blockListSettings, newSettings ) ) {
|
|
99
|
-
|
|
104
|
+
// Batch updates to block list settings to avoid triggering cascading renders
|
|
105
|
+
// for each container block included in a tree and optimize initial render.
|
|
106
|
+
// To avoid triggering updateBlockListSettings for each container block
|
|
107
|
+
// causing X re-renderings for X container blocks,
|
|
108
|
+
// we batch all the updatedBlockListSettings in a single "data" batch
|
|
109
|
+
// which results in a single re-render.
|
|
110
|
+
if ( ! pendingSettingsUpdates.get( registry ) ) {
|
|
111
|
+
pendingSettingsUpdates.set( registry, [] );
|
|
112
|
+
}
|
|
113
|
+
pendingSettingsUpdates
|
|
114
|
+
.get( registry )
|
|
115
|
+
.push( [ clientId, newSettings ] );
|
|
116
|
+
window.queueMicrotask( () => {
|
|
117
|
+
if ( pendingSettingsUpdates.get( registry )?.length ) {
|
|
118
|
+
registry.batch( () => {
|
|
119
|
+
pendingSettingsUpdates
|
|
120
|
+
.get( registry )
|
|
121
|
+
.forEach( ( args ) => {
|
|
122
|
+
updateBlockListSettings( ...args );
|
|
123
|
+
} );
|
|
124
|
+
pendingSettingsUpdates.set( registry, [] );
|
|
125
|
+
} );
|
|
126
|
+
}
|
|
127
|
+
} );
|
|
100
128
|
}
|
|
101
129
|
}, [
|
|
102
130
|
clientId,
|
|
@@ -110,5 +138,6 @@ export default function useNestedSettingsUpdate(
|
|
|
110
138
|
orientation,
|
|
111
139
|
updateBlockListSettings,
|
|
112
140
|
layout,
|
|
141
|
+
registry,
|
|
113
142
|
] );
|
|
114
143
|
}
|
|
@@ -168,6 +168,7 @@ class Inserter extends Component {
|
|
|
168
168
|
clientId={ clientId }
|
|
169
169
|
isAppender={ isAppender }
|
|
170
170
|
showInserterHelpPanel={ showInserterHelpPanel }
|
|
171
|
+
prioritizePatterns={ prioritizePatterns }
|
|
171
172
|
/>
|
|
172
173
|
);
|
|
173
174
|
}
|
|
@@ -212,8 +213,6 @@ export default compose( [
|
|
|
212
213
|
hasInserterItems,
|
|
213
214
|
__experimentalGetAllowedBlocks,
|
|
214
215
|
__experimentalGetDirectInsertBlock,
|
|
215
|
-
getBlockIndex,
|
|
216
|
-
getBlockCount,
|
|
217
216
|
getSettings,
|
|
218
217
|
} = select( blockEditorStore );
|
|
219
218
|
|
|
@@ -227,8 +226,6 @@ export default compose( [
|
|
|
227
226
|
const directInsertBlock =
|
|
228
227
|
__experimentalGetDirectInsertBlock( rootClientId );
|
|
229
228
|
|
|
230
|
-
const index = getBlockIndex( clientId );
|
|
231
|
-
const blockCount = getBlockCount();
|
|
232
229
|
const settings = getSettings();
|
|
233
230
|
|
|
234
231
|
const hasSingleBlockType =
|
|
@@ -249,10 +246,7 @@ export default compose( [
|
|
|
249
246
|
directInsertBlock,
|
|
250
247
|
rootClientId,
|
|
251
248
|
prioritizePatterns:
|
|
252
|
-
settings.__experimentalPreferPatternsOnRoot &&
|
|
253
|
-
! rootClientId &&
|
|
254
|
-
index > 0 &&
|
|
255
|
-
( index < blockCount || blockCount === 0 ),
|
|
249
|
+
settings.__experimentalPreferPatternsOnRoot && ! rootClientId,
|
|
256
250
|
};
|
|
257
251
|
} ),
|
|
258
252
|
withDispatch( ( dispatch, ownProps, { select } ) => {
|
|
@@ -26,13 +26,18 @@ function InserterLibrary(
|
|
|
26
26
|
},
|
|
27
27
|
ref
|
|
28
28
|
) {
|
|
29
|
-
const destinationRootClientId = useSelect(
|
|
29
|
+
const { destinationRootClientId, prioritizePatterns } = useSelect(
|
|
30
30
|
( select ) => {
|
|
31
|
-
const { getBlockRootClientId } =
|
|
31
|
+
const { getBlockRootClientId, getSettings } =
|
|
32
|
+
select( blockEditorStore );
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
rootClientId || getBlockRootClientId( clientId ) || undefined
|
|
35
|
-
|
|
34
|
+
const _rootClientId =
|
|
35
|
+
rootClientId || getBlockRootClientId( clientId ) || undefined;
|
|
36
|
+
return {
|
|
37
|
+
destinationRootClientId: _rootClientId,
|
|
38
|
+
prioritizePatterns:
|
|
39
|
+
getSettings().__experimentalPreferPatternsOnRoot,
|
|
40
|
+
};
|
|
36
41
|
},
|
|
37
42
|
[ clientId, rootClientId ]
|
|
38
43
|
);
|
|
@@ -48,6 +53,7 @@ function InserterLibrary(
|
|
|
48
53
|
__experimentalInsertionIndex={ __experimentalInsertionIndex }
|
|
49
54
|
__experimentalFilterValue={ __experimentalFilterValue }
|
|
50
55
|
shouldFocusBlock={ shouldFocusBlock }
|
|
56
|
+
prioritizePatterns={ prioritizePatterns }
|
|
51
57
|
ref={ ref }
|
|
52
58
|
/>
|
|
53
59
|
);
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import classnames from 'classnames';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* WordPress dependencies
|
|
3
8
|
*/
|
|
@@ -37,6 +42,7 @@ function InserterMenu(
|
|
|
37
42
|
showMostUsedBlocks,
|
|
38
43
|
__experimentalFilterValue = '',
|
|
39
44
|
shouldFocusBlock = true,
|
|
45
|
+
prioritizePatterns,
|
|
40
46
|
},
|
|
41
47
|
ref
|
|
42
48
|
) {
|
|
@@ -180,23 +186,28 @@ function InserterMenu(
|
|
|
180
186
|
},
|
|
181
187
|
} ) );
|
|
182
188
|
|
|
189
|
+
const showAsTabs = ! filterValue && ( showPatterns || hasReusableBlocks );
|
|
190
|
+
|
|
183
191
|
return (
|
|
184
192
|
<div className="block-editor-inserter__menu">
|
|
185
|
-
<div
|
|
186
|
-
{
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
value
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
{
|
|
193
|
+
<div
|
|
194
|
+
className={ classnames( 'block-editor-inserter__main-area', {
|
|
195
|
+
'show-as-tabs': showAsTabs,
|
|
196
|
+
} ) }
|
|
197
|
+
>
|
|
198
|
+
<SearchControl
|
|
199
|
+
className="block-editor-inserter__search"
|
|
200
|
+
onChange={ ( value ) => {
|
|
201
|
+
if ( hoveredItem ) setHoveredItem( null );
|
|
202
|
+
setFilterValue( value );
|
|
203
|
+
} }
|
|
204
|
+
value={ filterValue }
|
|
205
|
+
label={ __( 'Search for blocks and patterns' ) }
|
|
206
|
+
placeholder={ __( 'Search' ) }
|
|
207
|
+
ref={ searchRef }
|
|
208
|
+
/>
|
|
209
|
+
{ !! filterValue && (
|
|
210
|
+
<div className="block-editor-inserter__no-tab-container">
|
|
200
211
|
<InserterSearchResults
|
|
201
212
|
filterValue={ filterValue }
|
|
202
213
|
onSelect={ onSelect }
|
|
@@ -210,20 +221,22 @@ function InserterMenu(
|
|
|
210
221
|
showBlockDirectory
|
|
211
222
|
shouldFocusBlock={ shouldFocusBlock }
|
|
212
223
|
/>
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
224
|
+
</div>
|
|
225
|
+
) }
|
|
226
|
+
{ showAsTabs && (
|
|
227
|
+
<InserterTabs
|
|
228
|
+
showPatterns={ showPatterns }
|
|
229
|
+
showReusableBlocks={ hasReusableBlocks }
|
|
230
|
+
prioritizePatterns={ prioritizePatterns }
|
|
231
|
+
>
|
|
232
|
+
{ getCurrentTab }
|
|
233
|
+
</InserterTabs>
|
|
234
|
+
) }
|
|
235
|
+
{ ! filterValue && ! showAsTabs && (
|
|
236
|
+
<div className="block-editor-inserter__no-tab-container">
|
|
237
|
+
{ blocksTab }
|
|
238
|
+
</div>
|
|
239
|
+
) }
|
|
227
240
|
</div>
|
|
228
241
|
{ showInserterHelpPanel && hoveredItem && (
|
|
229
242
|
<InserterPreviewPanel item={ hoveredItem } />
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const patterns = [
|
|
2
|
+
{
|
|
3
|
+
categories: [ 'featured', 'text' ],
|
|
4
|
+
content:
|
|
5
|
+
'<!-- wp:heading {"align":"wide","style":{"typography":{"fontSize":"48px","lineHeight":"1.1"}}} -->\n<h2 class="alignwide" id="we-re-a-studio-in-berlin-with-an-international-practice-in-architecture-urban-planning-and-interior-design-we-believe-in-sharing-knowledge-and-promoting-dialogue-to-increase-the-creative-potential-of-collaboration" style="font-size:48px;line-height:1.1">We\'re a studio in Berlin with an international practice in architecture, urban planning and interior design. We believe in sharing knowledge and promoting dialogue to increase the creative potential of collaboration.</h2>\n<!-- /wp:heading -->',
|
|
6
|
+
description: 'Heading text',
|
|
7
|
+
keywords: [ 'large text', 'title' ],
|
|
8
|
+
name: 'heading',
|
|
9
|
+
title: 'Heading',
|
|
10
|
+
},
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
export const patternCategories = [
|
|
14
|
+
{
|
|
15
|
+
name: 'featured',
|
|
16
|
+
label: 'Featured',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'text',
|
|
20
|
+
label: 'Text',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
export const reusableBlocks = [
|
|
25
|
+
{
|
|
26
|
+
content: {
|
|
27
|
+
raw: '\x3C!-- wp:paragraph -->\n<p>This is reusable</p>\n\x3C!-- /wp:paragraph -->',
|
|
28
|
+
protected: false,
|
|
29
|
+
block_version: 1,
|
|
30
|
+
},
|
|
31
|
+
date: '2022-09-12T13:28:06',
|
|
32
|
+
date_gmt: '2022-09-12T13:28:06',
|
|
33
|
+
id: 70,
|
|
34
|
+
link: 'http://localhost:8888/?p=70',
|
|
35
|
+
modified: '2022-09-12T13:28:06',
|
|
36
|
+
modified_gmt: '2022-09-12T13:28:06',
|
|
37
|
+
password: '',
|
|
38
|
+
slug: 'simple-paragraph',
|
|
39
|
+
status: 'publish',
|
|
40
|
+
template: '',
|
|
41
|
+
title: { raw: 'Simple paragraph' },
|
|
42
|
+
type: 'wp_block',
|
|
43
|
+
},
|
|
44
|
+
];
|