// 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. exports.colors = _.shuffle(stream_colors); exports.reset = function () { exports.unused_colors = exports.colors.slice(); }; exports.reset(); exports.claim_color = function (color) { const i = exports.unused_colors.indexOf(color); if (i < 0) { return; } exports.unused_colors.splice(i, 1); if (exports.unused_colors.length === 0) { exports.reset(); } }; exports.claim_colors = function (subs) { const colors = new Set(subs.map((sub) => sub.color)); colors.forEach(exports.claim_color); }; exports.pick_color = function () { const color = exports.unused_colors[0]; exports.claim_color(color); return color; }; window.color_data = exports;