/** * Retrieves the visible columns structure based on the stored columns and default visible columns. * @param storedColumns - The array of stored columns. * @param defaultVisibleColumns - The array of default visible columns. * @returns The updated array of visible columns structure. */ import { KettalVisibleColumn } from '..' export default function getVisibleColumnsStructure (storedColumns: KettalVisibleColumn[], defaultVisibleColumns: KettalVisibleColumn[]): KettalVisibleColumn[] { const storedColumnsKeys = new Set(storedColumns.map(column => column.name)) const defaultVisibleColumnsKeys = defaultVisibleColumns.map(column => column.name) const newColumns: KettalVisibleColumn[] = [] if (storedColumns.length !== defaultVisibleColumns.length) { return defaultVisibleColumns } storedColumnsKeys.forEach(column => { if (defaultVisibleColumnsKeys.includes(column)) { newColumns.push(storedColumns.find(storedColumn => storedColumn.name === column) as KettalVisibleColumn) } } ) defaultVisibleColumns.forEach(column => { if (!storedColumnsKeys.has(column.name)) { newColumns.push(column) } } ) return newColumns }