@wordpress/block-editor 8.3.0 → 8.5.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 +4 -0
- package/README.md +56 -18
- package/build/components/alignment-control/index.js +13 -6
- package/build/components/alignment-control/index.js.map +1 -1
- package/build/components/block-alignment-control/index.js +13 -6
- package/build/components/block-alignment-control/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -3
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-icon/index.js +4 -0
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-inspector/index.js +6 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +4 -1
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block.js +4 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +1 -6
- 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 +22 -6
- 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-focus-handler.js +7 -1
- package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build/components/block-list-appender/index.js +6 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-lock/index.js +32 -0
- package/build/components/block-lock/index.js.map +1 -0
- package/build/components/block-lock/menu-item.js +67 -0
- package/build/components/block-lock/menu-item.js.map +1 -0
- package/build/components/block-lock/modal.js +134 -0
- package/build/components/block-lock/modal.js.map +1 -0
- package/build/components/block-lock/toolbar.js +78 -0
- package/build/components/block-lock/toolbar.js.map +1 -0
- package/build/components/block-mover/index.js +4 -0
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +75 -10
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +19 -9
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +1 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +2 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +8 -6
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-toolbar/block-name-context.js +17 -0
- package/build/components/block-toolbar/block-name-context.js.map +1 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
- package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build/components/block-toolbar/index.js +24 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/index.js +0 -16
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +92 -47
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/block-vertical-alignment-control/index.js +13 -6
- package/build/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build/components/border-radius-control/index.js +0 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +1 -1
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +3 -1
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/contrast-checker/index.js +4 -0
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +8 -0
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +105 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build/components/copy-handler/index.js +4 -0
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +132 -0
- package/build/components/date-format-picker/index.js.map +1 -0
- package/build/components/font-sizes/font-size-picker.js +4 -0
- package/build/components/font-sizes/font-size-picker.js.map +1 -1
- package/build/components/iframe/index.js +6 -9
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +27 -0
- package/build/components/index.js.map +1 -1
- package/build/components/justify-content-control/index.js +13 -6
- package/build/components/justify-content-control/index.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -1
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/line-height-control/index.js +15 -6
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +24 -23
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +38 -13
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +16 -13
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +7 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +9 -2
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/media-replace-flow/index.js +4 -0
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +1 -1
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/rich-text/index.js +27 -5
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +13 -9
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/split-value.js +12 -2
- package/build/components/rich-text/split-value.js.map +1 -1
- package/build/components/rich-text/use-firefox-compat.js +49 -0
- package/build/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +34 -2
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -0
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +11 -27
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/index.js +9 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +3 -44
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js +68 -0
- package/build/components/writing-flow/use-click-selection.js.map +1 -0
- package/build/components/writing-flow/use-drag-selection.js +134 -0
- package/build/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build/components/writing-flow/use-input.js +116 -0
- package/build/components/writing-flow/use-input.js.map +1 -0
- package/build/components/writing-flow/use-multi-selection.js +18 -38
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +161 -0
- package/build/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build/components/writing-flow/use-tab-nav.js +1 -8
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/anchor.js +7 -6
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border-color.js +3 -3
- package/build/hooks/border-color.js.map +1 -1
- package/build/hooks/border.js +0 -14
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +20 -17
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/font-family.js +5 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +4 -2
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +77 -5
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +7 -2
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +34 -3
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +29 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/flex.js +82 -15
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +22 -13
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +297 -51
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +5 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +25 -13
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +171 -21
- package/build/store/selectors.js.map +1 -1
- package/build/utils/dom.js +2 -1
- package/build/utils/dom.js.map +1 -1
- package/build-module/components/alignment-control/index.js +12 -4
- package/build-module/components/alignment-control/index.js.map +1 -1
- package/build-module/components/block-alignment-control/index.js +12 -4
- package/build-module/components/block-alignment-control/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +2 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-icon/index.js +4 -0
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +6 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -2
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -4
- 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 +22 -6
- 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-focus-handler.js +7 -1
- package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +6 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-lock/index.js +4 -0
- package/build-module/components/block-lock/index.js.map +1 -0
- package/build-module/components/block-lock/menu-item.js +53 -0
- package/build-module/components/block-lock/menu-item.js.map +1 -0
- package/build-module/components/block-lock/modal.js +119 -0
- package/build-module/components/block-lock/modal.js.map +1 -0
- package/build-module/components/block-lock/toolbar.js +63 -0
- package/build-module/components/block-lock/toolbar.js.map +1 -0
- package/build-module/components/block-mover/index.js +4 -0
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +75 -12
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +18 -9
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +2 -2
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +2 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +8 -6
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-toolbar/block-name-context.js +9 -0
- package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
- package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
- package/build-module/components/block-toolbar/index.js +19 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/index.js +0 -16
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +95 -49
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/block-vertical-alignment-control/index.js +12 -4
- package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +0 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +1 -1
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +3 -1
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +4 -0
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +2 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
- package/build-module/components/copy-handler/index.js +4 -0
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +122 -0
- package/build-module/components/date-format-picker/index.js.map +1 -0
- package/build-module/components/font-sizes/font-size-picker.js +4 -0
- package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -9
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +3 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/justify-content-control/index.js +12 -4
- package/build-module/components/justify-content-control/index.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +1 -1
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +14 -5
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +24 -23
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +36 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +16 -13
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +7 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +10 -3
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +4 -0
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +2 -2
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +26 -5
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +13 -9
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/split-value.js +12 -2
- package/build-module/components/rich-text/split-value.js.map +1 -1
- package/build-module/components/rich-text/use-firefox-compat.js +39 -0
- package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +35 -4
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +4 -0
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +12 -28
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/index.js +5 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js +57 -0
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-drag-selection.js +124 -0
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
- package/build-module/components/writing-flow/use-input.js +104 -0
- package/build-module/components/writing-flow/use-input.js.map +1 -0
- package/build-module/components/writing-flow/use-multi-selection.js +18 -37
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +150 -0
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
- package/build-module/components/writing-flow/use-tab-nav.js +1 -9
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/anchor.js +7 -6
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border-color.js +5 -5
- package/build-module/hooks/border-color.js.map +1 -1
- package/build-module/hooks/border.js +0 -12
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +19 -18
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/font-family.js +3 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +4 -3
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +75 -7
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +7 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +33 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +26 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/flex.js +81 -16
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +20 -13
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +286 -49
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +5 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +25 -13
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +162 -20
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/dom.js +2 -1
- package/build-module/utils/dom.js.map +1 -1
- package/build-style/style-rtl.css +214 -24
- package/build-style/style.css +214 -24
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +28 -27
- package/src/components/alignment-control/index.js +9 -4
- package/src/components/block-alignment-control/index.js +9 -4
- package/src/components/block-draggable/index.js +2 -5
- package/src/components/block-icon/index.js +3 -0
- package/src/components/block-inspector/index.js +4 -0
- package/src/components/block-list/block-html.js +8 -4
- package/src/components/block-list/block.js +5 -1
- package/src/components/block-list/style.scss +4 -5
- package/src/components/block-list/use-block-props/index.js +0 -5
- package/src/components/block-list/use-block-props/use-focus-first-element.js +27 -6
- package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
- package/src/components/block-list-appender/index.js +5 -0
- package/src/components/block-lock/index.js +3 -0
- package/src/components/block-lock/menu-item.js +59 -0
- package/src/components/block-lock/modal.js +170 -0
- package/src/components/block-lock/style.scss +70 -0
- package/src/components/block-lock/toolbar.js +68 -0
- package/src/components/block-mover/index.js +3 -0
- package/src/components/block-mover/style.scss +4 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +109 -9
- package/src/components/block-settings-menu-controls/index.js +33 -12
- package/src/components/block-switcher/index.js +2 -2
- package/src/components/block-switcher/style.scss +8 -1
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-title/README.md +6 -1
- package/src/components/block-title/index.js +2 -2
- package/src/components/block-title/test/index.js +43 -1
- package/src/components/block-title/use-block-display-title.js +10 -7
- package/src/components/block-toolbar/block-name-context.js +8 -0
- package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
- package/src/components/block-toolbar/index.js +24 -2
- package/src/components/block-toolbar/style.scss +10 -0
- package/src/components/block-tools/index.js +0 -19
- package/src/components/block-tools/style.scss +27 -0
- package/src/components/block-variation-transforms/index.js +105 -36
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/block-vertical-alignment-control/index.js +9 -4
- package/src/components/border-radius-control/index.js +0 -1
- package/src/components/border-radius-control/test/utils.js +4 -0
- package/src/components/border-radius-control/utils.js +2 -1
- package/src/components/button-block-appender/style.scss +5 -1
- package/src/components/color-palette/test/__snapshots__/control.js.snap +70 -4
- package/src/components/colors-gradients/control.js +1 -1
- package/src/components/colors-gradients/style.scss +6 -0
- package/src/components/contrast-checker/index.js +3 -0
- package/src/components/convert-to-group-buttons/index.js +6 -1
- package/src/components/convert-to-group-buttons/toolbar.js +87 -0
- package/src/components/copy-handler/index.js +3 -0
- package/src/components/date-format-picker/README.md +58 -0
- package/src/components/date-format-picker/index.js +161 -0
- package/src/components/date-format-picker/style.scss +31 -0
- package/src/components/font-sizes/font-size-picker.js +3 -0
- package/src/components/iframe/index.js +5 -7
- package/src/components/index.js +3 -0
- package/src/components/justify-content-control/index.js +9 -4
- package/src/components/keyboard-shortcuts/index.js +1 -1
- package/src/components/line-height-control/index.js +11 -6
- package/src/components/link-control/README.md +1 -1
- package/src/components/list-view/block-select-button.js +21 -30
- package/src/components/list-view/block.js +55 -13
- package/src/components/list-view/branch.js +37 -15
- package/src/components/list-view/index.js +6 -0
- package/src/components/list-view/style.scss +56 -14
- package/src/components/list-view/use-block-selection.js +15 -2
- package/src/components/media-placeholder/README.md +8 -0
- package/src/components/media-replace-flow/index.js +3 -0
- package/src/components/multi-selection-inspector/index.js +2 -2
- package/src/components/rich-text/index.js +25 -2
- package/src/components/rich-text/index.native.js +24 -8
- package/src/components/rich-text/split-value.js +5 -1
- package/src/components/rich-text/use-firefox-compat.js +39 -0
- package/src/components/rich-text/use-input-rules.js +40 -3
- package/src/components/skip-to-selected-block/index.js +3 -0
- package/src/components/url-input/style.scss +3 -2
- package/src/components/url-popover/image-url-input-ui.js +16 -29
- package/src/components/writing-flow/index.js +8 -0
- package/src/components/writing-flow/readme.md +28 -0
- package/src/components/writing-flow/use-arrow-nav.js +4 -53
- package/src/components/writing-flow/use-click-selection.js +65 -0
- package/src/components/writing-flow/use-drag-selection.js +126 -0
- package/src/components/writing-flow/use-input.js +112 -0
- package/src/components/writing-flow/use-multi-selection.js +13 -36
- package/src/components/writing-flow/use-selection-observer.js +153 -0
- package/src/components/writing-flow/use-tab-nav.js +1 -11
- package/src/hooks/anchor.js +8 -6
- package/src/hooks/border-color.js +5 -5
- package/src/hooks/border.js +0 -13
- package/src/hooks/color.js +51 -24
- package/src/hooks/font-family.js +5 -2
- package/src/hooks/font-size.js +10 -7
- package/src/hooks/gap.js +91 -12
- package/src/hooks/layout.js +11 -1
- package/src/hooks/style.js +40 -4
- package/src/hooks/test/gap.js +66 -0
- package/src/hooks/test/style.js +94 -0
- package/src/hooks/test/utils.js +1 -1
- package/src/hooks/utils.js +26 -0
- package/src/layouts/flex.js +93 -6
- package/src/layouts/flow.js +28 -12
- package/src/store/actions.js +349 -32
- package/src/store/defaults.js +7 -1
- package/src/store/reducer.js +25 -10
- package/src/store/selectors.js +207 -25
- package/src/store/test/selectors.js +305 -5
- package/src/style.scss +2 -0
- package/src/utils/dom.js +2 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
- package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
- package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
- package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
- package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { castArray,
|
|
4
|
+
import { castArray, first, isArray, isBoolean, last, map, reduce, some, find, filter, mapKeys, orderBy } from 'lodash';
|
|
5
5
|
import createSelector from 'rememo';
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { getBlockType, getBlockTypes, getBlockVariations, hasBlockSupport, getPossibleBlockTransformations, parse } from '@wordpress/blocks';
|
|
10
|
+
import { getBlockType, getBlockTypes, getBlockVariations, hasBlockSupport, getPossibleBlockTransformations, parse, switchToBlockType } from '@wordpress/blocks';
|
|
11
11
|
import { Platform } from '@wordpress/element';
|
|
12
12
|
import { applyFilters } from '@wordpress/hooks';
|
|
13
13
|
import { symbol } from '@wordpress/icons';
|
|
14
|
+
import { __ } from '@wordpress/i18n';
|
|
14
15
|
/**
|
|
15
16
|
* A block selection object.
|
|
16
17
|
*
|
|
@@ -182,8 +183,9 @@ export const __unstableGetClientIdsTree = createSelector(function (state) {
|
|
|
182
183
|
return map(getBlockOrder(state, rootClientId), clientId => __unstableGetClientIdWithClientIdsTree(state, clientId));
|
|
183
184
|
}, state => [state.blocks.order]);
|
|
184
185
|
/**
|
|
185
|
-
* Returns an array containing the clientIds of all descendants
|
|
186
|
-
* of the
|
|
186
|
+
* Returns an array containing the clientIds of all descendants of the blocks
|
|
187
|
+
* given. Returned ids are ordered first by the order of the ids given, then
|
|
188
|
+
* by the order that they appear in the editor.
|
|
187
189
|
*
|
|
188
190
|
* @param {Object} state Global application state.
|
|
189
191
|
* @param {Array} clientIds Array of blocks to inspect.
|
|
@@ -191,13 +193,21 @@ export const __unstableGetClientIdsTree = createSelector(function (state) {
|
|
|
191
193
|
* @return {Array} ids of descendants.
|
|
192
194
|
*/
|
|
193
195
|
|
|
194
|
-
export const getClientIdsOfDescendants = (state, clientIds) =>
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
196
|
+
export const getClientIdsOfDescendants = createSelector((state, clientIds) => {
|
|
197
|
+
const collectedIds = [];
|
|
198
|
+
|
|
199
|
+
for (const givenId of clientIds) {
|
|
200
|
+
for (const descendantId of getBlockOrder(state, givenId)) {
|
|
201
|
+
collectedIds.push(descendantId, ...getClientIdsOfDescendants(state, [descendantId]));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return collectedIds;
|
|
206
|
+
}, state => [state.blocks.order]);
|
|
198
207
|
/**
|
|
199
|
-
* Returns an array containing the clientIds of the top-level blocks
|
|
200
|
-
*
|
|
208
|
+
* Returns an array containing the clientIds of the top-level blocks and
|
|
209
|
+
* their descendants of any depth (for nested blocks). Ids are returned
|
|
210
|
+
* in the same order that they appear in the editor.
|
|
201
211
|
*
|
|
202
212
|
* @param {Object} state Global application state.
|
|
203
213
|
*
|
|
@@ -205,8 +215,13 @@ export const getClientIdsOfDescendants = (state, clientIds) => flatMap(clientIds
|
|
|
205
215
|
*/
|
|
206
216
|
|
|
207
217
|
export const getClientIdsWithDescendants = createSelector(state => {
|
|
208
|
-
const
|
|
209
|
-
|
|
218
|
+
const collectedIds = [];
|
|
219
|
+
|
|
220
|
+
for (const topLevelId of getBlockOrder(state)) {
|
|
221
|
+
collectedIds.push(topLevelId, ...getClientIdsOfDescendants(state, [topLevelId]));
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return collectedIds;
|
|
210
225
|
}, state => [state.blocks.order]);
|
|
211
226
|
/**
|
|
212
227
|
* Returns the total number of blocks, or the total number of blocks with a specific name in a post.
|
|
@@ -230,6 +245,27 @@ export const getGlobalBlockCount = createSelector((state, blockName) => {
|
|
|
230
245
|
return block.name === blockName ? accumulator + 1 : accumulator;
|
|
231
246
|
}, 0);
|
|
232
247
|
}, state => [state.blocks.order, state.blocks.byClientId]);
|
|
248
|
+
/**
|
|
249
|
+
* Returns all global blocks that match a blockName. Results include nested blocks.
|
|
250
|
+
*
|
|
251
|
+
* @param {Object} state Global application state.
|
|
252
|
+
* @param {?string} blockName Optional block name, if not specified, returns an empty array.
|
|
253
|
+
*
|
|
254
|
+
* @return {Array} Array of clientIds of blocks with name equal to blockName.
|
|
255
|
+
*/
|
|
256
|
+
|
|
257
|
+
export const __experimentalGetGlobalBlocksByName = createSelector((state, blockName) => {
|
|
258
|
+
if (!blockName) {
|
|
259
|
+
return EMPTY_ARRAY;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const clientIds = getClientIdsWithDescendants(state);
|
|
263
|
+
const foundBlocks = clientIds.filter(clientId => {
|
|
264
|
+
const block = state.blocks.byClientId[clientId];
|
|
265
|
+
return block.name === blockName;
|
|
266
|
+
});
|
|
267
|
+
return foundBlocks.length > 0 ? foundBlocks : EMPTY_ARRAY;
|
|
268
|
+
}, state => [state.blocks.order, state.blocks.byClientId]);
|
|
233
269
|
/**
|
|
234
270
|
* Given an array of block client IDs, returns the corresponding array of block
|
|
235
271
|
* objects.
|
|
@@ -804,6 +840,70 @@ export function getMultiSelectedBlocksEndClientId(state) {
|
|
|
804
840
|
|
|
805
841
|
return selectionEnd.clientId || null;
|
|
806
842
|
}
|
|
843
|
+
/**
|
|
844
|
+
* Returns true if the selection is not partial.
|
|
845
|
+
*
|
|
846
|
+
* @param {Object} state Editor state.
|
|
847
|
+
*
|
|
848
|
+
* @return {boolean} Whether the selection is mergeable.
|
|
849
|
+
*/
|
|
850
|
+
|
|
851
|
+
export function __unstableIsFullySelected(state) {
|
|
852
|
+
const selectionAnchor = getSelectionStart(state);
|
|
853
|
+
const selectionFocus = getSelectionEnd(state);
|
|
854
|
+
return !selectionAnchor.attributeKey && !selectionFocus.attributeKey && typeof selectionAnchor.offset === 'undefined' && typeof selectionFocus.offset === 'undefined';
|
|
855
|
+
}
|
|
856
|
+
/**
|
|
857
|
+
* Check whether the selection is mergeable.
|
|
858
|
+
*
|
|
859
|
+
* @param {Object} state Editor state.
|
|
860
|
+
* @param {boolean} isForward Whether to merge forwards.
|
|
861
|
+
*
|
|
862
|
+
* @return {boolean} Whether the selection is mergeable.
|
|
863
|
+
*/
|
|
864
|
+
|
|
865
|
+
export function __unstableIsSelectionMergeable(state, isForward) {
|
|
866
|
+
const selectionAnchor = getSelectionStart(state);
|
|
867
|
+
const selectionFocus = getSelectionEnd(state); // It's not mergeable if the start and end are within the same block.
|
|
868
|
+
|
|
869
|
+
if (selectionAnchor.clientId === selectionFocus.clientId) return false; // It's not mergeable if there's no rich text selection.
|
|
870
|
+
|
|
871
|
+
if (!selectionAnchor.attributeKey || !selectionFocus.attributeKey || typeof selectionAnchor.offset === 'undefined' || typeof selectionFocus.offset === 'undefined') return false;
|
|
872
|
+
const anchorRootClientId = getBlockRootClientId(state, selectionAnchor.clientId);
|
|
873
|
+
const focusRootClientId = getBlockRootClientId(state, selectionFocus.clientId); // It's not mergeable if the selection doesn't start and end in the same
|
|
874
|
+
// block list. Maybe in the future it should be allowed.
|
|
875
|
+
|
|
876
|
+
if (anchorRootClientId !== focusRootClientId) {
|
|
877
|
+
return false;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
const blockOrder = getBlockOrder(state, anchorRootClientId);
|
|
881
|
+
const anchorIndex = blockOrder.indexOf(selectionAnchor.clientId);
|
|
882
|
+
const focusIndex = blockOrder.indexOf(selectionFocus.clientId); // Reassign selection start and end based on order.
|
|
883
|
+
|
|
884
|
+
let selectionStart, selectionEnd;
|
|
885
|
+
|
|
886
|
+
if (anchorIndex > focusIndex) {
|
|
887
|
+
selectionStart = selectionFocus;
|
|
888
|
+
selectionEnd = selectionAnchor;
|
|
889
|
+
} else {
|
|
890
|
+
selectionStart = selectionAnchor;
|
|
891
|
+
selectionEnd = selectionFocus;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
const targetBlockClientId = isForward ? selectionEnd.clientId : selectionStart.clientId;
|
|
895
|
+
const blockToMergeClientId = isForward ? selectionStart.clientId : selectionEnd.clientId;
|
|
896
|
+
const targetBlock = getBlock(state, targetBlockClientId);
|
|
897
|
+
const targetBlockType = getBlockType(targetBlock.name);
|
|
898
|
+
if (!targetBlockType.merge) return false;
|
|
899
|
+
const blockToMerge = getBlock(state, blockToMergeClientId); // It's mergeable if the blocks are of the same type.
|
|
900
|
+
|
|
901
|
+
if (blockToMerge.name === targetBlock.name) return true; // If the blocks are of a different type, try to transform the block being
|
|
902
|
+
// merged into the same type of block.
|
|
903
|
+
|
|
904
|
+
const blocksToMerge = switchToBlockType(blockToMerge, targetBlock.name);
|
|
905
|
+
return blocksToMerge && blocksToMerge.length;
|
|
906
|
+
}
|
|
807
907
|
/**
|
|
808
908
|
* Returns an array containing all block client IDs in the editor in the order
|
|
809
909
|
* they appear. Optionally accepts a root client ID of the block list for which
|
|
@@ -1196,7 +1296,15 @@ const canInsertBlockTypeUnmemoized = function (state, blockName) {
|
|
|
1196
1296
|
const blockAllowedParentBlocks = blockType.parent;
|
|
1197
1297
|
const parentName = getBlockName(state, rootClientId);
|
|
1198
1298
|
const hasBlockAllowedParent = checkAllowList(blockAllowedParentBlocks, parentName);
|
|
1199
|
-
|
|
1299
|
+
let hasBlockAllowedAncestor = true;
|
|
1300
|
+
const blockAllowedAncestorBlocks = blockType.ancestor;
|
|
1301
|
+
|
|
1302
|
+
if (blockAllowedAncestorBlocks) {
|
|
1303
|
+
const ancestors = [rootClientId, ...getBlockParents(state, rootClientId)];
|
|
1304
|
+
hasBlockAllowedAncestor = some(ancestors, ancestorClientId => checkAllowList(blockAllowedAncestorBlocks, getBlockName(state, ancestorClientId)));
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
const canInsert = hasBlockAllowedAncestor && (hasParentAllowedBlock === null && hasBlockAllowedParent === null || hasParentAllowedBlock === true || hasBlockAllowedParent === true);
|
|
1200
1308
|
|
|
1201
1309
|
if (!canInsert) {
|
|
1202
1310
|
return canInsert;
|
|
@@ -1338,6 +1446,25 @@ export function canMoveBlocks(state, clientIds) {
|
|
|
1338
1446
|
let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1339
1447
|
return clientIds.every(clientId => canMoveBlock(state, clientId, rootClientId));
|
|
1340
1448
|
}
|
|
1449
|
+
/**
|
|
1450
|
+
* Determines if the given block type can be locked/unlocked by a user.
|
|
1451
|
+
*
|
|
1452
|
+
* @param {Object} state Editor state.
|
|
1453
|
+
* @param {(string|Object)} nameOrType Block name or type object.
|
|
1454
|
+
*
|
|
1455
|
+
* @return {boolean} Whether a given block type can be locked/unlocked.
|
|
1456
|
+
*/
|
|
1457
|
+
|
|
1458
|
+
export function canLockBlockType(state, nameOrType) {
|
|
1459
|
+
var _state$settings;
|
|
1460
|
+
|
|
1461
|
+
if (!hasBlockSupport(nameOrType, 'lock', true)) {
|
|
1462
|
+
return false;
|
|
1463
|
+
} // Use block editor settings as the default value.
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
return !!((_state$settings = state.settings) !== null && _state$settings !== void 0 && _state$settings.canLockBlocks);
|
|
1467
|
+
}
|
|
1341
1468
|
/**
|
|
1342
1469
|
* Returns information about how recently and frequently a block has been inserted.
|
|
1343
1470
|
*
|
|
@@ -1666,7 +1793,10 @@ export const getInserterItems = createSelector(function (state) {
|
|
|
1666
1793
|
*/
|
|
1667
1794
|
|
|
1668
1795
|
export const getBlockTransformItems = createSelector(function (state, blocks) {
|
|
1796
|
+
var _itemsByName$sourceBl;
|
|
1797
|
+
|
|
1669
1798
|
let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1799
|
+
const [sourceBlock] = blocks;
|
|
1670
1800
|
const buildBlockTypeTransformItem = buildBlockTypeItem(state, {
|
|
1671
1801
|
buildScope: 'transform'
|
|
1672
1802
|
});
|
|
@@ -1676,16 +1806,26 @@ export const getBlockTransformItems = createSelector(function (state, blocks) {
|
|
|
1676
1806
|
name
|
|
1677
1807
|
} = _ref5;
|
|
1678
1808
|
return name;
|
|
1679
|
-
});
|
|
1809
|
+
}); // Consider unwraping the highest priority.
|
|
1810
|
+
|
|
1811
|
+
itemsByName['*'] = {
|
|
1812
|
+
frecency: +Infinity,
|
|
1813
|
+
id: '*',
|
|
1814
|
+
isDisabled: false,
|
|
1815
|
+
name: '*',
|
|
1816
|
+
title: __('Unwrap'),
|
|
1817
|
+
icon: (_itemsByName$sourceBl = itemsByName[sourceBlock.name]) === null || _itemsByName$sourceBl === void 0 ? void 0 : _itemsByName$sourceBl.icon
|
|
1818
|
+
};
|
|
1680
1819
|
const possibleTransforms = getPossibleBlockTransformations(blocks).reduce((accumulator, block) => {
|
|
1681
|
-
if (
|
|
1820
|
+
if (block === '*') {
|
|
1821
|
+
accumulator.push(itemsByName['*']);
|
|
1822
|
+
} else if (itemsByName[block === null || block === void 0 ? void 0 : block.name]) {
|
|
1682
1823
|
accumulator.push(itemsByName[block.name]);
|
|
1683
1824
|
}
|
|
1684
1825
|
|
|
1685
1826
|
return accumulator;
|
|
1686
1827
|
}, []);
|
|
1687
|
-
|
|
1688
|
-
return possibleBlockTransformations;
|
|
1828
|
+
return orderBy(possibleTransforms, block => itemsByName[block.name].frecency, 'desc');
|
|
1689
1829
|
}, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getBlockTypes()]);
|
|
1690
1830
|
/**
|
|
1691
1831
|
* Determines whether there are items to show in the inserter.
|
|
@@ -1801,7 +1941,9 @@ export const __experimentalGetParsedPattern = createSelector((state, patternName
|
|
|
1801
1941
|
}
|
|
1802
1942
|
|
|
1803
1943
|
return { ...pattern,
|
|
1804
|
-
blocks: parse(pattern.content
|
|
1944
|
+
blocks: parse(pattern.content, {
|
|
1945
|
+
__unstableSkipMigrationLogs: true
|
|
1946
|
+
})
|
|
1805
1947
|
};
|
|
1806
1948
|
}, state => [state.settings.__experimentalBlockPatterns]);
|
|
1807
1949
|
const getAllAllowedPatterns = createSelector(state => {
|
|
@@ -2053,9 +2195,9 @@ export function __experimentalGetLastBlockAttributeChanges(state) {
|
|
|
2053
2195
|
*/
|
|
2054
2196
|
|
|
2055
2197
|
function getReusableBlocks(state) {
|
|
2056
|
-
var _state$settings$__exp, _state$
|
|
2198
|
+
var _state$settings$__exp, _state$settings2;
|
|
2057
2199
|
|
|
2058
|
-
return (_state$settings$__exp = state === null || state === void 0 ? void 0 : (_state$
|
|
2200
|
+
return (_state$settings$__exp = state === null || state === void 0 ? void 0 : (_state$settings2 = state.settings) === null || _state$settings2 === void 0 ? void 0 : _state$settings2.__experimentalReusableBlocks) !== null && _state$settings$__exp !== void 0 ? _state$settings$__exp : EMPTY_ARRAY;
|
|
2059
2201
|
}
|
|
2060
2202
|
/**
|
|
2061
2203
|
* Returns whether the navigation mode is enabled.
|