canner
Version:
Build CMS in few lines of code for different data sources
43 lines (34 loc) • 1.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.flattenItems = flattenItems;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _lodash = require("lodash");
function flattenItems(items) {
var fields = [];
function loop(item) {
var keyName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
if (item.keyName) {
keyName = "".concat(keyName).concat(keyName ? '.' : '').concat(item.keyName);
}
if (item.items && !item.items.type) {
(0, _lodash.forEach)(item.items, function (item) {
loop(item, keyName);
});
} else if (item.items && item.items.type && item.items.items) {
(0, _lodash.forEach)(item.items.items, function (item) {
loop(item, keyName);
});
} else {
fields.push((0, _objectSpread2.default)({}, item, {
keyName: keyName
}));
}
}
(0, _lodash.forEach)(items, function (item) {
loop(item, '');
});
return fields;
}