@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
|
@@ -1735,9 +1735,15 @@ export function temporarilyEditingFocusModeRevert(state = '', action) {
|
|
|
1735
1735
|
export function blockEditingModes(state = new Map(), action) {
|
|
1736
1736
|
switch (action.type) {
|
|
1737
1737
|
case 'SET_BLOCK_EDITING_MODE':
|
|
1738
|
+
if (state.get(action.clientId) === action.mode) {
|
|
1739
|
+
return state;
|
|
1740
|
+
}
|
|
1738
1741
|
return new Map(state).set(action.clientId, action.mode);
|
|
1739
1742
|
case 'UNSET_BLOCK_EDITING_MODE':
|
|
1740
1743
|
{
|
|
1744
|
+
if (!state.has(action.clientId)) {
|
|
1745
|
+
return state;
|
|
1746
|
+
}
|
|
1741
1747
|
const newState = new Map(state);
|
|
1742
1748
|
newState.delete(action.clientId);
|
|
1743
1749
|
return newState;
|
|
@@ -1949,16 +1955,16 @@ function getBlockTreeBlock(state, clientId) {
|
|
|
1949
1955
|
* The callback receives the current block as its argument.
|
|
1950
1956
|
*/
|
|
1951
1957
|
function traverseBlockTree(state, clientId, callback) {
|
|
1952
|
-
const
|
|
1953
|
-
if (!
|
|
1958
|
+
const tree = getBlockTreeBlock(state, clientId);
|
|
1959
|
+
if (!tree) {
|
|
1954
1960
|
return;
|
|
1955
1961
|
}
|
|
1956
|
-
callback(
|
|
1957
|
-
if (!
|
|
1962
|
+
callback(tree);
|
|
1963
|
+
if (!tree?.innerBlocks?.length) {
|
|
1958
1964
|
return;
|
|
1959
1965
|
}
|
|
1960
|
-
for (const
|
|
1961
|
-
traverseBlockTree(state,
|
|
1966
|
+
for (const innerBlock of tree?.innerBlocks) {
|
|
1967
|
+
traverseBlockTree(state, innerBlock.clientId, callback);
|
|
1962
1968
|
}
|
|
1963
1969
|
}
|
|
1964
1970
|
|
|
@@ -1972,8 +1978,11 @@ function traverseBlockTree(state, clientId, callback) {
|
|
|
1972
1978
|
* @return {string|undefined} The client ID of the parent block if found, undefined otherwise.
|
|
1973
1979
|
*/
|
|
1974
1980
|
function findParentInClientIdsList(state, clientId, clientIds) {
|
|
1981
|
+
if (!clientIds.length) {
|
|
1982
|
+
return;
|
|
1983
|
+
}
|
|
1975
1984
|
let parent = state.blocks.parents.get(clientId);
|
|
1976
|
-
while (parent) {
|
|
1985
|
+
while (parent !== undefined) {
|
|
1977
1986
|
if (clientIds.includes(parent)) {
|
|
1978
1987
|
return parent;
|
|
1979
1988
|
}
|
|
@@ -2010,12 +2019,59 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
|
|
|
2010
2019
|
// so the default block editing mode is set to disabled.
|
|
2011
2020
|
const sectionRootClientId = state.settings?.[sectionRootClientIdKey];
|
|
2012
2021
|
const sectionClientIds = state.blocks.order.get(sectionRootClientId);
|
|
2013
|
-
const
|
|
2022
|
+
const hasDisabledBlocks = Array.from(state.blockEditingModes).some(([, mode]) => mode === 'disabled');
|
|
2023
|
+
const templatePartClientIds = [];
|
|
2024
|
+
const syncedPatternClientIds = [];
|
|
2025
|
+
Object.keys(state.blocks.controlledInnerBlocks).forEach(clientId => {
|
|
2026
|
+
const block = state.blocks.byClientId?.get(clientId);
|
|
2027
|
+
if (block?.name === 'core/template-part') {
|
|
2028
|
+
templatePartClientIds.push(clientId);
|
|
2029
|
+
}
|
|
2030
|
+
if (block?.name === 'core/block') {
|
|
2031
|
+
syncedPatternClientIds.push(clientId);
|
|
2032
|
+
}
|
|
2033
|
+
});
|
|
2014
2034
|
traverseBlockTree(state, treeClientId, block => {
|
|
2015
2035
|
const {
|
|
2016
2036
|
clientId,
|
|
2017
2037
|
name: blockName
|
|
2018
2038
|
} = block;
|
|
2039
|
+
|
|
2040
|
+
// If the block already has an explicit block editing mode set,
|
|
2041
|
+
// don't override it.
|
|
2042
|
+
if (state.blockEditingModes.has(clientId)) {
|
|
2043
|
+
return;
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
// Disabled explicit block editing modes are inherited by children.
|
|
2047
|
+
// It's an expensive calculation, so only do it if there are disabled blocks.
|
|
2048
|
+
if (hasDisabledBlocks) {
|
|
2049
|
+
// Look through parents to find one with an explicit block editing mode.
|
|
2050
|
+
let ancestorBlockEditingMode;
|
|
2051
|
+
let parent = state.blocks.parents.get(clientId);
|
|
2052
|
+
while (parent !== undefined) {
|
|
2053
|
+
// There's a chance we only just calculated this for the parent,
|
|
2054
|
+
// if so we can return that value for a faster lookup.
|
|
2055
|
+
if (derivedBlockEditingModes.has(parent)) {
|
|
2056
|
+
ancestorBlockEditingMode = derivedBlockEditingModes.get(parent);
|
|
2057
|
+
} else if (state.blockEditingModes.has(parent)) {
|
|
2058
|
+
// Checking the explicit block editing mode will be slower,
|
|
2059
|
+
// as the block editing mode is more likely to be set on a
|
|
2060
|
+
// distant ancestor.
|
|
2061
|
+
ancestorBlockEditingMode = state.blockEditingModes.get(parent);
|
|
2062
|
+
}
|
|
2063
|
+
if (ancestorBlockEditingMode) {
|
|
2064
|
+
break;
|
|
2065
|
+
}
|
|
2066
|
+
parent = state.blocks.parents.get(parent);
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
// If the ancestor block editing mode is disabled, it's inherited by the child.
|
|
2070
|
+
if (ancestorBlockEditingMode === 'disabled') {
|
|
2071
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2072
|
+
return;
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2019
2075
|
if (isZoomedOut || isNavMode) {
|
|
2020
2076
|
// If the root block is the section root set its editing mode to contentOnly.
|
|
2021
2077
|
if (clientId === sectionRootClientId) {
|
|
@@ -2035,11 +2091,30 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
|
|
|
2035
2091
|
|
|
2036
2092
|
// If zoomed out, all blocks that aren't sections or the section root are
|
|
2037
2093
|
// disabled.
|
|
2038
|
-
|
|
2039
|
-
if (isZoomedOut || !findParentInClientIdsList(state, clientId, sectionClientIds)) {
|
|
2094
|
+
if (isZoomedOut) {
|
|
2040
2095
|
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2041
2096
|
return;
|
|
2042
2097
|
}
|
|
2098
|
+
const isInSection = !!findParentInClientIdsList(state, clientId, sectionClientIds);
|
|
2099
|
+
if (!isInSection) {
|
|
2100
|
+
if (clientId === '') {
|
|
2101
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2102
|
+
return;
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
// Allow selection of template parts outside of sections.
|
|
2106
|
+
if (blockName === 'core/template-part') {
|
|
2107
|
+
derivedBlockEditingModes.set(clientId, 'contentOnly');
|
|
2108
|
+
return;
|
|
2109
|
+
}
|
|
2110
|
+
const isInTemplatePart = !!findParentInClientIdsList(state, clientId, templatePartClientIds);
|
|
2111
|
+
// Allow contentOnly blocks in template parts outside of sections
|
|
2112
|
+
// to be editable. Only disable blocks that don't fit this criteria.
|
|
2113
|
+
if (!isInTemplatePart && !isContentBlock(blockName)) {
|
|
2114
|
+
derivedBlockEditingModes.set(clientId, 'disabled');
|
|
2115
|
+
return;
|
|
2116
|
+
}
|
|
2117
|
+
}
|
|
2043
2118
|
|
|
2044
2119
|
// Handle synced pattern content so the inner blocks of a synced pattern are
|
|
2045
2120
|
// properly disabled.
|
|
@@ -2233,22 +2308,28 @@ export function withDerivedBlockEditingModes(reducer) {
|
|
|
2233
2308
|
}
|
|
2234
2309
|
break;
|
|
2235
2310
|
}
|
|
2311
|
+
case 'SET_BLOCK_EDITING_MODE':
|
|
2312
|
+
case 'UNSET_BLOCK_EDITING_MODE':
|
|
2236
2313
|
case 'SET_HAS_CONTROLLED_INNER_BLOCKS':
|
|
2237
2314
|
{
|
|
2238
|
-
const updatedBlock = nextState
|
|
2239
|
-
|
|
2315
|
+
const updatedBlock = getBlockTreeBlock(nextState, action.clientId);
|
|
2316
|
+
|
|
2317
|
+
// The block might have been removed in which case it'll be
|
|
2318
|
+
// handled by the `REMOVE_BLOCKS` action.
|
|
2240
2319
|
if (!updatedBlock) {
|
|
2241
2320
|
break;
|
|
2242
2321
|
}
|
|
2243
2322
|
const nextDerivedBlockEditingModes = getDerivedBlockEditingModesUpdates({
|
|
2244
2323
|
prevState: state,
|
|
2245
2324
|
nextState,
|
|
2325
|
+
removedClientIds: [action.clientId],
|
|
2246
2326
|
addedBlocks: [updatedBlock],
|
|
2247
2327
|
isNavMode: false
|
|
2248
2328
|
});
|
|
2249
2329
|
const nextDerivedNavModeBlockEditingModes = getDerivedBlockEditingModesUpdates({
|
|
2250
2330
|
prevState: state,
|
|
2251
2331
|
nextState,
|
|
2332
|
+
removedClientIds: [action.clientId],
|
|
2252
2333
|
addedBlocks: [updatedBlock],
|
|
2253
2334
|
isNavMode: true
|
|
2254
2335
|
});
|