@wordpress/block-editor 8.4.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 +2 -0
- package/README.md +56 -19
- 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/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 +14 -17
- 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/menu-item.js +9 -0
- package/build/components/block-lock/menu-item.js.map +1 -1
- package/build/components/block-lock/modal.js +4 -13
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-lock/toolbar.js +11 -3
- package/build/components/block-lock/toolbar.js.map +1 -1
- 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 +50 -5
- package/build/components/block-settings-menu/block-settings-dropdown.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 +1 -1
- 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 +20 -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/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/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 +18 -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 +10 -3
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +25 -6
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +5 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +1 -1
- package/build/components/list-view/branch.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 +26 -4
- package/build/components/rich-text/index.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/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/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 +23 -16
- 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 +76 -12
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +9 -4
- 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 -2
- 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 +142 -18
- 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/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 +15 -17
- 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/menu-item.js +9 -0
- package/build-module/components/block-lock/menu-item.js.map +1 -1
- package/build-module/components/block-lock/modal.js +5 -14
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +11 -3
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- 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 +50 -7
- package/build-module/components/block-settings-menu/block-settings-dropdown.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 +1 -1
- 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 +16 -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/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/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 +2 -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 +9 -2
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +22 -6
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +5 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +1 -1
- package/build-module/components/list-view/branch.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 +25 -4
- package/build-module/components/rich-text/index.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/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/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 +22 -15
- 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 +76 -13
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +9 -5
- 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 -2
- 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 +138 -19
- 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 +107 -74
- package/build-style/style.css +107 -74
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +28 -28
- 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/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 +19 -26
- 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/menu-item.js +8 -1
- package/src/components/block-lock/modal.js +18 -13
- package/src/components/block-lock/style.scss +6 -3
- package/src/components/block-lock/toolbar.js +12 -2
- 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 +62 -4
- 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/index.js +2 -2
- package/src/components/block-title/use-block-display-title.js +1 -1
- 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 +18 -2
- package/src/components/block-toolbar/style.scss +6 -0
- package/src/components/block-tools/index.js +0 -19
- package/src/components/block-tools/style.scss +3 -5
- 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/button-block-appender/style.scss +5 -1
- 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/font-sizes/font-size-picker.js +3 -0
- package/src/components/iframe/index.js +5 -7
- package/src/components/index.js +2 -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 +8 -3
- package/src/components/list-view/block-select-button.js +21 -3
- package/src/components/list-view/block.js +8 -1
- package/src/components/list-view/branch.js +1 -1
- package/src/components/list-view/style.scss +56 -14
- 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 +24 -1
- 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/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/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 +25 -17
- package/src/hooks/layout.js +11 -1
- package/src/hooks/style.js +40 -4
- package/src/hooks/test/gap.js +25 -1
- 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 +89 -5
- package/src/layouts/flow.js +15 -4
- package/src/store/actions.js +349 -32
- package/src/store/defaults.js +7 -2
- package/src/store/reducer.js +25 -10
- package/src/store/selectors.js +181 -24
- package/src/store/test/selectors.js +242 -5
- 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.
|
|
@@ -825,6 +840,70 @@ export function getMultiSelectedBlocksEndClientId(state) {
|
|
|
825
840
|
|
|
826
841
|
return selectionEnd.clientId || null;
|
|
827
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
|
+
}
|
|
828
907
|
/**
|
|
829
908
|
* Returns an array containing all block client IDs in the editor in the order
|
|
830
909
|
* they appear. Optionally accepts a root client ID of the block list for which
|
|
@@ -1217,7 +1296,15 @@ const canInsertBlockTypeUnmemoized = function (state, blockName) {
|
|
|
1217
1296
|
const blockAllowedParentBlocks = blockType.parent;
|
|
1218
1297
|
const parentName = getBlockName(state, rootClientId);
|
|
1219
1298
|
const hasBlockAllowedParent = checkAllowList(blockAllowedParentBlocks, parentName);
|
|
1220
|
-
|
|
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);
|
|
1221
1308
|
|
|
1222
1309
|
if (!canInsert) {
|
|
1223
1310
|
return canInsert;
|
|
@@ -1359,6 +1446,25 @@ export function canMoveBlocks(state, clientIds) {
|
|
|
1359
1446
|
let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1360
1447
|
return clientIds.every(clientId => canMoveBlock(state, clientId, rootClientId));
|
|
1361
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
|
+
}
|
|
1362
1468
|
/**
|
|
1363
1469
|
* Returns information about how recently and frequently a block has been inserted.
|
|
1364
1470
|
*
|
|
@@ -1687,7 +1793,10 @@ export const getInserterItems = createSelector(function (state) {
|
|
|
1687
1793
|
*/
|
|
1688
1794
|
|
|
1689
1795
|
export const getBlockTransformItems = createSelector(function (state, blocks) {
|
|
1796
|
+
var _itemsByName$sourceBl;
|
|
1797
|
+
|
|
1690
1798
|
let rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1799
|
+
const [sourceBlock] = blocks;
|
|
1691
1800
|
const buildBlockTypeTransformItem = buildBlockTypeItem(state, {
|
|
1692
1801
|
buildScope: 'transform'
|
|
1693
1802
|
});
|
|
@@ -1697,16 +1806,26 @@ export const getBlockTransformItems = createSelector(function (state, blocks) {
|
|
|
1697
1806
|
name
|
|
1698
1807
|
} = _ref5;
|
|
1699
1808
|
return name;
|
|
1700
|
-
});
|
|
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
|
+
};
|
|
1701
1819
|
const possibleTransforms = getPossibleBlockTransformations(blocks).reduce((accumulator, block) => {
|
|
1702
|
-
if (
|
|
1820
|
+
if (block === '*') {
|
|
1821
|
+
accumulator.push(itemsByName['*']);
|
|
1822
|
+
} else if (itemsByName[block === null || block === void 0 ? void 0 : block.name]) {
|
|
1703
1823
|
accumulator.push(itemsByName[block.name]);
|
|
1704
1824
|
}
|
|
1705
1825
|
|
|
1706
1826
|
return accumulator;
|
|
1707
1827
|
}, []);
|
|
1708
|
-
|
|
1709
|
-
return possibleBlockTransformations;
|
|
1828
|
+
return orderBy(possibleTransforms, block => itemsByName[block.name].frecency, 'desc');
|
|
1710
1829
|
}, (state, rootClientId) => [state.blockListSettings[rootClientId], state.blocks.byClientId, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getBlockTypes()]);
|
|
1711
1830
|
/**
|
|
1712
1831
|
* Determines whether there are items to show in the inserter.
|
|
@@ -2076,9 +2195,9 @@ export function __experimentalGetLastBlockAttributeChanges(state) {
|
|
|
2076
2195
|
*/
|
|
2077
2196
|
|
|
2078
2197
|
function getReusableBlocks(state) {
|
|
2079
|
-
var _state$settings$__exp, _state$
|
|
2198
|
+
var _state$settings$__exp, _state$settings2;
|
|
2080
2199
|
|
|
2081
|
-
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;
|
|
2082
2201
|
}
|
|
2083
2202
|
/**
|
|
2084
2203
|
* Returns whether the navigation mode is enabled.
|