@wordpress/block-editor
Version:
62 lines (59 loc) • 1.84 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = BlockControlsSlot;
var _element = require("@wordpress/element");
var _components = require("@wordpress/components");
var _warning = _interopRequireDefault(require("@wordpress/warning"));
var _groups = _interopRequireDefault(require("./groups"));
var _lockUnlock = require("../../lock-unlock");
var _jsxRuntime = require("react/jsx-runtime");
/**
* 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 slotFill = _groups.default[group];
const fills = (0, _components.__experimentalUseSlotFills)(slotFill.name);
if (!slotFill) {
globalThis.SCRIPT_DEBUG === true ? (0, _warning.default)(`Unknown BlockControls group "${group}" provided.`) : void 0;
return null;
}
if (!fills?.length) {
return null;
}
const {
Slot
} = slotFill;
const slot = /*#__PURE__*/(0, _jsxRuntime.jsx)(Slot, {
...props,
bubblesVirtually: true,
fillProps: fillProps
});
if (group === 'default') {
return slot;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
children: slot
});
}
//# sourceMappingURL=slot.js.map
;