react-layouts-builder
Version:
Lightweight and powerfull react layouts drag and drop
36 lines (32 loc) • 1.43 kB
JavaScript
import React, { memo } from 'react';
import { DragNDrop } from './DragNDrop.js';
var LayoutRecursive = /*#__PURE__*/memo(function (_a) {
var _b;
var layouts = _a.layouts,
_c = _a.level,
level = _c === void 0 ? 1 : _c,
onDrop = _a.onDrop,
renderBlock = _a.renderBlock;
var hasChildren = layouts.childrens && layouts.childrens.length > 0;
var isCol = layouts.display && layouts.display.orientation === 'col';
return /*#__PURE__*/React.createElement("div", {
className: "".concat(hasChildren && !isCol ? 'lb-spacing' : '', " ").concat(isCol ? 'lb-col' : 'lb-w-full'),
"data-key": layouts['@id'] || layouts.id
}, /*#__PURE__*/React.createElement(DragNDrop, {
layout: layouts,
handleDrop: onDrop,
key: layouts['@id'] || layouts.id
}, /*#__PURE__*/React.createElement(React.Fragment, null, hasChildren ? (_b = layouts === null || layouts === void 0 ? void 0 : layouts.childrens) === null || _b === void 0 ? void 0 : _b.map(function (container) {
return /*#__PURE__*/React.createElement(LayoutRecursive, {
layouts: container,
onDrop: onDrop,
renderBlock: renderBlock,
key: container['@id'] || container.id,
level: level + 1,
parentId: layouts['@id'] || layouts.id
});
}) : /*#__PURE__*/React.createElement("div", {
className: "lb-block"
}, layouts.block ? renderBlock(layouts.block) : null))));
});
export { LayoutRecursive };