|   | 
| export const extractNavMenus = (data) => { | 
|     if (!data) { | 
|         return; | 
|     } | 
|     const navMenus = []; | 
|     const traverse = (nodes) => { | 
|         nodes.forEach((node) => { | 
|             if (!node.children) { | 
|                 navMenus.push(node); | 
|             } else { | 
|                 traverse(node.children); | 
|             } | 
|         }); | 
|     }; | 
|     traverse(data); | 
|     return navMenus; | 
| }; | 
|   | 
| export const integrateParams = (_params) => { | 
|     const { pagination, sort, filter, ...other } = _params; | 
|     return { | 
|         current: pagination?.page, | 
|         pageSize: pagination?.perPage, | 
|         orderBy: sort?.field + ' ' + sort?.order, | 
|         ...filter, | 
|         ...other | 
|     } | 
| } | 
|   | 
| export const camelToPascalWithSpaces = (camelCaseString) => { | 
|     if (typeof camelCaseString !== 'string') { | 
|         return ''; | 
|     } | 
|     if (camelCaseString.trim() === '') { | 
|         return ''; | 
|     } | 
|     return camelCaseString | 
|         .replace(/([a-z0-9])([A-Z])/g, '$1 $2') | 
|         .replace(/^\w/, (c) => c.toUpperCase()); | 
| } | 
|   | 
| export const flattenTree = (nodes, depth = 0) => { | 
|     let result = []; | 
|     nodes.forEach(node => { | 
|         result.push({ ...node, depth }); | 
|         if (node.children && node.children.length > 0) { | 
|             result = result.concat(flattenTree(node.children, depth + 1)); | 
|         } | 
|     }); | 
|     return result; | 
| }; |