mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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;
 | |
| }
 |