react-hook-layout
Version:
Layout management in React.
32 lines (24 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLayout = useLayout;
var _react = require("react");
var _slots = require("./slots");
var layoutComponents = [];
var renderFunctions = [];
function createLayoutRender(LayoutComponent) {
return function (props) {
(0, _slots.distributeChildrenToSlots)(props && props.children);
return /*#__PURE__*/(0, _react.createElement)(LayoutComponent || _react.Fragment, props);
};
}
function useLayout(LayoutComponent) {
var wmIndex = layoutComponents.indexOf(LayoutComponent);
if (wmIndex === -1) {
layoutComponents.push(LayoutComponent);
wmIndex = renderFunctions.push(createLayoutRender(LayoutComponent)) - 1;
}
return renderFunctions[wmIndex];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtbGF5b3V0LmpzIl0sIm5hbWVzIjpbImxheW91dENvbXBvbmVudHMiLCJyZW5kZXJGdW5jdGlvbnMiLCJjcmVhdGVMYXlvdXRSZW5kZXIiLCJMYXlvdXRDb21wb25lbnQiLCJwcm9wcyIsImNoaWxkcmVuIiwiRnJhZ21lbnQiLCJ1c2VMYXlvdXQiLCJ3bUluZGV4IiwiaW5kZXhPZiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxFQUF4Qjs7QUFFQSxTQUFTQyxrQkFBVCxDQUE0QkMsZUFBNUIsRUFBNkM7QUFDM0MsU0FBTyxVQUFBQyxLQUFLLEVBQUk7QUFDZCwwQ0FBMEJBLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxRQUF6QztBQUNBLHdCQUFPLDBCQUFjRixlQUFlLElBQUlHLGVBQWpDLEVBQTJDRixLQUEzQyxDQUFQO0FBQ0QsR0FIRDtBQUlEOztBQUVNLFNBQVNHLFNBQVQsQ0FBbUJKLGVBQW5CLEVBQW9DO0FBQ3pDLE1BQUlLLE9BQU8sR0FBR1IsZ0JBQWdCLENBQUNTLE9BQWpCLENBQXlCTixlQUF6QixDQUFkOztBQUVBLE1BQUlLLE9BQU8sS0FBSyxDQUFDLENBQWpCLEVBQW9CO0FBQ2xCUixJQUFBQSxnQkFBZ0IsQ0FBQ1UsSUFBakIsQ0FBc0JQLGVBQXRCO0FBQ0FLLElBQUFBLE9BQU8sR0FBR1AsZUFBZSxDQUFDUyxJQUFoQixDQUFxQlIsa0JBQWtCLENBQUNDLGVBQUQsQ0FBdkMsSUFBNEQsQ0FBdEU7QUFDRDs7QUFDRCxTQUFPRixlQUFlLENBQUNPLE9BQUQsQ0FBdEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgeyBkaXN0cmlidXRlQ2hpbGRyZW5Ub1Nsb3RzIH0gZnJvbSBcIi4vc2xvdHNcIjtcclxuXHJcbmNvbnN0IGxheW91dENvbXBvbmVudHMgPSBbXTtcclxuY29uc3QgcmVuZGVyRnVuY3Rpb25zID0gW107XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVMYXlvdXRSZW5kZXIoTGF5b3V0Q29tcG9uZW50KSB7XHJcbiAgcmV0dXJuIHByb3BzID0+IHtcclxuICAgIGRpc3RyaWJ1dGVDaGlsZHJlblRvU2xvdHMocHJvcHMgJiYgcHJvcHMuY2hpbGRyZW4pO1xyXG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoTGF5b3V0Q29tcG9uZW50IHx8IEZyYWdtZW50LCBwcm9wcyk7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVzZUxheW91dChMYXlvdXRDb21wb25lbnQpIHtcclxuICBsZXQgd21JbmRleCA9IGxheW91dENvbXBvbmVudHMuaW5kZXhPZihMYXlvdXRDb21wb25lbnQpO1xyXG5cclxuICBpZiAod21JbmRleCA9PT0gLTEpIHtcclxuICAgIGxheW91dENvbXBvbmVudHMucHVzaChMYXlvdXRDb21wb25lbnQpO1xyXG4gICAgd21JbmRleCA9IHJlbmRlckZ1bmN0aW9ucy5wdXNoKGNyZWF0ZUxheW91dFJlbmRlcihMYXlvdXRDb21wb25lbnQpKSAtIDE7XHJcbiAgfVxyXG4gIHJldHVybiByZW5kZXJGdW5jdGlvbnNbd21JbmRleF07XHJcbn1cclxuIl19