@wordpress/block-editor 15.3.1-next.a730c9c8c.0 → 15.4.1-next.f56bd8138.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-inspector/index.js +110 -95
  3. package/build/components/block-inspector/index.js.map +1 -1
  4. package/build/components/block-switcher/index.js +4 -3
  5. package/build/components/block-switcher/index.js.map +1 -1
  6. package/build/components/inspector-controls-tabs/content-tab.js +34 -0
  7. package/build/components/inspector-controls-tabs/content-tab.js.map +1 -0
  8. package/build/components/inspector-controls-tabs/index.js +12 -2
  9. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  10. package/build/components/inspector-controls-tabs/styles-tab.js +24 -21
  11. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  12. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +9 -5
  13. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  14. package/build/components/inspector-controls-tabs/utils.js +7 -1
  15. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  16. package/build/components/rich-text/index.js +4 -1
  17. package/build/components/rich-text/index.js.map +1 -1
  18. package/build/private-apis.js +3 -1
  19. package/build/private-apis.js.map +1 -1
  20. package/build/store/actions.js +3 -2
  21. package/build/store/actions.js.map +1 -1
  22. package/build-module/components/block-inspector/index.js +110 -95
  23. package/build-module/components/block-inspector/index.js.map +1 -1
  24. package/build-module/components/block-switcher/index.js +4 -3
  25. package/build-module/components/block-switcher/index.js.map +1 -1
  26. package/build-module/components/inspector-controls-tabs/content-tab.js +26 -0
  27. package/build-module/components/inspector-controls-tabs/content-tab.js.map +1 -0
  28. package/build-module/components/inspector-controls-tabs/index.js +13 -3
  29. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  30. package/build-module/components/inspector-controls-tabs/styles-tab.js +24 -21
  31. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  32. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +10 -6
  33. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  34. package/build-module/components/inspector-controls-tabs/utils.js +7 -1
  35. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  36. package/build-module/components/rich-text/index.js +4 -1
  37. package/build-module/components/rich-text/index.js.map +1 -1
  38. package/build-module/private-apis.js +3 -1
  39. package/build-module/private-apis.js.map +1 -1
  40. package/build-module/store/actions.js +3 -2
  41. package/build-module/store/actions.js.map +1 -1
  42. package/package.json +34 -34
  43. package/src/components/block-inspector/index.js +134 -114
  44. package/src/components/block-switcher/index.js +8 -3
  45. package/src/components/inspector-controls-tabs/content-tab.js +24 -0
  46. package/src/components/inspector-controls-tabs/index.js +8 -1
  47. package/src/components/inspector-controls-tabs/styles-tab.js +33 -21
  48. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +19 -6
  49. package/src/components/inspector-controls-tabs/utils.js +8 -1
  50. package/src/components/rich-text/index.js +8 -1
  51. package/src/private-apis.js +2 -0
  52. package/src/store/actions.js +3 -2
@@ -23,8 +23,8 @@ import useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-c
23
23
  import AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';
24
24
  import PositionControls from '../inspector-controls-tabs/position-controls-panel';
25
25
  import useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';
26
- import BlockQuickNavigation from '../block-quick-navigation';
27
26
  import { useBorderPanelLabel } from '../../hooks/border';
27
+ import ContentTab from '../inspector-controls-tabs/content-tab';
28
28
  import { unlock } from '../../lock-unlock';
29
29
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
30
30
  function BlockStylesPanel({
@@ -37,35 +37,99 @@ function BlockStylesPanel({
37
37
  })
38
38
  });
39
39
  }
40
+ function StyleInspectorSlots({
41
+ blockName,
42
+ showAdvancedControls = true,
43
+ showPositionControls = true,
44
+ showListControls = false,
45
+ showBindingsControls = true
46
+ }) {
47
+ const borderPanelLabel = useBorderPanelLabel({
48
+ blockName
49
+ });
50
+ return /*#__PURE__*/_jsxs(_Fragment, {
51
+ children: [/*#__PURE__*/_jsx(InspectorControls.Slot, {}), showListControls && /*#__PURE__*/_jsx(InspectorControls.Slot, {
52
+ group: "list"
53
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
54
+ group: "color",
55
+ label: __('Color'),
56
+ className: "color-block-support-panel__inner-wrapper"
57
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
58
+ group: "background",
59
+ label: __('Background image')
60
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
61
+ group: "typography",
62
+ label: __('Typography')
63
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
64
+ group: "dimensions",
65
+ label: __('Dimensions')
66
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
67
+ group: "border",
68
+ label: borderPanelLabel
69
+ }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
70
+ group: "styles"
71
+ }), showPositionControls && /*#__PURE__*/_jsx(PositionControls, {}), showBindingsControls && /*#__PURE__*/_jsx(InspectorControls.Slot, {
72
+ group: "bindings"
73
+ }), showAdvancedControls && /*#__PURE__*/_jsx("div", {
74
+ children: /*#__PURE__*/_jsx(AdvancedControls, {})
75
+ })]
76
+ });
77
+ }
40
78
  function BlockInspector() {
41
79
  const {
42
- count,
80
+ selectedBlockCount,
43
81
  selectedBlockName,
44
82
  selectedBlockClientId,
45
83
  blockType,
46
- isSectionBlock
84
+ isSectionBlock,
85
+ isSectionBlockInSelection,
86
+ hasBlockStyles
47
87
  } = useSelect(select => {
48
88
  const {
49
89
  getSelectedBlockClientId,
90
+ getSelectedBlockClientIds,
50
91
  getSelectedBlockCount,
51
92
  getBlockName,
52
93
  getParentSectionBlock,
53
94
  isSectionBlock: _isSectionBlock
54
95
  } = unlock(select(blockEditorStore));
96
+ const {
97
+ getBlockStyles
98
+ } = select(blocksStore);
55
99
  const _selectedBlockClientId = getSelectedBlockClientId();
56
- const renderedBlockClientId = getParentSectionBlock(_selectedBlockClientId) || getSelectedBlockClientId();
100
+ const renderedBlockClientId = getParentSectionBlock(_selectedBlockClientId) || _selectedBlockClientId;
57
101
  const _selectedBlockName = renderedBlockClientId && getBlockName(renderedBlockClientId);
58
102
  const _blockType = _selectedBlockName && getBlockType(_selectedBlockName);
103
+ const selectedBlockClientIds = getSelectedBlockClientIds();
104
+ const _isSectionBlockInSelection = selectedBlockClientIds.some(id => _isSectionBlock(id));
105
+ const blockStyles = _selectedBlockName && getBlockStyles(_selectedBlockName);
106
+ const _hasBlockStyles = blockStyles && blockStyles.length > 0;
59
107
  return {
60
- count: getSelectedBlockCount(),
108
+ selectedBlockCount: getSelectedBlockCount(),
61
109
  selectedBlockClientId: renderedBlockClientId,
62
110
  selectedBlockName: _selectedBlockName,
63
111
  blockType: _blockType,
64
- isSectionBlock: _isSectionBlock(renderedBlockClientId)
112
+ isSectionBlockInSelection: _isSectionBlockInSelection,
113
+ isSectionBlock: _isSectionBlock(renderedBlockClientId),
114
+ hasBlockStyles: _hasBlockStyles
65
115
  };
66
116
  }, []);
67
- const availableTabs = useInspectorControlsTabs(blockType?.name);
68
- const showTabs = availableTabs?.length > 1;
117
+
118
+ // Separate useSelect for contentClientIds with proper dependencies
119
+ const contentClientIds = useSelect(select => {
120
+ if (!isSectionBlock || !selectedBlockClientId) {
121
+ return [];
122
+ }
123
+ const {
124
+ getClientIdsOfDescendants,
125
+ getBlockName,
126
+ getBlockEditingMode
127
+ } = unlock(select(blockEditorStore));
128
+ const descendants = getClientIdsOfDescendants(selectedBlockClientId);
129
+ return descendants.filter(current => getBlockName(current) !== 'core/list-item' && getBlockEditingMode(current) === 'contentOnly');
130
+ }, [isSectionBlock, selectedBlockClientId]);
131
+ const availableTabs = useInspectorControlsTabs(blockType?.name, contentClientIds, isSectionBlock, hasBlockStyles);
132
+ const hasMultipleTabs = availableTabs?.length > 1;
69
133
 
70
134
  // The block inspector animation settings will be completely
71
135
  // removed in the future to create an API which allows the block
@@ -74,44 +138,34 @@ function BlockInspector() {
74
138
  // and its parent, and only enable it if the parent is controlling
75
139
  // its children blocks.
76
140
  const blockInspectorAnimationSettings = useBlockInspectorAnimationSettings(blockType);
77
- const borderPanelLabel = useBorderPanelLabel({
78
- blockName: selectedBlockName
79
- });
80
- if (count > 1 && !isSectionBlock) {
141
+ const hasSelectedBlocks = selectedBlockCount > 1;
142
+ if (hasSelectedBlocks && !isSectionBlockInSelection) {
81
143
  return /*#__PURE__*/_jsxs("div", {
82
144
  className: "block-editor-block-inspector",
83
- children: [/*#__PURE__*/_jsx(MultiSelectionInspector, {}), showTabs ? /*#__PURE__*/_jsx(InspectorControlsTabs, {
145
+ children: [/*#__PURE__*/_jsx(MultiSelectionInspector, {}), hasMultipleTabs ? /*#__PURE__*/_jsx(InspectorControlsTabs, {
84
146
  tabs: availableTabs
85
- }) : /*#__PURE__*/_jsxs(_Fragment, {
86
- children: [/*#__PURE__*/_jsx(InspectorControls.Slot, {}), /*#__PURE__*/_jsx(InspectorControls.Slot, {
87
- group: "color",
88
- label: __('Color'),
89
- className: "color-block-support-panel__inner-wrapper"
90
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
91
- group: "background",
92
- label: __('Background image')
93
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
94
- group: "typography",
95
- label: __('Typography')
96
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
97
- group: "dimensions",
98
- label: __('Dimensions')
99
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
100
- group: "border",
101
- label: borderPanelLabel
102
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
103
- group: "styles"
104
- })]
147
+ }) : /*#__PURE__*/_jsx(StyleInspectorSlots, {
148
+ blockName: selectedBlockName,
149
+ showAdvancedControls: false,
150
+ showPositionControls: false,
151
+ showBindingsControls: false
105
152
  })]
106
153
  });
107
154
  }
155
+ if (hasSelectedBlocks && isSectionBlockInSelection) {
156
+ return /*#__PURE__*/_jsx("div", {
157
+ className: "block-editor-block-inspector",
158
+ children: /*#__PURE__*/_jsx(MultiSelectionInspector, {})
159
+ });
160
+ }
108
161
  const isSelectedBlockUnregistered = selectedBlockName === getUnregisteredTypeHandlerName();
109
162
 
110
163
  /*
111
164
  * If the selected block is of an unregistered type, avoid showing it as an actual selection
112
165
  * because we want the user to focus on the unregistered block warning, not block settings.
113
166
  */
114
- if (!blockType || !selectedBlockClientId || isSelectedBlockUnregistered) {
167
+ const shouldShowWarning = !blockType || !selectedBlockClientId || isSelectedBlockUnregistered;
168
+ if (shouldShowWarning) {
115
169
  return /*#__PURE__*/_jsx("span", {
116
170
  className: "block-editor-block-inspector__no-blocks",
117
171
  children: __('No block selected.')
@@ -127,7 +181,10 @@ function BlockInspector() {
127
181
  children: /*#__PURE__*/_jsx(BlockInspectorSingleBlock, {
128
182
  clientId: selectedBlockClientId,
129
183
  blockName: blockType.name,
130
- isSectionBlock: isSectionBlock
184
+ isSectionBlock: isSectionBlock,
185
+ availableTabs: availableTabs,
186
+ contentClientIds: contentClientIds,
187
+ hasBlockStyles: hasBlockStyles
131
188
  })
132
189
  });
133
190
  }
@@ -163,82 +220,40 @@ const AnimatedContainer = ({
163
220
  const BlockInspectorSingleBlock = ({
164
221
  clientId,
165
222
  blockName,
166
- isSectionBlock
223
+ isSectionBlock,
224
+ availableTabs,
225
+ contentClientIds,
226
+ hasBlockStyles
167
227
  }) => {
168
- const availableTabs = useInspectorControlsTabs(blockName);
169
- const showTabs = !isSectionBlock && availableTabs?.length > 1;
170
- const hasBlockStyles = useSelect(select => {
171
- const {
172
- getBlockStyles
173
- } = select(blocksStore);
174
- const blockStyles = getBlockStyles(blockName);
175
- return blockStyles && blockStyles.length > 0;
176
- }, [blockName]);
228
+ const hasMultipleTabs = availableTabs?.length > 1;
177
229
  const blockInformation = useBlockDisplayInformation(clientId);
178
- const borderPanelLabel = useBorderPanelLabel({
179
- blockName
180
- });
181
- const contentClientIds = useSelect(select => {
182
- // Avoid unnecessary subscription.
183
- if (!isSectionBlock) {
184
- return;
185
- }
186
- const {
187
- getClientIdsOfDescendants,
188
- getBlockName,
189
- getBlockEditingMode
190
- } = select(blockEditorStore);
191
- return getClientIdsOfDescendants(clientId).filter(current => getBlockName(current) !== 'core/list-item' && getBlockEditingMode(current) === 'contentOnly');
192
- }, [isSectionBlock, clientId]);
230
+ const isBlockSynced = blockInformation.isSynced;
231
+ const shouldShowTabs = !isBlockSynced && hasMultipleTabs;
193
232
  return /*#__PURE__*/_jsxs("div", {
194
233
  className: "block-editor-block-inspector",
195
234
  children: [/*#__PURE__*/_jsx(BlockCard, {
196
235
  ...blockInformation,
197
- className: blockInformation.isSynced && 'is-synced',
236
+ className: isBlockSynced && 'is-synced',
198
237
  children: window?.__experimentalContentOnlyPatternInsertion && /*#__PURE__*/_jsx(EditContentsButton, {
199
238
  clientId: clientId
200
239
  })
201
240
  }), /*#__PURE__*/_jsx(BlockVariationTransforms, {
202
241
  blockClientId: clientId
203
- }), showTabs && /*#__PURE__*/_jsx(InspectorControlsTabs, {
242
+ }), shouldShowTabs && /*#__PURE__*/_jsx(InspectorControlsTabs, {
204
243
  hasBlockStyles: hasBlockStyles,
205
244
  clientId: clientId,
206
245
  blockName: blockName,
207
- tabs: availableTabs
208
- }), !showTabs && /*#__PURE__*/_jsxs(_Fragment, {
246
+ tabs: availableTabs,
247
+ isSectionBlock: isSectionBlock,
248
+ contentClientIds: contentClientIds
249
+ }), !shouldShowTabs && /*#__PURE__*/_jsxs(_Fragment, {
209
250
  children: [hasBlockStyles && /*#__PURE__*/_jsx(BlockStylesPanel, {
210
251
  clientId: clientId
211
- }), contentClientIds && contentClientIds?.length > 0 && /*#__PURE__*/_jsx(PanelBody, {
212
- title: __('Content'),
213
- children: /*#__PURE__*/_jsx(BlockQuickNavigation, {
214
- clientIds: contentClientIds
215
- })
216
- }), !isSectionBlock && /*#__PURE__*/_jsxs(_Fragment, {
217
- children: [/*#__PURE__*/_jsx(InspectorControls.Slot, {}), /*#__PURE__*/_jsx(InspectorControls.Slot, {
218
- group: "list"
219
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
220
- group: "color",
221
- label: __('Color'),
222
- className: "color-block-support-panel__inner-wrapper"
223
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
224
- group: "background",
225
- label: __('Background image')
226
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
227
- group: "typography",
228
- label: __('Typography')
229
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
230
- group: "dimensions",
231
- label: __('Dimensions')
232
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
233
- group: "border",
234
- label: borderPanelLabel
235
- }), /*#__PURE__*/_jsx(InspectorControls.Slot, {
236
- group: "styles"
237
- }), /*#__PURE__*/_jsx(PositionControls, {}), /*#__PURE__*/_jsx(InspectorControls.Slot, {
238
- group: "bindings"
239
- }), /*#__PURE__*/_jsx("div", {
240
- children: /*#__PURE__*/_jsx(AdvancedControls, {})
241
- })]
252
+ }), /*#__PURE__*/_jsx(ContentTab, {
253
+ contentClientIds: contentClientIds
254
+ }), !isSectionBlock && /*#__PURE__*/_jsx(StyleInspectorSlots, {
255
+ blockName: blockName,
256
+ showListControls: true
242
257
  })]
243
258
  }), /*#__PURE__*/_jsx(SkipToSelectedBlock, {}, "back")]
244
259
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__","getBlockType","getUnregisteredTypeHandlerName","store","blocksStore","PanelBody","__unstableMotion","motion","useSelect","EditContentsButton","SkipToSelectedBlock","BlockCard","MultiSelectionInspector","BlockVariationTransforms","useBlockDisplayInformation","blockEditorStore","BlockStyles","default","InspectorControls","InspectorControlsTabs","useInspectorControlsTabs","AdvancedControls","PositionControls","useBlockInspectorAnimationSettings","BlockQuickNavigation","useBorderPanelLabel","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BlockStylesPanel","clientId","title","children","BlockInspector","count","selectedBlockName","selectedBlockClientId","blockType","isSectionBlock","select","getSelectedBlockClientId","getSelectedBlockCount","getBlockName","getParentSectionBlock","_isSectionBlock","_selectedBlockClientId","renderedBlockClientId","_selectedBlockName","_blockType","availableTabs","name","showTabs","length","blockInspectorAnimationSettings","borderPanelLabel","blockName","className","tabs","Slot","group","label","isSelectedBlockUnregistered","BlockInspectorSingleBlockWrapper","animate","wrapper","AnimatedContainer","BlockInspectorSingleBlock","animationOrigin","enterDirection","div","x","opacity","transition","ease","duration","initial","hasBlockStyles","getBlockStyles","blockStyles","blockInformation","contentClientIds","getClientIdsOfDescendants","getBlockEditingMode","filter","current","isSynced","window","__experimentalContentOnlyPatternInsertion","blockClientId","clientIds"],"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { PanelBody, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EditContentsButton from './edit-contents-button';\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockStyles from '../block-styles';\nimport { default as InspectorControls } from '../inspector-controls';\nimport { default as InspectorControlsTabs } from '../inspector-controls-tabs';\nimport useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-controls-tabs';\nimport AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';\nimport PositionControls from '../inspector-controls-tabs/position-controls-panel';\nimport useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';\nimport BlockQuickNavigation from '../block-quick-navigation';\nimport { useBorderPanelLabel } from '../../hooks/border';\n\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockStylesPanel( { clientId } ) {\n\treturn (\n\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t<BlockStyles clientId={ clientId } />\n\t\t</PanelBody>\n\t);\n}\n\nfunction BlockInspector() {\n\tconst {\n\t\tcount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\tisSectionBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\tgetParentSectionBlock,\n\t\t\tisSectionBlock: _isSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst renderedBlockClientId =\n\t\t\tgetParentSectionBlock( _selectedBlockClientId ) ||\n\t\t\tgetSelectedBlockClientId();\n\t\tconst _selectedBlockName =\n\t\t\trenderedBlockClientId && getBlockName( renderedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\n\t\treturn {\n\t\t\tcount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: renderedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\tisSectionBlock: _isSectionBlock( renderedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\tconst availableTabs = useInspectorControlsTabs( blockType?.name );\n\tconst showTabs = availableTabs?.length > 1;\n\n\t// The block inspector animation settings will be completely\n\t// removed in the future to create an API which allows the block\n\t// inspector to transition between what it\n\t// displays based on the relationship between the selected block\n\t// and its parent, and only enable it if the parent is controlling\n\t// its children blocks.\n\tconst blockInspectorAnimationSettings =\n\t\tuseBlockInspectorAnimationSettings( blockType );\n\n\tconst borderPanelLabel = useBorderPanelLabel( {\n\t\tblockName: selectedBlockName,\n\t} );\n\n\tif ( count > 1 && ! isSectionBlock ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<InspectorControlsTabs tabs={ availableTabs } />\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\tgroup=\"color\"\n\t\t\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\tgroup=\"background\"\n\t\t\t\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\tgroup=\"typography\"\n\t\t\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\tgroup=\"dimensions\"\n\t\t\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\tgroup=\"border\"\n\t\t\t\t\t\t\tlabel={ borderPanelLabel }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t\t\t\t</>\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\treturn (\n\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<BlockInspectorSingleBlockWrapper\n\t\t\tanimate={ blockInspectorAnimationSettings }\n\t\t\twrapper={ ( children ) => (\n\t\t\t\t<AnimatedContainer\n\t\t\t\t\tblockInspectorAnimationSettings={\n\t\t\t\t\t\tblockInspectorAnimationSettings\n\t\t\t\t\t}\n\t\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</AnimatedContainer>\n\t\t\t) }\n\t\t>\n\t\t\t<BlockInspectorSingleBlock\n\t\t\t\tclientId={ selectedBlockClientId }\n\t\t\t\tblockName={ blockType.name }\n\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t/>\n\t\t</BlockInspectorSingleBlockWrapper>\n\t);\n}\n\nconst BlockInspectorSingleBlockWrapper = ( { animate, wrapper, children } ) => {\n\treturn animate ? wrapper( children ) : children;\n};\n\nconst AnimatedContainer = ( {\n\tblockInspectorAnimationSettings,\n\tselectedBlockClientId,\n\tchildren,\n} ) => {\n\tconst animationOrigin =\n\t\tblockInspectorAnimationSettings &&\n\t\tblockInspectorAnimationSettings.enterDirection === 'leftToRight'\n\t\t\t? -50\n\t\t\t: 50;\n\n\treturn (\n\t\t<motion.div\n\t\t\tanimate={ {\n\t\t\t\tx: 0,\n\t\t\t\topacity: 1,\n\t\t\t\ttransition: {\n\t\t\t\t\tease: 'easeInOut',\n\t\t\t\t\tduration: 0.14,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tx: animationOrigin,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\tkey={ selectedBlockClientId }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( {\n\tclientId,\n\tblockName,\n\tisSectionBlock,\n} ) => {\n\tconst availableTabs = useInspectorControlsTabs( blockName );\n\tconst showTabs = ! isSectionBlock && availableTabs?.length > 1;\n\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\tconst borderPanelLabel = useBorderPanelLabel( { blockName } );\n\tconst contentClientIds = useSelect(\n\t\t( select ) => {\n\t\t\t// Avoid unnecessary subscription.\n\t\t\tif ( ! isSectionBlock ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn getClientIdsOfDescendants( clientId ).filter(\n\t\t\t\t( current ) =>\n\t\t\t\t\tgetBlockName( current ) !== 'core/list-item' &&\n\t\t\t\t\tgetBlockEditingMode( current ) === 'contentOnly'\n\t\t\t);\n\t\t},\n\t\t[ isSectionBlock, clientId ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard\n\t\t\t\t{ ...blockInformation }\n\t\t\t\tclassName={ blockInformation.isSynced && 'is-synced' }\n\t\t\t>\n\t\t\t\t{ window?.__experimentalContentOnlyPatternInsertion && (\n\t\t\t\t\t<EditContentsButton clientId={ clientId } />\n\t\t\t\t) }\n\t\t\t</BlockCard>\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ showTabs && (\n\t\t\t\t<InspectorControlsTabs\n\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\ttabs={ availableTabs }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showTabs && (\n\t\t\t\t<>\n\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t<BlockStylesPanel clientId={ clientId } />\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ contentClientIds && contentClientIds?.length > 0 && (\n\t\t\t\t\t\t<PanelBody title={ __( 'Content' ) }>\n\t\t\t\t\t\t\t<BlockQuickNavigation\n\t\t\t\t\t\t\t\tclientIds={ contentClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! isSectionBlock && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t\t\t\t<InspectorControls.Slot group=\"list\" />\n\t\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"color\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"background\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"typography\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"dimensions\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"border\"\n\t\t\t\t\t\t\t\tlabel={ borderPanelLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t\t\t\t\t\t<PositionControls />\n\t\t\t\t\t\t\t<InspectorControls.Slot group=\"bindings\" />\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<AdvancedControls />\n\t\t\t\t\t\t\t</div>\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\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","getBlockType","getUnregisteredTypeHandlerName","store","blocksStore","PanelBody","__unstableMotion","motion","useSelect","EditContentsButton","SkipToSelectedBlock","BlockCard","MultiSelectionInspector","BlockVariationTransforms","useBlockDisplayInformation","blockEditorStore","BlockStyles","default","InspectorControls","InspectorControlsTabs","useInspectorControlsTabs","AdvancedControls","PositionControls","useBlockInspectorAnimationSettings","useBorderPanelLabel","ContentTab","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BlockStylesPanel","clientId","title","children","StyleInspectorSlots","blockName","showAdvancedControls","showPositionControls","showListControls","showBindingsControls","borderPanelLabel","Slot","group","label","className","BlockInspector","selectedBlockCount","selectedBlockName","selectedBlockClientId","blockType","isSectionBlock","isSectionBlockInSelection","hasBlockStyles","select","getSelectedBlockClientId","getSelectedBlockClientIds","getSelectedBlockCount","getBlockName","getParentSectionBlock","_isSectionBlock","getBlockStyles","_selectedBlockClientId","renderedBlockClientId","_selectedBlockName","_blockType","selectedBlockClientIds","_isSectionBlockInSelection","some","id","blockStyles","_hasBlockStyles","length","contentClientIds","getClientIdsOfDescendants","getBlockEditingMode","descendants","filter","current","availableTabs","name","hasMultipleTabs","blockInspectorAnimationSettings","hasSelectedBlocks","tabs","isSelectedBlockUnregistered","shouldShowWarning","BlockInspectorSingleBlockWrapper","animate","wrapper","AnimatedContainer","BlockInspectorSingleBlock","animationOrigin","enterDirection","div","x","opacity","transition","ease","duration","initial","blockInformation","isBlockSynced","isSynced","shouldShowTabs","window","__experimentalContentOnlyPatternInsertion","blockClientId"],"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { PanelBody, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EditContentsButton from './edit-contents-button';\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockStyles from '../block-styles';\nimport { default as InspectorControls } from '../inspector-controls';\nimport { default as InspectorControlsTabs } from '../inspector-controls-tabs';\nimport useInspectorControlsTabs from '../inspector-controls-tabs/use-inspector-controls-tabs';\nimport AdvancedControls from '../inspector-controls-tabs/advanced-controls-panel';\nimport PositionControls from '../inspector-controls-tabs/position-controls-panel';\nimport useBlockInspectorAnimationSettings from './useBlockInspectorAnimationSettings';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport ContentTab from '../inspector-controls-tabs/content-tab';\n\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockStylesPanel( { clientId } ) {\n\treturn (\n\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t<BlockStyles clientId={ clientId } />\n\t\t</PanelBody>\n\t);\n}\n\nfunction StyleInspectorSlots( {\n\tblockName,\n\tshowAdvancedControls = true,\n\tshowPositionControls = true,\n\tshowListControls = false,\n\tshowBindingsControls = true,\n} ) {\n\tconst borderPanelLabel = useBorderPanelLabel( { blockName } );\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls.Slot />\n\t\t\t{ showListControls && <InspectorControls.Slot group=\"list\" /> }\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"background\"\n\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"border\" label={ borderPanelLabel } />\n\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t\t{ showPositionControls && <PositionControls /> }\n\t\t\t{ showBindingsControls && (\n\t\t\t\t<InspectorControls.Slot group=\"bindings\" />\n\t\t\t) }\n\t\t\t{ showAdvancedControls && (\n\t\t\t\t<div>\n\t\t\t\t\t<AdvancedControls />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction BlockInspector() {\n\tconst {\n\t\tselectedBlockCount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\tisSectionBlock,\n\t\tisSectionBlockInSelection,\n\t\thasBlockStyles,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\tgetParentSectionBlock,\n\t\t\tisSectionBlock: _isSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getBlockStyles } = select( blocksStore );\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst renderedBlockClientId =\n\t\t\tgetParentSectionBlock( _selectedBlockClientId ) ||\n\t\t\t_selectedBlockClientId;\n\t\tconst _selectedBlockName =\n\t\t\trenderedBlockClientId && getBlockName( renderedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst _isSectionBlockInSelection = selectedBlockClientIds.some(\n\t\t\t( id ) => _isSectionBlock( id )\n\t\t);\n\n\t\tconst blockStyles =\n\t\t\t_selectedBlockName && getBlockStyles( _selectedBlockName );\n\t\tconst _hasBlockStyles = blockStyles && blockStyles.length > 0;\n\n\t\treturn {\n\t\t\tselectedBlockCount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: renderedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\tisSectionBlockInSelection: _isSectionBlockInSelection,\n\t\t\tisSectionBlock: _isSectionBlock( renderedBlockClientId ),\n\t\t\thasBlockStyles: _hasBlockStyles,\n\t\t};\n\t}, [] );\n\n\t// Separate useSelect for contentClientIds with proper dependencies\n\tconst contentClientIds = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSectionBlock || ! selectedBlockClientId ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst descendants = getClientIdsOfDescendants(\n\t\t\t\tselectedBlockClientId\n\t\t\t);\n\t\t\treturn descendants.filter(\n\t\t\t\t( current ) =>\n\t\t\t\t\tgetBlockName( current ) !== 'core/list-item' &&\n\t\t\t\t\tgetBlockEditingMode( current ) === 'contentOnly'\n\t\t\t);\n\t\t},\n\t\t[ isSectionBlock, selectedBlockClientId ]\n\t);\n\n\tconst availableTabs = useInspectorControlsTabs(\n\t\tblockType?.name,\n\t\tcontentClientIds,\n\t\tisSectionBlock,\n\t\thasBlockStyles\n\t);\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\n\t// The block inspector animation settings will be completely\n\t// removed in the future to create an API which allows the block\n\t// inspector to transition between what it\n\t// displays based on the relationship between the selected block\n\t// and its parent, and only enable it if the parent is controlling\n\t// its children blocks.\n\tconst blockInspectorAnimationSettings =\n\t\tuseBlockInspectorAnimationSettings( blockType );\n\n\tconst hasSelectedBlocks = selectedBlockCount > 1;\n\n\tif ( hasSelectedBlocks && ! isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t{ hasMultipleTabs ? (\n\t\t\t\t\t<InspectorControlsTabs tabs={ availableTabs } />\n\t\t\t\t) : (\n\t\t\t\t\t<StyleInspectorSlots\n\t\t\t\t\t\tblockName={ selectedBlockName }\n\t\t\t\t\t\tshowAdvancedControls={ false }\n\t\t\t\t\t\tshowPositionControls={ false }\n\t\t\t\t\t\tshowBindingsControls={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( hasSelectedBlocks && isSectionBlockInSelection ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst 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\tconst shouldShowWarning =\n\t\t! blockType || ! selectedBlockClientId || isSelectedBlockUnregistered;\n\n\tif ( shouldShowWarning ) {\n\t\treturn (\n\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t</span>\n\t\t);\n\t}\n\n\treturn (\n\t\t<BlockInspectorSingleBlockWrapper\n\t\t\tanimate={ blockInspectorAnimationSettings }\n\t\t\twrapper={ ( children ) => (\n\t\t\t\t<AnimatedContainer\n\t\t\t\t\tblockInspectorAnimationSettings={\n\t\t\t\t\t\tblockInspectorAnimationSettings\n\t\t\t\t\t}\n\t\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</AnimatedContainer>\n\t\t\t) }\n\t\t>\n\t\t\t<BlockInspectorSingleBlock\n\t\t\t\tclientId={ selectedBlockClientId }\n\t\t\t\tblockName={ blockType.name }\n\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\tavailableTabs={ availableTabs }\n\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t/>\n\t\t</BlockInspectorSingleBlockWrapper>\n\t);\n}\n\nconst BlockInspectorSingleBlockWrapper = ( { animate, wrapper, children } ) => {\n\treturn animate ? wrapper( children ) : children;\n};\n\nconst AnimatedContainer = ( {\n\tblockInspectorAnimationSettings,\n\tselectedBlockClientId,\n\tchildren,\n} ) => {\n\tconst animationOrigin =\n\t\tblockInspectorAnimationSettings &&\n\t\tblockInspectorAnimationSettings.enterDirection === 'leftToRight'\n\t\t\t? -50\n\t\t\t: 50;\n\n\treturn (\n\t\t<motion.div\n\t\t\tanimate={ {\n\t\t\t\tx: 0,\n\t\t\t\topacity: 1,\n\t\t\t\ttransition: {\n\t\t\t\t\tease: 'easeInOut',\n\t\t\t\t\tduration: 0.14,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tx: animationOrigin,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\tkey={ selectedBlockClientId }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( {\n\tclientId,\n\tblockName,\n\tisSectionBlock,\n\tavailableTabs,\n\tcontentClientIds,\n\thasBlockStyles,\n} ) => {\n\tconst hasMultipleTabs = availableTabs?.length > 1;\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst isBlockSynced = blockInformation.isSynced;\n\n\tconst shouldShowTabs = ! isBlockSynced && hasMultipleTabs;\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard\n\t\t\t\t{ ...blockInformation }\n\t\t\t\tclassName={ isBlockSynced && 'is-synced' }\n\t\t\t>\n\t\t\t\t{ window?.__experimentalContentOnlyPatternInsertion && (\n\t\t\t\t\t<EditContentsButton clientId={ clientId } />\n\t\t\t\t) }\n\t\t\t</BlockCard>\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ shouldShowTabs && (\n\t\t\t\t<InspectorControlsTabs\n\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\ttabs={ availableTabs }\n\t\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\t\tcontentClientIds={ contentClientIds }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! shouldShowTabs && (\n\t\t\t\t<>\n\t\t\t\t\t{ hasBlockStyles && (\n\t\t\t\t\t\t<BlockStylesPanel clientId={ clientId } />\n\t\t\t\t\t) }\n\t\t\t\t\t<ContentTab contentClientIds={ contentClientIds } />\n\t\t\t\t\t{ ! isSectionBlock && (\n\t\t\t\t\t\t<StyleInspectorSlots\n\t\t\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\t\t\tshowListControls\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\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"],"mappings":"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","ignoreList":[]}
@@ -144,7 +144,7 @@ export const BlockSwitcher = ({
144
144
  isReusable,
145
145
  isTemplate,
146
146
  isDisabled,
147
- isSection
147
+ isSectionInSelection
148
148
  } = useSelect(select => {
149
149
  const {
150
150
  getTemplateLock,
@@ -187,6 +187,7 @@ export const BlockSwitcher = ({
187
187
  // appropriate icon to communicate the non-uniformity.
188
188
  _icon = isSelectionOfSameType ? blockType.icon : copy;
189
189
  }
190
+ const _isSectionInSelection = clientIds.some(id => isSectionBlock(id));
190
191
  return {
191
192
  canRemove: canRemoveBlocks(clientIds),
192
193
  hasBlockStyles: _isSingleBlockSelected && !!getBlockStyles(firstBlockName)?.length,
@@ -195,7 +196,7 @@ export const BlockSwitcher = ({
195
196
  isTemplate: _isSingleBlockSelected && isTemplatePart(_blocks[0]),
196
197
  hasContentOnlyLocking: _hasTemplateLock,
197
198
  isDisabled: editingMode !== 'default',
198
- isSection: isSectionBlock(clientIds[0])
199
+ isSectionInSelection: _isSectionInSelection
199
200
  };
200
201
  }, [clientIds]);
201
202
  const blockTitle = useBlockDisplayTitle({
@@ -209,7 +210,7 @@ export const BlockSwitcher = ({
209
210
  const isSingleBlock = clientIds.length === 1;
210
211
  const blockSwitcherLabel = isSingleBlock ? blockTitle : __('Multiple blocks selected');
211
212
  const blockIndicatorText = (isReusable || isTemplate) && !showIconLabels && blockTitle ? blockTitle : undefined;
212
- const hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && isSection;
213
+ const hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && isSectionInSelection;
213
214
  const hideDropdown = hideTransformsForSections || isDisabled || !hasBlockStyles && !canRemove || hasContentOnlyLocking;
214
215
  if (hideDropdown) {
215
216
  return /*#__PURE__*/_jsx(ToolbarGroup, {
@@ -1 +1 @@
1
- {"version":3,"names":["__","_n","sprintf","_x","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","__experimentalText","Text","MenuGroup","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","preferencesStore","blockEditorStore","BlockIcon","BlockTransformationsMenu","useBlockVariationTransforms","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","unlock","jsx","_jsx","jsxs","_jsxs","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","possibleBlockTransformations","patterns","blocks","isUsingBindings","select","getBlockAttributes","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","_blocks","every","clientId","metadata","bindings","blockVariationTransformations","selectForMultipleBlocks","insertedBlocks","length","onBlockTransform","name","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isSynced","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","className","children","connectedBlockDescription","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockSwitcher","hasContentOnlyLocking","icon","invalidBlocks","isReusable","isTemplate","isDisabled","isSection","getTemplateLock","canRemoveBlocks","getBlockEditingMode","isSectionBlock","getBlockStyles","getBlockType","getActiveBlockVariation","some","block","firstBlockName","_isSingleBlockSelected","blockType","editingMode","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","blockTitle","maximumLength","showIconLabels","get","blockSwitcherLabel","blockIndicatorText","undefined","hideTransformsForSections","window","__experimentalContentOnlyPatternInsertion","hideDropdown","disabled","title","showColors","text","blockSwitcherDescription","toggleProps","label","popoverProps","placement","description","menuProps","orientation"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isSynced` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isSynced =\n\t\tisSingleBlock &&\n\t\t( isTemplatePart( blocks[ 0 ] ) || isReusableBlock( blocks[ 0 ] ) );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations?.length && canRemove && ! isSynced;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t\tisSection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t\tisSection: isSectionBlock( clientIds[ 0 ] ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tconst showIconLabels = useSelect(\n\t\t( select ) =>\n\t\t\tselect( preferencesStore ).get( 'core', 'showIconLabels' ),\n\t\t[]\n\t);\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst blockIndicatorText =\n\t\t( isReusable || isTemplate ) && ! showIconLabels && blockTitle\n\t\t\t? blockTitle\n\t\t\t: undefined;\n\n\tconst hideTransformsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion && isSection;\n\tconst hideDropdown =\n\t\thideTransformsForSections ||\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","_n","sprintf","_x","DropdownMenu","ToolbarButton","ToolbarGroup","ToolbarItem","__experimentalText","Text","MenuGroup","switchToBlockType","store","blocksStore","isReusableBlock","isTemplatePart","useSelect","useDispatch","copy","preferencesStore","blockEditorStore","BlockIcon","BlockTransformationsMenu","useBlockVariationTransforms","BlockStylesMenu","PatternTransformationsMenu","useBlockDisplayTitle","unlock","jsx","_jsx","jsxs","_jsxs","BlockSwitcherDropdownMenuContents","onClose","clientIds","hasBlockStyles","canRemove","replaceBlocks","multiSelect","updateBlockAttributes","possibleBlockTransformations","patterns","blocks","isUsingBindings","select","getBlockAttributes","getBlocksByClientId","getBlockRootClientId","getBlockTransformItems","__experimentalGetPatternTransformItems","rootClientId","_blocks","every","clientId","metadata","bindings","blockVariationTransformations","selectForMultipleBlocks","insertedBlocks","length","onBlockTransform","name","newBlocks","onBlockVariationTransform","find","variationName","attributes","onPatternTransform","transformedBlocks","isSingleBlock","isSynced","hasPossibleBlockTransformations","hasPossibleBlockVariationTransformations","hasPatternTransformation","hasBlockOrBlockVariationTransforms","hasContents","className","children","connectedBlockDescription","onSelect","possibleBlockVariationTransformations","onSelectVariation","hoveredBlock","onSwitch","BlockSwitcher","hasContentOnlyLocking","icon","invalidBlocks","isReusable","isTemplate","isDisabled","isSectionInSelection","getTemplateLock","canRemoveBlocks","getBlockEditingMode","isSectionBlock","getBlockStyles","getBlockType","getActiveBlockVariation","some","block","firstBlockName","_isSingleBlockSelected","blockType","editingMode","_icon","_hasTemplateLock","match","isSelectionOfSameType","Set","map","size","id","_isSectionInSelection","blockTitle","maximumLength","showIconLabels","get","blockSwitcherLabel","blockIndicatorText","undefined","hideTransformsForSections","window","__experimentalContentOnlyPatternInsertion","hideDropdown","disabled","title","showColors","text","blockSwitcherDescription","toggleProps","label","popoverProps","placement","description","menuProps","orientation"],"sources":["@wordpress/block-editor/src/components/block-switcher/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isSynced` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isSynced =\n\t\tisSingleBlock &&\n\t\t( isTemplatePart( blocks[ 0 ] ) || isReusableBlock( blocks[ 0 ] ) );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations?.length && canRemove && ! isSynced;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t\tisSectionInSelection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\tconst _isSectionInSelection = clientIds.some( ( id ) =>\n\t\t\t\tisSectionBlock( id )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t\tisSectionInSelection: _isSectionInSelection,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tconst showIconLabels = useSelect(\n\t\t( select ) =>\n\t\t\tselect( preferencesStore ).get( 'core', 'showIconLabels' ),\n\t\t[]\n\t);\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst blockIndicatorText =\n\t\t( isReusable || isTemplate ) && ! showIconLabels && blockTitle\n\t\t\t? blockTitle\n\t\t\t: undefined;\n\n\tconst hideTransformsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\tisSectionInSelection;\n\tconst hideDropdown =\n\t\thideTransformsForSections ||\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { PanelBody } from '@wordpress/components';
5
+ import { __ } from '@wordpress/i18n';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import BlockQuickNavigation from '../block-quick-navigation';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const ContentTab = ({
13
+ contentClientIds
14
+ }) => {
15
+ if (!contentClientIds || contentClientIds.length === 0) {
16
+ return null;
17
+ }
18
+ return /*#__PURE__*/_jsx(PanelBody, {
19
+ title: __('Content'),
20
+ children: /*#__PURE__*/_jsx(BlockQuickNavigation, {
21
+ clientIds: contentClientIds
22
+ })
23
+ });
24
+ };
25
+ export default ContentTab;
26
+ //# sourceMappingURL=content-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PanelBody","__","BlockQuickNavigation","jsx","_jsx","ContentTab","contentClientIds","length","title","children","clientIds"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/content-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { PanelBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockQuickNavigation from '../block-quick-navigation';\n\nconst ContentTab = ( { contentClientIds } ) => {\n\tif ( ! contentClientIds || contentClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Content' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ contentClientIds } />\n\t\t</PanelBody>\n\t);\n};\n\nexport default ContentTab;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,uBAAuB;AACjD,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE7D,MAAMC,UAAU,GAAGA,CAAE;EAAEC;AAAiB,CAAC,KAAM;EAC9C,IAAK,CAAEA,gBAAgB,IAAIA,gBAAgB,CAACC,MAAM,KAAK,CAAC,EAAG;IAC1D,OAAO,IAAI;EACZ;EAEA,oBACCH,IAAA,CAACJ,SAAS;IAACQ,KAAK,EAAGP,EAAE,CAAE,SAAU,CAAG;IAAAQ,QAAA,eACnCL,IAAA,CAACF,oBAAoB;MAACQ,SAAS,EAAGJ;IAAkB,CAAE;EAAC,CAC7C,CAAC;AAEd,CAAC;AAED,eAAeD,UAAU","ignoreList":[]}
@@ -8,9 +8,10 @@ import { useSelect } from '@wordpress/data';
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
- import { TAB_SETTINGS, TAB_STYLES, TAB_LIST_VIEW } from './utils';
11
+ import { TAB_SETTINGS, TAB_STYLES, TAB_LIST_VIEW, TAB_CONTENT } from './utils';
12
12
  import SettingsTab from './settings-tab';
13
13
  import StylesTab from './styles-tab';
14
+ import ContentTab from './content-tab';
14
15
  import InspectorControls from '../inspector-controls';
15
16
  import useIsListViewTabDisabled from './use-is-list-view-tab-disabled';
16
17
  import { unlock } from '../../lock-unlock';
@@ -22,7 +23,9 @@ export default function InspectorControlsTabs({
22
23
  blockName,
23
24
  clientId,
24
25
  hasBlockStyles,
25
- tabs
26
+ tabs,
27
+ isSectionBlock,
28
+ contentClientIds
26
29
  }) {
27
30
  const showIconLabels = useSelect(select => {
28
31
  return select(preferencesStore).get('core', 'showIconLabels');
@@ -64,7 +67,14 @@ export default function InspectorControlsTabs({
64
67
  children: /*#__PURE__*/_jsx(StylesTab, {
65
68
  blockName: blockName,
66
69
  clientId: clientId,
67
- hasBlockStyles: hasBlockStyles
70
+ hasBlockStyles: hasBlockStyles,
71
+ isSectionBlock: isSectionBlock
72
+ })
73
+ }), /*#__PURE__*/_jsx(Tabs.TabPanel, {
74
+ tabId: TAB_CONTENT.name,
75
+ focusable: false,
76
+ children: /*#__PURE__*/_jsx(ContentTab, {
77
+ contentClientIds: contentClientIds
68
78
  })
69
79
  }), /*#__PURE__*/_jsx(Tabs.TabPanel, {
70
80
  tabId: TAB_LIST_VIEW.name,