@moxy/next-layout
Version:
Add persistent and nested layouts to your Next.js projects in a declarative way
40 lines (31 loc) • 956 B
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
const validateLayoutTree = node => {
/* istanbul ignore if */
if (process.env.NODE_ENV === 'production') {
return;
}
if (!(0, _react.isValidElement)(node)) {
throw new TypeError('Only unary trees composed by react elements are supported as layouts');
}
if (node.props.children) {
validateLayoutTree(node.props.children);
}
};
const addPageToLayoutTree = (layoutNode, page) => (0, _react.cloneElement)(layoutNode, {
children: layoutNode.props.children ? addPageToLayoutTree(layoutNode.props.children, page) : page
});
const createFullTree = (layoutTree, page) => {
if (!layoutTree) {
return page;
}
validateLayoutTree(layoutTree);
return addPageToLayoutTree(layoutTree, page);
};
var _default = createFullTree;
exports.default = _default;
module.exports = exports.default;
;