UNPKG

@moxy/next-layout

Version:

Add persistent and nested layouts to your Next.js projects in a declarative way

40 lines (31 loc) 956 B
"use strict"; 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;