@wordpress/block-editor 14.1.0 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +1 -10
- package/build/components/block-alignment-matrix-control/index.js +2 -2
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +8 -2
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-canvas/index.js +8 -1
- package/build/components/block-canvas/index.js.map +1 -1
- package/build/components/block-compare/block-view.js +4 -1
- package/build/components/block-compare/block-view.js.map +1 -1
- package/build/components/block-draggable/index.js +4 -4
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build/components/block-edit/multiple-usage-warning.js +8 -2
- package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build/components/block-inspector/index.js +27 -9
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-invalid-warning.js +6 -3
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-list/block.js +5 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +5 -1
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
- 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-zoom-out-mode-exit.js +46 -0
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build/components/block-lock/toolbar.js +3 -3
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +4 -1
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +1 -4
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-list/index.js +11 -14
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +12 -3
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-popover/index.js +2 -15
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +4 -1
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -0
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +22 -17
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +1 -4
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +12 -11
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +6 -2
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +8 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/block-toolbar-popover.js +10 -6
- package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +4 -9
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-popover.js +3 -4
- package/build/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +14 -5
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/block-variation-picker/index.js +4 -1
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +4 -1
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/button-block-appender/index.js +14 -3
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +4 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/content-lock/index.js +13 -0
- package/build/components/content-lock/index.js.map +1 -0
- package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
- package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
- package/build/components/editor-styles/index.js +4 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +8 -12
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +8 -5
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.native.js +1 -1
- package/build/components/global-styles/color-panel.native.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +34 -37
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +4 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/shadow-panel-components.js +13 -7
- package/build/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +17 -6
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/utils.js +4 -6
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +2 -2
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/iframe/index.js +5 -5
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -4
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +4 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/library.js +2 -4
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +3 -3
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +1 -4
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +8 -2
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/media-tab/media-tab.js +4 -1
- package/build/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build/components/inserter/menu.js +7 -24
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter-list-item/index.js +4 -4
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/inserter-listbox/index.js +3 -7
- package/build/components/inserter-listbox/index.js.map +1 -1
- package/build/components/inserter-listbox/item.js +4 -1
- package/build/components/inserter-listbox/item.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/index.js +4 -1
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build/components/inspector-popover-header/index.js +8 -2
- package/build/components/inspector-popover-header/index.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +7 -4
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/link-control/index.js +19 -10
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +4 -1
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/list-view/block-select-button.js +4 -1
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/media-placeholder/index.js +28 -7
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +8 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +19 -19
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
- package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build/components/rich-text/index.js +38 -30
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-mark-persistent.js +5 -5
- package/build/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -1
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/tool-selector/index.js +4 -1
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-input/button.js +12 -3
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +4 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +4 -6
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/writing-flow/index.js +2 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +4 -1
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-event-redirect.js +66 -0
- package/build/components/writing-flow/use-event-redirect.js.map +1 -0
- package/build/components/writing-flow/use-input.js +31 -1
- package/build/components/writing-flow/use-input.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +14 -1
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +20 -6
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +4 -4
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-flow/utils.js +27 -0
- package/build/components/writing-flow/utils.js.map +1 -1
- package/build/hooks/block-bindings.js +32 -29
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/content-lock-ui.js +8 -26
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/duotone.js +0 -4
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/layout.js +4 -1
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +3 -3
- package/build/hooks/spacing-visualizer.js.map +1 -1
- package/build/hooks/style.js +1 -5
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +19 -20
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-zoom-out.js +7 -7
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/layouts/constrained.js +41 -41
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +4 -1
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/utils.js +1 -7
- package/build/layouts/utils.js.map +1 -1
- package/build/private-apis.js +2 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +2 -7
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +1 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +13 -15
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +1 -8
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +19 -43
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +48 -0
- package/build/store/utils.js.map +1 -1
- package/build/utils/block-bindings.js +16 -11
- package/build/utils/block-bindings.js.map +1 -1
- package/build/utils/dom.js +101 -0
- package/build/utils/dom.js.map +1 -1
- package/build/utils/get-font-styles-and-weights.js +4 -4
- package/build/utils/get-font-styles-and-weights.js.map +1 -1
- package/build/utils/transform-styles/index.js +120 -16
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +8 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-canvas/index.js +9 -1
- package/build-module/components/block-canvas/index.js.map +1 -1
- package/build-module/components/block-compare/block-view.js +4 -1
- package/build-module/components/block-compare/block-view.js.map +1 -1
- package/build-module/components/block-draggable/index.js +4 -4
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build-module/components/block-edit/multiple-usage-warning.js +8 -2
- package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build-module/components/block-inspector/index.js +27 -9
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-invalid-warning.js +6 -3
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -1
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +5 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
- 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-zoom-out-mode-exit.js +40 -0
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build-module/components/block-lock/toolbar.js +3 -3
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +4 -1
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +1 -4
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +11 -14
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +12 -3
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-popover/index.js +2 -15
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +4 -1
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +4 -0
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +22 -17
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -4
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +12 -11
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +6 -2
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +8 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
- package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- 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 +4 -9
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-popover.js +3 -4
- package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +15 -6
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +4 -1
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +4 -1
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +15 -4
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +4 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/content-lock/index.js +2 -0
- package/build-module/components/content-lock/index.js.map +1 -0
- package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
- package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
- package/build-module/components/editor-styles/index.js +4 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +8 -12
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +7 -4
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.native.js +2 -2
- package/build-module/components/global-styles/color-panel.native.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +36 -39
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +4 -1
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/shadow-panel-components.js +13 -7
- package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +17 -6
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/utils.js +4 -6
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +3 -3
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/iframe/index.js +5 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -4
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -4
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +3 -3
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +1 -4
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +8 -2
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-tab.js +4 -1
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +7 -24
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +4 -4
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/inserter-listbox/index.js +3 -7
- package/build-module/components/inserter-listbox/index.js.map +1 -1
- package/build-module/components/inserter-listbox/item.js +4 -1
- package/build-module/components/inserter-listbox/item.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/index.js +4 -1
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build-module/components/inspector-popover-header/index.js +8 -2
- package/build-module/components/inspector-popover-header/index.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +7 -4
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/link-control/index.js +19 -10
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +4 -1
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +4 -1
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +28 -7
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +8 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +19 -19
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
- package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build-module/components/rich-text/index.js +39 -31
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-mark-persistent.js +5 -5
- package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +4 -1
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +4 -1
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-input/button.js +12 -3
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +4 -6
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +2 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-event-redirect.js +60 -0
- package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
- package/build-module/components/writing-flow/use-input.js +31 -1
- package/build-module/components/writing-flow/use-input.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +14 -1
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +16 -2
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +4 -4
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-flow/utils.js +26 -0
- package/build-module/components/writing-flow/utils.js.map +1 -1
- package/build-module/hooks/block-bindings.js +34 -31
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +10 -30
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/duotone.js +0 -4
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/layout.js +4 -1
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +3 -3
- package/build-module/hooks/spacing-visualizer.js.map +1 -1
- package/build-module/hooks/style.js +1 -5
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +19 -20
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +7 -7
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/layouts/constrained.js +43 -43
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +4 -1
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/utils.js +1 -7
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/private-apis.js +3 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +2 -7
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +12 -15
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +1 -7
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +22 -46
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +46 -0
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/block-bindings.js +17 -12
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-module/utils/dom.js +99 -0
- package/build-module/utils/dom.js.map +1 -1
- package/build-module/utils/get-font-styles-and-weights.js +4 -4
- package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +120 -16
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +2 -11
- package/build-style/content.css +2 -11
- package/build-style/style-rtl.css +17 -38
- package/build-style/style.css +17 -38
- package/build-types/utils/dom.d.ts +25 -0
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +34 -32
- package/src/components/block-alignment-matrix-control/index.js +1 -1
- package/src/components/block-breadcrumb/index.js +4 -0
- package/src/components/block-breadcrumb/style.scss +1 -1
- package/src/components/block-canvas/index.js +9 -1
- package/src/components/block-compare/block-view.js +7 -1
- package/src/components/block-draggable/content.scss +1 -1
- package/src/components/block-draggable/index.js +4 -4
- package/src/components/block-draggable/style.scss +1 -1
- package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/src/components/block-edit/multiple-usage-warning.js +4 -0
- package/src/components/block-inspector/index.js +22 -6
- package/src/components/block-list/block-invalid-warning.js +4 -2
- package/src/components/block-list/block.js +6 -2
- package/src/components/block-list/content.scss +2 -3
- package/src/components/block-list/use-block-props/index.js +3 -0
- package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
- package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +44 -0
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-lock/toolbar.js +3 -3
- package/src/components/block-mover/button.js +2 -0
- package/src/components/block-mover/index.js +2 -0
- package/src/components/block-mover/style.scss +1 -1
- package/src/components/block-navigation/dropdown.js +2 -0
- package/src/components/block-pattern-setup/index.js +3 -7
- package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
- package/src/components/block-pattern-setup/style.scss +2 -2
- package/src/components/block-patterns-list/index.js +15 -13
- package/src/components/block-patterns-list/style.scss +2 -2
- package/src/components/block-patterns-paging/index.js +6 -0
- package/src/components/block-popover/index.js +7 -28
- package/src/components/block-popover/style.scss +1 -1
- package/src/components/block-quick-navigation/index.js +2 -0
- package/src/components/block-settings-menu-controls/index.js +7 -1
- package/src/components/block-switcher/index.js +26 -20
- package/src/components/block-switcher/pattern-transformations-menu.js +3 -7
- package/src/components/block-switcher/style.scss +5 -6
- package/src/components/block-toolbar/index.js +17 -8
- package/src/components/block-toolbar/shuffle.js +9 -7
- package/src/components/block-tools/block-selection-button.js +4 -0
- package/src/components/block-tools/block-toolbar-popover.js +10 -6
- package/src/components/block-tools/style.scss +3 -4
- package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +2 -5
- package/src/components/block-tools/zoom-out-popover.js +3 -7
- package/src/components/block-tools/zoom-out-toolbar.js +20 -6
- package/src/components/block-variation-picker/README.md +2 -2
- package/src/components/block-variation-picker/index.js +6 -1
- package/src/components/block-variation-transforms/index.js +2 -0
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/button-block-appender/content.scss +0 -1
- package/src/components/button-block-appender/index.js +14 -3
- package/src/components/color-palette/test/control.js +15 -2
- package/src/components/colors-gradients/dropdown.js +5 -1
- package/src/components/colors-gradients/style.scss +4 -4
- package/src/components/content-lock/index.js +1 -0
- package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
- package/src/components/default-block-appender/content.scss +0 -1
- package/src/components/editor-styles/index.js +4 -3
- package/src/components/global-styles/background-panel.js +6 -14
- package/src/components/global-styles/color-panel.js +8 -4
- package/src/components/global-styles/color-panel.native.js +2 -2
- package/src/components/global-styles/dimensions-panel.js +40 -40
- package/src/components/global-styles/filters-panel.js +5 -1
- package/src/components/global-styles/shadow-panel-components.js +12 -8
- package/src/components/global-styles/style.scss +3 -4
- package/src/components/global-styles/test/typography-utils.js +96 -5
- package/src/components/global-styles/test/utils.js +10 -0
- package/src/components/global-styles/typography-utils.js +22 -6
- package/src/components/global-styles/utils.js +4 -6
- package/src/components/grid/grid-item-movers.js +3 -3
- package/src/components/grid/style.scss +1 -1
- package/src/components/iframe/index.js +5 -5
- package/src/components/inner-blocks/index.js +2 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
- package/src/components/inserter/block-patterns-tab/index.js +2 -0
- package/src/components/inserter/library.js +0 -2
- package/src/components/inserter/media-tab/hooks.js +3 -3
- package/src/components/inserter/media-tab/media-list.js +1 -4
- package/src/components/inserter/media-tab/media-preview.js +12 -2
- package/src/components/inserter/media-tab/media-tab.js +2 -0
- package/src/components/inserter/menu.js +15 -29
- package/src/components/inserter/quick-inserter.js +2 -0
- package/src/components/inserter/style.scss +6 -8
- package/src/components/inserter-list-item/index.js +4 -4
- package/src/components/inserter-list-item/style.scss +1 -3
- package/src/components/inserter-listbox/index.js +2 -8
- package/src/components/inserter-listbox/item.js +9 -1
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/index.js +2 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
- package/src/components/inspector-popover-header/index.js +4 -0
- package/src/components/letter-spacing-control/README.md +8 -1
- package/src/components/letter-spacing-control/index.js +7 -4
- package/src/components/link-control/index.js +17 -8
- package/src/components/link-control/settings-drawer.js +2 -0
- package/src/components/link-control/style.scss +1 -3
- package/src/components/list-view/block-select-button.js +2 -0
- package/src/components/list-view/style.scss +14 -16
- package/src/components/media-placeholder/index.js +14 -0
- package/src/components/media-replace-flow/index.js +12 -1
- package/src/components/provider/use-block-sync.js +20 -20
- package/src/components/responsive-block-control/README.md +3 -27
- package/src/components/rich-text/content.scss +1 -1
- package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
- package/src/components/rich-text/index.js +54 -41
- package/src/components/rich-text/style.scss +1 -1
- package/src/components/rich-text/use-mark-persistent.js +5 -5
- package/src/components/skip-to-selected-block/index.js +2 -0
- package/src/components/spacing-sizes-control/style.scss +1 -0
- package/src/components/tool-selector/index.js +2 -0
- package/src/components/url-input/button.js +6 -0
- package/src/components/url-input/index.js +2 -0
- package/src/components/url-popover/stories/index.story.js +7 -1
- package/src/components/use-block-drop-zone/index.js +4 -4
- package/src/components/warning/content.scss +3 -10
- package/src/components/writing-flow/index.js +2 -0
- package/src/components/writing-flow/use-arrow-nav.js +9 -2
- package/src/components/writing-flow/use-event-redirect.js +72 -0
- package/src/components/writing-flow/use-input.js +36 -1
- package/src/components/writing-flow/use-select-all.js +18 -1
- package/src/components/writing-flow/use-selection-observer.js +23 -3
- package/src/components/writing-flow/use-tab-nav.js +4 -4
- package/src/components/writing-flow/utils.js +30 -0
- package/src/hooks/block-bindings.js +42 -43
- package/src/hooks/block-bindings.scss +1 -9
- package/src/hooks/content-lock-ui.js +11 -36
- package/src/hooks/duotone.js +0 -4
- package/src/hooks/layout.js +2 -0
- package/src/hooks/layout.scss +3 -11
- package/src/hooks/spacing-visualizer.js +3 -3
- package/src/hooks/style.js +1 -4
- package/src/hooks/use-bindings-attributes.js +23 -24
- package/src/hooks/use-zoom-out.js +7 -7
- package/src/layouts/constrained.js +50 -47
- package/src/layouts/flex.js +2 -0
- package/src/layouts/test/grid.js +2 -2
- package/src/layouts/test/utils.js +6 -8
- package/src/layouts/utils.js +1 -9
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +4 -6
- package/src/store/private-actions.js +1 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +12 -11
- package/src/store/reducer.js +0 -5
- package/src/store/selectors.js +32 -51
- package/src/store/utils.js +50 -0
- package/src/utils/block-bindings.js +15 -16
- package/src/utils/dom.js +117 -0
- package/src/utils/get-font-styles-and-weights.js +12 -4
- package/src/utils/test/get-font-styles-and-weights.js +148 -0
- package/src/utils/test/transform-styles.js +259 -50
- package/src/utils/transform-styles/index.js +132 -21
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
* Internal dependencies
|
|
17
17
|
*/
|
|
18
18
|
import { store as blockEditorStore } from '../../store';
|
|
19
|
+
import { getSelectionRoot } from './utils';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Handles input for selections across blocks.
|
|
@@ -49,7 +50,24 @@ export default function useInput() {
|
|
|
49
50
|
// DOM. This will cause React errors (and the DOM should only be
|
|
50
51
|
// altered in a controlled fashion).
|
|
51
52
|
if ( node.contentEditable === 'true' ) {
|
|
52
|
-
|
|
53
|
+
const selection = node.ownerDocument.defaultView.getSelection();
|
|
54
|
+
const range = selection.rangeCount
|
|
55
|
+
? selection.getRangeAt( 0 )
|
|
56
|
+
: null;
|
|
57
|
+
const root = getSelectionRoot( node.ownerDocument );
|
|
58
|
+
|
|
59
|
+
// If selection is contained within a nested editable, allow
|
|
60
|
+
// input. We need to ensure that selection is maintained.
|
|
61
|
+
if ( root ) {
|
|
62
|
+
node.contentEditable = false;
|
|
63
|
+
root.focus();
|
|
64
|
+
selection.removeAllRanges();
|
|
65
|
+
if ( range ) {
|
|
66
|
+
selection.addRange( range );
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
}
|
|
53
71
|
}
|
|
54
72
|
}
|
|
55
73
|
|
|
@@ -59,6 +77,23 @@ export default function useInput() {
|
|
|
59
77
|
}
|
|
60
78
|
|
|
61
79
|
if ( ! hasMultiSelection() ) {
|
|
80
|
+
const { ownerDocument } = node;
|
|
81
|
+
if ( node === ownerDocument.activeElement ) {
|
|
82
|
+
if ( event.key === 'End' || event.key === 'Home' ) {
|
|
83
|
+
const selectionRoot = getSelectionRoot( ownerDocument );
|
|
84
|
+
const selection =
|
|
85
|
+
ownerDocument.defaultView.getSelection();
|
|
86
|
+
selection.selectAllChildren( selectionRoot );
|
|
87
|
+
const method =
|
|
88
|
+
event.key === 'End'
|
|
89
|
+
? 'collapseToEnd'
|
|
90
|
+
: 'collapseToStart';
|
|
91
|
+
selection[ method ]();
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
62
97
|
if ( event.keyCode === ENTER ) {
|
|
63
98
|
if ( event.shiftKey || __unstableIsFullySelected() ) {
|
|
64
99
|
return;
|
|
@@ -10,6 +10,7 @@ import { useRefEffect } from '@wordpress/compose';
|
|
|
10
10
|
* Internal dependencies
|
|
11
11
|
*/
|
|
12
12
|
import { store as blockEditorStore } from '../../store';
|
|
13
|
+
import { getSelectionRoot } from './utils';
|
|
13
14
|
|
|
14
15
|
export default function useSelectAll() {
|
|
15
16
|
const { getBlockOrder, getSelectedBlockClientIds, getBlockRootClientId } =
|
|
@@ -23,12 +24,27 @@ export default function useSelectAll() {
|
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
const selectionRoot = getSelectionRoot( node.ownerDocument );
|
|
26
28
|
const selectedClientIds = getSelectedBlockClientIds();
|
|
27
29
|
|
|
30
|
+
// Abort if there is selection, but it is not within a block.
|
|
31
|
+
if ( selectionRoot && ! selectedClientIds.length ) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
28
35
|
if (
|
|
36
|
+
selectionRoot &&
|
|
29
37
|
selectedClientIds.length < 2 &&
|
|
30
|
-
! isEntirelySelected(
|
|
38
|
+
! isEntirelySelected( selectionRoot )
|
|
31
39
|
) {
|
|
40
|
+
if ( node === node.ownerDocument.activeElement ) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
node.ownerDocument.defaultView
|
|
43
|
+
.getSelection()
|
|
44
|
+
.selectAllChildren( selectionRoot );
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
32
48
|
return;
|
|
33
49
|
}
|
|
34
50
|
|
|
@@ -45,6 +61,7 @@ export default function useSelectAll() {
|
|
|
45
61
|
node.ownerDocument.defaultView
|
|
46
62
|
.getSelection()
|
|
47
63
|
.removeAllRanges();
|
|
64
|
+
node.contentEditable = 'false';
|
|
48
65
|
selectBlock( rootClientId );
|
|
49
66
|
}
|
|
50
67
|
return;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
5
5
|
import { useRefEffect } from '@wordpress/compose';
|
|
6
6
|
import { create } from '@wordpress/rich-text';
|
|
7
|
+
import { isSelectionForward } from '@wordpress/dom';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Internal dependencies
|
|
@@ -53,6 +54,14 @@ function extractSelectionEndNode( selection ) {
|
|
|
53
54
|
return focusNode;
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
// When the selection is forward (the selection ends with the focus node),
|
|
58
|
+
// the selection may extend into the next element with an offset of 0. This
|
|
59
|
+
// may trigger multi selection even though the selection does not visually
|
|
60
|
+
// end in the next block.
|
|
61
|
+
if ( focusOffset === 0 && isSelectionForward( selection ) ) {
|
|
62
|
+
return focusNode.previousSibling ?? focusNode.parentElement;
|
|
63
|
+
}
|
|
64
|
+
|
|
56
65
|
return focusNode.childNodes[ focusOffset ];
|
|
57
66
|
}
|
|
58
67
|
|
|
@@ -98,8 +107,12 @@ function getRichTextElement( node ) {
|
|
|
98
107
|
export default function useSelectionObserver() {
|
|
99
108
|
const { multiSelect, selectBlock, selectionChange } =
|
|
100
109
|
useDispatch( blockEditorStore );
|
|
101
|
-
const {
|
|
102
|
-
|
|
110
|
+
const {
|
|
111
|
+
getBlockParents,
|
|
112
|
+
getBlockSelectionStart,
|
|
113
|
+
isMultiSelecting,
|
|
114
|
+
getSelectedBlockClientId,
|
|
115
|
+
} = useSelect( blockEditorStore );
|
|
103
116
|
return useRefEffect(
|
|
104
117
|
( node ) => {
|
|
105
118
|
const { ownerDocument } = node;
|
|
@@ -182,10 +195,17 @@ export default function useSelectionObserver() {
|
|
|
182
195
|
return;
|
|
183
196
|
}
|
|
184
197
|
|
|
198
|
+
setContentEditableWrapper(
|
|
199
|
+
node,
|
|
200
|
+
!! ( startClientId && endClientId )
|
|
201
|
+
);
|
|
202
|
+
|
|
185
203
|
const isSingularSelection = startClientId === endClientId;
|
|
186
204
|
if ( isSingularSelection ) {
|
|
187
205
|
if ( ! isMultiSelecting() ) {
|
|
188
|
-
|
|
206
|
+
if ( getSelectedBlockClientId() !== startClientId ) {
|
|
207
|
+
selectBlock( startClientId );
|
|
208
|
+
}
|
|
189
209
|
} else {
|
|
190
210
|
multiSelect( startClientId, startClientId );
|
|
191
211
|
}
|
|
@@ -36,12 +36,12 @@ export default function useTabNav() {
|
|
|
36
36
|
|
|
37
37
|
// Reference that holds the a flag for enabling or disabling
|
|
38
38
|
// capturing on the focus capture elements.
|
|
39
|
-
const
|
|
39
|
+
const noCaptureRef = useRef();
|
|
40
40
|
|
|
41
41
|
function onFocusCapture( event ) {
|
|
42
42
|
// Do not capture incoming focus if set by us in WritingFlow.
|
|
43
|
-
if (
|
|
44
|
-
|
|
43
|
+
if ( noCaptureRef.current ) {
|
|
44
|
+
noCaptureRef.current = null;
|
|
45
45
|
} else if ( hasMultiSelection() ) {
|
|
46
46
|
container.current.focus();
|
|
47
47
|
} else if ( getSelectedBlockClientId() ) {
|
|
@@ -165,7 +165,7 @@ export default function useTabNav() {
|
|
|
165
165
|
// Disable focus capturing on the focus capture element, so it
|
|
166
166
|
// doesn't refocus this block and so it allows default behaviour
|
|
167
167
|
// (moving focus to the next tabbable element).
|
|
168
|
-
|
|
168
|
+
noCaptureRef.current = true;
|
|
169
169
|
|
|
170
170
|
// Focusing the focus capture element, which is located above and
|
|
171
171
|
// below the editor, should not scroll the page all the way up or
|
|
@@ -116,3 +116,33 @@ function toPlainText( html ) {
|
|
|
116
116
|
// Merge any consecutive line breaks
|
|
117
117
|
return plainText.replace( /\n\n+/g, '\n\n' );
|
|
118
118
|
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Gets the current content editable root element based on the selection.
|
|
122
|
+
* @param {Document} ownerDocument
|
|
123
|
+
* @return {Element|undefined} The content editable root element.
|
|
124
|
+
*/
|
|
125
|
+
export function getSelectionRoot( ownerDocument ) {
|
|
126
|
+
const { defaultView } = ownerDocument;
|
|
127
|
+
const { anchorNode, focusNode } = defaultView.getSelection();
|
|
128
|
+
|
|
129
|
+
if ( ! anchorNode || ! focusNode ) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const anchorElement = (
|
|
134
|
+
anchorNode.nodeType === anchorNode.ELEMENT_NODE
|
|
135
|
+
? anchorNode
|
|
136
|
+
: anchorNode.parentElement
|
|
137
|
+
).closest( '[contenteditable]' );
|
|
138
|
+
|
|
139
|
+
if ( ! anchorElement ) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if ( ! anchorElement.contains( focusNode ) ) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return anchorElement;
|
|
148
|
+
}
|
|
@@ -9,11 +9,10 @@ import {
|
|
|
9
9
|
__experimentalText as Text,
|
|
10
10
|
__experimentalToolsPanel as ToolsPanel,
|
|
11
11
|
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
12
|
-
__experimentalTruncate as Truncate,
|
|
13
12
|
__experimentalVStack as VStack,
|
|
14
13
|
privateApis as componentsPrivateApis,
|
|
15
14
|
} from '@wordpress/components';
|
|
16
|
-
import { useRegistry } from '@wordpress/data';
|
|
15
|
+
import { useRegistry, useSelect } from '@wordpress/data';
|
|
17
16
|
import { useContext, Fragment } from '@wordpress/element';
|
|
18
17
|
import { useViewportMatch } from '@wordpress/compose';
|
|
19
18
|
|
|
@@ -28,15 +27,9 @@ import { unlock } from '../lock-unlock';
|
|
|
28
27
|
import InspectorControls from '../components/inspector-controls';
|
|
29
28
|
import BlockContext from '../components/block-context';
|
|
30
29
|
import { useBlockBindingsUtils } from '../utils/block-bindings';
|
|
30
|
+
import { store as blockEditorStore } from '../store';
|
|
31
31
|
|
|
32
|
-
const {
|
|
33
|
-
DropdownMenuV2: DropdownMenu,
|
|
34
|
-
DropdownMenuGroupV2: DropdownMenuGroup,
|
|
35
|
-
DropdownMenuRadioItemV2: DropdownMenuRadioItem,
|
|
36
|
-
DropdownMenuItemLabelV2: DropdownMenuItemLabel,
|
|
37
|
-
DropdownMenuItemHelpTextV2: DropdownMenuItemHelpText,
|
|
38
|
-
DropdownMenuSeparatorV2: DropdownMenuSeparator,
|
|
39
|
-
} = unlock( componentsPrivateApis );
|
|
32
|
+
const { DropdownMenuV2 } = unlock( componentsPrivateApis );
|
|
40
33
|
|
|
41
34
|
const useToolsPanelDropdownMenuProps = () => {
|
|
42
35
|
const isMobile = useViewportMatch( 'medium', '<' );
|
|
@@ -60,19 +53,14 @@ function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
|
|
|
60
53
|
<>
|
|
61
54
|
{ Object.entries( fieldsList ).map( ( [ name, fields ], i ) => (
|
|
62
55
|
<Fragment key={ name }>
|
|
63
|
-
<
|
|
56
|
+
<DropdownMenuV2.Group>
|
|
64
57
|
{ Object.keys( fieldsList ).length > 1 && (
|
|
65
|
-
<
|
|
66
|
-
className="block-editor-bindings__source-label"
|
|
67
|
-
upperCase
|
|
68
|
-
variant="muted"
|
|
69
|
-
aria-hidden
|
|
70
|
-
>
|
|
58
|
+
<DropdownMenuV2.GroupLabel>
|
|
71
59
|
{ registeredSources[ name ].label }
|
|
72
|
-
</
|
|
60
|
+
</DropdownMenuV2.GroupLabel>
|
|
73
61
|
) }
|
|
74
62
|
{ Object.entries( fields ).map( ( [ key, value ] ) => (
|
|
75
|
-
<
|
|
63
|
+
<DropdownMenuV2.RadioItem
|
|
76
64
|
key={ key }
|
|
77
65
|
onChange={ () =>
|
|
78
66
|
updateBlockBindings( {
|
|
@@ -86,17 +74,17 @@ function BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {
|
|
|
86
74
|
value={ key }
|
|
87
75
|
checked={ key === currentKey }
|
|
88
76
|
>
|
|
89
|
-
<
|
|
77
|
+
<DropdownMenuV2.ItemLabel>
|
|
90
78
|
{ key }
|
|
91
|
-
</
|
|
92
|
-
<
|
|
79
|
+
</DropdownMenuV2.ItemLabel>
|
|
80
|
+
<DropdownMenuV2.ItemHelpText>
|
|
93
81
|
{ value }
|
|
94
|
-
</
|
|
95
|
-
</
|
|
82
|
+
</DropdownMenuV2.ItemHelpText>
|
|
83
|
+
</DropdownMenuV2.RadioItem>
|
|
96
84
|
) ) }
|
|
97
|
-
</
|
|
85
|
+
</DropdownMenuV2.Group>
|
|
98
86
|
{ i !== Object.keys( fieldsList ).length - 1 && (
|
|
99
|
-
<
|
|
87
|
+
<DropdownMenuV2.Separator />
|
|
100
88
|
) }
|
|
101
89
|
</Fragment>
|
|
102
90
|
) ) }
|
|
@@ -108,17 +96,19 @@ function BlockBindingsAttribute( { attribute, binding } ) {
|
|
|
108
96
|
const { source: sourceName, args } = binding || {};
|
|
109
97
|
const sourceProps =
|
|
110
98
|
unlock( blocksPrivateApis ).getBlockBindingsSource( sourceName );
|
|
99
|
+
const isSourceInvalid = ! sourceProps;
|
|
111
100
|
return (
|
|
112
|
-
<VStack>
|
|
113
|
-
<
|
|
101
|
+
<VStack className="block-editor-bindings__item">
|
|
102
|
+
<Text truncate>{ attribute }</Text>
|
|
114
103
|
{ !! binding && (
|
|
115
104
|
<Text
|
|
116
|
-
|
|
117
|
-
|
|
105
|
+
truncate
|
|
106
|
+
variant={ ! isSourceInvalid && 'muted' }
|
|
107
|
+
isDestructive={ isSourceInvalid }
|
|
118
108
|
>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
109
|
+
{ isSourceInvalid
|
|
110
|
+
? __( 'Invalid source' )
|
|
111
|
+
: args?.key || sourceProps?.label || sourceName }
|
|
122
112
|
</Text>
|
|
123
113
|
) }
|
|
124
114
|
</VStack>
|
|
@@ -162,12 +152,11 @@ function EditableBlockBindingsPanelItems( {
|
|
|
162
152
|
} );
|
|
163
153
|
} }
|
|
164
154
|
>
|
|
165
|
-
<
|
|
155
|
+
<DropdownMenuV2
|
|
166
156
|
placement={
|
|
167
157
|
isMobile ? 'bottom-start' : 'left-start'
|
|
168
158
|
}
|
|
169
159
|
gutter={ isMobile ? 8 : 36 }
|
|
170
|
-
className="block-editor-bindings__popover"
|
|
171
160
|
trigger={
|
|
172
161
|
<Item>
|
|
173
162
|
<BlockBindingsAttribute
|
|
@@ -182,7 +171,7 @@ function EditableBlockBindingsPanelItems( {
|
|
|
182
171
|
attribute={ attribute }
|
|
183
172
|
binding={ binding }
|
|
184
173
|
/>
|
|
185
|
-
</
|
|
174
|
+
</DropdownMenuV2>
|
|
186
175
|
</ToolsPanelItem>
|
|
187
176
|
);
|
|
188
177
|
} ) }
|
|
@@ -208,6 +197,13 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
|
|
|
208
197
|
}
|
|
209
198
|
} );
|
|
210
199
|
|
|
200
|
+
const { canUpdateBlockBindings } = useSelect( ( select ) => {
|
|
201
|
+
return {
|
|
202
|
+
canUpdateBlockBindings:
|
|
203
|
+
select( blockEditorStore ).getSettings().canUpdateBlockBindings,
|
|
204
|
+
};
|
|
205
|
+
}, [] );
|
|
206
|
+
|
|
211
207
|
if ( ! bindableAttributes || bindableAttributes.length === 0 ) {
|
|
212
208
|
return null;
|
|
213
209
|
}
|
|
@@ -243,17 +239,16 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
|
|
|
243
239
|
}
|
|
244
240
|
} );
|
|
245
241
|
|
|
246
|
-
// Lock the UI when the
|
|
242
|
+
// Lock the UI when the user can't update bindings or there are no fields to connect to.
|
|
247
243
|
const readOnly =
|
|
248
|
-
!
|
|
249
|
-
! Object.keys( fieldsList ).length;
|
|
244
|
+
! canUpdateBlockBindings || ! Object.keys( fieldsList ).length;
|
|
250
245
|
|
|
251
246
|
if ( readOnly && Object.keys( filteredBindings ).length === 0 ) {
|
|
252
247
|
return null;
|
|
253
248
|
}
|
|
254
249
|
|
|
255
250
|
return (
|
|
256
|
-
<InspectorControls>
|
|
251
|
+
<InspectorControls group="bindings">
|
|
257
252
|
<ToolsPanel
|
|
258
253
|
label={ __( 'Attributes' ) }
|
|
259
254
|
resetAll={ () => {
|
|
@@ -275,9 +270,13 @@ export const BlockBindingsPanel = ( { name: blockName, metadata } ) => {
|
|
|
275
270
|
/>
|
|
276
271
|
) }
|
|
277
272
|
</ItemGroup>
|
|
278
|
-
<
|
|
279
|
-
|
|
280
|
-
|
|
273
|
+
<ItemGroup>
|
|
274
|
+
<Text variant="muted">
|
|
275
|
+
{ __(
|
|
276
|
+
'Attributes connected to custom fields or other dynamic data.'
|
|
277
|
+
) }
|
|
278
|
+
</Text>
|
|
279
|
+
</ItemGroup>
|
|
281
280
|
</ToolsPanel>
|
|
282
281
|
</InspectorControls>
|
|
283
282
|
);
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
div.block-editor-bindings__panel {
|
|
2
2
|
grid-template-columns: repeat(auto-fit, minmax(100%, 1fr));
|
|
3
|
-
button:hover .block-editor-bindings__item
|
|
3
|
+
button:hover .block-editor-bindings__item span {
|
|
4
4
|
color: inherit;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
.block-editor-bindings__popover {
|
|
9
|
-
// This won't be needed if `DropdownMenuGroup` component handles the label.
|
|
10
|
-
.block-editor-bindings__source-label {
|
|
11
|
-
grid-column: 2;
|
|
12
|
-
margin: $grid-unit-10 0;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { ToolbarButton
|
|
4
|
+
import { ToolbarButton } from '@wordpress/components';
|
|
5
5
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
6
|
import { __ } from '@wordpress/i18n';
|
|
7
7
|
import { useCallback } from '@wordpress/element';
|
|
@@ -10,7 +10,7 @@ import { useCallback } from '@wordpress/element';
|
|
|
10
10
|
* Internal dependencies
|
|
11
11
|
*/
|
|
12
12
|
import { store as blockEditorStore } from '../store';
|
|
13
|
-
import { BlockControls
|
|
13
|
+
import { BlockControls } from '../components';
|
|
14
14
|
import { unlock } from '../lock-unlock';
|
|
15
15
|
|
|
16
16
|
// The implementation of content locking is mainly in this file, although the mechanism
|
|
@@ -19,7 +19,7 @@ import { unlock } from '../lock-unlock';
|
|
|
19
19
|
// Besides the components on this file and the file referenced above the implementation
|
|
20
20
|
// also includes artifacts on the store (actions, reducers, and selector).
|
|
21
21
|
|
|
22
|
-
function ContentLockControlsPure( { clientId
|
|
22
|
+
function ContentLockControlsPure( { clientId } ) {
|
|
23
23
|
const { templateLock, isLockedByParent, isEditingAsBlocks } = useSelect(
|
|
24
24
|
( select ) => {
|
|
25
25
|
const {
|
|
@@ -36,9 +36,7 @@ function ContentLockControlsPure( { clientId, isSelected } ) {
|
|
|
36
36
|
[ clientId ]
|
|
37
37
|
);
|
|
38
38
|
|
|
39
|
-
const { stopEditingAsBlocks
|
|
40
|
-
useDispatch( blockEditorStore )
|
|
41
|
-
);
|
|
39
|
+
const { stopEditingAsBlocks } = unlock( useDispatch( blockEditorStore ) );
|
|
42
40
|
const isContentLocked =
|
|
43
41
|
! isLockedByParent && templateLock === 'contentOnly';
|
|
44
42
|
|
|
@@ -51,38 +49,15 @@ function ContentLockControlsPure( { clientId, isSelected } ) {
|
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
const showStopEditingAsBlocks = isEditingAsBlocks && ! isContentLocked;
|
|
54
|
-
const showStartEditingAsBlocks =
|
|
55
|
-
! isEditingAsBlocks && isContentLocked && isSelected;
|
|
56
52
|
|
|
57
53
|
return (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
</BlockControls>
|
|
66
|
-
</>
|
|
67
|
-
) }
|
|
68
|
-
{ showStartEditingAsBlocks && (
|
|
69
|
-
<BlockSettingsMenuControls>
|
|
70
|
-
{ ( { selectedClientIds, onClose } ) =>
|
|
71
|
-
selectedClientIds.length === 1 &&
|
|
72
|
-
selectedClientIds[ 0 ] === clientId && (
|
|
73
|
-
<MenuItem
|
|
74
|
-
onClick={ () => {
|
|
75
|
-
modifyContentLockBlock( clientId );
|
|
76
|
-
onClose();
|
|
77
|
-
} }
|
|
78
|
-
>
|
|
79
|
-
{ __( 'Modify' ) }
|
|
80
|
-
</MenuItem>
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
</BlockSettingsMenuControls>
|
|
84
|
-
) }
|
|
85
|
-
</>
|
|
54
|
+
showStopEditingAsBlocks && (
|
|
55
|
+
<BlockControls group="other">
|
|
56
|
+
<ToolbarButton onClick={ stopEditingAsBlockCallback }>
|
|
57
|
+
{ __( 'Done' ) }
|
|
58
|
+
</ToolbarButton>
|
|
59
|
+
</BlockControls>
|
|
60
|
+
)
|
|
86
61
|
);
|
|
87
62
|
}
|
|
88
63
|
|
package/src/hooks/duotone.js
CHANGED
|
@@ -251,10 +251,6 @@ function useDuotoneStyles( {
|
|
|
251
251
|
const selectors = duotoneSelector.split( ',' );
|
|
252
252
|
|
|
253
253
|
const selectorsScoped = selectors.map( ( selectorPart ) => {
|
|
254
|
-
// Extra .editor-styles-wrapper specificity is needed in the editor
|
|
255
|
-
// since we're not using inline styles to apply the filter. We need to
|
|
256
|
-
// override duotone applied by global styles and theme.json.
|
|
257
|
-
|
|
258
254
|
// Assuming the selector part is a subclass selector (not a tag name)
|
|
259
255
|
// so we can prepend the filter id class. If we want to support elements
|
|
260
256
|
// such as `img` or namespaces, we'll need to add a case for that here.
|
package/src/hooks/layout.js
CHANGED
|
@@ -320,6 +320,8 @@ function LayoutTypeSwitcher( { type, onChange } ) {
|
|
|
320
320
|
{ getLayoutTypes().map( ( { name, label } ) => {
|
|
321
321
|
return (
|
|
322
322
|
<Button
|
|
323
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
324
|
+
__next40pxDefaultSize={ false }
|
|
323
325
|
key={ name }
|
|
324
326
|
isPressed={ type === name }
|
|
325
327
|
onClick={ () => onChange( name ) }
|
package/src/hooks/layout.scss
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
.block-editor-hooks__layout-controls {
|
|
1
|
+
.block-editor-hooks__layout-controls-units {
|
|
2
2
|
display: flex;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
.block-editor-hooks__layout-controls-unit {
|
|
6
|
-
display: flex;
|
|
7
|
-
margin-right: $grid-unit-30;
|
|
8
|
-
|
|
9
|
-
svg {
|
|
10
|
-
margin: auto 0 $grid-unit-05 $grid-unit-10;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
gap: $grid-unit-20;
|
|
13
5
|
}
|
|
14
6
|
|
|
15
7
|
.block-editor-block-inspector .block-editor-hooks__layout-controls-unit-input {
|
|
@@ -36,16 +36,16 @@ function SpacingVisualizer( { clientId, value, computeStyle, forceShow } ) {
|
|
|
36
36
|
);
|
|
37
37
|
}, [ blockElement, value ] );
|
|
38
38
|
|
|
39
|
-
const
|
|
39
|
+
const previousValueRef = useRef( value );
|
|
40
40
|
const [ isActive, setIsActive ] = useState( false );
|
|
41
41
|
|
|
42
42
|
useEffect( () => {
|
|
43
|
-
if ( isShallowEqual( value,
|
|
43
|
+
if ( isShallowEqual( value, previousValueRef.current ) || forceShow ) {
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
setIsActive( true );
|
|
48
|
-
|
|
48
|
+
previousValueRef.current = value;
|
|
49
49
|
|
|
50
50
|
const timeout = setTimeout( () => {
|
|
51
51
|
setIsActive( false );
|
package/src/hooks/style.js
CHANGED
|
@@ -381,10 +381,7 @@ function useBlockProps( { name, style } ) {
|
|
|
381
381
|
useBlockProps
|
|
382
382
|
) }`;
|
|
383
383
|
|
|
384
|
-
|
|
385
|
-
// added to all other editor styles, not providing it causes reset and global
|
|
386
|
-
// styles to override element styles because of higher specificity.
|
|
387
|
-
const baseElementSelector = `.editor-styles-wrapper .${ blockElementsContainerIdentifier }`;
|
|
384
|
+
const baseElementSelector = `.${ blockElementsContainerIdentifier }`;
|
|
388
385
|
const blockElementStyles = style?.elements;
|
|
389
386
|
|
|
390
387
|
const styles = useMemo( () => {
|
|
@@ -10,6 +10,7 @@ import { addFilter } from '@wordpress/hooks';
|
|
|
10
10
|
/**
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
|
+
import isURLLike from '../components/link-control/is-url-like';
|
|
13
14
|
import { unlock } from '../lock-unlock';
|
|
14
15
|
import BlockContext from '../components/block-context';
|
|
15
16
|
|
|
@@ -134,10 +135,7 @@ export const withBlockBindingSupport = createHigherOrderComponent(
|
|
|
134
135
|
) ) {
|
|
135
136
|
const { source: sourceName, args: sourceArgs } = binding;
|
|
136
137
|
const source = sources[ sourceName ];
|
|
137
|
-
if (
|
|
138
|
-
! source?.getValues ||
|
|
139
|
-
! canBindAttribute( name, attributeName )
|
|
140
|
-
) {
|
|
138
|
+
if ( ! source || ! canBindAttribute( name, attributeName ) ) {
|
|
141
139
|
continue;
|
|
142
140
|
}
|
|
143
141
|
|
|
@@ -161,29 +159,30 @@ export const withBlockBindingSupport = createHigherOrderComponent(
|
|
|
161
159
|
}
|
|
162
160
|
|
|
163
161
|
// Get values in batch if the source supports it.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
let values = {};
|
|
163
|
+
if ( ! source.getValues ) {
|
|
164
|
+
Object.keys( bindings ).forEach( ( attr ) => {
|
|
165
|
+
// Default to the `key` or the source label when `getValues` doesn't exist
|
|
166
|
+
values[ attr ] =
|
|
167
|
+
bindings[ attr ].args?.key || source.label;
|
|
168
|
+
} );
|
|
169
|
+
} else {
|
|
170
|
+
values = source.getValues( {
|
|
171
|
+
registry,
|
|
172
|
+
context,
|
|
173
|
+
clientId,
|
|
174
|
+
bindings,
|
|
175
|
+
} );
|
|
176
|
+
}
|
|
170
177
|
for ( const [ attributeName, value ] of Object.entries(
|
|
171
178
|
values
|
|
172
179
|
) ) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
source.getPlaceholder?.( {
|
|
180
|
-
registry,
|
|
181
|
-
context,
|
|
182
|
-
clientId,
|
|
183
|
-
attributeName,
|
|
184
|
-
args: bindings[ attributeName ].args,
|
|
185
|
-
} );
|
|
186
|
-
}
|
|
180
|
+
if (
|
|
181
|
+
attributeName === 'url' &&
|
|
182
|
+
( ! value || ! isURLLike( value ) )
|
|
183
|
+
) {
|
|
184
|
+
// Return null if value is not a valid URL.
|
|
185
|
+
attributes[ attributeName ] = null;
|
|
187
186
|
} else {
|
|
188
187
|
attributes[ attributeName ] = value;
|
|
189
188
|
}
|