@wordpress/block-editor
Version:
83 lines (74 loc) • 2.37 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { __experimentalStyleProvider as StyleProvider, __experimentalToolsPanelContext as ToolsPanelContext } from '@wordpress/components';
import warning from '@wordpress/warning';
import deprecated from '@wordpress/deprecated';
import { useEffect } from '@wordpress/element';
/**
* Internal dependencies
*/
import useDisplayBlockControls from '../use-display-block-controls';
import groups from './groups';
export default function InspectorControlsFill({
children,
group = 'default',
__experimentalGroup,
resetAllFilter
}) {
if (__experimentalGroup) {
deprecated('`__experimentalGroup` property in `InspectorControlsFill`', {
since: '6.2',
version: '6.4',
alternative: '`group`'
});
group = __experimentalGroup;
}
const isDisplayed = useDisplayBlockControls();
const Fill = groups[group]?.Fill;
if (!Fill) {
typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production" ? warning(`Unknown InspectorControls group "${group}" provided.`) : void 0;
return null;
}
if (!isDisplayed) {
return null;
}
return createElement(StyleProvider, {
document: document
}, createElement(Fill, null, fillProps => {
return createElement(ToolsPanelInspectorControl, {
fillProps: fillProps,
children: children,
resetAllFilter: resetAllFilter
});
}));
}
function ToolsPanelInspectorControl({
children,
resetAllFilter,
fillProps
}) {
const {
registerResetAllFilter,
deregisterResetAllFilter
} = fillProps;
useEffect(() => {
if (resetAllFilter && registerResetAllFilter) {
registerResetAllFilter(resetAllFilter);
}
return () => {
if (resetAllFilter && deregisterResetAllFilter) {
deregisterResetAllFilter(resetAllFilter);
}
};
}, [resetAllFilter, registerResetAllFilter, deregisterResetAllFilter]); // Children passed to InspectorControlsFill will not have
// access to any React Context whose Provider is part of
// the InspectorControlsSlot tree. So we re-create the
// Provider in this subtree.
const value = fillProps && Object.keys(fillProps).length > 0 ? fillProps : null;
return createElement(ToolsPanelContext.Provider, {
value: value
}, children);
}
//# sourceMappingURL=fill.js.map