@wordpress/block-editor
Version:
69 lines (53 loc) • 1.91 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = BlockControlsSlot;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _components = require("@wordpress/components");
var _warning = _interopRequireDefault(require("@wordpress/warning"));
var _groups = _interopRequireDefault(require("./groups"));
var _lockUnlock = require("../../lock-unlock");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
ComponentsContext
} = (0, _lockUnlock.unlock)(_components.privateApis);
function BlockControlsSlot({
group = 'default',
...props
}) {
const toolbarState = (0, _element.useContext)(_components.__experimentalToolbarContext);
const contextState = (0, _element.useContext)(ComponentsContext);
const fillProps = (0, _element.useMemo)(() => ({
forwardedContext: [[_components.__experimentalToolbarContext.Provider, {
value: toolbarState
}], [ComponentsContext.Provider, {
value: contextState
}]]
}), [toolbarState, contextState]);
const Slot = _groups.default[group]?.Slot;
const fills = (0, _components.__experimentalUseSlotFills)(Slot?.__unstableName);
if (!Slot) {
typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production" ? (0, _warning.default)(`Unknown BlockControls group "${group}" provided.`) : void 0;
return null;
}
if (!fills?.length) {
return null;
}
const slot = (0, _element.createElement)(Slot, (0, _extends2.default)({}, props, {
bubblesVirtually: true,
fillProps: fillProps
}));
if (group === 'default') {
return slot;
}
return (0, _element.createElement)(_components.ToolbarGroup, null, slot);
}
//# sourceMappingURL=slot.js.map