const recursion = (treeData: any, config: any, level: any) => { const { dataKey = 'key', dataLabel = 'title', childrenKey = 'children', levelKey = 'level', onlyChildSelected = true, }: { dataKey: string, dataLabel: string, childrenKey: string, levelKey: string, onlyChildSelected: boolean, } = config; const newTreeData = []; for (let i = 0, len = treeData.length; i < len; i += 1) { const treeDataItem = treeData[i]; treeDataItem.key = treeDataItem[dataKey]; treeDataItem.title = treeDataItem[dataLabel]; treeDataItem.label = treeDataItem[dataLabel]; treeDataItem.value = treeDataItem[dataKey]; treeDataItem.level = treeDataItem[levelKey]; if (treeDataItem[childrenKey] && treeDataItem[childrenKey].length) { treeDataItem.key = onlyChildSelected ? `${level}-${treeDataItem[dataKey]}` : treeDataItem[dataKey]; treeDataItem.value = onlyChildSelected ? `${level}-${treeDataItem[dataKey]}` : treeDataItem[dataKey]; treeDataItem.selectable = !onlyChildSelected; // eslint-disable-next-line no-param-reassign level += 1; treeDataItem.children = recursion(treeDataItem[childrenKey], config, level); } newTreeData.push(treeDataItem); } return newTreeData; }; const format = (treeData: any, config: any) => { const i = 1; recursion(treeData, config, i); }; export default format;