@wordpress/components
Version:
UI components for WordPress.
115 lines (111 loc) • 3.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Fill = Fill;
exports.Provider = Provider;
exports.Slot = void 0;
exports.UnforwardedSlot = UnforwardedSlot;
exports.createSlotFill = createSlotFill;
Object.defineProperty(exports, "useSlot", {
enumerable: true,
get: function () {
return _useSlot.default;
}
});
Object.defineProperty(exports, "useSlotFills", {
enumerable: true,
get: function () {
return _useSlotFills.default;
}
});
var _element = require("@wordpress/element");
var _fill = _interopRequireDefault(require("./fill"));
var _slot = _interopRequireDefault(require("./slot"));
var _fill2 = _interopRequireDefault(require("./bubbles-virtually/fill"));
var _slot2 = _interopRequireDefault(require("./bubbles-virtually/slot"));
var _slotFillProvider = _interopRequireDefault(require("./bubbles-virtually/slot-fill-provider"));
var _provider = _interopRequireDefault(require("./provider"));
var _slotFillContext = _interopRequireDefault(require("./bubbles-virtually/slot-fill-context"));
var _jsxRuntime = require("react/jsx-runtime");
var _useSlot = _interopRequireDefault(require("./bubbles-virtually/use-slot"));
var _useSlotFills = _interopRequireDefault(require("./bubbles-virtually/use-slot-fills"));
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function Fill(props) {
// We're adding both Fills here so they can register themselves before
// their respective slot has been registered. Only the Fill that has a slot
// will render. The other one will return null.
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_fill.default, {
...props
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_fill2.default, {
...props
})]
});
}
function UnforwardedSlot(props, ref) {
const {
bubblesVirtually,
...restProps
} = props;
if (bubblesVirtually) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_slot2.default, {
...restProps,
ref: ref
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_slot.default, {
...restProps
});
}
const Slot = exports.Slot = (0, _element.forwardRef)(UnforwardedSlot);
function Provider({
children,
passthrough = false
}) {
const parent = (0, _element.useContext)(_slotFillContext.default);
if (!parent.isDefault && passthrough) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: children
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_provider.default, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_slotFillProvider.default, {
children: children
})
});
}
Provider.displayName = 'SlotFillProvider';
function createSlotFill(key) {
const baseName = typeof key === 'symbol' ? key.description : key;
const FillComponent = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(Fill, {
name: key,
...props
});
FillComponent.displayName = `${baseName}Fill`;
const SlotComponent = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(Slot, {
name: key,
...props
});
SlotComponent.displayName = `${baseName}Slot`;
/**
* @deprecated 6.8.0
* Please use `slotFill.name` instead of `slotFill.Slot.__unstableName`.
*/
SlotComponent.__unstableName = key;
return {
name: key,
Fill: FillComponent,
Slot: SlotComponent
};
}
//# sourceMappingURL=index.js.map