export const appendCapped = ( prev: T[], next: T[], max: number, onDrop?: (item: T) => void ) => { const merged = [...prev, ...next] if (merged.length <= max) return merged const dropCount = merged.length - max if (onDrop) { for (let i = 0; i < dropCount; i += 1) onDrop(merged[i]) } return merged.slice(dropCount) }