@wordpress/block-editor 15.3.1-next.836ecdcae.0 → 15.3.1-next.a730c9c8c.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/autocompleters/block.js +2 -4
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-card/index.js +4 -2
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-inspector/edit-contents-button.js +54 -0
- package/build/components/block-inspector/edit-contents-button.js.map +1 -0
- package/build/components/block-inspector/index.js +5 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/index.js +3 -1
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-popover/use-popover-scroll.js +11 -2
- package/build/components/block-popover/use-popover-scroll.js.map +1 -1
- package/build/components/block-switcher/index.js +13 -8
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -2
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +10 -0
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +10 -6
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/global-styles/border-panel.js +6 -6
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/link-control/search-item.js +30 -12
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +7 -2
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/use-clipboard-handler.js +6 -1
- package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build/store/private-selectors.js +9 -21
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +114 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +16 -30
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +18 -0
- package/build/store/utils.js.map +1 -1
- package/build/utils/block-bindings.js +1 -1
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/autocompleters/block.js +3 -5
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-card/index.js +4 -2
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-inspector/edit-contents-button.js +47 -0
- package/build-module/components/block-inspector/edit-contents-button.js.map +1 -0
- package/build-module/components/block-inspector/index.js +5 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/index.js +3 -1
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-popover/use-popover-scroll.js +11 -2
- package/build-module/components/block-popover/use-popover-scroll.js.map +1 -1
- package/build-module/components/block-switcher/index.js +13 -8
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +5 -2
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +11 -1
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +10 -6
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +6 -6
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/link-control/search-item.js +30 -12
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +9 -4
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js +6 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build-module/store/private-selectors.js +9 -21
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +114 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +16 -30
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +17 -0
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/block-bindings.js +1 -1
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/style-rtl.css +9 -5
- package/build-style/style.css +9 -5
- package/package.json +34 -34
- package/src/autocompleters/block.js +6 -11
- package/src/components/block-card/index.js +11 -1
- package/src/components/block-inspector/edit-contents-button.js +46 -0
- package/src/components/block-inspector/index.js +6 -1
- package/src/components/block-inspector/style.scss +5 -0
- package/src/components/block-list/index.js +7 -1
- package/src/components/block-popover/use-popover-scroll.js +10 -2
- package/src/components/block-switcher/index.js +13 -4
- package/src/components/block-toolbar/index.js +11 -5
- package/src/components/block-toolbar/style.scss +3 -5
- package/src/components/block-tools/insertion-point.js +19 -1
- package/src/components/block-variation-transforms/index.js +39 -27
- package/src/components/border-radius-control/test/utils.js +71 -0
- package/src/components/border-radius-control/utils.js +1 -0
- package/src/components/global-styles/border-panel.js +7 -6
- package/src/components/link-control/search-item.js +31 -12
- package/src/components/link-control/style.scss +0 -1
- package/src/components/link-control/test/index.js +14 -2
- package/src/components/url-popover/image-url-input-ui.js +18 -2
- package/src/components/writing-flow/use-clipboard-handler.js +6 -0
- package/src/store/private-selectors.js +12 -24
- package/src/store/reducer.js +188 -0
- package/src/store/selectors.js +38 -59
- package/src/store/test/reducer.js +398 -0
- package/src/store/test/selectors.js +65 -192
- package/src/store/utils.js +21 -0
- package/src/utils/block-bindings.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_components","_blocks2","_data","_icons","_preferences","_store","_blockIcon","_interopRequireDefault","_blockTransformationsMenu","_blockVariationTransformations","_blockStylesMenu","_patternTransformationsMenu","_useBlockDisplayTitle","_jsxRuntime","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","useDispatch","blockEditorStore","possibleBlockTransformations","patterns","blocks","isUsingBindings","useSelect","select","getBlockAttributes","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","_blocks","every","clientId","metadata","bindings","blockVariationTransformations","useBlockVariationTransforms","selectForMultipleBlocks","insertedBlocks","length","onBlockTransform","name","newBlocks","switchToBlockType","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isTemplate","isTemplatePart","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","jsx","className","children","__","connectedBlockDescription","_x","jsxs","default","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","MenuGroup","__experimentalText","BlockSwitcher","hasContentOnlyLocking","icon","invalidBlocks","isReusable","isDisabled","getTemplateLock","canRemoveBlocks","getBlockEditingMode","getBlockStyles","getBlockType","getActiveBlockVariation","blocksStore","some","block","firstBlockName","_isSingleBlockSelected","blockType","editingMode","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","copy","isReusableBlock","blockTitle","useBlockDisplayTitle","maximumLength","showIconLabels","preferencesStore","get","blockSwitcherLabel","blockIndicatorText","undefined","hideDropdown","ToolbarGroup","ToolbarButton","disabled","title","showColors","text","blockSwitcherDescription","sprintf","_n","ToolbarItem","toggleProps","DropdownMenu","label","popoverProps","placement","description","menuProps","orientation","exports","_default"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isTemplate = isSingleBlock && isTemplatePart( blocks[ 0 ] );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tconst showIconLabels = useSelect(\n\t\t( select ) =>\n\t\t\tselect( preferencesStore ).get( 'core', 'showIconLabels' ),\n\t\t[]\n\t);\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst blockIndicatorText =\n\t\t( isReusable || isTemplate ) && ! showIconLabels && blockTitle\n\t\t\t? blockTitle\n\t\t\t: undefined;\n\n\tconst hideDropdown =\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_components","_blocks2","_data","_icons","_preferences","_store","_blockIcon","_interopRequireDefault","_blockTransformationsMenu","_blockVariationTransformations","_blockStylesMenu","_patternTransformationsMenu","_useBlockDisplayTitle","_lockUnlock","_jsxRuntime","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","useDispatch","blockEditorStore","possibleBlockTransformations","patterns","blocks","isUsingBindings","useSelect","select","getBlockAttributes","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","_blocks","every","clientId","metadata","bindings","blockVariationTransformations","useBlockVariationTransforms","selectForMultipleBlocks","insertedBlocks","length","onBlockTransform","name","newBlocks","switchToBlockType","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isSynced","isTemplatePart","isReusableBlock","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","jsx","className","children","__","connectedBlockDescription","_x","jsxs","default","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","MenuGroup","__experimentalText","BlockSwitcher","hasContentOnlyLocking","icon","invalidBlocks","isReusable","isTemplate","isDisabled","isSection","getTemplateLock","canRemoveBlocks","getBlockEditingMode","isSectionBlock","unlock","getBlockStyles","getBlockType","getActiveBlockVariation","blocksStore","some","block","firstBlockName","_isSingleBlockSelected","blockType","editingMode","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","copy","blockTitle","useBlockDisplayTitle","maximumLength","showIconLabels","preferencesStore","get","blockSwitcherLabel","blockIndicatorText","undefined","hideTransformsForSections","window","__experimentalContentOnlyPatternInsertion","hideDropdown","ToolbarGroup","ToolbarButton","disabled","title","showColors","text","blockSwitcherDescription","sprintf","_n","ToolbarItem","toggleProps","DropdownMenu","label","popoverProps","placement","description","menuProps","orientation","exports","_default"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isSynced` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isSynced =\n\t\tisSingleBlock &&\n\t\t( isTemplatePart( blocks[ 0 ] ) || isReusableBlock( blocks[ 0 ] ) );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations?.length && canRemove && ! isSynced;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t\tisSection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t\tisSection: isSectionBlock( clientIds[ 0 ] ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tconst showIconLabels = useSelect(\n\t\t( select ) =>\n\t\t\tselect( preferencesStore ).get( 'core', 'showIconLabels' ),\n\t\t[]\n\t);\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst blockIndicatorText =\n\t\t( isReusable || isTemplate ) && ! showIconLabels && blockTitle\n\t\t\t? blockTitle\n\t\t\t: undefined;\n\n\tconst hideTransformsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion && isSection;\n\tconst hideDropdown =\n\t\thideTransformsForSections ||\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -116,6 +116,10 @@ function PrivateBlockToolbar({
|
|
|
116
116
|
// If one or more selected blocks are locked, do not show the BlockGroupToolbar.
|
|
117
117
|
const _hasTemplateLock = selectedBlockClientIds.some(id => getTemplateLock(id) === 'contentOnly');
|
|
118
118
|
const _isZoomOut = isZoomOut();
|
|
119
|
+
|
|
120
|
+
// The switch style button appears more prominently with the
|
|
121
|
+
// content only pattern experiment.
|
|
122
|
+
const _showSwitchSectionStyleButton = window?.__experimentalContentOnlyPatternInsertion ? _isZoomOut || isSectionBlock(selectedBlockClientId) : _isZoomOut || isNavigationModeEnabled && editingMode === 'contentOnly' && isSectionBlock(selectedBlockClientId);
|
|
119
123
|
return {
|
|
120
124
|
blockClientId: selectedBlockClientId,
|
|
121
125
|
blockClientIds: selectedBlockClientIds,
|
|
@@ -131,8 +135,7 @@ function PrivateBlockToolbar({
|
|
|
131
135
|
showSlots: !_isZoomOut,
|
|
132
136
|
showGroupButtons: !_isZoomOut,
|
|
133
137
|
showLockButtons: !_isZoomOut,
|
|
134
|
-
showSwitchSectionStyleButton:
|
|
135
|
-
// Zoom out or Write Mode Section Blocks
|
|
138
|
+
showSwitchSectionStyleButton: _showSwitchSectionStyleButton,
|
|
136
139
|
hasFixedToolbar: getSettings().hasFixedToolbar,
|
|
137
140
|
isNavigationMode: isNavigationModeEnabled
|
|
138
141
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_data","_element","_compose","_blocks","_components","_blockMover","_blockParentSelector","_blockSwitcher","_blockControls","_blockToolbarLastItem","_blockSettingsMenu","_blockLock","_convertToGroupButtons","_blockEditVisuallyButton","_utils","_store","_blockNameContext","_navigableToolbar","_useHasBlockToolbar","_changeDesign","_switchSectionStyle","_lockUnlock","_jsxRuntime","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","hasParentPattern","hasContentOnlyLocking","showShuffleButton","showSlots","showGroupButtons","showLockButtons","showSwitchSectionStyleButton","hasFixedToolbar","isNavigationMode","useSelect","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockEditingMode","getBlockAttributes","getBlockParentsByBlockName","getTemplateLock","getSettings","getParentSectionBlock","isZoomOut","_isNavigationMode","isSectionBlock","unlock","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","parents","parentSection","parentClientId","length","parentBlockName","parentBlockType","getBlockType","editingMode","isNavigationModeEnabled","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","clientId","metadata","bindings","_hasParentPattern","_hasTemplateLock","some","_isZoomOut","hasBlockSupport","toolbarWrapperRef","useRef","nodeRef","showHoveredOrFocusedGestures","useShowHoveredOrFocusedGestures","ref","isLargeViewport","useViewportMatch","hasBlockToolbar","useHasBlockToolbar","isMultiToolbar","isSynced","isReusableBlock","isTemplatePart","classes","clsx","innerClasses","jsx","default","focusEditorOnEscape","className","__","undefined","children","jsxs","ToolbarGroup","clientIds","BlockLockToolbar","BlockGroupToolbar","Fragment","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\thasParentPattern,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowSwitchSectionStyleButton,\n\t\thasFixedToolbar,\n\t\tisNavigationMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetBlockParentsByBlockName,\n\t\t\tgetTemplateLock,\n\t\t\tgetSettings,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisNavigationMode: _isNavigationMode,\n\t\t\tisSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst isNavigationModeEnabled = _isNavigationMode();\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\tconst _hasParentPattern = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t.length > 0\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t\thasParentPattern: _hasParentPattern,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton:\n\t\t\t\t_isZoomOut ||\n\t\t\t\t( isNavigationModeEnabled &&\n\t\t\t\t\teditingMode === 'contentOnly' &&\n\t\t\t\t\tisSectionBlock( selectedBlockClientId ) ), // Zoom out or Write Mode Section Blocks\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tisNavigationMode: isNavigationModeEnabled,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t\t'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! hasParentPattern && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ nodeRef }\n\t\t\t\t\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t{ ! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ showSwitchSectionStyleButton && (\n\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && showSlots && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_data","_element","_compose","_blocks","_components","_blockMover","_blockParentSelector","_blockSwitcher","_blockControls","_blockToolbarLastItem","_blockSettingsMenu","_blockLock","_convertToGroupButtons","_blockEditVisuallyButton","_utils","_store","_blockNameContext","_navigableToolbar","_useHasBlockToolbar","_changeDesign","_switchSectionStyle","_lockUnlock","_jsxRuntime","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","hasParentPattern","hasContentOnlyLocking","showShuffleButton","showSlots","showGroupButtons","showLockButtons","showSwitchSectionStyleButton","hasFixedToolbar","isNavigationMode","useSelect","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockEditingMode","getBlockAttributes","getBlockParentsByBlockName","getTemplateLock","getSettings","getParentSectionBlock","isZoomOut","_isNavigationMode","isSectionBlock","unlock","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","parents","parentSection","parentClientId","length","parentBlockName","parentBlockType","getBlockType","editingMode","isNavigationModeEnabled","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","clientId","metadata","bindings","_hasParentPattern","_hasTemplateLock","some","_isZoomOut","_showSwitchSectionStyleButton","window","__experimentalContentOnlyPatternInsertion","hasBlockSupport","toolbarWrapperRef","useRef","nodeRef","showHoveredOrFocusedGestures","useShowHoveredOrFocusedGestures","ref","isLargeViewport","useViewportMatch","hasBlockToolbar","useHasBlockToolbar","isMultiToolbar","isSynced","isReusableBlock","isTemplatePart","classes","clsx","innerClasses","jsx","default","focusEditorOnEscape","className","__","undefined","children","jsxs","ToolbarGroup","clientIds","BlockLockToolbar","BlockGroupToolbar","Fragment","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\thasParentPattern,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowSwitchSectionStyleButton,\n\t\thasFixedToolbar,\n\t\tisNavigationMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetBlockParentsByBlockName,\n\t\t\tgetTemplateLock,\n\t\t\tgetSettings,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisNavigationMode: _isNavigationMode,\n\t\t\tisSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst isNavigationModeEnabled = _isNavigationMode();\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\tconst _hasParentPattern = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t.length > 0\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\n\t\t// The switch style button appears more prominently with the\n\t\t// content only pattern experiment.\n\t\tconst _showSwitchSectionStyleButton =\n\t\t\twindow?.__experimentalContentOnlyPatternInsertion\n\t\t\t\t? _isZoomOut || isSectionBlock( selectedBlockClientId )\n\t\t\t\t: _isZoomOut ||\n\t\t\t\t ( isNavigationModeEnabled &&\n\t\t\t\t\t\teditingMode === 'contentOnly' &&\n\t\t\t\t\t\tisSectionBlock( selectedBlockClientId ) );\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t\thasParentPattern: _hasParentPattern,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton: _showSwitchSectionStyleButton,\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tisNavigationMode: isNavigationModeEnabled,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t\t'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! hasParentPattern && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ nodeRef }\n\t\t\t\t\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t{ ! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ showSwitchSectionStyleButton && (\n\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && showSlots && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -109,6 +109,15 @@ function InbetweenInsertionPointPopover({
|
|
|
109
109
|
openRef.current = true;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
+
|
|
113
|
+
// Reset the insertion point reference when the Inserter unmounts,
|
|
114
|
+
// avoids stale references when `onSelectOrClose` is not called.
|
|
115
|
+
// See: https://github.com/WordPress/gutenberg/issues/65598#issuecomment-3249229264.
|
|
116
|
+
const maybeResetOpenRef = (0, _element.useCallback)(node => {
|
|
117
|
+
if (!node && openRef.current) {
|
|
118
|
+
openRef.current = false;
|
|
119
|
+
}
|
|
120
|
+
}, [openRef]);
|
|
112
121
|
const lineVariants = {
|
|
113
122
|
// Initial position starts from the center and invisible.
|
|
114
123
|
start: {
|
|
@@ -189,6 +198,7 @@ function InbetweenInsertionPointPopover({
|
|
|
189
198
|
variants: inserterVariants,
|
|
190
199
|
className: (0, _clsx.default)('block-editor-block-list__insertion-point-inserter'),
|
|
191
200
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_inserter.default, {
|
|
201
|
+
ref: maybeResetOpenRef,
|
|
192
202
|
position: "bottom center",
|
|
193
203
|
clientId: nextClientId,
|
|
194
204
|
rootClientId: rootClientId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_data","_element","_components","_compose","_inserter","_store","_inbetween","_dropZone","_lockUnlock","_jsxRuntime","InsertionPointOpenRef","exports","createContext","displayName","InbetweenInsertionPointPopover","__unstablePopoverSlot","__unstableContentRef","operation","nearestSide","selectBlock","hideInsertionPoint","useDispatch","blockEditorStore","openRef","useContext","ref","useRef","orientation","previousClientId","nextClientId","rootClientId","isInserterShown","isDistractionFree","isZoomOutMode","useSelect","select","getBlockOrder","getBlockListSettings","getBlockInsertionPoint","isBlockBeingDragged","getPreviousBlockClientId","getNextBlockClientId","getSettings","isZoomOut","unlock","insertionPoint","order","length","_previousClientId","index","_nextClientId","settings","__unstableWithInserter","getBlockEditingMode","disableMotion","useReducedMotion","onClick","event","target","current","maybeHideInserterPoint","onFocus","lineVariants","start","opacity","scale","rest","transition","delay","type","hover","inserterVariants","orientationClassname","className","clsx","jsx","default","children","jsxs","__unstableMotion","div","layout","initial","animate","whileHover","whileTap","exit","tabIndex","onHoverEnd","variants","position","clientId","__experimentalIsQuick","onToggle","isOpen","onSelectOrClose","InsertionPoint","props","isVisible","isBlockListEmpty","isBlockInsertionPointVisible","getBlockCount","blockInsertionPoint"],"sources":["@wordpress/block-editor/src/components/block-tools/insertion-point.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, createContext, useContext } from '@wordpress/element';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport BlockDropZonePopover from '../block-popover/drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nexport const InsertionPointOpenRef = createContext();\nInsertionPointOpenRef.displayName = 'InsertionPointOpenRefContext';\n\nfunction InbetweenInsertionPointPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\toperation = 'insert',\n\tnearestSide = 'right',\n} ) {\n\tconst { selectBlock, hideInsertionPoint } = useDispatch( blockEditorStore );\n\tconst openRef = useContext( InsertionPointOpenRef );\n\tconst ref = useRef();\n\tconst {\n\t\torientation,\n\t\tpreviousClientId,\n\t\tnextClientId,\n\t\trootClientId,\n\t\tisInserterShown,\n\t\tisDistractionFree,\n\t\tisZoomOutMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockListSettings,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockBeingDragged,\n\t\t\tgetPreviousBlockClientId,\n\t\t\tgetNextBlockClientId,\n\t\t\tgetSettings,\n\t\t\tisZoomOut,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet _previousClientId = order[ insertionPoint.index - 1 ];\n\t\tlet _nextClientId = order[ insertionPoint.index ];\n\n\t\twhile ( isBlockBeingDragged( _previousClientId ) ) {\n\t\t\t_previousClientId = getPreviousBlockClientId( _previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( _nextClientId ) ) {\n\t\t\t_nextClientId = getNextBlockClientId( _nextClientId );\n\t\t}\n\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tpreviousClientId: _previousClientId,\n\t\t\tnextClientId: _nextClientId,\n\t\t\torientation:\n\t\t\t\tgetBlockListSettings( insertionPoint.rootClientId )\n\t\t\t\t\t?.orientation || 'vertical',\n\t\t\trootClientId: insertionPoint.rootClientId,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\tisInserterShown: insertionPoint?.__unstableWithInserter,\n\t\t\tisZoomOutMode: isZoomOut(),\n\t\t};\n\t}, [] );\n\tconst { getBlockEditingMode } = useSelect( blockEditorStore );\n\n\tconst disableMotion = useReducedMotion();\n\n\tfunction onClick( event ) {\n\t\tif (\n\t\t\tevent.target === ref.current &&\n\t\t\tnextClientId &&\n\t\t\tgetBlockEditingMode( nextClientId ) !== 'disabled'\n\t\t) {\n\t\t\tselectBlock( nextClientId, -1 );\n\t\t}\n\t}\n\n\tfunction maybeHideInserterPoint( event ) {\n\t\t// Only hide the inserter if it's triggered on the wrapper,\n\t\t// and the inserter is not open.\n\t\tif ( event.target === ref.current && ! openRef.current ) {\n\t\t\thideInsertionPoint();\n\t\t}\n\t}\n\n\tfunction onFocus( event ) {\n\t\t// Only handle click on the wrapper specifically, and not an event\n\t\t// bubbled from the inserter itself.\n\t\tif ( event.target !== ref.current ) {\n\t\t\topenRef.current = true;\n\t\t}\n\t}\n\n\tconst lineVariants = {\n\t\t// Initial position starts from the center and invisible.\n\t\tstart: {\n\t\t\topacity: 0,\n\t\t\tscale: 0,\n\t\t},\n\t\t// The line expands to fill the container. If the inserter is visible it\n\t\t// is delayed so it appears orchestrated.\n\t\trest: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: isInserterShown ? 0.5 : 0, type: 'tween' },\n\t\t},\n\t\thover: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.5, type: 'tween' },\n\t\t},\n\t};\n\n\tconst inserterVariants = {\n\t\tstart: {\n\t\t\tscale: disableMotion ? 1 : 0,\n\t\t},\n\t\trest: {\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.4, type: 'tween' },\n\t\t},\n\t};\n\n\tif ( isDistractionFree ) {\n\t\treturn null;\n\t}\n\n\t// Zoom out mode should only show the insertion point for the insert operation.\n\t// Other operations such as \"group\" are when the editor tries to create a row\n\t// block by grouping the block being dragged with the block it's being dropped\n\t// onto.\n\tif ( isZoomOutMode && operation !== 'insert' ) {\n\t\treturn null;\n\t}\n\n\tconst orientationClassname =\n\t\torientation === 'horizontal' || operation === 'group'\n\t\t\t? 'is-horizontal'\n\t\t\t: 'is-vertical';\n\n\tconst className = clsx(\n\t\t'block-editor-block-list__insertion-point',\n\t\torientationClassname\n\t);\n\n\treturn (\n\t\t<BlockPopoverInbetween\n\t\t\tpreviousClientId={ previousClientId }\n\t\t\tnextClientId={ nextClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\toperation={ operation }\n\t\t\tnearestSide={ nearestSide }\n\t\t>\n\t\t\t<motion.div\n\t\t\t\tlayout={ ! disableMotion }\n\t\t\t\tinitial={ disableMotion ? 'rest' : 'start' }\n\t\t\t\tanimate=\"rest\"\n\t\t\t\twhileHover=\"hover\"\n\t\t\t\twhileTap=\"pressed\"\n\t\t\t\texit=\"start\"\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tclassName={ clsx( className, {\n\t\t\t\t\t'is-with-inserter': isInserterShown,\n\t\t\t\t} ) }\n\t\t\t\tonHoverEnd={ maybeHideInserterPoint }\n\t\t\t>\n\t\t\t\t<motion.div\n\t\t\t\t\tvariants={ lineVariants }\n\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\tdata-testid=\"block-list-insertion-point-indicator\"\n\t\t\t\t/>\n\t\t\t\t{ isInserterShown && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tvariants={ inserterVariants }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-block-list__insertion-point-inserter'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Inserter\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tclientId={ nextClientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t\t\tonToggle={ ( isOpen ) => {\n\t\t\t\t\t\t\t\topenRef.current = isOpen;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectOrClose={ () => {\n\t\t\t\t\t\t\t\topenRef.current = false;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</motion.div>\n\t\t\t\t) }\n\t\t\t</motion.div>\n\t\t</BlockPopoverInbetween>\n\t);\n}\n\nexport default function InsertionPoint( props ) {\n\tconst { insertionPoint, isVisible, isBlockListEmpty } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockCount,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockInsertionPoint = getBlockInsertionPoint();\n\t\t\treturn {\n\t\t\t\tinsertionPoint: blockInsertionPoint,\n\t\t\t\tisVisible: isBlockInsertionPointVisible(),\n\t\t\t\tisBlockListEmpty:\n\t\t\t\t\tgetBlockCount( blockInsertionPoint?.rootClientId ) === 0,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t! isVisible ||\n\t\t// Don't render the insertion point if the block list is empty.\n\t\t// The insertion point will be represented by the appender instead.\n\t\tisBlockListEmpty\n\t) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Render a popover that overlays the block when the desired operation is to replace it.\n\t * Otherwise, render a popover in between blocks for the indication of inserting between them.\n\t */\n\treturn insertionPoint.operation === 'replace' ? (\n\t\t<BlockDropZonePopover\n\t\t\t// Force remount to trigger the animation.\n\t\t\tkey={ `${ insertionPoint.rootClientId }-${ insertionPoint.index }` }\n\t\t\t{ ...props }\n\t\t/>\n\t) : (\n\t\t<InbetweenInsertionPointPopover\n\t\t\toperation={ insertionPoint.operation }\n\t\t\tnearestSide={ insertionPoint.nearestSide }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_data","_element","_components","_compose","_inserter","_store","_inbetween","_dropZone","_lockUnlock","_jsxRuntime","InsertionPointOpenRef","exports","createContext","displayName","InbetweenInsertionPointPopover","__unstablePopoverSlot","__unstableContentRef","operation","nearestSide","selectBlock","hideInsertionPoint","useDispatch","blockEditorStore","openRef","useContext","ref","useRef","orientation","previousClientId","nextClientId","rootClientId","isInserterShown","isDistractionFree","isZoomOutMode","useSelect","select","getBlockOrder","getBlockListSettings","getBlockInsertionPoint","isBlockBeingDragged","getPreviousBlockClientId","getNextBlockClientId","getSettings","isZoomOut","unlock","insertionPoint","order","length","_previousClientId","index","_nextClientId","settings","__unstableWithInserter","getBlockEditingMode","disableMotion","useReducedMotion","onClick","event","target","current","maybeHideInserterPoint","onFocus","maybeResetOpenRef","useCallback","node","lineVariants","start","opacity","scale","rest","transition","delay","type","hover","inserterVariants","orientationClassname","className","clsx","jsx","default","children","jsxs","__unstableMotion","div","layout","initial","animate","whileHover","whileTap","exit","tabIndex","onHoverEnd","variants","position","clientId","__experimentalIsQuick","onToggle","isOpen","onSelectOrClose","InsertionPoint","props","isVisible","isBlockListEmpty","isBlockInsertionPointVisible","getBlockCount","blockInsertionPoint"],"sources":["@wordpress/block-editor/src/components/block-tools/insertion-point.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseRef,\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n} from '@wordpress/element';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport BlockDropZonePopover from '../block-popover/drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nexport const InsertionPointOpenRef = createContext();\nInsertionPointOpenRef.displayName = 'InsertionPointOpenRefContext';\n\nfunction InbetweenInsertionPointPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\toperation = 'insert',\n\tnearestSide = 'right',\n} ) {\n\tconst { selectBlock, hideInsertionPoint } = useDispatch( blockEditorStore );\n\tconst openRef = useContext( InsertionPointOpenRef );\n\tconst ref = useRef();\n\tconst {\n\t\torientation,\n\t\tpreviousClientId,\n\t\tnextClientId,\n\t\trootClientId,\n\t\tisInserterShown,\n\t\tisDistractionFree,\n\t\tisZoomOutMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockListSettings,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockBeingDragged,\n\t\t\tgetPreviousBlockClientId,\n\t\t\tgetNextBlockClientId,\n\t\t\tgetSettings,\n\t\t\tisZoomOut,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet _previousClientId = order[ insertionPoint.index - 1 ];\n\t\tlet _nextClientId = order[ insertionPoint.index ];\n\n\t\twhile ( isBlockBeingDragged( _previousClientId ) ) {\n\t\t\t_previousClientId = getPreviousBlockClientId( _previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( _nextClientId ) ) {\n\t\t\t_nextClientId = getNextBlockClientId( _nextClientId );\n\t\t}\n\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tpreviousClientId: _previousClientId,\n\t\t\tnextClientId: _nextClientId,\n\t\t\torientation:\n\t\t\t\tgetBlockListSettings( insertionPoint.rootClientId )\n\t\t\t\t\t?.orientation || 'vertical',\n\t\t\trootClientId: insertionPoint.rootClientId,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\tisInserterShown: insertionPoint?.__unstableWithInserter,\n\t\t\tisZoomOutMode: isZoomOut(),\n\t\t};\n\t}, [] );\n\tconst { getBlockEditingMode } = useSelect( blockEditorStore );\n\n\tconst disableMotion = useReducedMotion();\n\n\tfunction onClick( event ) {\n\t\tif (\n\t\t\tevent.target === ref.current &&\n\t\t\tnextClientId &&\n\t\t\tgetBlockEditingMode( nextClientId ) !== 'disabled'\n\t\t) {\n\t\t\tselectBlock( nextClientId, -1 );\n\t\t}\n\t}\n\n\tfunction maybeHideInserterPoint( event ) {\n\t\t// Only hide the inserter if it's triggered on the wrapper,\n\t\t// and the inserter is not open.\n\t\tif ( event.target === ref.current && ! openRef.current ) {\n\t\t\thideInsertionPoint();\n\t\t}\n\t}\n\n\tfunction onFocus( event ) {\n\t\t// Only handle click on the wrapper specifically, and not an event\n\t\t// bubbled from the inserter itself.\n\t\tif ( event.target !== ref.current ) {\n\t\t\topenRef.current = true;\n\t\t}\n\t}\n\n\t// Reset the insertion point reference when the Inserter unmounts,\n\t// avoids stale references when `onSelectOrClose` is not called.\n\t// See: https://github.com/WordPress/gutenberg/issues/65598#issuecomment-3249229264.\n\tconst maybeResetOpenRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( ! node && openRef.current ) {\n\t\t\t\topenRef.current = false;\n\t\t\t}\n\t\t},\n\t\t[ openRef ]\n\t);\n\n\tconst lineVariants = {\n\t\t// Initial position starts from the center and invisible.\n\t\tstart: {\n\t\t\topacity: 0,\n\t\t\tscale: 0,\n\t\t},\n\t\t// The line expands to fill the container. If the inserter is visible it\n\t\t// is delayed so it appears orchestrated.\n\t\trest: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: isInserterShown ? 0.5 : 0, type: 'tween' },\n\t\t},\n\t\thover: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.5, type: 'tween' },\n\t\t},\n\t};\n\n\tconst inserterVariants = {\n\t\tstart: {\n\t\t\tscale: disableMotion ? 1 : 0,\n\t\t},\n\t\trest: {\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.4, type: 'tween' },\n\t\t},\n\t};\n\n\tif ( isDistractionFree ) {\n\t\treturn null;\n\t}\n\n\t// Zoom out mode should only show the insertion point for the insert operation.\n\t// Other operations such as \"group\" are when the editor tries to create a row\n\t// block by grouping the block being dragged with the block it's being dropped\n\t// onto.\n\tif ( isZoomOutMode && operation !== 'insert' ) {\n\t\treturn null;\n\t}\n\n\tconst orientationClassname =\n\t\torientation === 'horizontal' || operation === 'group'\n\t\t\t? 'is-horizontal'\n\t\t\t: 'is-vertical';\n\n\tconst className = clsx(\n\t\t'block-editor-block-list__insertion-point',\n\t\torientationClassname\n\t);\n\n\treturn (\n\t\t<BlockPopoverInbetween\n\t\t\tpreviousClientId={ previousClientId }\n\t\t\tnextClientId={ nextClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\toperation={ operation }\n\t\t\tnearestSide={ nearestSide }\n\t\t>\n\t\t\t<motion.div\n\t\t\t\tlayout={ ! disableMotion }\n\t\t\t\tinitial={ disableMotion ? 'rest' : 'start' }\n\t\t\t\tanimate=\"rest\"\n\t\t\t\twhileHover=\"hover\"\n\t\t\t\twhileTap=\"pressed\"\n\t\t\t\texit=\"start\"\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tclassName={ clsx( className, {\n\t\t\t\t\t'is-with-inserter': isInserterShown,\n\t\t\t\t} ) }\n\t\t\t\tonHoverEnd={ maybeHideInserterPoint }\n\t\t\t>\n\t\t\t\t<motion.div\n\t\t\t\t\tvariants={ lineVariants }\n\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\tdata-testid=\"block-list-insertion-point-indicator\"\n\t\t\t\t/>\n\t\t\t\t{ isInserterShown && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tvariants={ inserterVariants }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-block-list__insertion-point-inserter'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Inserter\n\t\t\t\t\t\t\tref={ maybeResetOpenRef }\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tclientId={ nextClientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t\t\tonToggle={ ( isOpen ) => {\n\t\t\t\t\t\t\t\topenRef.current = isOpen;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectOrClose={ () => {\n\t\t\t\t\t\t\t\topenRef.current = false;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</motion.div>\n\t\t\t\t) }\n\t\t\t</motion.div>\n\t\t</BlockPopoverInbetween>\n\t);\n}\n\nexport default function InsertionPoint( props ) {\n\tconst { insertionPoint, isVisible, isBlockListEmpty } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockCount,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockInsertionPoint = getBlockInsertionPoint();\n\t\t\treturn {\n\t\t\t\tinsertionPoint: blockInsertionPoint,\n\t\t\t\tisVisible: isBlockInsertionPointVisible(),\n\t\t\t\tisBlockListEmpty:\n\t\t\t\t\tgetBlockCount( blockInsertionPoint?.rootClientId ) === 0,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t! isVisible ||\n\t\t// Don't render the insertion point if the block list is empty.\n\t\t// The insertion point will be represented by the appender instead.\n\t\tisBlockListEmpty\n\t) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Render a popover that overlays the block when the desired operation is to replace it.\n\t * Otherwise, render a popover in between blocks for the indication of inserting between them.\n\t */\n\treturn insertionPoint.operation === 'replace' ? (\n\t\t<BlockDropZonePopover\n\t\t\t// Force remount to trigger the animation.\n\t\t\tkey={ `${ insertionPoint.rootClientId }-${ insertionPoint.index }` }\n\t\t\t{ ...props }\n\t\t/>\n\t) : (\n\t\t<InbetweenInsertionPointPopover\n\t\t\toperation={ insertionPoint.operation }\n\t\t\tnearestSide={ insertionPoint.nearestSide }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -122,7 +122,8 @@ function __experimentalBlockVariationTransforms({
|
|
|
122
122
|
const {
|
|
123
123
|
activeBlockVariation,
|
|
124
124
|
variations,
|
|
125
|
-
isContentOnly
|
|
125
|
+
isContentOnly,
|
|
126
|
+
isSection
|
|
126
127
|
} = (0, _data.useSelect)(select => {
|
|
127
128
|
const {
|
|
128
129
|
getActiveBlockVariation,
|
|
@@ -131,17 +132,19 @@ function __experimentalBlockVariationTransforms({
|
|
|
131
132
|
const {
|
|
132
133
|
getBlockName,
|
|
133
134
|
getBlockAttributes,
|
|
134
|
-
getBlockEditingMode
|
|
135
|
-
|
|
135
|
+
getBlockEditingMode,
|
|
136
|
+
isSectionBlock
|
|
137
|
+
} = (0, _lockUnlock.unlock)(select(_store.store));
|
|
136
138
|
const name = blockClientId && getBlockName(blockClientId);
|
|
137
139
|
const {
|
|
138
140
|
hasContentRoleAttribute
|
|
139
141
|
} = (0, _lockUnlock.unlock)(select(_blocks.store));
|
|
140
142
|
const isContentBlock = hasContentRoleAttribute(name);
|
|
141
143
|
return {
|
|
142
|
-
activeBlockVariation: getActiveBlockVariation(name, getBlockAttributes(blockClientId)),
|
|
144
|
+
activeBlockVariation: getActiveBlockVariation(name, getBlockAttributes(blockClientId), 'transform'),
|
|
143
145
|
variations: name && getBlockVariations(name, 'transform'),
|
|
144
|
-
isContentOnly: getBlockEditingMode(blockClientId) === 'contentOnly' && !isContentBlock
|
|
146
|
+
isContentOnly: getBlockEditingMode(blockClientId) === 'contentOnly' && !isContentBlock,
|
|
147
|
+
isSection: isSectionBlock(blockClientId)
|
|
145
148
|
};
|
|
146
149
|
}, [blockClientId]);
|
|
147
150
|
const selectedValue = activeBlockVariation?.name;
|
|
@@ -166,7 +169,8 @@ function __experimentalBlockVariationTransforms({
|
|
|
166
169
|
}) => name === variationName).attributes
|
|
167
170
|
});
|
|
168
171
|
};
|
|
169
|
-
|
|
172
|
+
const hideVariationsForSections = window?.__experimentalContentOnlyPatternInsertion && isSection;
|
|
173
|
+
if (!variations?.length || isContentOnly || hideVariationsForSections) {
|
|
170
174
|
return null;
|
|
171
175
|
}
|
|
172
176
|
const baseClass = 'block-editor-block-variation-transforms';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","_i18n","_components","_data","_element","_icons","_blockIcon","_interopRequireDefault","_store","_lockUnlock","_jsxRuntime","VariationsButtons","className","onSelectVariation","selectedValue","variations","jsxs","children","jsx","VisuallyHidden","as","__","map","variation","Button","__next40pxDefaultSize","size","icon","default","showColors","isPressed","name","label","title","sprintf","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","DropdownMenu","text","popoverProps","position","chevronDown","toggleProps","iconPosition","MenuGroup","MenuItemsChoice","choices","onSelect","VariationsToggleGroupControl","__experimentalToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalToggleGroupControlOptionIcon","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","useDispatch","blockEditorStore","activeBlockVariation","isContentOnly","useSelect","select","getActiveBlockVariation","getBlockVariations","blocksStore","getBlockName","getBlockAttributes","getBlockEditingMode","hasContentRoleAttribute","unlock","isContentBlock","hasUniqueIcons","useMemo","variationIcons","Set","forEach","add","src","length","variationName","find","attributes","baseClass","showButtons","ButtonComponent","Component","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst { getBlockName, getBlockAttributes, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\tconst { hasContentRoleAttribute } = unlock( select( blocksStore ) );\n\t\t\tconst isContentBlock = hasContentRoleAttribute( name );\n\n\t\t\treturn {\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tgetBlockAttributes( blockClientId )\n\t\t\t\t),\n\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( blockClientId ) === 'contentOnly' &&\n\t\t\t\t\t! isContentBlock,\n\t\t\t};\n\t\t},\n\t\t[ blockClientId ]\n\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tif ( ! variations?.length || isContentOnly ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_blocks","require","_i18n","_components","_data","_element","_icons","_blockIcon","_interopRequireDefault","_store","_lockUnlock","_jsxRuntime","VariationsButtons","className","onSelectVariation","selectedValue","variations","jsxs","children","jsx","VisuallyHidden","as","__","map","variation","Button","__next40pxDefaultSize","size","icon","default","showColors","isPressed","name","label","title","sprintf","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","DropdownMenu","text","popoverProps","position","chevronDown","toggleProps","iconPosition","MenuGroup","MenuItemsChoice","choices","onSelect","VariationsToggleGroupControl","__experimentalToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalToggleGroupControlOptionIcon","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","useDispatch","blockEditorStore","activeBlockVariation","isContentOnly","isSection","useSelect","select","getActiveBlockVariation","getBlockVariations","blocksStore","getBlockName","getBlockAttributes","getBlockEditingMode","isSectionBlock","unlock","hasContentRoleAttribute","isContentBlock","hasUniqueIcons","useMemo","variationIcons","Set","forEach","add","src","length","variationName","find","attributes","hideVariationsForSections","window","__experimentalContentOnlyPatternInsertion","baseClass","showButtons","ButtonComponent","Component","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly, isSection } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\t\tselect( blocksStore );\n\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockName,\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlockEditingMode,\n\t\t\t\t\tisSectionBlock,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\t\tconst { hasContentRoleAttribute } = unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t);\n\t\t\t\tconst isContentBlock = hasContentRoleAttribute( name );\n\n\t\t\t\treturn {\n\t\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tgetBlockAttributes( blockClientId ),\n\t\t\t\t\t\t'transform'\n\t\t\t\t\t),\n\t\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\t\tisContentOnly:\n\t\t\t\t\t\tgetBlockEditingMode( blockClientId ) ===\n\t\t\t\t\t\t\t'contentOnly' && ! isContentBlock,\n\t\t\t\t\tisSection: isSectionBlock( blockClientId ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockClientId ]\n\t\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tconst hideVariationsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion && isSection;\n\n\tif ( ! variations?.length || isContentOnly || hideVariationsForSections ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":";;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AASA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAKA,IAAAM,UAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AAA2C,IAAAU,WAAA,GAAAV,OAAA;AAvB3C;AACA;AACA;;AAgBA;AACA;AACA;;AAKA,SAASW,iBAAiBA,CAAE;EAC3BC,SAAS;EACTC,iBAAiB;EACjBC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,oBACC,IAAAL,WAAA,CAAAM,IAAA;IAAUJ,SAAS,EAAGA,SAAW;IAAAK,QAAA,gBAChC,IAAAP,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAiB,cAAc;MAACC,EAAE,EAAC,QAAQ;MAAAH,QAAA,EACxB,IAAAI,QAAE,EAAE,wBAAyB;IAAC,CACjB,CAAC,EACfN,UAAU,CAACO,GAAG,CAAIC,SAAS,iBAC5B,IAAAb,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAsB,MAAM;MACNC,qBAAqB;MACrBC,IAAI,EAAC,SAAS;MAEdC,IAAI,eAAG,IAAAjB,WAAA,CAAAQ,GAAA,EAACZ,UAAA,CAAAsB,OAAS;QAACD,IAAI,EAAGJ,SAAS,CAACI,IAAM;QAACE,UAAU;MAAA,CAAE,CAAG;MACzDC,SAAS,EAAGhB,aAAa,KAAKS,SAAS,CAACQ,IAAM;MAC9CC,KAAK,EACJlB,aAAa,KAAKS,SAAS,CAACQ,IAAI,GAC7BR,SAAS,CAACU,KAAK,GACf,IAAAC,aAAO,EACP;MACA,IAAAb,QAAE,EAAE,iBAAkB,CAAC,EACvBE,SAAS,CAACU,KACV,CACH;MACDE,OAAO,EAAGA,CAAA,KAAMtB,iBAAiB,CAAEU,SAAS,CAACQ,IAAK,CAAG;MACrD,cAAaR,SAAS,CAACU,KAAO;MAC9BG,WAAW;IAAA,GAdLb,SAAS,CAACQ,IAehB,CACA,CAAC;EAAA,CACM,CAAC;AAEb;AAEA,SAASM,kBAAkBA,CAAE;EAC5BzB,SAAS;EACTC,iBAAiB;EACjBC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAMuB,aAAa,GAAGvB,UAAU,CAACO,GAAG,CACnC,CAAE;IAAES,IAAI;IAAEE,KAAK;IAAEM;EAAY,CAAC,MAAQ;IACrCC,KAAK,EAAET,IAAI;IACXC,KAAK,EAAEC,KAAK;IACZQ,IAAI,EAAEF;EACP,CAAC,CACF,CAAC;EAED,oBACC,IAAA7B,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAwC,YAAY;IACZ9B,SAAS,EAAGA,SAAW;IACvBoB,KAAK,EAAG,IAAAX,QAAE,EAAE,wBAAyB,CAAG;IACxCsB,IAAI,EAAG,IAAAtB,QAAE,EAAE,wBAAyB,CAAG;IACvCuB,YAAY,EAAG;MACdC,QAAQ,EAAE,eAAe;MACzBjC,SAAS,EAAE,GAAIA,SAAS;IACzB,CAAG;IACHe,IAAI,EAAGmB,kBAAa;IACpBC,WAAW,EAAG;MAAEC,YAAY,EAAE;IAAQ,CAAG;IAAA/B,QAAA,EAEvCA,CAAA,kBACD,IAAAP,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAA+C,SAAS;MAAAhC,QAAA,eACT,IAAAP,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAgD,eAAe;QACfC,OAAO,EAAGb,aAAe;QACzBE,KAAK,EAAG1B,aAAe;QACvBsC,QAAQ,EAAGvC;MAAmB,CAC9B;IAAC,CACQ;EACX,CACY,CAAC;AAEjB;AAEA,SAASwC,4BAA4BA,CAAE;EACtCzC,SAAS;EACTC,iBAAiB;EACjBC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,oBACC,IAAAL,WAAA,CAAAQ,GAAA;IAAKN,SAAS,EAAGA,SAAW;IAAAK,QAAA,eAC3B,IAAAP,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAoD,gCAAkB;MAClBtB,KAAK,EAAG,IAAAX,QAAE,EAAE,wBAAyB,CAAG;MACxCmB,KAAK,EAAG1B,aAAe;MACvByC,mBAAmB;MACnBC,QAAQ,EAAG3C,iBAAmB;MAC9BY,qBAAqB;MACrBgC,uBAAuB;MAAAxC,QAAA,EAErBF,UAAU,CAACO,GAAG,CAAIC,SAAS,iBAC5B,IAAAb,WAAA,CAAAQ,GAAA,EAAChB,WAAA,CAAAwD,0CAA4B;QAE5B/B,IAAI,eACH,IAAAjB,WAAA,CAAAQ,GAAA,EAACZ,UAAA,CAAAsB,OAAS;UAACD,IAAI,EAAGJ,SAAS,CAACI,IAAM;UAACE,UAAU;QAAA,CAAE,CAC/C;QACDW,KAAK,EAAGjB,SAAS,CAACQ,IAAM;QACxBC,KAAK,EACJlB,aAAa,KAAKS,SAAS,CAACQ,IAAI,GAC7BR,SAAS,CAACU,KAAK,GACf,IAAAC,aAAO,EACP;QACA,IAAAb,QAAE,EAAE,iBAAkB,CAAC,EACvBE,SAAS,CAACU,KACV;MACH,GAbKV,SAAS,CAACQ,IAchB,CACA;IAAC,CACgB;EAAC,CACjB,CAAC;AAER;AAEA,SAAS4B,sCAAsCA,CAAE;EAAEC;AAAc,CAAC,EAAG;EACpE,MAAM;IAAEC;EAAsB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EACjE,MAAM;IAAEC,oBAAoB;IAAEjD,UAAU;IAAEkD,aAAa;IAAEC;EAAU,CAAC,GACnE,IAAAC,eAAS,EACNC,MAAM,IAAM;IACb,MAAM;MAAEC,uBAAuB;MAAEC;IAAmB,CAAC,GACpDF,MAAM,CAAEG,aAAY,CAAC;IAEtB,MAAM;MACLC,YAAY;MACZC,kBAAkB;MAClBC,mBAAmB;MACnBC;IACD,CAAC,GAAG,IAAAC,kBAAM,EAAER,MAAM,CAAEL,YAAiB,CAAE,CAAC;IAExC,MAAMhC,IAAI,GAAG6B,aAAa,IAAIY,YAAY,CAAEZ,aAAc,CAAC;IAE3D,MAAM;MAAEiB;IAAwB,CAAC,GAAG,IAAAD,kBAAM,EACzCR,MAAM,CAAEG,aAAY,CACrB,CAAC;IACD,MAAMO,cAAc,GAAGD,uBAAuB,CAAE9C,IAAK,CAAC;IAEtD,OAAO;MACNiC,oBAAoB,EAAEK,uBAAuB,CAC5CtC,IAAI,EACJ0C,kBAAkB,CAAEb,aAAc,CAAC,EACnC,WACD,CAAC;MACD7C,UAAU,EAAEgB,IAAI,IAAIuC,kBAAkB,CAAEvC,IAAI,EAAE,WAAY,CAAC;MAC3DkC,aAAa,EACZS,mBAAmB,CAAEd,aAAc,CAAC,KACnC,aAAa,IAAI,CAAEkB,cAAc;MACnCZ,SAAS,EAAES,cAAc,CAAEf,aAAc;IAC1C,CAAC;EACF,CAAC,EACD,CAAEA,aAAa,CAChB,CAAC;EAEF,MAAM9C,aAAa,GAAGkD,oBAAoB,EAAEjC,IAAI;;EAEhD;EACA,MAAMgD,cAAc,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACrC,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC;IAChC,IAAK,CAAEnE,UAAU,EAAG;MACnB,OAAO,KAAK;IACb;IACAA,UAAU,CAACoE,OAAO,CAAI5D,SAAS,IAAM;MACpC,IAAKA,SAAS,CAACI,IAAI,EAAG;QACrBsD,cAAc,CAACG,GAAG,CAAE7D,SAAS,CAACI,IAAI,EAAE0D,GAAG,IAAI9D,SAAS,CAACI,IAAK,CAAC;MAC5D;IACD,CAAE,CAAC;IACH,OAAOsD,cAAc,CAACvD,IAAI,KAAKX,UAAU,CAACuE,MAAM;EACjD,CAAC,EAAE,CAAEvE,UAAU,CAAG,CAAC;EAEnB,MAAMF,iBAAiB,GAAK0E,aAAa,IAAM;IAC9C1B,qBAAqB,CAAED,aAAa,EAAE;MACrC,GAAG7C,UAAU,CAACyE,IAAI,CAAE,CAAE;QAAEzD;MAAK,CAAC,KAAMA,IAAI,KAAKwD,aAAc,CAAC,CAC1DE;IACH,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,yBAAyB,GAC9BC,MAAM,EAAEC,yCAAyC,IAAI1B,SAAS;EAE/D,IAAK,CAAEnD,UAAU,EAAEuE,MAAM,IAAIrB,aAAa,IAAIyB,yBAAyB,EAAG;IACzE,OAAO,IAAI;EACZ;EAEA,MAAMG,SAAS,GAAG,yCAAyC;;EAE3D;EACA,MAAMC,WAAW,GAAG/E,UAAU,CAACuE,MAAM,GAAG,CAAC;EAEzC,MAAMS,eAAe,GAAGD,WAAW,GAChCnF,iBAAiB,GACjB0C,4BAA4B;EAE/B,MAAM2C,SAAS,GAAGjB,cAAc,GAAGgB,eAAe,GAAG1D,kBAAkB;EAEvE,oBACC,IAAA3B,WAAA,CAAAQ,GAAA,EAAC8E,SAAS;IACTpF,SAAS,EAAGiF,SAAW;IACvBhF,iBAAiB,EAAGA,iBAAmB;IACvCC,aAAa,EAAGA,aAAe;IAC/BC,UAAU,EAAGA;EAAY,CACzB,CAAC;AAEJ;AAAC,IAAAkF,QAAA,GAAAC,OAAA,CAAAtE,OAAA,GAEc+B,sCAAsC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","parseQuantityAndUnitFromRawValue","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","cornerValues","firstValue","allSame","hasDefinedValues","filteredValues","isValuePreset","includes","getPresetSlug","slug","match","getSliderValueFromPreset","presetValue","presets","parseFloat","sliderValue","findIndex","size","String","NaN","getCustomValueFromPreset","radiusSize","find","getPresetValueFromControlValue","controlValue","controlType","parseInt","getPresetValueFromCustomValue","spacingMatch","convertPresetsToCustomValues","converted","keys","forEach","key","customValue"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given preset.\n */\nexport function getPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_components","require","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","parseQuantityAndUnitFromRawValue","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","cornerValues","firstValue","allSame","hasDefinedValues","filteredValues","isValuePreset","includes","getPresetSlug","slug","match","getSliderValueFromPreset","presetValue","presets","parseFloat","sliderValue","findIndex","size","String","NaN","getCustomValueFromPreset","radiusSize","find","getPresetValueFromControlValue","controlValue","controlType","parseInt","getPresetValueFromCustomValue","spacingMatch","convertPresetsToCustomValues","converted","keys","forEach","key","customValue"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given preset.\n */\nexport function getPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -136,15 +136,15 @@ function BorderPanel({
|
|
|
136
136
|
const showBorderRadius = useHasBorderRadiusControl(settings);
|
|
137
137
|
const borderRadiusValues = (0, _element.useMemo)(() => {
|
|
138
138
|
if (typeof border?.radius !== 'object') {
|
|
139
|
-
return
|
|
139
|
+
return border?.radius;
|
|
140
140
|
}
|
|
141
141
|
return {
|
|
142
|
-
topLeft:
|
|
143
|
-
topRight:
|
|
144
|
-
bottomLeft:
|
|
145
|
-
bottomRight:
|
|
142
|
+
topLeft: border?.radius?.topLeft,
|
|
143
|
+
topRight: border?.radius?.topRight,
|
|
144
|
+
bottomLeft: border?.radius?.bottomLeft,
|
|
145
|
+
bottomRight: border?.radius?.bottomRight
|
|
146
146
|
};
|
|
147
|
-
}, [border?.radius
|
|
147
|
+
}, [border?.radius]);
|
|
148
148
|
const setBorderRadius = newBorderRadius => setBorder({
|
|
149
149
|
...border,
|
|
150
150
|
radius: newBorderRadius
|