@wordpress/block-editor
Version:
73 lines (58 loc) • 1.55 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LayoutProvider = void 0;
exports.LayoutStyle = LayoutStyle;
exports.defaultLayout = void 0;
exports.useLayout = useLayout;
var _element = require("@wordpress/element");
var _layouts = require("../../layouts");
var _useSetting = _interopRequireDefault(require("../use-setting"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const defaultLayout = {
type: 'default'
};
exports.defaultLayout = defaultLayout;
const Layout = (0, _element.createContext)(defaultLayout);
/**
* Allows to define the layout.
*/
const LayoutProvider = Layout.Provider;
/**
* React hook used to retrieve the layout config.
*/
exports.LayoutProvider = LayoutProvider;
function useLayout() {
return (0, _element.useContext)(Layout);
}
function LayoutStyle({
layout = {},
css,
...props
}) {
const layoutType = (0, _layouts.getLayoutType)(layout.type);
const blockGapSupport = (0, _useSetting.default)('spacing.blockGap');
const hasBlockGapSupport = blockGapSupport !== null;
if (layoutType) {
if (css) {
return (0, _element.createElement)("style", null, css);
}
const layoutStyle = layoutType.getLayoutStyle?.({
hasBlockGapSupport,
layout,
...props
});
if (layoutStyle) {
return (0, _element.createElement)("style", null, layoutStyle);
}
}
return null;
}
//# sourceMappingURL=layout.js.map