@wordpress/block-editor 12.24.0 → 12.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +1 -1
- package/build/components/alignment-control/ui.js +3 -1
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-inspector/index.js +1 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +0 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -3
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/index.native.js +1 -9
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +6 -6
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
- package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-mover/index.native.js +3 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +0 -25
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/use-transformed-patterns.js +6 -2
- package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build/components/block-switcher/utils.js +15 -5
- package/build/components/block-switcher/utils.js.map +1 -1
- package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
- package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build/components/block-tools/index.js +3 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -5
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-variation-picker/index.js +3 -2
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +3 -1
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/floating-toolbar/index.native.js +9 -5
- package/build/components/floating-toolbar/index.native.js.map +1 -1
- package/build/components/global-styles/background-panel.js +1 -1
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +3 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +16 -0
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +3 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +23 -23
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +149 -132
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +45 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/inner-blocks/index.js +16 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +12 -31
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +4 -0
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +56 -0
- package/build/components/inserter/category-tabs/index.js.map +1 -0
- package/build/components/inserter/media-tab/index.js +2 -2
- package/build/components/inserter/media-tab/index.js.map +1 -1
- package/build/components/inserter/media-tab/media-panel.js +0 -25
- package/build/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +13 -3
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/media-tab/media-tab.js +15 -29
- package/build/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build/components/inserter/menu.js +59 -69
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/tabs.js +6 -6
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/line-height-control/index.js +6 -2
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/search-item.js +9 -3
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block-select-button.js +5 -170
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +166 -14
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +1 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/list-view/utils.js +3 -1
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.js +3 -3
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -1
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/provider/block-refs-provider.js +3 -4
- package/build/components/provider/block-refs-provider.js.map +1 -1
- package/build/components/provider/use-block-sync.js +3 -12
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
- package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
- package/build/components/rich-text/event-listeners/delete.js +58 -0
- package/build/components/rich-text/event-listeners/delete.js.map +1 -0
- package/build/components/rich-text/event-listeners/enter.js +98 -0
- package/build/components/rich-text/event-listeners/enter.js.map +1 -0
- package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
- package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
- package/build/components/rich-text/event-listeners/index.js +44 -0
- package/build/components/rich-text/event-listeners/index.js.map +1 -0
- package/build/components/rich-text/event-listeners/input-events.js +22 -0
- package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
- package/build/components/rich-text/event-listeners/input-rules.js +135 -0
- package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
- package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
- package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
- package/build/components/rich-text/event-listeners/paste-handler.js +146 -0
- package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
- package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
- package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
- package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
- package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
- package/build/components/rich-text/index.js +11 -31
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +13 -3
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/multiline.js +6 -2
- package/build/components/rich-text/multiline.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +12 -0
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/use-format-types.js +8 -4
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/segmented-text-control/index.js +62 -0
- package/build/components/segmented-text-control/index.js.map +1 -0
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +76 -0
- package/build/components/text-alignment-control/index.js.map +1 -0
- package/build/components/text-decoration-control/index.js +21 -25
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +18 -22
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +9 -3
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +3 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/writing-flow/use-drag-selection.js +3 -1
- package/build/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +3 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-mode-control/index.js +16 -20
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/duotone.js +3 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/utils.js +11 -6
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +4 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +32 -8
- package/build/store/actions.js.map +1 -1
- package/build/store/private-selectors.js +27 -6
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +11 -8
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +21 -7
- package/build/store/selectors.js.map +1 -1
- package/build/utils/object.js +17 -0
- package/build/utils/object.js.map +1 -1
- package/build/utils/order-inserter-block-items.js +6 -2
- package/build/utils/order-inserter-block-items.js.map +1 -1
- package/build/utils/pasting.js +6 -2
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +3 -1
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-inspector/index.js +1 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +0 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +1 -9
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +6 -6
- 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-refs.js +19 -48
- package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +3 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -26
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
- package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build-module/components/block-switcher/utils.js +15 -5
- package/build-module/components/block-switcher/utils.js.map +1 -1
- package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
- package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build-module/components/block-tools/index.js +3 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -5
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +3 -2
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +3 -1
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/floating-toolbar/index.native.js +9 -5
- package/build-module/components/floating-toolbar/index.native.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +1 -1
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +17 -1
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +24 -24
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +149 -132
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +44 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +16 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +13 -32
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +4 -0
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +49 -0
- package/build-module/components/inserter/category-tabs/index.js.map +1 -0
- package/build-module/components/inserter/media-tab/index.js +1 -1
- package/build-module/components/inserter/media-tab/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-panel.js +0 -24
- package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +13 -3
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-tab.js +17 -31
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +61 -71
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/tabs.js +6 -6
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/line-height-control/index.js +6 -2
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/search-item.js +9 -3
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +7 -172
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +167 -15
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +1 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/list-view/utils.js +3 -1
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +3 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -1
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/provider/block-refs-provider.js +3 -4
- package/build-module/components/provider/block-refs-provider.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +4 -13
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
- package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/delete.js +51 -0
- package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/enter.js +92 -0
- package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
- package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/index.js +36 -0
- package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
- package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
- package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/paste-handler.js +142 -0
- package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
- package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
- package/build-module/components/rich-text/index.js +12 -32
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +13 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/multiline.js +6 -2
- package/build-module/components/rich-text/multiline.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +12 -0
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js +8 -4
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/segmented-text-control/index.js +55 -0
- package/build-module/components/segmented-text-control/index.js.map +1 -0
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +68 -0
- package/build-module/components/text-alignment-control/index.js.map +1 -0
- package/build-module/components/text-decoration-control/index.js +21 -25
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +18 -22
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +9 -3
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -1
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/writing-flow/use-drag-selection.js +3 -1
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +3 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +16 -20
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/duotone.js +3 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/utils.js +11 -6
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +4 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +32 -8
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-selectors.js +27 -5
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +11 -8
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +21 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/object.js +16 -0
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/order-inserter-block-items.js +6 -2
- package/build-module/utils/order-inserter-block-items.js.map +1 -1
- package/build-module/utils/pasting.js +6 -2
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +41 -68
- package/build-style/content.css +41 -68
- package/build-style/style-rtl.css +100 -199
- package/build-style/style.css +100 -199
- package/package.json +31 -31
- package/src/components/alignment-control/ui.js +3 -1
- package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
- package/src/components/block-canvas/style.scss +1 -3
- package/src/components/block-draggable/test/helpers.native.js +8 -8
- package/src/components/block-inspector/index.js +1 -2
- package/src/components/block-list/block.js +2 -13
- package/src/components/block-list/content.scss +9 -1
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/index.native.js +1 -6
- package/src/components/block-list/use-block-props/index.js +12 -4
- package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
- package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
- package/src/components/block-mover/index.native.js +3 -1
- package/src/components/block-patterns-list/style.scss +1 -3
- package/src/components/block-preview/style.scss +13 -15
- package/src/components/block-settings-menu/block-settings-dropdown.js +1 -51
- package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/src/components/block-switcher/use-transformed-patterns.js +6 -2
- package/src/components/block-switcher/utils.js +14 -5
- package/src/components/block-toolbar/style.scss +8 -11
- package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
- package/src/components/block-tools/index.js +3 -1
- package/src/components/block-tools/use-show-block-tools.js +36 -48
- package/src/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/src/components/block-variation-picker/content.scss +22 -72
- package/src/components/block-variation-picker/index.js +3 -2
- package/src/components/block-variation-transforms/index.js +3 -1
- package/src/components/floating-toolbar/index.native.js +5 -2
- package/src/components/global-styles/background-panel.js +1 -3
- package/src/components/global-styles/color-panel.js +3 -1
- package/src/components/global-styles/dimensions-panel.js +18 -1
- package/src/components/global-styles/hooks.js +2 -0
- package/src/components/global-styles/test/utils.js +21 -0
- package/src/components/global-styles/typography-panel.js +27 -23
- package/src/components/global-styles/use-global-styles-output.js +211 -187
- package/src/components/global-styles/utils.js +55 -0
- package/src/components/inner-blocks/index.js +14 -1
- package/src/components/inserter/block-patterns-tab/index.js +15 -65
- package/src/components/inserter/block-types-tab.js +5 -0
- package/src/components/inserter/category-tabs/index.js +74 -0
- package/src/components/inserter/media-tab/index.js +1 -1
- package/src/components/inserter/media-tab/media-panel.js +0 -22
- package/src/components/inserter/media-tab/media-preview.js +15 -7
- package/src/components/inserter/media-tab/media-tab.js +44 -83
- package/src/components/inserter/menu.js +139 -117
- package/src/components/inserter/style.scss +90 -170
- package/src/components/inserter/tabs.js +5 -13
- package/src/components/line-height-control/index.js +6 -2
- package/src/components/link-control/search-item.js +9 -3
- package/src/components/list-view/block-select-button.js +73 -266
- package/src/components/list-view/block.js +218 -28
- package/src/components/list-view/index.js +1 -1
- package/src/components/list-view/style.scss +20 -28
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/list-view/utils.js +3 -1
- package/src/components/media-placeholder/content.scss +0 -11
- package/src/components/media-placeholder/index.js +3 -3
- package/src/components/navigable-toolbar/index.js +3 -1
- package/src/components/provider/block-refs-provider.js +3 -8
- package/src/components/provider/test/use-block-sync.js +7 -0
- package/src/components/provider/use-block-sync.js +3 -20
- package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
- package/src/components/rich-text/event-listeners/delete.js +53 -0
- package/src/components/rich-text/event-listeners/enter.js +104 -0
- package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
- package/src/components/rich-text/event-listeners/index.js +56 -0
- package/src/components/rich-text/event-listeners/input-events.js +13 -0
- package/src/components/rich-text/event-listeners/input-rules.js +146 -0
- package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
- package/src/components/rich-text/event-listeners/paste-handler.js +169 -0
- package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
- package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
- package/src/components/rich-text/index.js +7 -34
- package/src/components/rich-text/index.native.js +11 -0
- package/src/components/rich-text/multiline.js +6 -2
- package/src/components/rich-text/native/index.native.js +11 -0
- package/src/components/rich-text/use-format-types.js +6 -2
- package/src/components/segmented-text-control/index.js +63 -0
- package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
- package/src/components/text-alignment-control/index.js +91 -0
- package/src/components/text-alignment-control/stories/index.story.js +39 -0
- package/src/components/text-decoration-control/index.js +20 -33
- package/src/components/text-transform-control/index.js +17 -30
- package/src/components/use-block-display-information/index.js +9 -3
- package/src/components/use-on-block-drop/index.js +3 -1
- package/src/components/writing-flow/use-drag-selection.js +3 -1
- package/src/components/writing-flow/use-tab-nav.js +3 -1
- package/src/components/writing-mode-control/index.js +15 -28
- package/src/hooks/duotone.js +3 -1
- package/src/hooks/utils.js +16 -2
- package/src/private-apis.js +4 -2
- package/src/store/actions.js +36 -12
- package/src/store/private-selectors.js +28 -4
- package/src/store/reducer.js +13 -23
- package/src/store/selectors.js +20 -7
- package/src/style.scss +1 -2
- package/src/utils/object.js +16 -0
- package/src/utils/order-inserter-block-items.js +6 -2
- package/src/utils/pasting.js +6 -2
- package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
- package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
- package/build/components/rich-text/use-before-input-rules.js +0 -98
- package/build/components/rich-text/use-before-input-rules.js.map +0 -1
- package/build/components/rich-text/use-delete.js +0 -64
- package/build/components/rich-text/use-delete.js.map +0 -1
- package/build/components/rich-text/use-enter.js +0 -109
- package/build/components/rich-text/use-enter.js.map +0 -1
- package/build/components/rich-text/use-firefox-compat.js +0 -44
- package/build/components/rich-text/use-firefox-compat.js.map +0 -1
- package/build/components/rich-text/use-input-events.js +0 -25
- package/build/components/rich-text/use-input-events.js.map +0 -1
- package/build/components/rich-text/use-input-rules.js +0 -139
- package/build/components/rich-text/use-input-rules.js.map +0 -1
- package/build/components/rich-text/use-insert-replacement-text.js +0 -38
- package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
- package/build/components/rich-text/use-paste-handler.js +0 -158
- package/build/components/rich-text/use-paste-handler.js.map +0 -1
- package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
- package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
- package/build/components/rich-text/use-shortcuts.js +0 -25
- package/build/components/rich-text/use-shortcuts.js.map +0 -1
- package/build/components/rich-text/use-undo-automatic-change.js +0 -53
- package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
- package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
- package/build-module/components/rich-text/use-before-input-rules.js +0 -92
- package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
- package/build-module/components/rich-text/use-delete.js +0 -57
- package/build-module/components/rich-text/use-delete.js.map +0 -1
- package/build-module/components/rich-text/use-enter.js +0 -102
- package/build-module/components/rich-text/use-enter.js.map +0 -1
- package/build-module/components/rich-text/use-firefox-compat.js +0 -37
- package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
- package/build-module/components/rich-text/use-input-events.js +0 -18
- package/build-module/components/rich-text/use-input-events.js.map +0 -1
- package/build-module/components/rich-text/use-input-rules.js +0 -132
- package/build-module/components/rich-text/use-input-rules.js.map +0 -1
- package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
- package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
- package/build-module/components/rich-text/use-paste-handler.js +0 -152
- package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
- package/build-module/components/rich-text/use-shortcuts.js +0 -18
- package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
- package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
- package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
- package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
- package/src/components/rich-text/use-before-input-rules.js +0 -99
- package/src/components/rich-text/use-delete.js +0 -59
- package/src/components/rich-text/use-enter.js +0 -110
- package/src/components/rich-text/use-firefox-compat.js +0 -39
- package/src/components/rich-text/use-input-events.js +0 -19
- package/src/components/rich-text/use-input-rules.js +0 -150
- package/src/components/rich-text/use-insert-replacement-text.js +0 -31
- package/src/components/rich-text/use-paste-handler.js +0 -180
- package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
- package/src/components/rich-text/use-shortcuts.js +0 -19
- package/src/components/rich-text/use-undo-automatic-change.js +0 -46
- package/src/components/text-decoration-control/style.scss +0 -18
- package/src/components/text-transform-control/style.scss +0 -18
|
@@ -13,11 +13,7 @@ import { useCallback } from '@wordpress/element';
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
mergeOrigins,
|
|
18
|
-
overrideOrigins,
|
|
19
|
-
hasOriginValue,
|
|
20
|
-
} from '../../store/get-block-settings';
|
|
16
|
+
import { mergeOrigins, hasOriginValue } from '../../store/get-block-settings';
|
|
21
17
|
import FontFamilyControl from '../font-family';
|
|
22
18
|
import FontAppearanceControl from '../font-appearance-control';
|
|
23
19
|
import LineHeightControl from '../line-height-control';
|
|
@@ -57,7 +53,10 @@ export function useHasTypographyPanel( settings ) {
|
|
|
57
53
|
|
|
58
54
|
function useHasFontSizeControl( settings ) {
|
|
59
55
|
return (
|
|
60
|
-
|
|
56
|
+
( settings?.typography?.defaultFontSizes !== false &&
|
|
57
|
+
settings?.typography?.fontSizes?.default?.length ) ||
|
|
58
|
+
settings?.typography?.fontSizes?.theme?.length ||
|
|
59
|
+
settings?.typography?.fontSizes?.custom?.length ||
|
|
61
60
|
settings?.typography?.customFontSize
|
|
62
61
|
);
|
|
63
62
|
}
|
|
@@ -104,16 +103,21 @@ function useHasTextColumnsControl( settings ) {
|
|
|
104
103
|
return settings?.typography?.textColumns;
|
|
105
104
|
}
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Concatenate all the font sizes into a single list for the font size picker.
|
|
108
|
+
*
|
|
109
|
+
* @param {Object} settings The global styles settings.
|
|
110
|
+
*
|
|
111
|
+
* @return {Array} The merged font sizes.
|
|
112
|
+
*/
|
|
113
|
+
function getMergedFontSizes( settings ) {
|
|
114
|
+
const fontSizes = settings?.typography?.fontSizes;
|
|
115
|
+
const defaultFontSizesEnabled = !! settings?.typography?.defaultFontSizes;
|
|
116
|
+
return [
|
|
117
|
+
...( fontSizes?.custom ?? [] ),
|
|
118
|
+
...( fontSizes?.theme ?? [] ),
|
|
119
|
+
...( defaultFontSizesEnabled ? fontSizes?.default ?? [] : [] ),
|
|
120
|
+
];
|
|
117
121
|
}
|
|
118
122
|
|
|
119
123
|
function TypographyToolsPanel( {
|
|
@@ -189,7 +193,7 @@ export default function TypographyPanel( {
|
|
|
189
193
|
// Font Size
|
|
190
194
|
const hasFontSizeEnabled = useHasFontSizeControl( settings );
|
|
191
195
|
const disableCustomFontSizes = ! settings?.typography?.customFontSize;
|
|
192
|
-
const mergedFontSizes =
|
|
196
|
+
const mergedFontSizes = getMergedFontSizes( settings );
|
|
193
197
|
|
|
194
198
|
const fontSize = decodeValue( inheritedValue?.typography?.fontSize );
|
|
195
199
|
const setFontSize = ( newValue, metadata ) => {
|
|
@@ -346,7 +350,7 @@ export default function TypographyPanel( {
|
|
|
346
350
|
>
|
|
347
351
|
{ hasFontFamilyEnabled && (
|
|
348
352
|
<ToolsPanelItem
|
|
349
|
-
label={ __( 'Font
|
|
353
|
+
label={ __( 'Font' ) }
|
|
350
354
|
hasValue={ hasFontFamily }
|
|
351
355
|
onDeselect={ resetFontFamily }
|
|
352
356
|
isShownByDefault={ defaultControls.fontFamily }
|
|
@@ -363,7 +367,7 @@ export default function TypographyPanel( {
|
|
|
363
367
|
) }
|
|
364
368
|
{ hasFontSizeEnabled && (
|
|
365
369
|
<ToolsPanelItem
|
|
366
|
-
label={ __( '
|
|
370
|
+
label={ __( 'Size' ) }
|
|
367
371
|
hasValue={ hasFontSize }
|
|
368
372
|
onDeselect={ resetFontSize }
|
|
369
373
|
isShownByDefault={ defaultControls.fontSize }
|
|
@@ -440,14 +444,14 @@ export default function TypographyPanel( {
|
|
|
440
444
|
{ hasTextColumnsControl && (
|
|
441
445
|
<ToolsPanelItem
|
|
442
446
|
className="single-column"
|
|
443
|
-
label={ __( '
|
|
447
|
+
label={ __( 'Columns' ) }
|
|
444
448
|
hasValue={ hasTextColumns }
|
|
445
449
|
onDeselect={ resetTextColumns }
|
|
446
450
|
isShownByDefault={ defaultControls.textColumns }
|
|
447
451
|
panelId={ panelId }
|
|
448
452
|
>
|
|
449
453
|
<NumberControl
|
|
450
|
-
label={ __( '
|
|
454
|
+
label={ __( 'Columns' ) }
|
|
451
455
|
max={ MAX_TEXT_COLUMNS }
|
|
452
456
|
min={ MIN_TEXT_COLUMNS }
|
|
453
457
|
onChange={ setTextColumns }
|
|
@@ -461,7 +465,7 @@ export default function TypographyPanel( {
|
|
|
461
465
|
{ hasTextDecorationControl && (
|
|
462
466
|
<ToolsPanelItem
|
|
463
467
|
className="single-column"
|
|
464
|
-
label={ __( '
|
|
468
|
+
label={ __( 'Decoration' ) }
|
|
465
469
|
hasValue={ hasTextDecoration }
|
|
466
470
|
onDeselect={ resetTextDecoration }
|
|
467
471
|
isShownByDefault={ defaultControls.textDecoration }
|
|
@@ -478,7 +482,7 @@ export default function TypographyPanel( {
|
|
|
478
482
|
{ hasWritingModeControl && (
|
|
479
483
|
<ToolsPanelItem
|
|
480
484
|
className="single-column"
|
|
481
|
-
label={ __( '
|
|
485
|
+
label={ __( 'Orientation' ) }
|
|
482
486
|
hasValue={ hasWritingMode }
|
|
483
487
|
onDeselect={ resetWritingMode }
|
|
484
488
|
isShownByDefault={ defaultControls.writingMode }
|
|
@@ -776,15 +776,29 @@ export const toStyles = (
|
|
|
776
776
|
hasBlockGapSupport,
|
|
777
777
|
hasFallbackGapSupport,
|
|
778
778
|
disableLayoutStyles = false,
|
|
779
|
-
isTemplate = true
|
|
779
|
+
isTemplate = true,
|
|
780
|
+
styleOptions = undefined
|
|
780
781
|
) => {
|
|
782
|
+
// These allow opting out of certain sets of styles.
|
|
783
|
+
const options = {
|
|
784
|
+
blockGap: true,
|
|
785
|
+
blockStyles: true,
|
|
786
|
+
layoutStyles: true,
|
|
787
|
+
marginReset: true,
|
|
788
|
+
presets: true,
|
|
789
|
+
rootPadding: true,
|
|
790
|
+
...styleOptions,
|
|
791
|
+
};
|
|
781
792
|
const nodesWithStyles = getNodesWithStyles( tree, blockSelectors );
|
|
782
793
|
const nodesWithSettings = getNodesWithSettings( tree, blockSelectors );
|
|
783
794
|
const useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;
|
|
784
795
|
const { contentSize, wideSize } = tree?.settings?.layout || {};
|
|
796
|
+
const hasBodyStyles =
|
|
797
|
+
options.marginReset || options.rootPadding || options.layoutStyles;
|
|
798
|
+
|
|
785
799
|
let ruleset = '';
|
|
786
800
|
|
|
787
|
-
if ( contentSize || wideSize ) {
|
|
801
|
+
if ( options.presets && ( contentSize || wideSize ) ) {
|
|
788
802
|
ruleset += `${ ROOT_CSS_PROPERTIES_SELECTOR } {`;
|
|
789
803
|
ruleset = contentSize
|
|
790
804
|
? ruleset + ` --wp--style--global--content-size: ${ contentSize };`
|
|
@@ -795,203 +809,211 @@ export const toStyles = (
|
|
|
795
809
|
ruleset += '}';
|
|
796
810
|
}
|
|
797
811
|
|
|
798
|
-
|
|
799
|
-
* Reset default browser margin on the body element.
|
|
800
|
-
* This is set on the body selector **before** generating the ruleset
|
|
801
|
-
* from the `theme.json`. This is to ensure that if the `theme.json` declares
|
|
802
|
-
* `margin` in its `spacing` declaration for the `body` element then these
|
|
803
|
-
* user-generated values take precedence in the CSS cascade.
|
|
804
|
-
* @link https://github.com/WordPress/gutenberg/issues/36147.
|
|
805
|
-
*/
|
|
806
|
-
ruleset += 'body {margin: 0;';
|
|
807
|
-
|
|
808
|
-
// Root padding styles should only be output for full templates, not patterns or template parts.
|
|
809
|
-
if ( useRootPaddingAlign && isTemplate ) {
|
|
812
|
+
if ( hasBodyStyles ) {
|
|
810
813
|
/*
|
|
811
|
-
*
|
|
812
|
-
*
|
|
814
|
+
* Reset default browser margin on the body element.
|
|
815
|
+
* This is set on the body selector **before** generating the ruleset
|
|
816
|
+
* from the `theme.json`. This is to ensure that if the `theme.json` declares
|
|
817
|
+
* `margin` in its `spacing` declaration for the `body` element then these
|
|
818
|
+
* user-generated values take precedence in the CSS cascade.
|
|
819
|
+
* @link https://github.com/WordPress/gutenberg/issues/36147.
|
|
813
820
|
*/
|
|
814
|
-
ruleset +=
|
|
815
|
-
.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
|
|
816
|
-
.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }
|
|
817
|
-
.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }
|
|
818
|
-
.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }
|
|
819
|
-
.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where(.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
|
|
820
|
-
.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where(.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;
|
|
821
|
-
}
|
|
821
|
+
ruleset += 'body {margin: 0;';
|
|
822
822
|
|
|
823
|
-
|
|
823
|
+
// Root padding styles should only be output for full templates, not patterns or template parts.
|
|
824
|
+
if ( options.rootPadding && useRootPaddingAlign && isTemplate ) {
|
|
825
|
+
/*
|
|
826
|
+
* These rules reproduce the ones from https://github.com/WordPress/gutenberg/blob/79103f124925d1f457f627e154f52a56228ed5ad/lib/class-wp-theme-json-gutenberg.php#L2508
|
|
827
|
+
* almost exactly, but for the selectors that target block wrappers in the front end. This code only runs in the editor, so it doesn't need those selectors.
|
|
828
|
+
*/
|
|
829
|
+
ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }
|
|
830
|
+
.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
|
|
831
|
+
.has-global-padding :where(.has-global-padding:not(.wp-block-block)) { padding-right: 0; padding-left: 0; }
|
|
832
|
+
.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }
|
|
833
|
+
.has-global-padding :where(.has-global-padding:not(.wp-block-block)) > .alignfull { margin-right: 0; margin-left: 0; }
|
|
834
|
+
.has-global-padding > .alignfull:where(:not(.has-global-padding):not(.is-layout-flex):not(.is-layout-grid)) > :where(.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }
|
|
835
|
+
.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where(.wp-block:not(.alignfull),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;
|
|
836
|
+
}
|
|
824
837
|
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
selector,
|
|
828
|
-
duotoneSelector,
|
|
829
|
-
styles,
|
|
830
|
-
fallbackGapValue,
|
|
831
|
-
hasLayoutSupport,
|
|
832
|
-
featureSelectors,
|
|
833
|
-
styleVariationSelectors,
|
|
834
|
-
} ) => {
|
|
835
|
-
// Process styles for block support features with custom feature level
|
|
836
|
-
// CSS selectors set.
|
|
837
|
-
if ( featureSelectors ) {
|
|
838
|
-
const featureDeclarations = getFeatureDeclarations(
|
|
839
|
-
featureSelectors,
|
|
840
|
-
styles
|
|
841
|
-
);
|
|
838
|
+
ruleset += '}';
|
|
839
|
+
}
|
|
842
840
|
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
841
|
+
if ( options.blockStyles ) {
|
|
842
|
+
nodesWithStyles.forEach(
|
|
843
|
+
( {
|
|
844
|
+
selector,
|
|
845
|
+
duotoneSelector,
|
|
846
|
+
styles,
|
|
847
|
+
fallbackGapValue,
|
|
848
|
+
hasLayoutSupport,
|
|
849
|
+
featureSelectors,
|
|
850
|
+
styleVariationSelectors,
|
|
851
|
+
} ) => {
|
|
852
|
+
// Process styles for block support features with custom feature level
|
|
853
|
+
// CSS selectors set.
|
|
854
|
+
if ( featureSelectors ) {
|
|
855
|
+
const featureDeclarations = getFeatureDeclarations(
|
|
856
|
+
featureSelectors,
|
|
857
|
+
styles
|
|
858
|
+
);
|
|
852
859
|
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
getFeatureDeclarations(
|
|
863
|
-
featureSelectors,
|
|
864
|
-
styleVariations
|
|
865
|
-
);
|
|
860
|
+
Object.entries( featureDeclarations ).forEach(
|
|
861
|
+
( [ cssSelector, declarations ] ) => {
|
|
862
|
+
if ( declarations.length ) {
|
|
863
|
+
const rules = declarations.join( ';' );
|
|
864
|
+
ruleset += `:where(${ cssSelector }){${ rules };}`;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
);
|
|
868
|
+
}
|
|
866
869
|
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
870
|
+
if ( styleVariationSelectors ) {
|
|
871
|
+
Object.entries( styleVariationSelectors ).forEach(
|
|
872
|
+
( [ styleVariationName, styleVariationSelector ] ) => {
|
|
873
|
+
const styleVariations =
|
|
874
|
+
styles?.variations?.[ styleVariationName ];
|
|
875
|
+
if ( styleVariations ) {
|
|
876
|
+
// If the block uses any custom selectors for block support, add those first.
|
|
877
|
+
if ( featureSelectors ) {
|
|
878
|
+
const featureDeclarations =
|
|
879
|
+
getFeatureDeclarations(
|
|
880
|
+
featureSelectors,
|
|
881
|
+
styleVariations
|
|
882
|
+
);
|
|
883
|
+
|
|
884
|
+
Object.entries(
|
|
885
|
+
featureDeclarations
|
|
886
|
+
).forEach(
|
|
887
|
+
( [ baseSelector, declarations ] ) => {
|
|
888
|
+
if ( declarations.length ) {
|
|
889
|
+
const cssSelector =
|
|
890
|
+
concatFeatureVariationSelectorString(
|
|
891
|
+
baseSelector,
|
|
892
|
+
styleVariationSelector
|
|
893
|
+
);
|
|
894
|
+
const rules =
|
|
895
|
+
declarations.join( ';' );
|
|
896
|
+
ruleset += `${ cssSelector }{${ rules };}`;
|
|
897
|
+
}
|
|
878
898
|
}
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
}
|
|
899
|
+
);
|
|
900
|
+
}
|
|
882
901
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
902
|
+
// Otherwise add regular selectors.
|
|
903
|
+
const styleVariationDeclarations =
|
|
904
|
+
getStylesDeclarations(
|
|
905
|
+
styleVariations,
|
|
906
|
+
styleVariationSelector,
|
|
907
|
+
useRootPaddingAlign,
|
|
908
|
+
tree
|
|
909
|
+
);
|
|
910
|
+
if ( styleVariationDeclarations.length ) {
|
|
911
|
+
ruleset += `${ styleVariationSelector }{${ styleVariationDeclarations.join(
|
|
912
|
+
';'
|
|
913
|
+
) };}`;
|
|
914
|
+
}
|
|
895
915
|
}
|
|
896
916
|
}
|
|
917
|
+
);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
// Process duotone styles.
|
|
921
|
+
if ( duotoneSelector ) {
|
|
922
|
+
const duotoneStyles = {};
|
|
923
|
+
if ( styles?.filter ) {
|
|
924
|
+
duotoneStyles.filter = styles.filter;
|
|
925
|
+
delete styles.filter;
|
|
897
926
|
}
|
|
898
|
-
|
|
899
|
-
|
|
927
|
+
const duotoneDeclarations =
|
|
928
|
+
getStylesDeclarations( duotoneStyles );
|
|
929
|
+
if ( duotoneDeclarations.length ) {
|
|
930
|
+
ruleset += `${ duotoneSelector }{${ duotoneDeclarations.join(
|
|
931
|
+
';'
|
|
932
|
+
) };}`;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
900
935
|
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
936
|
+
// Process blockGap and layout styles.
|
|
937
|
+
if (
|
|
938
|
+
! disableLayoutStyles &&
|
|
939
|
+
( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )
|
|
940
|
+
) {
|
|
941
|
+
ruleset += getLayoutStyles( {
|
|
942
|
+
style: styles,
|
|
943
|
+
selector,
|
|
944
|
+
hasBlockGapSupport,
|
|
945
|
+
hasFallbackGapSupport,
|
|
946
|
+
fallbackGapValue,
|
|
947
|
+
} );
|
|
907
948
|
}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
949
|
+
|
|
950
|
+
// Process the remaining block styles (they use either normal block class or __experimentalSelector).
|
|
951
|
+
const declarations = getStylesDeclarations(
|
|
952
|
+
styles,
|
|
953
|
+
selector,
|
|
954
|
+
useRootPaddingAlign,
|
|
955
|
+
tree,
|
|
956
|
+
isTemplate
|
|
957
|
+
);
|
|
958
|
+
if ( declarations?.length ) {
|
|
959
|
+
ruleset += `:where(${ selector }){${ declarations.join(
|
|
912
960
|
';'
|
|
913
961
|
) };}`;
|
|
914
962
|
}
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
// Process blockGap and layout styles.
|
|
918
|
-
if (
|
|
919
|
-
! disableLayoutStyles &&
|
|
920
|
-
( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )
|
|
921
|
-
) {
|
|
922
|
-
ruleset += getLayoutStyles( {
|
|
923
|
-
style: styles,
|
|
924
|
-
selector,
|
|
925
|
-
hasBlockGapSupport,
|
|
926
|
-
hasFallbackGapSupport,
|
|
927
|
-
fallbackGapValue,
|
|
928
|
-
} );
|
|
929
|
-
}
|
|
930
963
|
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
useRootPaddingAlign,
|
|
936
|
-
tree,
|
|
937
|
-
isTemplate
|
|
938
|
-
);
|
|
939
|
-
if ( declarations?.length ) {
|
|
940
|
-
ruleset += `:where(${ selector }){${ declarations.join(
|
|
941
|
-
';'
|
|
942
|
-
) };}`;
|
|
943
|
-
}
|
|
964
|
+
// Check for pseudo selector in `styles` and handle separately.
|
|
965
|
+
const pseudoSelectorStyles = Object.entries( styles ).filter(
|
|
966
|
+
( [ key ] ) => key.startsWith( ':' )
|
|
967
|
+
);
|
|
944
968
|
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
969
|
+
if ( pseudoSelectorStyles?.length ) {
|
|
970
|
+
pseudoSelectorStyles.forEach(
|
|
971
|
+
( [ pseudoKey, pseudoStyle ] ) => {
|
|
972
|
+
const pseudoDeclarations =
|
|
973
|
+
getStylesDeclarations( pseudoStyle );
|
|
949
974
|
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
const pseudoDeclarations =
|
|
954
|
-
getStylesDeclarations( pseudoStyle );
|
|
975
|
+
if ( ! pseudoDeclarations?.length ) {
|
|
976
|
+
return;
|
|
977
|
+
}
|
|
955
978
|
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
979
|
+
// `selector` maybe provided in a form
|
|
980
|
+
// where block level selectors have sub element
|
|
981
|
+
// selectors appended to them as a comma separated
|
|
982
|
+
// string.
|
|
983
|
+
// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;
|
|
984
|
+
// Split and append pseudo selector to create
|
|
985
|
+
// the proper rules to target the elements.
|
|
986
|
+
const _selector = selector
|
|
987
|
+
.split( ',' )
|
|
988
|
+
.map( ( sel ) => sel + pseudoKey )
|
|
989
|
+
.join( ',' );
|
|
959
990
|
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
// string.
|
|
964
|
-
// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;
|
|
965
|
-
// Split and append pseudo selector to create
|
|
966
|
-
// the proper rules to target the elements.
|
|
967
|
-
const _selector = selector
|
|
968
|
-
.split( ',' )
|
|
969
|
-
.map( ( sel ) => sel + pseudoKey )
|
|
970
|
-
.join( ',' );
|
|
971
|
-
|
|
972
|
-
const pseudoRule = `${ _selector }{${ pseudoDeclarations.join(
|
|
973
|
-
';'
|
|
974
|
-
) };}`;
|
|
991
|
+
const pseudoRule = `${ _selector }{${ pseudoDeclarations.join(
|
|
992
|
+
';'
|
|
993
|
+
) };}`;
|
|
975
994
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
995
|
+
ruleset += pseudoRule;
|
|
996
|
+
}
|
|
997
|
+
);
|
|
998
|
+
}
|
|
979
999
|
}
|
|
980
|
-
|
|
981
|
-
|
|
1000
|
+
);
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
if ( options.layoutStyles ) {
|
|
1004
|
+
/* Add alignment / layout styles */
|
|
1005
|
+
ruleset =
|
|
1006
|
+
ruleset +
|
|
1007
|
+
'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';
|
|
1008
|
+
ruleset =
|
|
1009
|
+
ruleset +
|
|
1010
|
+
'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';
|
|
1011
|
+
ruleset =
|
|
1012
|
+
ruleset +
|
|
1013
|
+
'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';
|
|
1014
|
+
}
|
|
982
1015
|
|
|
983
|
-
|
|
984
|
-
ruleset =
|
|
985
|
-
ruleset +
|
|
986
|
-
'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';
|
|
987
|
-
ruleset =
|
|
988
|
-
ruleset +
|
|
989
|
-
'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';
|
|
990
|
-
ruleset =
|
|
991
|
-
ruleset +
|
|
992
|
-
'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';
|
|
993
|
-
|
|
994
|
-
if ( hasBlockGapSupport ) {
|
|
1016
|
+
if ( options.blockGap && hasBlockGapSupport ) {
|
|
995
1017
|
// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.
|
|
996
1018
|
const gapValue =
|
|
997
1019
|
getGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';
|
|
@@ -1006,20 +1028,22 @@ export const toStyles = (
|
|
|
1006
1028
|
':where(.wp-site-blocks) > :last-child { margin-block-end: 0; }';
|
|
1007
1029
|
}
|
|
1008
1030
|
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1031
|
+
if ( options.presets ) {
|
|
1032
|
+
nodesWithSettings.forEach( ( { selector, presets } ) => {
|
|
1033
|
+
if (
|
|
1034
|
+
ROOT_BLOCK_SELECTOR === selector ||
|
|
1035
|
+
ROOT_CSS_PROPERTIES_SELECTOR === selector
|
|
1036
|
+
) {
|
|
1037
|
+
// Do not add extra specificity for top-level classes.
|
|
1038
|
+
selector = '';
|
|
1039
|
+
}
|
|
1017
1040
|
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1041
|
+
const classes = getPresetsClasses( selector, presets );
|
|
1042
|
+
if ( classes.length > 0 ) {
|
|
1043
|
+
ruleset += classes;
|
|
1044
|
+
}
|
|
1045
|
+
} );
|
|
1046
|
+
}
|
|
1023
1047
|
|
|
1024
1048
|
return ruleset;
|
|
1025
1049
|
};
|
|
@@ -364,6 +364,10 @@ export function getValueFromVariable( features, blockName, variable ) {
|
|
|
364
364
|
* @return {string} Scoped selector.
|
|
365
365
|
*/
|
|
366
366
|
export function scopeSelector( scope, selector ) {
|
|
367
|
+
if ( ! scope || ! selector ) {
|
|
368
|
+
return selector;
|
|
369
|
+
}
|
|
370
|
+
|
|
367
371
|
const scopes = scope.split( ',' );
|
|
368
372
|
const selectors = selector.split( ',' );
|
|
369
373
|
|
|
@@ -377,6 +381,57 @@ export function scopeSelector( scope, selector ) {
|
|
|
377
381
|
return selectorsScoped.join( ', ' );
|
|
378
382
|
}
|
|
379
383
|
|
|
384
|
+
/**
|
|
385
|
+
* Scopes a collection of selectors for features and subfeatures.
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```js
|
|
389
|
+
* const scope = '.custom-scope';
|
|
390
|
+
* const selectors = {
|
|
391
|
+
* color: '.wp-my-block p',
|
|
392
|
+
* typography: { fontSize: '.wp-my-block caption' },
|
|
393
|
+
* };
|
|
394
|
+
* const result = scopeFeatureSelector( scope, selectors );
|
|
395
|
+
* // result is {
|
|
396
|
+
* // color: '.custom-scope .wp-my-block p',
|
|
397
|
+
* // typography: { fonSize: '.custom-scope .wp-my-block caption' },
|
|
398
|
+
* // }
|
|
399
|
+
* ```
|
|
400
|
+
*
|
|
401
|
+
* @param {string} scope Selector to scope collection of selectors with.
|
|
402
|
+
* @param {Object} selectors Collection of feature selectors e.g.
|
|
403
|
+
*
|
|
404
|
+
* @return {Object|undefined} Scoped collection of feature selectors.
|
|
405
|
+
*/
|
|
406
|
+
export function scopeFeatureSelectors( scope, selectors ) {
|
|
407
|
+
if ( ! scope || ! selectors ) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
const featureSelectors = {};
|
|
412
|
+
|
|
413
|
+
Object.entries( selectors ).forEach( ( [ feature, selector ] ) => {
|
|
414
|
+
if ( typeof selector === 'string' ) {
|
|
415
|
+
featureSelectors[ feature ] = scopeSelector( scope, selector );
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if ( typeof selector === 'object' ) {
|
|
419
|
+
featureSelectors[ feature ] = {};
|
|
420
|
+
|
|
421
|
+
Object.entries( selector ).forEach(
|
|
422
|
+
( [ subfeature, subfeatureSelector ] ) => {
|
|
423
|
+
featureSelectors[ feature ][ subfeature ] = scopeSelector(
|
|
424
|
+
scope,
|
|
425
|
+
subfeatureSelector
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
} );
|
|
431
|
+
|
|
432
|
+
return featureSelectors;
|
|
433
|
+
}
|
|
434
|
+
|
|
380
435
|
/**
|
|
381
436
|
* Appends a sub-selector to an existing one.
|
|
382
437
|
*
|
|
@@ -204,6 +204,8 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
|
|
|
204
204
|
getBlockEditingMode,
|
|
205
205
|
getBlockSettings,
|
|
206
206
|
isDragging,
|
|
207
|
+
getSettings,
|
|
208
|
+
getBlockOrder,
|
|
207
209
|
} = unlock( select( blockEditorStore ) );
|
|
208
210
|
const { hasBlockSupport, getBlockType } = select( blocksStore );
|
|
209
211
|
const blockName = getBlockName( clientId );
|
|
@@ -212,6 +214,17 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
|
|
|
212
214
|
const blockEditingMode = getBlockEditingMode( clientId );
|
|
213
215
|
const parentClientId = getBlockRootClientId( clientId );
|
|
214
216
|
const [ defaultLayout ] = getBlockSettings( clientId, 'layout' );
|
|
217
|
+
|
|
218
|
+
// In zoom out mode, we want to disable the drop zone for the sections.
|
|
219
|
+
// The inner blocks belonging to the section drop zone is
|
|
220
|
+
// already disabled by the blocks themselves being disabled.
|
|
221
|
+
let _isDropZoneDisabled = blockEditingMode === 'disabled';
|
|
222
|
+
if ( __unstableGetEditorMode() === 'zoom-out' ) {
|
|
223
|
+
const { sectionRootClientId } = unlock( getSettings() );
|
|
224
|
+
const sectionsClientIds = getBlockOrder( sectionRootClientId );
|
|
225
|
+
_isDropZoneDisabled = sectionsClientIds?.includes( clientId );
|
|
226
|
+
}
|
|
227
|
+
|
|
215
228
|
return {
|
|
216
229
|
__experimentalCaptureToolbars: hasBlockSupport(
|
|
217
230
|
blockName,
|
|
@@ -228,7 +241,7 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
|
|
|
228
241
|
blockType: getBlockType( blockName ),
|
|
229
242
|
parentLock: getTemplateLock( parentClientId ),
|
|
230
243
|
parentClientId,
|
|
231
|
-
isDropZoneDisabled:
|
|
244
|
+
isDropZoneDisabled: _isDropZoneDisabled,
|
|
232
245
|
defaultLayout,
|
|
233
246
|
};
|
|
234
247
|
},
|