@wordpress/block-editor 14.9.0 → 14.10.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/LICENSE.md +1 -1
- package/README.md +40 -0
- package/build/components/audio-player/index.native.js +1 -1
- package/build/components/audio-player/index.native.js.map +1 -1
- package/build/components/background-image-control/index.js +4 -0
- package/build/components/background-image-control/index.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +32 -0
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-card/index.js +45 -8
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-edit/edit.js +147 -10
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-list/index.js +1 -2
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/zoom-out-separator.js +20 -3
- package/build/components/block-list/zoom-out-separator.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -8
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/utils.js +3 -3
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +19 -6
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/button-block-appender/index.js +1 -5
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +6 -0
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +51 -11
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/contrast-checker/index.native.js +1 -1
- package/build/components/contrast-checker/index.native.js.map +1 -1
- package/build/components/date-format-picker/index.js +7 -16
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +9 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +10 -1
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/color-panel.js +3 -0
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +1 -1
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +2 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +9 -0
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/utils.js +12 -1
- package/build/components/grid/utils.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +11 -11
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +1 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/index.js +6 -15
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -13
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +2 -2
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/line-height-control/index.js +9 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +26 -26
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/plain-text/index.js +34 -0
- package/build/components/plain-text/index.js.map +1 -1
- package/build/components/provider/index.js +61 -5
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-media-upload-settings.js +28 -0
- package/build/components/provider/use-media-upload-settings.js.map +1 -0
- package/build/components/resolution-tool/index.js +3 -1
- package/build/components/resolution-tool/index.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -1
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/event-listeners/delete.js +7 -1
- package/build/components/rich-text/event-listeners/delete.js.map +1 -1
- package/build/components/rich-text/index.js +2 -2
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +2 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/hooks/background.js +2 -0
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +15 -14
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/border.js +3 -3
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +2 -2
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-family.js +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/gap.js +2 -2
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/index.js +0 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +7 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/style.js +7 -7
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/supports.js +7 -7
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +6 -6
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-zoom-out.js +12 -1
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +1 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/store/private-actions.js +1 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +11 -1
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +93 -12
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +6 -8
- package/build/store/selectors.js.map +1 -1
- package/build/utils/block-bindings.js +95 -0
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/components/audio-player/index.native.js +2 -2
- package/build-module/components/audio-player/index.native.js.map +1 -1
- package/build-module/components/background-image-control/index.js +5 -1
- package/build-module/components/background-image-control/index.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +32 -0
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-card/index.js +45 -8
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-edit/edit.js +148 -11
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-list/index.js +2 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/zoom-out-separator.js +20 -3
- package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -8
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/utils.js +3 -3
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +19 -6
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +2 -6
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +7 -1
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +51 -11
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/contrast-checker/index.native.js +2 -2
- package/build-module/components/contrast-checker/index.native.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +7 -16
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +8 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +10 -1
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -0
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +1 -1
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +2 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +9 -0
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/utils.js +12 -1
- package/build-module/components/grid/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +12 -12
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +1 -2
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/index.js +6 -15
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -13
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +2 -2
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +8 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +3 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +28 -28
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/plain-text/index.js +34 -0
- package/build-module/components/plain-text/index.js.map +1 -1
- package/build-module/components/provider/index.js +62 -5
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-media-upload-settings.js +22 -0
- package/build-module/components/provider/use-media-upload-settings.js.map +1 -0
- package/build-module/components/resolution-tool/index.js +3 -1
- package/build-module/components/resolution-tool/index.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -1
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/delete.js +7 -1
- package/build-module/components/rich-text/event-listeners/delete.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +2 -1
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/hooks/background.js +2 -0
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +13 -12
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/border.js +3 -3
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +1 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +2 -2
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-family.js +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/gap.js +2 -2
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/index.js +0 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +1 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/style.js +7 -7
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/supports.js +7 -7
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +6 -6
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +12 -2
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +1 -1
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/store/private-actions.js +1 -1
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +11 -1
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +93 -12
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +6 -8
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/block-bindings.js +90 -0
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/style-rtl.css +27 -9
- package/build-style/style.css +27 -9
- package/package.json +33 -33
- package/src/components/audio-player/index.native.js +2 -2
- package/src/components/background-image-control/index.js +4 -0
- package/src/components/background-image-control/style.scss +4 -2
- package/src/components/block-alignment-matrix-control/README.md +29 -6
- package/src/components/block-alignment-matrix-control/index.js +31 -0
- package/src/components/block-alignment-matrix-control/stories/index.story.js +78 -0
- package/src/components/block-card/README.md +7 -0
- package/src/components/block-card/index.js +41 -12
- package/src/components/block-card/stories/index.story.js +79 -0
- package/src/components/block-card/style.scss +9 -1
- package/src/components/block-edit/edit.js +218 -11
- package/src/components/block-list/index.js +2 -7
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/zoom-out-separator.js +30 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +17 -20
- package/src/components/block-styles/utils.js +3 -3
- package/src/components/block-title/stories/index.story.js +76 -0
- package/src/components/block-tools/style.scss +1 -0
- package/src/components/block-tools/zoom-out-mode-inserters.js +21 -3
- package/src/components/border-radius-control/README.md +59 -0
- package/src/components/border-radius-control/stories/index.story.js +58 -0
- package/src/components/button-block-appender/index.js +2 -7
- package/src/components/child-layout-control/index.js +14 -0
- package/src/components/colors-gradients/dropdown.js +57 -8
- package/src/components/colors-gradients/style.scss +5 -0
- package/src/components/contrast-checker/index.native.js +2 -2
- package/src/components/contrast-checker/stories/index.story.js +117 -0
- package/src/components/date-format-picker/README.md +6 -13
- package/src/components/date-format-picker/index.js +10 -17
- package/src/components/date-format-picker/stories/index.story.js +69 -0
- package/src/components/date-format-picker/style.scss +3 -1
- package/src/components/default-block-appender/content.scss +1 -0
- package/src/components/dimensions-tool/stories/aspect-ratio-tool.story.js +2 -1
- package/src/components/dimensions-tool/stories/index.story.js +2 -1
- package/src/components/dimensions-tool/stories/scale-tool.story.js +2 -1
- package/src/components/dimensions-tool/stories/width-height-tool.story.js +2 -1
- package/src/components/font-appearance-control/index.js +15 -0
- package/src/components/font-family/README.md +1 -0
- package/src/components/font-family/index.js +17 -1
- package/src/components/font-family/stories/index.story.js +1 -0
- package/src/components/global-styles/color-panel.js +3 -0
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/typography-utils.js +1 -1
- package/src/components/global-styles/use-global-styles-output.js +2 -2
- package/src/components/grid/grid-visualizer.js +11 -0
- package/src/components/grid/utils.js +19 -1
- package/src/components/iframe/index.js +1 -1
- package/src/components/inner-blocks/use-inner-block-template-sync.js +17 -10
- package/src/components/inserter/block-patterns-explorer/index.js +2 -3
- package/src/components/inserter/block-patterns-tab/index.js +3 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/src/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/src/components/inserter/category-tabs/index.js +3 -2
- package/src/components/inserter/index.js +1 -13
- package/src/components/inserter/quick-inserter.js +2 -25
- package/src/components/keyboard-shortcuts/index.js +2 -2
- package/src/components/line-height-control/README.md +1 -0
- package/src/components/line-height-control/index.js +12 -0
- package/src/components/line-height-control/stories/index.story.js +1 -0
- package/src/components/line-height-control/test/index.js +7 -1
- package/src/components/list-view/style.scss +10 -5
- package/src/components/media-placeholder/index.js +3 -3
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +28 -36
- package/src/components/media-replace-flow/style.scss +6 -6
- package/src/components/plain-text/README.md +2 -2
- package/src/components/plain-text/index.js +34 -0
- package/src/components/plain-text/stories/index.story.js +75 -0
- package/src/components/provider/index.js +81 -4
- package/src/components/provider/use-media-upload-settings.js +25 -0
- package/src/components/resolution-tool/index.js +2 -0
- package/src/components/resolution-tool/stories/index.story.js +36 -8
- package/src/components/responsive-block-control/index.js +1 -1
- package/src/components/rich-text/event-listeners/delete.js +6 -1
- package/src/components/rich-text/index.js +1 -1
- package/src/components/text-alignment-control/README.md +49 -0
- package/src/components/text-alignment-control/stories/index.story.js +56 -18
- package/src/components/text-decoration-control/README.md +0 -1
- package/src/components/text-decoration-control/stories/index.story.js +51 -16
- package/src/components/text-transform-control/README.md +3 -4
- package/src/components/text-transform-control/stories/index.story.js +53 -16
- package/src/components/use-block-drop-zone/index.js +8 -1
- package/src/components/warning/stories/index.story.js +86 -0
- package/src/hooks/background.js +6 -0
- package/src/hooks/block-bindings.js +17 -18
- package/src/hooks/border.js +9 -3
- package/src/hooks/color.js +1 -1
- package/src/hooks/dimensions.js +2 -2
- package/src/hooks/font-family.js +1 -1
- package/src/hooks/gap.js +2 -2
- package/src/hooks/index.js +0 -1
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/style.js +13 -7
- package/src/hooks/supports.js +7 -7
- package/src/hooks/test/style.js +2 -1
- package/src/hooks/typography.js +6 -6
- package/src/hooks/use-zoom-out.js +10 -2
- package/src/hooks/utils.js +1 -1
- package/src/store/private-actions.js +1 -0
- package/src/store/private-selectors.js +15 -5
- package/src/store/reducer.js +112 -19
- package/src/store/selectors.js +6 -8
- package/src/store/test/private-selectors.js +53 -9
- package/src/store/test/reducer.js +172 -166
- package/src/store/test/selectors.js +23 -0
- package/src/utils/block-bindings.js +95 -0
- package/tsconfig.json +2 -5
- package/build/hooks/use-bindings-attributes.js +0 -262
- package/build/hooks/use-bindings-attributes.js.map +0 -1
- package/build-module/hooks/use-bindings-attributes.js +0 -253
- package/build-module/hooks/use-bindings-attributes.js.map +0 -1
- package/src/hooks/use-bindings-attributes.js +0 -322
package/build/store/reducer.js
CHANGED
|
@@ -1777,9 +1777,15 @@ function temporarilyEditingFocusModeRevert(state = '', action) {
|
|
|
1777
1777
|
function blockEditingModes(state = new Map(), action) {
|
|
1778
1778
|
switch (action.type) {
|
|
1779
1779
|
case 'SET_BLOCK_EDITING_MODE':
|
|
1780
|
+
if (state.get(action.clientId) === action.mode) {
|
|
1781
|
+
return state;
|
|
1782
|
+
}
|
|
1780
1783
|
return new Map(state).set(action.clientId, action.mode);
|
|
1781
1784
|
case 'UNSET_BLOCK_EDITING_MODE':
|
|
1782
1785
|
{
|
|
1786
|
+
if (!state.has(action.clientId)) {
|
|
1787
|
+
return state;
|
|
1788
|
+
}
|
|
1783
1789
|
const newState = new Map(state);
|
|
1784
1790
|
newState.delete(action.clientId);
|
|
1785
1791
|
return newState;
|
|
@@ -1991,16 +1997,16 @@ function getBlockTreeBlock(state, clientId) {
|
|
|
1991
1997
|
* The callback receives the current block as its argument.
|
|
1992
1998
|
*/
|
|
1993
1999
|
function traverseBlockTree(state, clientId, callback) {
|
|
1994
|
-
const
|
|
1995
|
-
if (!
|
|
2000
|
+
const tree = getBlockTreeBlock(state, clientId);
|
|
2001
|
+
if (!tree) {
|
|
1996
2002
|
return;
|
|
1997
2003
|
}
|
|
1998
|
-
callback(
|
|
1999
|
-
if (!
|
|
2004
|
+
callback(tree);
|
|
2005
|
+
if (!tree?.innerBlocks?.length) {
|
|
2000
2006
|
return;
|
|
2001
2007
|
}
|
|
2002
|
-
for (const
|
|
2003
|
-
traverseBlockTree(state,
|
|
2008
|
+
for (const innerBlock of tree?.innerBlocks) {
|
|
2009
|
+
traverseBlockTree(state, innerBlock.clientId, callback);
|
|
2004
2010
|
}
|
|
2005
2011
|
}
|
|
2006
2012
|
|
|
@@ -2014,8 +2020,11 @@ function traverseBlockTree(state, clientId, callback) {
|
|
|
2014
2020
|
* @return {string|undefined} The client ID of the parent block if found, undefined otherwise.
|
|
2015
2021
|
*/
|
|
2016
2022
|
function findParentInClientIdsList(state, clientId, clientIds) {
|
|
2023
|
+
if (!clientIds.length) {
|
|
2024
|
+
return;
|
|
2025
|
+
}
|
|
2017
2026
|
let parent = state.blocks.parents.get(clientId);
|
|
2018
|
-
while (parent) {
|
|
2027
|
+
while (parent !== undefined) {
|
|
2019
2028
|
if (clientIds.includes(parent)) {
|
|
2020
2029
|
return parent;
|
|
2021
2030
|
}
|
|
@@ -2052,12 +2061,59 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
|
|
|
2052
2061
|
// so the default block editing mode is set to disabled.
|
|
2053
2062
|
const sectionRootClientId = state.settings?.[_privateKeys.sectionRootClientIdKey];
|
|
2054
2063
|
const sectionClientIds = state.blocks.order.get(sectionRootClientId);
|
|
2055
|
-
const
|
|
2064
|
+
const hasDisabledBlocks = Array.from(state.blockEditingModes).some(([, mode]) => mode === 'disabled');
|
|
2065
|
+
const templatePartClientIds = [];
|
|
2066
|
+
const syncedPatternClientIds = [];
|
|
2067
|
+
Object.keys(state.blocks.controlledInnerBlocks).forEach(clientId => {
|
|
2068
|
+
const block = state.blocks.byClientId?.get(clientId);
|
|
2069
|
+
if (block?.name === 'core/template-part') {
|
|
2070
|
+
templatePartClientIds.push(clientId);
|
|
2071
|
+
}
|
|
2072
|
+
if (block?.name === 'core/block') {
|
|
2073
|
+
syncedPatternClientIds.push(clientId);
|
|
2074
|
+
}
|
|
2075
|
+
});
|
|
2056
2076
|
traverseBlockTree(state, treeClientId, block => {
|
|
2057
2077
|
const {
|
|
2058
2078
|
clientId,
|
|
2059
2079
|
name: blockName
|
|
2060
2080
|
} = block;
|
|
2081
|
+
|
|
2082
|
+
// If the block already has an explicit block editing mode set,
|
|
2083
|
+
// don't override it.
|
|
2084
|
+
if (state.blockEditingModes.has(clientId)) {
|
|
2085
|
+
return;
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
// Disabled explicit block editing modes are inherited by children.
|
|
2089
|
+
// It's an expensive calculation, so only do it if there are disabled blocks.
|
|
2090
|
+
if (hasDisabledBlocks) {
|
|
2091
|
+
// Look through parents to find one with an explicit block editing mode.
|
|
2092
|
+
let ancestorBlockEditingMode;
|
|
2093
|
+
let parent = state.blocks.parents.get(clientId);
|
|
2094
|
+
while (parent !== undefined) {
|
|
2095
|
+
// There's a chance we only just calculated this for the parent,
|
|
2096
|
+
// if so we can return that value for a faster lookup.
|
|
2097
|
+
if (derivedBlockEditingModes.has(parent)) {
|
|
2098
|
+
ancestorBlockEditingMode = derivedBlockEditingModes.get(parent);
|
|
2099
|
+
} else if (state.blockEditingModes.has(parent)) {
|
|
2100
|
+
// Checking the explicit block editing mode will be slower,
|
|
2101
|
+
// as the block editing mode is more likely to be set on a
|
|
2102
|
+
// distant ancestor.
|
|
2103
|
+
ancestorBlockEditingMode = state.blockEditingModes.get(parent);
|
|
2104
|
+
}
|
|
2105
|
+
if (ancestorBlockEditingMode) {
|
|
2106
|
+
break;
|
|
2107
|
+
}
|
|
2108
|
+
parent = state.blocks.parents.get(parent);
|
|
2109
|
+
}
|
|
2110
|
+
|
|
2111
|
+
// If the ancestor block editing mode is disabled, it's inherited by the child.
|
|
2112
|
+
if (ancestorBlockEditingMode === 'disabled') {
|
|
2113
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2114
|
+
return;
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2061
2117
|
if (isZoomedOut || isNavMode) {
|
|
2062
2118
|
// If the root block is the section root set its editing mode to contentOnly.
|
|
2063
2119
|
if (clientId === sectionRootClientId) {
|
|
@@ -2077,11 +2133,30 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
|
|
|
2077
2133
|
|
|
2078
2134
|
// If zoomed out, all blocks that aren't sections or the section root are
|
|
2079
2135
|
// disabled.
|
|
2080
|
-
|
|
2081
|
-
if (isZoomedOut || !findParentInClientIdsList(state, clientId, sectionClientIds)) {
|
|
2136
|
+
if (isZoomedOut) {
|
|
2082
2137
|
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2083
2138
|
return;
|
|
2084
2139
|
}
|
|
2140
|
+
const isInSection = !!findParentInClientIdsList(state, clientId, sectionClientIds);
|
|
2141
|
+
if (!isInSection) {
|
|
2142
|
+
if (clientId === '') {
|
|
2143
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2144
|
+
return;
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
// Allow selection of template parts outside of sections.
|
|
2148
|
+
if (blockName === 'core/template-part') {
|
|
2149
|
+
derivedBlockEditingModes.set(clientId, 'contentOnly');
|
|
2150
|
+
return;
|
|
2151
|
+
}
|
|
2152
|
+
const isInTemplatePart = !!findParentInClientIdsList(state, clientId, templatePartClientIds);
|
|
2153
|
+
// Allow contentOnly blocks in template parts outside of sections
|
|
2154
|
+
// to be editable. Only disable blocks that don't fit this criteria.
|
|
2155
|
+
if (!isInTemplatePart && !isContentBlock(blockName)) {
|
|
2156
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2157
|
+
return;
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2085
2160
|
|
|
2086
2161
|
// Handle synced pattern content so the inner blocks of a synced pattern are
|
|
2087
2162
|
// properly disabled.
|
|
@@ -2275,22 +2350,28 @@ function withDerivedBlockEditingModes(reducer) {
|
|
|
2275
2350
|
}
|
|
2276
2351
|
break;
|
|
2277
2352
|
}
|
|
2353
|
+
case 'SET_BLOCK_EDITING_MODE':
|
|
2354
|
+
case 'UNSET_BLOCK_EDITING_MODE':
|
|
2278
2355
|
case 'SET_HAS_CONTROLLED_INNER_BLOCKS':
|
|
2279
2356
|
{
|
|
2280
|
-
const updatedBlock = nextState
|
|
2281
|
-
|
|
2357
|
+
const updatedBlock = getBlockTreeBlock(nextState, action.clientId);
|
|
2358
|
+
|
|
2359
|
+
// The block might have been removed in which case it'll be
|
|
2360
|
+
// handled by the `REMOVE_BLOCKS` action.
|
|
2282
2361
|
if (!updatedBlock) {
|
|
2283
2362
|
break;
|
|
2284
2363
|
}
|
|
2285
2364
|
const nextDerivedBlockEditingModes = getDerivedBlockEditingModesUpdates({
|
|
2286
2365
|
prevState: state,
|
|
2287
2366
|
nextState,
|
|
2367
|
+
removedClientIds: [action.clientId],
|
|
2288
2368
|
addedBlocks: [updatedBlock],
|
|
2289
2369
|
isNavMode: false
|
|
2290
2370
|
});
|
|
2291
2371
|
const nextDerivedNavModeBlockEditingModes = getDerivedBlockEditingModesUpdates({
|
|
2292
2372
|
prevState: state,
|
|
2293
2373
|
nextState,
|
|
2374
|
+
removedClientIds: [action.clientId],
|
|
2294
2375
|
addedBlocks: [updatedBlock],
|
|
2295
2376
|
isNavMode: true
|
|
2296
2377
|
});
|