@wordpress/block-editor 12.1.0 → 12.2.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/build/autocompleters/block.js +13 -5
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +6 -3
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-editing-mode/index.js +84 -0
- package/build/components/block-editing-mode/index.js.map +1 -0
- package/build/components/block-list/block-list-block-context.js +15 -0
- package/build/components/block-list/block-list-block-context.js.map +1 -0
- package/build/components/block-list/block.js +29 -37
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +14 -22
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +107 -108
- package/build/components/block-list/index.native.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/use-in-between-inserter.js +7 -5
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js +15 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-styles/preview-panel.js +1 -2
- package/build/components/block-styles/preview-panel.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js +8 -0
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/block-variation-transformations.js +125 -0
- package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
- package/build/components/block-switcher/index.js +34 -12
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +9 -7
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +5 -3
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +11 -5
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +7 -2
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.native.js +87 -3
- package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +3 -2
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/iframe/index.js +14 -7
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +7 -7
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/index.js +3 -7
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -4
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-results.js +19 -6
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/list-view/appender.js +6 -1
- package/build/components/list-view/appender.js.map +1 -1
- package/build/components/list-view/block-contents.js +4 -2
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block.js +21 -25
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +1 -3
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +14 -7
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +27 -3
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +0 -2
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/url-input/index.js +3 -0
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +25 -15
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +8 -1
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +13 -7
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/hooks/align.js +3 -7
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/behaviors.js +115 -0
- package/build/hooks/behaviors.js.map +1 -0
- package/build/hooks/dimensions.js +0 -30
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +4 -8
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +8 -9
- package/build/hooks/layout.js.map +1 -1
- package/build/private-apis.js +4 -7
- package/build/private-apis.js.map +1 -1
- package/build/store/private-actions.js +46 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +88 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +36 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +28 -18
- package/build/store/selectors.js.map +1 -1
- package/build/utils/order-inserter-block-items.js +41 -0
- package/build/utils/order-inserter-block-items.js.map +1 -0
- package/build-module/autocompleters/block.js +12 -5
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +5 -3
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-editing-mode/index.js +72 -0
- package/build-module/components/block-editing-mode/index.js.map +1 -0
- package/build-module/components/block-list/block-list-block-context.js +6 -0
- package/build-module/components/block-list/block-list-block-context.js.map +1 -0
- package/build-module/components/block-list/block.js +26 -34
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +14 -22
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +108 -110
- package/build-module/components/block-list/index.native.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/use-in-between-inserter.js +6 -5
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +15 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-styles/preview-panel.js +1 -2
- package/build-module/components/block-styles/preview-panel.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
- package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
- package/build-module/components/block-switcher/index.js +33 -12
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +8 -7
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +4 -3
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +11 -5
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +7 -2
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
- package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +3 -2
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/iframe/index.js +15 -8
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +7 -6
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -7
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -4
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-results.js +16 -6
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/list-view/appender.js +6 -2
- package/build-module/components/list-view/appender.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +4 -2
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block.js +20 -25
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +1 -3
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +15 -8
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +0 -2
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/url-input/index.js +3 -0
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +25 -16
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +8 -1
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/hooks/align.js +3 -6
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/behaviors.js +97 -0
- package/build-module/hooks/behaviors.js.map +1 -0
- package/build-module/hooks/dimensions.js +0 -28
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +3 -6
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +7 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/private-apis.js +3 -5
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/private-actions.js +42 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +79 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +34 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +26 -17
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/order-inserter-block-items.js +32 -0
- package/build-module/utils/order-inserter-block-items.js.map +1 -0
- package/build-style/content-rtl.css +32 -13
- package/build-style/content.css +32 -13
- package/build-style/default-editor-styles-rtl.css +1 -1
- package/build-style/default-editor-styles.css +1 -1
- package/build-style/style-rtl.css +19 -64
- package/build-style/style.css +20 -64
- package/package.json +32 -31
- package/src/autocompleters/block.js +15 -7
- package/src/components/block-breadcrumb/index.js +11 -3
- package/src/components/block-editing-mode/index.js +71 -0
- package/src/components/block-list/block-list-block-context.js +6 -0
- package/src/components/block-list/block.js +38 -56
- package/src/components/block-list/block.native.js +30 -41
- package/src/components/block-list/content.scss +5 -5
- package/src/components/block-list/index.native.js +164 -153
- package/src/components/block-list/test/index.native.js +2 -2
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/use-in-between-inserter.js +7 -3
- package/src/components/block-list-appender/index.js +22 -4
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +23 -0
- package/src/components/block-mover/style.scss +1 -0
- package/src/components/block-styles/preview-panel.js +1 -3
- package/src/components/block-switcher/block-transformations-menu.js +12 -0
- package/src/components/block-switcher/block-variation-transformations.js +115 -0
- package/src/components/block-switcher/index.js +38 -5
- package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
- package/src/components/block-switcher/style.scss +6 -5
- package/src/components/block-toolbar/index.js +10 -11
- package/src/components/block-tools/block-contextual-toolbar.js +4 -5
- package/src/components/block-tools/insertion-point.js +23 -9
- package/src/components/button-block-appender/content.scss +22 -0
- package/src/components/convert-to-group-buttons/index.js +9 -2
- package/src/components/convert-to-group-buttons/index.native.js +79 -1
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
- package/src/components/global-styles/dimensions-panel.js +3 -2
- package/src/components/global-styles/style.scss +3 -0
- package/src/components/iframe/index.js +22 -12
- package/src/components/inner-blocks/README.md +5 -0
- package/src/components/inner-blocks/index.js +2 -0
- package/src/components/inner-blocks/index.native.js +16 -6
- package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
- package/src/components/inserter/index.js +1 -9
- package/src/components/inserter/quick-inserter.js +0 -2
- package/src/components/inserter/search-results.js +32 -6
- package/src/components/list-view/appender.js +3 -2
- package/src/components/list-view/block-contents.js +8 -2
- package/src/components/list-view/block.js +29 -35
- package/src/components/list-view/branch.js +1 -7
- package/src/components/list-view/index.js +17 -4
- package/src/components/list-view/style.scss +2 -5
- package/src/components/list-view/use-list-view-client-ids.js +21 -4
- package/src/components/publish-date-time-picker/index.js +0 -2
- package/src/components/url-input/README.md +6 -0
- package/src/components/url-input/index.js +1 -0
- package/src/components/use-block-drop-zone/index.js +31 -17
- package/src/components/use-resize-canvas/index.js +9 -1
- package/src/components/writing-flow/test/index.js +15 -0
- package/src/components/writing-flow/use-arrow-nav.js +17 -4
- package/src/hooks/align.js +3 -11
- package/src/hooks/behaviors.js +104 -0
- package/src/hooks/dimensions.js +0 -40
- package/src/hooks/duotone.js +3 -11
- package/src/hooks/index.js +1 -0
- package/src/hooks/layout.js +10 -18
- package/src/private-apis.js +2 -4
- package/src/store/private-actions.js +39 -0
- package/src/store/private-selectors.js +95 -0
- package/src/store/reducer.js +27 -0
- package/src/store/selectors.js +25 -15
- package/src/store/test/private-actions.js +32 -1
- package/src/store/test/private-selectors.js +158 -0
- package/src/store/test/reducer.js +48 -0
- package/src/style.scss +0 -3
- package/src/utils/order-inserter-block-items.js +26 -0
- package/build/components/block-list/block-list-compact.native.js +0 -75
- package/build/components/block-list/block-list-compact.native.js.map +0 -1
- package/build/components/off-canvas-editor/appender.js +0 -125
- package/build/components/off-canvas-editor/appender.js.map +0 -1
- package/build/components/off-canvas-editor/block-contents.js +0 -141
- package/build/components/off-canvas-editor/block-contents.js.map +0 -1
- package/build/components/off-canvas-editor/block-select-button.js +0 -126
- package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
- package/build/components/off-canvas-editor/block.js +0 -297
- package/build/components/off-canvas-editor/block.js.map +0 -1
- package/build/components/off-canvas-editor/branch.js +0 -197
- package/build/components/off-canvas-editor/branch.js.map +0 -1
- package/build/components/off-canvas-editor/context.js +0 -19
- package/build/components/off-canvas-editor/context.js.map +0 -1
- package/build/components/off-canvas-editor/drop-indicator.js +0 -118
- package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
- package/build/components/off-canvas-editor/expander.js +0 -41
- package/build/components/off-canvas-editor/expander.js.map +0 -1
- package/build/components/off-canvas-editor/index.js +0 -236
- package/build/components/off-canvas-editor/index.js.map +0 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +0 -148
- package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
- package/build/components/off-canvas-editor/leaf.js +0 -60
- package/build/components/off-canvas-editor/leaf.js.map +0 -1
- package/build/components/off-canvas-editor/link-ui.js +0 -186
- package/build/components/off-canvas-editor/link-ui.js.map +0 -1
- package/build/components/off-canvas-editor/update-attributes.js +0 -108
- package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
- package/build/components/off-canvas-editor/use-block-selection.js +0 -139
- package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
- package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
- package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
- package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
- package/build/components/off-canvas-editor/utils.js +0 -60
- package/build/components/off-canvas-editor/utils.js.map +0 -1
- package/build-module/components/block-list/block-list-compact.native.js +0 -60
- package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
- package/build-module/components/off-canvas-editor/appender.js +0 -108
- package/build-module/components/off-canvas-editor/appender.js.map +0 -1
- package/build-module/components/off-canvas-editor/block-contents.js +0 -121
- package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
- package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
- package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
- package/build-module/components/off-canvas-editor/block.js +0 -273
- package/build-module/components/off-canvas-editor/block.js.map +0 -1
- package/build-module/components/off-canvas-editor/branch.js +0 -179
- package/build-module/components/off-canvas-editor/branch.js.map +0 -1
- package/build-module/components/off-canvas-editor/context.js +0 -7
- package/build-module/components/off-canvas-editor/context.js.map +0 -1
- package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
- package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
- package/build-module/components/off-canvas-editor/expander.js +0 -32
- package/build-module/components/off-canvas-editor/expander.js.map +0 -1
- package/build-module/components/off-canvas-editor/index.js +0 -213
- package/build-module/components/off-canvas-editor/index.js.map +0 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -130
- package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
- package/build-module/components/off-canvas-editor/leaf.js +0 -45
- package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
- package/build-module/components/off-canvas-editor/link-ui.js +0 -166
- package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
- package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
- package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
- package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
- package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
- package/build-module/components/off-canvas-editor/utils.js +0 -44
- package/build-module/components/off-canvas-editor/utils.js.map +0 -1
- package/src/components/block-list/block-list-compact.native.js +0 -63
- package/src/components/off-canvas-editor/README.md +0 -5
- package/src/components/off-canvas-editor/appender.js +0 -124
- package/src/components/off-canvas-editor/block-contents.js +0 -156
- package/src/components/off-canvas-editor/block-select-button.js +0 -128
- package/src/components/off-canvas-editor/block.js +0 -347
- package/src/components/off-canvas-editor/branch.js +0 -238
- package/src/components/off-canvas-editor/context.js +0 -8
- package/src/components/off-canvas-editor/drop-indicator.js +0 -126
- package/src/components/off-canvas-editor/expander.js +0 -26
- package/src/components/off-canvas-editor/index.js +0 -271
- package/src/components/off-canvas-editor/leaf-more-menu.js +0 -158
- package/src/components/off-canvas-editor/leaf.js +0 -52
- package/src/components/off-canvas-editor/link-ui.js +0 -167
- package/src/components/off-canvas-editor/style.scss +0 -34
- package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
- package/src/components/off-canvas-editor/test/utils.js +0 -50
- package/src/components/off-canvas-editor/update-attributes.js +0 -99
- package/src/components/off-canvas-editor/use-block-selection.js +0 -169
- package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
- package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
- package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
- package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
- package/src/components/off-canvas-editor/utils.js +0 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview-panel.js"],"names":["getBlockType","useMemo","InserterPreviewPanel","replaceActiveStyle","BlockStylesPreviewPanel","genericPreviewBlock","style","className","activeStyle","example","name","styleClassName","previewBlocks","title","label","description","initialAttributes","attributes"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,YAAT,QAA6B,mBAA7B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,oBAAP,MAAiC,2BAAjC;AACA,SAASC,kBAAT,QAAmC,SAAnC;AAEA,eAAe,SAASC,uBAAT,OAKX;AAAA;;AAAA,MAL6C;AAChDC,IAAAA,mBADgD;AAEhDC,IAAAA,KAFgD;AAGhDC,IAAAA,SAHgD;AAIhDC,IAAAA;AAJgD,GAK7C;AACH,QAAMC,OAAO,oBAAGT,YAAY,CAAEK,mBAAmB,CAACK,IAAtB,CAAf,kDAAG,cAA0CD,OAA1D;AACA,QAAME,cAAc,GAAGR,kBAAkB,CAAEI,SAAF,EAAaC,WAAb,EAA0BF,KAA1B,CAAzC;AACA,QAAMM,aAAa,GAAGX,OAAO,CAAE,MAAM;AACpC,WAAO,EACN,GAAGI,mBADG;AAENQ,MAAAA,KAAK,EAAEP,KAAK,CAACQ,KAAN,IAAeR,KAAK,CAACI,IAFtB;AAGNK,MAAAA,WAAW,EAAET,KAAK,CAACS,WAHb;AAINC,MAAAA,iBAAiB,EAAE,EAClB,GAAGX,mBAAmB,CAACY,UADL;AAElBV,QAAAA,SAAS,EACRI,cAAc,GACd;AAJiB,OAJb;AAUNF,MAAAA;AAVM,KAAP;AAYA,GAb4B,EAa1B,CAAEJ,mBAAF,EAAuBM,cAAvB,CAb0B,CAA7B;AAeA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-styles/preview-panel.js"],"names":["getBlockType","useMemo","InserterPreviewPanel","replaceActiveStyle","BlockStylesPreviewPanel","genericPreviewBlock","style","className","activeStyle","example","name","styleClassName","previewBlocks","title","label","description","initialAttributes","attributes"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,YAAT,QAA6B,mBAA7B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,oBAAP,MAAiC,2BAAjC;AACA,SAASC,kBAAT,QAAmC,SAAnC;AAEA,eAAe,SAASC,uBAAT,OAKX;AAAA;;AAAA,MAL6C;AAChDC,IAAAA,mBADgD;AAEhDC,IAAAA,KAFgD;AAGhDC,IAAAA,SAHgD;AAIhDC,IAAAA;AAJgD,GAK7C;AACH,QAAMC,OAAO,oBAAGT,YAAY,CAAEK,mBAAmB,CAACK,IAAtB,CAAf,kDAAG,cAA0CD,OAA1D;AACA,QAAME,cAAc,GAAGR,kBAAkB,CAAEI,SAAF,EAAaC,WAAb,EAA0BF,KAA1B,CAAzC;AACA,QAAMM,aAAa,GAAGX,OAAO,CAAE,MAAM;AACpC,WAAO,EACN,GAAGI,mBADG;AAENQ,MAAAA,KAAK,EAAEP,KAAK,CAACQ,KAAN,IAAeR,KAAK,CAACI,IAFtB;AAGNK,MAAAA,WAAW,EAAET,KAAK,CAACS,WAHb;AAINC,MAAAA,iBAAiB,EAAE,EAClB,GAAGX,mBAAmB,CAACY,UADL;AAElBV,QAAAA,SAAS,EACRI,cAAc,GACd;AAJiB,OAJb;AAUNF,MAAAA;AAVM,KAAP;AAYA,GAb4B,EAa1B,CAAEJ,mBAAF,EAAuBM,cAAvB,CAb0B,CAA7B;AAeA,SAAO,cAAC,oBAAD;AAAsB,IAAA,IAAI,EAAGC;AAA7B,IAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InserterPreviewPanel from '../inserter/preview-panel';\nimport { replaceActiveStyle } from './utils';\n\nexport default function BlockStylesPreviewPanel( {\n\tgenericPreviewBlock,\n\tstyle,\n\tclassName,\n\tactiveStyle,\n} ) {\n\tconst example = getBlockType( genericPreviewBlock.name )?.example;\n\tconst styleClassName = replaceActiveStyle( className, activeStyle, style );\n\tconst previewBlocks = useMemo( () => {\n\t\treturn {\n\t\t\t...genericPreviewBlock,\n\t\t\ttitle: style.label || style.name,\n\t\t\tdescription: style.description,\n\t\t\tinitialAttributes: {\n\t\t\t\t...genericPreviewBlock.attributes,\n\t\t\t\tclassName:\n\t\t\t\t\tstyleClassName +\n\t\t\t\t\t' block-editor-block-styles__block-preview-container',\n\t\t\t},\n\t\t\texample,\n\t\t};\n\t}, [ genericPreviewBlock, styleClassName ] );\n\n\treturn <InserterPreviewPanel item={ previewBlocks } />;\n}\n"]}
|
|
@@ -13,6 +13,7 @@ import { useState, useMemo } from '@wordpress/element';
|
|
|
13
13
|
|
|
14
14
|
import BlockIcon from '../block-icon';
|
|
15
15
|
import PreviewBlockPopover from './preview-block-popover';
|
|
16
|
+
import BlockVariationTransformations from './block-variation-transformations';
|
|
16
17
|
/**
|
|
17
18
|
* Helper hook to group transformations to display them in a specific order in the UI.
|
|
18
19
|
* For now we group only priority content driven transformations(ex. paragraph -> heading).
|
|
@@ -67,7 +68,9 @@ const BlockTransformationsMenu = _ref3 => {
|
|
|
67
68
|
let {
|
|
68
69
|
className,
|
|
69
70
|
possibleBlockTransformations,
|
|
71
|
+
possibleBlockVariationTransformations,
|
|
70
72
|
onSelect,
|
|
73
|
+
onSelectVariation,
|
|
71
74
|
blocks
|
|
72
75
|
} = _ref3;
|
|
73
76
|
const [hoveredTransformItemName, setHoveredTransformItemName] = useState();
|
|
@@ -88,6 +91,10 @@ const BlockTransformationsMenu = _ref3 => {
|
|
|
88
91
|
className: className
|
|
89
92
|
}, hoveredTransformItemName && createElement(PreviewBlockPopover, {
|
|
90
93
|
blocks: switchToBlockType(blocks, hoveredTransformItemName)
|
|
94
|
+
}), !!(possibleBlockVariationTransformations !== null && possibleBlockVariationTransformations !== void 0 && possibleBlockVariationTransformations.length) && createElement(BlockVariationTransformations, {
|
|
95
|
+
transformations: possibleBlockVariationTransformations,
|
|
96
|
+
blocks: blocks,
|
|
97
|
+
onSelect: onSelectVariation
|
|
91
98
|
}), priorityTextTransformations.map(item => createElement(BlockTranformationItem, {
|
|
92
99
|
key: item.name,
|
|
93
100
|
item: item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"names":["__","MenuGroup","MenuItem","getBlockMenuDefaultClassName","switchToBlockType","useState","useMemo","BlockIcon","PreviewBlockPopover","useGroupedTransforms","possibleBlockTransformations","priorityContentTranformationBlocks","transformations","priorityTextTranformsNames","Object","keys","reduce","accumulator","item","name","includes","priorityTextTransformations","push","restTransformations","sort","currentName","nextName","BlockTransformationsMenu","className","onSelect","blocks","hoveredTransformItemName","setHoveredTransformItemName","hasBothContentTransformations","length","restTransformItems","map","RestTransformationItems","BlockTranformationItem","icon","title","isDisabled","event","preventDefault"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,QAApB,QAAoC,uBAApC;AACA,SACCC,4BADD,EAECC,iBAFD,QAGO,mBAHP;AAIA,SAASC,QAAT,EAAmBC,OAAnB,QAAkC,oBAAlC;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,mBAAP,MAAgC,yBAAhC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,oBAAT,CAA+BC,4BAA/B,EAA8D;AAC7D,QAAMC,kCAAkC,GAAG;AAC1C,sBAAkB,CADwB;AAE1C,oBAAgB,CAF0B;AAG1C,iBAAa,CAH6B;AAI1C,kBAAc;AAJ4B,GAA3C;AAMA,QAAMC,eAAe,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-transformations-menu.js"],"names":["__","MenuGroup","MenuItem","getBlockMenuDefaultClassName","switchToBlockType","useState","useMemo","BlockIcon","PreviewBlockPopover","BlockVariationTransformations","useGroupedTransforms","possibleBlockTransformations","priorityContentTranformationBlocks","transformations","priorityTextTranformsNames","Object","keys","reduce","accumulator","item","name","includes","priorityTextTransformations","push","restTransformations","sort","currentName","nextName","BlockTransformationsMenu","className","possibleBlockVariationTransformations","onSelect","onSelectVariation","blocks","hoveredTransformItemName","setHoveredTransformItemName","hasBothContentTransformations","length","restTransformItems","map","RestTransformationItems","BlockTranformationItem","icon","title","isDisabled","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup, MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\nimport BlockVariationTransformations from './block-variation-transformations';\n\n/**\n * Helper hook to group transformations to display them in a specific order in the UI.\n * For now we group only priority content driven transformations(ex. paragraph -> heading).\n *\n * Later on we could also group 'layout' transformations(ex. paragraph -> group) and\n * display them in different sections.\n *\n * @param {Object[]} possibleBlockTransformations The available block transformations.\n * @return {Record<string, Object[]>} The grouped block transformations.\n */\nfunction useGroupedTransforms( possibleBlockTransformations ) {\n\tconst priorityContentTranformationBlocks = {\n\t\t'core/paragraph': 1,\n\t\t'core/heading': 2,\n\t\t'core/list': 3,\n\t\t'core/quote': 4,\n\t};\n\tconst transformations = useMemo( () => {\n\t\tconst priorityTextTranformsNames = Object.keys(\n\t\t\tpriorityContentTranformationBlocks\n\t\t);\n\t\treturn possibleBlockTransformations.reduce(\n\t\t\t( accumulator, item ) => {\n\t\t\t\tconst { name } = item;\n\t\t\t\tif ( priorityTextTranformsNames.includes( name ) ) {\n\t\t\t\t\taccumulator.priorityTextTransformations.push( item );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.restTransformations.push( item );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ priorityTextTransformations: [], restTransformations: [] }\n\t\t);\n\t}, [ possibleBlockTransformations ] );\n\n\t// Order the priority text transformations.\n\ttransformations.priorityTextTransformations.sort(\n\t\t( { name: currentName }, { name: nextName } ) => {\n\t\t\treturn priorityContentTranformationBlocks[ currentName ] <\n\t\t\t\tpriorityContentTranformationBlocks[ nextName ]\n\t\t\t\t? -1\n\t\t\t\t: 1;\n\t\t}\n\t);\n\treturn transformations;\n}\n\nconst BlockTransformationsMenu = ( {\n\tclassName,\n\tpossibleBlockTransformations,\n\tpossibleBlockVariationTransformations,\n\tonSelect,\n\tonSelectVariation,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\n\tconst { priorityTextTransformations, restTransformations } =\n\t\tuseGroupedTransforms( possibleBlockTransformations );\n\t// We have to check if both content transformations(priority and rest) are set\n\t// in order to create a separate MenuGroup for them.\n\tconst hasBothContentTransformations =\n\t\tpriorityTextTransformations.length && restTransformations.length;\n\tconst restTransformItems = !! restTransformations.length && (\n\t\t<RestTransformationItems\n\t\t\trestTransformations={ restTransformations }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup label={ __( 'Transform to' ) } className={ className }>\n\t\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\t\tblocks={ switchToBlockType(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\thoveredTransformItemName\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! possibleBlockVariationTransformations?.length && (\n\t\t\t\t\t<BlockVariationTransformations\n\t\t\t\t\t\ttransformations={\n\t\t\t\t\t\t\tpossibleBlockVariationTransformations\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ priorityTextTransformations.map( ( item ) => (\n\t\t\t\t\t<BlockTranformationItem\n\t\t\t\t\t\tkey={ item.name }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsetHoveredTransformItemName={\n\t\t\t\t\t\t\tsetHoveredTransformItemName\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t{ ! hasBothContentTransformations && restTransformItems }\n\t\t\t</MenuGroup>\n\t\t\t{ !! hasBothContentTransformations && (\n\t\t\t\t<MenuGroup className={ className }>\n\t\t\t\t\t{ restTransformItems }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction RestTransformationItems( {\n\trestTransformations,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\treturn restTransformations.map( ( item ) => (\n\t\t<BlockTranformationItem\n\t\t\tkey={ item.name }\n\t\t\titem={ item }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t) );\n}\n\nfunction BlockTranformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title, isDisabled } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockTransformationsMenu;\n"]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { createElement, Fragment } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { MenuItem } from '@wordpress/components';
|
|
7
|
+
import { getBlockMenuDefaultClassName, cloneBlock, store as blocksStore } from '@wordpress/blocks';
|
|
8
|
+
import { useSelect } from '@wordpress/data';
|
|
9
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { store as blockEditorStore } from '../../store';
|
|
15
|
+
import BlockIcon from '../block-icon';
|
|
16
|
+
import PreviewBlockPopover from './preview-block-popover';
|
|
17
|
+
const EMPTY_OBJECT = {};
|
|
18
|
+
export function useBlockVariationTransforms(_ref) {
|
|
19
|
+
let {
|
|
20
|
+
clientIds,
|
|
21
|
+
blocks
|
|
22
|
+
} = _ref;
|
|
23
|
+
const {
|
|
24
|
+
activeBlockVariation,
|
|
25
|
+
blockVariationTransformations
|
|
26
|
+
} = useSelect(select => {
|
|
27
|
+
const {
|
|
28
|
+
getBlockRootClientId,
|
|
29
|
+
getBlockAttributes,
|
|
30
|
+
canRemoveBlocks
|
|
31
|
+
} = select(blockEditorStore);
|
|
32
|
+
const {
|
|
33
|
+
getActiveBlockVariation,
|
|
34
|
+
getBlockVariations
|
|
35
|
+
} = select(blocksStore);
|
|
36
|
+
const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
|
|
37
|
+
const canRemove = canRemoveBlocks(clientIds, rootClientId); // Only handle single selected blocks for now.
|
|
38
|
+
|
|
39
|
+
if (blocks.length !== 1 || !canRemove) {
|
|
40
|
+
return EMPTY_OBJECT;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const [firstBlock] = blocks;
|
|
44
|
+
return {
|
|
45
|
+
blockVariationTransformations: getBlockVariations(firstBlock.name, 'transform'),
|
|
46
|
+
activeBlockVariation: getActiveBlockVariation(firstBlock.name, getBlockAttributes(firstBlock.clientId))
|
|
47
|
+
};
|
|
48
|
+
}, [clientIds, blocks]);
|
|
49
|
+
const transformations = useMemo(() => {
|
|
50
|
+
return blockVariationTransformations === null || blockVariationTransformations === void 0 ? void 0 : blockVariationTransformations.filter(_ref2 => {
|
|
51
|
+
let {
|
|
52
|
+
name
|
|
53
|
+
} = _ref2;
|
|
54
|
+
return name !== (activeBlockVariation === null || activeBlockVariation === void 0 ? void 0 : activeBlockVariation.name);
|
|
55
|
+
});
|
|
56
|
+
}, [blockVariationTransformations, activeBlockVariation]);
|
|
57
|
+
return transformations;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const BlockVariationTransformations = _ref3 => {
|
|
61
|
+
let {
|
|
62
|
+
transformations,
|
|
63
|
+
onSelect,
|
|
64
|
+
blocks
|
|
65
|
+
} = _ref3;
|
|
66
|
+
const [hoveredTransformItemName, setHoveredTransformItemName] = useState();
|
|
67
|
+
return createElement(Fragment, null, hoveredTransformItemName && createElement(PreviewBlockPopover, {
|
|
68
|
+
blocks: cloneBlock(blocks[0], transformations.find(_ref4 => {
|
|
69
|
+
let {
|
|
70
|
+
name
|
|
71
|
+
} = _ref4;
|
|
72
|
+
return name === hoveredTransformItemName;
|
|
73
|
+
}).attributes)
|
|
74
|
+
}), transformations === null || transformations === void 0 ? void 0 : transformations.map(item => createElement(BlockVariationTranformationItem, {
|
|
75
|
+
key: item.name,
|
|
76
|
+
item: item,
|
|
77
|
+
onSelect: onSelect,
|
|
78
|
+
setHoveredTransformItemName: setHoveredTransformItemName
|
|
79
|
+
})));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
function BlockVariationTranformationItem(_ref5) {
|
|
83
|
+
let {
|
|
84
|
+
item,
|
|
85
|
+
onSelect,
|
|
86
|
+
setHoveredTransformItemName
|
|
87
|
+
} = _ref5;
|
|
88
|
+
const {
|
|
89
|
+
name,
|
|
90
|
+
icon,
|
|
91
|
+
title
|
|
92
|
+
} = item;
|
|
93
|
+
return createElement(MenuItem, {
|
|
94
|
+
className: getBlockMenuDefaultClassName(name),
|
|
95
|
+
onClick: event => {
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
onSelect(name);
|
|
98
|
+
},
|
|
99
|
+
onMouseLeave: () => setHoveredTransformItemName(null),
|
|
100
|
+
onMouseEnter: () => setHoveredTransformItemName(name)
|
|
101
|
+
}, createElement(BlockIcon, {
|
|
102
|
+
icon: icon,
|
|
103
|
+
showColors: true
|
|
104
|
+
}), title);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export default BlockVariationTransformations;
|
|
108
|
+
//# sourceMappingURL=block-variation-transformations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/block-variation-transformations.js"],"names":["MenuItem","getBlockMenuDefaultClassName","cloneBlock","store","blocksStore","useSelect","useState","useMemo","blockEditorStore","BlockIcon","PreviewBlockPopover","EMPTY_OBJECT","useBlockVariationTransforms","clientIds","blocks","activeBlockVariation","blockVariationTransformations","select","getBlockRootClientId","getBlockAttributes","canRemoveBlocks","getActiveBlockVariation","getBlockVariations","rootClientId","Array","isArray","canRemove","length","firstBlock","name","clientId","transformations","filter","BlockVariationTransformations","onSelect","hoveredTransformItemName","setHoveredTransformItemName","find","attributes","map","item","BlockVariationTranformationItem","icon","title","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tcloneBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\nconst EMPTY_OBJECT = {};\n\nexport function useBlockVariationTransforms( { clientIds, blocks } ) {\n\tconst { activeBlockVariation, blockVariationTransformations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\t\t\t// Only handle single selected blocks for now.\n\t\t\tif ( blocks.length !== 1 || ! canRemove ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst [ firstBlock ] = blocks;\n\t\t\treturn {\n\t\t\t\tblockVariationTransformations: getBlockVariations(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\tgetBlockAttributes( firstBlock.clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\tconst transformations = useMemo( () => {\n\t\treturn blockVariationTransformations?.filter(\n\t\t\t( { name } ) => name !== activeBlockVariation?.name\n\t\t);\n\t}, [ blockVariationTransformations, activeBlockVariation ] );\n\treturn transformations;\n}\n\nconst BlockVariationTransformations = ( {\n\ttransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\treturn (\n\t\t<>\n\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={ cloneBlock(\n\t\t\t\t\t\tblocks[ 0 ],\n\t\t\t\t\t\ttransformations.find(\n\t\t\t\t\t\t\t( { name } ) => name === hoveredTransformItemName\n\t\t\t\t\t\t).attributes\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ transformations?.map( ( item ) => (\n\t\t\t\t<BlockVariationTranformationItem\n\t\t\t\t\tkey={ item.name }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</>\n\t);\n};\n\nfunction BlockVariationTranformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockVariationTransformations;\n"]}
|
|
@@ -16,6 +16,7 @@ import { store as blockEditorStore } from '../../store';
|
|
|
16
16
|
import useBlockDisplayInformation from '../use-block-display-information';
|
|
17
17
|
import BlockIcon from '../block-icon';
|
|
18
18
|
import BlockTransformationsMenu from './block-transformations-menu';
|
|
19
|
+
import { useBlockVariationTransforms } from './block-variation-transformations';
|
|
19
20
|
import BlockStylesMenu from './block-styles-menu';
|
|
20
21
|
import PatternTransformationsMenu from './pattern-transformations-menu';
|
|
21
22
|
import useBlockDisplayTitle from '../block-title/use-block-display-title';
|
|
@@ -26,7 +27,8 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
26
27
|
} = _ref;
|
|
27
28
|
const {
|
|
28
29
|
replaceBlocks,
|
|
29
|
-
multiSelect
|
|
30
|
+
multiSelect,
|
|
31
|
+
updateBlockAttributes
|
|
30
32
|
} = useDispatch(blockEditorStore);
|
|
31
33
|
const blockInformation = useBlockDisplayInformation(blocks[0].clientId);
|
|
32
34
|
const {
|
|
@@ -39,15 +41,13 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
39
41
|
const {
|
|
40
42
|
getBlockRootClientId,
|
|
41
43
|
getBlockTransformItems,
|
|
42
|
-
__experimentalGetPatternTransformItems
|
|
44
|
+
__experimentalGetPatternTransformItems,
|
|
45
|
+
canRemoveBlocks
|
|
43
46
|
} = select(blockEditorStore);
|
|
44
47
|
const {
|
|
45
48
|
getBlockStyles,
|
|
46
49
|
getBlockType
|
|
47
50
|
} = select(blocksStore);
|
|
48
|
-
const {
|
|
49
|
-
canRemoveBlocks
|
|
50
|
-
} = select(blockEditorStore);
|
|
51
51
|
const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
|
|
52
52
|
const [{
|
|
53
53
|
name: firstBlockName
|
|
@@ -83,6 +83,10 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
83
83
|
patterns: __experimentalGetPatternTransformItems(blocks, rootClientId)
|
|
84
84
|
};
|
|
85
85
|
}, [clientIds, blocks, blockInformation === null || blockInformation === void 0 ? void 0 : blockInformation.icon]);
|
|
86
|
+
const blockVariationTransformations = useBlockVariationTransforms({
|
|
87
|
+
clientIds,
|
|
88
|
+
blocks
|
|
89
|
+
});
|
|
86
90
|
const blockTitle = useBlockDisplayTitle({
|
|
87
91
|
clientId: Array.isArray(clientIds) ? clientIds[0] : clientIds,
|
|
88
92
|
maximumLength: 35
|
|
@@ -101,6 +105,16 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
101
105
|
const newBlocks = switchToBlockType(blocks, name);
|
|
102
106
|
replaceBlocks(clientIds, newBlocks);
|
|
103
107
|
selectForMultipleBlocks(newBlocks);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function onBlockVariationTransform(name) {
|
|
111
|
+
updateBlockAttributes(blocks[0].clientId, { ...blockVariationTransformations.find(_ref3 => {
|
|
112
|
+
let {
|
|
113
|
+
name: variationName
|
|
114
|
+
} = _ref3;
|
|
115
|
+
return variationName === name;
|
|
116
|
+
}).attributes
|
|
117
|
+
});
|
|
104
118
|
} // Pattern transformation through the `Patterns` API.
|
|
105
119
|
|
|
106
120
|
|
|
@@ -116,9 +130,10 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
116
130
|
|
|
117
131
|
|
|
118
132
|
const hasPossibleBlockTransformations = !!possibleBlockTransformations.length && canRemove && !isTemplate;
|
|
133
|
+
const hasPossibleBlockVariationTransformations = !!(blockVariationTransformations !== null && blockVariationTransformations !== void 0 && blockVariationTransformations.length);
|
|
119
134
|
const hasPatternTransformation = !!(patterns !== null && patterns !== void 0 && patterns.length) && canRemove;
|
|
120
135
|
|
|
121
|
-
if (!hasBlockStyles && !hasPossibleBlockTransformations) {
|
|
136
|
+
if (!hasBlockStyles && !hasPossibleBlockTransformations && !hasPossibleBlockVariationTransformations) {
|
|
122
137
|
return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
123
138
|
disabled: true,
|
|
124
139
|
className: "block-editor-block-switcher__no-switcher-icon",
|
|
@@ -138,7 +153,8 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
138
153
|
__('%s: Change block type or style'), blockTitle) : sprintf(
|
|
139
154
|
/* translators: %d: number of blocks. */
|
|
140
155
|
_n('Change type of %d block', 'Change type of %d blocks', blocks.length), blocks.length);
|
|
141
|
-
const
|
|
156
|
+
const hasBlockOrBlockVariationTransforms = hasPossibleBlockTransformations || hasPossibleBlockVariationTransformations;
|
|
157
|
+
const showDropDown = hasBlockStyles || hasBlockOrBlockVariationTransforms || hasPatternTransformation;
|
|
142
158
|
return createElement(ToolbarGroup, null, createElement(ToolbarItem, null, toggleProps => createElement(DropdownMenu, {
|
|
143
159
|
className: "block-editor-block-switcher",
|
|
144
160
|
label: blockSwitcherLabel,
|
|
@@ -161,10 +177,10 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
161
177
|
menuProps: {
|
|
162
178
|
orientation: 'both'
|
|
163
179
|
}
|
|
164
|
-
},
|
|
180
|
+
}, _ref4 => {
|
|
165
181
|
let {
|
|
166
182
|
onClose
|
|
167
|
-
} =
|
|
183
|
+
} = _ref4;
|
|
168
184
|
return showDropDown && createElement("div", {
|
|
169
185
|
className: "block-editor-block-switcher__container"
|
|
170
186
|
}, hasPatternTransformation && createElement(PatternTransformationsMenu, {
|
|
@@ -174,13 +190,18 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
174
190
|
onPatternTransform(transformedBlocks);
|
|
175
191
|
onClose();
|
|
176
192
|
}
|
|
177
|
-
}),
|
|
193
|
+
}), hasBlockOrBlockVariationTransforms && createElement(BlockTransformationsMenu, {
|
|
178
194
|
className: "block-editor-block-switcher__transforms__menugroup",
|
|
179
195
|
possibleBlockTransformations: possibleBlockTransformations,
|
|
196
|
+
possibleBlockVariationTransformations: blockVariationTransformations,
|
|
180
197
|
blocks: blocks,
|
|
181
198
|
onSelect: name => {
|
|
182
199
|
onBlockTransform(name);
|
|
183
200
|
onClose();
|
|
201
|
+
},
|
|
202
|
+
onSelectVariation: name => {
|
|
203
|
+
onBlockVariationTransform(name);
|
|
204
|
+
onClose();
|
|
184
205
|
}
|
|
185
206
|
}), hasBlockStyles && createElement(BlockStylesMenu, {
|
|
186
207
|
hoveredBlock: blocks[0],
|
|
@@ -188,10 +209,10 @@ export const BlockSwitcherDropdownMenu = _ref => {
|
|
|
188
209
|
}));
|
|
189
210
|
})));
|
|
190
211
|
};
|
|
191
|
-
export const BlockSwitcher =
|
|
212
|
+
export const BlockSwitcher = _ref5 => {
|
|
192
213
|
let {
|
|
193
214
|
clientIds
|
|
194
|
-
} =
|
|
215
|
+
} = _ref5;
|
|
195
216
|
const blocks = useSelect(select => select(blockEditorStore).getBlocksByClientId(clientIds), [clientIds]);
|
|
196
217
|
|
|
197
218
|
if (!blocks.length || blocks.some(block => !block)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["__","_n","sprintf","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","useBlockDisplayInformation","BlockIcon","BlockTransformationsMenu","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","multiSelect","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","getBlockStyles","getBlockType","canRemoveBlocks","rootClientId","Array","isArray","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","Set","map","size","blockTitle","maximumLength","isReusable","isTemplate","selectForMultipleBlocks","insertedBlocks","onBlockTransform","newBlocks","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","showDropDown","toggleProps","position","variant","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,\n\t\tmaximumLength: 35,\n\t} );\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif ( ! hasBlockStyles && ! hasPossibleBlockTransformations ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasPossibleBlockTransformations ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tvariant: 'toolbar',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasPossibleBlockTransformations && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"names":["__","_n","sprintf","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","blockEditorStore","useBlockDisplayInformation","BlockIcon","BlockTransformationsMenu","useBlockVariationTransforms","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","BlockSwitcherDropdownMenu","clientIds","blocks","replaceBlocks","multiSelect","updateBlockAttributes","blockInformation","clientId","possibleBlockTransformations","canRemove","hasBlockStyles","icon","patterns","select","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","canRemoveBlocks","getBlockStyles","getBlockType","rootClientId","Array","isArray","name","firstBlockName","_isSingleBlockSelected","length","styles","_icon","isSelectionOfSameType","Set","map","size","blockVariationTransformations","blockTitle","maximumLength","isReusable","isTemplate","selectForMultipleBlocks","insertedBlocks","onBlockTransform","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","blockSwitcherLabel","blockSwitcherDescription","hasBlockOrBlockVariationTransforms","showDropDown","toggleProps","position","variant","className","describedBy","orientation","onClose","BlockSwitcher","getBlocksByClientId","some","block"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nexport const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( blocks[ 0 ].clientId );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tpatterns,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType } = select( blocksStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst [ { name: firstBlockName } ] = blocks;\n\t\t\tconst _isSingleBlockSelected = blocks.length === 1;\n\t\t\tconst styles =\n\t\t\t\t_isSingleBlockSelected && getBlockStyles( firstBlockName );\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\t_icon = blockInformation?.icon; // Take into account active block variations.\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType\n\t\t\t\t\t? getBlockType( firstBlockName )?.icon\n\t\t\t\t\t: copy;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles: !! styles?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks, blockInformation?.icon ]\n\t);\n\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: Array.isArray( clientIds ) ? clientIds[ 0 ] : clientIds,\n\t\tmaximumLength: 35,\n\t} );\n\tconst isReusable = blocks.length === 1 && isReusableBlock( blocks[ 0 ] );\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tif (\n\t\t! hasBlockStyles &&\n\t\t! hasPossibleBlockTransformations &&\n\t\t! hasPossibleBlockVariationTransformations\n\t) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockTitle }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherLabel = blockTitle;\n\n\tconst blockSwitcherDescription =\n\t\t1 === blocks.length\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %s: block title. */\n\t\t\t\t\t__( '%s: Change block type or style' ),\n\t\t\t\t\tblockTitle\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\t\tblocks.length\n\t\t\t\t\t),\n\t\t\t\t\tblocks.length\n\t\t\t );\n\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst showDropDown =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tposition: 'bottom right',\n\t\t\t\t\t\t\tvariant: 'toolbar',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ( isReusable || isTemplate ) && (\n\t\t\t\t\t\t\t\t\t<span className=\"block-editor-block-switcher__toggle-text\">\n\t\t\t\t\t\t\t\t\t\t{ blockTitle }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescribedBy: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) =>\n\t\t\t\t\t\t\tshowDropDown && (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t\t{ hasPatternTransformation && (\n\t\t\t\t\t\t\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ (\n\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPatternTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransformedBlocks\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t\t\t\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\t\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\t\t\t\t\t\t\tonBlockVariationTransform(\n\t\t\t\t\t\t\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! blocks.length || blocks.some( ( block ) => ! block ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSwitcherDropdownMenu clientIds={ clientIds } blocks={ blocks } />\n\t);\n};\n\nexport default BlockSwitcher;\n"]}
|
|
@@ -89,13 +89,13 @@ function BlockPattern(_ref4) {
|
|
|
89
89
|
const baseClassName = 'block-editor-block-switcher__preview-patterns-container';
|
|
90
90
|
const descriptionId = useInstanceId(BlockPattern, `${baseClassName}-list__item-description`);
|
|
91
91
|
return createElement("div", {
|
|
92
|
-
className: `${baseClassName}-list__list-item
|
|
93
|
-
"aria-label": pattern.title,
|
|
94
|
-
"aria-describedby": pattern.description ? descriptionId : undefined
|
|
92
|
+
className: `${baseClassName}-list__list-item`
|
|
95
93
|
}, createElement(CompositeItem, _extends({
|
|
96
94
|
role: "option",
|
|
97
95
|
as: "div"
|
|
98
96
|
}, composite, {
|
|
97
|
+
"aria-label": pattern.title,
|
|
98
|
+
"aria-describedby": pattern.description ? descriptionId : undefined,
|
|
99
99
|
className: `${baseClassName}-list__item`,
|
|
100
100
|
onClick: () => onSelect(pattern.transformedBlocks)
|
|
101
101
|
}), createElement(BlockPreview, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/pattern-transformations-menu.js"],"names":["__","useState","useInstanceId","chevronRight","MenuGroup","MenuItem","Popover","VisuallyHidden","__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__unstableCompositeItem","CompositeItem","BlockPreview","useTransformedPatterns","PatternTransformationsMenu","blocks","patterns","statePatterns","onSelect","showTransforms","setShowTransforms","length","event","preventDefault","PreviewPatternsPopover","BlockPatternsList","composite","map","pattern","name","BlockPattern","baseClassName","descriptionId","title","description","undefined","transformedBlocks","viewportWidth"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,YAAT,QAA6B,kBAA7B;AAEA,SACCC,SADD,EAECC,QAFD,EAGCC,OAHD,EAICC,cAJD,EAKCC,mBAAmB,IAAIC,SALxB,EAMCC,2BAA2B,IAAIC,iBANhC,EAOCC,uBAAuB,IAAIC,aAP5B,QAQO,uBARP;AAUA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,OAAOC,sBAAP,MAAmC,4BAAnC;;AAEA,SAASC,0BAAT,OAII;AAAA,MAJiC;AACpCC,IAAAA,MADoC;AAEpCC,IAAAA,QAAQ,EAAEC,aAF0B;AAGpCC,IAAAA;AAHoC,GAIjC;AACH,QAAM,CAAEC,cAAF,EAAkBC,iBAAlB,IAAwCrB,QAAQ,CAAE,KAAF,CAAtD;AACA,QAAMiB,QAAQ,GAAGH,sBAAsB,CAAEI,aAAF,EAAiBF,MAAjB,CAAvC;AACA,MAAK,CAAEC,QAAQ,CAACK,MAAhB,EAAyB,OAAO,IAAP;AAEzB,SACC,cAAC,SAAD;AAAW,IAAA,SAAS,EAAC;AAArB,KACGF,cAAc,IACf,cAAC,sBAAD;AACC,IAAA,QAAQ,EAAGH,QADZ;AAEC,IAAA,QAAQ,EAAGE;AAFZ,IAFF,EAOC,cAAC,QAAD;AACC,IAAA,OAAO,EAAKI,KAAF,IAAa;AACtBA,MAAAA,KAAK,CAACC,cAAN;AACAH,MAAAA,iBAAiB,CAAE,CAAED,cAAJ,CAAjB;AACA,KAJF;AAKC,IAAA,IAAI,EAAGlB;AALR,KAOGH,EAAE,CAAE,UAAF,CAPL,CAPD,CADD;AAmBA;;AAED,SAAS0B,sBAAT,QAA0D;AAAA,MAAzB;AAAER,IAAAA,QAAF;AAAYE,IAAAA;AAAZ,GAAyB;AACzD,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,OAAD;AACC,IAAA,SAAS,EAAC,+CADX;AAEC,IAAA,QAAQ,EAAC;AAFV,KAIC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGpB,EAAE,CAAE,SAAF,CADL,CADD,EAIC,cAAC,iBAAD;AACC,IAAA,QAAQ,EAAGkB,QADZ;AAEC,IAAA,QAAQ,EAAGE;AAFZ,IAJD,CAJD,CADD,CADD,CADD;AAoBA;;AAED,SAASO,iBAAT,QAAqD;AAAA,MAAzB;AAAET,IAAAA,QAAF;AAAYE,IAAAA;AAAZ,GAAyB;AACpD,QAAMQ,SAAS,GAAGjB,iBAAiB,EAAnC;AACA,SACC,cAAC,SAAD,eACMiB,SADN;AAEC,IAAA,IAAI,EAAC,SAFN;AAGC,IAAA,SAAS,EAAC,yDAHX;AAIC,kBAAa5B,EAAE,CAAE,eAAF;AAJhB,MAMGkB,QAAQ,CAACW,GAAT,CAAgBC,OAAF,IACf,cAAC,YAAD;AACC,IAAA,GAAG,EAAGA,OAAO,CAACC,IADf;AAEC,IAAA,OAAO,EAAGD,OAFX;AAGC,IAAA,QAAQ,EAAGV,QAHZ;AAIC,IAAA,SAAS,EAAGQ;AAJb,IADC,CANH,CADD;AAiBA;;AAED,SAASI,YAAT,QAA0D;AAAA,MAAnC;AAAEF,IAAAA,OAAF;AAAWV,IAAAA,QAAX;AAAqBQ,IAAAA;AAArB,GAAmC;AACzD;AACA,QAAMK,aAAa,GAClB,yDADD;AAEA,QAAMC,aAAa,GAAGhC,aAAa,CAClC8B,YADkC,EAEjC,GAAGC,aAAe,yBAFe,CAAnC;AAIA,SACC;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-switcher/pattern-transformations-menu.js"],"names":["__","useState","useInstanceId","chevronRight","MenuGroup","MenuItem","Popover","VisuallyHidden","__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__unstableCompositeItem","CompositeItem","BlockPreview","useTransformedPatterns","PatternTransformationsMenu","blocks","patterns","statePatterns","onSelect","showTransforms","setShowTransforms","length","event","preventDefault","PreviewPatternsPopover","BlockPatternsList","composite","map","pattern","name","BlockPattern","baseClassName","descriptionId","title","description","undefined","transformedBlocks","viewportWidth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { chevronRight } from '@wordpress/icons';\n\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tPopover,\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockPreview from '../block-preview';\nimport useTransformedPatterns from './use-transformed-patterns';\n\nfunction PatternTransformationsMenu( {\n\tblocks,\n\tpatterns: statePatterns,\n\tonSelect,\n} ) {\n\tconst [ showTransforms, setShowTransforms ] = useState( false );\n\tconst patterns = useTransformedPatterns( statePatterns, blocks );\n\tif ( ! patterns.length ) return null;\n\n\treturn (\n\t\t<MenuGroup className=\"block-editor-block-switcher__pattern__transforms__menugroup\">\n\t\t\t{ showTransforms && (\n\t\t\t\t<PreviewPatternsPopover\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<MenuItem\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tsetShowTransforms( ! showTransforms );\n\t\t\t\t} }\n\t\t\t\ticon={ chevronRight }\n\t\t\t>\n\t\t\t\t{ __( 'Patterns' ) }\n\t\t\t</MenuItem>\n\t\t</MenuGroup>\n\t);\n}\n\nfunction PreviewPatternsPopover( { patterns, onSelect } ) {\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__popover__preview__parent\">\n\t\t\t<div className=\"block-editor-block-switcher__popover__preview__container\">\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-block-switcher__preview__popover\"\n\t\t\t\t\tposition=\"bottom right\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"block-editor-block-switcher__preview\">\n\t\t\t\t\t\t<div className=\"block-editor-block-switcher__preview-title\">\n\t\t\t\t\t\t\t{ __( 'Preview' ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsList( { patterns, onSelect } ) {\n\tconst composite = useCompositeState();\n\treturn (\n\t\t<Composite\n\t\t\t{ ...composite }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"block-editor-block-switcher__preview-patterns-container\"\n\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t>\n\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t<BlockPattern\n\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tcomposite={ composite }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction BlockPattern( { pattern, onSelect, composite } ) {\n\t// TODO check pattern/preview width...\n\tconst baseClassName =\n\t\t'block-editor-block-switcher__preview-patterns-container';\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }-list__item-description`\n\t);\n\treturn (\n\t\t<div className={ `${ baseClassName }-list__list-item` }>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\taria-label={ pattern.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tpattern.description ? descriptionId : undefined\n\t\t\t\t}\n\t\t\t\tclassName={ `${ baseClassName }-list__item` }\n\t\t\t\tonClick={ () => onSelect( pattern.transformedBlocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ pattern.transformedBlocks }\n\t\t\t\t\tviewportWidth={ pattern.viewportWidth || 500 }\n\t\t\t\t/>\n\t\t\t\t<div className={ `${ baseClassName }-list__item-title` }>\n\t\t\t\t\t{ pattern.title }\n\t\t\t\t</div>\n\t\t\t</CompositeItem>\n\t\t\t{ !! pattern.description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ pattern.description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default PatternTransformationsMenu;\n"]}
|
|
@@ -30,6 +30,7 @@ import BlockEditVisuallyButton from '../block-edit-visually-button';
|
|
|
30
30
|
import { useShowMoversGestures } from './utils';
|
|
31
31
|
import { store as blockEditorStore } from '../../store';
|
|
32
32
|
import __unstableBlockNameContext from './block-name-context';
|
|
33
|
+
import { unlock } from '../../lock-unlock';
|
|
33
34
|
|
|
34
35
|
const BlockToolbar = _ref => {
|
|
35
36
|
let {
|
|
@@ -43,7 +44,7 @@ const BlockToolbar = _ref => {
|
|
|
43
44
|
isDistractionFree,
|
|
44
45
|
isValid,
|
|
45
46
|
isVisual,
|
|
46
|
-
|
|
47
|
+
blockEditingMode
|
|
47
48
|
} = useSelect(select => {
|
|
48
49
|
const {
|
|
49
50
|
getBlockName,
|
|
@@ -52,8 +53,8 @@ const BlockToolbar = _ref => {
|
|
|
52
53
|
isBlockValid,
|
|
53
54
|
getBlockRootClientId,
|
|
54
55
|
getSettings,
|
|
55
|
-
|
|
56
|
-
} = select(blockEditorStore);
|
|
56
|
+
getBlockEditingMode
|
|
57
|
+
} = unlock(select(blockEditorStore));
|
|
57
58
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
58
59
|
const selectedBlockClientId = selectedBlockClientIds[0];
|
|
59
60
|
const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
@@ -67,7 +68,7 @@ const BlockToolbar = _ref => {
|
|
|
67
68
|
rootClientId: blockRootClientId,
|
|
68
69
|
isValid: selectedBlockClientIds.every(id => isBlockValid(id)),
|
|
69
70
|
isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
|
|
70
|
-
|
|
71
|
+
blockEditingMode: getBlockEditingMode(selectedBlockClientId)
|
|
71
72
|
};
|
|
72
73
|
}, []); // Handles highlighting the current block outline on hover or focus of the
|
|
73
74
|
// block type toolbar area.
|
|
@@ -117,9 +118,9 @@ const BlockToolbar = _ref => {
|
|
|
117
118
|
});
|
|
118
119
|
return createElement("div", {
|
|
119
120
|
className: classes
|
|
120
|
-
}, !isMultiToolbar && isLargeViewport &&
|
|
121
|
+
}, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && createElement(BlockParentSelector, null), createElement("div", _extends({
|
|
121
122
|
ref: nodeRef
|
|
122
|
-
}, showMoversGestures), (shouldShowVisualToolbar || isMultiToolbar) &&
|
|
123
|
+
}, showMoversGestures), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && createElement(ToolbarGroup, {
|
|
123
124
|
className: "block-editor-block-toolbar__block-controls"
|
|
124
125
|
}, createElement(BlockSwitcher, {
|
|
125
126
|
clientIds: blockClientIds
|
|
@@ -146,7 +147,7 @@ const BlockToolbar = _ref => {
|
|
|
146
147
|
value: blockType === null || blockType === void 0 ? void 0 : blockType.name
|
|
147
148
|
}, createElement(__unstableBlockToolbarLastItem.Slot, null))), createElement(BlockEditVisuallyButton, {
|
|
148
149
|
clientIds: blockClientIds
|
|
149
|
-
}),
|
|
150
|
+
}), blockEditingMode === 'default' && createElement(BlockSettingsMenu, {
|
|
150
151
|
clientIds: blockClientIds
|
|
151
152
|
}));
|
|
152
153
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useDispatch","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowMoversGestures","store","blockEditorStore","__unstableBlockNameContext","BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","isContentLocked","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","__unstableGetContentLockingParent","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tisContentLocked,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\t__unstableGetContentLockingParent,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tisContentLocked: !! __unstableGetContentLockingParent(\n\t\t\t\tselectedBlockClientId\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar && isLargeViewport && ! isContentLocked && (\n\t\t\t\t<BlockParentSelector />\n\t\t\t) }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! isContentLocked && (\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ ! isContentLocked && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useDispatch","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowMoversGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","getBlockEditingMode","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tblockEditingMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|