@wordpress/block-editor 12.8.1 → 12.9.1-next.5a1d1283.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 (124) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +5 -12
  3. package/build/components/block-list/block-outline.native.js +4 -3
  4. package/build/components/block-list/block-outline.native.js.map +1 -1
  5. package/build/components/block-list/index.js +4 -3
  6. package/build/components/block-list/index.js.map +1 -1
  7. package/build/components/block-popover/inbetween.js +4 -5
  8. package/build/components/block-popover/inbetween.js.map +1 -1
  9. package/build/components/block-popover/index.js +3 -2
  10. package/build/components/block-popover/index.js.map +1 -1
  11. package/build/components/color-style-selector/index.js +1 -1
  12. package/build/components/color-style-selector/index.js.map +1 -1
  13. package/build/components/inserter/reusable-blocks-tab.native.js +7 -4
  14. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  15. package/build/components/inserter/search-results.native.js +10 -8
  16. package/build/components/inserter/search-results.native.js.map +1 -1
  17. package/build/components/link-control/index.js +2 -7
  18. package/build/components/link-control/index.js.map +1 -1
  19. package/build/components/link-control/settings.js +2 -1
  20. package/build/components/link-control/settings.js.map +1 -1
  21. package/build/components/list-view/block-select-button.js +48 -7
  22. package/build/components/list-view/block-select-button.js.map +1 -1
  23. package/build/components/list-view/drop-indicator.js +3 -3
  24. package/build/components/list-view/drop-indicator.js.map +1 -1
  25. package/build/components/list-view/index.js +14 -8
  26. package/build/components/list-view/index.js.map +1 -1
  27. package/build/components/list-view/use-list-view-images.js +5 -4
  28. package/build/components/list-view/use-list-view-images.js.map +1 -1
  29. package/build/components/preview-options/index.js +3 -1
  30. package/build/components/preview-options/index.js.map +1 -1
  31. package/build/components/provider/index.js +3 -1
  32. package/build/components/provider/index.js.map +1 -1
  33. package/build/components/use-block-commands/index.js +74 -63
  34. package/build/components/use-block-commands/index.js.map +1 -1
  35. package/build/components/warning/index.js +1 -1
  36. package/build/components/warning/index.js.map +1 -1
  37. package/build/hooks/auto-inserting-blocks.js +174 -0
  38. package/build/hooks/auto-inserting-blocks.js.map +1 -0
  39. package/build/hooks/index.js +1 -0
  40. package/build/hooks/index.js.map +1 -1
  41. package/build/hooks/style.js +64 -22
  42. package/build/hooks/style.js.map +1 -1
  43. package/build/hooks/utils.js +4 -0
  44. package/build/hooks/utils.js.map +1 -1
  45. package/build-module/components/block-list/block-outline.native.js +4 -3
  46. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  47. package/build-module/components/block-list/index.js +4 -3
  48. package/build-module/components/block-list/index.js.map +1 -1
  49. package/build-module/components/block-popover/inbetween.js +4 -5
  50. package/build-module/components/block-popover/inbetween.js.map +1 -1
  51. package/build-module/components/block-popover/index.js +3 -2
  52. package/build-module/components/block-popover/index.js.map +1 -1
  53. package/build-module/components/color-style-selector/index.js +1 -1
  54. package/build-module/components/color-style-selector/index.js.map +1 -1
  55. package/build-module/components/inserter/reusable-blocks-tab.native.js +8 -4
  56. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  57. package/build-module/components/inserter/search-results.native.js +11 -8
  58. package/build-module/components/inserter/search-results.native.js.map +1 -1
  59. package/build-module/components/link-control/index.js +2 -7
  60. package/build-module/components/link-control/index.js.map +1 -1
  61. package/build-module/components/link-control/settings.js +2 -1
  62. package/build-module/components/link-control/settings.js.map +1 -1
  63. package/build-module/components/list-view/block-select-button.js +48 -7
  64. package/build-module/components/list-view/block-select-button.js.map +1 -1
  65. package/build-module/components/list-view/drop-indicator.js +3 -3
  66. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  67. package/build-module/components/list-view/index.js +14 -8
  68. package/build-module/components/list-view/index.js.map +1 -1
  69. package/build-module/components/list-view/use-list-view-images.js +5 -4
  70. package/build-module/components/list-view/use-list-view-images.js.map +1 -1
  71. package/build-module/components/preview-options/index.js +3 -1
  72. package/build-module/components/preview-options/index.js.map +1 -1
  73. package/build-module/components/provider/index.js +3 -1
  74. package/build-module/components/provider/index.js.map +1 -1
  75. package/build-module/components/use-block-commands/index.js +74 -63
  76. package/build-module/components/use-block-commands/index.js.map +1 -1
  77. package/build-module/components/warning/index.js +2 -2
  78. package/build-module/components/warning/index.js.map +1 -1
  79. package/build-module/hooks/auto-inserting-blocks.js +167 -0
  80. package/build-module/hooks/auto-inserting-blocks.js.map +1 -0
  81. package/build-module/hooks/index.js +1 -0
  82. package/build-module/hooks/index.js.map +1 -1
  83. package/build-module/hooks/style.js +63 -21
  84. package/build-module/hooks/style.js.map +1 -1
  85. package/build-module/hooks/utils.js +4 -0
  86. package/build-module/hooks/utils.js.map +1 -1
  87. package/build-style/content-rtl.css +8 -7
  88. package/build-style/content.css +8 -7
  89. package/build-style/style-rtl.css +4 -4
  90. package/build-style/style.css +4 -4
  91. package/package.json +32 -32
  92. package/src/components/block-list/block-outline.native.js +5 -2
  93. package/src/components/block-list/content.scss +2 -3
  94. package/src/components/block-list/index.js +4 -3
  95. package/src/components/block-popover/inbetween.js +4 -3
  96. package/src/components/block-popover/index.js +3 -2
  97. package/src/components/button-block-appender/content.scss +8 -0
  98. package/src/components/color-style-selector/index.js +1 -1
  99. package/src/components/inserter/reusable-blocks-tab.native.js +7 -2
  100. package/src/components/inserter/search-results.native.js +13 -9
  101. package/src/components/link-control/index.js +2 -5
  102. package/src/components/link-control/settings.js +1 -0
  103. package/src/components/link-control/style.scss +5 -5
  104. package/src/components/link-control/test/index.js +1 -0
  105. package/src/components/list-view/block-select-button.js +67 -15
  106. package/src/components/list-view/drop-indicator.js +4 -5
  107. package/src/components/list-view/index.js +19 -13
  108. package/src/components/list-view/use-list-view-images.js +8 -4
  109. package/src/components/observe-typing/README.md +2 -2
  110. package/src/components/preview-options/index.js +2 -0
  111. package/src/components/provider/index.js +8 -1
  112. package/src/components/use-block-commands/index.js +92 -88
  113. package/src/components/warning/index.js +2 -2
  114. package/src/hooks/auto-inserting-blocks.js +232 -0
  115. package/src/hooks/index.js +1 -0
  116. package/src/hooks/style.js +85 -35
  117. package/src/hooks/utils.js +4 -0
  118. package/build/utils/pre-parse-patterns.js +0 -68
  119. package/build/utils/pre-parse-patterns.js.map +0 -1
  120. package/build-module/utils/pre-parse-patterns.js +0 -61
  121. package/build-module/utils/pre-parse-patterns.js.map +0 -1
  122. package/src/components/url-popover/test/__snapshots__/index.js.snap +0 -133
  123. package/src/components/url-popover/test/index.js +0 -75
  124. package/src/utils/pre-parse-patterns.js +0 -69
@@ -110,20 +110,14 @@ const useActionsCommands = () => {
110
110
  getBlockRootClientId,
111
111
  getBlocksByClientId,
112
112
  canMoveBlocks,
113
- canRemoveBlocks
113
+ canRemoveBlocks,
114
+ getBlockCount
114
115
  } = useSelect(blockEditorStore);
115
116
  const {
116
117
  getDefaultBlockName,
117
118
  getGroupingBlockName
118
119
  } = useSelect(blocksStore);
119
120
  const blocks = getBlocksByClientId(clientIds);
120
- const rootClientId = getBlockRootClientId(clientIds[0]);
121
- const canDuplicate = blocks.every(block => {
122
- return !!block && hasBlockSupport(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
123
- });
124
- const canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
125
- const canMove = canMoveBlocks(clientIds, rootClientId);
126
- const canRemove = canRemoveBlocks(clientIds, rootClientId);
127
121
  const {
128
122
  removeBlocks,
129
123
  replaceBlocks,
@@ -134,40 +128,6 @@ const useActionsCommands = () => {
134
128
  setNavigationMode,
135
129
  selectBlock
136
130
  } = useDispatch(blockEditorStore);
137
- const onDuplicate = () => {
138
- if (!canDuplicate) {
139
- return;
140
- }
141
- return duplicateBlocks(clientIds, true);
142
- };
143
- const onRemove = () => {
144
- if (!canRemove) {
145
- return;
146
- }
147
- return removeBlocks(clientIds, true);
148
- };
149
- const onAddBefore = () => {
150
- if (!canInsertDefaultBlock) {
151
- return;
152
- }
153
- const clientId = Array.isArray(clientIds) ? clientIds[0] : clientId;
154
- insertBeforeBlock(clientId);
155
- };
156
- const onAddAfter = () => {
157
- if (!canInsertDefaultBlock) {
158
- return;
159
- }
160
- const clientId = Array.isArray(clientIds) ? clientIds[clientIds.length - 1] : clientId;
161
- insertAfterBlock(clientId);
162
- };
163
- const onMoveTo = () => {
164
- if (!canMove) {
165
- return;
166
- }
167
- setNavigationMode(true);
168
- selectBlock(clientIds[0]);
169
- setBlockMovingClientId(clientIds[0]);
170
- };
171
131
  const onGroup = () => {
172
132
  if (!blocks.length) {
173
133
  return;
@@ -197,32 +157,83 @@ const useActionsCommands = () => {
197
157
  commands: []
198
158
  };
199
159
  }
200
- const icons = {
201
- ungroup,
202
- group,
203
- move,
204
- add,
205
- remove,
206
- duplicate: copy
207
- };
208
- const commands = [onUngroup, onGroup, onMoveTo, onAddAfter, onAddBefore, onRemove, onDuplicate].map(callback => {
209
- const action = callback.name.replace('on', '').replace(/([a-z])([A-Z])/g, '$1 $2');
210
- return {
211
- name: 'core/block-editor/action-' + callback.name,
212
- // translators: %s: type of the command.
213
- label: action,
214
- icon: icons[callback.name.replace('on', '').match(/[A-Z]{1}[a-z]*/).toString().toLowerCase()],
160
+ const rootClientId = getBlockRootClientId(clientIds[0]);
161
+ const canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
162
+ const canDuplicate = blocks.every(block => {
163
+ return !!block && hasBlockSupport(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
164
+ });
165
+ const canRemove = canRemoveBlocks(clientIds, rootClientId);
166
+ const canMove = canMoveBlocks(clientIds, rootClientId) && getBlockCount(rootClientId) !== 1;
167
+ const commands = [{
168
+ name: 'ungroup',
169
+ label: __('Ungroup'),
170
+ callback: onUngroup,
171
+ icon: ungroup
172
+ }, {
173
+ name: 'Group',
174
+ label: __('Group'),
175
+ callback: onGroup,
176
+ icon: group
177
+ }];
178
+ if (canInsertDefaultBlock) {
179
+ commands.push({
180
+ name: 'add-after',
181
+ label: __('Add after'),
182
+ callback: () => {
183
+ const clientId = Array.isArray(clientIds) ? clientIds[clientIds.length - 1] : clientId;
184
+ insertAfterBlock(clientId);
185
+ },
186
+ icon: add
187
+ }, {
188
+ name: 'add-before',
189
+ label: __('Add before'),
190
+ callback: () => {
191
+ const clientId = Array.isArray(clientIds) ? clientIds[0] : clientId;
192
+ insertBeforeBlock(clientId);
193
+ },
194
+ icon: add
195
+ });
196
+ }
197
+ if (canRemove) {
198
+ commands.push({
199
+ name: 'remove',
200
+ label: __('Remove'),
201
+ callback: () => removeBlocks(clientIds, true),
202
+ icon: remove
203
+ });
204
+ }
205
+ if (canDuplicate) {
206
+ commands.push({
207
+ name: 'duplicate',
208
+ label: __('Duplicate'),
209
+ callback: () => duplicateBlocks(clientIds, true),
210
+ icon: copy
211
+ });
212
+ }
213
+ if (canMove) {
214
+ commands.push({
215
+ name: 'move-to',
216
+ label: __('Move to'),
217
+ callback: () => {
218
+ setNavigationMode(true);
219
+ selectBlock(clientIds[0]);
220
+ setBlockMovingClientId(clientIds[0]);
221
+ },
222
+ icon: move
223
+ });
224
+ }
225
+ return {
226
+ isLoading: false,
227
+ commands: commands.map(command => ({
228
+ ...command,
229
+ name: 'core/block-editor/action-' + command.name,
215
230
  callback: ({
216
231
  close
217
232
  }) => {
218
- callback();
233
+ command.callback();
219
234
  close();
220
235
  }
221
- };
222
- });
223
- return {
224
- isLoading: false,
225
- commands
236
+ }))
226
237
  };
227
238
  };
228
239
  export const useBlockCommands = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","edit","remove","create","add","group","ungroup","moveTo","move","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","src","callback","close","useActionsCommands","canInsertBlockType","canMoveBlocks","getDefaultBlockName","getGroupingBlockName","canDuplicate","every","block","canInsertDefaultBlock","canMove","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","setBlockMovingClientId","setNavigationMode","selectBlock","onDuplicate","onRemove","onAddBefore","onAddAfter","onMoveTo","onGroup","groupingBlockName","onUngroup","innerBlocks","icons","duplicate","action","match","toString","toLowerCase","useBlockCommands","hook"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\tedit as remove,\n\tcreate as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\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\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: icon.src,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst canMove = canMoveBlocks( clientIds, rootClientId );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onDuplicate = () => {\n\t\tif ( ! canDuplicate ) {\n\t\t\treturn;\n\t\t}\n\t\treturn duplicateBlocks( clientIds, true );\n\t};\n\tconst onRemove = () => {\n\t\tif ( ! canRemove ) {\n\t\t\treturn;\n\t\t}\n\t\treturn removeBlocks( clientIds, true );\n\t};\n\tconst onAddBefore = () => {\n\t\tif ( ! canInsertDefaultBlock ) {\n\t\t\treturn;\n\t\t}\n\t\tconst clientId = Array.isArray( clientIds ) ? clientIds[ 0 ] : clientId;\n\t\tinsertBeforeBlock( clientId );\n\t};\n\tconst onAddAfter = () => {\n\t\tif ( ! canInsertDefaultBlock ) {\n\t\t\treturn;\n\t\t}\n\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t: clientId;\n\t\tinsertAfterBlock( clientId );\n\t};\n\tconst onMoveTo = () => {\n\t\tif ( ! canMove ) {\n\t\t\treturn;\n\t\t}\n\t\tsetNavigationMode( true );\n\t\tselectBlock( clientIds[ 0 ] );\n\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t};\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst icons = {\n\t\tungroup,\n\t\tgroup,\n\t\tmove,\n\t\tadd,\n\t\tremove,\n\t\tduplicate: copy,\n\t};\n\n\tconst commands = [\n\t\tonUngroup,\n\t\tonGroup,\n\t\tonMoveTo,\n\t\tonAddAfter,\n\t\tonAddBefore,\n\t\tonRemove,\n\t\tonDuplicate,\n\t].map( ( callback ) => {\n\t\tconst action = callback.name\n\t\t\t.replace( 'on', '' )\n\t\t\t.replace( /([a-z])([A-Z])/g, '$1 $2' );\n\n\t\treturn {\n\t\t\tname: 'core/block-editor/action-' + callback.name,\n\t\t\t// translators: %s: type of the command.\n\t\t\tlabel: action,\n\t\t\ticon: icons[\n\t\t\t\tcallback.name\n\t\t\t\t\t.replace( 'on', '' )\n\t\t\t\t\t.match( /[A-Z]{1}[a-z]*/ )\n\t\t\t\t\t.toString()\n\t\t\t\t\t.toLowerCase()\n\t\t\t],\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcallback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","edit","remove","create","add","group","ungroup","moveTo","move","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","src","callback","close","useActionsCommands","canInsertBlockType","canMoveBlocks","getBlockCount","getDefaultBlockName","getGroupingBlockName","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","setBlockMovingClientId","setNavigationMode","selectBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","block","canMove","push","command","useBlockCommands","hook"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\tedit as remove,\n\tcreate as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\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\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: icon.src,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t\tgetBlockCount,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [\n\t\t{\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t},\n\t\t{\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t},\n\t];\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Remove' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n};\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ import classnames from 'classnames';
10
10
  import { Children } from '@wordpress/element';
11
11
  import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
12
12
  import { __ } from '@wordpress/i18n';
13
- import { moreHorizontal } from '@wordpress/icons';
13
+ import { moreVertical } from '@wordpress/icons';
14
14
  function Warning({
15
15
  className,
16
16
  actions,
@@ -35,7 +35,7 @@ function Warning({
35
35
  className: "block-editor-warning__action"
36
36
  }, action)), secondaryActions && createElement(DropdownMenu, {
37
37
  className: "block-editor-warning__secondary",
38
- icon: moreHorizontal,
38
+ icon: moreVertical,
39
39
  label: __('More options'),
40
40
  popoverProps: {
41
41
  position: 'bottom left',
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Children","DropdownMenu","MenuGroup","MenuItem","__","moreHorizontal","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreHorizontal } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ classnames( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreHorizontal }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,UAAU,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GACjEI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,cAAgB;IACvBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO"}
1
+ {"version":3,"names":["classnames","Children","DropdownMenu","MenuGroup","MenuItem","__","moreVertical","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ classnames( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,UAAU,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GACjEI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,YAAc;IACrBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO"}
@@ -0,0 +1,167 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __ } from '@wordpress/i18n';
6
+ import { addFilter } from '@wordpress/hooks';
7
+ import { Fragment } from '@wordpress/element';
8
+ import { PanelBody, ToggleControl } from '@wordpress/components';
9
+ import { createHigherOrderComponent } from '@wordpress/compose';
10
+ import { createBlock, store as blocksStore } from '@wordpress/blocks';
11
+ import { useDispatch, useSelect } from '@wordpress/data';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { InspectorControls } from '../components';
17
+ import { store as blockEditorStore } from '../store';
18
+ function AutoInsertingBlocksControl(props) {
19
+ const {
20
+ autoInsertedBlocksForCurrentBlock,
21
+ groupedAutoInsertedBlocks
22
+ } = useSelect(select => {
23
+ const {
24
+ getBlockTypes
25
+ } = select(blocksStore);
26
+ const _autoInsertedBlocksForCurrentBlock = getBlockTypes()?.filter(({
27
+ autoInsert
28
+ }) => autoInsert && props.blockName in autoInsert);
29
+
30
+ // Group by block namespace (i.e. prefix before the slash).
31
+ const _groupedAutoInsertedBlocks = _autoInsertedBlocksForCurrentBlock?.reduce((groups, block) => {
32
+ const [namespace] = block.name.split('/');
33
+ if (!groups[namespace]) {
34
+ groups[namespace] = [];
35
+ }
36
+ groups[namespace].push(block);
37
+ return groups;
38
+ }, {});
39
+ return {
40
+ autoInsertedBlocksForCurrentBlock: _autoInsertedBlocksForCurrentBlock,
41
+ groupedAutoInsertedBlocks: _groupedAutoInsertedBlocks
42
+ };
43
+ }, [props.blockName]);
44
+ const {
45
+ autoInsertedBlockClientIds,
46
+ blockIndex,
47
+ rootClientId,
48
+ innerBlocksLength
49
+ } = useSelect(select => {
50
+ const {
51
+ getBlock,
52
+ getBlockIndex,
53
+ getBlockRootClientId
54
+ } = select(blockEditorStore);
55
+ const _rootClientId = getBlockRootClientId(props.clientId);
56
+ const _autoInsertedBlockClientIds = autoInsertedBlocksForCurrentBlock.reduce((clientIds, block) => {
57
+ const relativePosition = block?.autoInsert?.[props.blockName];
58
+ let candidates;
59
+ switch (relativePosition) {
60
+ case 'before':
61
+ case 'after':
62
+ // Any of the current block's siblings (with the right block type) qualifies
63
+ // as an auto-inserted block (inserted `before` or `after` the current one),
64
+ // as the block might've been auto-inserted and then moved around a bit by the user.
65
+ candidates = getBlock(_rootClientId)?.innerBlocks;
66
+ break;
67
+ case 'first_child':
68
+ case 'last_child':
69
+ // Any of the current block's child blocks (with the right block type) qualifies
70
+ // as an auto-inserted first or last child block, as the block might've been
71
+ // auto-inserted and then moved around a bit by the user.
72
+ candidates = getBlock(props.clientId).innerBlocks;
73
+ break;
74
+ }
75
+ const autoInsertedBlock = candidates?.find(({
76
+ name
77
+ }) => name === block.name);
78
+ if (autoInsertedBlock) {
79
+ clientIds[block.name] = autoInsertedBlock.clientId;
80
+ }
81
+
82
+ // TOOD: If no auto-inserted block was found in any of its designated locations,
83
+ // we want to check if it's present elsewhere in the block tree.
84
+ // If it is, we'd consider it manually inserted and would want to remove the
85
+ // corresponding toggle from the block inspector panel.
86
+
87
+ return clientIds;
88
+ }, {});
89
+ return {
90
+ blockIndex: getBlockIndex(props.clientId),
91
+ innerBlocksLength: getBlock(props.clientId)?.innerBlocks?.length,
92
+ rootClientId: _rootClientId,
93
+ autoInsertedBlockClientIds: _autoInsertedBlockClientIds
94
+ };
95
+ }, [autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId]);
96
+ const {
97
+ insertBlock,
98
+ removeBlock
99
+ } = useDispatch(blockEditorStore);
100
+ if (!autoInsertedBlocksForCurrentBlock.length) {
101
+ return null;
102
+ }
103
+ const insertBlockIntoDesignatedLocation = (block, relativePosition) => {
104
+ switch (relativePosition) {
105
+ case 'before':
106
+ case 'after':
107
+ insertBlock(block, relativePosition === 'after' ? blockIndex + 1 : blockIndex, rootClientId,
108
+ // Insert as a child of the current block's parent
109
+ false);
110
+ break;
111
+ case 'first_child':
112
+ case 'last_child':
113
+ insertBlock(block,
114
+ // TODO: It'd be great if insertBlock() would accept negative indices for insertion.
115
+ relativePosition === 'first_child' ? 0 : innerBlocksLength, props.clientId,
116
+ // Insert as a child of the current block.
117
+ false);
118
+ break;
119
+ }
120
+ };
121
+ return createElement(InspectorControls, null, createElement(PanelBody, {
122
+ title: __('Plugins'),
123
+ initialOpen: true
124
+ }, Object.keys(groupedAutoInsertedBlocks).map(vendor => {
125
+ return createElement(Fragment, {
126
+ key: vendor
127
+ }, createElement("h3", null, vendor), groupedAutoInsertedBlocks[vendor].map(block => {
128
+ // TODO: Display block icon.
129
+ // <BlockIcon icon={ block.icon } />
130
+
131
+ const checked = (block.name in autoInsertedBlockClientIds);
132
+ return createElement(ToggleControl, {
133
+ checked: checked,
134
+ key: block.title,
135
+ label: block.title,
136
+ onChange: () => {
137
+ if (!checked) {
138
+ // Create and insert block.
139
+ const relativePosition = block.autoInsert[props.blockName];
140
+ insertBlockIntoDesignatedLocation(createBlock(block.name), relativePosition);
141
+ return;
142
+ }
143
+
144
+ // Remove block.
145
+ const clientId = autoInsertedBlockClientIds[block.name];
146
+ removeBlock(clientId, false);
147
+ }
148
+ });
149
+ }));
150
+ })));
151
+ }
152
+ export const withAutoInsertingBlocks = createHigherOrderComponent(BlockEdit => {
153
+ return props => {
154
+ const blockEdit = createElement(BlockEdit, {
155
+ key: "edit",
156
+ ...props
157
+ });
158
+ return createElement(Fragment, null, blockEdit, createElement(AutoInsertingBlocksControl, {
159
+ blockName: props.name,
160
+ clientId: props.clientId
161
+ }));
162
+ };
163
+ }, 'withAutoInsertingBlocks');
164
+ if (window?.__experimentalAutoInsertingBlocks) {
165
+ addFilter('editor.BlockEdit', 'core/auto-inserting-blocks/with-inspector-control', withAutoInsertingBlocks);
166
+ }
167
+ //# sourceMappingURL=auto-inserting-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","addFilter","Fragment","PanelBody","ToggleControl","createHigherOrderComponent","createBlock","store","blocksStore","useDispatch","useSelect","InspectorControls","blockEditorStore","AutoInsertingBlocksControl","props","autoInsertedBlocksForCurrentBlock","groupedAutoInsertedBlocks","select","getBlockTypes","_autoInsertedBlocksForCurrentBlock","filter","autoInsert","blockName","_groupedAutoInsertedBlocks","reduce","groups","block","namespace","name","split","push","autoInsertedBlockClientIds","blockIndex","rootClientId","innerBlocksLength","getBlock","getBlockIndex","getBlockRootClientId","_rootClientId","clientId","_autoInsertedBlockClientIds","clientIds","relativePosition","candidates","innerBlocks","autoInsertedBlock","find","length","insertBlock","removeBlock","insertBlockIntoDesignatedLocation","createElement","title","initialOpen","Object","keys","map","vendor","key","checked","label","onChange","withAutoInsertingBlocks","BlockEdit","blockEdit","window","__experimentalAutoInsertingBlocks"],"sources":["@wordpress/block-editor/src/hooks/auto-inserting-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\nimport { Fragment } from '@wordpress/element';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\nimport { store as blockEditorStore } from '../store';\n\nfunction AutoInsertingBlocksControl( props ) {\n\tconst { autoInsertedBlocksForCurrentBlock, groupedAutoInsertedBlocks } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\t\tconst _autoInsertedBlocksForCurrentBlock =\n\t\t\t\t\tgetBlockTypes()?.filter(\n\t\t\t\t\t\t( { autoInsert } ) =>\n\t\t\t\t\t\t\tautoInsert && props.blockName in autoInsert\n\t\t\t\t\t);\n\n\t\t\t\t// Group by block namespace (i.e. prefix before the slash).\n\t\t\t\tconst _groupedAutoInsertedBlocks =\n\t\t\t\t\t_autoInsertedBlocksForCurrentBlock?.reduce(\n\t\t\t\t\t\t( groups, block ) => {\n\t\t\t\t\t\t\tconst [ namespace ] = block.name.split( '/' );\n\t\t\t\t\t\t\tif ( ! groups[ namespace ] ) {\n\t\t\t\t\t\t\t\tgroups[ namespace ] = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgroups[ namespace ].push( block );\n\t\t\t\t\t\t\treturn groups;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tautoInsertedBlocksForCurrentBlock:\n\t\t\t\t\t\t_autoInsertedBlocksForCurrentBlock,\n\t\t\t\t\tgroupedAutoInsertedBlocks: _groupedAutoInsertedBlocks,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ props.blockName ]\n\t\t);\n\n\tconst {\n\t\tautoInsertedBlockClientIds,\n\t\tblockIndex,\n\t\trootClientId,\n\t\tinnerBlocksLength,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockIndex, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _rootClientId = getBlockRootClientId( props.clientId );\n\n\t\t\tconst _autoInsertedBlockClientIds =\n\t\t\t\tautoInsertedBlocksForCurrentBlock.reduce(\n\t\t\t\t\t( clientIds, block ) => {\n\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\tblock?.autoInsert?.[ props.blockName ];\n\t\t\t\t\t\tlet candidates;\n\n\t\t\t\t\t\tswitch ( relativePosition ) {\n\t\t\t\t\t\t\tcase 'before':\n\t\t\t\t\t\t\tcase 'after':\n\t\t\t\t\t\t\t\t// Any of the current block's siblings (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted block (inserted `before` or `after` the current one),\n\t\t\t\t\t\t\t\t// as the block might've been auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates =\n\t\t\t\t\t\t\t\t\tgetBlock( _rootClientId )?.innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'first_child':\n\t\t\t\t\t\t\tcase 'last_child':\n\t\t\t\t\t\t\t\t// Any of the current block's child blocks (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted first or last child block, as the block might've been\n\t\t\t\t\t\t\t\t// auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates = getBlock(\n\t\t\t\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t\t\t\t).innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst autoInsertedBlock = candidates?.find(\n\t\t\t\t\t\t\t( { name } ) => name === block.name\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( autoInsertedBlock ) {\n\t\t\t\t\t\t\tclientIds[ block.name ] =\n\t\t\t\t\t\t\t\tautoInsertedBlock.clientId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// TOOD: If no auto-inserted block was found in any of its designated locations,\n\t\t\t\t\t\t// we want to check if it's present elsewhere in the block tree.\n\t\t\t\t\t\t// If it is, we'd consider it manually inserted and would want to remove the\n\t\t\t\t\t\t// corresponding toggle from the block inspector panel.\n\n\t\t\t\t\t\treturn clientIds;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tblockIndex: getBlockIndex( props.clientId ),\n\t\t\t\tinnerBlocksLength: getBlock( props.clientId )?.innerBlocks\n\t\t\t\t\t?.length,\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tautoInsertedBlockClientIds: _autoInsertedBlockClientIds,\n\t\t\t};\n\t\t},\n\t\t[ autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId ]\n\t);\n\n\tconst { insertBlock, removeBlock } = useDispatch( blockEditorStore );\n\n\tif ( ! autoInsertedBlocksForCurrentBlock.length ) {\n\t\treturn null;\n\t}\n\n\tconst insertBlockIntoDesignatedLocation = ( block, relativePosition ) => {\n\t\tswitch ( relativePosition ) {\n\t\t\tcase 'before':\n\t\t\tcase 'after':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\trelativePosition === 'after' ? blockIndex + 1 : blockIndex,\n\t\t\t\t\trootClientId, // Insert as a child of the current block's parent\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase 'first_child':\n\t\t\tcase 'last_child':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t// TODO: It'd be great if insertBlock() would accept negative indices for insertion.\n\t\t\t\t\trelativePosition === 'first_child' ? 0 : innerBlocksLength,\n\t\t\t\t\tprops.clientId, // Insert as a child of the current block.\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Plugins' ) } initialOpen={ true }>\n\t\t\t\t{ Object.keys( groupedAutoInsertedBlocks ).map( ( vendor ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Fragment key={ vendor }>\n\t\t\t\t\t\t\t<h3>{ vendor }</h3>\n\t\t\t\t\t\t\t{ groupedAutoInsertedBlocks[ vendor ].map(\n\t\t\t\t\t\t\t\t( block ) => {\n\t\t\t\t\t\t\t\t\t// TODO: Display block icon.\n\t\t\t\t\t\t\t\t\t// <BlockIcon icon={ block.icon } />\n\n\t\t\t\t\t\t\t\t\tconst checked =\n\t\t\t\t\t\t\t\t\t\tblock.name in\n\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t\t\tchecked={ checked }\n\t\t\t\t\t\t\t\t\t\t\tkey={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( ! checked ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Create and insert block.\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.autoInsert[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.blockName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\tinsertBlockIntoDesignatedLocation(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trelativePosition\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Remove block.\n\t\t\t\t\t\t\t\t\t\t\t\tconst clientId =\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\tremoveBlock( clientId, false );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n\nexport const withAutoInsertingBlocks = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst blockEdit = <BlockEdit key=\"edit\" { ...props } />;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ blockEdit }\n\t\t\t\t\t<AutoInsertingBlocksControl\n\t\t\t\t\t\tblockName={ props.name }\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t};\n\t},\n\t'withAutoInsertingBlocks'\n);\n\nif ( window?.__experimentalAutoInsertingBlocks ) {\n\taddFilter(\n\t\t'editor.BlockEdit',\n\t\t'core/auto-inserting-blocks/with-inspector-control',\n\t\twithAutoInsertingBlocks\n\t);\n}\n"],"mappings":"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"}
@@ -22,6 +22,7 @@ import './metadata';
22
22
  import './metadata-name';
23
23
  import './behaviors';
24
24
  import './custom-fields';
25
+ import './auto-inserting-blocks';
25
26
  export { useCustomSides } from './dimensions';
26
27
  export { useLayoutClasses, useLayoutStyles } from './layout';
27
28
  export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
@@ -1 +1 @@
1
- {"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './behaviors';\nimport './custom-fields';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,aAAa;AACpB,OAAO,iBAAiB;AAExB,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB"}
1
+ {"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './behaviors';\nimport './custom-fields';\nimport './auto-inserting-blocks';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,aAAa;AACpB,OAAO,iBAAiB;AACxB,OAAO,yBAAyB;AAEhC,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB"}
@@ -23,6 +23,7 @@ import { TypographyPanel, TYPOGRAPHY_SUPPORT_KEY, TYPOGRAPHY_SUPPORT_KEYS } from
23
23
  import { DIMENSIONS_SUPPORT_KEY, SPACING_SUPPORT_KEY, DimensionsPanel } from './dimensions';
24
24
  import useDisplayBlockControls from '../components/use-display-block-controls';
25
25
  import { shouldSkipSerialization } from './utils';
26
+ import { scopeSelector } from '../components/global-styles/utils';
26
27
  import { useBlockEditingMode } from '../components/block-editing-mode';
27
28
  const styleSupportKeys = [...TYPOGRAPHY_SUPPORT_KEYS, BORDER_SUPPORT_KEY, COLOR_SUPPORT_KEY, DIMENSIONS_SUPPORT_KEY, SPACING_SUPPORT_KEY];
28
29
  const hasStyleSupport = nameOrType => styleSupportKeys.some(key => hasBlockSupport(nameOrType, key));
@@ -319,6 +320,19 @@ export const withBlockControls = createHigherOrderComponent(BlockEdit => props =
319
320
  }));
320
321
  }, 'withToolbarControls');
321
322
 
323
+ // Defines which element types are supported, including their hover styles or
324
+ // any other elements that have been included under a single element type
325
+ // e.g. heading and h1-h6.
326
+ const elementTypes = [{
327
+ elementType: 'button'
328
+ }, {
329
+ elementType: 'link',
330
+ pseudo: [':hover']
331
+ }, {
332
+ elementType: 'heading',
333
+ elements: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
334
+ }];
335
+
322
336
  /**
323
337
  * Override the default block element to include elements styles.
324
338
  *
@@ -327,32 +341,60 @@ export const withBlockControls = createHigherOrderComponent(BlockEdit => props =
327
341
  */
328
342
  const withElementsStyles = createHigherOrderComponent(BlockListBlock => props => {
329
343
  const blockElementsContainerIdentifier = `wp-elements-${useInstanceId(BlockListBlock)}`;
330
- const skipLinkColorSerialization = shouldSkipSerialization(props.name, COLOR_SUPPORT_KEY, 'link');
344
+
345
+ // The .editor-styles-wrapper selector is required on elements styles. As it is
346
+ // added to all other editor styles, not providing it causes reset and global
347
+ // styles to override element styles because of higher specificity.
348
+ const baseElementSelector = `.editor-styles-wrapper .${blockElementsContainerIdentifier}`;
349
+ const blockElementStyles = props.attributes.style?.elements;
331
350
  const styles = useMemo(() => {
332
- // The .editor-styles-wrapper selector is required on elements styles. As it is
333
- // added to all other editor styles, not providing it causes reset and global
334
- // styles to override element styles because of higher specificity.
335
- const elements = [{
336
- styles: !skipLinkColorSerialization ? props.attributes.style?.elements?.link : undefined,
337
- selector: `.editor-styles-wrapper .${blockElementsContainerIdentifier} ${ELEMENTS.link}`
338
- }, {
339
- styles: !skipLinkColorSerialization ? props.attributes.style?.elements?.link?.[':hover'] : undefined,
340
- selector: `.editor-styles-wrapper .${blockElementsContainerIdentifier} ${ELEMENTS.link}:hover`
341
- }];
342
- const elementCssRules = [];
343
- for (const {
344
- styles: elementStyles,
345
- selector
346
- } of elements) {
351
+ if (!blockElementStyles) {
352
+ return;
353
+ }
354
+ const elementCSSRules = [];
355
+ elementTypes.forEach(({
356
+ elementType,
357
+ pseudo,
358
+ elements
359
+ }) => {
360
+ const skipSerialization = shouldSkipSerialization(props.name, COLOR_SUPPORT_KEY, elementType);
361
+ if (skipSerialization) {
362
+ return;
363
+ }
364
+ const elementStyles = blockElementStyles?.[elementType];
365
+
366
+ // Process primary element type styles.
347
367
  if (elementStyles) {
348
- const cssRule = compileCSS(elementStyles, {
368
+ const selector = scopeSelector(baseElementSelector, ELEMENTS[elementType]);
369
+ elementCSSRules.push(compileCSS(elementStyles, {
349
370
  selector
371
+ }));
372
+
373
+ // Process any interactive states for the element type.
374
+ if (pseudo) {
375
+ pseudo.forEach(pseudoSelector => {
376
+ if (elementStyles[pseudoSelector]) {
377
+ elementCSSRules.push(compileCSS(elementStyles[pseudoSelector], {
378
+ selector: scopeSelector(baseElementSelector, `${ELEMENTS[elementType]}${pseudoSelector}`)
379
+ }));
380
+ }
381
+ });
382
+ }
383
+ }
384
+
385
+ // Process related elements e.g. h1-h6 for headings
386
+ if (elements) {
387
+ elements.forEach(element => {
388
+ if (blockElementStyles[element]) {
389
+ elementCSSRules.push(compileCSS(blockElementStyles[element], {
390
+ selector: scopeSelector(baseElementSelector, ELEMENTS[element])
391
+ }));
392
+ }
350
393
  });
351
- elementCssRules.push(cssRule);
352
394
  }
353
- }
354
- return elementCssRules.length > 0 ? elementCssRules.join('') : undefined;
355
- }, [props.attributes.style?.elements, blockElementsContainerIdentifier, skipLinkColorSerialization]);
395
+ });
396
+ return elementCSSRules.length > 0 ? elementCSSRules.join('') : undefined;
397
+ }, [baseElementSelector, blockElementStyles, props.name]);
356
398
  const element = useContext(BlockList.__unstableElementContext);
357
399
  return createElement(Fragment, null, styles && element && createPortal(createElement("style", {
358
400
  dangerouslySetInnerHTML: {