UNPKG

@wordpress/block-editor

Version:
55 lines (48 loc) 1.56 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@wordpress/element"; /** * WordPress dependencies */ import { useContext, useMemo } from '@wordpress/element'; import { privateApis, __experimentalToolbarContext as ToolbarContext, ToolbarGroup, __experimentalUseSlotFills as useSlotFills } from '@wordpress/components'; import warning from '@wordpress/warning'; /** * Internal dependencies */ import groups from './groups'; import { unlock } from '../../lock-unlock'; const { ComponentsContext } = unlock(privateApis); export default function BlockControlsSlot({ group = 'default', ...props }) { const toolbarState = useContext(ToolbarContext); const contextState = useContext(ComponentsContext); const fillProps = useMemo(() => ({ forwardedContext: [[ToolbarContext.Provider, { value: toolbarState }], [ComponentsContext.Provider, { value: contextState }]] }), [toolbarState, contextState]); const Slot = groups[group]?.Slot; const fills = useSlotFills(Slot?.__unstableName); if (!Slot) { typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production" ? warning(`Unknown BlockControls group "${group}" provided.`) : void 0; return null; } if (!fills?.length) { return null; } const slot = createElement(Slot, _extends({}, props, { bubblesVirtually: true, fillProps: fillProps })); if (group === 'default') { return slot; } return createElement(ToolbarGroup, null, slot); } //# sourceMappingURL=slot.js.map