react-layouts-builder
Version:
Lightweight and powerfull react layouts drag and drop
44 lines (37 loc) • 1.44 kB
JavaScript
import { __assign } from '../../node_modules/tslib/tslib.es6.js';
import { insertLayout } from './addHelpers.js';
import { removeLayout } from './removeHelpers.js';
var moveBlock = function moveBlock(data, options) {
var item = options.item,
targetItemId = options.targetItemId,
position = options.position;
var itemId = item['@id'] || item.id;
if (!itemId || !options.targetItemId) return data;
var copyLayout = JSON.parse(JSON.stringify(data));
var removedItem = removeLayout(copyLayout, itemId);
var addToTarget = insertLayout({
layouts: removedItem,
moved: item,
targetId: targetItemId,
position: position
});
return removeEmptyChildren(addToTarget);
};
function removeEmptyChildren(layout) {
var updatedChildrens = ((layout === null || layout === void 0 ? void 0 : layout.childrens) || []).map(function (child) {
return removeEmptyChildren(child);
}).filter(function (child) {
return child;
});
if (updatedChildrens.length === 0 && !(layout === null || layout === void 0 ? void 0 : layout.block)) {
return null;
}
var updatedLayout = __assign(__assign({}, layout), {
childrens: updatedChildrens.length > 0 ? updatedChildrens : undefined
});
if (updatedChildrens.length === 0 && !(updatedLayout === null || updatedLayout === void 0 ? void 0 : updatedLayout.block)) {
return null;
}
return updatedLayout;
}
export { moveBlock, removeEmptyChildren };