@wordpress/block-editor 15.7.1-next.2f1c7c01b.0 → 15.8.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 +2 -0
- package/build/components/block-card/index.js +76 -34
- package/build/components/block-card/index.js.map +2 -2
- package/build/components/block-inspector/edit-contents.js +72 -0
- package/build/components/block-inspector/edit-contents.js.map +7 -0
- package/build/components/block-inspector/index.js +32 -9
- package/build/components/block-inspector/index.js.map +3 -3
- package/build/components/block-list/index.js +9 -9
- package/build/components/block-list/index.js.map +2 -2
- package/build/components/block-switcher/index.js +24 -123
- package/build/components/block-switcher/index.js.map +3 -3
- package/build/components/block-toolbar/block-toolbar-icon.js +175 -0
- package/build/components/block-toolbar/block-toolbar-icon.js.map +7 -0
- package/build/components/block-toolbar/index.js +51 -53
- package/build/components/block-toolbar/index.js.map +3 -3
- package/build/components/block-toolbar/pattern-overrides-dropdown.js +93 -0
- package/build/components/block-toolbar/pattern-overrides-dropdown.js.map +7 -0
- package/build/components/block-tools/index.js +10 -3
- package/build/components/block-tools/index.js.map +2 -2
- package/build/components/border-radius-control/utils.js +7 -3
- package/build/components/border-radius-control/utils.js.map +2 -2
- package/build/components/content-lock/modify-content-lock-menu-item.js +3 -3
- package/build/components/content-lock/modify-content-lock-menu-item.js.map +2 -2
- package/build/components/global-styles/border-panel.js +11 -7
- package/build/components/global-styles/border-panel.js.map +2 -2
- package/build/components/global-styles/color-panel.js +35 -27
- package/build/components/global-styles/color-panel.js.map +2 -2
- package/build/components/global-styles/typography-panel.js +3 -2
- package/build/components/global-styles/typography-panel.js.map +2 -2
- package/build/components/inserter/media-tab/media-tab.js +2 -1
- package/build/components/inserter/media-tab/media-tab.js.map +2 -2
- package/build/components/inspector-controls-tabs/index.js +2 -1
- package/build/components/inspector-controls-tabs/index.js.map +2 -2
- package/build/components/inspector-controls-tabs/styles-tab.js +55 -1
- package/build/components/inspector-controls-tabs/styles-tab.js.map +3 -3
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
- package/build/components/keyboard-shortcuts/index.js +8 -0
- package/build/components/keyboard-shortcuts/index.js.map +2 -2
- package/build/components/rich-text/index.js +1 -0
- package/build/components/rich-text/index.js.map +2 -2
- package/build/hooks/border.js +10 -5
- package/build/hooks/border.js.map +3 -3
- package/build/hooks/color.js +31 -9
- package/build/hooks/color.js.map +3 -3
- package/build/hooks/content-lock-ui.js +4 -5
- package/build/hooks/content-lock-ui.js.map +2 -2
- package/build/hooks/dimensions.js +9 -4
- package/build/hooks/dimensions.js.map +2 -2
- package/build/hooks/fit-text.js +19 -75
- package/build/hooks/fit-text.js.map +3 -3
- package/build/hooks/font-size.js +5 -2
- package/build/hooks/font-size.js.map +2 -2
- package/build/hooks/layout.js +4 -1
- package/build/hooks/layout.js.map +2 -2
- package/build/hooks/spacing-visualizer.js +5 -0
- package/build/hooks/spacing-visualizer.js.map +2 -2
- package/build/hooks/typography.js +23 -14
- package/build/hooks/typography.js.map +3 -3
- package/build/store/private-selectors.js +21 -1
- package/build/store/private-selectors.js.map +2 -2
- package/build/store/reducer.js +4 -0
- package/build/store/reducer.js.map +2 -2
- package/build/store/selectors.js +9 -3
- package/build/store/selectors.js.map +2 -2
- package/build/utils/fit-text-frontend.js +1 -0
- package/build/utils/fit-text-frontend.js.map +2 -2
- package/build/utils/fit-text-utils.js +1 -1
- package/build/utils/fit-text-utils.js.map +1 -1
- package/build-module/components/block-card/index.js +82 -32
- package/build-module/components/block-card/index.js.map +2 -2
- package/build-module/components/block-inspector/edit-contents.js +51 -0
- package/build-module/components/block-inspector/edit-contents.js.map +7 -0
- package/build-module/components/block-inspector/index.js +32 -9
- package/build-module/components/block-inspector/index.js.map +2 -2
- package/build-module/components/block-list/index.js +11 -11
- package/build-module/components/block-list/index.js.map +2 -2
- package/build-module/components/block-switcher/index.js +24 -124
- package/build-module/components/block-switcher/index.js.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.js +144 -0
- package/build-module/components/block-toolbar/block-toolbar-icon.js.map +7 -0
- package/build-module/components/block-toolbar/index.js +51 -53
- package/build-module/components/block-toolbar/index.js.map +2 -2
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.js +76 -0
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.js.map +7 -0
- package/build-module/components/block-tools/index.js +10 -3
- package/build-module/components/block-tools/index.js.map +2 -2
- package/build-module/components/border-radius-control/utils.js +7 -3
- package/build-module/components/border-radius-control/utils.js.map +2 -2
- package/build-module/components/content-lock/modify-content-lock-menu-item.js +3 -3
- package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +2 -2
- package/build-module/components/global-styles/border-panel.js +11 -7
- package/build-module/components/global-styles/border-panel.js.map +2 -2
- package/build-module/components/global-styles/color-panel.js +34 -27
- package/build-module/components/global-styles/color-panel.js.map +2 -2
- package/build-module/components/global-styles/typography-panel.js +3 -2
- package/build-module/components/global-styles/typography-panel.js.map +2 -2
- package/build-module/components/inserter/media-tab/media-tab.js +2 -1
- package/build-module/components/inserter/media-tab/media-tab.js.map +2 -2
- package/build-module/components/inspector-controls-tabs/index.js +2 -1
- package/build-module/components/inspector-controls-tabs/index.js.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.js +55 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
- package/build-module/components/keyboard-shortcuts/index.js +8 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +2 -2
- package/build-module/components/rich-text/index.js +1 -0
- package/build-module/components/rich-text/index.js.map +2 -2
- package/build-module/hooks/border.js +10 -5
- package/build-module/hooks/border.js.map +3 -3
- package/build-module/hooks/color.js +31 -9
- package/build-module/hooks/color.js.map +3 -3
- package/build-module/hooks/content-lock-ui.js +4 -5
- package/build-module/hooks/content-lock-ui.js.map +2 -2
- package/build-module/hooks/dimensions.js +9 -4
- package/build-module/hooks/dimensions.js.map +2 -2
- package/build-module/hooks/fit-text.js +18 -66
- package/build-module/hooks/fit-text.js.map +2 -2
- package/build-module/hooks/font-size.js +5 -2
- package/build-module/hooks/font-size.js.map +2 -2
- package/build-module/hooks/layout.js +4 -1
- package/build-module/hooks/layout.js.map +2 -2
- package/build-module/hooks/spacing-visualizer.js +5 -0
- package/build-module/hooks/spacing-visualizer.js.map +2 -2
- package/build-module/hooks/typography.js +23 -14
- package/build-module/hooks/typography.js.map +3 -3
- package/build-module/store/private-selectors.js +20 -1
- package/build-module/store/private-selectors.js.map +2 -2
- package/build-module/store/reducer.js +4 -0
- package/build-module/store/reducer.js.map +2 -2
- package/build-module/store/selectors.js +9 -3
- package/build-module/store/selectors.js.map +2 -2
- package/build-module/utils/fit-text-frontend.js +1 -0
- package/build-module/utils/fit-text-frontend.js.map +2 -2
- package/build-module/utils/fit-text-utils.js +1 -1
- package/build-module/utils/fit-text-utils.js.map +1 -1
- package/build-style/style-rtl.css +31 -71
- package/build-style/style.css +31 -71
- package/package.json +37 -37
- package/src/components/block-card/index.js +95 -38
- package/src/components/block-card/style.scss +17 -1
- package/src/components/block-inspector/edit-contents.js +64 -0
- package/src/components/block-inspector/index.js +35 -13
- package/src/components/block-inspector/style.scss +6 -3
- package/src/components/block-list/index.js +11 -9
- package/src/components/block-switcher/index.js +51 -180
- package/src/components/block-switcher/style.scss +0 -70
- package/src/components/block-switcher/test/index.js +17 -18
- package/src/components/block-toolbar/block-toolbar-icon.js +173 -0
- package/src/components/block-toolbar/index.js +50 -52
- package/src/components/block-toolbar/pattern-overrides-dropdown.js +99 -0
- package/src/components/block-toolbar/style.scss +21 -21
- package/src/components/block-toolbar/test/block-toolbar-icon.js +182 -0
- package/src/components/block-tools/index.js +11 -1
- package/src/components/border-radius-control/test/utils.js +90 -0
- package/src/components/border-radius-control/utils.js +7 -3
- package/src/components/content-lock/modify-content-lock-menu-item.js +9 -3
- package/src/components/global-styles/border-panel.js +11 -7
- package/src/components/global-styles/color-panel.js +32 -26
- package/src/components/global-styles/typography-panel.js +2 -1
- package/src/components/inserter/media-tab/media-tab.js +7 -1
- package/src/components/inspector-controls-tabs/index.js +1 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +58 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -1
- package/src/components/keyboard-shortcuts/index.js +9 -0
- package/src/components/rich-text/index.js +1 -0
- package/src/hooks/border.js +12 -6
- package/src/hooks/color.js +40 -13
- package/src/hooks/content-lock-ui.js +9 -6
- package/src/hooks/dimensions.js +25 -17
- package/src/hooks/fit-text.js +23 -84
- package/src/hooks/font-size.js +7 -2
- package/src/hooks/layout.js +11 -7
- package/src/hooks/spacing-visualizer.js +9 -1
- package/src/hooks/typography.js +24 -18
- package/src/store/private-selectors.js +26 -1
- package/src/store/reducer.js +6 -0
- package/src/store/selectors.js +17 -3
- package/src/utils/fit-text-frontend.js +1 -0
- package/src/utils/fit-text-utils.js +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-inspector/edit-contents-button.js +0 -61
- package/build/components/block-inspector/edit-contents-button.js.map +0 -7
- package/build-module/components/block-inspector/edit-contents-button.js +0 -40
- package/build-module/components/block-inspector/edit-contents-button.js.map +0 -7
- package/src/components/block-inspector/edit-contents-button.js +0 -46
|
@@ -38,35 +38,38 @@ var import_i18n = require("@wordpress/i18n");
|
|
|
38
38
|
var import_components = require("@wordpress/components");
|
|
39
39
|
var import_blocks = require("@wordpress/blocks");
|
|
40
40
|
var import_data = require("@wordpress/data");
|
|
41
|
-
var import_icons = require("@wordpress/icons");
|
|
42
|
-
var import_preferences = require("@wordpress/preferences");
|
|
43
41
|
var import_store = require("../../store");
|
|
44
|
-
var import_block_icon = __toESM(require("../block-icon"));
|
|
45
42
|
var import_block_transformations_menu = __toESM(require("./block-transformations-menu"));
|
|
46
43
|
var import_block_variation_transformations = require("./block-variation-transformations");
|
|
47
44
|
var import_block_styles_menu = __toESM(require("./block-styles-menu"));
|
|
48
45
|
var import_pattern_transformations_menu = __toESM(require("./pattern-transformations-menu"));
|
|
49
|
-
var import_use_block_display_title = __toESM(require("../block-title/use-block-display-title"));
|
|
50
|
-
var import_lock_unlock = require("../../lock-unlock");
|
|
51
46
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
|
-
function BlockSwitcherDropdownMenuContents({
|
|
53
|
-
onClose,
|
|
54
|
-
clientIds,
|
|
55
|
-
hasBlockStyles,
|
|
56
|
-
canRemove
|
|
57
|
-
}) {
|
|
47
|
+
function BlockSwitcherDropdownMenuContents({ onClose, clientIds }) {
|
|
58
48
|
const { replaceBlocks, multiSelect, updateBlockAttributes } = (0, import_data.useDispatch)(import_store.store);
|
|
59
|
-
const {
|
|
49
|
+
const {
|
|
50
|
+
possibleBlockTransformations,
|
|
51
|
+
patterns,
|
|
52
|
+
blocks,
|
|
53
|
+
isUsingBindings,
|
|
54
|
+
canRemove,
|
|
55
|
+
hasBlockStyles
|
|
56
|
+
} = (0, import_data.useSelect)(
|
|
60
57
|
(select) => {
|
|
61
58
|
const {
|
|
62
59
|
getBlockAttributes,
|
|
63
60
|
getBlocksByClientId,
|
|
64
61
|
getBlockRootClientId,
|
|
65
62
|
getBlockTransformItems,
|
|
66
|
-
__experimentalGetPatternTransformItems
|
|
63
|
+
__experimentalGetPatternTransformItems,
|
|
64
|
+
canRemoveBlocks,
|
|
65
|
+
getBlockName
|
|
67
66
|
} = select(import_store.store);
|
|
67
|
+
const { getBlockStyles } = select(import_blocks.store);
|
|
68
68
|
const rootClientId = getBlockRootClientId(clientIds[0]);
|
|
69
69
|
const _blocks = getBlocksByClientId(clientIds);
|
|
70
|
+
const _isSingleBlock = clientIds.length === 1;
|
|
71
|
+
const _blockName = _isSingleBlock && getBlockName(clientIds[0]);
|
|
72
|
+
const _hasBlockStyles = _isSingleBlock && !!getBlockStyles(_blockName)?.length;
|
|
70
73
|
return {
|
|
71
74
|
blocks: _blocks,
|
|
72
75
|
possibleBlockTransformations: getBlockTransformItems(
|
|
@@ -79,7 +82,9 @@ function BlockSwitcherDropdownMenuContents({
|
|
|
79
82
|
),
|
|
80
83
|
isUsingBindings: clientIds.every(
|
|
81
84
|
(clientId) => !!getBlockAttributes(clientId)?.metadata?.bindings
|
|
82
|
-
)
|
|
85
|
+
),
|
|
86
|
+
canRemove: canRemoveBlocks(clientIds),
|
|
87
|
+
hasBlockStyles: _hasBlockStyles
|
|
83
88
|
};
|
|
84
89
|
},
|
|
85
90
|
[clientIds]
|
|
@@ -168,103 +173,8 @@ function BlockSwitcherDropdownMenuContents({
|
|
|
168
173
|
isUsingBindings && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalText, { className: "block-editor-block-switcher__binding-indicator", children: connectedBlockDescription }) })
|
|
169
174
|
] });
|
|
170
175
|
}
|
|
171
|
-
var BlockSwitcher = ({ clientIds }) => {
|
|
172
|
-
const {
|
|
173
|
-
hasContentOnlyLocking,
|
|
174
|
-
canRemove,
|
|
175
|
-
hasBlockStyles,
|
|
176
|
-
icon,
|
|
177
|
-
invalidBlocks,
|
|
178
|
-
isReusable,
|
|
179
|
-
isTemplate,
|
|
180
|
-
isDisabled,
|
|
181
|
-
isSectionInSelection
|
|
182
|
-
} = (0, import_data.useSelect)(
|
|
183
|
-
(select) => {
|
|
184
|
-
const {
|
|
185
|
-
getTemplateLock,
|
|
186
|
-
getBlocksByClientId,
|
|
187
|
-
getBlockAttributes,
|
|
188
|
-
canRemoveBlocks,
|
|
189
|
-
getBlockEditingMode,
|
|
190
|
-
isSectionBlock
|
|
191
|
-
} = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
192
|
-
const { getBlockStyles, getBlockType, getActiveBlockVariation } = select(import_blocks.store);
|
|
193
|
-
const _blocks = getBlocksByClientId(clientIds);
|
|
194
|
-
if (!_blocks.length || _blocks.some((block) => !block)) {
|
|
195
|
-
return { invalidBlocks: true };
|
|
196
|
-
}
|
|
197
|
-
const [{ name: firstBlockName }] = _blocks;
|
|
198
|
-
const _isSingleBlockSelected = _blocks.length === 1;
|
|
199
|
-
const blockType = getBlockType(firstBlockName);
|
|
200
|
-
const editingMode = getBlockEditingMode(clientIds[0]);
|
|
201
|
-
let _icon;
|
|
202
|
-
let _hasTemplateLock;
|
|
203
|
-
if (_isSingleBlockSelected) {
|
|
204
|
-
const match = getActiveBlockVariation(
|
|
205
|
-
firstBlockName,
|
|
206
|
-
getBlockAttributes(clientIds[0])
|
|
207
|
-
);
|
|
208
|
-
_icon = match?.icon || blockType.icon;
|
|
209
|
-
_hasTemplateLock = getTemplateLock(clientIds[0]) === "contentOnly";
|
|
210
|
-
} else {
|
|
211
|
-
const isSelectionOfSameType = new Set(_blocks.map(({ name }) => name)).size === 1;
|
|
212
|
-
_hasTemplateLock = clientIds.some(
|
|
213
|
-
(id) => getTemplateLock(id) === "contentOnly"
|
|
214
|
-
);
|
|
215
|
-
_icon = isSelectionOfSameType ? blockType.icon : import_icons.copy;
|
|
216
|
-
}
|
|
217
|
-
const _isSectionInSelection = clientIds.some(
|
|
218
|
-
(id) => isSectionBlock(id)
|
|
219
|
-
);
|
|
220
|
-
return {
|
|
221
|
-
canRemove: canRemoveBlocks(clientIds),
|
|
222
|
-
hasBlockStyles: _isSingleBlockSelected && !!getBlockStyles(firstBlockName)?.length,
|
|
223
|
-
icon: _icon,
|
|
224
|
-
isReusable: _isSingleBlockSelected && (0, import_blocks.isReusableBlock)(_blocks[0]),
|
|
225
|
-
isTemplate: _isSingleBlockSelected && (0, import_blocks.isTemplatePart)(_blocks[0]),
|
|
226
|
-
hasContentOnlyLocking: _hasTemplateLock,
|
|
227
|
-
isDisabled: editingMode !== "default",
|
|
228
|
-
isSectionInSelection: _isSectionInSelection
|
|
229
|
-
};
|
|
230
|
-
},
|
|
231
|
-
[clientIds]
|
|
232
|
-
);
|
|
233
|
-
const blockTitle = (0, import_use_block_display_title.default)({
|
|
234
|
-
clientId: clientIds?.[0],
|
|
235
|
-
maximumLength: 35
|
|
236
|
-
});
|
|
237
|
-
const showIconLabels = (0, import_data.useSelect)(
|
|
238
|
-
(select) => select(import_preferences.store).get("core", "showIconLabels"),
|
|
239
|
-
[]
|
|
240
|
-
);
|
|
241
|
-
if (invalidBlocks) {
|
|
242
|
-
return null;
|
|
243
|
-
}
|
|
176
|
+
var BlockSwitcher = ({ children, clientIds, label, text }) => {
|
|
244
177
|
const isSingleBlock = clientIds.length === 1;
|
|
245
|
-
const blockSwitcherLabel = isSingleBlock ? blockTitle : (0, import_i18n.__)("Multiple blocks selected");
|
|
246
|
-
const blockIndicatorText = (isReusable || isTemplate) && !showIconLabels && blockTitle ? blockTitle : void 0;
|
|
247
|
-
const hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && isSectionInSelection;
|
|
248
|
-
const hideDropdown = hideTransformsForSections || isDisabled || !hasBlockStyles && !canRemove || hasContentOnlyLocking;
|
|
249
|
-
if (hideDropdown) {
|
|
250
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
251
|
-
import_components.ToolbarButton,
|
|
252
|
-
{
|
|
253
|
-
disabled: true,
|
|
254
|
-
className: "block-editor-block-switcher__no-switcher-icon",
|
|
255
|
-
title: blockSwitcherLabel,
|
|
256
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
257
|
-
import_block_icon.default,
|
|
258
|
-
{
|
|
259
|
-
className: "block-editor-block-switcher__toggle",
|
|
260
|
-
icon,
|
|
261
|
-
showColors: true
|
|
262
|
-
}
|
|
263
|
-
),
|
|
264
|
-
text: blockIndicatorText
|
|
265
|
-
}
|
|
266
|
-
) });
|
|
267
|
-
}
|
|
268
178
|
const blockSwitcherDescription = isSingleBlock ? (0, import_i18n.__)("Change block type or style") : (0, import_i18n.sprintf)(
|
|
269
179
|
/* translators: %d: number of blocks. */
|
|
270
180
|
(0, import_i18n._n)(
|
|
@@ -278,20 +188,13 @@ var BlockSwitcher = ({ clientIds }) => {
|
|
|
278
188
|
import_components.DropdownMenu,
|
|
279
189
|
{
|
|
280
190
|
className: "block-editor-block-switcher",
|
|
281
|
-
label
|
|
191
|
+
label,
|
|
282
192
|
popoverProps: {
|
|
283
193
|
placement: "bottom-start",
|
|
284
194
|
className: "block-editor-block-switcher__popover"
|
|
285
195
|
},
|
|
286
|
-
icon:
|
|
287
|
-
|
|
288
|
-
{
|
|
289
|
-
className: "block-editor-block-switcher__toggle",
|
|
290
|
-
icon,
|
|
291
|
-
showColors: true
|
|
292
|
-
}
|
|
293
|
-
),
|
|
294
|
-
text: blockIndicatorText,
|
|
196
|
+
icon: children,
|
|
197
|
+
text,
|
|
295
198
|
toggleProps: {
|
|
296
199
|
description: blockSwitcherDescription,
|
|
297
200
|
...toggleProps
|
|
@@ -301,9 +204,7 @@ var BlockSwitcher = ({ clientIds }) => {
|
|
|
301
204
|
BlockSwitcherDropdownMenuContents,
|
|
302
205
|
{
|
|
303
206
|
onClose,
|
|
304
|
-
clientIds
|
|
305
|
-
hasBlockStyles,
|
|
306
|
-
canRemove
|
|
207
|
+
clientIds
|
|
307
208
|
}
|
|
308
209
|
)
|
|
309
210
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/block-switcher/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarButton,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockSwitcherDropdownMenuContents( {\n\tonClose,\n\tclientIds,\n\thasBlockStyles,\n\tcanRemove,\n} ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, patterns, blocks, isUsingBindings } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlocksByClientId,\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetBlockTransformItems,\n\t\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\t\treturn {\n\t\t\t\t\tblocks: _blocks,\n\t\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t\t_blocks,\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata\n\t\t\t\t\t\t\t\t?.bindings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientIds ]\n\t\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\t/**\n\t * The `isSynced` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isSynced =\n\t\tisSingleBlock &&\n\t\t( isTemplatePart( blocks[ 0 ] ) || isReusableBlock( blocks[ 0 ] ) );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations?.length && canRemove && ! isSynced;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { clientIds } ) => {\n\tconst {\n\t\thasContentOnlyLocking,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t\ticon,\n\t\tinvalidBlocks,\n\t\tisReusable,\n\t\tisTemplate,\n\t\tisDisabled,\n\t\tisSectionInSelection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getBlockStyles, getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tif ( ! _blocks.length || _blocks.some( ( block ) => ! block ) ) {\n\t\t\t\treturn { invalidBlocks: true };\n\t\t\t}\n\t\t\tconst [ { name: firstBlockName } ] = _blocks;\n\t\t\tconst _isSingleBlockSelected = _blocks.length === 1;\n\t\t\tconst blockType = getBlockType( firstBlockName );\n\t\t\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\n\t\t\tlet _icon;\n\t\t\tlet _hasTemplateLock;\n\t\t\tif ( _isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\tfirstBlockName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || blockType.icon;\n\t\t\t\t_hasTemplateLock =\n\t\t\t\t\tgetTemplateLock( clientIds[ 0 ] ) === 'contentOnly';\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( _blocks.map( ( { name } ) => name ) ).size === 1;\n\t\t\t\t_hasTemplateLock = clientIds.some(\n\t\t\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t\t\t);\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? blockType.icon : copy;\n\t\t\t}\n\n\t\t\tconst _isSectionInSelection = clientIds.some( ( id ) =>\n\t\t\t\tisSectionBlock( id )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles:\n\t\t\t\t\t_isSingleBlockSelected &&\n\t\t\t\t\t!! getBlockStyles( firstBlockName )?.length,\n\t\t\t\ticon: _icon,\n\t\t\t\tisReusable:\n\t\t\t\t\t_isSingleBlockSelected && isReusableBlock( _blocks[ 0 ] ),\n\t\t\t\tisTemplate:\n\t\t\t\t\t_isSingleBlockSelected && isTemplatePart( _blocks[ 0 ] ),\n\t\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\t\tisDisabled: editingMode !== 'default',\n\t\t\t\tisSectionInSelection: _isSectionInSelection,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\tconst showIconLabels = useSelect(\n\t\t( select ) =>\n\t\t\tselect( preferencesStore ).get( 'core', 'showIconLabels' ),\n\t\t[]\n\t);\n\n\tif ( invalidBlocks ) {\n\t\treturn null;\n\t}\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockSwitcherLabel = isSingleBlock\n\t\t? blockTitle\n\t\t: __( 'Multiple blocks selected' );\n\n\tconst blockIndicatorText =\n\t\t( isReusable || isTemplate ) && ! showIconLabels && blockTitle\n\t\t\t? blockTitle\n\t\t\t: undefined;\n\n\tconst hideTransformsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\tisSectionInSelection;\n\tconst hideDropdown =\n\t\thideTransformsForSections ||\n\t\tisDisabled ||\n\t\t( ! hasBlockStyles && ! canRemove ) ||\n\t\thasContentOnlyLocking;\n\n\tif ( hideDropdown ) {\n\t\treturn (\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled\n\t\t\t\t\tclassName=\"block-editor-block-switcher__no-switcher-icon\"\n\t\t\t\t\ttitle={ blockSwitcherLabel }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t);\n\t}\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ blockSwitcherLabel }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-switcher__toggle\"\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttext={ blockIndicatorText }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\t\t\tcanRemove={ canRemove }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAoC;AACpC,
|
|
6
|
-
"names": ["blockEditorStore", "PatternTransformationsMenu", "BlockTransformationsMenu", "BlockStylesMenu", "Text"
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, _x } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarGroup,\n\tToolbarItem,\n\t__experimentalText as Text,\n\tMenuGroup,\n} from '@wordpress/components';\nimport {\n\tswitchToBlockType,\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from './block-transformations-menu';\nimport { useBlockVariationTransforms } from './block-variation-transformations';\nimport BlockStylesMenu from './block-styles-menu';\nimport PatternTransformationsMenu from './pattern-transformations-menu';\n\nfunction BlockSwitcherDropdownMenuContents( { onClose, clientIds } ) {\n\tconst { replaceBlocks, multiSelect, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tpossibleBlockTransformations,\n\t\tpatterns,\n\t\tblocks,\n\t\tisUsingBindings,\n\t\tcanRemove,\n\t\thasBlockStyles,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\t__experimentalGetPatternTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t\tgetBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\tconst _isSingleBlock = clientIds.length === 1;\n\t\t\tconst _blockName = _isSingleBlock && getBlockName( clientIds[ 0 ] );\n\t\t\tconst _hasBlockStyles =\n\t\t\t\t_isSingleBlock && !! getBlockStyles( _blockName )?.length;\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tpatterns: __experimentalGetPatternTransformItems(\n\t\t\t\t\t_blocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tisUsingBindings: clientIds.every(\n\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\thasBlockStyles: _hasBlockStyles,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst blockVariationTransformations = useBlockVariationTransforms( {\n\t\tclientIds,\n\t\tblocks,\n\t} );\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\t// Simple block transformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\tfunction onBlockVariationTransform( name ) {\n\t\tupdateBlockAttributes( blocks[ 0 ].clientId, {\n\t\t\t...blockVariationTransformations.find(\n\t\t\t\t( { name: variationName } ) => variationName === name\n\t\t\t).attributes,\n\t\t} );\n\t}\n\t// Pattern transformation through the `Patterns` API.\n\tfunction onPatternTransform( transformedBlocks ) {\n\t\treplaceBlocks( clientIds, transformedBlocks );\n\t\tselectForMultipleBlocks( transformedBlocks );\n\t}\n\n\t/**\n\t * The `isSynced` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst isSingleBlock = blocks.length === 1;\n\tconst isSynced =\n\t\tisSingleBlock &&\n\t\t( isTemplatePart( blocks[ 0 ] ) || isReusableBlock( blocks[ 0 ] ) );\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations?.length && canRemove && ! isSynced;\n\tconst hasPossibleBlockVariationTransformations =\n\t\t!! blockVariationTransformations?.length;\n\tconst hasPatternTransformation = !! patterns?.length && canRemove;\n\tconst hasBlockOrBlockVariationTransforms =\n\t\thasPossibleBlockTransformations ||\n\t\thasPossibleBlockVariationTransformations;\n\tconst hasContents =\n\t\thasBlockStyles ||\n\t\thasBlockOrBlockVariationTransforms ||\n\t\thasPatternTransformation;\n\tif ( ! hasContents ) {\n\t\treturn (\n\t\t\t<p className=\"block-editor-block-switcher__no-transforms\">\n\t\t\t\t{ __( 'No transforms.' ) }\n\t\t\t</p>\n\t\t);\n\t}\n\n\tconst connectedBlockDescription = isSingleBlock\n\t\t? _x(\n\t\t\t\t'This block is connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t )\n\t\t: _x(\n\t\t\t\t'These blocks are connected.',\n\t\t\t\t'block toolbar button label and description'\n\t\t );\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__container\">\n\t\t\t{ hasPatternTransformation && (\n\t\t\t\t<PatternTransformationsMenu\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonSelect={ ( transformedBlocks ) => {\n\t\t\t\t\t\tonPatternTransform( transformedBlocks );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockOrBlockVariationTransforms && (\n\t\t\t\t<BlockTransformationsMenu\n\t\t\t\t\tclassName=\"block-editor-block-switcher__transforms__menugroup\"\n\t\t\t\t\tpossibleBlockTransformations={\n\t\t\t\t\t\tpossibleBlockTransformations\n\t\t\t\t\t}\n\t\t\t\t\tpossibleBlockVariationTransformations={\n\t\t\t\t\t\tblockVariationTransformations\n\t\t\t\t\t}\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonSelect={ ( name ) => {\n\t\t\t\t\t\tonBlockTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectVariation={ ( name ) => {\n\t\t\t\t\t\tonBlockVariationTransform( name );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<BlockStylesMenu\n\t\t\t\t\thoveredBlock={ blocks[ 0 ] }\n\t\t\t\t\tonSwitch={ onClose }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isUsingBindings && (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<Text className=\"block-editor-block-switcher__binding-indicator\">\n\t\t\t\t\t\t{ connectedBlockDescription }\n\t\t\t\t\t</Text>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const BlockSwitcher = ( { children, clientIds, label, text } ) => {\n\tconst isSingleBlock = clientIds.length === 1;\n\n\tconst blockSwitcherDescription = isSingleBlock\n\t\t? __( 'Change block type or style' )\n\t\t: sprintf(\n\t\t\t\t/* translators: %d: number of blocks. */\n\t\t\t\t_n(\n\t\t\t\t\t'Change type of %d block',\n\t\t\t\t\t'Change type of %d blocks',\n\t\t\t\t\tclientIds.length\n\t\t\t\t),\n\t\t\t\tclientIds.length\n\t\t );\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarItem>\n\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\tclassName=\"block-editor-block-switcher\"\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\t\tclassName: 'block-editor-block-switcher__popover',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={ children }\n\t\t\t\t\t\ttext={ text }\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tdescription: blockSwitcherDescription,\n\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuProps={ { orientation: 'both' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<BlockSwitcherDropdownMenuContents\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</ToolbarItem>\n\t\t</ToolbarGroup>\n\t);\n};\n\nexport default BlockSwitcher;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["blockEditorStore", "blocksStore", "PatternTransformationsMenu", "BlockTransformationsMenu", "BlockStylesMenu", "Text"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// packages/block-editor/src/components/block-toolbar/block-toolbar-icon.js
|
|
31
|
+
var block_toolbar_icon_exports = {};
|
|
32
|
+
__export(block_toolbar_icon_exports, {
|
|
33
|
+
default: () => BlockToolbarIcon
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(block_toolbar_icon_exports);
|
|
36
|
+
var import_components = require("@wordpress/components");
|
|
37
|
+
var import_i18n = require("@wordpress/i18n");
|
|
38
|
+
var import_data = require("@wordpress/data");
|
|
39
|
+
var import_icons = require("@wordpress/icons");
|
|
40
|
+
var import_blocks = require("@wordpress/blocks");
|
|
41
|
+
var import_preferences = require("@wordpress/preferences");
|
|
42
|
+
var import_block_switcher = __toESM(require("../block-switcher"));
|
|
43
|
+
var import_block_icon = __toESM(require("../block-icon"));
|
|
44
|
+
var import_pattern_overrides_dropdown = __toESM(require("./pattern-overrides-dropdown"));
|
|
45
|
+
var import_use_block_display_title = __toESM(require("../block-title/use-block-display-title"));
|
|
46
|
+
var import_store = require("../../store");
|
|
47
|
+
var import_block_bindings = require("../../utils/block-bindings");
|
|
48
|
+
var import_lock_unlock = require("../../lock-unlock");
|
|
49
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
50
|
+
function getBlockIconVariant({ select, clientIds }) {
|
|
51
|
+
const {
|
|
52
|
+
getBlockName,
|
|
53
|
+
getBlockAttributes,
|
|
54
|
+
getBlockParentsByBlockName,
|
|
55
|
+
isSectionBlock,
|
|
56
|
+
canRemoveBlocks,
|
|
57
|
+
getTemplateLock,
|
|
58
|
+
getBlockEditingMode
|
|
59
|
+
} = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
60
|
+
const { getBlockStyles } = select(import_blocks.store);
|
|
61
|
+
const hasTemplateLock = clientIds.some(
|
|
62
|
+
(id) => getTemplateLock(id) === "contentOnly"
|
|
63
|
+
);
|
|
64
|
+
const isSingleBlock = clientIds.length === 1;
|
|
65
|
+
const blockName = isSingleBlock && getBlockName(clientIds[0]);
|
|
66
|
+
const hasBlockStyles = isSingleBlock && !!getBlockStyles(blockName)?.length;
|
|
67
|
+
const isSectionInSelection = clientIds.some(
|
|
68
|
+
(id) => isSectionBlock(id)
|
|
69
|
+
);
|
|
70
|
+
const hasPatternOverrides = clientIds.every(
|
|
71
|
+
(clientId) => (0, import_block_bindings.hasPatternOverridesDefaultBinding)(
|
|
72
|
+
getBlockAttributes(clientId)?.metadata?.bindings
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
const hasParentPattern = clientIds.every(
|
|
76
|
+
(clientId) => getBlockParentsByBlockName(clientId, "core/block", true).length > 0
|
|
77
|
+
);
|
|
78
|
+
const canRemove = canRemoveBlocks(clientIds);
|
|
79
|
+
const isDefaultEditingMode = getBlockEditingMode(clientIds[0]) === "default";
|
|
80
|
+
const _hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && isSectionInSelection;
|
|
81
|
+
const _showBlockSwitcher = !_hideTransformsForSections && isDefaultEditingMode && (hasBlockStyles || canRemove) && !hasTemplateLock;
|
|
82
|
+
const _showPatternOverrides = hasPatternOverrides && hasParentPattern;
|
|
83
|
+
if (_showBlockSwitcher) {
|
|
84
|
+
return "switcher";
|
|
85
|
+
} else if (_showPatternOverrides) {
|
|
86
|
+
return "pattern-overrides";
|
|
87
|
+
}
|
|
88
|
+
return "default";
|
|
89
|
+
}
|
|
90
|
+
function getBlockIcon({ select, clientIds }) {
|
|
91
|
+
const { getBlockName, getBlockAttributes } = (0, import_lock_unlock.unlock)(
|
|
92
|
+
select(import_store.store)
|
|
93
|
+
);
|
|
94
|
+
const { getActiveBlockVariation } = select(import_blocks.store);
|
|
95
|
+
const _isSingleBlock = clientIds.length === 1;
|
|
96
|
+
const firstClientId = clientIds[0];
|
|
97
|
+
const blockName = getBlockName(firstClientId);
|
|
98
|
+
const blockType = (0, import_blocks.getBlockType)(blockName);
|
|
99
|
+
if (_isSingleBlock) {
|
|
100
|
+
const match = getActiveBlockVariation(
|
|
101
|
+
blockName,
|
|
102
|
+
getBlockAttributes(firstClientId)
|
|
103
|
+
);
|
|
104
|
+
return match?.icon || blockType?.icon;
|
|
105
|
+
}
|
|
106
|
+
const blockNames = clientIds.map((id) => getBlockName(id));
|
|
107
|
+
const isSelectionOfSameType = new Set(blockNames).size === 1;
|
|
108
|
+
return isSelectionOfSameType ? blockType?.icon : import_icons.copy;
|
|
109
|
+
}
|
|
110
|
+
function BlockToolbarIcon({ clientIds, isSynced }) {
|
|
111
|
+
const { icon, showIconLabels, variant } = (0, import_data.useSelect)(
|
|
112
|
+
(select) => {
|
|
113
|
+
return {
|
|
114
|
+
icon: getBlockIcon({ select, clientIds }),
|
|
115
|
+
showIconLabels: select(import_preferences.store).get(
|
|
116
|
+
"core",
|
|
117
|
+
"showIconLabels"
|
|
118
|
+
),
|
|
119
|
+
variant: getBlockIconVariant({
|
|
120
|
+
select,
|
|
121
|
+
clientIds
|
|
122
|
+
})
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
[clientIds]
|
|
126
|
+
);
|
|
127
|
+
const blockTitle = (0, import_use_block_display_title.default)({
|
|
128
|
+
clientId: clientIds?.[0],
|
|
129
|
+
maximumLength: 35
|
|
130
|
+
});
|
|
131
|
+
const isSingleBlock = clientIds.length === 1;
|
|
132
|
+
const showBlockTitle = isSingleBlock && isSynced && !showIconLabels;
|
|
133
|
+
const label = isSingleBlock ? blockTitle : (0, import_i18n.__)("Multiple blocks selected");
|
|
134
|
+
const text = showBlockTitle && blockTitle ? blockTitle : void 0;
|
|
135
|
+
const BlockIconElement = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
136
|
+
import_block_icon.default,
|
|
137
|
+
{
|
|
138
|
+
className: "block-editor-block-toolbar__block-icon",
|
|
139
|
+
icon
|
|
140
|
+
}
|
|
141
|
+
);
|
|
142
|
+
if (variant === "switcher") {
|
|
143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
144
|
+
import_block_switcher.default,
|
|
145
|
+
{
|
|
146
|
+
clientIds,
|
|
147
|
+
label,
|
|
148
|
+
text,
|
|
149
|
+
children: BlockIconElement
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
if (variant === "pattern-overrides") {
|
|
154
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
155
|
+
import_pattern_overrides_dropdown.default,
|
|
156
|
+
{
|
|
157
|
+
icon: BlockIconElement,
|
|
158
|
+
clientIds,
|
|
159
|
+
blockTitle,
|
|
160
|
+
label
|
|
161
|
+
}
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
165
|
+
import_components.ToolbarButton,
|
|
166
|
+
{
|
|
167
|
+
disabled: true,
|
|
168
|
+
className: "block-editor-block-toolbar__block-icon-button",
|
|
169
|
+
title: label,
|
|
170
|
+
icon: BlockIconElement,
|
|
171
|
+
text
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=block-toolbar-icon.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/block-toolbar/block-toolbar-icon.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport BlockSwitcher from '../block-switcher';\nimport BlockIcon from '../block-icon';\nimport PatternOverridesDropdown from './pattern-overrides-dropdown';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { store as blockEditorStore } from '../../store';\nimport { hasPatternOverridesDefaultBinding } from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\nfunction getBlockIconVariant( { select, clientIds } ) {\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockAttributes,\n\t\tgetBlockParentsByBlockName,\n\t\tisSectionBlock,\n\t\tcanRemoveBlocks,\n\t\tgetTemplateLock,\n\t\tgetBlockEditingMode,\n\t} = unlock( select( blockEditorStore ) );\n\tconst { getBlockStyles } = select( blocksStore );\n\n\tconst hasTemplateLock = clientIds.some(\n\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t);\n\n\t// Calculate props only used in this function\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockName = isSingleBlock && getBlockName( clientIds[ 0 ] );\n\tconst hasBlockStyles =\n\t\tisSingleBlock && !! getBlockStyles( blockName )?.length;\n\tconst isSectionInSelection = clientIds.some( ( id ) =>\n\t\tisSectionBlock( id )\n\t);\n\tconst hasPatternOverrides = clientIds.every( ( clientId ) =>\n\t\thasPatternOverridesDefaultBinding(\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings\n\t\t)\n\t);\n\tconst hasParentPattern = clientIds.every(\n\t\t( clientId ) =>\n\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true ).length >\n\t\t\t0\n\t);\n\tconst canRemove = canRemoveBlocks( clientIds );\n\n\tconst isDefaultEditingMode =\n\t\tgetBlockEditingMode( clientIds[ 0 ] ) === 'default';\n\tconst _hideTransformsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\tisSectionInSelection;\n\tconst _showBlockSwitcher =\n\t\t! _hideTransformsForSections &&\n\t\tisDefaultEditingMode &&\n\t\t( hasBlockStyles || canRemove ) &&\n\t\t! hasTemplateLock;\n\n\tconst _showPatternOverrides = hasPatternOverrides && hasParentPattern;\n\n\tif ( _showBlockSwitcher ) {\n\t\treturn 'switcher';\n\t} else if ( _showPatternOverrides ) {\n\t\treturn 'pattern-overrides';\n\t}\n\n\treturn 'default';\n}\n\nfunction getBlockIcon( { select, clientIds } ) {\n\tconst { getBlockName, getBlockAttributes } = unlock(\n\t\tselect( blockEditorStore )\n\t);\n\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\tconst _isSingleBlock = clientIds.length === 1;\n\tconst firstClientId = clientIds[ 0 ];\n\n\tconst blockName = getBlockName( firstClientId );\n\tconst blockType = getBlockType( blockName );\n\n\tif ( _isSingleBlock ) {\n\t\tconst match = getActiveBlockVariation(\n\t\t\tblockName,\n\t\t\tgetBlockAttributes( firstClientId )\n\t\t);\n\t\treturn match?.icon || blockType?.icon;\n\t}\n\n\tconst blockNames = clientIds.map( ( id ) => getBlockName( id ) );\n\tconst isSelectionOfSameType = new Set( blockNames ).size === 1;\n\treturn isSelectionOfSameType ? blockType?.icon : copy;\n}\n\nexport default function BlockToolbarIcon( { clientIds, isSynced } ) {\n\tconst { icon, showIconLabels, variant } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\ticon: getBlockIcon( { select, clientIds } ),\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tvariant: getBlockIconVariant( {\n\t\t\t\t\tselect,\n\t\t\t\t\tclientIds,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst showBlockTitle = isSingleBlock && isSynced && ! showIconLabels;\n\tconst label = isSingleBlock ? blockTitle : __( 'Multiple blocks selected' );\n\t// Used to hide the block icon when the showIconLabels preference is enabled, or to display the template title when it's a template.\n\tconst text = showBlockTitle && blockTitle ? blockTitle : undefined;\n\n\tconst BlockIconElement = (\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon\"\n\t\t\ticon={ icon }\n\t\t/>\n\t);\n\n\tif ( variant === 'switcher' ) {\n\t\treturn (\n\t\t\t<BlockSwitcher\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockSwitcher>\n\t\t);\n\t}\n\n\tif ( variant === 'pattern-overrides' ) {\n\t\treturn (\n\t\t\t<PatternOverridesDropdown\n\t\t\t\ticon={ BlockIconElement }\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon-button\"\n\t\t\ttitle={ label }\n\t\t\ticon={ BlockIconElement }\n\t\t\ttext={ text }\n\t\t/>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA8B;AAC9B,kBAAmB;AACnB,kBAA0B;AAC1B,mBAAqB;AACrB,oBAAmD;AACnD,yBAA0C;AAK1C,4BAA0B;AAC1B,wBAAsB;AACtB,wCAAqC;AACrC,qCAAiC;AACjC,mBAA0C;AAC1C,4BAAkD;AAClD,yBAAuB;AAmHrB;AAjHF,SAAS,oBAAqB,EAAE,QAAQ,UAAU,GAAI;AACrD,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,2BAAQ,OAAQ,aAAAA,KAAiB,CAAE;AACvC,QAAM,EAAE,eAAe,IAAI,OAAQ,cAAAC,KAAY;AAE/C,QAAM,kBAAkB,UAAU;AAAA,IACjC,CAAE,OAAQ,gBAAiB,EAAG,MAAM;AAAA,EACrC;AAGA,QAAM,gBAAgB,UAAU,WAAW;AAC3C,QAAM,YAAY,iBAAiB,aAAc,UAAW,CAAE,CAAE;AAChE,QAAM,iBACL,iBAAiB,CAAC,CAAE,eAAgB,SAAU,GAAG;AAClD,QAAM,uBAAuB,UAAU;AAAA,IAAM,CAAE,OAC9C,eAAgB,EAAG;AAAA,EACpB;AACA,QAAM,sBAAsB,UAAU;AAAA,IAAO,CAAE,iBAC9C;AAAA,MACC,mBAAoB,QAAS,GAAG,UAAU;AAAA,IAC3C;AAAA,EACD;AACA,QAAM,mBAAmB,UAAU;AAAA,IAClC,CAAE,aACD,2BAA4B,UAAU,cAAc,IAAK,EAAE,SAC3D;AAAA,EACF;AACA,QAAM,YAAY,gBAAiB,SAAU;AAE7C,QAAM,uBACL,oBAAqB,UAAW,CAAE,CAAE,MAAM;AAC3C,QAAM,6BACL,QAAQ,6CACR;AACD,QAAM,qBACL,CAAE,8BACF,yBACE,kBAAkB,cACpB,CAAE;AAEH,QAAM,wBAAwB,uBAAuB;AAErD,MAAK,oBAAqB;AACzB,WAAO;AAAA,EACR,WAAY,uBAAwB;AACnC,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,SAAS,aAAc,EAAE,QAAQ,UAAU,GAAI;AAC9C,QAAM,EAAE,cAAc,mBAAmB,QAAI;AAAA,IAC5C,OAAQ,aAAAD,KAAiB;AAAA,EAC1B;AACA,QAAM,EAAE,wBAAwB,IAAI,OAAQ,cAAAC,KAAY;AAExD,QAAM,iBAAiB,UAAU,WAAW;AAC5C,QAAM,gBAAgB,UAAW,CAAE;AAEnC,QAAM,YAAY,aAAc,aAAc;AAC9C,QAAM,gBAAY,4BAAc,SAAU;AAE1C,MAAK,gBAAiB;AACrB,UAAM,QAAQ;AAAA,MACb;AAAA,MACA,mBAAoB,aAAc;AAAA,IACnC;AACA,WAAO,OAAO,QAAQ,WAAW;AAAA,EAClC;AAEA,QAAM,aAAa,UAAU,IAAK,CAAE,OAAQ,aAAc,EAAG,CAAE;AAC/D,QAAM,wBAAwB,IAAI,IAAK,UAAW,EAAE,SAAS;AAC7D,SAAO,wBAAwB,WAAW,OAAO;AAClD;AAEe,SAAR,iBAAmC,EAAE,WAAW,SAAS,GAAI;AACnE,QAAM,EAAE,MAAM,gBAAgB,QAAQ,QAAI;AAAA,IACzC,CAAE,WAAY;AACb,aAAO;AAAA,QACN,MAAM,aAAc,EAAE,QAAQ,UAAU,CAAE;AAAA,QAC1C,gBAAgB,OAAQ,mBAAAC,KAAiB,EAAE;AAAA,UAC1C;AAAA,UACA;AAAA,QACD;AAAA,QACA,SAAS,oBAAqB;AAAA,UAC7B;AAAA,UACA;AAAA,QACD,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,iBAAa,+BAAAC,SAAsB;AAAA,IACxC,UAAU,YAAa,CAAE;AAAA,IACzB,eAAe;AAAA,EAChB,CAAE;AAEF,QAAM,gBAAgB,UAAU,WAAW;AAC3C,QAAM,iBAAiB,iBAAiB,YAAY,CAAE;AACtD,QAAM,QAAQ,gBAAgB,iBAAa,gBAAI,0BAA2B;AAE1E,QAAM,OAAO,kBAAkB,aAAa,aAAa;AAEzD,QAAM,mBACL;AAAA,IAAC,kBAAAC;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV;AAAA;AAAA,EACD;AAGD,MAAK,YAAY,YAAa;AAC7B,WACC;AAAA,MAAC,sBAAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEE;AAAA;AAAA,IACH;AAAA,EAEF;AAEA,MAAK,YAAY,qBAAsB;AACtC,WACC;AAAA,MAAC,kCAAAC;AAAA,MAAA;AAAA,QACA,MAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,UAAQ;AAAA,MACR,WAAU;AAAA,MACV,OAAQ;AAAA,MACR,MAAO;AAAA,MACP;AAAA;AAAA,EACD;AAEF;",
|
|
6
|
+
"names": ["blockEditorStore", "blocksStore", "preferencesStore", "useBlockDisplayTitle", "BlockIcon", "BlockSwitcher", "PatternOverridesDropdown"]
|
|
7
|
+
}
|
|
@@ -43,7 +43,6 @@ var import_blocks = require("@wordpress/blocks");
|
|
|
43
43
|
var import_components = require("@wordpress/components");
|
|
44
44
|
var import_block_mover = __toESM(require("../block-mover"));
|
|
45
45
|
var import_block_parent_selector = __toESM(require("../block-parent-selector"));
|
|
46
|
-
var import_block_switcher = __toESM(require("../block-switcher"));
|
|
47
46
|
var import_block_controls = __toESM(require("../block-controls"));
|
|
48
47
|
var import_block_toolbar_last_item = __toESM(require("./block-toolbar-last-item"));
|
|
49
48
|
var import_block_settings_menu = __toESM(require("../block-settings-menu"));
|
|
@@ -59,6 +58,7 @@ var import_use_has_block_toolbar = require("./use-has-block-toolbar");
|
|
|
59
58
|
var import_change_design = __toESM(require("./change-design"));
|
|
60
59
|
var import_switch_section_style = __toESM(require("./switch-section-style"));
|
|
61
60
|
var import_lock_unlock = require("../../lock-unlock");
|
|
61
|
+
var import_block_toolbar_icon = __toESM(require("./block-toolbar-icon"));
|
|
62
62
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
63
63
|
function PrivateBlockToolbar({
|
|
64
64
|
hideDragHandle,
|
|
@@ -76,7 +76,7 @@ function PrivateBlockToolbar({
|
|
|
76
76
|
shouldShowVisualToolbar,
|
|
77
77
|
showParentSelector,
|
|
78
78
|
isUsingBindings,
|
|
79
|
-
|
|
79
|
+
isSectionContainer,
|
|
80
80
|
hasContentOnlyLocking,
|
|
81
81
|
showShuffleButton,
|
|
82
82
|
showSlots,
|
|
@@ -93,7 +93,6 @@ function PrivateBlockToolbar({
|
|
|
93
93
|
isBlockValid,
|
|
94
94
|
getBlockEditingMode,
|
|
95
95
|
getBlockAttributes,
|
|
96
|
-
getBlockParentsByBlockName,
|
|
97
96
|
getTemplateLock,
|
|
98
97
|
getParentSectionBlock,
|
|
99
98
|
isZoomOut,
|
|
@@ -118,14 +117,12 @@ function PrivateBlockToolbar({
|
|
|
118
117
|
const _isUsingBindings = selectedBlockClientIds.every(
|
|
119
118
|
(clientId) => !!getBlockAttributes(clientId)?.metadata?.bindings
|
|
120
119
|
);
|
|
121
|
-
const _hasParentPattern = selectedBlockClientIds.every(
|
|
122
|
-
(clientId) => getBlockParentsByBlockName(clientId, "core/block", true).length > 0
|
|
123
|
-
);
|
|
124
120
|
const _hasTemplateLock = selectedBlockClientIds.some(
|
|
125
121
|
(id) => getTemplateLock(id) === "contentOnly"
|
|
126
122
|
);
|
|
127
123
|
const _isZoomOut = isZoomOut();
|
|
128
|
-
const
|
|
124
|
+
const _isSectionBlock = isSectionBlock(selectedBlockClientId);
|
|
125
|
+
const _showSwitchSectionStyleButton = window?.__experimentalContentOnlyPatternInsertion && (_isZoomOut || _isSectionBlock);
|
|
129
126
|
return {
|
|
130
127
|
blockClientId: selectedBlockClientId,
|
|
131
128
|
blockClientIds: selectedBlockClientIds,
|
|
@@ -139,7 +136,7 @@ function PrivateBlockToolbar({
|
|
|
139
136
|
true
|
|
140
137
|
) && selectedBlockClientIds.length === 1,
|
|
141
138
|
isUsingBindings: _isUsingBindings,
|
|
142
|
-
|
|
139
|
+
isSectionContainer: _isSectionBlock,
|
|
143
140
|
hasContentOnlyLocking: _hasTemplateLock,
|
|
144
141
|
showShuffleButton: _isZoomOut,
|
|
145
142
|
showSlots: !_isZoomOut,
|
|
@@ -180,61 +177,62 @@ function PrivateBlockToolbar({
|
|
|
180
177
|
__experimentalOnIndexChange,
|
|
181
178
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref: toolbarWrapperRef, className: innerClasses, children: [
|
|
182
179
|
showParentSelector && !isMultiToolbar && isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_parent_selector.default, {}),
|
|
183
|
-
(shouldShowVisualToolbar || isMultiToolbar) &&
|
|
184
|
-
"div",
|
|
185
|
-
{
|
|
186
|
-
ref: nodeRef,
|
|
187
|
-
...showHoveredOrFocusedGestures,
|
|
188
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.ToolbarGroup, { className: "block-editor-block-toolbar__block-controls", children: [
|
|
189
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_switcher.default, { clientIds: blockClientIds }),
|
|
190
|
-
isDefaultEditingMode && showBlockVisibilityButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
191
|
-
import_block_visibility.BlockVisibilityToolbar,
|
|
192
|
-
{
|
|
193
|
-
clientIds: blockClientIds
|
|
194
|
-
}
|
|
195
|
-
),
|
|
196
|
-
!isMultiToolbar && isDefaultEditingMode && showLockButtons && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
197
|
-
import_block_lock.BlockLockToolbar,
|
|
198
|
-
{
|
|
199
|
-
clientId: blockClientId
|
|
200
|
-
}
|
|
201
|
-
),
|
|
202
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
203
|
-
import_block_mover.default,
|
|
204
|
-
{
|
|
205
|
-
clientIds: blockClientIds,
|
|
206
|
-
hideDragHandle
|
|
207
|
-
}
|
|
208
|
-
)
|
|
209
|
-
] })
|
|
210
|
-
}
|
|
211
|
-
),
|
|
212
|
-
!hasContentOnlyLocking && shouldShowVisualToolbar && isMultiToolbar && showGroupButtons && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_convert_to_group_buttons.BlockGroupToolbar, {}),
|
|
213
|
-
showShuffleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_change_design.default, { clientId: blockClientIds[0] }),
|
|
214
|
-
showSwitchSectionStyleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_switch_section_style.default, { clientId: blockClientIds[0] }),
|
|
215
|
-
shouldShowVisualToolbar && showSlots && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
180
|
+
(shouldShowVisualToolbar || isMultiToolbar) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref: nodeRef, ...showHoveredOrFocusedGestures, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.ToolbarGroup, { className: "block-editor-block-toolbar__block-controls", children: [
|
|
216
181
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
217
|
-
|
|
182
|
+
import_block_toolbar_icon.default,
|
|
218
183
|
{
|
|
219
|
-
|
|
220
|
-
|
|
184
|
+
clientIds: blockClientIds,
|
|
185
|
+
isSynced
|
|
221
186
|
}
|
|
222
187
|
),
|
|
223
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
224
|
-
|
|
188
|
+
isDefaultEditingMode && showBlockVisibilityButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
189
|
+
import_block_visibility.BlockVisibilityToolbar,
|
|
225
190
|
{
|
|
226
|
-
|
|
227
|
-
className: "block-editor-block-toolbar__slot"
|
|
191
|
+
clientIds: blockClientIds
|
|
228
192
|
}
|
|
229
193
|
),
|
|
230
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
231
|
-
|
|
232
|
-
import_block_controls.default.Slot,
|
|
194
|
+
!isMultiToolbar && isDefaultEditingMode && showLockButtons && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
195
|
+
import_block_lock.BlockLockToolbar,
|
|
233
196
|
{
|
|
234
|
-
|
|
235
|
-
className: "block-editor-block-toolbar__slot"
|
|
197
|
+
clientId: blockClientId
|
|
236
198
|
}
|
|
237
199
|
),
|
|
200
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
201
|
+
import_block_mover.default,
|
|
202
|
+
{
|
|
203
|
+
clientIds: blockClientIds,
|
|
204
|
+
hideDragHandle
|
|
205
|
+
}
|
|
206
|
+
)
|
|
207
|
+
] }) }),
|
|
208
|
+
!hasContentOnlyLocking && shouldShowVisualToolbar && isMultiToolbar && showGroupButtons && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_convert_to_group_buttons.BlockGroupToolbar, {}),
|
|
209
|
+
showShuffleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_change_design.default, { clientId: blockClientIds[0] }),
|
|
210
|
+
showSwitchSectionStyleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_switch_section_style.default, { clientId: blockClientIds[0] }),
|
|
211
|
+
shouldShowVisualToolbar && showSlots && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
212
|
+
!isSectionContainer && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
213
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
214
|
+
import_block_controls.default.Slot,
|
|
215
|
+
{
|
|
216
|
+
group: "parent",
|
|
217
|
+
className: "block-editor-block-toolbar__slot"
|
|
218
|
+
}
|
|
219
|
+
),
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
221
|
+
import_block_controls.default.Slot,
|
|
222
|
+
{
|
|
223
|
+
group: "block",
|
|
224
|
+
className: "block-editor-block-toolbar__slot"
|
|
225
|
+
}
|
|
226
|
+
),
|
|
227
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_controls.default.Slot, { className: "block-editor-block-toolbar__slot" }),
|
|
228
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
229
|
+
import_block_controls.default.Slot,
|
|
230
|
+
{
|
|
231
|
+
group: "inline",
|
|
232
|
+
className: "block-editor-block-toolbar__slot"
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
] }),
|
|
238
236
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
239
237
|
import_block_controls.default.Slot,
|
|
240
238
|
{
|