UNPKG

@wordpress/components

Version:
46 lines (40 loc) 1.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useSlot; var _element = require("@wordpress/element"); var _slotFillContext = _interopRequireDefault(require("./slot-fill-context")); /** * WordPress dependencies */ /** * Internal dependencies */ function useSlot(name) { const registry = (0, _element.useContext)(_slotFillContext.default); const slot = registry.slots[name] || {}; const slotFills = registry.fills[name]; const fills = (0, _element.useMemo)(() => slotFills || [], [slotFills]); const updateSlot = (0, _element.useCallback)(fillProps => { registry.updateSlot(name, fillProps); }, [name, registry.updateSlot]); const unregisterSlot = (0, _element.useCallback)(slotRef => { registry.unregisterSlot(name, slotRef); }, [name, registry.unregisterSlot]); const registerFill = (0, _element.useCallback)(fillRef => { registry.registerFill(name, fillRef); }, [name, registry.registerFill]); const unregisterFill = (0, _element.useCallback)(fillRef => { registry.unregisterFill(name, fillRef); }, [name, registry.unregisterFill]); return { ...slot, updateSlot, unregisterSlot, fills, registerFill, unregisterFill }; } //# sourceMappingURL=use-slot.js.map