export type RepeatMode = "off" | "all" | "one"; export function nextRepeatMode(mode: RepeatMode): RepeatMode { if (mode === "off") return "all"; if (mode === "all") return "one"; return "off"; } export function shuffleTracks(items: readonly T[], random: () => number = Math.random): T[] { const shuffled = [...items]; for (let index = shuffled.length - 1; index > 0; index -= 1) { const swapIndex = Math.floor(random() * (index + 1)); [shuffled[index], shuffled[swapIndex]] = [shuffled[swapIndex], shuffled[index]]; } return shuffled; }