es-grid-template
Version:
es-grid-template
68 lines (65 loc) • 1.77 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = traverseColumn;
var _isLeafNode = _interopRequireDefault(require("./isLeafNode"));
function normalizeAsArray(input) {
if (input == null) {
return [];
} else if (Array.isArray(input)) {
return input;
} else {
return [input];
}
}
/** @deprecated This API is deprecated. Please use `makeRecursiveMapper` instead. */
function traverseColumn(fn) {
return ({
columns,
dataSource
}) => {
return {
dataSource,
columns: dfs(columns, 0).result
};
// eslint-disable-next-line @typescript-eslint/no-shadow
function dfs(columns, parentStartColIndex) {
let flatColCount = 0;
const result = [];
for (const col of columns) {
const startColIndex = parentStartColIndex + flatColCount;
let unNormalized;
if ((0, _isLeafNode.default)(col)) {
unNormalized = fn(col, {
range: {
start: startColIndex,
end: startColIndex + 1
},
dataSource
});
flatColCount += 1;
} else {
const dfsResult = dfs(col.children ?? [], startColIndex);
unNormalized = fn({
...col,
children: dfsResult.result
}, {
range: {
start: startColIndex,
end: startColIndex + dfsResult.flatColCount
},
dataSource
});
flatColCount += dfsResult.flatColCount;
}
result.push(...normalizeAsArray(unNormalized));
}
return {
result,
flatColCount
};
}
};
}