@wordpress/block-editor 15.13.1 → 15.13.2-next.v.202602241322.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.
Files changed (49) hide show
  1. package/build/components/block-inspector/index.cjs +1 -1
  2. package/build/components/block-inspector/index.cjs.map +2 -2
  3. package/build/components/block-list/block.cjs +18 -16
  4. package/build/components/block-list/block.cjs.map +3 -3
  5. package/build/components/block-toolbar/block-styles-dropdown.cjs +74 -0
  6. package/build/components/block-toolbar/block-styles-dropdown.cjs.map +7 -0
  7. package/build/components/block-toolbar/block-toolbar-icon.cjs +17 -1
  8. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +3 -3
  9. package/build/components/provider/index.cjs +1 -1
  10. package/build/components/provider/index.cjs.map +2 -2
  11. package/build/hooks/style.cjs +1 -1
  12. package/build/hooks/style.cjs.map +2 -2
  13. package/build/store/private-selectors.cjs +22 -16
  14. package/build/store/private-selectors.cjs.map +2 -2
  15. package/build/store/reducer.cjs +25 -21
  16. package/build/store/reducer.cjs.map +2 -2
  17. package/build-module/components/block-inspector/index.mjs +1 -1
  18. package/build-module/components/block-inspector/index.mjs.map +2 -2
  19. package/build-module/components/block-list/block.mjs +18 -16
  20. package/build-module/components/block-list/block.mjs.map +3 -3
  21. package/build-module/components/block-toolbar/block-styles-dropdown.mjs +43 -0
  22. package/build-module/components/block-toolbar/block-styles-dropdown.mjs.map +7 -0
  23. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +17 -1
  24. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  25. package/build-module/components/provider/index.mjs +1 -1
  26. package/build-module/components/provider/index.mjs.map +2 -2
  27. package/build-module/hooks/style.mjs +1 -1
  28. package/build-module/hooks/style.mjs.map +2 -2
  29. package/build-module/store/private-selectors.mjs +22 -16
  30. package/build-module/store/private-selectors.mjs.map +2 -2
  31. package/build-module/store/reducer.mjs +25 -21
  32. package/build-module/store/reducer.mjs.map +2 -2
  33. package/build-style/content-rtl.css +0 -23
  34. package/build-style/content.css +0 -23
  35. package/build-style/style-rtl.css +0 -3
  36. package/build-style/style.css +0 -3
  37. package/package.json +39 -39
  38. package/src/components/block-inspector/index.js +3 -1
  39. package/src/components/block-list/block.js +25 -23
  40. package/src/components/block-list/content.scss +0 -35
  41. package/src/components/block-toolbar/block-styles-dropdown.js +52 -0
  42. package/src/components/block-toolbar/block-toolbar-icon.js +18 -2
  43. package/src/components/block-tools/style.scss +0 -5
  44. package/src/components/provider/index.js +3 -3
  45. package/src/hooks/style.js +4 -1
  46. package/src/store/private-selectors.js +62 -31
  47. package/src/store/reducer.js +42 -32
  48. package/src/store/test/private-selectors.js +239 -0
  49. package/src/store/test/reducer.js +450 -1
@@ -292,7 +292,7 @@ var BlockInspectorSingleBlock = ({
292
292
  import_block_card.default,
293
293
  {
294
294
  ...parentBlockInformation,
295
- className: parentBlockInformation.isSynced && "is-synced",
295
+ className: parentBlockInformation?.isSynced && "is-synced",
296
296
  parentClientId: editedContentOnlySection
297
297
  }
298
298
  ),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-inspector/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport EditContents from './edit-contents';\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockStyles from '../block-styles';\nimport { ListViewContentPopover } from '../inspector-controls/list-view-content-popover';\nimport InspectorControls from '../inspector-controls';\nimport { default as InspectorControlsTabs } from '../inspector-controls-tabs';\nimport useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-controls-tabs';\nimport InspectorControlsLastItem from '../inspector-controls/last-item';\nimport AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';\nimport PositionControls from '../inspector-controls-tabs/position-controls-panel';\nimport useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport ContentTab from '../inspector-controls-tabs/content-tab';\nimport ViewportVisibilityInfo from '../block-visibility/viewport-visibility-info';\nimport { unlock } from '../../lock-unlock';\n\nfunction StyleInspectorSlots( {\n\tblockName,\n\tshowAdvancedControls = true,\n\tshowPositionControls = true,\n\tshowBindingsControls = true,\n} ) {\n\tconst borderPanelLabel = useBorderPanelLabel( { blockName } );\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"background\"\n\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"border\" label={ borderPanelLabel } />\n\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t\t{ showPositionControls && <PositionControls /> }\n\t\t\t{ showBindingsControls && (\n\t\t\t\t<InspectorControls.Slot group=\"bindings\" />\n\t\t\t) }\n\t\t\t{ showAdvancedControls && (\n\t\t\t\t<div>\n\t\t\t\t\t<AdvancedControls />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction BlockInspector() {\n\tconst {\n\t\tselectedBlockCount,\n\t\trenderedBlockName,\n\t\trenderedBlockClientId,\n\t\tblockType,\n\t\tisSectionBlock,\n\t\tisSectionBlockInSelection,\n\t\thasBlockStyles,\n\t\teditedContentOnlySection,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\tgetParentSectionBlock,\n\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\tgetEditedContentOnlySection,\n\t\t\tisWithinEditedContentOnlySection,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getBlockStyles } = select( blocksStore );\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst isWithinEditedSection = isWithinEditedContentOnlySection(\n\t\t\t_selectedBlockClientId\n\t\t);\n\t\tconst _renderedBlockClientId = isWithinEditedSection\n\t\t\t? _selectedBlockClientId\n\t\t\t: getParentSectionBlock( _selectedBlockClientId ) ||\n\t\t\t _selectedBlockClientId;\n\t\tconst _renderedBlockName =\n\t\t\t_renderedBlockClientId && getBlockName( _renderedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_renderedBlockName && getBlockType( _renderedBlockName );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst _isSectionBlockInSelection = selectedBlockClientIds.some(\n\t\t\t( id ) => _isSectionBlock( id )\n\t\t);\n\t\tconst blockStyles =\n\t\t\t_renderedBlockName && getBlockStyles( _renderedBlockName );\n\t\tconst _hasBlockStyles = blockStyles && blockStyles.length > 0;\n\n\t\treturn {\n\t\t\tselectedBlockCount: getSelectedBlockCount(),\n\t\t\trenderedBlockClientId: _renderedBlockClientId,\n\t\t\trenderedBlockName: _renderedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\tisSectionBlockInSelection: _isSectionBlockInSelection,\n\t\t\tisSectionBlock: _isSectionBlock( _renderedBlockClientId ),\n\t\t\thasBlockStyles: _hasBlockStyles,\n\t\t\teditedContentOnlySection: getEditedContentOnlySection(),\n\t\t};\n\t}, [] );\n\n\t// Separate useSelect for contentClientIds with proper dependencies\n\tconst contentClientIds = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSectionBlock || ! renderedBlockClientId ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst descendants = getClientIdsOfDescendants(\n\t\t\t\trenderedBlockClientId\n\t\t\t);\n\n\t\t\t// Exclude items from the content tab that are already present in the\n\t\t\t// List View tab.\n\t\t\tconst listViewDescendants = new Set();\n\t\t\tdescendants.forEach( ( clientId ) => {\n\t\t\t\tconst blockName = getBlockName( clientId );\n\t\t\t\t// Navigation block doesn't have List View block support, but\n\t\t\t\t// it does have a custom implementation that is shown within\n\t\t\t\t// patterns, so it's included in this condition.\n\t\t\t\tif (\n\t\t\t\t\tblockName === 'core/navigation' ||\n\t\t\t\t\thasBlockSupport( blockName, 'listView' )\n\t\t\t\t) {\n\t\t\t\t\tconst listViewChildren =\n\t\t\t\t\t\tgetClientIdsOfDescendants( clientId );\n\t\t\t\t\tlistViewChildren.forEach( ( childId ) =>\n\t\t\t\t\t\tlistViewDescendants.add( childId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn descendants.filter( ( current ) => {\n\t\t\t\treturn (\n\t\t\t\t\t! listViewDescendants.has( current ) &&\n\t\t\t\t\tgetBlockEditingMode( current ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ isSectionBlock, renderedBlockClientId ]\n\t);\n\n\tconst availableTabs = useInspectorControlsTabs(\n\t\tblockType?.name,\n\t\tcontentClientIds,\n\t\tisSectionBlock,\n\t\thasBlockStyles\n\t);\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\n\t// The block inspector animation settings will be completely\n\t// removed in the future to create an API which allows the block\n\t// inspector to transition between what it\n\t// displays based on the relationship between the selected block\n\t// and its parent, and only enable it if the parent is controlling\n\t// its children blocks.\n\tconst blockInspectorAnimationSettings =\n\t\tuseBlockInspectorAnimationSettings( blockType );\n\n\tconst hasSelectedBlocks = selectedBlockCount > 1;\n\n\tif ( hasSelectedBlocks && ! isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t{ hasMultipleTabs ? (\n\t\t\t\t\t<InspectorControlsTabs tabs={ availableTabs } />\n\t\t\t\t) : (\n\t\t\t\t\t<StyleInspectorSlots\n\t\t\t\t\t\tblockName={ renderedBlockName }\n\t\t\t\t\t\tshowAdvancedControls={ false }\n\t\t\t\t\t\tshowPositionControls={ false }\n\t\t\t\t\t\tshowBindingsControls={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( hasSelectedBlocks && isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isRenderedBlockUnregistered =\n\t\trenderedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the rendered block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tconst shouldShowWarning =\n\t\t! blockType || ! renderedBlockClientId || isRenderedBlockUnregistered;\n\n\tif ( shouldShowWarning ) {\n\t\treturn (\n\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<BlockInspectorSingleBlockWrapper\n\t\t\tanimate={ blockInspectorAnimationSettings }\n\t\t\twrapper={ ( children ) => (\n\t\t\t\t<AnimatedContainer\n\t\t\t\t\tblockInspectorAnimationSettings={\n\t\t\t\t\t\tblockInspectorAnimationSettings\n\t\t\t\t\t}\n\t\t\t\t\trenderedBlockClientId={ renderedBlockClientId }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</AnimatedContainer>\n\t\t\t) }\n\t\t>\n\t\t\t<BlockInspectorSingleBlock\n\t\t\t\trenderedBlockClientId={ renderedBlockClientId }\n\t\t\t\tblockName={ blockType.name }\n\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\tavailableTabs={ availableTabs }\n\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\teditedContentOnlySection={ editedContentOnlySection }\n\t\t\t/>\n\t\t</BlockInspectorSingleBlockWrapper>\n\t);\n}\n\nconst BlockInspectorSingleBlockWrapper = ( { animate, wrapper, children } ) => {\n\treturn animate ? wrapper( children ) : children;\n};\n\nconst AnimatedContainer = ( {\n\tblockInspectorAnimationSettings,\n\trenderedBlockClientId,\n\tchildren,\n} ) => {\n\tconst animationOrigin =\n\t\tblockInspectorAnimationSettings &&\n\t\tblockInspectorAnimationSettings.enterDirection === 'leftToRight'\n\t\t\t? -50\n\t\t\t: 50;\n\n\treturn (\n\t\t<motion.div\n\t\t\tanimate={ {\n\t\t\t\tx: 0,\n\t\t\t\topacity: 1,\n\t\t\t\ttransition: {\n\t\t\t\t\tease: 'easeInOut',\n\t\t\t\t\tduration: 0.14,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tx: animationOrigin,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\tkey={ renderedBlockClientId }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( {\n\t// The block that is displayed in the inspector. This is the block whose\n\t// controls and information are shown to the user.\n\trenderedBlockClientId,\n\tblockName,\n\tisSectionBlock,\n\tavailableTabs,\n\tcontentClientIds,\n\thasBlockStyles,\n\teditedContentOnlySection,\n} ) => {\n\tconst listViewRef = useRef( null );\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\tconst hasParentChildBlockCards =\n\t\teditedContentOnlySection &&\n\t\teditedContentOnlySection !== renderedBlockClientId;\n\tconst parentBlockInformation = useBlockDisplayInformation(\n\t\teditedContentOnlySection\n\t);\n\tconst blockInformation = useBlockDisplayInformation(\n\t\trenderedBlockClientId\n\t);\n\tconst isBlockSynced = blockInformation.isSynced;\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t{ hasParentChildBlockCards && (\n\t\t\t\t<BlockCard\n\t\t\t\t\t{ ...parentBlockInformation }\n\t\t\t\t\tclassName={ parentBlockInformation.isSynced && 'is-synced' }\n\t\t\t\t\tparentClientId={ editedContentOnlySection }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockCard\n\t\t\t\t{ ...blockInformation }\n\t\t\t\tallowParentNavigation\n\t\t\t\tclassName={ isBlockSynced && 'is-synced' }\n\t\t\t\tisChild={ hasParentChildBlockCards }\n\t\t\t\tclientId={ renderedBlockClientId }\n\t\t\t/>\n\t\t\t<ViewportVisibilityInfo clientId={ renderedBlockClientId } />\n\t\t\t<EditContents clientId={ renderedBlockClientId } />\n\t\t\t<BlockVariationTransforms blockClientId={ renderedBlockClientId } />\n\t\t\t{ hasMultipleTabs && (\n\t\t\t\t<>\n\t\t\t\t\t<InspectorControlsTabs\n\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\tclientId={ renderedBlockClientId }\n\t\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\t\ttabs={ availableTabs }\n\t\t\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! hasMultipleTabs && (\n\t\t\t\t<>\n\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t<BlockStyles clientId={ renderedBlockClientId } />\n\t\t\t\t\t) }\n\t\t\t\t\t<ContentTab contentClientIds={ contentClientIds } />\n\t\t\t\t\t<InspectorControls.Slot group=\"content\" />\n\t\t\t\t\t<InspectorControls.Slot group=\"list\" ref={ listViewRef } />\n\t\t\t\t\t<ListViewContentPopover listViewRef={ listViewRef } />\n\t\t\t\t\t{ ! isSectionBlock && (\n\t\t\t\t\t\t<StyleInspectorSlots blockName={ blockName } />\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControlsLastItem.Slot />\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport EditContents from './edit-contents';\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockStyles from '../block-styles';\nimport { ListViewContentPopover } from '../inspector-controls/list-view-content-popover';\nimport InspectorControls from '../inspector-controls';\nimport { default as InspectorControlsTabs } from '../inspector-controls-tabs';\nimport useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-controls-tabs';\nimport InspectorControlsLastItem from '../inspector-controls/last-item';\nimport AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';\nimport PositionControls from '../inspector-controls-tabs/position-controls-panel';\nimport useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport ContentTab from '../inspector-controls-tabs/content-tab';\nimport ViewportVisibilityInfo from '../block-visibility/viewport-visibility-info';\nimport { unlock } from '../../lock-unlock';\n\nfunction StyleInspectorSlots( {\n\tblockName,\n\tshowAdvancedControls = true,\n\tshowPositionControls = true,\n\tshowBindingsControls = true,\n} ) {\n\tconst borderPanelLabel = useBorderPanelLabel( { blockName } );\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"background\"\n\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"border\" label={ borderPanelLabel } />\n\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t\t{ showPositionControls && <PositionControls /> }\n\t\t\t{ showBindingsControls && (\n\t\t\t\t<InspectorControls.Slot group=\"bindings\" />\n\t\t\t) }\n\t\t\t{ showAdvancedControls && (\n\t\t\t\t<div>\n\t\t\t\t\t<AdvancedControls />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction BlockInspector() {\n\tconst {\n\t\tselectedBlockCount,\n\t\trenderedBlockName,\n\t\trenderedBlockClientId,\n\t\tblockType,\n\t\tisSectionBlock,\n\t\tisSectionBlockInSelection,\n\t\thasBlockStyles,\n\t\teditedContentOnlySection,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\tgetParentSectionBlock,\n\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\tgetEditedContentOnlySection,\n\t\t\tisWithinEditedContentOnlySection,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getBlockStyles } = select( blocksStore );\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst isWithinEditedSection = isWithinEditedContentOnlySection(\n\t\t\t_selectedBlockClientId\n\t\t);\n\t\tconst _renderedBlockClientId = isWithinEditedSection\n\t\t\t? _selectedBlockClientId\n\t\t\t: getParentSectionBlock( _selectedBlockClientId ) ||\n\t\t\t _selectedBlockClientId;\n\t\tconst _renderedBlockName =\n\t\t\t_renderedBlockClientId && getBlockName( _renderedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_renderedBlockName && getBlockType( _renderedBlockName );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst _isSectionBlockInSelection = selectedBlockClientIds.some(\n\t\t\t( id ) => _isSectionBlock( id )\n\t\t);\n\t\tconst blockStyles =\n\t\t\t_renderedBlockName && getBlockStyles( _renderedBlockName );\n\t\tconst _hasBlockStyles = blockStyles && blockStyles.length > 0;\n\n\t\treturn {\n\t\t\tselectedBlockCount: getSelectedBlockCount(),\n\t\t\trenderedBlockClientId: _renderedBlockClientId,\n\t\t\trenderedBlockName: _renderedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\tisSectionBlockInSelection: _isSectionBlockInSelection,\n\t\t\tisSectionBlock: _isSectionBlock( _renderedBlockClientId ),\n\t\t\thasBlockStyles: _hasBlockStyles,\n\t\t\teditedContentOnlySection: getEditedContentOnlySection(),\n\t\t};\n\t}, [] );\n\n\t// Separate useSelect for contentClientIds with proper dependencies\n\tconst contentClientIds = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSectionBlock || ! renderedBlockClientId ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst descendants = getClientIdsOfDescendants(\n\t\t\t\trenderedBlockClientId\n\t\t\t);\n\n\t\t\t// Exclude items from the content tab that are already present in the\n\t\t\t// List View tab.\n\t\t\tconst listViewDescendants = new Set();\n\t\t\tdescendants.forEach( ( clientId ) => {\n\t\t\t\tconst blockName = getBlockName( clientId );\n\t\t\t\t// Navigation block doesn't have List View block support, but\n\t\t\t\t// it does have a custom implementation that is shown within\n\t\t\t\t// patterns, so it's included in this condition.\n\t\t\t\tif (\n\t\t\t\t\tblockName === 'core/navigation' ||\n\t\t\t\t\thasBlockSupport( blockName, 'listView' )\n\t\t\t\t) {\n\t\t\t\t\tconst listViewChildren =\n\t\t\t\t\t\tgetClientIdsOfDescendants( clientId );\n\t\t\t\t\tlistViewChildren.forEach( ( childId ) =>\n\t\t\t\t\t\tlistViewDescendants.add( childId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn descendants.filter( ( current ) => {\n\t\t\t\treturn (\n\t\t\t\t\t! listViewDescendants.has( current ) &&\n\t\t\t\t\tgetBlockEditingMode( current ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ isSectionBlock, renderedBlockClientId ]\n\t);\n\n\tconst availableTabs = useInspectorControlsTabs(\n\t\tblockType?.name,\n\t\tcontentClientIds,\n\t\tisSectionBlock,\n\t\thasBlockStyles\n\t);\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\n\t// The block inspector animation settings will be completely\n\t// removed in the future to create an API which allows the block\n\t// inspector to transition between what it\n\t// displays based on the relationship between the selected block\n\t// and its parent, and only enable it if the parent is controlling\n\t// its children blocks.\n\tconst blockInspectorAnimationSettings =\n\t\tuseBlockInspectorAnimationSettings( blockType );\n\n\tconst hasSelectedBlocks = selectedBlockCount > 1;\n\n\tif ( hasSelectedBlocks && ! isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t{ hasMultipleTabs ? (\n\t\t\t\t\t<InspectorControlsTabs tabs={ availableTabs } />\n\t\t\t\t) : (\n\t\t\t\t\t<StyleInspectorSlots\n\t\t\t\t\t\tblockName={ renderedBlockName }\n\t\t\t\t\t\tshowAdvancedControls={ false }\n\t\t\t\t\t\tshowPositionControls={ false }\n\t\t\t\t\t\tshowBindingsControls={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( hasSelectedBlocks && isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isRenderedBlockUnregistered =\n\t\trenderedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the rendered block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tconst shouldShowWarning =\n\t\t! blockType || ! renderedBlockClientId || isRenderedBlockUnregistered;\n\n\tif ( shouldShowWarning ) {\n\t\treturn (\n\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<BlockInspectorSingleBlockWrapper\n\t\t\tanimate={ blockInspectorAnimationSettings }\n\t\t\twrapper={ ( children ) => (\n\t\t\t\t<AnimatedContainer\n\t\t\t\t\tblockInspectorAnimationSettings={\n\t\t\t\t\t\tblockInspectorAnimationSettings\n\t\t\t\t\t}\n\t\t\t\t\trenderedBlockClientId={ renderedBlockClientId }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</AnimatedContainer>\n\t\t\t) }\n\t\t>\n\t\t\t<BlockInspectorSingleBlock\n\t\t\t\trenderedBlockClientId={ renderedBlockClientId }\n\t\t\t\tblockName={ blockType.name }\n\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\tavailableTabs={ availableTabs }\n\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\teditedContentOnlySection={ editedContentOnlySection }\n\t\t\t/>\n\t\t</BlockInspectorSingleBlockWrapper>\n\t);\n}\n\nconst BlockInspectorSingleBlockWrapper = ( { animate, wrapper, children } ) => {\n\treturn animate ? wrapper( children ) : children;\n};\n\nconst AnimatedContainer = ( {\n\tblockInspectorAnimationSettings,\n\trenderedBlockClientId,\n\tchildren,\n} ) => {\n\tconst animationOrigin =\n\t\tblockInspectorAnimationSettings &&\n\t\tblockInspectorAnimationSettings.enterDirection === 'leftToRight'\n\t\t\t? -50\n\t\t\t: 50;\n\n\treturn (\n\t\t<motion.div\n\t\t\tanimate={ {\n\t\t\t\tx: 0,\n\t\t\t\topacity: 1,\n\t\t\t\ttransition: {\n\t\t\t\t\tease: 'easeInOut',\n\t\t\t\t\tduration: 0.14,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tx: animationOrigin,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\tkey={ renderedBlockClientId }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( {\n\t// The block that is displayed in the inspector. This is the block whose\n\t// controls and information are shown to the user.\n\trenderedBlockClientId,\n\tblockName,\n\tisSectionBlock,\n\tavailableTabs,\n\tcontentClientIds,\n\thasBlockStyles,\n\teditedContentOnlySection,\n} ) => {\n\tconst listViewRef = useRef( null );\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\tconst hasParentChildBlockCards =\n\t\teditedContentOnlySection &&\n\t\teditedContentOnlySection !== renderedBlockClientId;\n\tconst parentBlockInformation = useBlockDisplayInformation(\n\t\teditedContentOnlySection\n\t);\n\tconst blockInformation = useBlockDisplayInformation(\n\t\trenderedBlockClientId\n\t);\n\tconst isBlockSynced = blockInformation.isSynced;\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t{ hasParentChildBlockCards && (\n\t\t\t\t<BlockCard\n\t\t\t\t\t{ ...parentBlockInformation }\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tparentBlockInformation?.isSynced && 'is-synced'\n\t\t\t\t\t}\n\t\t\t\t\tparentClientId={ editedContentOnlySection }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockCard\n\t\t\t\t{ ...blockInformation }\n\t\t\t\tallowParentNavigation\n\t\t\t\tclassName={ isBlockSynced && 'is-synced' }\n\t\t\t\tisChild={ hasParentChildBlockCards }\n\t\t\t\tclientId={ renderedBlockClientId }\n\t\t\t/>\n\t\t\t<ViewportVisibilityInfo clientId={ renderedBlockClientId } />\n\t\t\t<EditContents clientId={ renderedBlockClientId } />\n\t\t\t<BlockVariationTransforms blockClientId={ renderedBlockClientId } />\n\t\t\t{ hasMultipleTabs && (\n\t\t\t\t<>\n\t\t\t\t\t<InspectorControlsTabs\n\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\tclientId={ renderedBlockClientId }\n\t\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\t\ttabs={ availableTabs }\n\t\t\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! hasMultipleTabs && (\n\t\t\t\t<>\n\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t<BlockStyles clientId={ renderedBlockClientId } />\n\t\t\t\t\t) }\n\t\t\t\t\t<ContentTab contentClientIds={ contentClientIds } />\n\t\t\t\t\t<InspectorControls.Slot group=\"content\" />\n\t\t\t\t\t<InspectorControls.Slot group=\"list\" ref={ listViewRef } />\n\t\t\t\t\t<ListViewContentPopover listViewRef={ listViewRef } />\n\t\t\t\t\t{ ! isSectionBlock && (\n\t\t\t\t\t\t<StyleInspectorSlots blockName={ blockName } />\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControlsLastItem.Slot />\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"],
5
+ "mappings": "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",
6
6
  "names": ["InspectorControls", "PositionControls", "AdvancedControls", "blockEditorStore", "blocksStore", "useInspectorControlsTabs", "useBlockInspectorAnimationSettings", "MultiSelectionInspector", "InspectorControlsTabs", "motion", "useBlockDisplayInformation", "BlockCard", "ViewportVisibilityInfo", "EditContents", "BlockVariationTransforms", "BlockStyles", "ContentTab", "InspectorControlsLastItem", "SkipToSelectedBlock"]
7
7
  }
@@ -433,8 +433,8 @@ function BlockListBlockProvider(props) {
433
433
  __unstableHasActiveBlockOverlayActive,
434
434
  getSelectedBlocksInitialCaretPosition
435
435
  } = (0, import_lock_unlock.unlock)(select(import_store.store));
436
- const blockWithoutAttributes2 = getBlockWithoutAttributes(clientId);
437
- if (!blockWithoutAttributes2) {
436
+ const blockWithoutAttributes = getBlockWithoutAttributes(clientId);
437
+ if (!blockWithoutAttributes) {
438
438
  return;
439
439
  }
440
440
  const {
@@ -442,7 +442,7 @@ function BlockListBlockProvider(props) {
442
442
  getActiveBlockVariation
443
443
  } = select(import_blocks.store);
444
444
  const attributes2 = getBlockAttributes(clientId);
445
- const { name: blockName, isValid: isValid2 } = blockWithoutAttributes2;
445
+ const { name: blockName, isValid: isValid2 } = blockWithoutAttributes;
446
446
  const blockType2 = (0, import_blocks.getBlockType)(blockName);
447
447
  const settings = getSettings();
448
448
  const {
@@ -458,7 +458,7 @@ function BlockListBlockProvider(props) {
458
458
  const blockEditingMode2 = getBlockEditingMode(clientId);
459
459
  const previewContext = {
460
460
  isPreviewMode: isPreviewMode2,
461
- blockWithoutAttributes: blockWithoutAttributes2,
461
+ blockWithoutAttributes,
462
462
  name: blockName,
463
463
  attributes: attributes2,
464
464
  isValid: isValid2,
@@ -532,6 +532,20 @@ function BlockListBlockProvider(props) {
532
532
  },
533
533
  [clientId, rootClientId]
534
534
  );
535
+ const { isBlockCurrentlyHidden } = (0, import_block_visibility.useBlockVisibility)({
536
+ blockVisibility: selectedProps?.blockVisibility,
537
+ deviceType: selectedProps?.deviceType
538
+ });
539
+ const block = (0, import_element.useMemo)(
540
+ () => ({
541
+ ...selectedProps?.blockWithoutAttributes,
542
+ attributes: selectedProps?.attributes
543
+ }),
544
+ [selectedProps?.blockWithoutAttributes, selectedProps?.attributes]
545
+ );
546
+ if (!selectedProps) {
547
+ return null;
548
+ }
535
549
  const {
536
550
  isPreviewMode,
537
551
  // Fill values that end up as a public API and may not be defined in
@@ -541,7 +555,6 @@ function BlockListBlockProvider(props) {
541
555
  isLocked = false,
542
556
  canRemove = false,
543
557
  canMove = false,
544
- blockWithoutAttributes,
545
558
  name,
546
559
  attributes,
547
560
  isValid,
@@ -576,17 +589,6 @@ function BlockListBlockProvider(props) {
576
589
  blockVisibility,
577
590
  deviceType
578
591
  } = selectedProps;
579
- const { isBlockCurrentlyHidden } = (0, import_block_visibility.useBlockVisibility)({
580
- blockVisibility,
581
- deviceType
582
- });
583
- const block = (0, import_element.useMemo)(
584
- () => ({ ...blockWithoutAttributes, attributes }),
585
- [blockWithoutAttributes, attributes]
586
- );
587
- if (!selectedProps) {
588
- return null;
589
- }
590
592
  const privateContext = {
591
593
  isPreviewMode,
592
594
  clientId,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-list/block.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, RawHTML, useContext, useMemo } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tcreateBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\nimport { useBlockVisibility } from '../block-visibility/';\nimport { unlock } from '../../lock-unlock';\nimport { deviceTypeKey } from '../../store/private-keys';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonRemove,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tisSelectionWithinCurrentSection,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tmayDisplayPatternEditingControls={ isSelectionWithinCurrentSection }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\tisSelectionWithinCurrentSection,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( nextAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId, attributes } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\t\t\tconst newAttributes =\n\t\t\t\ttypeof nextAttributes === 'function'\n\t\t\t\t\t? nextAttributes( attributes )\n\t\t\t\t\t: nextAttributes;\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tconst defaultBlockType = getBlockType( defaultBlockName );\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} else if ( defaultBlockType.merge ) {\n\t\t\t\t\tconst attributes = defaultBlockType.merge(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tblock.attributes\n\t\t\t\t\t);\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t[ clientId ],\n\t\t\t\t\t\t[ createBlock( defaultBlockName, attributes ) ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst wrapperBlockName = getBlockName( _clientId );\n\t\t\t\tconst wrapperBlockType = getBlockType( wrapperBlockName );\n\t\t\t\tconst isTextualWrapper = wrapperBlockType.category === 'text';\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else if ( isTextualWrapper ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacement &&\n\t\t\t\t\t\t\t\treplacement.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\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\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\tonRemove() {\n\t\t\tremoveBlock( ownProps.clientId );\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\t\tgetParentSectionBlock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetEditedContentOnlySection,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst settings = getSettings();\n\t\t\tconst {\n\t\t\t\tsupportsLayout,\n\t\t\t\tisPreviewMode,\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes,\n\t\t\t} = settings;\n\t\t\tconst bindableAttributes =\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes?.[ blockName ];\n\t\t\tconst blockVisibility = attributes?.metadata?.blockVisibility;\n\t\t\tconst deviceType =\n\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';\n\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t\tbindableAttributes,\n\t\t\t\tblockVisibility,\n\t\t\t\tdeviceType,\n\t\t\t\tisMultiSelected,\n\t\t\t\tblockEditingMode,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst sectionBlockClientId = _isSectionBlock( clientId )\n\t\t\t\t? clientId\n\t\t\t\t: getParentSectionBlock( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tisSectionBlock: _isSectionBlock( clientId ),\n\t\t\t\tisWithinSectionBlock: !! sectionBlockClientId,\n\t\t\t\tisSelectionWithinCurrentSection:\n\t\t\t\t\tisBlockSelected( sectionBlockClientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( sectionBlockClientId, checkDeep ),\n\t\t\t\tblockType,\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisEditingContentOnlySection:\n\t\t\t\t\tgetEditedContentOnlySection() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition: _isSelected\n\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t\tblockVisibility,\n\t\t\t\tdeviceType,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tblockWithoutAttributes,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisEditingContentOnlySection,\n\t\tblockEditingMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockType,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisWithinSectionBlock,\n\t\tisSelectionWithinCurrentSection,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t\tbindableAttributes,\n\t\tblockVisibility,\n\t\tdeviceType,\n\t} = selectedProps;\n\n\t// Use block visibility hook with data from existing useSelect to avoid extra subscription\n\tconst { isBlockCurrentlyHidden } = useBlockVisibility( {\n\t\tblockVisibility,\n\t\tdeviceType,\n\t} );\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( { ...blockWithoutAttributes, attributes } ),\n\t\t[ blockWithoutAttributes, attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockType,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisWithinSectionBlock,\n\t\tisSelectionWithinCurrentSection,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisEditingContentOnlySection,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t\tcanMove,\n\t\tisBlockCurrentlyHidden,\n\t\tbindableAttributes,\n\t\tblockVisibility,\n\t\tdeviceType,\n\t};\n\n\tif (\n\t\tisBlockCurrentlyHidden &&\n\t\t! isSelected &&\n\t\t! isMultiSelected &&\n\t\t! hasChildSelected\n\t) {\n\t\treturn null;\n\t}\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],
5
- "mappings": "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",
6
- "names": ["clsx", "BlockEdit", "BlockInvalidWarning", "BlockHtml", "BlockCrashBoundary", "BlockCrashWarning", "blockEditorStore", "isSelectionEnabled", "isDragging", "blockWithoutAttributes", "blocksStore", "attributes", "isValid", "blockType", "isPreviewMode", "bindableAttributes", "blockVisibility", "deviceType", "isMultiSelected", "blockEditingMode", "canRemove", "canMove"]
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, RawHTML, useContext, useMemo } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tcreateBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\nimport { useBlockVisibility } from '../block-visibility/';\nimport { unlock } from '../../lock-unlock';\nimport { deviceTypeKey } from '../../store/private-keys';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonRemove,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tisSelectionWithinCurrentSection,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tmayDisplayPatternEditingControls={ isSelectionWithinCurrentSection }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\tisSelectionWithinCurrentSection,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( nextAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId, attributes } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\t\t\tconst newAttributes =\n\t\t\t\ttypeof nextAttributes === 'function'\n\t\t\t\t\t? nextAttributes( attributes )\n\t\t\t\t\t: nextAttributes;\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tconst defaultBlockType = getBlockType( defaultBlockName );\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} else if ( defaultBlockType.merge ) {\n\t\t\t\t\tconst attributes = defaultBlockType.merge(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tblock.attributes\n\t\t\t\t\t);\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t[ clientId ],\n\t\t\t\t\t\t[ createBlock( defaultBlockName, attributes ) ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst wrapperBlockName = getBlockName( _clientId );\n\t\t\t\tconst wrapperBlockType = getBlockType( wrapperBlockName );\n\t\t\t\tconst isTextualWrapper = wrapperBlockType.category === 'text';\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else if ( isTextualWrapper ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacement &&\n\t\t\t\t\t\t\t\treplacement.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\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\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\tonRemove() {\n\t\t\tremoveBlock( ownProps.clientId );\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\t\tgetParentSectionBlock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetEditedContentOnlySection,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst settings = getSettings();\n\t\t\tconst {\n\t\t\t\tsupportsLayout,\n\t\t\t\tisPreviewMode,\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes,\n\t\t\t} = settings;\n\t\t\tconst bindableAttributes =\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes?.[ blockName ];\n\t\t\tconst blockVisibility = attributes?.metadata?.blockVisibility;\n\t\t\tconst deviceType =\n\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';\n\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t\tbindableAttributes,\n\t\t\t\tblockVisibility,\n\t\t\t\tdeviceType,\n\t\t\t\tisMultiSelected,\n\t\t\t\tblockEditingMode,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst sectionBlockClientId = _isSectionBlock( clientId )\n\t\t\t\t? clientId\n\t\t\t\t: getParentSectionBlock( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tisSectionBlock: _isSectionBlock( clientId ),\n\t\t\t\tisWithinSectionBlock: !! sectionBlockClientId,\n\t\t\t\tisSelectionWithinCurrentSection:\n\t\t\t\t\tisBlockSelected( sectionBlockClientId ) ||\n\t\t\t\t\thasSelectedInnerBlock( sectionBlockClientId, checkDeep ),\n\t\t\t\tblockType,\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisEditingContentOnlySection:\n\t\t\t\t\tgetEditedContentOnlySection() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition: _isSelected\n\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t\tblockVisibility,\n\t\t\t\tdeviceType,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\t// Use block visibility hook with data from existing useSelect to avoid extra subscription\n\tconst { isBlockCurrentlyHidden } = useBlockVisibility( {\n\t\tblockVisibility: selectedProps?.blockVisibility,\n\t\tdeviceType: selectedProps?.deviceType,\n\t} );\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( {\n\t\t\t...selectedProps?.blockWithoutAttributes,\n\t\t\tattributes: selectedProps?.attributes,\n\t\t} ),\n\t\t[ selectedProps?.blockWithoutAttributes, selectedProps?.attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisEditingContentOnlySection,\n\t\tblockEditingMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockType,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisWithinSectionBlock,\n\t\tisSelectionWithinCurrentSection,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t\tbindableAttributes,\n\t\tblockVisibility,\n\t\tdeviceType,\n\t} = selectedProps;\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockType,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisWithinSectionBlock,\n\t\tisSelectionWithinCurrentSection,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisEditingContentOnlySection,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t\tcanMove,\n\t\tisBlockCurrentlyHidden,\n\t\tbindableAttributes,\n\t\tblockVisibility,\n\t\tdeviceType,\n\t};\n\n\tif (\n\t\tisBlockCurrentlyHidden &&\n\t\t! isSelected &&\n\t\t! isMultiSelected &&\n\t\t! hasChildSelected\n\t) {\n\t\treturn null;\n\t}\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],
5
+ "mappings": "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",
6
+ "names": ["clsx", "BlockEdit", "BlockInvalidWarning", "BlockHtml", "BlockCrashBoundary", "BlockCrashWarning", "blockEditorStore", "isSelectionEnabled", "isDragging", "blocksStore", "attributes", "isValid", "blockType", "isPreviewMode", "bindableAttributes", "blockVisibility", "deviceType", "isMultiSelected", "blockEditingMode", "canRemove", "canMove"]
7
7
  }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/block-editor/src/components/block-toolbar/block-styles-dropdown.js
31
+ var block_styles_dropdown_exports = {};
32
+ __export(block_styles_dropdown_exports, {
33
+ default: () => BlockStylesDropdown
34
+ });
35
+ module.exports = __toCommonJS(block_styles_dropdown_exports);
36
+ var import_i18n = require("@wordpress/i18n");
37
+ var import_components = require("@wordpress/components");
38
+ var import_block_styles_menu = __toESM(require("../block-switcher/block-styles-menu.cjs"));
39
+ var import_jsx_runtime = require("react/jsx-runtime");
40
+ function BlockStylesDropdown({
41
+ clientIds,
42
+ children,
43
+ label,
44
+ text
45
+ }) {
46
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
47
+ import_components.DropdownMenu,
48
+ {
49
+ className: "block-editor-block-switcher",
50
+ label,
51
+ popoverProps: {
52
+ placement: "bottom-start",
53
+ className: "block-editor-block-switcher__popover"
54
+ },
55
+ icon: children,
56
+ text,
57
+ toggleProps: {
58
+ description: (0, import_i18n.__)("Change block style"),
59
+ ...toggleProps
60
+ },
61
+ menuProps: { orientation: "both" },
62
+ children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "block-editor-block-switcher__container", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
+ import_block_styles_menu.default,
64
+ {
65
+ hoveredBlock: {
66
+ clientId: clientIds[0]
67
+ },
68
+ onSwitch: onClose
69
+ }
70
+ ) })
71
+ }
72
+ ) }) });
73
+ }
74
+ //# sourceMappingURL=block-styles-dropdown.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/block-toolbar/block-styles-dropdown.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DropdownMenu, ToolbarGroup, ToolbarItem } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockStylesMenu from '../block-switcher/block-styles-menu';\n\nexport default function BlockStylesDropdown( {\n\tclientIds,\n\tchildren,\n\tlabel,\n\ttext,\n} ) {\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={ label }\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={ children }\n\t\t\t\t\t\ttext={ text }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: __( 'Change block style' ),\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<div className=\"block-editor-block-switcher__container\">\n\t\t\t\t\t\t\t\t<BlockStylesMenu\n\t\t\t\t\t\t\t\t\thoveredBlock={ {\n\t\t\t\t\t\t\t\t\t\tclientId: clientIds[ 0 ],\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\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"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAAwD;AAKxD,+BAA4B;AA6BpB;AA3BO,SAAR,oBAAsC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC,4CAAC,kCACA,sDAAC,iCACE,WAAE,gBACH;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV;AAAA,MACA,cAAe;AAAA,QACd,WAAW;AAAA,QACX,WAAW;AAAA,MACZ;AAAA,MACA,MAAO;AAAA,MACP;AAAA,MACA,aAAc;AAAA,QACb,iBAAa,gBAAI,oBAAqB;AAAA,QACtC,GAAG;AAAA,MACJ;AAAA,MACA,WAAY,EAAE,aAAa,OAAO;AAAA,MAEhC,WAAE,EAAE,QAAQ,MACb,4CAAC,SAAI,WAAU,0CACd;AAAA,QAAC,yBAAAA;AAAA,QAAA;AAAA,UACA,cAAe;AAAA,YACd,UAAU,UAAW,CAAE;AAAA,UACxB;AAAA,UACA,UAAW;AAAA;AAAA,MACZ,GACD;AAAA;AAAA,EAEF,GAEF,GACD;AAEF;",
6
+ "names": ["BlockStylesMenu"]
7
+ }
@@ -41,6 +41,7 @@ var import_blocks = require("@wordpress/blocks");
41
41
  var import_preferences = require("@wordpress/preferences");
42
42
  var import_block_switcher = __toESM(require("../block-switcher/index.cjs"));
43
43
  var import_block_icon = __toESM(require("../block-icon/index.cjs"));
44
+ var import_block_styles_dropdown = __toESM(require("./block-styles-dropdown.cjs"));
44
45
  var import_pattern_overrides_dropdown = __toESM(require("./pattern-overrides-dropdown.cjs"));
45
46
  var import_use_block_display_title = __toESM(require("../block-title/use-block-display-title.cjs"));
46
47
  var import_store = require("../../store/index.cjs");
@@ -77,12 +78,16 @@ function getBlockIconVariant({ select, clientIds }) {
77
78
  );
78
79
  const canRemove = canRemoveBlocks(clientIds);
79
80
  const canEdit = clientIds.every((clientId) => canEditBlock(clientId));
80
- const isDefaultEditingMode = getBlockEditingMode(clientIds[0]) === "default";
81
+ const editingMode = getBlockEditingMode(clientIds[0]);
82
+ const isDefaultEditingMode = editingMode === "default";
83
+ const isContentOnlyMode = editingMode === "contentOnly";
81
84
  const _hideTransformsForSections = hasPatternNameInSelection;
82
85
  const _showBlockSwitcher = !_hideTransformsForSections && isDefaultEditingMode && (hasBlockStyles || canRemove) && !hasTemplateLock && canEdit;
83
86
  const _showPatternOverrides = hasPatternOverrides && hasParentPattern;
84
87
  if (_showBlockSwitcher) {
85
88
  return "switcher";
89
+ } else if (isContentOnlyMode && hasBlockStyles && !hasPatternOverrides) {
90
+ return "styles-only";
86
91
  } else if (_showPatternOverrides) {
87
92
  return "pattern-overrides";
88
93
  }
@@ -152,6 +157,17 @@ function BlockToolbarIcon({ clientIds, isSynced }) {
152
157
  }
153
158
  );
154
159
  }
160
+ if (variant === "styles-only") {
161
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
162
+ import_block_styles_dropdown.default,
163
+ {
164
+ clientIds,
165
+ label,
166
+ text,
167
+ children: BlockIconElement
168
+ }
169
+ );
170
+ }
155
171
  if (variant === "pattern-overrides") {
156
172
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
157
173
  import_pattern_overrides_dropdown.default,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-toolbar/block-toolbar-icon.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { copy, symbol } from '@wordpress/icons';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport BlockSwitcher from '../block-switcher';\nimport BlockIcon from '../block-icon';\nimport PatternOverridesDropdown from './pattern-overrides-dropdown';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { store as blockEditorStore } from '../../store';\nimport { hasPatternOverridesDefaultBinding } from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\nfunction getBlockIconVariant( { select, clientIds } ) {\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockAttributes,\n\t\tgetBlockParentsByBlockName,\n\t\tcanRemoveBlocks,\n\t\tgetTemplateLock,\n\t\tgetBlockEditingMode,\n\t\tcanEditBlock,\n\t} = unlock( select( blockEditorStore ) );\n\tconst { getBlockStyles } = select( blocksStore );\n\n\tconst hasTemplateLock = clientIds.some(\n\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t);\n\n\t// Calculate props only used in this function\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockName = isSingleBlock && getBlockName( clientIds[ 0 ] );\n\tconst hasBlockStyles =\n\t\tisSingleBlock && !! getBlockStyles( blockName )?.length;\n\tconst hasPatternNameInSelection = clientIds.some(\n\t\t( id ) => !! getBlockAttributes( id )?.metadata?.patternName\n\t);\n\tconst hasPatternOverrides = clientIds.every( ( clientId ) =>\n\t\thasPatternOverridesDefaultBinding(\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings\n\t\t)\n\t);\n\tconst hasParentPattern = clientIds.every(\n\t\t( clientId ) =>\n\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true ).length >\n\t\t\t0\n\t);\n\tconst canRemove = canRemoveBlocks( clientIds );\n\tconst canEdit = clientIds.every( ( clientId ) => canEditBlock( clientId ) );\n\tconst isDefaultEditingMode =\n\t\tgetBlockEditingMode( clientIds[ 0 ] ) === 'default';\n\tconst _hideTransformsForSections = hasPatternNameInSelection;\n\tconst _showBlockSwitcher =\n\t\t! _hideTransformsForSections &&\n\t\tisDefaultEditingMode &&\n\t\t( hasBlockStyles || canRemove ) &&\n\t\t! hasTemplateLock &&\n\t\tcanEdit;\n\n\tconst _showPatternOverrides = hasPatternOverrides && hasParentPattern;\n\n\tif ( _showBlockSwitcher ) {\n\t\treturn 'switcher';\n\t} else if ( _showPatternOverrides ) {\n\t\treturn 'pattern-overrides';\n\t}\n\n\treturn 'default';\n}\n\nfunction getBlockIcon( { select, clientIds } ) {\n\tconst { getBlockName, getBlockAttributes } = unlock(\n\t\tselect( blockEditorStore )\n\t);\n\n\tconst _isSingleBlock = clientIds.length === 1;\n\tconst firstClientId = clientIds[ 0 ];\n\tconst blockAttributes = getBlockAttributes( firstClientId );\n\tif ( _isSingleBlock && blockAttributes?.metadata?.patternName ) {\n\t\treturn symbol;\n\t}\n\n\tconst blockName = getBlockName( firstClientId );\n\tconst blockType = getBlockType( blockName );\n\n\tif ( _isSingleBlock ) {\n\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\tconst match = getActiveBlockVariation( blockName, blockAttributes );\n\t\treturn match?.icon || blockType?.icon;\n\t}\n\n\tconst blockNames = clientIds.map( ( id ) => getBlockName( id ) );\n\tconst isSelectionOfSameType = new Set( blockNames ).size === 1;\n\treturn isSelectionOfSameType ? blockType?.icon : copy;\n}\n\nexport default function BlockToolbarIcon( { clientIds, isSynced } ) {\n\tconst { icon, showIconLabels, variant } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\ticon: getBlockIcon( { select, clientIds } ),\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tvariant: getBlockIconVariant( {\n\t\t\t\t\tselect,\n\t\t\t\t\tclientIds,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst showBlockTitle = isSingleBlock && isSynced && ! showIconLabels;\n\tconst label = isSingleBlock ? blockTitle : __( 'Multiple blocks selected' );\n\t// Used to hide the block icon when the showIconLabels preference is enabled, or to display the template title when it's a template.\n\tconst text = showBlockTitle && blockTitle ? blockTitle : undefined;\n\n\tconst BlockIconElement = (\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon\"\n\t\t\ticon={ icon }\n\t\t/>\n\t);\n\n\tif ( variant === 'switcher' ) {\n\t\treturn (\n\t\t\t<BlockSwitcher\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockSwitcher>\n\t\t);\n\t}\n\n\tif ( variant === 'pattern-overrides' ) {\n\t\treturn (\n\t\t\t<PatternOverridesDropdown\n\t\t\t\ticon={ BlockIconElement }\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon-button\"\n\t\t\ttitle={ label }\n\t\t\ticon={ BlockIconElement }\n\t\t\ttext={ text }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["blockEditorStore", "blocksStore", "preferencesStore", "useBlockDisplayTitle", "BlockIcon", "BlockSwitcher", "PatternOverridesDropdown"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { copy, symbol } from '@wordpress/icons';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport BlockSwitcher from '../block-switcher';\nimport BlockIcon from '../block-icon';\nimport BlockStylesDropdown from './block-styles-dropdown';\nimport PatternOverridesDropdown from './pattern-overrides-dropdown';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { store as blockEditorStore } from '../../store';\nimport { hasPatternOverridesDefaultBinding } from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\nfunction getBlockIconVariant( { select, clientIds } ) {\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockAttributes,\n\t\tgetBlockParentsByBlockName,\n\t\tcanRemoveBlocks,\n\t\tgetTemplateLock,\n\t\tgetBlockEditingMode,\n\t\tcanEditBlock,\n\t} = unlock( select( blockEditorStore ) );\n\tconst { getBlockStyles } = select( blocksStore );\n\n\tconst hasTemplateLock = clientIds.some(\n\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t);\n\n\t// Calculate props only used in this function\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockName = isSingleBlock && getBlockName( clientIds[ 0 ] );\n\tconst hasBlockStyles =\n\t\tisSingleBlock && !! getBlockStyles( blockName )?.length;\n\tconst hasPatternNameInSelection = clientIds.some(\n\t\t( id ) => !! getBlockAttributes( id )?.metadata?.patternName\n\t);\n\tconst hasPatternOverrides = clientIds.every( ( clientId ) =>\n\t\thasPatternOverridesDefaultBinding(\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings\n\t\t)\n\t);\n\tconst hasParentPattern = clientIds.every(\n\t\t( clientId ) =>\n\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true ).length >\n\t\t\t0\n\t);\n\tconst canRemove = canRemoveBlocks( clientIds );\n\tconst canEdit = clientIds.every( ( clientId ) => canEditBlock( clientId ) );\n\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\tconst isDefaultEditingMode = editingMode === 'default';\n\tconst isContentOnlyMode = editingMode === 'contentOnly';\n\tconst _hideTransformsForSections = hasPatternNameInSelection;\n\tconst _showBlockSwitcher =\n\t\t! _hideTransformsForSections &&\n\t\tisDefaultEditingMode &&\n\t\t( hasBlockStyles || canRemove ) &&\n\t\t! hasTemplateLock &&\n\t\tcanEdit;\n\n\tconst _showPatternOverrides = hasPatternOverrides && hasParentPattern;\n\n\tif ( _showBlockSwitcher ) {\n\t\treturn 'switcher';\n\t} else if ( isContentOnlyMode && hasBlockStyles && ! hasPatternOverrides ) {\n\t\treturn 'styles-only';\n\t} else if ( _showPatternOverrides ) {\n\t\treturn 'pattern-overrides';\n\t}\n\n\treturn 'default';\n}\n\nfunction getBlockIcon( { select, clientIds } ) {\n\tconst { getBlockName, getBlockAttributes } = unlock(\n\t\tselect( blockEditorStore )\n\t);\n\n\tconst _isSingleBlock = clientIds.length === 1;\n\tconst firstClientId = clientIds[ 0 ];\n\tconst blockAttributes = getBlockAttributes( firstClientId );\n\tif ( _isSingleBlock && blockAttributes?.metadata?.patternName ) {\n\t\treturn symbol;\n\t}\n\n\tconst blockName = getBlockName( firstClientId );\n\tconst blockType = getBlockType( blockName );\n\n\tif ( _isSingleBlock ) {\n\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\tconst match = getActiveBlockVariation( blockName, blockAttributes );\n\t\treturn match?.icon || blockType?.icon;\n\t}\n\n\tconst blockNames = clientIds.map( ( id ) => getBlockName( id ) );\n\tconst isSelectionOfSameType = new Set( blockNames ).size === 1;\n\treturn isSelectionOfSameType ? blockType?.icon : copy;\n}\n\nexport default function BlockToolbarIcon( { clientIds, isSynced } ) {\n\tconst { icon, showIconLabels, variant } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\ticon: getBlockIcon( { select, clientIds } ),\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tvariant: getBlockIconVariant( {\n\t\t\t\t\tselect,\n\t\t\t\t\tclientIds,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst showBlockTitle = isSingleBlock && isSynced && ! showIconLabels;\n\tconst label = isSingleBlock ? blockTitle : __( 'Multiple blocks selected' );\n\t// Used to hide the block icon when the showIconLabels preference is enabled, or to display the template title when it's a template.\n\tconst text = showBlockTitle && blockTitle ? blockTitle : undefined;\n\n\tconst BlockIconElement = (\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon\"\n\t\t\ticon={ icon }\n\t\t/>\n\t);\n\n\tif ( variant === 'switcher' ) {\n\t\treturn (\n\t\t\t<BlockSwitcher\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockSwitcher>\n\t\t);\n\t}\n\n\tif ( variant === 'styles-only' ) {\n\t\treturn (\n\t\t\t<BlockStylesDropdown\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockStylesDropdown>\n\t\t);\n\t}\n\n\tif ( variant === 'pattern-overrides' ) {\n\t\treturn (\n\t\t\t<PatternOverridesDropdown\n\t\t\t\ticon={ BlockIconElement }\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon-button\"\n\t\t\ttitle={ label }\n\t\t\ticon={ BlockIconElement }\n\t\t\ttext={ text }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["blockEditorStore", "blocksStore", "preferencesStore", "useBlockDisplayTitle", "BlockIcon", "BlockSwitcher", "BlockStylesDropdown", "PatternOverridesDropdown"]
7
7
  }
@@ -56,7 +56,7 @@ function shouldEnableClientSideMediaProcessing() {
56
56
  if (isClientSideMediaEnabledCache !== null) {
57
57
  return isClientSideMediaEnabledCache;
58
58
  }
59
- if (!window.__experimentalMediaProcessing) {
59
+ if (!window.__clientSideMediaProcessing) {
60
60
  isClientSideMediaEnabledCache = false;
61
61
  return false;
62
62
  }