@wordpress/block-editor 12.8.0 → 12.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +30 -12
- package/build/components/block-controls/slot.js +1 -1
- package/build/components/block-controls/slot.js.map +1 -1
- package/build/components/block-controls/slot.native.js +1 -1
- package/build/components/block-controls/slot.native.js.map +1 -1
- package/build/components/block-controls/use-has-block-controls.js +1 -1
- package/build/components/block-controls/use-has-block-controls.js.map +1 -1
- package/build/components/block-list/block-outline.native.js +4 -3
- package/build/components/block-list/block-outline.native.js.map +1 -1
- package/build/components/block-list/index.js +4 -3
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +27 -1
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-nav-mode-exit.js +1 -1
- package/build/components/block-list/use-block-props/use-nav-mode-exit.js.map +1 -1
- package/build/components/block-lock/menu-item.js +3 -1
- package/build/components/block-lock/menu-item.js.map +1 -1
- package/build/components/block-lock/toolbar.js +3 -1
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-popover/inbetween.js +4 -5
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +3 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/color-style-selector/index.js +1 -1
- package/build/components/color-style-selector/index.js.map +1 -1
- package/build/components/iframe/index.js +1 -0
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +7 -4
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +10 -8
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inspector-controls/fill.js +1 -1
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/fill.native.js +1 -1
- package/build/components/inspector-controls/fill.native.js.map +1 -1
- package/build/components/inspector-controls/slot.js +1 -1
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/inspector-controls/slot.native.js +1 -1
- package/build/components/inspector-controls/slot.native.js.map +1 -1
- package/build/components/link-control/index.js +1 -7
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +48 -7
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +3 -3
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js +14 -8
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-images.js +5 -4
- package/build/components/list-view/use-list-view-images.js.map +1 -1
- package/build/components/preview-options/index.js +3 -1
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/provider/index.js +3 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/rich-text/use-remove-browser-shortcuts.js +1 -1
- package/build/components/rich-text/use-remove-browser-shortcuts.js.map +1 -1
- package/build/components/use-block-commands/index.js +74 -63
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/components/warning/index.js +1 -1
- package/build/components/warning/index.js.map +1 -1
- package/build/hooks/auto-inserting-blocks.js +174 -0
- package/build/hooks/auto-inserting-blocks.js.map +1 -0
- package/build/hooks/index.js +1 -0
- package/build/hooks/index.js.map +1 -1
- package/build/store/selectors.js +1 -1
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-controls/slot.js +1 -1
- package/build-module/components/block-controls/slot.js.map +1 -1
- package/build-module/components/block-controls/slot.native.js +1 -1
- package/build-module/components/block-controls/slot.native.js.map +1 -1
- package/build-module/components/block-controls/use-has-block-controls.js +1 -1
- package/build-module/components/block-controls/use-has-block-controls.js.map +1 -1
- package/build-module/components/block-list/block-outline.native.js +4 -3
- package/build-module/components/block-list/block-outline.native.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +27 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js +1 -1
- package/build-module/components/block-list/use-block-props/use-nav-mode-exit.js.map +1 -1
- package/build-module/components/block-lock/menu-item.js +3 -1
- package/build-module/components/block-lock/menu-item.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +3 -1
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +4 -5
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +3 -2
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/color-style-selector/index.js +1 -1
- package/build-module/components/color-style-selector/index.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -0
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +8 -4
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +11 -8
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +1 -1
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/fill.native.js +1 -1
- package/build-module/components/inspector-controls/fill.native.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +1 -1
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/inspector-controls/slot.native.js +1 -1
- package/build-module/components/inspector-controls/slot.native.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -7
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +48 -7
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +3 -3
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js +14 -8
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-images.js +5 -4
- package/build-module/components/list-view/use-list-view-images.js.map +1 -1
- package/build-module/components/preview-options/index.js +3 -1
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/provider/index.js +3 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js +1 -1
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +74 -63
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/components/warning/index.js +2 -2
- package/build-module/components/warning/index.js.map +1 -1
- package/build-module/hooks/auto-inserting-blocks.js +167 -0
- package/build-module/hooks/auto-inserting-blocks.js.map +1 -0
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/store/selectors.js +1 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +8 -7
- package/build-style/content.css +8 -7
- package/build-style/style-rtl.css +0 -3
- package/build-style/style.css +0 -3
- package/package.json +32 -32
- package/src/components/block-icon/test/index.js +2 -2
- package/src/components/block-list/block-outline.native.js +5 -2
- package/src/components/block-list/content.scss +2 -3
- package/src/components/block-list/index.js +4 -3
- package/src/components/block-list/use-block-props/index.js +26 -0
- package/src/components/block-list/use-block-props/use-nav-mode-exit.js +1 -1
- package/src/components/block-lock/menu-item.js +2 -0
- package/src/components/block-lock/toolbar.js +3 -1
- package/src/components/block-popover/inbetween.js +4 -3
- package/src/components/block-popover/index.js +3 -2
- package/src/components/block-styles/style.scss +0 -3
- package/src/components/button-block-appender/content.scss +8 -0
- package/src/components/color-style-selector/index.js +1 -1
- package/src/components/iframe/index.js +1 -0
- package/src/components/inserter/reusable-blocks-tab.native.js +7 -2
- package/src/components/inserter/search-results.native.js +13 -9
- package/src/components/link-control/index.js +1 -5
- package/src/components/link-control/test/index.js +1 -0
- package/src/components/list-view/block-select-button.js +67 -15
- package/src/components/list-view/drop-indicator.js +4 -5
- package/src/components/list-view/index.js +19 -13
- package/src/components/list-view/use-list-view-images.js +8 -4
- package/src/components/observe-typing/README.md +2 -2
- package/src/components/preview-options/index.js +2 -0
- package/src/components/provider/index.js +8 -1
- package/src/components/rich-text/use-remove-browser-shortcuts.js +1 -1
- package/src/components/use-block-commands/index.js +92 -88
- package/src/components/warning/index.js +2 -2
- package/src/hooks/auto-inserting-blocks.js +232 -0
- package/src/hooks/index.js +1 -0
- package/src/store/selectors.js +1 -1
- package/build/utils/pre-parse-patterns.js +0 -68
- package/build/utils/pre-parse-patterns.js.map +0 -1
- package/build-module/utils/pre-parse-patterns.js +0 -61
- package/build-module/utils/pre-parse-patterns.js.map +0 -1
- package/src/components/url-popover/test/__snapshots__/index.js.snap +0 -133
- package/src/components/url-popover/test/index.js +0 -75
- 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
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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 {
|
|
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:
|
|
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","__","
|
|
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;
|
|
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"}
|
|
@@ -1715,7 +1715,7 @@ export const getInserterItems = createSelector((state, rootClientId = null) => {
|
|
|
1715
1715
|
initialAttributes: {
|
|
1716
1716
|
ref: reusableBlock.id
|
|
1717
1717
|
},
|
|
1718
|
-
title: reusableBlock.title
|
|
1718
|
+
title: reusableBlock.title?.raw,
|
|
1719
1719
|
icon,
|
|
1720
1720
|
category: 'reusable',
|
|
1721
1721
|
keywords: ['reusable'],
|