@wordpress/block-editor 10.0.4 → 10.0.5
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/components/block-inspector/index.js +3 -4
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +72 -14
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/inserter/search-items.js +2 -17
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/hooks/margin.js +4 -4
- package/build/hooks/margin.js.map +1 -1
- package/build-module/components/block-inspector/index.js +3 -4
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +72 -14
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/inserter/search-items.js +3 -17
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/hooks/margin.js +4 -4
- package/build-module/hooks/margin.js.map +1 -1
- package/build-style/style-rtl.css +61 -106
- package/build-style/style.css +61 -106
- package/package.json +2 -3
- package/src/components/block-inspector/index.js +4 -7
- package/src/components/block-list/block.js +111 -7
- package/src/components/block-list/style.scss +85 -133
- package/src/components/button-block-appender/style.scss +3 -1
- package/src/components/inserter/search-items.js +3 -15
- package/src/components/inserter/test/search-items.js +4 -0
- package/src/hooks/margin.js +4 -4
|
@@ -51,7 +51,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
51
51
|
function useContentBlocks(blockTypes, block) {
|
|
52
52
|
const contenBlocksObjectAux = (0, _element.useMemo)(() => {
|
|
53
53
|
return blockTypes.reduce((result, blockType) => {
|
|
54
|
-
if (Object.entries(blockType.attributes).some(_ref => {
|
|
54
|
+
if (blockType.name !== 'core/list-item' && Object.entries(blockType.attributes).some(_ref => {
|
|
55
55
|
let [, {
|
|
56
56
|
__experimentalRole
|
|
57
57
|
}] = _ref;
|
|
@@ -161,8 +161,7 @@ const BlockInspector = _ref5 => {
|
|
|
161
161
|
getSelectedBlockClientId,
|
|
162
162
|
getSelectedBlockCount,
|
|
163
163
|
getBlockName,
|
|
164
|
-
__unstableGetContentLockingParent
|
|
165
|
-
getTemplateLock
|
|
164
|
+
__unstableGetContentLockingParent
|
|
166
165
|
} = select(_store.store);
|
|
167
166
|
|
|
168
167
|
const _selectedBlockClientId = getSelectedBlockClientId();
|
|
@@ -176,7 +175,7 @@ const BlockInspector = _ref5 => {
|
|
|
176
175
|
selectedBlockClientId: _selectedBlockClientId,
|
|
177
176
|
selectedBlockName: _selectedBlockName,
|
|
178
177
|
blockType: _blockType,
|
|
179
|
-
topLevelLockedBlock:
|
|
178
|
+
topLevelLockedBlock: __unstableGetContentLockingParent(_selectedBlockClientId)
|
|
180
179
|
};
|
|
181
180
|
}, []);
|
|
182
181
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"names":["useContentBlocks","blockTypes","block","contenBlocksObjectAux","reduce","result","blockType","Object","entries","attributes","some","__experimentalRole","name","isContentBlock","blockName","getContentBlocks","blocks","push","innerBlocks","BlockNavigationButton","selectedBlock","selectBlock","blockEditorStore","find","isSelected","clientId","icon","title","BlockInspectorLockedBlocks","topLevelLockedBlock","select","blocksStore","getBlockTypes","getBlock","getSelectedBlock","blockInformation","contentBlocks","map","contentBlock","BlockInspector","showNoBlockSelectedMessage","count","selectedBlockName","selectedBlockClientId","getSelectedBlockClientId","getSelectedBlockCount","getBlockName","__unstableGetContentLockingParent","getTemplateLock","_selectedBlockClientId","_selectedBlockName","_blockType","isSelectedBlockUnregistered","BlockInspectorSingleBlock","hasBlockStyles","getBlockStyles","blockStyles","length","AdvancedControls","slot","InspectorAdvancedControls","slotName","hasFills","Boolean","fills"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\t__experimentalUseSlot as useSlot,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from '../inspector-controls';\nimport BlockStyles from '../block-styles';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport DefaultStylePicker from '../default-style-picker';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\n\nfunction useContentBlocks( blockTypes, block ) {\n\tconst contenBlocksObjectAux = useMemo( () => {\n\t\treturn blockTypes.reduce( ( result, blockType ) => {\n\t\t\tif (\n\t\t\t\tObject.entries( blockType.attributes ).some(\n\t\t\t\t\t( [ , { __experimentalRole } ] ) =>\n\t\t\t\t\t\t__experimentalRole === 'content'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tresult[ blockType.name ] = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ blockTypes ] );\n\tconst isContentBlock = useCallback(\n\t\t( blockName ) => {\n\t\t\treturn !! contenBlocksObjectAux[ blockName ];\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\treturn useMemo( () => {\n\t\treturn getContentBlocks( [ block ], isContentBlock );\n\t}, [ block, isContentBlock ] );\n}\n\nfunction getContentBlocks( blocks, isContentBlock ) {\n\tconst result = [];\n\tfor ( const block of blocks ) {\n\t\tif ( isContentBlock( block.name ) ) {\n\t\t\tresult.push( block );\n\t\t}\n\t\tresult.push( ...getContentBlocks( block.innerBlocks, isContentBlock ) );\n\t}\n\treturn result;\n}\n\nfunction BlockNavigationButton( { blockTypes, block, selectedBlock } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst blockType = blockTypes.find( ( { name } ) => name === block.name );\n\tconst isSelected =\n\t\tselectedBlock && selectedBlock.clientId === block.clientId;\n\treturn (\n\t\t<Button\n\t\t\tisPressed={ isSelected }\n\t\t\tonClick={ () => selectBlock( block.clientId ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t<FlexItem>{ blockType.title }</FlexItem>\n\t\t\t</HStack>\n\t\t</Button>\n\t);\n}\n\nfunction BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {\n\tconst { blockTypes, block, selectedBlock } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\t\tblock: select( blockEditorStore ).getBlock(\n\t\t\t\t\ttopLevelLockedBlock\n\t\t\t\t),\n\t\t\t\tselectedBlock: select( blockEditorStore ).getSelectedBlock(),\n\t\t\t};\n\t\t},\n\t\t[ topLevelLockedBlock ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( topLevelLockedBlock );\n\tconst contentBlocks = useContentBlocks( blockTypes, block );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ topLevelLockedBlock } />\n\t\t\t<VStack\n\t\t\t\tspacing={ 1 }\n\t\t\t\tpadding={ 4 }\n\t\t\t\tclassName=\"block-editor-block-inspector__block-buttons-container\"\n\t\t\t>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t{ __( 'Content' ) }\n\t\t\t\t</h2>\n\t\t\t\t{ contentBlocks.map( ( contentBlock ) => (\n\t\t\t\t\t<BlockNavigationButton\n\t\t\t\t\t\tselectedBlock={ selectedBlock }\n\t\t\t\t\t\tkey={ contentBlock.clientId }\n\t\t\t\t\t\tblock={ contentBlock }\n\t\t\t\t\t\tblockTypes={ blockTypes }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nconst BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {\n\tconst {\n\t\tcount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\ttopLevelLockedBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\t__unstableGetContentLockingParent,\n\t\t\tgetTemplateLock,\n\t\t} = select( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst _selectedBlockName =\n\t\t\t_selectedBlockClientId && getBlockName( _selectedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\n\t\treturn {\n\t\t\tcount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\ttopLevelLockedBlock:\n\t\t\t\tgetTemplateLock( _selectedBlockClientId ) === 'contentOnly'\n\t\t\t\t\t? _selectedBlockClientId\n\t\t\t\t\t: __unstableGetContentLockingParent(\n\t\t\t\t\t\t\t_selectedBlockClientId\n\t\t\t\t\t ),\n\t\t};\n\t}, [] );\n\n\tif ( count > 1 ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isSelectedBlockUnregistered =\n\t\tselectedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the selected block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tif (\n\t\t! blockType ||\n\t\t! selectedBlockClientId ||\n\t\tisSelectedBlockUnregistered\n\t) {\n\t\tif ( showNoBlockSelectedMessage ) {\n\t\t\treturn (\n\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif ( topLevelLockedBlock ) {\n\t\treturn (\n\t\t\t<BlockInspectorLockedBlocks\n\t\t\t\ttopLevelLockedBlock={ topLevelLockedBlock }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<BlockInspectorSingleBlock\n\t\t\tclientId={ selectedBlockClientId }\n\t\t\tblockName={ blockType.name }\n\t\t/>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( { clientId, blockName } ) => {\n\tconst hasBlockStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\tconst blockStyles = getBlockStyles( blockName );\n\t\t\treturn blockStyles && blockStyles.length > 0;\n\t\t},\n\t\t[ blockName ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles\n\t\t\t\t\t\t\tscope=\"core/block-inspector\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<AdvancedControls />\n\t\t\t</div>\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\nconst AdvancedControls = () => {\n\tconst slot = useSlot( InspectorAdvancedControls.slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"block-editor-block-inspector__advanced\"\n\t\t\ttitle={ __( 'Advanced' ) }\n\t\t\tinitialOpen={ false }\n\t\t>\n\t\t\t<InspectorControls.Slot __experimentalGroup=\"advanced\" />\n\t\t</PanelBody>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"names":["useContentBlocks","blockTypes","block","contenBlocksObjectAux","reduce","result","blockType","name","Object","entries","attributes","some","__experimentalRole","isContentBlock","blockName","getContentBlocks","blocks","push","innerBlocks","BlockNavigationButton","selectedBlock","selectBlock","blockEditorStore","find","isSelected","clientId","icon","title","BlockInspectorLockedBlocks","topLevelLockedBlock","select","blocksStore","getBlockTypes","getBlock","getSelectedBlock","blockInformation","contentBlocks","map","contentBlock","BlockInspector","showNoBlockSelectedMessage","count","selectedBlockName","selectedBlockClientId","getSelectedBlockClientId","getSelectedBlockCount","getBlockName","__unstableGetContentLockingParent","_selectedBlockClientId","_selectedBlockName","_blockType","isSelectedBlockUnregistered","BlockInspectorSingleBlock","hasBlockStyles","getBlockStyles","blockStyles","length","AdvancedControls","slot","InspectorAdvancedControls","slotName","hasFills","Boolean","fills"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\t__experimentalUseSlot as useSlot,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from '../inspector-controls';\nimport BlockStyles from '../block-styles';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport DefaultStylePicker from '../default-style-picker';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\n\nfunction useContentBlocks( blockTypes, block ) {\n\tconst contenBlocksObjectAux = useMemo( () => {\n\t\treturn blockTypes.reduce( ( result, blockType ) => {\n\t\t\tif (\n\t\t\t\tblockType.name !== 'core/list-item' &&\n\t\t\t\tObject.entries( blockType.attributes ).some(\n\t\t\t\t\t( [ , { __experimentalRole } ] ) =>\n\t\t\t\t\t\t__experimentalRole === 'content'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tresult[ blockType.name ] = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ blockTypes ] );\n\tconst isContentBlock = useCallback(\n\t\t( blockName ) => {\n\t\t\treturn !! contenBlocksObjectAux[ blockName ];\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\treturn useMemo( () => {\n\t\treturn getContentBlocks( [ block ], isContentBlock );\n\t}, [ block, isContentBlock ] );\n}\n\nfunction getContentBlocks( blocks, isContentBlock ) {\n\tconst result = [];\n\tfor ( const block of blocks ) {\n\t\tif ( isContentBlock( block.name ) ) {\n\t\t\tresult.push( block );\n\t\t}\n\t\tresult.push( ...getContentBlocks( block.innerBlocks, isContentBlock ) );\n\t}\n\treturn result;\n}\n\nfunction BlockNavigationButton( { blockTypes, block, selectedBlock } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst blockType = blockTypes.find( ( { name } ) => name === block.name );\n\tconst isSelected =\n\t\tselectedBlock && selectedBlock.clientId === block.clientId;\n\treturn (\n\t\t<Button\n\t\t\tisPressed={ isSelected }\n\t\t\tonClick={ () => selectBlock( block.clientId ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t<FlexItem>{ blockType.title }</FlexItem>\n\t\t\t</HStack>\n\t\t</Button>\n\t);\n}\n\nfunction BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {\n\tconst { blockTypes, block, selectedBlock } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\t\tblock: select( blockEditorStore ).getBlock(\n\t\t\t\t\ttopLevelLockedBlock\n\t\t\t\t),\n\t\t\t\tselectedBlock: select( blockEditorStore ).getSelectedBlock(),\n\t\t\t};\n\t\t},\n\t\t[ topLevelLockedBlock ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( topLevelLockedBlock );\n\tconst contentBlocks = useContentBlocks( blockTypes, block );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ topLevelLockedBlock } />\n\t\t\t<VStack\n\t\t\t\tspacing={ 1 }\n\t\t\t\tpadding={ 4 }\n\t\t\t\tclassName=\"block-editor-block-inspector__block-buttons-container\"\n\t\t\t>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t{ __( 'Content' ) }\n\t\t\t\t</h2>\n\t\t\t\t{ contentBlocks.map( ( contentBlock ) => (\n\t\t\t\t\t<BlockNavigationButton\n\t\t\t\t\t\tselectedBlock={ selectedBlock }\n\t\t\t\t\t\tkey={ contentBlock.clientId }\n\t\t\t\t\t\tblock={ contentBlock }\n\t\t\t\t\t\tblockTypes={ blockTypes }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nconst BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {\n\tconst {\n\t\tcount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\ttopLevelLockedBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\t__unstableGetContentLockingParent,\n\t\t} = select( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst _selectedBlockName =\n\t\t\t_selectedBlockClientId && getBlockName( _selectedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\n\t\treturn {\n\t\t\tcount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\ttopLevelLockedBlock: __unstableGetContentLockingParent(\n\t\t\t\t_selectedBlockClientId\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tif ( count > 1 ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isSelectedBlockUnregistered =\n\t\tselectedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the selected block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tif (\n\t\t! blockType ||\n\t\t! selectedBlockClientId ||\n\t\tisSelectedBlockUnregistered\n\t) {\n\t\tif ( showNoBlockSelectedMessage ) {\n\t\t\treturn (\n\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif ( topLevelLockedBlock ) {\n\t\treturn (\n\t\t\t<BlockInspectorLockedBlocks\n\t\t\t\ttopLevelLockedBlock={ topLevelLockedBlock }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<BlockInspectorSingleBlock\n\t\t\tclientId={ selectedBlockClientId }\n\t\t\tblockName={ blockType.name }\n\t\t/>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( { clientId, blockName } ) => {\n\tconst hasBlockStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\tconst blockStyles = getBlockStyles( blockName );\n\t\t\treturn blockStyles && blockStyles.length > 0;\n\t\t},\n\t\t[ blockName ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles\n\t\t\t\t\t\t\tscope=\"core/block-inspector\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<AdvancedControls />\n\t\t\t</div>\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\nconst AdvancedControls = () => {\n\tconst slot = useSlot( InspectorAdvancedControls.slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"block-editor-block-inspector__advanced\"\n\t\t\ttitle={ __( 'Advanced' ) }\n\t\t\tinitialOpen={ false }\n\t\t>\n\t\t\t<InspectorControls.Slot __experimentalGroup=\"advanced\" />\n\t\t</PanelBody>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"]}
|
|
@@ -285,17 +285,17 @@ const applyWithSelect = (0, _data.withSelect)((select, _ref3) => {
|
|
|
285
285
|
isSelected
|
|
286
286
|
};
|
|
287
287
|
});
|
|
288
|
-
const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps,
|
|
289
|
-
let {
|
|
290
|
-
select
|
|
291
|
-
} = _ref4;
|
|
288
|
+
const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, registry) => {
|
|
292
289
|
const {
|
|
293
290
|
updateBlockAttributes,
|
|
294
291
|
insertBlocks,
|
|
295
292
|
mergeBlocks,
|
|
296
293
|
replaceBlocks,
|
|
297
294
|
toggleSelection,
|
|
298
|
-
__unstableMarkLastChangeAsPersistent
|
|
295
|
+
__unstableMarkLastChangeAsPersistent,
|
|
296
|
+
moveBlocksToPosition,
|
|
297
|
+
removeBlock,
|
|
298
|
+
selectBlock
|
|
299
299
|
} = dispatch(_store.store); // Do not add new properties here, use `useDispatch` instead to avoid
|
|
300
300
|
// leaking new props to the public API (editor.BlockListBlock filter).
|
|
301
301
|
|
|
@@ -303,7 +303,7 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, _ref4) =>
|
|
|
303
303
|
setAttributes(newAttributes) {
|
|
304
304
|
const {
|
|
305
305
|
getMultiSelectedBlockClientIds
|
|
306
|
-
} = select(_store.store);
|
|
306
|
+
} = registry.select(_store.store);
|
|
307
307
|
const multiSelectedBlockClientIds = getMultiSelectedBlockClientIds();
|
|
308
308
|
const {
|
|
309
309
|
clientId
|
|
@@ -326,7 +326,7 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, _ref4) =>
|
|
|
326
326
|
} = ownProps;
|
|
327
327
|
const {
|
|
328
328
|
getBlockIndex
|
|
329
|
-
} = select(_store.store);
|
|
329
|
+
} = registry.select(_store.store);
|
|
330
330
|
const index = getBlockIndex(clientId);
|
|
331
331
|
insertBlocks(blocks, index + 1, rootClientId);
|
|
332
332
|
},
|
|
@@ -339,13 +339,52 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, _ref4) =>
|
|
|
339
339
|
const {
|
|
340
340
|
getPreviousBlockClientId,
|
|
341
341
|
getNextBlockClientId,
|
|
342
|
-
getBlock
|
|
343
|
-
|
|
342
|
+
getBlock,
|
|
343
|
+
getBlockAttributes,
|
|
344
|
+
getBlockName,
|
|
345
|
+
getBlockOrder
|
|
346
|
+
} = registry.select(_store.store); // For `Delete` or forward merge, we should do the exact same thing
|
|
347
|
+
// as `Backspace`, but from the other block.
|
|
344
348
|
|
|
345
349
|
if (forward) {
|
|
350
|
+
if (rootClientId) {
|
|
351
|
+
const nextRootClientId = getNextBlockClientId(rootClientId);
|
|
352
|
+
|
|
353
|
+
if (nextRootClientId) {
|
|
354
|
+
// If there is a block that follows with the same parent
|
|
355
|
+
// block name and the same attributes, merge the inner
|
|
356
|
+
// blocks.
|
|
357
|
+
if (getBlockName(rootClientId) === getBlockName(nextRootClientId)) {
|
|
358
|
+
const rootAttributes = getBlockAttributes(rootClientId);
|
|
359
|
+
const previousRootAttributes = getBlockAttributes(nextRootClientId);
|
|
360
|
+
|
|
361
|
+
if (Object.keys(rootAttributes).every(key => rootAttributes[key] === previousRootAttributes[key])) {
|
|
362
|
+
registry.batch(() => {
|
|
363
|
+
moveBlocksToPosition(getBlockOrder(nextRootClientId), nextRootClientId, rootClientId);
|
|
364
|
+
removeBlock(nextRootClientId, false);
|
|
365
|
+
});
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
} else {
|
|
369
|
+
mergeBlocks(rootClientId, nextRootClientId);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
346
375
|
const nextBlockClientId = getNextBlockClientId(clientId);
|
|
347
376
|
|
|
348
|
-
if (nextBlockClientId) {
|
|
377
|
+
if (!nextBlockClientId) {
|
|
378
|
+
return;
|
|
379
|
+
} // Check if it's possibile to "unwrap" the following block
|
|
380
|
+
// before trying to merge.
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
const replacement = (0, _blocks.switchToBlockType)(getBlock(nextBlockClientId), '*');
|
|
384
|
+
|
|
385
|
+
if (replacement && replacement.length) {
|
|
386
|
+
replaceBlocks(nextBlockClientId, replacement);
|
|
387
|
+
} else {
|
|
349
388
|
mergeBlocks(clientId, nextBlockClientId);
|
|
350
389
|
}
|
|
351
390
|
} else {
|
|
@@ -354,12 +393,31 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, _ref4) =>
|
|
|
354
393
|
if (previousBlockClientId) {
|
|
355
394
|
mergeBlocks(previousBlockClientId, clientId);
|
|
356
395
|
} else if (rootClientId) {
|
|
357
|
-
//
|
|
396
|
+
const previousRootClientId = getPreviousBlockClientId(rootClientId); // If there is a preceding block with the same parent block
|
|
397
|
+
// name and the same attributes, merge the inner blocks.
|
|
398
|
+
|
|
399
|
+
if (previousRootClientId && getBlockName(rootClientId) === getBlockName(previousRootClientId)) {
|
|
400
|
+
const rootAttributes = getBlockAttributes(rootClientId);
|
|
401
|
+
const previousRootAttributes = getBlockAttributes(previousRootClientId);
|
|
402
|
+
|
|
403
|
+
if (Object.keys(rootAttributes).every(key => rootAttributes[key] === previousRootAttributes[key])) {
|
|
404
|
+
registry.batch(() => {
|
|
405
|
+
moveBlocksToPosition(getBlockOrder(rootClientId), rootClientId, previousRootClientId);
|
|
406
|
+
removeBlock(rootClientId, false);
|
|
407
|
+
});
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
} // Attempt to "unwrap" the block contents when there's no
|
|
358
411
|
// preceding block to merge with.
|
|
412
|
+
|
|
413
|
+
|
|
359
414
|
const replacement = (0, _blocks.switchToBlockType)(getBlock(rootClientId), '*');
|
|
360
415
|
|
|
361
416
|
if (replacement && replacement.length) {
|
|
362
|
-
|
|
417
|
+
registry.batch(() => {
|
|
418
|
+
replaceBlocks(rootClientId, replacement);
|
|
419
|
+
selectBlock(replacement[0].clientId, 0);
|
|
420
|
+
});
|
|
363
421
|
}
|
|
364
422
|
}
|
|
365
423
|
}
|
|
@@ -383,10 +441,10 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, _ref4) =>
|
|
|
383
441
|
var _default = (0, _compose.compose)(_compose.pure, applyWithSelect, applyWithDispatch, // Block is sometimes not mounted at the right time, causing it be undefined
|
|
384
442
|
// see issue for more info
|
|
385
443
|
// https://github.com/WordPress/gutenberg/issues/17013
|
|
386
|
-
(0, _compose.ifCondition)(
|
|
444
|
+
(0, _compose.ifCondition)(_ref4 => {
|
|
387
445
|
let {
|
|
388
446
|
block
|
|
389
|
-
} =
|
|
447
|
+
} = _ref4;
|
|
390
448
|
return !!block;
|
|
391
449
|
}), (0, _components.withFilters)('editor.BlockListBlock'))(BlockListBlock);
|
|
392
450
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","hasContentLockedParent","isContentBlock","isContentLocking","isTemporarilyEditingAsBlocks","select","getSettings","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","blockEditorStore","_hasContentLockedParent","supportsLayout","blocksStore","__experimentalHasContentRoleAttribute","removeBlock","onRemove","blockEdit","undefined","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","nextBlockClientId","previousBlockClientId","replacement","indexToSelect","initialPosition","selectionEnabled","pure"],"mappings":";;;;;;;;;AAQA;;AALA;;AAWA;;AAQA;;AACA;;AAMA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAzCA;AACA;AACA;;AAGA;AACA;AACA;;AAyBA;AACA;AACA;AASO,MAAMA,qBAAqB,GAAG,6BAA9B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACA,SAASC,iBAAT,CAA4BC,MAA5B,EAAoCC,MAApC,EAA6C;AAC5C,QAAMC,QAAQ,GAAG,EAChB,GAAGF,MADa;AAEhB,OAAGC;AAFa,GAAjB;;AAKA,MAAKD,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEG,SAAR,IAAqBF,MAArB,aAAqBA,MAArB,eAAqBA,MAAM,CAAEE,SAAlC,EAA8C;AAC7CD,IAAAA,QAAQ,CAACC,SAAT,GAAqB,yBAAYH,MAAM,CAACG,SAAnB,EAA8BF,MAAM,CAACE,SAArC,CAArB;AACA;;AACD,MAAKH,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEI,KAAR,IAAiBH,MAAjB,aAAiBA,MAAjB,eAAiBA,MAAM,CAAEG,KAA9B,EAAsC;AACrCF,IAAAA,QAAQ,CAACE,KAAT,GAAiB,EAAE,GAAGJ,MAAM,CAACI,KAAZ;AAAmB,SAAGH,MAAM,CAACG;AAA7B,KAAjB;AACA;;AAED,SAAOF,QAAP;AACA;;AAED,SAASG,KAAT,OAAiD;AAAA,MAAjC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoB,OAAGC;AAAvB,GAAiC;AAChD,SACC,mCAAU,kCAAeA,KAAf,EAAsB;AAAEC,IAAAA,gBAAgB,EAAEF;AAApB,GAAtB,CAAV,EACGD,QADH,CADD;AAKA;;AAED,SAASI,cAAT,QAkBI;AAAA;;AAAA,MAlBqB;AACxBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA;AAAF,KADiB;AAExBC,IAAAA,IAFwB;AAGxBC,IAAAA,QAHwB;AAIxBC,IAAAA,SAJwB;AAKxBC,IAAAA,QALwB;AAMxBC,IAAAA,UANwB;AAOxBC,IAAAA,kBAPwB;AAQxBf,IAAAA,SARwB;AASxBgB,IAAAA,IATwB;AAUxBC,IAAAA,OAVwB;AAWxBC,IAAAA,UAXwB;AAYxBC,IAAAA,YAZwB;AAaxBC,IAAAA,aAbwB;AAcxBC,IAAAA,SAdwB;AAexBC,IAAAA,mBAfwB;AAgBxBC,IAAAA,OAhBwB;AAiBxBC,IAAAA;AAjBwB,GAkBrB;AACH,QAAM;AACLC,IAAAA,mBADK;AAELC,IAAAA,sBAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,gBAJK;AAKLC,IAAAA;AALK,MAMF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,WADK;AAELC,MAAAA,iCAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEK,YAAF,CALV;;AAMA,UAAMC,uBAAuB,GAC5B,CAAC,CAAEJ,iCAAiC,CAAEnB,QAAF,CADrC;;AAEA,WAAO;AACNY,MAAAA,mBAAmB,EAAEM,WAAW,GAAGM,cAD7B;AAENV,MAAAA,cAAc,EACbG,MAAM,CAAEQ,aAAF,CAAN,CAAsBC,qCAAtB,CACCvB,IADD,CAHK;AAMNU,MAAAA,sBAAsB,EAAEU,uBANlB;AAONR,MAAAA,gBAAgB,EACfK,eAAe,CAAEpB,QAAF,CAAf,KAAgC,aAAhC,IACA,CAAEuB,uBATG;AAUNP,MAAAA,4BAA4B,EAC3BK,uCAAuC,OAAOrB;AAXzC,KAAP;AAaA,GAvBE,EAwBH,CAAEG,IAAF,EAAQH,QAAR,CAxBG,CANJ;AAgCA,QAAM;AAAE2B,IAAAA;AAAF,MAAkB,uBAAaL,YAAb,CAAxB;AACA,QAAMM,QAAQ,GAAG,0BAAa,MAAMD,WAAW,CAAE3B,QAAF,CAA9B,EAA4C,CAAEA,QAAF,CAA5C,CAAjB,CAlCG,CAoCH;AACA;AACA;AACA;;AACA,MAAI6B,SAAS,GACZ,4BAAC,kBAAD;AACC,IAAA,IAAI,EAAG1B,IADR;AAEC,IAAA,UAAU,EAAGF,UAFd;AAGC,IAAA,UAAU,EAAGI,UAHd;AAIC,IAAA,aAAa,EAAGE,aAJjB;AAKC,IAAA,iBAAiB,EAAGT,QAAQ,GAAGgC,SAAH,GAAerB,mBAL5C;AAMC,IAAA,SAAS,EAAGV,SAAS,GAAGS,SAAH,GAAesB,SANrC;AAOC,IAAA,QAAQ,EAAG/B,SAAS,GAAG6B,QAAH,GAAcE,SAPnC;AAQC,IAAA,WAAW,EAAG/B,SAAS,GAAGW,OAAH,GAAaoB,SARrC;AASC,IAAA,QAAQ,EAAG9B,QATZ;AAUC,IAAA,kBAAkB,EAAGE,kBAVtB;AAWC,IAAA,eAAe,EAAGS;AAXnB,IADD;AAgBA,QAAMoB,SAAS,GAAG,0BAAc5B,IAAd,CAAlB;;AAEA,MAAKU,sBAAsB,IAAI,CAAEC,cAAjC,EAAkD;AACjDR,IAAAA,YAAY,GAAG,EACd,GAAGA,YADW;AAEd0B,MAAAA,QAAQ,EAAE,CAAC;AAFG,KAAf;AAIA,GA/DE,CAgEH;;;AACA,MAAKD,SAAL,aAAKA,SAAL,eAAKA,SAAS,CAAEE,mBAAhB,EAAsC;AACrC3B,IAAAA,YAAY,GAAGvB,iBAAiB,CAC/BuB,YAD+B,EAE/ByB,SAAS,CAACE,mBAAV,CAA+B5B,UAA/B,CAF+B,CAAhC;AAIA;;AAED,QAAM6B,SAAS,GACd5B,YAAY,IACZ,CAAC,CAAEA,YAAY,CAAE,YAAF,CADf,IAEA,CAAEM,mBAHH,CAxEG,CA6EH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAKsB,SAAL,EAAiB;AAChBL,IAAAA,SAAS,GACR;AACC,MAAA,SAAS,EAAC,UADX;AAEC,oBAAavB,YAAY,CAAE,YAAF;AAF1B,OAIGuB,SAJH,CADD;AAQA;;AAED,MAAIlC,KAAJ;;AAEA,MAAK,CAAES,OAAP,EAAiB;AAChB,UAAM+B,WAAW,GAAGvC,qBAAqB,GACtC,+BAAmBA,qBAAnB,CADsC,GAEtC,4BAAgBmC,SAAhB,EAA2B1B,UAA3B,CAFH;AAIAV,IAAAA,KAAK,GACJ,4BAAC,KAAD;AAAO,MAAA,SAAS,EAAC;AAAjB,OACC,4BAAC,4BAAD;AAAqB,MAAA,QAAQ,EAAGK;AAAhC,MADD,EAEC,4BAAC,gBAAD,QAAW,mBAAUmC,WAAV,CAAX,CAFD,CADD;AAMA,GAXD,MAWO,IAAKtC,IAAI,KAAK,MAAd,EAAuB;AAC7B;AACA;AACAF,IAAAA,KAAK,GACJ,qDACC;AAAK,MAAA,KAAK,EAAG;AAAEyC,QAAAA,OAAO,EAAE;AAAX;AAAb,OAAqCP,SAArC,CADD,EAEC,4BAAC,KAAD;AAAO,MAAA,MAAM;AAAb,OACC,4BAAC,kBAAD;AAAW,MAAA,QAAQ,EAAG7B;AAAtB,MADD,CAFD,CADD;AAQA,GAXM,MAWA,IAAK,CAAA+B,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEM,UAAX,IAAwB,CAA7B,EAAiC;AACvC1C,IAAAA,KAAK,GAAGkC,SAAR;AACA,GAFM,MAEA;AACNlC,IAAAA,KAAK,GAAG,4BAAC,KAAD,EAAYW,YAAZ,EAA6BuB,SAA7B,CAAR;AACA;;AAED,QAAM;AAAE,kBAAcS,SAAhB;AAA2B,OAAGC;AAA9B,uBAAmDjC,YAAnD,yDAAmE,EAAzE;AAEA,QAAMkC,KAAK,GAAG;AACbxC,IAAAA,QADa;AAEbb,IAAAA,SAAS,EAAE,yBACV;AACC,2BAAqB4B,gBADtB;AAEC,yDACCC,4BAHF;AAIC,0BAAoBH,sBAAsB,IAAIC;AAJ/C,KADU,EAOVwB,SAAS,IAAI1B,mBAAb,IAAqC,QAAQ0B,SAAW,EAP9C,EAQVnD,SARU,CAFE;AAYbmB,IAAAA,YAAY,EAAEiC,gBAZD;AAabL,IAAAA;AAba,GAAd;AAgBA,QAAMO,aAAa,GAAG,sBAAS,MAAMD,KAAf,EAAsBE,MAAM,CAACC,MAAP,CAAeH,KAAf,CAAtB,CAAtB;AAEA,SACC,4BAAC,qBAAD,CAAuB,QAAvB;AAAgC,IAAA,KAAK,EAAGC;AAAxC,KACC,4BAAC,2BAAD;AACC,IAAA,QAAQ,EACP,4BAAC,KAAD;AAAO,MAAA,SAAS,EAAC;AAAjB,OACC,4BAAC,0BAAD,OADD;AAFF,KAOG9C,KAPH,CADD,CADD;AAaA;;AAED,MAAMiD,eAAe,GAAG,sBAAY,CAAE3B,MAAF,YAA0C;AAAA,MAAhC;AAAEjB,IAAAA,QAAF;AAAY6C,IAAAA;AAAZ,GAAgC;AAC7E,QAAM;AACLC,IAAAA,eADK;AAELC,IAAAA,YAFK;AAGL7C,IAAAA,kBAHK;AAILkB,IAAAA,eAJK;AAKL4B,IAAAA,oCALK;AAMLC,IAAAA,cANK;AAOLC,IAAAA;AAPK,MAQFjC,MAAM,CAAEK,YAAF,CARV;;AASA,QAAM3B,KAAK,GAAGqD,oCAAoC,CAAEhD,QAAF,CAAlD;;AACA,QAAMC,UAAU,GAAG6C,eAAe,CAAE9C,QAAF,CAAlC;AACA,QAAMmD,YAAY,GAAG/B,eAAe,CAAEyB,YAAF,CAApC;AACA,QAAM9C,SAAS,GAAGkD,cAAc,CAAEjD,QAAF,EAAY6C,YAAZ,CAAhC;AACA,QAAMO,OAAO,GAAGF,YAAY,CAAElD,QAAF,EAAY6C,YAAZ,CAA5B,CAd6E,CAgB7E;AACA;AACA;AACA;;AACA,QAAM;AAAE1C,IAAAA,IAAF;AAAQE,IAAAA,UAAR;AAAoBD,IAAAA;AAApB,MAAgCT,KAAK,IAAI,EAA/C,CApB6E,CAsB7E;AACA;;AACA,SAAO;AACNE,IAAAA,IAAI,EAAEkD,YAAY,CAAE/C,QAAF,CADZ;AAENE,IAAAA,kBAAkB,EAAEA,kBAAkB,EAFhC;AAGNJ,IAAAA,QAAQ,EAAE,CAAC,CAAEqD,YAHP;AAINpD,IAAAA,SAJM;AAKNqD,IAAAA,OALM;AAMN;AACA;AACA;AACA;AACAzD,IAAAA,KAVM;AAWNQ,IAAAA,IAXM;AAYNE,IAAAA,UAZM;AAaND,IAAAA,OAbM;AAcNH,IAAAA;AAdM,GAAP;AAgBA,CAxCuB,CAAxB;AA0CA,MAAMoD,iBAAiB,GAAG,wBAAc,CAAEC,QAAF,EAAYC,QAAZ,YAAsC;AAAA,MAAhB;AAAEtC,IAAAA;AAAF,GAAgB;AAC7E,QAAM;AACLuC,IAAAA,qBADK;AAELC,IAAAA,YAFK;AAGLC,IAAAA,WAHK;AAILC,IAAAA,aAJK;AAKLhD,IAAAA,eALK;AAMLiD,IAAAA;AANK,MAOFN,QAAQ,CAAEhC,YAAF,CAPZ,CAD6E,CAU7E;AACA;;AACA,SAAO;AACNf,IAAAA,aAAa,CAAEsD,aAAF,EAAkB;AAC9B,YAAM;AAAEC,QAAAA;AAAF,UACL7C,MAAM,CAAEK,YAAF,CADP;AAEA,YAAMyC,2BAA2B,GAChCD,8BAA8B,EAD/B;AAEA,YAAM;AAAE9D,QAAAA;AAAF,UAAeuD,QAArB;AACA,YAAMS,SAAS,GAAGD,2BAA2B,CAACE,MAA5B,GACfF,2BADe,GAEf,CAAE/D,QAAF,CAFH;AAIAwD,MAAAA,qBAAqB,CAAEQ,SAAF,EAAaH,aAAb,CAArB;AACA,KAZK;;AAaNK,IAAAA,cAAc,CAAEC,MAAF,EAAUC,KAAV,EAAkB;AAC/B,YAAM;AAAEvB,QAAAA;AAAF,UAAmBU,QAAzB;AACAE,MAAAA,YAAY,CAAEU,MAAF,EAAUC,KAAV,EAAiBvB,YAAjB,CAAZ;AACA,KAhBK;;AAiBNpC,IAAAA,mBAAmB,CAAE0D,MAAF,EAAW;AAC7B,YAAM;AAAEnE,QAAAA,QAAF;AAAY6C,QAAAA;AAAZ,UAA6BU,QAAnC;AACA,YAAM;AAAEc,QAAAA;AAAF,UAAoBpD,MAAM,CAAEK,YAAF,CAAhC;AACA,YAAM8C,KAAK,GAAGC,aAAa,CAAErE,QAAF,CAA3B;AACAyD,MAAAA,YAAY,CAAEU,MAAF,EAAUC,KAAK,GAAG,CAAlB,EAAqBvB,YAArB,CAAZ;AACA,KAtBK;;AAuBNnC,IAAAA,OAAO,CAAE4D,OAAF,EAAY;AAClB,YAAM;AAAEtE,QAAAA,QAAF;AAAY6C,QAAAA;AAAZ,UAA6BU,QAAnC;AACA,YAAM;AAAEgB,QAAAA,wBAAF;AAA4BC,QAAAA,oBAA5B;AAAkDC,QAAAA;AAAlD,UACLxD,MAAM,CAAEK,YAAF,CADP;;AAGA,UAAKgD,OAAL,EAAe;AACd,cAAMI,iBAAiB,GAAGF,oBAAoB,CAAExE,QAAF,CAA9C;;AACA,YAAK0E,iBAAL,EAAyB;AACxBhB,UAAAA,WAAW,CAAE1D,QAAF,EAAY0E,iBAAZ,CAAX;AACA;AACD,OALD,MAKO;AACN,cAAMC,qBAAqB,GAC1BJ,wBAAwB,CAAEvE,QAAF,CADzB;;AAEA,YAAK2E,qBAAL,EAA6B;AAC5BjB,UAAAA,WAAW,CAAEiB,qBAAF,EAAyB3E,QAAzB,CAAX;AACA,SAFD,MAEO,IAAK6C,YAAL,EAAoB;AAC1B;AACA;AACA,gBAAM+B,WAAW,GAAG,+BACnBH,QAAQ,CAAE5B,YAAF,CADW,EAEnB,GAFmB,CAApB;;AAIA,cAAK+B,WAAW,IAAIA,WAAW,CAACX,MAAhC,EAAyC;AACxCN,YAAAA,aAAa,CAAEd,YAAF,EAAgB+B,WAAhB,EAA6B,CAA7B,CAAb;AACA;AACD;AACD;AACD,KAlDK;;AAmDNpE,IAAAA,SAAS,CAAE2D,MAAF,EAAUU,aAAV,EAAyBC,eAAzB,EAA2C;AACnD,UACCX,MAAM,CAACF,MAAP,IACA,CAAE,sCAA0BE,MAAM,CAAEA,MAAM,CAACF,MAAP,GAAgB,CAAlB,CAAhC,CAFH,EAGE;AACDL,QAAAA,oCAAoC;AACpC;;AACDD,MAAAA,aAAa,CACZ,CAAEJ,QAAQ,CAACvD,QAAX,CADY,EAEZmE,MAFY,EAGZU,aAHY,EAIZC,eAJY,CAAb;AAMA,KAhEK;;AAiENnE,IAAAA,eAAe,CAAEoE,gBAAF,EAAqB;AACnCpE,MAAAA,eAAe,CAAEoE,gBAAF,CAAf;AACA;;AAnEK,GAAP;AAqEA,CAjFyB,CAA1B;;eAmFe,sBACdC,aADc,EAEdpC,eAFc,EAGdS,iBAHc,EAId;AACA;AACA;AACA,0BAAa;AAAA,MAAE;AAAE1D,IAAAA;AAAF,GAAF;AAAA,SAAiB,CAAC,CAAEA,KAApB;AAAA,CAAb,CAPc,EAQd,6BAAa,uBAAb,CARc,EASZD,cATY,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\n\nexport const BlockListBlockContext = createContext();\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\thasContentLockedParent,\n\t\tisContentBlock,\n\t\tisContentLocking,\n\t\tisTemporarilyEditingAsBlocks,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst _hasContentLockedParent =\n\t\t\t\t!! __unstableGetContentLockingParent( clientId );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisContentBlock:\n\t\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\thasContentLockedParent: _hasContentLockedParent,\n\t\t\t\tisContentLocking:\n\t\t\t\t\tgetTemplateLock( clientId ) === 'contentOnly' &&\n\t\t\t\t\t! _hasContentLockedParent,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( hasContentLockedParent && ! isContentBlock ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-content-locked': isContentLocking,\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t\t'is-content-block': hasContentLockedParent && isContentBlock,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getPreviousBlockClientId, getNextBlockClientId, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tif ( forward ) {\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\t// Attempt to \"unwrap\" the block contents when there's no\n\t\t\t\t\t// preceding block to merge with.\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tgetBlock( rootClientId ),\n\t\t\t\t\t\t'*'\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( rootClientId, replacement, 0 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","hasContentLockedParent","isContentBlock","isContentLocking","isTemporarilyEditingAsBlocks","select","getSettings","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","blockEditorStore","_hasContentLockedParent","supportsLayout","blocksStore","__experimentalHasContentRoleAttribute","removeBlock","onRemove","blockEdit","undefined","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","selectBlock","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","nextRootClientId","rootAttributes","previousRootAttributes","keys","every","key","batch","nextBlockClientId","replacement","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","selectionEnabled","pure"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\n\nexport const BlockListBlockContext = createContext();\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\thasContentLockedParent,\n\t\tisContentBlock,\n\t\tisContentLocking,\n\t\tisTemporarilyEditingAsBlocks,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst _hasContentLockedParent =\n\t\t\t\t!! __unstableGetContentLockingParent( clientId );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisContentBlock:\n\t\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\thasContentLockedParent: _hasContentLockedParent,\n\t\t\t\tisContentLocking:\n\t\t\t\t\tgetTemplateLock( clientId ) === 'contentOnly' &&\n\t\t\t\t\t! _hasContentLockedParent,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( hasContentLockedParent && ! isContentBlock ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName=\"wp-block\"\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-content-locked': isContentLocking,\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t\t'is-content-block': hasContentLockedParent && isContentBlock,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Check if it's possibile to \"unwrap\" the following block\n\t\t\t\t// before trying to merge.\n\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\tgetBlock( nextBlockClientId ),\n\t\t\t\t\t'*'\n\t\t\t\t);\n\n\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\treplaceBlocks( nextBlockClientId, replacement );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Attempt to \"unwrap\" the block contents when there's no\n\t\t\t\t\t// preceding block to merge with.\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tgetBlock( rootClientId ),\n\t\t\t\t\t\t'*'\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\treplaceBlocks( rootClientId, replacement );\n\t\t\t\t\t\t\tselectBlock( replacement[ 0 ].clientId, 0 );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
|
|
@@ -8,8 +8,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.getItemSearchRank = getItemSearchRank;
|
|
9
9
|
exports.searchItems = exports.searchBlockItems = exports.getNormalizedSearchTerms = void 0;
|
|
10
10
|
|
|
11
|
-
var _changeCase = require("change-case");
|
|
12
|
-
|
|
13
11
|
var _removeAccents = _interopRequireDefault(require("remove-accents"));
|
|
14
12
|
|
|
15
13
|
var _lodash = require("lodash");
|
|
@@ -51,19 +49,6 @@ function normalizeSearchInput() {
|
|
|
51
49
|
input = input.toLowerCase();
|
|
52
50
|
return input;
|
|
53
51
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Extracts words from an input string.
|
|
56
|
-
*
|
|
57
|
-
* @param {string} input The input string.
|
|
58
|
-
*
|
|
59
|
-
* @return {Array} Words, extracted from the input string.
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
function extractWords() {
|
|
64
|
-
let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
65
|
-
return (0, _changeCase.noCase)(input).split(' ').filter(Boolean);
|
|
66
|
-
}
|
|
67
52
|
/**
|
|
68
53
|
* Converts the search term into a list of normalized terms.
|
|
69
54
|
*
|
|
@@ -75,7 +60,7 @@ function extractWords() {
|
|
|
75
60
|
|
|
76
61
|
const getNormalizedSearchTerms = function () {
|
|
77
62
|
let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
78
|
-
return
|
|
63
|
+
return (0, _lodash.words)(normalizeSearchInput(input));
|
|
79
64
|
};
|
|
80
65
|
|
|
81
66
|
exports.getNormalizedSearchTerms = getNormalizedSearchTerms;
|
|
@@ -189,7 +174,7 @@ function getItemSearchRank(item, searchTerm) {
|
|
|
189
174
|
rank += 20;
|
|
190
175
|
} else {
|
|
191
176
|
const terms = [name, title, description, ...keywords, category, collection].join(' ');
|
|
192
|
-
const normalizedSearchTerms =
|
|
177
|
+
const normalizedSearchTerms = (0, _lodash.words)(normalizedSearchInput);
|
|
193
178
|
const unmatchedTerms = removeMatchingTerms(normalizedSearchTerms, terms);
|
|
194
179
|
|
|
195
180
|
if (unmatchedTerms.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/search-items.js"],"names":["defaultGetName","item","name","defaultGetTitle","title","defaultGetDescription","description","defaultGetKeywords","keywords","defaultGetCategory","category","defaultGetCollection","normalizeSearchInput","input","replace","toLowerCase","extractWords","split","filter","Boolean","getNormalizedSearchTerms","removeMatchingTerms","unmatchedTerms","unprocessedTerms","term","some","unprocessedTerm","includes","searchBlockItems","items","categories","collections","searchInput","normalizedSearchTerms","length","config","getCategory","slug","getCollection","searchItems","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","collection","normalizedSearchInput","normalizedTitle","startsWith","terms","join","isCoreBlockVariation","id"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { noCase } from 'change-case';\nimport removeAccents from 'remove-accents';\nimport { find } from 'lodash';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => item.name || '';\nconst defaultGetTitle = ( item ) => item.title;\nconst defaultGetDescription = ( item ) => item.description || '';\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultGetCategory = ( item ) => item.category;\nconst defaultGetCollection = () => null;\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nfunction normalizeSearchInput( input = '' ) {\n\t// Disregard diacritics.\n\t// Input: \"média\"\n\tinput = removeAccents( input );\n\n\t// Accommodate leading slash, matching autocomplete expectations.\n\t// Input: \"/media\"\n\tinput = input.replace( /^\\//, '' );\n\n\t// Lowercase.\n\t// Input: \"MEDIA\"\n\tinput = input.toLowerCase();\n\n\treturn input;\n}\n\n/**\n * Extracts words from an input string.\n *\n * @param {string} input The input string.\n *\n * @return {Array} Words, extracted from the input string.\n */\nfunction extractWords( input = '' ) {\n\treturn noCase( input ).split( ' ' ).filter( Boolean );\n}\n\n/**\n * Converts the search term into a list of normalized terms.\n *\n * @param {string} input The search term to normalize.\n *\n * @return {string[]} The normalized list of search terms.\n */\nexport const getNormalizedSearchTerms = ( input = '' ) => {\n\treturn extractWords( normalizeSearchInput( input ) );\n};\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\nexport const searchBlockItems = (\n\titems,\n\tcategories,\n\tcollections,\n\tsearchInput\n) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn items;\n\t}\n\n\tconst config = {\n\t\tgetCategory: ( item ) =>\n\t\t\tfind( categories, { slug: item.category } )?.title,\n\t\tgetCollection: ( item ) =>\n\t\t\tcollections[ item.name.split( '/' )[ 0 ] ]?.title,\n\t};\n\n\treturn searchItems( items, searchInput, config );\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn items;\n\t}\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [ item, getItemSearchRank( item, searchInput, config ) ];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > 0 );\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nexport function getItemSearchRank( item, searchTerm, config = {} ) {\n\tconst {\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\tgetCategory = defaultGetCategory,\n\t\tgetCollection = defaultGetCollection,\n\t} = config;\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\tconst category = getCategory( item );\n\tconst collection = getCollection( item );\n\n\tconst normalizedSearchInput = normalizeSearchInput( searchTerm );\n\tconst normalizedTitle = normalizeSearchInput( title );\n\n\tlet rank = 0;\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, categories, collection, variations match come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [\n\t\t\tname,\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\t...keywords,\n\t\t\tcategory,\n\t\t\tcollection,\n\t\t].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\t// Give a better rank to \"core\" namespaced items.\n\tif ( rank !== 0 && name.startsWith( 'core/' ) ) {\n\t\tconst isCoreBlockVariation = name !== item.id;\n\t\t// Give a bit better rank to \"core\" blocks over \"core\" block variations.\n\t\trank += isCoreBlockVariation ? 1 : 2;\n\t}\n\n\treturn rank;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/search-items.js"],"names":["defaultGetName","item","name","defaultGetTitle","title","defaultGetDescription","description","defaultGetKeywords","keywords","defaultGetCategory","category","defaultGetCollection","normalizeSearchInput","input","replace","toLowerCase","getNormalizedSearchTerms","removeMatchingTerms","unmatchedTerms","unprocessedTerms","filter","term","some","unprocessedTerm","includes","searchBlockItems","items","categories","collections","searchInput","normalizedSearchTerms","length","config","getCategory","slug","getCollection","split","searchItems","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","collection","normalizedSearchInput","normalizedTitle","startsWith","terms","join","isCoreBlockVariation","id"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\nimport { find, words } from 'lodash';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => item.name || '';\nconst defaultGetTitle = ( item ) => item.title;\nconst defaultGetDescription = ( item ) => item.description || '';\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultGetCategory = ( item ) => item.category;\nconst defaultGetCollection = () => null;\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nfunction normalizeSearchInput( input = '' ) {\n\t// Disregard diacritics.\n\t// Input: \"média\"\n\tinput = removeAccents( input );\n\n\t// Accommodate leading slash, matching autocomplete expectations.\n\t// Input: \"/media\"\n\tinput = input.replace( /^\\//, '' );\n\n\t// Lowercase.\n\t// Input: \"MEDIA\"\n\tinput = input.toLowerCase();\n\n\treturn input;\n}\n\n/**\n * Converts the search term into a list of normalized terms.\n *\n * @param {string} input The search term to normalize.\n *\n * @return {string[]} The normalized list of search terms.\n */\nexport const getNormalizedSearchTerms = ( input = '' ) => {\n\treturn words( normalizeSearchInput( input ) );\n};\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\nexport const searchBlockItems = (\n\titems,\n\tcategories,\n\tcollections,\n\tsearchInput\n) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn items;\n\t}\n\n\tconst config = {\n\t\tgetCategory: ( item ) =>\n\t\t\tfind( categories, { slug: item.category } )?.title,\n\t\tgetCollection: ( item ) =>\n\t\t\tcollections[ item.name.split( '/' )[ 0 ] ]?.title,\n\t};\n\n\treturn searchItems( items, searchInput, config );\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn items;\n\t}\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [ item, getItemSearchRank( item, searchInput, config ) ];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > 0 );\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nexport function getItemSearchRank( item, searchTerm, config = {} ) {\n\tconst {\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\tgetCategory = defaultGetCategory,\n\t\tgetCollection = defaultGetCollection,\n\t} = config;\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\tconst category = getCategory( item );\n\tconst collection = getCollection( item );\n\n\tconst normalizedSearchInput = normalizeSearchInput( searchTerm );\n\tconst normalizedTitle = normalizeSearchInput( title );\n\n\tlet rank = 0;\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, categories, collection, variations match come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [\n\t\t\tname,\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\t...keywords,\n\t\t\tcategory,\n\t\t\tcollection,\n\t\t].join( ' ' );\n\t\tconst normalizedSearchTerms = words( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\t// Give a better rank to \"core\" namespaced items.\n\tif ( rank !== 0 && name.startsWith( 'core/' ) ) {\n\t\tconst isCoreBlockVariation = name !== item.id;\n\t\t// Give a bit better rank to \"core\" blocks over \"core\" block variations.\n\t\trank += isCoreBlockVariation ? 1 : 2;\n\t}\n\n\treturn rank;\n}\n"]}
|
package/build/hooks/margin.js
CHANGED
|
@@ -191,10 +191,10 @@ function MarginVisualizer(_ref2) {
|
|
|
191
191
|
borderRightWidth: marginRight,
|
|
192
192
|
borderBottomWidth: marginBottom,
|
|
193
193
|
borderLeftWidth: marginLeft,
|
|
194
|
-
top: marginTop !== 0 ?
|
|
195
|
-
right: marginRight !== 0 ?
|
|
196
|
-
bottom: marginBottom !== 0 ?
|
|
197
|
-
left: marginLeft !== 0 ?
|
|
194
|
+
top: marginTop !== 0 ? `calc(${marginTop} * -1)` : 0,
|
|
195
|
+
right: marginRight !== 0 ? `calc(${marginRight} * -1)` : 0,
|
|
196
|
+
bottom: marginBottom !== 0 ? `calc(${marginBottom} * -1)` : 0,
|
|
197
|
+
left: marginLeft !== 0 ? `calc(${marginLeft} * -1)` : 0
|
|
198
198
|
};
|
|
199
199
|
}, [margin]);
|
|
200
200
|
const [isActive, setIsActive] = (0, _element.useState)(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/margin.js"],"names":["hasMarginSupport","blockType","support","SPACING_SUPPORT_KEY","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","AXIAL_SIDES","includes","onChange","next","newStyle","Platform","select","web","length","native","MarginVisualizer","clientId","marginTop","top","marginRight","right","marginBottom","bottom","marginLeft","left","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","isActive","setIsActive","valueRef","timeoutRef","clearTimer","current","window","clearTimeout","setTimeout"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPlatform,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n} from '@wordpress/components';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../components/use-setting';\nimport {\n\tAXIAL_SIDES,\n\tSPACING_SUPPORT_KEY,\n\tuseCustomSides,\n\tuseIsDimensionsSupportValid,\n} from './dimensions';\nimport { cleanEmptyObject } from './utils';\nimport BlockPopover from '../components/block-popover';\nimport SpacingSizesControl from '../components/spacing-sizes-control';\nimport { getCustomValueFromPreset } from '../components/spacing-sizes-control/utils';\n\n/**\n * Determines if there is margin support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasMarginSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.margin );\n}\n\n/**\n * Checks if there is a current value in the margin block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a margin value set.\n */\nexport function hasMarginValue( props ) {\n\treturn props.attributes.style?.spacing?.margin !== undefined;\n}\n\n/**\n * Resets the margin block support attributes. This can be used when disabling\n * the margin support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetMargin( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if margin settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether margin setting is disabled.\n */\nexport function useIsMarginDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.margin' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'margin' );\n\n\treturn ! hasMarginSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the margin related configuration\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Margin edit element.\n */\nexport function MarginEdit( props ) {\n\tconst {\n\t\tname: blockName,\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\n\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst sides = useCustomSides( blockName, 'margin' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsMarginDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst onChange = ( next ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: next,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ ( ! spacingSizes || spacingSizes?.length === 0 ) && (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ splitOnAxis }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ spacingSizes?.length > 0 && (\n\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function MarginVisualizer( { clientId, attributes } ) {\n\tconst margin = attributes?.style?.spacing?.margin;\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst style = useMemo( () => {\n\t\tconst marginTop = margin?.top\n\t\t\t? getCustomValueFromPreset( margin?.top, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginRight = margin?.right\n\t\t\t? getCustomValueFromPreset( margin?.right, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginBottom = margin?.bottom\n\t\t\t? getCustomValueFromPreset( margin?.bottom, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginLeft = margin?.left\n\t\t\t? getCustomValueFromPreset( margin?.left, spacingSizes )\n\t\t\t: 0;\n\n\t\treturn {\n\t\t\tborderTopWidth: marginTop,\n\t\t\tborderRightWidth: marginRight,\n\t\t\tborderBottomWidth: marginBottom,\n\t\t\tborderLeftWidth: marginLeft,\n\t\t\ttop: marginTop !== 0 ? `-${ marginTop }` : 0,\n\t\t\tright: marginRight !== 0 ? `-${ marginRight }` : 0,\n\t\t\tbottom: marginBottom !== 0 ? `-${ marginBottom }` : 0,\n\t\t\tleft: marginLeft !== 0 ? `-${ marginLeft }` : 0,\n\t\t};\n\t}, [ margin ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( margin );\n\tconst timeoutRef = useRef();\n\n\tconst clearTimer = () => {\n\t\tif ( timeoutRef.current ) {\n\t\t\twindow.clearTimeout( timeoutRef.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! isShallowEqual( margin, valueRef.current ) ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = margin;\n\n\t\t\tclearTimer();\n\n\t\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\t\tsetIsActive( false );\n\t\t\t}, 400 );\n\t\t}\n\n\t\treturn () => clearTimer();\n\t}, [ margin ] );\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\t__unstableCoverTarget\n\t\t\t__unstableRefreshSize={ margin }\n\t\t>\n\t\t\t<div className=\"block-editor__padding-visualizer\" style={ style } />\n\t\t</BlockPopover>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/margin.js"],"names":["hasMarginSupport","blockType","support","SPACING_SUPPORT_KEY","margin","hasMarginValue","props","attributes","style","spacing","undefined","resetMargin","setAttributes","useIsMarginDisabled","name","blockName","isDisabled","isInvalid","MarginEdit","spacingSizes","units","availableUnits","sides","splitOnAxis","some","side","AXIAL_SIDES","includes","onChange","next","newStyle","Platform","select","web","length","native","MarginVisualizer","clientId","marginTop","top","marginRight","right","marginBottom","bottom","marginLeft","left","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","isActive","setIsActive","valueRef","timeoutRef","clearTimer","current","window","clearTimeout","setTimeout"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPlatform,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalBoxControl as BoxControl,\n} from '@wordpress/components';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../components/use-setting';\nimport {\n\tAXIAL_SIDES,\n\tSPACING_SUPPORT_KEY,\n\tuseCustomSides,\n\tuseIsDimensionsSupportValid,\n} from './dimensions';\nimport { cleanEmptyObject } from './utils';\nimport BlockPopover from '../components/block-popover';\nimport SpacingSizesControl from '../components/spacing-sizes-control';\nimport { getCustomValueFromPreset } from '../components/spacing-sizes-control/utils';\n\n/**\n * Determines if there is margin support.\n *\n * @param {string|Object} blockType Block name or Block Type object.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasMarginSupport( blockType ) {\n\tconst support = getBlockSupport( blockType, SPACING_SUPPORT_KEY );\n\treturn !! ( true === support || support?.margin );\n}\n\n/**\n * Checks if there is a current value in the margin block support attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a margin value set.\n */\nexport function hasMarginValue( props ) {\n\treturn props.attributes.style?.spacing?.margin !== undefined;\n}\n\n/**\n * Resets the margin block support attributes. This can be used when disabling\n * the margin support controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetMargin( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if margin settings have been disabled.\n *\n * @param {string} name The name of the block.\n *\n * @return {boolean} Whether margin setting is disabled.\n */\nexport function useIsMarginDisabled( { name: blockName } = {} ) {\n\tconst isDisabled = ! useSetting( 'spacing.margin' );\n\tconst isInvalid = ! useIsDimensionsSupportValid( blockName, 'margin' );\n\n\treturn ! hasMarginSupport( blockName ) || isDisabled || isInvalid;\n}\n\n/**\n * Inspector control panel containing the margin related configuration\n *\n * @param {Object} props Block props.\n *\n * @return {WPElement} Margin edit element.\n */\nexport function MarginEdit( props ) {\n\tconst {\n\t\tname: blockName,\n\t\tattributes: { style },\n\t\tsetAttributes,\n\t} = props;\n\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\tconst sides = useCustomSides( blockName, 'margin' );\n\tconst splitOnAxis =\n\t\tsides && sides.some( ( side ) => AXIAL_SIDES.includes( side ) );\n\n\tif ( useIsMarginDisabled( props ) ) {\n\t\treturn null;\n\t}\n\n\tconst onChange = ( next ) => {\n\t\tconst newStyle = {\n\t\t\t...style,\n\t\t\tspacing: {\n\t\t\t\t...style?.spacing,\n\t\t\t\tmargin: next,\n\t\t\t},\n\t\t};\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t} );\n\t};\n\n\treturn Platform.select( {\n\t\tweb: (\n\t\t\t<>\n\t\t\t\t{ ( ! spacingSizes || spacingSizes?.length === 0 ) && (\n\t\t\t\t\t<BoxControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ splitOnAxis }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ spacingSizes?.length > 0 && (\n\t\t\t\t\t<SpacingSizesControl\n\t\t\t\t\t\tvalues={ style?.spacing?.margin }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tlabel={ __( 'Margin' ) }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tallowReset={ false }\n\t\t\t\t\t\tsplitOnAxis={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t),\n\t\tnative: null,\n\t} );\n}\n\nexport function MarginVisualizer( { clientId, attributes } ) {\n\tconst margin = attributes?.style?.spacing?.margin;\n\tconst spacingSizes = useSetting( 'spacing.spacingSizes' );\n\n\tconst style = useMemo( () => {\n\t\tconst marginTop = margin?.top\n\t\t\t? getCustomValueFromPreset( margin?.top, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginRight = margin?.right\n\t\t\t? getCustomValueFromPreset( margin?.right, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginBottom = margin?.bottom\n\t\t\t? getCustomValueFromPreset( margin?.bottom, spacingSizes )\n\t\t\t: 0;\n\t\tconst marginLeft = margin?.left\n\t\t\t? getCustomValueFromPreset( margin?.left, spacingSizes )\n\t\t\t: 0;\n\n\t\treturn {\n\t\t\tborderTopWidth: marginTop,\n\t\t\tborderRightWidth: marginRight,\n\t\t\tborderBottomWidth: marginBottom,\n\t\t\tborderLeftWidth: marginLeft,\n\t\t\ttop: marginTop !== 0 ? `calc(${ marginTop } * -1)` : 0,\n\t\t\tright: marginRight !== 0 ? `calc(${ marginRight } * -1)` : 0,\n\t\t\tbottom: marginBottom !== 0 ? `calc(${ marginBottom } * -1)` : 0,\n\t\t\tleft: marginLeft !== 0 ? `calc(${ marginLeft } * -1)` : 0,\n\t\t};\n\t}, [ margin ] );\n\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst valueRef = useRef( margin );\n\tconst timeoutRef = useRef();\n\n\tconst clearTimer = () => {\n\t\tif ( timeoutRef.current ) {\n\t\t\twindow.clearTimeout( timeoutRef.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! isShallowEqual( margin, valueRef.current ) ) {\n\t\t\tsetIsActive( true );\n\t\t\tvalueRef.current = margin;\n\n\t\t\tclearTimer();\n\n\t\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\t\tsetIsActive( false );\n\t\t\t}, 400 );\n\t\t}\n\n\t\treturn () => clearTimer();\n\t}, [ margin ] );\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ clientId }\n\t\t\t__unstableCoverTarget\n\t\t\t__unstableRefreshSize={ margin }\n\t\t>\n\t\t\t<div className=\"block-editor__padding-visualizer\" style={ style } />\n\t\t</BlockPopover>\n\t);\n}\n"]}
|
|
@@ -26,7 +26,7 @@ import BlockIcon from '../block-icon';
|
|
|
26
26
|
function useContentBlocks(blockTypes, block) {
|
|
27
27
|
const contenBlocksObjectAux = useMemo(() => {
|
|
28
28
|
return blockTypes.reduce((result, blockType) => {
|
|
29
|
-
if (Object.entries(blockType.attributes).some(_ref => {
|
|
29
|
+
if (blockType.name !== 'core/list-item' && Object.entries(blockType.attributes).some(_ref => {
|
|
30
30
|
let [, {
|
|
31
31
|
__experimentalRole
|
|
32
32
|
}] = _ref;
|
|
@@ -136,8 +136,7 @@ const BlockInspector = _ref5 => {
|
|
|
136
136
|
getSelectedBlockClientId,
|
|
137
137
|
getSelectedBlockCount,
|
|
138
138
|
getBlockName,
|
|
139
|
-
__unstableGetContentLockingParent
|
|
140
|
-
getTemplateLock
|
|
139
|
+
__unstableGetContentLockingParent
|
|
141
140
|
} = select(blockEditorStore);
|
|
142
141
|
|
|
143
142
|
const _selectedBlockClientId = getSelectedBlockClientId();
|
|
@@ -151,7 +150,7 @@ const BlockInspector = _ref5 => {
|
|
|
151
150
|
selectedBlockClientId: _selectedBlockClientId,
|
|
152
151
|
selectedBlockName: _selectedBlockName,
|
|
153
152
|
blockType: _blockType,
|
|
154
|
-
topLevelLockedBlock:
|
|
153
|
+
topLevelLockedBlock: __unstableGetContentLockingParent(_selectedBlockClientId)
|
|
155
154
|
};
|
|
156
155
|
}, []);
|
|
157
156
|
|