@wordpress/block-editor 14.1.0 → 14.2.1-next.5368f64a9.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 +2 -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 +1 -0
- 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 +2 -0
- package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build/components/block-inspector/index.js +27 -11
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-invalid-warning.js +3 -2
- 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/index.js +14 -3
- package/build/components/block-list/index.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 +53 -0
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build/components/block-list/zoom-out-separator.js +98 -0
- package/build/components/block-list/zoom-out-separator.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 +1 -0
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +1 -0
- 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 +2 -10
- 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 +12 -20
- 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 +30 -19
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +2 -10
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +19 -12
- 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/index.js +1 -1
- package/build/components/block-tools/index.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 +7 -21
- 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 +26 -7
- 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 +20 -23
- 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 +14 -17
- 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/get-compatibility-styles.js +1 -1
- package/build/components/iframe/get-compatibility-styles.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/block-patterns-tab/pattern-category-previews.js +23 -13
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build/components/inserter/index.js +4 -11
- package/build/components/inserter/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 -8
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +9 -7
- 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 -5
- 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 -13
- package/build/components/inserter-listbox/index.js.map +1 -1
- package/build/components/inserter-listbox/item.js +6 -11
- package/build/components/inserter-listbox/item.js.map +1 -1
- package/build/components/inserter-listbox/row.js +1 -9
- package/build/components/inserter-listbox/row.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/list-view/index.js +3 -7
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +32 -11
- 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 +31 -7
- 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 -2
- 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 -42
- 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/grid.js +19 -16
- package/build/layouts/grid.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 -3
- 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 +16 -18
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +1 -10
- 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 +2 -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 +1 -0
- 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 +2 -0
- package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build-module/components/block-inspector/index.js +27 -11
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-invalid-warning.js +3 -2
- 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/index.js +14 -3
- package/build-module/components/block-list/index.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 +47 -0
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build-module/components/block-list/zoom-out-separator.js +90 -0
- package/build-module/components/block-list/zoom-out-separator.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 +1 -0
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -0
- 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 +2 -10
- 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 +12 -20
- 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 +30 -19
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -10
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +19 -12
- 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/index.js +1 -1
- package/build-module/components/block-tools/index.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 +7 -22
- 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 +27 -8
- 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 +22 -26
- 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 +14 -17
- 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/get-compatibility-styles.js +1 -1
- package/build-module/components/iframe/get-compatibility-styles.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/block-patterns-tab/pattern-category-previews.js +23 -13
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build-module/components/inserter/index.js +4 -11
- package/build-module/components/inserter/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 -8
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +10 -8
- 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 +5 -6
- 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 -11
- package/build-module/components/inserter-listbox/index.js.map +1 -1
- package/build-module/components/inserter-listbox/item.js +7 -12
- package/build-module/components/inserter-listbox/item.js.map +1 -1
- package/build-module/components/inserter-listbox/row.js +2 -10
- package/build-module/components/inserter-listbox/row.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/list-view/index.js +3 -7
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +32 -11
- 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 +31 -7
- 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 -2
- 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 +44 -45
- 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/grid.js +21 -18
- package/build-module/layouts/grid.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 -4
- 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 +15 -18
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +1 -9
- 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 +19 -11
- package/build-style/content.css +19 -11
- package/build-style/style-rtl.css +27 -108
- package/build-style/style.css +27 -108
- 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 +2 -2
- package/src/components/block-breadcrumb/style.scss +1 -30
- package/src/components/block-canvas/index.js +9 -1
- package/src/components/block-compare/block-view.js +6 -1
- package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -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 +2 -0
- package/src/components/block-inspector/index.js +22 -7
- package/src/components/block-inspector/style.scss +2 -4
- package/src/components/block-list/block-invalid-warning.js +3 -2
- package/src/components/block-list/block.js +6 -2
- package/src/components/block-list/content.scss +23 -3
- package/src/components/block-list/index.js +59 -38
- 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 +56 -0
- package/src/components/block-list/zoom-out-separator.js +110 -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 +1 -0
- package/src/components/block-mover/index.js +1 -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 -15
- 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 -18
- 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 +45 -23
- package/src/components/block-switcher/pattern-transformations-menu.js +3 -12
- package/src/components/block-switcher/style.scss +5 -30
- package/src/components/block-toolbar/index.js +27 -11
- package/src/components/block-toolbar/shuffle.js +9 -7
- package/src/components/block-toolbar/style.scss +4 -1
- 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/index.js +1 -1
- 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 -17
- package/src/components/block-tools/zoom-out-popover.js +3 -7
- package/src/components/block-tools/zoom-out-toolbar.js +31 -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 +30 -28
- 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 +11 -15
- 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/get-compatibility-styles.js +6 -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/block-patterns-tab/pattern-category-previews.js +32 -15
- package/src/components/inserter/index.js +4 -10
- 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 -7
- package/src/components/inserter/media-tab/media-preview.js +15 -8
- 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 +3 -4
- package/src/components/inserter/style.scss +10 -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 -11
- package/src/components/inserter-listbox/item.js +12 -14
- package/src/components/inserter-listbox/row.js +2 -9
- 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/index.js +3 -8
- package/src/components/list-view/style.scss +14 -16
- package/src/components/media-placeholder/README.md +2 -2
- package/src/components/media-placeholder/index.js +21 -4
- 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 +37 -5
- 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 -1
- package/src/hooks/layout.scss +5 -27
- 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 +53 -48
- package/src/layouts/flex.js +2 -0
- package/src/layouts/grid.js +29 -22
- 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 -2
- 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 +18 -14
- package/src/store/reducer.js +0 -7
- 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
|
@@ -274,6 +274,23 @@ export function isDropTargetValid(
|
|
|
274
274
|
return areBlocksAllowed && targetMatchesDraggedBlockParents;
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Checks if the given element is an insertion point.
|
|
279
|
+
*
|
|
280
|
+
* @param {EventTarget|null} targetToCheck - The element to check.
|
|
281
|
+
* @param {Document} ownerDocument - The owner document of the element.
|
|
282
|
+
* @return {boolean} True if the element is a insertion point, false otherwise.
|
|
283
|
+
*/
|
|
284
|
+
function isInsertionPoint( targetToCheck, ownerDocument ) {
|
|
285
|
+
const { defaultView } = ownerDocument;
|
|
286
|
+
|
|
287
|
+
return !! (
|
|
288
|
+
defaultView &&
|
|
289
|
+
targetToCheck instanceof defaultView.HTMLElement &&
|
|
290
|
+
targetToCheck.dataset.isInsertionPoint
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
277
294
|
/**
|
|
278
295
|
* @typedef {Object} WPBlockDropZoneConfig
|
|
279
296
|
* @property {?HTMLElement} dropZoneElement Optional element to be used as the drop zone.
|
|
@@ -313,8 +330,8 @@ export default function useBlockDropZone( {
|
|
|
313
330
|
getAllowedBlocks,
|
|
314
331
|
isDragging,
|
|
315
332
|
isGroupable,
|
|
316
|
-
getSettings,
|
|
317
333
|
isZoomOutMode,
|
|
334
|
+
getSectionRootClientId,
|
|
318
335
|
} = unlock( useSelect( blockEditorStore ) );
|
|
319
336
|
const {
|
|
320
337
|
showInsertionPoint,
|
|
@@ -360,7 +377,7 @@ export default function useBlockDropZone( {
|
|
|
360
377
|
return;
|
|
361
378
|
}
|
|
362
379
|
|
|
363
|
-
const
|
|
380
|
+
const sectionRootClientId = getSectionRootClientId();
|
|
364
381
|
|
|
365
382
|
// In Zoom Out mode, if the target is not the section root provided by settings then
|
|
366
383
|
// do not allow dropping as the drop target is not within the root (that which is
|
|
@@ -422,6 +439,10 @@ export default function useBlockDropZone( {
|
|
|
422
439
|
const [ targetIndex, operation, nearestSide ] =
|
|
423
440
|
dropTargetPosition;
|
|
424
441
|
|
|
442
|
+
if ( isZoomOutMode() && operation !== 'insert' ) {
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
|
|
425
446
|
if ( operation === 'group' ) {
|
|
426
447
|
const targetBlock = blocks[ targetIndex ];
|
|
427
448
|
const areAllImages = [
|
|
@@ -492,6 +513,8 @@ export default function useBlockDropZone( {
|
|
|
492
513
|
getBlockNamesByClientId,
|
|
493
514
|
getDraggedBlockClientIds,
|
|
494
515
|
getBlockType,
|
|
516
|
+
getSectionRootClientId,
|
|
517
|
+
isZoomOutMode,
|
|
495
518
|
getBlocks,
|
|
496
519
|
getBlockListSettings,
|
|
497
520
|
dropZoneElement,
|
|
@@ -504,8 +527,6 @@ export default function useBlockDropZone( {
|
|
|
504
527
|
isGroupable,
|
|
505
528
|
getBlockVariations,
|
|
506
529
|
getGroupingBlockName,
|
|
507
|
-
getSettings,
|
|
508
|
-
isZoomOutMode,
|
|
509
530
|
]
|
|
510
531
|
),
|
|
511
532
|
200
|
|
@@ -521,7 +542,18 @@ export default function useBlockDropZone( {
|
|
|
521
542
|
// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
|
|
522
543
|
throttled( event, event.currentTarget.ownerDocument );
|
|
523
544
|
},
|
|
524
|
-
onDragLeave() {
|
|
545
|
+
onDragLeave( event ) {
|
|
546
|
+
const { ownerDocument } = event.currentTarget;
|
|
547
|
+
|
|
548
|
+
// If the drag event is leaving the drop zone and entering an insertion point,
|
|
549
|
+
// do not hide the insertion point as it is conceptually within the dropzone.
|
|
550
|
+
if (
|
|
551
|
+
isInsertionPoint( event.relatedTarget, ownerDocument ) ||
|
|
552
|
+
isInsertionPoint( event.target, ownerDocument )
|
|
553
|
+
) {
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
|
|
525
557
|
throttled.cancel();
|
|
526
558
|
hideInsertionPoint();
|
|
527
559
|
},
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
// Block UI appearance.
|
|
9
9
|
border: $border-width solid $gray-900;
|
|
10
|
-
border-radius: $radius-
|
|
10
|
+
border-radius: $radius-small;
|
|
11
11
|
background-color: $white;
|
|
12
12
|
|
|
13
13
|
.block-editor-warning__message {
|
|
@@ -30,21 +30,14 @@
|
|
|
30
30
|
flex-wrap: wrap;
|
|
31
31
|
align-items: baseline;
|
|
32
32
|
width: 100%;
|
|
33
|
+
gap: $grid-unit-15;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
.block-editor-warning__actions {
|
|
36
37
|
align-items: center;
|
|
37
38
|
display: flex;
|
|
38
|
-
|
|
39
|
+
gap: $grid-unit-10;
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
.block-editor-warning__action {
|
|
42
|
-
margin: 0 $grid-unit-10 0 0;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.block-editor-warning__secondary {
|
|
47
|
-
margin: auto 0 auto $grid-unit-10;
|
|
48
41
|
}
|
|
49
42
|
|
|
50
43
|
.components-popover.block-editor-warning__dropdown {
|
|
@@ -23,6 +23,7 @@ import useSelectionObserver from './use-selection-observer';
|
|
|
23
23
|
import useClickSelection from './use-click-selection';
|
|
24
24
|
import useInput from './use-input';
|
|
25
25
|
import useClipboardHandler from './use-clipboard-handler';
|
|
26
|
+
import useEventRedirect from './use-event-redirect';
|
|
26
27
|
import { store as blockEditorStore } from '../../store';
|
|
27
28
|
|
|
28
29
|
export function useWritingFlow() {
|
|
@@ -65,6 +66,7 @@ export function useWritingFlow() {
|
|
|
65
66
|
},
|
|
66
67
|
[ hasMultiSelection ]
|
|
67
68
|
),
|
|
69
|
+
useEventRedirect(),
|
|
68
70
|
] ),
|
|
69
71
|
after,
|
|
70
72
|
];
|
|
@@ -19,6 +19,7 @@ import { useRefEffect } from '@wordpress/compose';
|
|
|
19
19
|
*/
|
|
20
20
|
import { getBlockClientId, isInSameBlock } from '../../utils/dom';
|
|
21
21
|
import { store as blockEditorStore } from '../../store';
|
|
22
|
+
import { getSelectionRoot } from './utils';
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Returns true if the element should consider edge navigation upon a keyboard
|
|
@@ -190,8 +191,7 @@ export default function useArrowNav() {
|
|
|
190
191
|
return;
|
|
191
192
|
}
|
|
192
193
|
|
|
193
|
-
const { keyCode,
|
|
194
|
-
event;
|
|
194
|
+
const { keyCode, shiftKey, ctrlKey, altKey, metaKey } = event;
|
|
195
195
|
const isUp = keyCode === UP;
|
|
196
196
|
const isDown = keyCode === DOWN;
|
|
197
197
|
const isLeft = keyCode === LEFT;
|
|
@@ -233,6 +233,11 @@ export default function useArrowNav() {
|
|
|
233
233
|
return;
|
|
234
234
|
}
|
|
235
235
|
|
|
236
|
+
const target =
|
|
237
|
+
ownerDocument.activeElement === node
|
|
238
|
+
? getSelectionRoot( ownerDocument )
|
|
239
|
+
: event.target;
|
|
240
|
+
|
|
236
241
|
// Abort if our current target is not a candidate for navigation
|
|
237
242
|
// (e.g. preserve native input behaviors).
|
|
238
243
|
if ( ! isNavigationCandidate( target, keyCode, hasModifier ) ) {
|
|
@@ -274,6 +279,7 @@ export default function useArrowNav() {
|
|
|
274
279
|
( altKey ? isHorizontalEdge( target, isReverseDir ) : true ) &&
|
|
275
280
|
! keepCaretInsideBlock
|
|
276
281
|
) {
|
|
282
|
+
node.contentEditable = false;
|
|
277
283
|
const closestTabbable = getClosestTabbable(
|
|
278
284
|
target,
|
|
279
285
|
isReverse,
|
|
@@ -297,6 +303,7 @@ export default function useArrowNav() {
|
|
|
297
303
|
isHorizontalEdge( target, isReverseDir ) &&
|
|
298
304
|
! keepCaretInsideBlock
|
|
299
305
|
) {
|
|
306
|
+
node.contentEditable = false;
|
|
300
307
|
const closestTabbable = getClosestTabbable(
|
|
301
308
|
target,
|
|
302
309
|
isReverseDir,
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useRefEffect } from '@wordpress/compose';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { getSelectionRoot } from './utils';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Whenever content editable is enabled on writing flow, it will have focus, so
|
|
13
|
+
* we need to dispatch some events to the root of the selection to ensure
|
|
14
|
+
* compatibility with rich text. In the future, perhaps the rich text event
|
|
15
|
+
* handlers should be attached to the window instead.
|
|
16
|
+
*
|
|
17
|
+
* Alternatively, we could try to find a way to always maintain rich text focus.
|
|
18
|
+
*/
|
|
19
|
+
export default function useEventRedirect() {
|
|
20
|
+
return useRefEffect( ( node ) => {
|
|
21
|
+
function onInput( event ) {
|
|
22
|
+
if ( event.target !== node ) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const { ownerDocument } = node;
|
|
27
|
+
const { defaultView } = ownerDocument;
|
|
28
|
+
const prototype = Object.getPrototypeOf( event );
|
|
29
|
+
const constructorName = prototype.constructor.name;
|
|
30
|
+
const Constructor = defaultView[ constructorName ];
|
|
31
|
+
const root = getSelectionRoot( ownerDocument );
|
|
32
|
+
|
|
33
|
+
if ( ! root || root === node ) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const init = {};
|
|
38
|
+
|
|
39
|
+
for ( const key in event ) {
|
|
40
|
+
init[ key ] = event[ key ];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
init.bubbles = false;
|
|
44
|
+
|
|
45
|
+
const newEvent = new Constructor( event.type, init );
|
|
46
|
+
const cancelled = ! root.dispatchEvent( newEvent );
|
|
47
|
+
|
|
48
|
+
if ( cancelled ) {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const events = [
|
|
54
|
+
'beforeinput',
|
|
55
|
+
'input',
|
|
56
|
+
'compositionstart',
|
|
57
|
+
'compositionend',
|
|
58
|
+
'compositionupdate',
|
|
59
|
+
'keydown',
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
events.forEach( ( eventType ) => {
|
|
63
|
+
node.addEventListener( eventType, onInput );
|
|
64
|
+
} );
|
|
65
|
+
|
|
66
|
+
return () => {
|
|
67
|
+
events.forEach( ( eventType ) => {
|
|
68
|
+
node.removeEventListener( eventType, onInput );
|
|
69
|
+
} );
|
|
70
|
+
};
|
|
71
|
+
}, [] );
|
|
72
|
+
}
|
|
@@ -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
|
-
}
|