@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
|
@@ -91,8 +91,8 @@ export default function useBlockSync( {
|
|
|
91
91
|
[ clientId ]
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
const
|
|
95
|
-
const
|
|
94
|
+
const pendingChangesRef = useRef( { incoming: null, outgoing: [] } );
|
|
95
|
+
const subscribedRef = useRef( false );
|
|
96
96
|
|
|
97
97
|
const setControlledBlocks = () => {
|
|
98
98
|
if ( ! controlledBlocks ) {
|
|
@@ -113,15 +113,15 @@ export default function useBlockSync( {
|
|
|
113
113
|
const storeBlocks = controlledBlocks.map( ( block ) =>
|
|
114
114
|
cloneBlock( block )
|
|
115
115
|
);
|
|
116
|
-
if (
|
|
117
|
-
|
|
116
|
+
if ( subscribedRef.current ) {
|
|
117
|
+
pendingChangesRef.current.incoming = storeBlocks;
|
|
118
118
|
}
|
|
119
119
|
__unstableMarkNextChangeAsNotPersistent();
|
|
120
120
|
replaceInnerBlocks( clientId, storeBlocks );
|
|
121
121
|
} );
|
|
122
122
|
} else {
|
|
123
|
-
if (
|
|
124
|
-
|
|
123
|
+
if ( subscribedRef.current ) {
|
|
124
|
+
pendingChangesRef.current.incoming = controlledBlocks;
|
|
125
125
|
}
|
|
126
126
|
resetBlocks( controlledBlocks );
|
|
127
127
|
}
|
|
@@ -153,7 +153,7 @@ export default function useBlockSync( {
|
|
|
153
153
|
|
|
154
154
|
// Determine if blocks need to be reset when they change.
|
|
155
155
|
useEffect( () => {
|
|
156
|
-
if (
|
|
156
|
+
if ( pendingChangesRef.current.outgoing.includes( controlledBlocks ) ) {
|
|
157
157
|
// Skip block reset if the value matches expected outbound sync
|
|
158
158
|
// triggered by this component by a preceding change detection.
|
|
159
159
|
// Only skip if the value matches expectation, since a reset should
|
|
@@ -161,18 +161,18 @@ export default function useBlockSync( {
|
|
|
161
161
|
// to allow that the consumer may apply modifications to reflect
|
|
162
162
|
// back on the editor.
|
|
163
163
|
if (
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
pendingChangesRef.current.outgoing[
|
|
165
|
+
pendingChangesRef.current.outgoing.length - 1
|
|
166
166
|
] === controlledBlocks
|
|
167
167
|
) {
|
|
168
|
-
|
|
168
|
+
pendingChangesRef.current.outgoing = [];
|
|
169
169
|
}
|
|
170
170
|
} else if ( getBlocks( clientId ) !== controlledBlocks ) {
|
|
171
171
|
// Reset changing value in all other cases than the sync described
|
|
172
172
|
// above. Since this can be reached in an update following an out-
|
|
173
173
|
// bound sync, unset the outbound value to avoid considering it in
|
|
174
174
|
// subsequent renders.
|
|
175
|
-
|
|
175
|
+
pendingChangesRef.current.outgoing = [];
|
|
176
176
|
setControlledBlocks();
|
|
177
177
|
|
|
178
178
|
if ( controlledSelection ) {
|
|
@@ -185,19 +185,19 @@ export default function useBlockSync( {
|
|
|
185
185
|
}
|
|
186
186
|
}, [ controlledBlocks, clientId ] );
|
|
187
187
|
|
|
188
|
-
const
|
|
188
|
+
const isMountedRef = useRef( false );
|
|
189
189
|
|
|
190
190
|
useEffect( () => {
|
|
191
191
|
// On mount, controlled blocks are already set in the effect above.
|
|
192
|
-
if ( !
|
|
193
|
-
|
|
192
|
+
if ( ! isMountedRef.current ) {
|
|
193
|
+
isMountedRef.current = true;
|
|
194
194
|
return;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
// When the block becomes uncontrolled, it means its inner state has been reset
|
|
198
198
|
// we need to take the blocks again from the external value property.
|
|
199
199
|
if ( ! isControlled ) {
|
|
200
|
-
|
|
200
|
+
pendingChangesRef.current.outgoing = [];
|
|
201
201
|
setControlledBlocks();
|
|
202
202
|
}
|
|
203
203
|
}, [ isControlled ] );
|
|
@@ -214,7 +214,7 @@ export default function useBlockSync( {
|
|
|
214
214
|
let isPersistent = isLastBlockChangePersistent();
|
|
215
215
|
let previousAreBlocksDifferent = false;
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
subscribedRef.current = true;
|
|
218
218
|
const unsubscribe = registry.subscribe( () => {
|
|
219
219
|
// Sometimes, when changing block lists, lingering subscriptions
|
|
220
220
|
// might trigger before they are cleaned up. If the block for which
|
|
@@ -243,10 +243,10 @@ export default function useBlockSync( {
|
|
|
243
243
|
blocks = newBlocks;
|
|
244
244
|
if (
|
|
245
245
|
areBlocksDifferent &&
|
|
246
|
-
(
|
|
246
|
+
( pendingChangesRef.current.incoming ||
|
|
247
247
|
__unstableIsLastBlockChangeIgnored() )
|
|
248
248
|
) {
|
|
249
|
-
|
|
249
|
+
pendingChangesRef.current.incoming = null;
|
|
250
250
|
isPersistent = newIsPersistent;
|
|
251
251
|
return;
|
|
252
252
|
}
|
|
@@ -266,7 +266,7 @@ export default function useBlockSync( {
|
|
|
266
266
|
// We need to be aware that it was caused by an outgoing change
|
|
267
267
|
// so that we do not treat it as an incoming change later on,
|
|
268
268
|
// which would cause a block reset.
|
|
269
|
-
|
|
269
|
+
pendingChangesRef.current.outgoing.push( blocks );
|
|
270
270
|
|
|
271
271
|
// Inform the controlling entity that changes have been made to
|
|
272
272
|
// the block-editor store they should be aware about.
|
|
@@ -286,7 +286,7 @@ export default function useBlockSync( {
|
|
|
286
286
|
}, blockEditorStore );
|
|
287
287
|
|
|
288
288
|
return () => {
|
|
289
|
-
|
|
289
|
+
subscribedRef.current = false;
|
|
290
290
|
unsubscribe();
|
|
291
291
|
};
|
|
292
292
|
}, [ registry, clientId ] );
|
|
@@ -27,9 +27,6 @@ import {
|
|
|
27
27
|
InspectorControls,
|
|
28
28
|
__experimentalResponsiveBlockControl as ResponsiveBlockControl,
|
|
29
29
|
} from '@wordpress/block-editor';
|
|
30
|
-
import {
|
|
31
|
-
DimensionControl,
|
|
32
|
-
} from '@wordpress/components';
|
|
33
30
|
|
|
34
31
|
registerBlockType( 'my-plugin/my-block', {
|
|
35
32
|
// ...
|
|
@@ -37,34 +34,13 @@ registerBlockType( 'my-plugin/my-block', {
|
|
|
37
34
|
edit( { attributes, setAttributes } ) {
|
|
38
35
|
|
|
39
36
|
const [ isResponsive, setIsResponsive ] = useState( false );
|
|
40
|
-
|
|
41
|
-
// Used for example purposes only
|
|
42
|
-
const sizeOptions = [
|
|
43
|
-
{
|
|
44
|
-
label: 'Small',
|
|
45
|
-
value: 'small',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
label: 'Medium',
|
|
49
|
-
value: 'medium',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
label: 'Large',
|
|
53
|
-
value: 'large',
|
|
54
|
-
},
|
|
55
|
-
];
|
|
56
|
-
|
|
57
37
|
const { paddingSize } = attributes;
|
|
58
38
|
|
|
59
|
-
|
|
60
39
|
// Your custom control can be anything you'd like to use.
|
|
61
|
-
// You are not restricted to `DimensionControl`s, but this
|
|
62
|
-
// makes life easier if dealing with standard CSS values.
|
|
63
|
-
// see `packages/components/src/dimension-control/README.md`
|
|
64
40
|
const paddingControl = ( labelComponent, viewport ) => {
|
|
65
41
|
return (
|
|
66
|
-
<
|
|
67
|
-
|
|
42
|
+
<input
|
|
43
|
+
type="number"
|
|
68
44
|
label={ viewport.label }
|
|
69
45
|
onChange={ // handle update to padding value here }
|
|
70
46
|
value={ paddingSize }
|
|
@@ -155,7 +131,7 @@ const renderDefaultControl = ( labelComponent, viewport ) => {
|
|
|
155
131
|
// id: 'small',
|
|
156
132
|
// label: 'All'
|
|
157
133
|
// }
|
|
158
|
-
return <
|
|
134
|
+
return <SelectControl label={ labelComponent } />;
|
|
159
135
|
};
|
|
160
136
|
```
|
|
161
137
|
|
|
@@ -26,10 +26,15 @@ export default ( props ) => ( element ) => {
|
|
|
26
26
|
preserveWhiteSpace,
|
|
27
27
|
pastePlainText,
|
|
28
28
|
} = props.current;
|
|
29
|
+
const { ownerDocument } = element;
|
|
30
|
+
const { defaultView } = ownerDocument;
|
|
31
|
+
const { anchorNode, focusNode } = defaultView.getSelection();
|
|
32
|
+
const containsSelection =
|
|
33
|
+
element.contains( anchorNode ) && element.contains( focusNode );
|
|
29
34
|
|
|
30
35
|
// The event listener is attached to the window, so we need to check if
|
|
31
36
|
// the target is the element.
|
|
32
|
-
if (
|
|
37
|
+
if ( ! containsSelection ) {
|
|
33
38
|
return;
|
|
34
39
|
}
|
|
35
40
|
|
|
@@ -20,8 +20,9 @@ import {
|
|
|
20
20
|
removeFormat,
|
|
21
21
|
} from '@wordpress/rich-text';
|
|
22
22
|
import { Popover } from '@wordpress/components';
|
|
23
|
-
import {
|
|
23
|
+
import { store as blocksStore } from '@wordpress/blocks';
|
|
24
24
|
import deprecated from '@wordpress/deprecated';
|
|
25
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Internal dependencies
|
|
@@ -163,49 +164,47 @@ export function RichTextWrapper(
|
|
|
163
164
|
isBlockSelected,
|
|
164
165
|
] );
|
|
165
166
|
|
|
166
|
-
const
|
|
167
|
+
const { disableBoundBlock, bindingsPlaceholder } = useSelect(
|
|
167
168
|
( select ) => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const { getBlockBindingsSource } = unlock(
|
|
174
|
-
select( blocksStore )
|
|
175
|
-
);
|
|
176
|
-
for ( const [ attribute, binding ] of Object.entries(
|
|
177
|
-
blockBindings
|
|
178
|
-
) ) {
|
|
179
|
-
if (
|
|
180
|
-
blockTypeAttributes?.[ attribute ]?.source !==
|
|
181
|
-
'rich-text'
|
|
182
|
-
) {
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// If the source is not defined, or if its value of `canUserEditValue` is `false`, disable it.
|
|
187
|
-
const blockBindingsSource = getBlockBindingsSource(
|
|
188
|
-
binding.source
|
|
189
|
-
);
|
|
190
|
-
if (
|
|
191
|
-
! blockBindingsSource?.canUserEditValue?.( {
|
|
192
|
-
select,
|
|
193
|
-
context: blockContext,
|
|
194
|
-
args: binding.args,
|
|
195
|
-
} )
|
|
196
|
-
) {
|
|
197
|
-
_disableBoundBlocks = true;
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
169
|
+
if (
|
|
170
|
+
! blockBindings?.[ identifier ] ||
|
|
171
|
+
! canBindBlock( blockName )
|
|
172
|
+
) {
|
|
173
|
+
return {};
|
|
201
174
|
}
|
|
202
175
|
|
|
203
|
-
|
|
176
|
+
const relatedBinding = blockBindings[ identifier ];
|
|
177
|
+
const { getBlockBindingsSource } = unlock( select( blocksStore ) );
|
|
178
|
+
const blockBindingsSource = getBlockBindingsSource(
|
|
179
|
+
relatedBinding.source
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
const _disableBoundBlock =
|
|
183
|
+
! blockBindingsSource?.canUserEditValue?.( {
|
|
184
|
+
select,
|
|
185
|
+
context: blockContext,
|
|
186
|
+
args: relatedBinding.args,
|
|
187
|
+
} );
|
|
188
|
+
|
|
189
|
+
const _bindingsPlaceholder = _disableBoundBlock
|
|
190
|
+
? relatedBinding?.args?.key || blockBindingsSource?.label
|
|
191
|
+
: sprintf(
|
|
192
|
+
/* translators: %s: source label or key */
|
|
193
|
+
__( 'Add %s' ),
|
|
194
|
+
relatedBinding?.args?.key || blockBindingsSource?.label
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
disableBoundBlock: _disableBoundBlock,
|
|
199
|
+
bindingsPlaceholder:
|
|
200
|
+
( ! adjustedValue || adjustedValue.length === 0 ) &&
|
|
201
|
+
_bindingsPlaceholder,
|
|
202
|
+
};
|
|
204
203
|
},
|
|
205
|
-
[ blockBindings, blockName ]
|
|
204
|
+
[ blockBindings, identifier, blockName, blockContext, adjustedValue ]
|
|
206
205
|
);
|
|
207
206
|
|
|
208
|
-
const shouldDisableEditing = readOnly ||
|
|
207
|
+
const shouldDisableEditing = readOnly || disableBoundBlock;
|
|
209
208
|
|
|
210
209
|
const { getSelectionStart, getSelectionEnd, getBlockRootClientId } =
|
|
211
210
|
useSelect( blockEditorStore );
|
|
@@ -335,7 +334,7 @@ export function RichTextWrapper(
|
|
|
335
334
|
selectionStart,
|
|
336
335
|
selectionEnd,
|
|
337
336
|
onSelectionChange,
|
|
338
|
-
placeholder,
|
|
337
|
+
placeholder: bindingsPlaceholder || placeholder,
|
|
339
338
|
__unstableIsSelected: isSelected,
|
|
340
339
|
__unstableDisableFormats: disableFormats,
|
|
341
340
|
preserveWhiteSpace,
|
|
@@ -357,7 +356,19 @@ export function RichTextWrapper(
|
|
|
357
356
|
const inputEvents = useRef( new Set() );
|
|
358
357
|
|
|
359
358
|
function onFocus() {
|
|
360
|
-
anchorRef.current
|
|
359
|
+
let element = anchorRef.current;
|
|
360
|
+
|
|
361
|
+
if ( ! element ) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Writing flow might be editable, so we should make sure focus goes to
|
|
366
|
+
// the root editable element.
|
|
367
|
+
while ( element.parentElement?.isContentEditable ) {
|
|
368
|
+
element = element.parentElement;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
element.focus();
|
|
361
372
|
}
|
|
362
373
|
|
|
363
374
|
const registry = useRegistry();
|
|
@@ -392,9 +403,11 @@ export function RichTextWrapper(
|
|
|
392
403
|
// Overridable props.
|
|
393
404
|
role="textbox"
|
|
394
405
|
aria-multiline={ ! disableLineBreaks }
|
|
395
|
-
aria-label={ placeholder }
|
|
396
406
|
aria-readonly={ shouldDisableEditing }
|
|
397
407
|
{ ...props }
|
|
408
|
+
aria-label={
|
|
409
|
+
bindingsPlaceholder || props[ 'aria-label' ] || placeholder
|
|
410
|
+
}
|
|
398
411
|
{ ...autocompleteProps }
|
|
399
412
|
ref={ useMergeRefs( [
|
|
400
413
|
// Rich text ref must be first because its focus listener
|
|
@@ -10,7 +10,7 @@ import { useDispatch } from '@wordpress/data';
|
|
|
10
10
|
import { store as blockEditorStore } from '../../store';
|
|
11
11
|
|
|
12
12
|
export function useMarkPersistent( { html, value } ) {
|
|
13
|
-
const
|
|
13
|
+
const previousTextRef = useRef();
|
|
14
14
|
const hasActiveFormats = !! value.activeFormats?.length;
|
|
15
15
|
const { __unstableMarkLastChangeAsPersistent } =
|
|
16
16
|
useDispatch( blockEditorStore );
|
|
@@ -18,18 +18,18 @@ export function useMarkPersistent( { html, value } ) {
|
|
|
18
18
|
// Must be set synchronously to make sure it applies to the last change.
|
|
19
19
|
useLayoutEffect( () => {
|
|
20
20
|
// Ignore mount.
|
|
21
|
-
if ( !
|
|
22
|
-
|
|
21
|
+
if ( ! previousTextRef.current ) {
|
|
22
|
+
previousTextRef.current = value.text;
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
// Text input, so don't create an undo level for every character.
|
|
27
27
|
// Create an undo level after 1 second of no input.
|
|
28
|
-
if (
|
|
28
|
+
if ( previousTextRef.current !== value.text ) {
|
|
29
29
|
const timeout = window.setTimeout( () => {
|
|
30
30
|
__unstableMarkLastChangeAsPersistent();
|
|
31
31
|
}, 1000 );
|
|
32
|
-
|
|
32
|
+
previousTextRef.current = value.text;
|
|
33
33
|
return () => {
|
|
34
34
|
window.clearTimeout( timeout );
|
|
35
35
|
};
|
|
@@ -28,6 +28,8 @@ export default function SkipToSelectedBlock() {
|
|
|
28
28
|
|
|
29
29
|
return selectedBlockClientId ? (
|
|
30
30
|
<Button
|
|
31
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
32
|
+
__next40pxDefaultSize={ false }
|
|
31
33
|
variant="secondary"
|
|
32
34
|
className="block-editor-skip-to-selected-block"
|
|
33
35
|
onClick={ onClick }
|
|
@@ -41,6 +41,8 @@ function ToolSelector( props, ref ) {
|
|
|
41
41
|
<Dropdown
|
|
42
42
|
renderToggle={ ( { isOpen, onToggle } ) => (
|
|
43
43
|
<Button
|
|
44
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
45
|
+
__next40pxDefaultSize={ false }
|
|
44
46
|
{ ...props }
|
|
45
47
|
ref={ ref }
|
|
46
48
|
icon={ mode === 'navigation' ? selectIcon : editIcon }
|
|
@@ -38,6 +38,8 @@ class URLInputButton extends Component {
|
|
|
38
38
|
return (
|
|
39
39
|
<div className="block-editor-url-input__button">
|
|
40
40
|
<Button
|
|
41
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
42
|
+
__next40pxDefaultSize={ false }
|
|
41
43
|
icon={ link }
|
|
42
44
|
label={ buttonLabel }
|
|
43
45
|
onClick={ this.toggle }
|
|
@@ -51,6 +53,8 @@ class URLInputButton extends Component {
|
|
|
51
53
|
>
|
|
52
54
|
<div className="block-editor-url-input__button-modal-line">
|
|
53
55
|
<Button
|
|
56
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
57
|
+
__next40pxDefaultSize={ false }
|
|
54
58
|
className="block-editor-url-input__back"
|
|
55
59
|
icon={ arrowLeft }
|
|
56
60
|
label={ __( 'Close' ) }
|
|
@@ -61,6 +65,8 @@ class URLInputButton extends Component {
|
|
|
61
65
|
onChange={ onChange }
|
|
62
66
|
/>
|
|
63
67
|
<Button
|
|
68
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
69
|
+
__next40pxDefaultSize={ false }
|
|
64
70
|
icon={ keyboardReturn }
|
|
65
71
|
label={ __( 'Submit' ) }
|
|
66
72
|
type="submit"
|
|
@@ -539,6 +539,8 @@ class URLInput extends Component {
|
|
|
539
539
|
>
|
|
540
540
|
{ suggestions.map( ( suggestion, index ) => (
|
|
541
541
|
<Button
|
|
542
|
+
// TODO: Switch to `true` (40px size) if possible
|
|
543
|
+
__next40pxDefaultSize={ false }
|
|
542
544
|
{ ...buildSuggestionItemProps( suggestion, index ) }
|
|
543
545
|
key={ suggestion.id }
|
|
544
546
|
className={ clsx(
|
|
@@ -22,7 +22,12 @@ const TestURLPopover = () => {
|
|
|
22
22
|
|
|
23
23
|
return (
|
|
24
24
|
<>
|
|
25
|
-
<Button
|
|
25
|
+
<Button
|
|
26
|
+
__next40pxDefaultSize
|
|
27
|
+
onClick={ () => setVisiblility( true ) }
|
|
28
|
+
>
|
|
29
|
+
Edit URL
|
|
30
|
+
</Button>
|
|
26
31
|
{ isVisible && (
|
|
27
32
|
<URLPopover
|
|
28
33
|
onClose={ close }
|
|
@@ -37,6 +42,7 @@ const TestURLPopover = () => {
|
|
|
37
42
|
<form onSubmit={ close }>
|
|
38
43
|
<input type="url" value={ url } onChange={ setUrl } />
|
|
39
44
|
<Button
|
|
45
|
+
__next40pxDefaultSize
|
|
40
46
|
icon={ keyboardReturn }
|
|
41
47
|
label={ __( 'Apply' ) }
|
|
42
48
|
type="submit"
|
|
@@ -313,8 +313,8 @@ export default function useBlockDropZone( {
|
|
|
313
313
|
getAllowedBlocks,
|
|
314
314
|
isDragging,
|
|
315
315
|
isGroupable,
|
|
316
|
-
getSettings,
|
|
317
316
|
isZoomOutMode,
|
|
317
|
+
getSectionRootClientId,
|
|
318
318
|
} = unlock( useSelect( blockEditorStore ) );
|
|
319
319
|
const {
|
|
320
320
|
showInsertionPoint,
|
|
@@ -360,7 +360,7 @@ export default function useBlockDropZone( {
|
|
|
360
360
|
return;
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
-
const
|
|
363
|
+
const sectionRootClientId = getSectionRootClientId();
|
|
364
364
|
|
|
365
365
|
// In Zoom Out mode, if the target is not the section root provided by settings then
|
|
366
366
|
// do not allow dropping as the drop target is not within the root (that which is
|
|
@@ -492,6 +492,8 @@ export default function useBlockDropZone( {
|
|
|
492
492
|
getBlockNamesByClientId,
|
|
493
493
|
getDraggedBlockClientIds,
|
|
494
494
|
getBlockType,
|
|
495
|
+
getSectionRootClientId,
|
|
496
|
+
isZoomOutMode,
|
|
495
497
|
getBlocks,
|
|
496
498
|
getBlockListSettings,
|
|
497
499
|
dropZoneElement,
|
|
@@ -504,8 +506,6 @@ export default function useBlockDropZone( {
|
|
|
504
506
|
isGroupable,
|
|
505
507
|
getBlockVariations,
|
|
506
508
|
getGroupingBlockName,
|
|
507
|
-
getSettings,
|
|
508
|
-
isZoomOutMode,
|
|
509
509
|
]
|
|
510
510
|
),
|
|
511
511
|
200
|
|
@@ -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
|
+
}
|