import _ from "lodash"; export let unused_colors; // These colors are used now for streams. const stream_colors = [ "#76ce90", "#fae589", "#a6c7e5", "#e79ab5", "#bfd56f", "#f4ae55", "#b0a5fd", "#addfe5", "#f5ce6e", "#c2726a", "#94c849", "#bd86e5", "#ee7e4a", "#a6dcbf", "#95a5fd", "#53a063", "#9987e1", "#e4523d", "#c2c2c2", "#4f8de4", "#c6a8ad", "#e7cc4d", "#c8bebf", "#a47462", ]; // Shuffle our colors on page load to prevent // bias toward "early" colors. export const colors = _.shuffle(stream_colors); export function reset() { unused_colors = colors.slice(); } reset(); export function claim_color(color) { const i = unused_colors.indexOf(color); if (i < 0) { return; } unused_colors.splice(i, 1); if (unused_colors.length === 0) { reset(); } } export function claim_colors(subs) { const colors = new Set(subs.map((sub) => sub.color)); for (const color of colors) { claim_color(color); } } export function pick_color() { const color = unused_colors[0]; claim_color(color); return color; }