@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
|
@@ -12,8 +12,7 @@ import {
|
|
|
12
12
|
createBlock,
|
|
13
13
|
privateApis,
|
|
14
14
|
} from '@wordpress/blocks';
|
|
15
|
-
import { combineReducers
|
|
16
|
-
import { store as preferencesStore } from '@wordpress/preferences';
|
|
15
|
+
import { combineReducers } from '@wordpress/data';
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* Internal dependencies
|
|
@@ -3576,6 +3575,7 @@ describe( 'state', () => {
|
|
|
3576
3575
|
blocks,
|
|
3577
3576
|
settings,
|
|
3578
3577
|
zoomLevel,
|
|
3578
|
+
blockEditingModes,
|
|
3579
3579
|
} )
|
|
3580
3580
|
);
|
|
3581
3581
|
|
|
@@ -3598,15 +3598,6 @@ describe( 'state', () => {
|
|
|
3598
3598
|
describe( 'edit mode', () => {
|
|
3599
3599
|
let initialState;
|
|
3600
3600
|
beforeAll( () => {
|
|
3601
|
-
select.mockImplementation( ( storeName ) => {
|
|
3602
|
-
if ( storeName === preferencesStore ) {
|
|
3603
|
-
return {
|
|
3604
|
-
get: jest.fn( () => 'edit' ),
|
|
3605
|
-
};
|
|
3606
|
-
}
|
|
3607
|
-
return select( storeName );
|
|
3608
|
-
} );
|
|
3609
|
-
|
|
3610
3601
|
initialState = dispatchActions(
|
|
3611
3602
|
[
|
|
3612
3603
|
{
|
|
@@ -3651,10 +3642,6 @@ describe( 'state', () => {
|
|
|
3651
3642
|
);
|
|
3652
3643
|
} );
|
|
3653
3644
|
|
|
3654
|
-
afterAll( () => {
|
|
3655
|
-
select.mockRestore();
|
|
3656
|
-
} );
|
|
3657
|
-
|
|
3658
3645
|
it( 'returns no block editing modes when zoomed out / navigation mode are not active and there are no synced patterns', () => {
|
|
3659
3646
|
expect( initialState.derivedBlockEditingModes ).toEqual(
|
|
3660
3647
|
new Map()
|
|
@@ -3665,15 +3652,6 @@ describe( 'state', () => {
|
|
|
3665
3652
|
describe( 'synced patterns', () => {
|
|
3666
3653
|
let initialState;
|
|
3667
3654
|
beforeAll( () => {
|
|
3668
|
-
select.mockImplementation( ( storeName ) => {
|
|
3669
|
-
if ( storeName === preferencesStore ) {
|
|
3670
|
-
return {
|
|
3671
|
-
get: jest.fn( () => 'edit' ),
|
|
3672
|
-
};
|
|
3673
|
-
}
|
|
3674
|
-
return select( storeName );
|
|
3675
|
-
} );
|
|
3676
|
-
|
|
3677
3655
|
// Simulates how the editor typically inserts controlled blocks,
|
|
3678
3656
|
// - first the pattern is inserted with no inner blocks.
|
|
3679
3657
|
// - next the pattern is marked as a controlled block.
|
|
@@ -3818,10 +3796,6 @@ describe( 'state', () => {
|
|
|
3818
3796
|
);
|
|
3819
3797
|
} );
|
|
3820
3798
|
|
|
3821
|
-
afterAll( () => {
|
|
3822
|
-
select.mockRestore();
|
|
3823
|
-
} );
|
|
3824
|
-
|
|
3825
3799
|
it( 'returns the expected block editing modes for synced patterns', () => {
|
|
3826
3800
|
// Only the parent pattern and its own children that have bindings
|
|
3827
3801
|
// are in contentOnly mode. All other blocks are disabled.
|
|
@@ -3840,60 +3814,8 @@ describe( 'state', () => {
|
|
|
3840
3814
|
);
|
|
3841
3815
|
} );
|
|
3842
3816
|
|
|
3843
|
-
it( '
|
|
3844
|
-
|
|
3845
|
-
[
|
|
3846
|
-
{
|
|
3847
|
-
type: 'REMOVE_BLOCKS',
|
|
3848
|
-
clientIds: [ 'root-pattern' ],
|
|
3849
|
-
},
|
|
3850
|
-
],
|
|
3851
|
-
testReducer,
|
|
3852
|
-
initialState
|
|
3853
|
-
);
|
|
3854
|
-
|
|
3855
|
-
expect( derivedBlockEditingModes ).toEqual( new Map() );
|
|
3856
|
-
} );
|
|
3857
|
-
|
|
3858
|
-
it( 'returns the expected block editing modes for synced patterns when switching to navigation mode', () => {
|
|
3859
|
-
select.mockImplementation( ( storeName ) => {
|
|
3860
|
-
if ( storeName === preferencesStore ) {
|
|
3861
|
-
return {
|
|
3862
|
-
get: jest.fn( () => 'navigation' ),
|
|
3863
|
-
};
|
|
3864
|
-
}
|
|
3865
|
-
return select( storeName );
|
|
3866
|
-
} );
|
|
3867
|
-
|
|
3868
|
-
const {
|
|
3869
|
-
derivedBlockEditingModes,
|
|
3870
|
-
derivedNavModeBlockEditingModes,
|
|
3871
|
-
} = dispatchActions(
|
|
3872
|
-
[
|
|
3873
|
-
{
|
|
3874
|
-
type: 'SET_EDITOR_MODE',
|
|
3875
|
-
mode: 'navigation',
|
|
3876
|
-
},
|
|
3877
|
-
],
|
|
3878
|
-
testReducer,
|
|
3879
|
-
initialState
|
|
3880
|
-
);
|
|
3881
|
-
|
|
3882
|
-
expect( derivedBlockEditingModes ).toEqual(
|
|
3883
|
-
new Map(
|
|
3884
|
-
Object.entries( {
|
|
3885
|
-
'pattern-paragraph': 'disabled',
|
|
3886
|
-
'pattern-group': 'disabled',
|
|
3887
|
-
'pattern-paragraph-with-overrides': 'contentOnly', // Pattern child with bindings.
|
|
3888
|
-
'nested-pattern': 'disabled',
|
|
3889
|
-
'nested-paragraph': 'disabled',
|
|
3890
|
-
'nested-group': 'disabled',
|
|
3891
|
-
'nested-paragraph-with-overrides': 'disabled',
|
|
3892
|
-
} )
|
|
3893
|
-
)
|
|
3894
|
-
);
|
|
3895
|
-
|
|
3896
|
-
expect( derivedNavModeBlockEditingModes ).toEqual(
|
|
3817
|
+
it( 'returns the expected block editing modes for synced patterns in navigation mode', () => {
|
|
3818
|
+
expect( initialState.derivedNavModeBlockEditingModes ).toEqual(
|
|
3897
3819
|
new Map(
|
|
3898
3820
|
Object.entries( {
|
|
3899
3821
|
'': 'contentOnly', // Section root.
|
|
@@ -3912,15 +3834,21 @@ describe( 'state', () => {
|
|
|
3912
3834
|
} )
|
|
3913
3835
|
)
|
|
3914
3836
|
);
|
|
3837
|
+
} );
|
|
3915
3838
|
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3839
|
+
it( 'removes block editing modes when synced patterns are removed', () => {
|
|
3840
|
+
const { derivedBlockEditingModes } = dispatchActions(
|
|
3841
|
+
[
|
|
3842
|
+
{
|
|
3843
|
+
type: 'REMOVE_BLOCKS',
|
|
3844
|
+
clientIds: [ 'root-pattern' ],
|
|
3845
|
+
},
|
|
3846
|
+
],
|
|
3847
|
+
testReducer,
|
|
3848
|
+
initialState
|
|
3849
|
+
);
|
|
3850
|
+
|
|
3851
|
+
expect( derivedBlockEditingModes ).toEqual( new Map() );
|
|
3924
3852
|
} );
|
|
3925
3853
|
|
|
3926
3854
|
it( 'returns the expected block editing modes for synced patterns when switching to zoomed out mode', () => {
|
|
@@ -3961,52 +3889,104 @@ describe( 'state', () => {
|
|
|
3961
3889
|
let initialState;
|
|
3962
3890
|
|
|
3963
3891
|
beforeAll( () => {
|
|
3964
|
-
select.mockImplementation( ( storeName ) => {
|
|
3965
|
-
if ( storeName === preferencesStore ) {
|
|
3966
|
-
return {
|
|
3967
|
-
get: jest.fn( () => 'navigation' ),
|
|
3968
|
-
};
|
|
3969
|
-
}
|
|
3970
|
-
return select( storeName );
|
|
3971
|
-
} );
|
|
3972
|
-
|
|
3973
3892
|
initialState = dispatchActions(
|
|
3974
3893
|
[
|
|
3975
3894
|
{
|
|
3976
3895
|
type: 'UPDATE_SETTINGS',
|
|
3977
3896
|
settings: {
|
|
3978
|
-
[ sectionRootClientIdKey ]: '',
|
|
3897
|
+
[ sectionRootClientIdKey ]: 'section-root',
|
|
3979
3898
|
},
|
|
3980
3899
|
},
|
|
3981
3900
|
{
|
|
3982
3901
|
type: 'RESET_BLOCKS',
|
|
3983
3902
|
blocks: [
|
|
3903
|
+
{
|
|
3904
|
+
name: 'core/template-part',
|
|
3905
|
+
clientId: 'header',
|
|
3906
|
+
attributes: {},
|
|
3907
|
+
innerBlocks: [],
|
|
3908
|
+
},
|
|
3984
3909
|
{
|
|
3985
3910
|
name: 'core/group',
|
|
3986
|
-
clientId: '
|
|
3911
|
+
clientId: 'section-root',
|
|
3987
3912
|
attributes: {},
|
|
3988
3913
|
innerBlocks: [
|
|
3989
|
-
{
|
|
3990
|
-
name: 'core/paragraph',
|
|
3991
|
-
clientId: 'paragraph-1',
|
|
3992
|
-
attributes: {},
|
|
3993
|
-
innerBlocks: [],
|
|
3994
|
-
},
|
|
3995
3914
|
{
|
|
3996
3915
|
name: 'core/group',
|
|
3997
|
-
clientId: 'group-
|
|
3916
|
+
clientId: 'group-1',
|
|
3998
3917
|
attributes: {},
|
|
3999
3918
|
innerBlocks: [
|
|
4000
3919
|
{
|
|
4001
3920
|
name: 'core/paragraph',
|
|
4002
|
-
clientId: 'paragraph-
|
|
3921
|
+
clientId: 'paragraph-1',
|
|
4003
3922
|
attributes: {},
|
|
4004
3923
|
innerBlocks: [],
|
|
4005
3924
|
},
|
|
3925
|
+
{
|
|
3926
|
+
name: 'core/group',
|
|
3927
|
+
clientId: 'group-2',
|
|
3928
|
+
attributes: {},
|
|
3929
|
+
innerBlocks: [
|
|
3930
|
+
{
|
|
3931
|
+
name: 'core/paragraph',
|
|
3932
|
+
clientId:
|
|
3933
|
+
'paragraph-2',
|
|
3934
|
+
attributes: {},
|
|
3935
|
+
innerBlocks: [],
|
|
3936
|
+
},
|
|
3937
|
+
],
|
|
3938
|
+
},
|
|
4006
3939
|
],
|
|
4007
3940
|
},
|
|
4008
3941
|
],
|
|
4009
3942
|
},
|
|
3943
|
+
{
|
|
3944
|
+
name: 'core/template-part',
|
|
3945
|
+
clientId: 'footer',
|
|
3946
|
+
attributes: {},
|
|
3947
|
+
innerBlocks: [],
|
|
3948
|
+
},
|
|
3949
|
+
],
|
|
3950
|
+
},
|
|
3951
|
+
{
|
|
3952
|
+
type: 'SET_HAS_CONTROLLED_INNER_BLOCKS',
|
|
3953
|
+
clientId: 'header',
|
|
3954
|
+
hasControlledInnerBlocks: true,
|
|
3955
|
+
},
|
|
3956
|
+
{
|
|
3957
|
+
type: 'REPLACE_INNER_BLOCKS',
|
|
3958
|
+
rootClientId: 'header',
|
|
3959
|
+
blocks: [
|
|
3960
|
+
{
|
|
3961
|
+
name: 'core/group',
|
|
3962
|
+
clientId: 'header-group',
|
|
3963
|
+
attributes: {},
|
|
3964
|
+
innerBlocks: [
|
|
3965
|
+
{
|
|
3966
|
+
name: 'core/paragraph',
|
|
3967
|
+
clientId: 'header-paragraph',
|
|
3968
|
+
attributes: {},
|
|
3969
|
+
innerBlocks: [],
|
|
3970
|
+
},
|
|
3971
|
+
],
|
|
3972
|
+
},
|
|
3973
|
+
],
|
|
3974
|
+
},
|
|
3975
|
+
{
|
|
3976
|
+
type: 'SET_HAS_CONTROLLED_INNER_BLOCKS',
|
|
3977
|
+
clientId: 'footer',
|
|
3978
|
+
hasControlledInnerBlocks: true,
|
|
3979
|
+
},
|
|
3980
|
+
{
|
|
3981
|
+
type: 'REPLACE_INNER_BLOCKS',
|
|
3982
|
+
rootClientId: 'footer',
|
|
3983
|
+
blocks: [
|
|
3984
|
+
{
|
|
3985
|
+
name: 'core/paragraph',
|
|
3986
|
+
clientId: 'footer-paragraph',
|
|
3987
|
+
attributes: {},
|
|
3988
|
+
innerBlocks: [],
|
|
3989
|
+
},
|
|
4010
3990
|
],
|
|
4011
3991
|
},
|
|
4012
3992
|
],
|
|
@@ -4014,15 +3994,17 @@ describe( 'state', () => {
|
|
|
4014
3994
|
);
|
|
4015
3995
|
} );
|
|
4016
3996
|
|
|
4017
|
-
afterAll( () => {
|
|
4018
|
-
select.mockRestore();
|
|
4019
|
-
} );
|
|
4020
|
-
|
|
4021
3997
|
it( 'returns the expected block editing modes', () => {
|
|
4022
3998
|
expect( initialState.derivedNavModeBlockEditingModes ).toEqual(
|
|
4023
3999
|
new Map(
|
|
4024
4000
|
Object.entries( {
|
|
4025
|
-
'': '
|
|
4001
|
+
'': 'disabled',
|
|
4002
|
+
header: 'contentOnly', // Template part.
|
|
4003
|
+
'header-group': 'disabled', // Content block in template part.
|
|
4004
|
+
'header-paragraph': 'contentOnly', // Content block in template part.
|
|
4005
|
+
footer: 'contentOnly', // Template part.
|
|
4006
|
+
'footer-paragraph': 'contentOnly', // Content block in template part.
|
|
4007
|
+
'section-root': 'contentOnly', // Section root.
|
|
4026
4008
|
'group-1': 'contentOnly', // Section block.
|
|
4027
4009
|
'paragraph-1': 'contentOnly', // Content block in section.
|
|
4028
4010
|
'group-2': 'disabled', // Non-content block in section.
|
|
@@ -4032,6 +4014,49 @@ describe( 'state', () => {
|
|
|
4032
4014
|
);
|
|
4033
4015
|
} );
|
|
4034
4016
|
|
|
4017
|
+
it( 'allows content blocks to be disabled explicitly using the block editing mode', () => {
|
|
4018
|
+
const {
|
|
4019
|
+
derivedNavModeBlockEditingModes,
|
|
4020
|
+
blockEditingModes: _blockEditingModes,
|
|
4021
|
+
} = dispatchActions(
|
|
4022
|
+
[
|
|
4023
|
+
{
|
|
4024
|
+
type: 'SET_BLOCK_EDITING_MODE',
|
|
4025
|
+
clientId: 'paragraph-1',
|
|
4026
|
+
mode: 'disabled',
|
|
4027
|
+
},
|
|
4028
|
+
],
|
|
4029
|
+
testReducer,
|
|
4030
|
+
initialState
|
|
4031
|
+
);
|
|
4032
|
+
|
|
4033
|
+
// Paragraph 1 is explicitly disabled and omitted from the
|
|
4034
|
+
// derived block editing modes.
|
|
4035
|
+
expect( _blockEditingModes ).toEqual(
|
|
4036
|
+
new Map(
|
|
4037
|
+
Object.entries( {
|
|
4038
|
+
'paragraph-1': 'disabled',
|
|
4039
|
+
} )
|
|
4040
|
+
)
|
|
4041
|
+
);
|
|
4042
|
+
expect( derivedNavModeBlockEditingModes ).toEqual(
|
|
4043
|
+
new Map(
|
|
4044
|
+
Object.entries( {
|
|
4045
|
+
'': 'disabled',
|
|
4046
|
+
header: 'contentOnly',
|
|
4047
|
+
'header-group': 'disabled',
|
|
4048
|
+
'header-paragraph': 'contentOnly',
|
|
4049
|
+
footer: 'contentOnly',
|
|
4050
|
+
'footer-paragraph': 'contentOnly',
|
|
4051
|
+
'section-root': 'contentOnly',
|
|
4052
|
+
'group-1': 'contentOnly',
|
|
4053
|
+
'group-2': 'disabled',
|
|
4054
|
+
'paragraph-2': 'contentOnly',
|
|
4055
|
+
} )
|
|
4056
|
+
)
|
|
4057
|
+
);
|
|
4058
|
+
} );
|
|
4059
|
+
|
|
4035
4060
|
it( 'removes block editing modes when blocks are removed', () => {
|
|
4036
4061
|
const { derivedNavModeBlockEditingModes } = dispatchActions(
|
|
4037
4062
|
[
|
|
@@ -4047,7 +4072,13 @@ describe( 'state', () => {
|
|
|
4047
4072
|
expect( derivedNavModeBlockEditingModes ).toEqual(
|
|
4048
4073
|
new Map(
|
|
4049
4074
|
Object.entries( {
|
|
4050
|
-
'': '
|
|
4075
|
+
'': 'disabled',
|
|
4076
|
+
header: 'contentOnly', // Template part.
|
|
4077
|
+
'header-group': 'disabled', // Content block in template part.
|
|
4078
|
+
'header-paragraph': 'contentOnly', // Content block in template part.
|
|
4079
|
+
footer: 'contentOnly', // Template part.
|
|
4080
|
+
'footer-paragraph': 'contentOnly', // Content block in template part.
|
|
4081
|
+
'section-root': 'contentOnly',
|
|
4051
4082
|
'group-1': 'contentOnly',
|
|
4052
4083
|
'paragraph-1': 'contentOnly',
|
|
4053
4084
|
} )
|
|
@@ -4060,7 +4091,7 @@ describe( 'state', () => {
|
|
|
4060
4091
|
[
|
|
4061
4092
|
{
|
|
4062
4093
|
type: 'INSERT_BLOCKS',
|
|
4063
|
-
rootClientId: '',
|
|
4094
|
+
rootClientId: 'section-root',
|
|
4064
4095
|
blocks: [
|
|
4065
4096
|
{
|
|
4066
4097
|
name: 'core/group',
|
|
@@ -4091,7 +4122,13 @@ describe( 'state', () => {
|
|
|
4091
4122
|
expect( derivedNavModeBlockEditingModes ).toEqual(
|
|
4092
4123
|
new Map(
|
|
4093
4124
|
Object.entries( {
|
|
4094
|
-
'': '
|
|
4125
|
+
'': 'disabled', // Section root.
|
|
4126
|
+
header: 'contentOnly', // Template part.
|
|
4127
|
+
'header-group': 'disabled', // Content block in template part.
|
|
4128
|
+
'header-paragraph': 'contentOnly', // Content block in template part.
|
|
4129
|
+
footer: 'contentOnly', // Template part.
|
|
4130
|
+
'footer-paragraph': 'contentOnly', // Content block in template part.
|
|
4131
|
+
'section-root': 'contentOnly', // Section root.
|
|
4095
4132
|
'group-1': 'contentOnly', // Section block.
|
|
4096
4133
|
'paragraph-1': 'contentOnly', // Content block in section.
|
|
4097
4134
|
'group-2': 'disabled', // Non-content block in section.
|
|
@@ -4111,7 +4148,7 @@ describe( 'state', () => {
|
|
|
4111
4148
|
type: 'MOVE_BLOCKS_TO_POSITION',
|
|
4112
4149
|
clientIds: [ 'group-2' ],
|
|
4113
4150
|
fromRootClientId: 'group-1',
|
|
4114
|
-
toRootClientId: '',
|
|
4151
|
+
toRootClientId: 'section-root',
|
|
4115
4152
|
},
|
|
4116
4153
|
],
|
|
4117
4154
|
testReducer,
|
|
@@ -4120,7 +4157,13 @@ describe( 'state', () => {
|
|
|
4120
4157
|
expect( derivedNavModeBlockEditingModes ).toEqual(
|
|
4121
4158
|
new Map(
|
|
4122
4159
|
Object.entries( {
|
|
4123
|
-
'': '
|
|
4160
|
+
'': 'disabled', // Section root.
|
|
4161
|
+
header: 'contentOnly', // Template part.
|
|
4162
|
+
'header-group': 'disabled', // Content block in template part.
|
|
4163
|
+
'header-paragraph': 'contentOnly', // Content block in template part.
|
|
4164
|
+
footer: 'contentOnly', // Template part.
|
|
4165
|
+
'footer-paragraph': 'contentOnly', // Content block in template part.
|
|
4166
|
+
'section-root': 'contentOnly', // Section root.
|
|
4124
4167
|
'group-1': 'contentOnly', // Section block.
|
|
4125
4168
|
'paragraph-1': 'contentOnly', // Content block in section.
|
|
4126
4169
|
'group-2': 'contentOnly', // New section block.
|
|
@@ -4148,10 +4191,16 @@ describe( 'state', () => {
|
|
|
4148
4191
|
new Map(
|
|
4149
4192
|
Object.entries( {
|
|
4150
4193
|
'': 'disabled',
|
|
4151
|
-
|
|
4152
|
-
'
|
|
4153
|
-
'
|
|
4154
|
-
|
|
4194
|
+
header: 'contentOnly', // Template part.
|
|
4195
|
+
'header-group': 'disabled', // Content block in template part.
|
|
4196
|
+
'header-paragraph': 'contentOnly', // Content block in template part.
|
|
4197
|
+
footer: 'contentOnly', // Template part.
|
|
4198
|
+
'footer-paragraph': 'contentOnly', // Content block in template part.
|
|
4199
|
+
'section-root': 'disabled',
|
|
4200
|
+
'group-1': 'contentOnly', // New section root.
|
|
4201
|
+
'paragraph-1': 'contentOnly', // Section and content block
|
|
4202
|
+
'group-2': 'contentOnly', // Section.
|
|
4203
|
+
'paragraph-2': 'contentOnly', // Content block.
|
|
4155
4204
|
} )
|
|
4156
4205
|
)
|
|
4157
4206
|
);
|
|
@@ -4224,49 +4273,6 @@ describe( 'state', () => {
|
|
|
4224
4273
|
);
|
|
4225
4274
|
} );
|
|
4226
4275
|
|
|
4227
|
-
it( 'overrides navigation mode', () => {
|
|
4228
|
-
select.mockImplementation( ( storeName ) => {
|
|
4229
|
-
if ( storeName === preferencesStore ) {
|
|
4230
|
-
return {
|
|
4231
|
-
get: jest.fn( () => 'navigation' ),
|
|
4232
|
-
};
|
|
4233
|
-
}
|
|
4234
|
-
return select( storeName );
|
|
4235
|
-
} );
|
|
4236
|
-
|
|
4237
|
-
const { derivedBlockEditingModes } = dispatchActions(
|
|
4238
|
-
[
|
|
4239
|
-
{
|
|
4240
|
-
type: 'SET_EDITOR_MODE',
|
|
4241
|
-
mode: 'navigation',
|
|
4242
|
-
},
|
|
4243
|
-
],
|
|
4244
|
-
testReducer,
|
|
4245
|
-
initialState
|
|
4246
|
-
);
|
|
4247
|
-
|
|
4248
|
-
expect( derivedBlockEditingModes ).toEqual(
|
|
4249
|
-
new Map(
|
|
4250
|
-
Object.entries( {
|
|
4251
|
-
'': 'contentOnly', // Section root.
|
|
4252
|
-
'group-1': 'contentOnly', // Section block.
|
|
4253
|
-
'paragraph-1': 'disabled',
|
|
4254
|
-
'group-2': 'disabled',
|
|
4255
|
-
'paragraph-2': 'disabled',
|
|
4256
|
-
} )
|
|
4257
|
-
)
|
|
4258
|
-
);
|
|
4259
|
-
|
|
4260
|
-
select.mockImplementation( ( storeName ) => {
|
|
4261
|
-
if ( storeName === preferencesStore ) {
|
|
4262
|
-
return {
|
|
4263
|
-
get: jest.fn( () => 'edit' ),
|
|
4264
|
-
};
|
|
4265
|
-
}
|
|
4266
|
-
return select( storeName );
|
|
4267
|
-
} );
|
|
4268
|
-
} );
|
|
4269
|
-
|
|
4270
4276
|
it( 'removes block editing modes when blocks are removed', () => {
|
|
4271
4277
|
const { derivedBlockEditingModes } = dispatchActions(
|
|
4272
4278
|
[
|
|
@@ -4465,6 +4465,7 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4465
4465
|
'9b9c5c3f-2e46-4f02-9e14-9fe9515b958f': {},
|
|
4466
4466
|
},
|
|
4467
4467
|
blockEditingModes: new Map( [] ),
|
|
4468
|
+
derivedBlockEditingModes: new Map( [] ),
|
|
4468
4469
|
};
|
|
4469
4470
|
|
|
4470
4471
|
const hasContentRoleAttribute = jest.fn( () => false );
|
|
@@ -4519,6 +4520,13 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4519
4520
|
blockEditingModes: new Map( [
|
|
4520
4521
|
[ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337', 'disabled' ],
|
|
4521
4522
|
] ),
|
|
4523
|
+
derivedBlockEditingModes: new Map( [
|
|
4524
|
+
[ 'b26fc763-417d-4f01-b81c-2ec61e14a972', 'disabled' ],
|
|
4525
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f', 'disabled' ],
|
|
4526
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'disabled' ],
|
|
4527
|
+
[ 'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c', 'disabled' ],
|
|
4528
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fed515b958s', 'disabled' ],
|
|
4529
|
+
] ),
|
|
4522
4530
|
};
|
|
4523
4531
|
expect(
|
|
4524
4532
|
getBlockEditingMode( state, 'b3247f75-fd94-4fef-97f9-5bfd162cc416' )
|
|
@@ -4545,6 +4553,12 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4545
4553
|
[ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337', 'default' ],
|
|
4546
4554
|
[ '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f', 'disabled' ],
|
|
4547
4555
|
] ),
|
|
4556
|
+
derivedBlockEditingModes: new Map( [
|
|
4557
|
+
[ '6cf70164-9097-4460-bcbf-200560546988', 'disabled' ],
|
|
4558
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'disabled' ],
|
|
4559
|
+
[ 'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c', 'disabled' ],
|
|
4560
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fed515b958s', 'disabled' ],
|
|
4561
|
+
] ),
|
|
4548
4562
|
};
|
|
4549
4563
|
expect(
|
|
4550
4564
|
getBlockEditingMode( state, 'b3247f75-fd94-4fef-97f9-5bfd162cc416' )
|
|
@@ -4555,6 +4569,15 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4555
4569
|
const state = {
|
|
4556
4570
|
...baseState,
|
|
4557
4571
|
blockEditingModes: new Map( [ [ '', 'disabled' ] ] ),
|
|
4572
|
+
derivedBlockEditingModes: new Map( [
|
|
4573
|
+
[ '6cf70164-9097-4460-bcbf-200560546988', 'disabled' ],
|
|
4574
|
+
[ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337', 'disabled' ],
|
|
4575
|
+
[ 'b26fc763-417d-4f01-b81c-2ec61e14a972', 'disabled' ],
|
|
4576
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f', 'disabled' ],
|
|
4577
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'disabled' ],
|
|
4578
|
+
[ 'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c', 'disabled' ],
|
|
4579
|
+
[ '9b9c5c3f-2e46-4f02-9e14-9fed515b958s', 'disabled' ],
|
|
4580
|
+
] ),
|
|
4558
4581
|
};
|
|
4559
4582
|
expect(
|
|
4560
4583
|
getBlockEditingMode( state, 'b3247f75-fd94-4fef-97f9-5bfd162cc416' )
|
|
@@ -9,10 +9,105 @@ import { useDispatch, useRegistry } from '@wordpress/data';
|
|
|
9
9
|
import { store as blockEditorStore } from '../store';
|
|
10
10
|
import { useBlockEditContext } from '../components/block-edit';
|
|
11
11
|
|
|
12
|
+
const DEFAULT_ATTRIBUTE = '__default';
|
|
13
|
+
const PATTERN_OVERRIDES_SOURCE = 'core/pattern-overrides';
|
|
14
|
+
const BLOCK_BINDINGS_ALLOWED_BLOCKS = {
|
|
15
|
+
'core/paragraph': [ 'content' ],
|
|
16
|
+
'core/heading': [ 'content' ],
|
|
17
|
+
'core/image': [ 'id', 'url', 'title', 'alt' ],
|
|
18
|
+
'core/button': [ 'url', 'text', 'linkTarget', 'rel' ],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Checks if the given object is empty.
|
|
23
|
+
*
|
|
24
|
+
* @param {?Object} object The object to check.
|
|
25
|
+
*
|
|
26
|
+
* @return {boolean} Whether the object is empty.
|
|
27
|
+
*/
|
|
12
28
|
function isObjectEmpty( object ) {
|
|
13
29
|
return ! object || Object.keys( object ).length === 0;
|
|
14
30
|
}
|
|
15
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Based on the given block name, checks if it is possible to bind the block.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} blockName The name of the block.
|
|
36
|
+
*
|
|
37
|
+
* @return {boolean} Whether it is possible to bind the block to sources.
|
|
38
|
+
*/
|
|
39
|
+
export function canBindBlock( blockName ) {
|
|
40
|
+
return blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Based on the given block name and attribute name, checks if it is possible to bind the block attribute.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} blockName The name of the block.
|
|
47
|
+
* @param {string} attributeName The name of attribute.
|
|
48
|
+
*
|
|
49
|
+
* @return {boolean} Whether it is possible to bind the block attribute.
|
|
50
|
+
*/
|
|
51
|
+
export function canBindAttribute( blockName, attributeName ) {
|
|
52
|
+
return (
|
|
53
|
+
canBindBlock( blockName ) &&
|
|
54
|
+
BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ].includes( attributeName )
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Gets the bindable attributes for a given block.
|
|
60
|
+
*
|
|
61
|
+
* @param {string} blockName The name of the block.
|
|
62
|
+
*
|
|
63
|
+
* @return {string[]} The bindable attributes for the block.
|
|
64
|
+
*/
|
|
65
|
+
export function getBindableAttributes( blockName ) {
|
|
66
|
+
return BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Checks if the block has the `__default` binding for pattern overrides.
|
|
71
|
+
*
|
|
72
|
+
* @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.
|
|
73
|
+
*
|
|
74
|
+
* @return {boolean} Whether the block has the `__default` binding for pattern overrides.
|
|
75
|
+
*/
|
|
76
|
+
export function hasPatternOverridesDefaultBinding( bindings ) {
|
|
77
|
+
return bindings?.[ DEFAULT_ATTRIBUTE ]?.source === PATTERN_OVERRIDES_SOURCE;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Returns the bindings with the `__default` binding for pattern overrides
|
|
82
|
+
* replaced with the full-set of supported attributes. e.g.:
|
|
83
|
+
*
|
|
84
|
+
* - bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`
|
|
85
|
+
* - bindings returned: `{ content: { source: 'core/pattern-overrides' } }`
|
|
86
|
+
*
|
|
87
|
+
* @param {string} blockName The block name (e.g. 'core/paragraph').
|
|
88
|
+
* @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.
|
|
89
|
+
*
|
|
90
|
+
* @return {Object} The bindings with default replaced for pattern overrides.
|
|
91
|
+
*/
|
|
92
|
+
export function replacePatternOverridesDefaultBinding( blockName, bindings ) {
|
|
93
|
+
// The `__default` binding currently only works for pattern overrides.
|
|
94
|
+
if ( hasPatternOverridesDefaultBinding( bindings ) ) {
|
|
95
|
+
const supportedAttributes = BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];
|
|
96
|
+
const bindingsWithDefaults = {};
|
|
97
|
+
for ( const attributeName of supportedAttributes ) {
|
|
98
|
+
// If the block has mixed binding sources, retain any non pattern override bindings.
|
|
99
|
+
const bindingSource = bindings[ attributeName ]
|
|
100
|
+
? bindings[ attributeName ]
|
|
101
|
+
: { source: PATTERN_OVERRIDES_SOURCE };
|
|
102
|
+
bindingsWithDefaults[ attributeName ] = bindingSource;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return bindingsWithDefaults;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return bindings;
|
|
109
|
+
}
|
|
110
|
+
|
|
16
111
|
/**
|
|
17
112
|
* Contains utils to update the block `bindings` metadata.
|
|
18
113
|
*
|
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/tsconfig.json",
|
|
3
3
|
"extends": "../../tsconfig.base.json",
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
"rootDir": "src",
|
|
6
|
-
"declarationDir": "build-types"
|
|
7
|
-
},
|
|
8
4
|
"references": [
|
|
9
5
|
{ "path": "../a11y" },
|
|
10
6
|
{ "path": "../api-fetch" },
|
|
@@ -37,5 +33,6 @@
|
|
|
37
33
|
// NOTE: This package is being progressively typed. You are encouraged to
|
|
38
34
|
// expand this array with files which can be type-checked. At some point in
|
|
39
35
|
// the future, this can be simplified to an `includes` of `src/**/*`.
|
|
40
|
-
"files": [ "src/components/block-context/index.js", "src/utils/dom.js" ]
|
|
36
|
+
"files": [ "src/components/block-context/index.js", "src/utils/dom.js" ],
|
|
37
|
+
"include": []
|
|
41
38
|
}
|