@wordpress/block-editor 12.22.0 → 12.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/build/components/block-list/block.js +11 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +5 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +4 -1
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/index.js +4 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -4
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +18 -9
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +48 -8
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +14 -2
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +9 -2
- package/build/components/global-styles/advanced-panel.js.map +1 -1
- package/build/components/global-styles/background-panel.js +444 -0
- package/build/components/global-styles/background-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -0
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +13 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +15 -14
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +9 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +8 -2
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-items.js +36 -15
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +11 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +16 -0
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +1 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +17 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-collapse-items.js +47 -0
- package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build/components/rich-text/index.js +14 -11
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +17 -11
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +2 -2
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/with-deprecations.js +0 -3
- package/build/components/rich-text/with-deprecations.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +50 -36
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-display-information/index.js +4 -6
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/hooks/anchor.js +2 -2
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +70 -424
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/index.js +7 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/use-zoom-out.js +47 -0
- package/build/hooks/use-zoom-out.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +3 -1
- package/build/private-apis.native.js.map +1 -1
- package/build/store/private-actions.js +13 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +24 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +22 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +34 -32
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +7 -1
- package/build/store/utils.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -1
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-list/block.js +11 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +5 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +4 -1
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/index.js +4 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +5 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +18 -9
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +50 -10
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -2
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +9 -2
- package/build-module/components/global-styles/advanced-panel.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +430 -0
- package/build-module/components/global-styles/background-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +2 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -0
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +16 -15
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +9 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +8 -2
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-items.js +33 -15
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +11 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +16 -0
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +1 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +17 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
- package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build-module/components/rich-text/index.js +15 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +16 -11
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +2 -2
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/with-deprecations.js +0 -3
- package/build-module/components/rich-text/with-deprecations.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +50 -36
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -7
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/hooks/anchor.js +2 -2
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +67 -419
- package/build-module/hooks/background.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/use-zoom-out.js +41 -0
- package/build-module/hooks/use-zoom-out.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +7 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +3 -1
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/private-actions.js +12 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +22 -4
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +21 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +35 -33
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +6 -1
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -1
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +4 -1
- package/build-style/content.css +4 -1
- package/build-style/style-rtl.css +84 -79
- package/build-style/style.css +84 -79
- package/package.json +31 -31
- package/src/components/block-list/block.js +19 -3
- package/src/components/block-mover/button.js +4 -1
- package/src/components/block-mover/index.js +8 -1
- package/src/components/block-patterns-list/index.js +22 -17
- package/src/components/block-preview/style.scss +28 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +8 -2
- package/src/components/block-switcher/index.js +5 -3
- package/src/components/block-switcher/style.scss +1 -1
- package/src/components/block-toolbar/index.js +22 -19
- package/src/components/block-toolbar/shuffle.js +19 -13
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-tools/block-selection-button.js +66 -9
- package/src/components/block-tools/index.js +18 -1
- package/src/components/button-block-appender/content.scss +5 -1
- package/src/components/default-block-appender/content.scss +2 -2
- package/src/components/global-styles/advanced-panel.js +8 -2
- package/src/components/global-styles/background-panel.js +591 -0
- package/src/components/global-styles/color-panel.js +2 -1
- package/src/components/global-styles/get-global-styles-changes.js +3 -0
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/index.js +4 -0
- package/src/components/global-styles/style.scss +78 -1
- package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
- package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
- package/src/components/global-styles/test/use-global-styles-output.js +9 -9
- package/src/components/global-styles/use-global-styles-output.js +27 -16
- package/src/components/global-styles/utils.js +1 -0
- package/src/components/iframe/index.js +19 -9
- package/src/components/inserter/block-patterns-tab/index.js +1 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/src/components/inserter/library.js +4 -0
- package/src/components/inserter/menu.js +8 -1
- package/src/components/inserter/search-items.js +37 -15
- package/src/components/inserter/style.scss +6 -12
- package/src/components/keyboard-shortcuts/index.js +11 -0
- package/src/components/list-view/block-select-button.js +13 -1
- package/src/components/list-view/block.js +1 -1
- package/src/components/list-view/index.js +18 -1
- package/src/components/list-view/style.scss +4 -4
- package/src/components/list-view/use-list-view-collapse-items.js +33 -0
- package/src/components/rich-text/index.js +30 -13
- package/src/components/rich-text/index.native.js +14 -11
- package/src/components/rich-text/native/get-format-colors.native.js +1 -1
- package/src/components/rich-text/native/index.native.js +2 -2
- package/src/components/rich-text/with-deprecations.js +0 -3
- package/src/components/url-popover/image-url-input-ui.js +68 -51
- package/src/components/use-block-display-information/index.js +8 -10
- package/src/hooks/anchor.js +11 -9
- package/src/hooks/background.js +77 -538
- package/src/hooks/index.js +1 -0
- package/src/hooks/use-zoom-out.js +36 -0
- package/src/index.js +1 -0
- package/src/private-apis.js +13 -1
- package/src/private-apis.native.js +2 -0
- package/src/store/private-actions.js +12 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +54 -27
- package/src/store/reducer.js +22 -0
- package/src/store/selectors.js +195 -180
- package/src/store/test/private-actions.js +10 -0
- package/src/store/test/private-selectors.js +13 -0
- package/src/store/test/reducer.js +26 -0
- package/src/store/test/selectors.js +90 -199
- package/src/store/utils.js +13 -0
- package/src/style.scss +0 -2
- package/src/utils/transform-styles/index.js +2 -1
- package/src/hooks/anchor.scss +0 -4
- package/src/hooks/background.scss +0 -75
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","_components","_data","_icons","_element","_i18n","_keyboardShortcuts","_compose","_blockActions","_interopRequireDefault","_blockHtmlConvertButton","_blockSettingsMenuFirstItem","_blockSettingsMenuControls","_blockParentSelectorMenuItem","_store","_lockUnlock","POPOVER_PROPS","className","placement","CopyMenuItem","clientIds","onCopy","label","getBlocksByClientId","useSelect","blockEditorStore","ref","useCopyToClipboard","serialize","copyMenuItemLabel","__","_react","createElement","MenuItem","BlockSettingsDropdown","block","children","__experimentalSelectBlock","props","currentClientId","clientId","count","length","firstBlockClientId","firstParentClientId","onlyBlock","parentBlockType","previousBlockClientId","selectedBlockClientIds","openedBlockSettingsMenu","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getOpenedBlockSettingsMenu","unlock","getActiveBlockVariation","blocksStore","_firstParentClientId","parentBlockName","getBlockType","getBlockOrder","setOpenedBlockSettingsMenu","useDispatch","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","isMatch","__unstableUseShortcutEventMatch","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","default","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","DropdownMenu","icon","moreVertical","popoverProps","noIcons","menuProps","onKeyDown","event","defaultPrevented","preventDefault","onClose","Fragment","MenuGroup","Slot","fillProps","parentClientId","onClick","pipe","shortcut","Children","map","child","cloneElement","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport { Children, cloneElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport BlockParentSelectorMenuItem from './block-parent-selector-menu-item';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { clientIds, onCopy, label } ) {\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst ref = useCopyToClipboard(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\tonCopy\n\t);\n\tconst copyMenuItemLabel = label ? label : __( 'Copy' );\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\tchildren,\n\t__experimentalSelectBlock,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst count = clientIds.length;\n\tconst firstBlockClientId = clientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t\topenedBlockSettingsMenu,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetOpenedBlockSettingsMenu,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t\topenedBlockSettingsMenu: getOpenedBlockSettingsMenu(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tasync function updateSelectionAfterDuplicate( clientIdsPromise ) {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ids = await clientIdsPromise;\n\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t}\n\t}\n\n\tfunction updateSelectionAfterRemove() {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t// Focus the first block if there's no previous block nor parent block.\n\t\tif ( ! blockToFocus ) {\n\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t}\n\n\t\t// Only update the selection if the original selection is removed.\n\t\tconst shouldUpdateSelection =\n\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t}\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tfunction onToggle( localOpen ) {\n\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t} else if (\n\t\t\t! localOpen &&\n\t\t\topenedBlockSettingsMenu &&\n\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t) {\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t}\n\t}\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\topen={ open }\n\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertBefore();\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\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<BlockParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\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{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\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</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_blocks","require","_components","_data","_icons","_element","_i18n","_keycodes","_keyboardShortcuts","_compose","_blockActions","_interopRequireDefault","_blockHtmlConvertButton","_blockSettingsMenuFirstItem","_blockSettingsMenuControls","_blockParentSelectorMenuItem","_store","_lockUnlock","POPOVER_PROPS","className","placement","CopyMenuItem","clientIds","onCopy","label","shortcut","getBlocksByClientId","useSelect","blockEditorStore","ref","useCopyToClipboard","serialize","copyMenuItemLabel","__","_react","createElement","MenuItem","BlockSettingsDropdown","block","children","__experimentalSelectBlock","props","currentClientId","clientId","count","length","firstBlockClientId","firstParentClientId","onlyBlock","parentBlockType","previousBlockClientId","selectedBlockClientIds","openedBlockSettingsMenu","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","getOpenedBlockSettingsMenu","unlock","getActiveBlockVariation","blocksStore","_firstParentClientId","parentBlockName","getBlockType","getBlockOrder","setOpenedBlockSettingsMenu","useDispatch","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","isMatch","__unstableUseShortcutEventMatch","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","parentBlockIsSelected","includes","open","undefined","onToggle","localOpen","default","__experimentalUpdateSelection","canCopyStyles","canDuplicate","canInsertBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","DropdownMenu","icon","moreVertical","popoverProps","noIcons","menuProps","onKeyDown","event","defaultPrevented","preventDefault","onClose","Fragment","MenuGroup","Slot","fillProps","parentClientId","displayShortcut","primary","onClick","pipe","Children","map","child","cloneElement","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport { Children, cloneElement } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport BlockParentSelectorMenuItem from './block-parent-selector-menu-item';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { clientIds, onCopy, label, shortcut } ) {\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst ref = useCopyToClipboard(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\tonCopy\n\t);\n\tconst copyMenuItemLabel = label ? label : __( 'Copy' );\n\treturn (\n\t\t<MenuItem ref={ ref } shortcut={ shortcut }>\n\t\t\t{ copyMenuItemLabel }\n\t\t</MenuItem>\n\t);\n}\n\nexport function BlockSettingsDropdown( {\n\tblock,\n\tclientIds,\n\tchildren,\n\t__experimentalSelectBlock,\n\t...props\n} ) {\n\t// Get the client id of the current block for this menu, if one is set.\n\tconst currentClientId = block?.clientId;\n\tconst count = clientIds.length;\n\tconst firstBlockClientId = clientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t\topenedBlockSettingsMenu,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetOpenedBlockSettingsMenu,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t\topenedBlockSettingsMenu: getOpenedBlockSettingsMenu(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setOpenedBlockSettingsMenu } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tasync function updateSelectionAfterDuplicate( clientIdsPromise ) {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ids = await clientIdsPromise;\n\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t}\n\t}\n\n\tfunction updateSelectionAfterRemove() {\n\t\tif ( ! __experimentalSelectBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t// Focus the first block if there's no previous block nor parent block.\n\t\tif ( ! blockToFocus ) {\n\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t}\n\n\t\t// Only update the selection if the original selection is removed.\n\t\tconst shouldUpdateSelection =\n\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t}\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\t// When a currentClientId is in use, treat the menu as a controlled component.\n\t// This ensures that only one block settings menu is open at a time.\n\t// This is a temporary solution to work around an issue with `onFocusOutside`\n\t// where it does not allow a dropdown to be closed if focus was never within\n\t// the dropdown to begin with. Examples include a user either CMD+Clicking or\n\t// right clicking into an inactive window.\n\t// See: https://github.com/WordPress/gutenberg/pull/54083\n\tconst open = ! currentClientId\n\t\t? undefined\n\t\t: openedBlockSettingsMenu === currentClientId || false;\n\n\tfunction onToggle( localOpen ) {\n\t\tif ( localOpen && openedBlockSettingsMenu !== currentClientId ) {\n\t\t\tsetOpenedBlockSettingsMenu( currentClientId );\n\t\t} else if (\n\t\t\t! localOpen &&\n\t\t\topenedBlockSettingsMenu &&\n\t\t\topenedBlockSettingsMenu === currentClientId\n\t\t) {\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t}\n\t}\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\topen={ open }\n\t\t\t\t\tonToggle={ onToggle }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\t\t\t\t\tonInsertBefore();\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\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<BlockParentSelectorMenuItem\n\t\t\t\t\t\t\t\t\t\t\tparentClientId={\n\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tparentBlockType={ parentBlockType }\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{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'c' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\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\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\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</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"],"mappings":"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"}
|
|
@@ -128,7 +128,8 @@ function BlockSwitcherDropdownMenuContents({
|
|
|
128
128
|
}));
|
|
129
129
|
}
|
|
130
130
|
const BlockSwitcher = ({
|
|
131
|
-
clientIds
|
|
131
|
+
clientIds,
|
|
132
|
+
disabled
|
|
132
133
|
}) => {
|
|
133
134
|
const {
|
|
134
135
|
canRemove,
|
|
@@ -155,7 +156,7 @@ const BlockSwitcher = ({
|
|
|
155
156
|
invalidBlocks: true
|
|
156
157
|
};
|
|
157
158
|
}
|
|
158
|
-
const rootClientId = getBlockRootClientId(clientIds);
|
|
159
|
+
const rootClientId = getBlockRootClientId(Array.isArray(clientIds) ? clientIds[0] : clientIds);
|
|
159
160
|
const [{
|
|
160
161
|
name: firstBlockName
|
|
161
162
|
}] = _blocks;
|
|
@@ -191,7 +192,7 @@ const BlockSwitcher = ({
|
|
|
191
192
|
}
|
|
192
193
|
const isSingleBlock = clientIds.length === 1;
|
|
193
194
|
const blockSwitcherLabel = isSingleBlock ? blockTitle : (0, _i18n.__)('Multiple blocks selected');
|
|
194
|
-
const hideDropdown = !hasBlockStyles && !canRemove;
|
|
195
|
+
const hideDropdown = disabled || !hasBlockStyles && !canRemove;
|
|
195
196
|
if (hideDropdown) {
|
|
196
197
|
return (0, _react.createElement)(_components.ToolbarGroup, null, (0, _react.createElement)(_components.ToolbarButton, {
|
|
197
198
|
disabled: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_components","_blocks2","_data","_icons","_store","_blockIcon","_interopRequireDefault","_blockTransformationsMenu","_blockVariationTransformations","_blockStylesMenu","_patternTransformationsMenu","_useBlockDisplayTitle","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","useDispatch","blockEditorStore","possibleBlockTransformations","patterns","blocks","useSelect","select","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","Array","isArray","_blocks","blockVariationTransformations","useBlockVariationTransforms","selectForMultipleBlocks","insertedBlocks","length","clientId","onBlockTransform","name","newBlocks","switchToBlockType","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isTemplate","isTemplatePart","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","_react","createElement","className","__","default","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockSwitcher","icon","invalidBlocks","isReusable","getBlockAttributes","canRemoveBlocks","getBlockStyles","getBlockType","getActiveBlockVariation","blocksStore","some","block","firstBlockName","_isSingleBlockSelected","blockType","_icon","match","isSelectionOfSameType","Set","map","size","copy","isReusableBlock","blockTitle","useBlockDisplayTitle","maximumLength","blockSwitcherLabel","hideDropdown","ToolbarGroup","ToolbarButton","disabled","title","Fragment","showColors","blockSwitcherDescription","sprintf","_n","ToolbarItem","toggleProps","DropdownMenu","label","popoverProps","placement","describedBy","menuProps","orientation","exports","_default"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"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 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\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\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 rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\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\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\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\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\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 isSingleBlock = blocks.length === 1;\n\tconst isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );\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\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst rootClientId = getBlockRootClientId( clientIds );\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\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 ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\tconst hideDropdown = ! hasBlockStyles && ! canRemove;\n\n\tif ( hideDropdown ) {\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={ blockSwitcherLabel }\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 blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\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\tplacement: 'bottom-start',\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\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\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 default BlockSwitcher;\n"],"mappings":";;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAMA,IAAAE,QAAA,GAAAF,OAAA;AAMA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,yBAAA,GAAAD,sBAAA,CAAAP,OAAA;AACA,IAAAS,8BAAA,GAAAT,OAAA;AACA,IAAAU,gBAAA,GAAAH,sBAAA,CAAAP,OAAA;AACA,IAAAW,2BAAA,GAAAJ,sBAAA,CAAAP,OAAA;AACA,IAAAY,qBAAA,GAAAL,sBAAA,CAAAP,OAAA;AA5BA;AACA;AACA;;AAiBA;AACA;AACA;;AASA,SAASa,iCAAiCA,CAAE;EAC3CC,OAAO;EACPC,SAAS;EACTC,cAAc;EACdC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC,aAAa;IAAEC,WAAW;IAAEC;EAAsB,CAAC,GAC1D,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EAChC,MAAM;IAAEC,4BAA4B;IAAEC,QAAQ;IAAEC;EAAO,CAAC,GAAG,IAAAC,eAAS,EACjEC,MAAM,IAAM;IACb,MAAM;MACLC,mBAAmB;MACnBC,oBAAoB;MACpBC,sBAAsB;MACtBC;IACD,CAAC,GAAGJ,MAAM,CAAEL,YAAiB,CAAC;IAC9B,MAAMU,YAAY,GAAGH,oBAAoB,CACxCI,KAAK,CAACC,OAAO,CAAEnB,SAAU,CAAC,GAAGA,SAAS,CAAE,CAAC,CAAE,GAAGA,SAC/C,CAAC;IACD,MAAMoB,OAAO,GAAGP,mBAAmB,CAAEb,SAAU,CAAC;IAChD,OAAO;MACNU,MAAM,EAAEU,OAAO;MACfZ,4BAA4B,EAAEO,sBAAsB,CACnDK,OAAO,EACPH,YACD,CAAC;MACDR,QAAQ,EAAEO,sCAAsC,CAC/CI,OAAO,EACPH,YACD;IACD,CAAC;EACF,CAAC,EACD,CAAEjB,SAAS,CACZ,CAAC;EACD,MAAMqB,6BAA6B,GAAG,IAAAC,0DAA2B,EAAE;IAClEtB,SAAS;IACTU;EACD,CAAE,CAAC;EACH,SAASa,uBAAuBA,CAAEC,cAAc,EAAG;IAClD,IAAKA,cAAc,CAACC,MAAM,GAAG,CAAC,EAAG;MAChCrB,WAAW,CACVoB,cAAc,CAAE,CAAC,CAAE,CAACE,QAAQ,EAC5BF,cAAc,CAAEA,cAAc,CAACC,MAAM,GAAG,CAAC,CAAE,CAACC,QAC7C,CAAC;IACF;EACD;EACA;EACA,SAASC,gBAAgBA,CAAEC,IAAI,EAAG;IACjC,MAAMC,SAAS,GAAG,IAAAC,0BAAiB,EAAEpB,MAAM,EAAEkB,IAAK,CAAC;IACnDzB,aAAa,CAAEH,SAAS,EAAE6B,SAAU,CAAC;IACrCN,uBAAuB,CAAEM,SAAU,CAAC;EACrC;EACA,SAASE,yBAAyBA,CAAEH,IAAI,EAAG;IAC1CvB,qBAAqB,CAAEK,MAAM,CAAE,CAAC,CAAE,CAACgB,QAAQ,EAAE;MAC5C,GAAGL,6BAA6B,CAACW,IAAI,CACpC,CAAE;QAAEJ,IAAI,EAAEK;MAAc,CAAC,KAAMA,aAAa,KAAKL,IAClD,CAAC,CAACM;IACH,CAAE,CAAC;EACJ;EACA;EACA,SAASC,kBAAkBA,CAAEC,iBAAiB,EAAG;IAChDjC,aAAa,CAAEH,SAAS,EAAEoC,iBAAkB,CAAC;IAC7Cb,uBAAuB,CAAEa,iBAAkB,CAAC;EAC7C;EACA;AACD;AACA;AACA;AACA;EACC,MAAMC,aAAa,GAAG3B,MAAM,CAACe,MAAM,KAAK,CAAC;EACzC,MAAMa,UAAU,GAAGD,aAAa,IAAI,IAAAE,uBAAc,EAAE7B,MAAM,CAAE,CAAC,CAAG,CAAC;EACjE,MAAM8B,+BAA+B,GACpC,CAAC,CAAEhC,4BAA4B,CAACiB,MAAM,IAAIvB,SAAS,IAAI,CAAEoC,UAAU;EACpE,MAAMG,wCAAwC,GAC7C,CAAC,CAAEpB,6BAA6B,EAAEI,MAAM;EACzC,MAAMiB,wBAAwB,GAAG,CAAC,CAAEjC,QAAQ,EAAEgB,MAAM,IAAIvB,SAAS;EACjE,MAAMyC,kCAAkC,GACvCH,+BAA+B,IAC/BC,wCAAwC;EACzC,MAAMG,WAAW,GAChB3C,cAAc,IACd0C,kCAAkC,IAClCD,wBAAwB;EACzB,IAAK,CAAEE,WAAW,EAAG;IACpB,OACC,IAAAC,MAAA,CAAAC,aAAA;MAAGC,SAAS,EAAC;IAA4C,GACtD,IAAAC,QAAE,EAAE,gBAAiB,CACrB,CAAC;EAEN;EACA,OACC,IAAAH,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAAwC,GACpDL,wBAAwB,IACzB,IAAAG,MAAA,CAAAC,aAAA,EAAClD,2BAAA,CAAAqD,OAA0B;IAC1BvC,MAAM,EAAGA,MAAQ;IACjBD,QAAQ,EAAGA,QAAU;IACrByC,QAAQ,EAAKd,iBAAiB,IAAM;MACnCD,kBAAkB,CAAEC,iBAAkB,CAAC;MACvCrC,OAAO,CAAC,CAAC;IACV;EAAG,CACH,CACD,EACC4C,kCAAkC,IACnC,IAAAE,MAAA,CAAAC,aAAA,EAACrD,yBAAA,CAAAwD,OAAwB;IACxBF,SAAS,EAAC,oDAAoD;IAC9DvC,4BAA4B,EAC3BA,4BACA;IACD2C,qCAAqC,EACpC9B,6BACA;IACDX,MAAM,EAAGA,MAAQ;IACjBwC,QAAQ,EAAKtB,IAAI,IAAM;MACtBD,gBAAgB,CAAEC,IAAK,CAAC;MACxB7B,OAAO,CAAC,CAAC;IACV,CAAG;IACHqD,iBAAiB,EAAKxB,IAAI,IAAM;MAC/BG,yBAAyB,CAAEH,IAAK,CAAC;MACjC7B,OAAO,CAAC,CAAC;IACV;EAAG,CACH,CACD,EACCE,cAAc,IACf,IAAA4C,MAAA,CAAAC,aAAA,EAACnD,gBAAA,CAAAsD,OAAe;IACfI,YAAY,EAAG3C,MAAM,CAAE,CAAC,CAAI;IAC5B4C,QAAQ,EAAGvD;EAAS,CACpB,CAEE,CAAC;AAER;AAEO,MAAMwD,aAAa,GAAGA,CAAE;EAAEvD;AAAU,CAAC,KAAM;EACjD,MAAM;IACLE,SAAS;IACTD,cAAc;IACduD,IAAI;IACJC,aAAa;IACbC,UAAU;IACVpB;EACD,CAAC,GAAG,IAAA3B,eAAS,EACVC,MAAM,IAAM;IACb,MAAM;MACLE,oBAAoB;MACpBD,mBAAmB;MACnB8C,kBAAkB;MAClBC;IACD,CAAC,GAAGhD,MAAM,CAAEL,YAAiB,CAAC;IAC9B,MAAM;MAAEsD,cAAc;MAAEC,YAAY;MAAEC;IAAwB,CAAC,GAC9DnD,MAAM,CAAEoD,cAAY,CAAC;IACtB,MAAM5C,OAAO,GAAGP,mBAAmB,CAAEb,SAAU,CAAC;IAChD,IAAK,CAAEoB,OAAO,CAACK,MAAM,IAAIL,OAAO,CAAC6C,IAAI,CAAIC,KAAK,IAAM,CAAEA,KAAM,CAAC,EAAG;MAC/D,OAAO;QAAET,aAAa,EAAE;MAAK,CAAC;IAC/B;IACA,MAAMxC,YAAY,GAAGH,oBAAoB,CAAEd,SAAU,CAAC;IACtD,MAAM,CAAE;MAAE4B,IAAI,EAAEuC;IAAe,CAAC,CAAE,GAAG/C,OAAO;IAC5C,MAAMgD,sBAAsB,GAAGhD,OAAO,CAACK,MAAM,KAAK,CAAC;IACnD,MAAM4C,SAAS,GAAGP,YAAY,CAAEK,cAAe,CAAC;IAEhD,IAAIG,KAAK;IACT,IAAKF,sBAAsB,EAAG;MAC7B,MAAMG,KAAK,GAAGR,uBAAuB,CACpCI,cAAc,EACdR,kBAAkB,CAAE3D,SAAS,CAAE,CAAC,CAAG,CACpC,CAAC;MACD;MACAsE,KAAK,GAAGC,KAAK,EAAEf,IAAI,IAAIa,SAAS,CAACb,IAAI;IACtC,CAAC,MAAM;MACN,MAAMgB,qBAAqB,GAC1B,IAAIC,GAAG,CAAErD,OAAO,CAACsD,GAAG,CAAE,CAAE;QAAE9C;MAAK,CAAC,KAAMA,IAAK,CAAE,CAAC,CAAC+C,IAAI,KAAK,CAAC;MAC1D;MACA;MACAL,KAAK,GAAGE,qBAAqB,GAAGH,SAAS,CAACb,IAAI,GAAGoB,WAAI;IACtD;IAEA,OAAO;MACN1E,SAAS,EAAE0D,eAAe,CAAE5D,SAAS,EAAEiB,YAAa,CAAC;MACrDhB,cAAc,EACbmE,sBAAsB,IACtB,CAAC,CAAEP,cAAc,CAAEM,cAAe,CAAC,EAAE1C,MAAM;MAC5C+B,IAAI,EAAEc,KAAK;MACXZ,UAAU,EACTU,sBAAsB,IAAI,IAAAS,wBAAe,EAAEzD,OAAO,CAAE,CAAC,CAAG,CAAC;MAC1DkB,UAAU,EACT8B,sBAAsB,IAAI,IAAA7B,uBAAc,EAAEnB,OAAO,CAAE,CAAC,CAAG;IACzD,CAAC;EACF,CAAC,EACD,CAAEpB,SAAS,CACZ,CAAC;EACD,MAAM8E,UAAU,GAAG,IAAAC,6BAAoB,EAAE;IACxCrD,QAAQ,EAAE1B,SAAS,GAAI,CAAC,CAAE;IAC1BgF,aAAa,EAAE;EAChB,CAAE,CAAC;EACH,IAAKvB,aAAa,EAAG;IACpB,OAAO,IAAI;EACZ;EAEA,MAAMpB,aAAa,GAAGrC,SAAS,CAACyB,MAAM,KAAK,CAAC;EAC5C,MAAMwD,kBAAkB,GAAG5C,aAAa,GACrCyC,UAAU,GACV,IAAA9B,QAAE,EAAE,0BAA2B,CAAC;EACnC,MAAMkC,YAAY,GAAG,CAAEjF,cAAc,IAAI,CAAEC,SAAS;EAEpD,IAAKgF,YAAY,EAAG;IACnB,OACC,IAAArC,MAAA,CAAAC,aAAA,EAAC5D,WAAA,CAAAiG,YAAY,QACZ,IAAAtC,MAAA,CAAAC,aAAA,EAAC5D,WAAA,CAAAkG,aAAa;MACbC,QAAQ;MACRtC,SAAS,EAAC,+CAA+C;MACzDuC,KAAK,EAAGL,kBAAoB;MAC5BzB,IAAI,EACH,IAAAX,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAA0C,QAAA,QACC,IAAA1C,MAAA,CAAAC,aAAA,EAACvD,UAAA,CAAA0D,OAAS;QAACO,IAAI,EAAGA,IAAM;QAACgC,UAAU;MAAA,CAAE,CAAC,EACpC,CAAE9B,UAAU,IAAIpB,UAAU,KAC3B,IAAAO,MAAA,CAAAC,aAAA;QAAMC,SAAS,EAAC;MAA0C,GACvD+B,UACG,CAEN;IACF,CACD,CACY,CAAC;EAEjB;EAEA,MAAMW,wBAAwB,GAAGpD,aAAa,GAC3C,IAAAW,QAAE,EAAE,4BAA6B,CAAC,GAClC,IAAA0C,aAAO,GACP;EACA,IAAAC,QAAE,EACD,yBAAyB,EACzB,0BAA0B,EAC1B3F,SAAS,CAACyB,MACX,CAAC,EACDzB,SAAS,CAACyB,MACV,CAAC;EACJ,OACC,IAAAoB,MAAA,CAAAC,aAAA,EAAC5D,WAAA,CAAAiG,YAAY,QACZ,IAAAtC,MAAA,CAAAC,aAAA,EAAC5D,WAAA,CAAA0G,WAAW,QACPC,WAAW,IACd,IAAAhD,MAAA,CAAAC,aAAA,EAAC5D,WAAA,CAAA4G,YAAY;IACZ/C,SAAS,EAAC,6BAA6B;IACvCgD,KAAK,EAAGd,kBAAoB;IAC5Be,YAAY,EAAG;MACdC,SAAS,EAAE,cAAc;MACzBlD,SAAS,EAAE;IACZ,CAAG;IACHS,IAAI,EACH,IAAAX,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAA0C,QAAA,QACC,IAAA1C,MAAA,CAAAC,aAAA,EAACvD,UAAA,CAAA0D,OAAS;MACTO,IAAI,EAAGA,IAAM;MACbT,SAAS,EAAC,qCAAqC;MAC/CyC,UAAU;IAAA,CACV,CAAC,EACA,CAAE9B,UAAU,IAAIpB,UAAU,KAC3B,IAAAO,MAAA,CAAAC,aAAA;MAAMC,SAAS,EAAC;IAA0C,GACvD+B,UACG,CAEN,CACF;IACDe,WAAW,EAAG;MACbK,WAAW,EAAET,wBAAwB;MACrC,GAAGI;IACJ,CAAG;IACHM,SAAS,EAAG;MAAEC,WAAW,EAAE;IAAO;EAAG,GAEnC,CAAE;IAAErG;EAAQ,CAAC,KACd,IAAA8C,MAAA,CAAAC,aAAA,EAAChD,iCAAiC;IACjCC,OAAO,EAAGA,OAAS;IACnBC,SAAS,EAAGA,SAAW;IACvBC,cAAc,EAAGA,cAAgB;IACjCC,SAAS,EAAGA;EAAW,CACvB,CAEW,CAEH,CACA,CAAC;AAEjB,CAAC;AAACmG,OAAA,CAAA9C,aAAA,GAAAA,aAAA;AAAA,IAAA+C,QAAA,GAAAD,OAAA,CAAApD,OAAA,GAEaM,aAAa"}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_components","_blocks2","_data","_icons","_store","_blockIcon","_interopRequireDefault","_blockTransformationsMenu","_blockVariationTransformations","_blockStylesMenu","_patternTransformationsMenu","_useBlockDisplayTitle","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","useDispatch","blockEditorStore","possibleBlockTransformations","patterns","blocks","useSelect","select","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","Array","isArray","_blocks","blockVariationTransformations","useBlockVariationTransforms","selectForMultipleBlocks","insertedBlocks","length","clientId","onBlockTransform","name","newBlocks","switchToBlockType","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isTemplate","isTemplatePart","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","_react","createElement","className","__","default","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockSwitcher","disabled","icon","invalidBlocks","isReusable","getBlockAttributes","canRemoveBlocks","getBlockStyles","getBlockType","getActiveBlockVariation","blocksStore","some","block","firstBlockName","_isSingleBlockSelected","blockType","_icon","match","isSelectionOfSameType","Set","map","size","copy","isReusableBlock","blockTitle","useBlockDisplayTitle","maximumLength","blockSwitcherLabel","hideDropdown","ToolbarGroup","ToolbarButton","title","Fragment","showColors","blockSwitcherDescription","sprintf","_n","ToolbarItem","toggleProps","DropdownMenu","label","popoverProps","placement","describedBy","menuProps","orientation","exports","_default"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"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 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\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\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 rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\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\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\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\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\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 isSingleBlock = blocks.length === 1;\n\tconst isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );\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\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds, disabled } ) => {\n\tconst {\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\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 blockType = getBlockType( firstBlockName );\n\n\t\t\tlet _icon;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\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 ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst hideDropdown = disabled || ( ! hasBlockStyles && ! canRemove );\n\tif ( hideDropdown ) {\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={ blockSwitcherLabel }\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 blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\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\tplacement: 'bottom-start',\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\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\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 default BlockSwitcher;\n"],"mappings":"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"}
|
|
@@ -149,19 +149,20 @@ function PrivateBlockToolbar({
|
|
|
149
149
|
}, (0, _react.createElement)("div", {
|
|
150
150
|
ref: toolbarWrapperRef,
|
|
151
151
|
className: innerClasses
|
|
152
|
-
}, !isMultiToolbar && isLargeViewport && isDefaultEditingMode && (0, _react.createElement)(_blockParentSelector.default, null), isUsingBindings && (0, _useBindingsAttributes.canBindBlock)(blockName) && (0, _react.createElement)(_blockBindingsToolbarIndicator.default, null), (shouldShowVisualToolbar || isMultiToolbar) &&
|
|
152
|
+
}, !isMultiToolbar && isLargeViewport && isDefaultEditingMode && (0, _react.createElement)(_blockParentSelector.default, null), isUsingBindings && (0, _useBindingsAttributes.canBindBlock)(blockName) && (0, _react.createElement)(_blockBindingsToolbarIndicator.default, null), (shouldShowVisualToolbar || isMultiToolbar) && (0, _react.createElement)("div", {
|
|
153
153
|
ref: nodeRef,
|
|
154
154
|
...showHoveredOrFocusedGestures
|
|
155
155
|
}, (0, _react.createElement)(_components.ToolbarGroup, {
|
|
156
156
|
className: "block-editor-block-toolbar__block-controls"
|
|
157
157
|
}, (0, _react.createElement)(_blockSwitcher.default, {
|
|
158
|
-
clientIds: blockClientIds
|
|
159
|
-
|
|
158
|
+
clientIds: blockClientIds,
|
|
159
|
+
disabled: !isDefaultEditingMode
|
|
160
|
+
}), isDefaultEditingMode && (0, _react.createElement)(_react.Fragment, null, !isMultiToolbar && (0, _react.createElement)(_blockLock.BlockLockToolbar, {
|
|
160
161
|
clientId: blockClientId
|
|
161
162
|
}), (0, _react.createElement)(_blockMover.default, {
|
|
162
163
|
clientIds: blockClientIds,
|
|
163
164
|
hideDragHandle: hideDragHandle
|
|
164
|
-
}))), (0, _react.createElement)(_shuffle.default, {
|
|
165
|
+
})))), (0, _react.createElement)(_shuffle.default, {
|
|
165
166
|
clientId: blockClientId
|
|
166
167
|
}), shouldShowVisualToolbar && isMultiToolbar && (0, _react.createElement)(_convertToGroupButtons.BlockGroupToolbar, null), shouldShowVisualToolbar && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockControls.default.Slot, {
|
|
167
168
|
group: "parent",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_data","_element","_compose","_blocks","_components","_blockMover","_blockParentSelector","_blockSwitcher","_blockControls","_blockToolbarLastItem","_blockSettingsMenu","_blockLock","_convertToGroupButtons","_blockEditVisuallyButton","_utils","_store","_blockNameContext","_navigableToolbar","_shuffle","_blockBindingsToolbarIndicator","_useHasBlockToolbar","_useBindingsAttributes","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","blockName","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","useSelect","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getBlockEditingMode","getBlockAttributes","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","getBlockType","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","metadata","bindings","rootClientId","hasBlockSupport","toolbarWrapperRef","useRef","nodeRef","showHoveredOrFocusedGestures","useShowHoveredOrFocusedGestures","ref","isLargeViewport","useViewportMatch","hasBlockToolbar","useHasBlockToolbar","isMultiToolbar","isSynced","isReusableBlock","isTemplatePart","classes","classnames","innerClasses","_react","createElement","default","focusEditorOnEscape","className","__","undefined","key","canBindBlock","ToolbarGroup","clientIds","BlockLockToolbar","clientId","BlockGroupToolbar","Fragment","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } 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 { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport NavigableToolbar from '../navigable-toolbar';\nimport Shuffle from './shuffle';\nimport BlockBindingsIndicator from '../block-bindings-toolbar-indicator';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\tblockName,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\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 parents = getBlockParents( selectedBlockClientId );\n\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst _isDefaultEditingMode =\n\t\t\tgetBlockEditingMode( selectedBlockClientId ) === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = !! getBlockAttributes( selectedBlockClientId )\n\t\t\t?.metadata?.bindings;\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockName: _blockName,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\trootClientId: blockRootClientId,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ firstParentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\tparentBlockType &&\n\t\t\t\tgetBlockEditingMode( firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1 &&\n\t\t\t\t_isDefaultEditingMode,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t} );\n\n\tconst innerClasses = classnames( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\tisLargeViewport &&\n\t\t\t\t\tisDefaultEditingMode && <BlockParentSelector /> }\n\t\t\t\t{ isUsingBindings && canBindBlock( blockName ) && (\n\t\t\t\t\t<BlockBindingsIndicator />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\tisDefaultEditingMode && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ nodeRef }\n\t\t\t\t\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t<Shuffle clientId={ blockClientId } />\n\t\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t\t<BlockGroupToolbar />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t{ isDefaultEditingMode && (\n\t\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_data","_element","_compose","_blocks","_components","_blockMover","_blockParentSelector","_blockSwitcher","_blockControls","_blockToolbarLastItem","_blockSettingsMenu","_blockLock","_convertToGroupButtons","_blockEditVisuallyButton","_utils","_store","_blockNameContext","_navigableToolbar","_shuffle","_blockBindingsToolbarIndicator","_useHasBlockToolbar","_useBindingsAttributes","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","blockName","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","useSelect","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getBlockEditingMode","getBlockAttributes","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","getBlockType","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","metadata","bindings","rootClientId","hasBlockSupport","toolbarWrapperRef","useRef","nodeRef","showHoveredOrFocusedGestures","useShowHoveredOrFocusedGestures","ref","isLargeViewport","useViewportMatch","hasBlockToolbar","useHasBlockToolbar","isMultiToolbar","isSynced","isReusableBlock","isTemplatePart","classes","classnames","innerClasses","_react","createElement","default","focusEditorOnEscape","className","__","undefined","key","canBindBlock","ToolbarGroup","clientIds","disabled","Fragment","BlockLockToolbar","clientId","BlockGroupToolbar","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } 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 { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport NavigableToolbar from '../navigable-toolbar';\nimport Shuffle from './shuffle';\nimport BlockBindingsIndicator from '../block-bindings-toolbar-indicator';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\tblockName,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\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 parents = getBlockParents( selectedBlockClientId );\n\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst _isDefaultEditingMode =\n\t\t\tgetBlockEditingMode( selectedBlockClientId ) === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = !! getBlockAttributes( selectedBlockClientId )\n\t\t\t?.metadata?.bindings;\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockName: _blockName,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\trootClientId: blockRootClientId,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ firstParentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\tparentBlockType &&\n\t\t\t\tgetBlockEditingMode( firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1 &&\n\t\t\t\t_isDefaultEditingMode,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t} );\n\n\tconst innerClasses = classnames( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\tisLargeViewport &&\n\t\t\t\t\tisDefaultEditingMode && <BlockParentSelector /> }\n\t\t\t\t{ isUsingBindings && canBindBlock( blockName ) && (\n\t\t\t\t\t<BlockBindingsIndicator />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showHoveredOrFocusedGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\tdisabled={ ! isDefaultEditingMode }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ isDefaultEditingMode && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\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<BlockMover\n\t\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<Shuffle clientId={ blockClientId } />\n\t\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t\t<BlockGroupToolbar />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t{ isDefaultEditingMode && (\n\t\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -31,7 +31,8 @@ function Shuffle({
|
|
|
31
31
|
}) {
|
|
32
32
|
const {
|
|
33
33
|
categories,
|
|
34
|
-
patterns
|
|
34
|
+
patterns,
|
|
35
|
+
patternName
|
|
35
36
|
} = (0, _data.useSelect)(select => {
|
|
36
37
|
const {
|
|
37
38
|
getBlockAttributes,
|
|
@@ -40,11 +41,13 @@ function Shuffle({
|
|
|
40
41
|
} = select(_store.store);
|
|
41
42
|
const attributes = getBlockAttributes(clientId);
|
|
42
43
|
const _categories = attributes?.metadata?.categories || EMPTY_ARRAY;
|
|
44
|
+
const _patternName = attributes?.metadata?.patternName;
|
|
43
45
|
const rootBlock = getBlockRootClientId(clientId);
|
|
44
46
|
const _patterns = __experimentalGetAllowedPatterns(rootBlock);
|
|
45
47
|
return {
|
|
46
48
|
categories: _categories,
|
|
47
|
-
patterns: _patterns
|
|
49
|
+
patterns: _patterns,
|
|
50
|
+
patternName: _patternName
|
|
48
51
|
};
|
|
49
52
|
}, [clientId]);
|
|
50
53
|
const {
|
|
@@ -67,22 +70,28 @@ function Shuffle({
|
|
|
67
70
|
if (sameCategoryPatternsWithSingleWrapper.length === 0) {
|
|
68
71
|
return null;
|
|
69
72
|
}
|
|
73
|
+
function getNextPattern() {
|
|
74
|
+
const numberOfPatterns = sameCategoryPatternsWithSingleWrapper.length;
|
|
75
|
+
const patternIndex = sameCategoryPatternsWithSingleWrapper.findIndex(({
|
|
76
|
+
name
|
|
77
|
+
}) => name === patternName);
|
|
78
|
+
const nextPatternIndex = patternIndex + 1 < numberOfPatterns ? patternIndex + 1 : 0;
|
|
79
|
+
return sameCategoryPatternsWithSingleWrapper[nextPatternIndex];
|
|
80
|
+
}
|
|
70
81
|
const ComponentToUse = as;
|
|
71
82
|
return (0, _react.createElement)(ComponentToUse, {
|
|
72
83
|
label: (0, _i18n.__)('Shuffle'),
|
|
73
84
|
icon: _icons.shuffle,
|
|
74
85
|
onClick: () => {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
randomPattern.blocks[0].attributes = {
|
|
79
|
-
...randomPattern.blocks[0].attributes,
|
|
86
|
+
const nextPattern = getNextPattern();
|
|
87
|
+
nextPattern.blocks[0].attributes = {
|
|
88
|
+
...nextPattern.blocks[0].attributes,
|
|
80
89
|
metadata: {
|
|
81
|
-
...
|
|
90
|
+
...nextPattern.blocks[0].attributes.metadata,
|
|
82
91
|
categories
|
|
83
92
|
}
|
|
84
93
|
};
|
|
85
|
-
replaceBlocks(clientId,
|
|
94
|
+
replaceBlocks(clientId, nextPattern.blocks);
|
|
86
95
|
}
|
|
87
96
|
});
|
|
88
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_icons","require","_components","_i18n","_element","_data","_store","EMPTY_ARRAY","Container","props","_react","createElement","ToolbarGroup","ToolbarButton","Shuffle","clientId","as","categories","patterns","useSelect","select","getBlockAttributes","getBlockRootClientId","__experimentalGetAllowedPatterns","blockEditorStore","attributes","_categories","metadata","rootBlock","_patterns","replaceBlocks","useDispatch","sameCategoryPatternsWithSingleWrapper","useMemo","length","filter","pattern","blocks","some","category","includes","
|
|
1
|
+
{"version":3,"names":["_icons","require","_components","_i18n","_element","_data","_store","EMPTY_ARRAY","Container","props","_react","createElement","ToolbarGroup","ToolbarButton","Shuffle","clientId","as","categories","patterns","patternName","useSelect","select","getBlockAttributes","getBlockRootClientId","__experimentalGetAllowedPatterns","blockEditorStore","attributes","_categories","metadata","_patternName","rootBlock","_patterns","replaceBlocks","useDispatch","sameCategoryPatternsWithSingleWrapper","useMemo","length","filter","pattern","blocks","some","category","includes","getNextPattern","numberOfPatterns","patternIndex","findIndex","name","nextPatternIndex","ComponentToUse","label","__","icon","shuffle","onClick","nextPattern"],"sources":["@wordpress/block-editor/src/components/block-toolbar/shuffle.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { shuffle } from '@wordpress/icons';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst EMPTY_ARRAY = [];\n\nfunction Container( props ) {\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton { ...props } />\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default function Shuffle( { clientId, as = Container } ) {\n\tconst { categories, patterns, patternName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetAllowedPatterns,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst _categories = attributes?.metadata?.categories || EMPTY_ARRAY;\n\t\t\tconst _patternName = attributes?.metadata?.patternName;\n\t\t\tconst rootBlock = getBlockRootClientId( clientId );\n\t\t\tconst _patterns = __experimentalGetAllowedPatterns( rootBlock );\n\t\t\treturn {\n\t\t\t\tcategories: _categories,\n\t\t\t\tpatterns: _patterns,\n\t\t\t\tpatternName: _patternName,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst sameCategoryPatternsWithSingleWrapper = useMemo( () => {\n\t\tif (\n\t\t\t! categories ||\n\t\t\tcategories.length === 0 ||\n\t\t\t! patterns ||\n\t\t\tpatterns.length === 0\n\t\t) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\treturn patterns.filter( ( pattern ) => {\n\t\t\treturn (\n\t\t\t\t// Check if the pattern has only one top level block,\n\t\t\t\t// otherwise we may shuffle to pattern that will not allow to continue shuffling.\n\t\t\t\tpattern.blocks.length === 1 &&\n\t\t\t\tpattern.categories?.some( ( category ) => {\n\t\t\t\t\treturn categories.includes( category );\n\t\t\t\t} )\n\t\t\t);\n\t\t} );\n\t}, [ categories, patterns ] );\n\tif ( sameCategoryPatternsWithSingleWrapper.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tfunction getNextPattern() {\n\t\tconst numberOfPatterns = sameCategoryPatternsWithSingleWrapper.length;\n\t\tconst patternIndex = sameCategoryPatternsWithSingleWrapper.findIndex(\n\t\t\t( { name } ) => name === patternName\n\t\t);\n\t\tconst nextPatternIndex =\n\t\t\tpatternIndex + 1 < numberOfPatterns ? patternIndex + 1 : 0;\n\t\treturn sameCategoryPatternsWithSingleWrapper[ nextPatternIndex ];\n\t}\n\n\tconst ComponentToUse = as;\n\treturn (\n\t\t<ComponentToUse\n\t\t\tlabel={ __( 'Shuffle' ) }\n\t\t\ticon={ shuffle }\n\t\t\tonClick={ () => {\n\t\t\t\tconst nextPattern = getNextPattern();\n\t\t\t\tnextPattern.blocks[ 0 ].attributes = {\n\t\t\t\t\t...nextPattern.blocks[ 0 ].attributes,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...nextPattern.blocks[ 0 ].attributes.metadata,\n\t\t\t\t\t\tcategories,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\treplaceBlocks( clientId, nextPattern.blocks );\n\t\t\t} }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -55,7 +55,10 @@ function BlockSelectionButton({
|
|
|
55
55
|
getBlockIndex,
|
|
56
56
|
hasBlockMovingClientId,
|
|
57
57
|
getBlockListSettings,
|
|
58
|
-
__unstableGetEditorMode
|
|
58
|
+
__unstableGetEditorMode,
|
|
59
|
+
getNextBlockClientId,
|
|
60
|
+
getPreviousBlockClientId,
|
|
61
|
+
canRemoveBlock
|
|
59
62
|
} = select(_store.store);
|
|
60
63
|
const {
|
|
61
64
|
getActiveBlockVariation,
|
|
@@ -69,18 +72,45 @@ function BlockSelectionButton({
|
|
|
69
72
|
const blockType = getBlockType(name);
|
|
70
73
|
const orientation = getBlockListSettings(rootClientId)?.orientation;
|
|
71
74
|
const match = getActiveBlockVariation(name, attributes);
|
|
75
|
+
const isBlockTemplatePart = blockType?.name === 'core/template-part';
|
|
76
|
+
let isNextBlockTemplatePart = false;
|
|
77
|
+
const nextClientId = getNextBlockClientId();
|
|
78
|
+
if (nextClientId) {
|
|
79
|
+
const {
|
|
80
|
+
name: nextName
|
|
81
|
+
} = getBlock(nextClientId);
|
|
82
|
+
const nextBlockType = getBlockType(nextName);
|
|
83
|
+
isNextBlockTemplatePart = nextBlockType?.name === 'core/template-part';
|
|
84
|
+
}
|
|
85
|
+
let isPrevBlockTemplatePart = false;
|
|
86
|
+
const prevClientId = getPreviousBlockClientId();
|
|
87
|
+
if (prevClientId) {
|
|
88
|
+
const {
|
|
89
|
+
name: prevName
|
|
90
|
+
} = getBlock(prevClientId);
|
|
91
|
+
const prevBlockType = getBlockType(prevName);
|
|
92
|
+
isPrevBlockTemplatePart = prevBlockType?.name === 'core/template-part';
|
|
93
|
+
}
|
|
72
94
|
return {
|
|
73
95
|
blockMovingMode: hasBlockMovingClientId(),
|
|
74
96
|
editorMode: __unstableGetEditorMode(),
|
|
75
97
|
icon: match?.icon || blockType.icon,
|
|
76
|
-
label: (0, _blocks.__experimentalGetAccessibleBlockLabel)(blockType, attributes, index + 1, orientation)
|
|
98
|
+
label: (0, _blocks.__experimentalGetAccessibleBlockLabel)(blockType, attributes, index + 1, orientation),
|
|
99
|
+
isBlockTemplatePart,
|
|
100
|
+
isNextBlockTemplatePart,
|
|
101
|
+
isPrevBlockTemplatePart,
|
|
102
|
+
canRemove: canRemoveBlock(clientId, rootClientId)
|
|
77
103
|
};
|
|
78
104
|
}, [clientId, rootClientId]);
|
|
79
105
|
const {
|
|
80
106
|
label,
|
|
81
107
|
icon,
|
|
82
108
|
blockMovingMode,
|
|
83
|
-
editorMode
|
|
109
|
+
editorMode,
|
|
110
|
+
isBlockTemplatePart,
|
|
111
|
+
isNextBlockTemplatePart,
|
|
112
|
+
isPrevBlockTemplatePart,
|
|
113
|
+
canRemove
|
|
84
114
|
} = selected;
|
|
85
115
|
const {
|
|
86
116
|
setNavigationMode,
|
|
@@ -90,9 +120,11 @@ function BlockSelectionButton({
|
|
|
90
120
|
|
|
91
121
|
// Focus the breadcrumb in navigation mode.
|
|
92
122
|
(0, _element.useEffect)(() => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
123
|
+
if (editorMode === 'navigation') {
|
|
124
|
+
ref.current.focus();
|
|
125
|
+
(0, _a11y.speak)(label);
|
|
126
|
+
}
|
|
127
|
+
}, [label, editorMode]);
|
|
96
128
|
const blockElement = (0, _useBlockRefs.__unstableUseBlockElement)(clientId);
|
|
97
129
|
const {
|
|
98
130
|
hasBlockMovingClientId,
|
|
@@ -214,9 +246,11 @@ function BlockSelectionButton({
|
|
|
214
246
|
}, (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_blockIcon.default, {
|
|
215
247
|
icon: icon,
|
|
216
248
|
showColors: true
|
|
217
|
-
})), (0, _react.createElement)(_components.FlexItem, null, editorMode === 'zoom-out' && (0, _react.createElement)(_blockMover.default, {
|
|
249
|
+
})), (0, _react.createElement)(_components.FlexItem, null, editorMode === 'zoom-out' && !isBlockTemplatePart && (0, _react.createElement)(_blockMover.default, {
|
|
218
250
|
clientIds: [clientId],
|
|
219
|
-
hideDragHandle: true
|
|
251
|
+
hideDragHandle: true,
|
|
252
|
+
isBlockMoverUpButtonDisabled: isPrevBlockTemplatePart,
|
|
253
|
+
isBlockMoverDownButtonDisabled: isNextBlockTemplatePart
|
|
220
254
|
}), editorMode === 'navigation' && (0, _react.createElement)(_blockDraggable.default, {
|
|
221
255
|
clientIds: [clientId]
|
|
222
256
|
}, draggableProps => (0, _react.createElement)(_components.Button, {
|
|
@@ -232,6 +266,12 @@ function BlockSelectionButton({
|
|
|
232
266
|
}))), editorMode === 'zoom-out' && (0, _react.createElement)(_shuffle.default, {
|
|
233
267
|
clientId: clientId,
|
|
234
268
|
as: _components.Button
|
|
269
|
+
}), canRemove && editorMode === 'zoom-out' && !isBlockTemplatePart && (0, _react.createElement)(_components.ToolbarButton, {
|
|
270
|
+
icon: _icons.trash,
|
|
271
|
+
label: "Delete",
|
|
272
|
+
onClick: () => {
|
|
273
|
+
removeBlock(clientId);
|
|
274
|
+
}
|
|
235
275
|
}), (0, _react.createElement)(_components.FlexItem, null, (0, _react.createElement)(_components.Button, {
|
|
236
276
|
ref: ref,
|
|
237
277
|
onClick: editorMode === 'navigation' ? () => setNavigationMode(false) : undefined,
|