export function mergeWithRemainder(input: { currentOrder: string[]; reorderedVisibleKeys: string[]; }): string[] { const reorderedSet = new Set(input.reorderedVisibleKeys); const remainder = input.currentOrder.filter((key) => !reorderedSet.has(key)); return [...input.reorderedVisibleKeys, ...remainder]; } export function hasVisibleOrderChanged(input: { currentOrder: string[]; reorderedVisibleKeys: string[]; }): boolean { const visibleSet = new Set(input.reorderedVisibleKeys); const currentVisible = input.currentOrder.filter((key) => visibleSet.has(key)); if (currentVisible.length !== input.reorderedVisibleKeys.length) { return true; } return input.reorderedVisibleKeys.some((key, index) => currentVisible[index] !== key); }