@wordpress/components
Version:
UI components for WordPress.
33 lines (30 loc) • 999 B
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useSlot;
var _element = require("@wordpress/element");
var _compose = require("@wordpress/compose");
var _slotFillContext = _interopRequireDefault(require("./slot-fill-context"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useSlot(name) {
const registry = (0, _element.useContext)(_slotFillContext.default);
const slot = (0, _compose.useObservableValue)(registry.slots, name);
const api = (0, _element.useMemo)(() => ({
updateSlot: fillProps => registry.updateSlot(name, fillProps),
unregisterSlot: ref => registry.unregisterSlot(name, ref),
registerFill: ref => registry.registerFill(name, ref),
unregisterFill: ref => registry.unregisterFill(name, ref)
}), [name, registry]);
return {
...slot,
...api
};
}
//# sourceMappingURL=use-slot.js.map