add ColorUtil
This commit is contained in:
		
							parent
							
								
									67c361b9cd
								
							
						
					
					
						commit
						6db3a4fc6e
					
				
					 1 changed files with 443 additions and 0 deletions
				
			
		
							
								
								
									
										443
									
								
								src/utils/colorutil.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										443
									
								
								src/utils/colorutil.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,443 @@ | ||||||
|  | export interface Colors { | ||||||
|  | 
 | ||||||
|  |   // Custom list
 | ||||||
|  |   DEFAULT: number; | ||||||
|  |   WHITE: number; | ||||||
|  |   AQUA: number; | ||||||
|  |   GREEN: number; | ||||||
|  |   BLUE: number; | ||||||
|  |   YELLOW: number; | ||||||
|  |   PURPLE: number; | ||||||
|  |   LUMINOUS_VIVID_PINK: number; | ||||||
|  |   GOLD: number; | ||||||
|  |   ORANGE: number; | ||||||
|  |   RED: number; | ||||||
|  |   GREY: number; | ||||||
|  |   NAVY: number; | ||||||
|  |   DARK_AQUA: number; | ||||||
|  |   DARK_GREEN: number; | ||||||
|  |   DARK_BLUE: number; | ||||||
|  |   DARK_PURPLE: number; | ||||||
|  |   DARK_VIVID_PINK: number; | ||||||
|  |   DARK_GOLD: number; | ||||||
|  |   DARK_ORANGE: number; | ||||||
|  |   DARK_RED: number; | ||||||
|  |   DARK_GREY: number; | ||||||
|  |   DARKER_GREY: number; | ||||||
|  |   LIGHT_GREY: number; | ||||||
|  |   DARK_NAVY: number; | ||||||
|  |   BLURPLE: number; | ||||||
|  |   DARK_BLURPLE: number; | ||||||
|  |   GREYPLE: number; | ||||||
|  |   DARK_BUT_NOT_BLACK: number; | ||||||
|  |   NOT_QUITE_BLACK: number; | ||||||
|  | 
 | ||||||
|  |   // css color list
 | ||||||
|  |   aliceblue: number; | ||||||
|  |   antiquewhite: number; | ||||||
|  |   aqua: number; | ||||||
|  |   aquamarine: number; | ||||||
|  |   azure: number; | ||||||
|  |   beige: number; | ||||||
|  |   bisque: number; | ||||||
|  |   black: number; | ||||||
|  |   blanchedalmond: number; | ||||||
|  |   blue: number; | ||||||
|  |   blueviolet: number; | ||||||
|  |   brown: number; | ||||||
|  |   burlywood: number; | ||||||
|  |   cadetblue: number; | ||||||
|  |   chartreuse: number; | ||||||
|  |   chocolate: number; | ||||||
|  |   coral: number; | ||||||
|  |   cornflowerblue: number; | ||||||
|  |   cornsilk: number; | ||||||
|  |   crimson: number; | ||||||
|  |   cyan: number; | ||||||
|  |   darkblue: number; | ||||||
|  |   darkcyan: number; | ||||||
|  |   darkgoldenrod: number; | ||||||
|  |   darkgray: number; | ||||||
|  |   darkgreen: number; | ||||||
|  |   darkgrey: number; | ||||||
|  |   darkkhaki: number; | ||||||
|  |   darkmagenta: number; | ||||||
|  |   darkolivegreen: number; | ||||||
|  |   darkorange: number; | ||||||
|  |   darkorchid: number; | ||||||
|  |   darkred: number; | ||||||
|  |   darksalmon: number; | ||||||
|  |   darkseagreen: number; | ||||||
|  |   darkslateblue: number; | ||||||
|  |   darkslategray: number; | ||||||
|  |   darkslategrey: number; | ||||||
|  |   darkturquoise: number; | ||||||
|  |   darkviolet: number; | ||||||
|  |   deeppink: number; | ||||||
|  |   deepskyblue: number; | ||||||
|  |   dimgray: number; | ||||||
|  |   dimgrey: number; | ||||||
|  |   dodgerblue: number; | ||||||
|  |   firebrick: number; | ||||||
|  |   floralwhite: number; | ||||||
|  |   forestgreen: number; | ||||||
|  |   fuchsia: number; | ||||||
|  |   gainsboro: number; | ||||||
|  |   ghostwhite: number; | ||||||
|  |   goldenrod: number; | ||||||
|  |   gold: number; | ||||||
|  |   gray: number; | ||||||
|  |   green: number; | ||||||
|  |   greenyellow: number; | ||||||
|  |   grey: number; | ||||||
|  |   honeydew: number; | ||||||
|  |   hotpink: number; | ||||||
|  |   indianred: number; | ||||||
|  |   indigo: number; | ||||||
|  |   ivory: number; | ||||||
|  |   khaki: number; | ||||||
|  |   lavenderblush: number; | ||||||
|  |   lavender: number; | ||||||
|  |   lawngreen: number; | ||||||
|  |   lemonchiffon: number; | ||||||
|  |   lightblue: number; | ||||||
|  |   lightcoral: number; | ||||||
|  |   lightcyan: number; | ||||||
|  |   lightgoldenrodyellow: number; | ||||||
|  |   lightgray: number; | ||||||
|  |   lightgreen: number; | ||||||
|  |   lightgrey: number; | ||||||
|  |   lightpink: number; | ||||||
|  |   lightsalmon: number; | ||||||
|  |   lightseagreen: number; | ||||||
|  |   lightskyblue: number; | ||||||
|  |   lightslategray: number; | ||||||
|  |   lightslategrey: number; | ||||||
|  |   lightsteelblue: number; | ||||||
|  |   lightyellow: number; | ||||||
|  |   lime: number; | ||||||
|  |   limegreen: number; | ||||||
|  |   linen: number; | ||||||
|  |   magenta: number; | ||||||
|  |   maroon: number; | ||||||
|  |   mediumaquamarine: number; | ||||||
|  |   mediumblue: number; | ||||||
|  |   mediumorchid: number; | ||||||
|  |   mediumpurple: number; | ||||||
|  |   mediumseagreen: number; | ||||||
|  |   mediumslateblue: number; | ||||||
|  |   mediumspringgreen: number; | ||||||
|  |   mediumturquoise: number; | ||||||
|  |   mediumvioletred: number; | ||||||
|  |   midnightblue: number; | ||||||
|  |   mintcream: number; | ||||||
|  |   mistyrose: number; | ||||||
|  |   moccasin: number; | ||||||
|  |   navajowhite: number; | ||||||
|  |   navy: number; | ||||||
|  |   oldlace: number; | ||||||
|  |   olive: number; | ||||||
|  |   olivedrab: number; | ||||||
|  |   orange: number; | ||||||
|  |   orangered: number; | ||||||
|  |   orchid: number; | ||||||
|  |   palegoldenrod: number; | ||||||
|  |   palegreen: number; | ||||||
|  |   paleturquoise: number; | ||||||
|  |   palevioletred: number; | ||||||
|  |   papayawhip: number; | ||||||
|  |   peachpuff: number; | ||||||
|  |   peru: number; | ||||||
|  |   pink: number; | ||||||
|  |   plum: number; | ||||||
|  |   powderblue: number; | ||||||
|  |   purple: number; | ||||||
|  |   rebeccapurple: number; | ||||||
|  |   red: number; | ||||||
|  |   rosybrown: number; | ||||||
|  |   royalblue: number; | ||||||
|  |   saddlebrown: number; | ||||||
|  |   salmon: number; | ||||||
|  |   sandybrown: number; | ||||||
|  |   seagreen: number; | ||||||
|  |   seashell: number; | ||||||
|  |   sienna: number; | ||||||
|  |   silver: number; | ||||||
|  |   skyblue: number; | ||||||
|  |   slateblue: number; | ||||||
|  |   slategray: number; | ||||||
|  |   slategrey: number; | ||||||
|  |   snow: number; | ||||||
|  |   springgreen: number; | ||||||
|  |   steelblue: number; | ||||||
|  |   tan: number; | ||||||
|  |   teal: number; | ||||||
|  |   thistle: number; | ||||||
|  |   tomato: number; | ||||||
|  |   turquoise: number; | ||||||
|  |   violet: number; | ||||||
|  |   wheat: number; | ||||||
|  |   white: number; | ||||||
|  |   whitesmoke: number; | ||||||
|  |   yellow: number; | ||||||
|  |   yellowgreen: number | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // eslint-disable-next-line
 | ||||||
|  | export class ColorUtil { | ||||||
|  |   constructor() { | ||||||
|  |     throw new Error(`The ${this.constructor.name} class may not be instantiated!`) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Encodes color int into hex code | ||||||
|  |    * @param color The color as int | ||||||
|  |    */ | ||||||
|  |   static intToHex(color: number): string { | ||||||
|  |     if (!ColorUtil.validateColor(color)) throw new Error('Invalid color') | ||||||
|  |     return `#${color.toString(16)}` | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Validates hex color | ||||||
|  |    * @param color The color to validate | ||||||
|  |    */ | ||||||
|  |   static validateColor(color: number): boolean { | ||||||
|  |     if (color < 0 || color > 0xffffff) return false; | ||||||
|  |     return true; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Resolves RGB color array | ||||||
|  |    * @param color RGB color array | ||||||
|  |    */ | ||||||
|  |   static resolveRGB(color: [number, number, number]): number { | ||||||
|  |     return (color[0] << 16) + (color[1] << 8) + color[2] | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Resolves hex code | ||||||
|  |    * @param hexcode The hex code | ||||||
|  |    */ | ||||||
|  |   static resolveHex(hexcode: string): number { | ||||||
|  |     if (!ColorUtil.isHex(hexcode)) throw new Error('Invalid hex code') | ||||||
|  |     return parseInt(hexcode.replace('#', ''), 16) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Validates hex code | ||||||
|  |    * @param hexcode The hex code | ||||||
|  |    */ | ||||||
|  |   static isHex(hexcode: string): boolean { | ||||||
|  |     return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(hexcode) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Returns random hex code */ | ||||||
|  |   static randomHex(): string { | ||||||
|  |     const code = `#${Math.floor(Math.random() * (0xffffff + 1)).toString(16)}` | ||||||
|  |     if (!ColorUtil.isHex(code)) return '#000000' | ||||||
|  |     return code | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** | ||||||
|  |    * Resolves color by name | ||||||
|  |    * @param color The color name | ||||||
|  |    */ | ||||||
|  |   static resolveColor(color?: keyof Colors | 'RANDOM'): number { | ||||||
|  |     if (!color) return 0 // eslint-disable-line
 | ||||||
|  |     if (color === 'RANDOM') return Math.floor(Math.random() * (0xffffff + 1)) | ||||||
|  |     return ColorUtil.colorList[color] | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   /** Color list */ | ||||||
|  |   static get colorList(): Colors { | ||||||
|  |     return { | ||||||
|  |       // custom list
 | ||||||
|  |       DEFAULT: 0x000000, | ||||||
|  |       WHITE: 0xffffff, | ||||||
|  |       AQUA: 0x1abc9c, | ||||||
|  |       GREEN: 0x2ecc71, | ||||||
|  |       BLUE: 0x3498db, | ||||||
|  |       YELLOW: 0xffff00, | ||||||
|  |       PURPLE: 0x9b59b6, | ||||||
|  |       LUMINOUS_VIVID_PINK: 0xe91e63, | ||||||
|  |       GOLD: 0xf1c40f, | ||||||
|  |       ORANGE: 0xe67e22, | ||||||
|  |       RED: 0xe74c3c, | ||||||
|  |       GREY: 0x95a5a6, | ||||||
|  |       NAVY: 0x34495e, | ||||||
|  |       DARK_AQUA: 0x11806a, | ||||||
|  |       DARK_GREEN: 0x1f8b4c, | ||||||
|  |       DARK_BLUE: 0x206694, | ||||||
|  |       DARK_PURPLE: 0x71368a, | ||||||
|  |       DARK_VIVID_PINK: 0xad1457, | ||||||
|  |       DARK_GOLD: 0xc27c0e, | ||||||
|  |       DARK_ORANGE: 0xa84300, | ||||||
|  |       DARK_RED: 0x992d22, | ||||||
|  |       DARK_GREY: 0x979c9f, | ||||||
|  |       DARKER_GREY: 0x7f8c8d, | ||||||
|  |       LIGHT_GREY: 0xbcc0c0, | ||||||
|  |       DARK_NAVY: 0x2c3e50, | ||||||
|  |       BLURPLE: 0x7289da, | ||||||
|  |       DARK_BLURPLE: 0x4d5e94, | ||||||
|  |       GREYPLE: 0x99aab5, | ||||||
|  |       DARK_BUT_NOT_BLACK: 0x2c2f33, | ||||||
|  |       NOT_QUITE_BLACK: 0x23272a, | ||||||
|  | 
 | ||||||
|  |       // css color list
 | ||||||
|  |       aliceblue: 0xf0f8ff, | ||||||
|  |       antiquewhite: 0xfaebd7, | ||||||
|  |       aqua: 0x00ffff, | ||||||
|  |       aquamarine: 0x7fffd4, | ||||||
|  |       azure: 0xf0ffff, | ||||||
|  |       beige: 0xf5f5dc, | ||||||
|  |       bisque: 0xffe4c4, | ||||||
|  |       black: 0x000000, | ||||||
|  |       blanchedalmond: 0xffebcd, | ||||||
|  |       blue: 0x0000ff, | ||||||
|  |       blueviolet: 0x8a2be2, | ||||||
|  |       brown: 0xa52a2a, | ||||||
|  |       burlywood: 0xdeb887, | ||||||
|  |       cadetblue: 0x5f9ea0, | ||||||
|  |       chartreuse: 0x7fff00, | ||||||
|  |       chocolate: 0xd2691e, | ||||||
|  |       coral: 0xff7f50, | ||||||
|  |       cornflowerblue: 0x6495ed, | ||||||
|  |       cornsilk: 0xfff8dc, | ||||||
|  |       crimson: 0xdc143c, | ||||||
|  |       cyan: 0x00ffff, | ||||||
|  |       darkblue: 0x00008b, | ||||||
|  |       darkcyan: 0x008b8b, | ||||||
|  |       darkgoldenrod: 0xb8860b, | ||||||
|  |       darkgray: 0xa9a9a9, | ||||||
|  |       darkgreen: 0x006400, | ||||||
|  |       darkgrey: 0xa9a9a9, | ||||||
|  |       darkkhaki: 0xbdb76b, | ||||||
|  |       darkmagenta: 0x8b008b, | ||||||
|  |       darkolivegreen: 0x556b2f, | ||||||
|  |       darkorange: 0xff8c00, | ||||||
|  |       darkorchid: 0x9932cc, | ||||||
|  |       darkred: 0x8b0000, | ||||||
|  |       darksalmon: 0xe9967a, | ||||||
|  |       darkseagreen: 0x8fbc8f, | ||||||
|  |       darkslateblue: 0x483d8b, | ||||||
|  |       darkslategray: 0x2f4f4f, | ||||||
|  |       darkslategrey: 0x2f4f4f, | ||||||
|  |       darkturquoise: 0x00ced1, | ||||||
|  |       darkviolet: 0x9400d3, | ||||||
|  |       deeppink: 0xff1493, | ||||||
|  |       deepskyblue: 0x00bfff, | ||||||
|  |       dimgray: 0x696969, | ||||||
|  |       dimgrey: 0x696969, | ||||||
|  |       dodgerblue: 0x1e90ff, | ||||||
|  |       firebrick: 0xb22222, | ||||||
|  |       floralwhite: 0xfffaf0, | ||||||
|  |       forestgreen: 0x228b22, | ||||||
|  |       fuchsia: 0xff00ff, | ||||||
|  |       gainsboro: 0xdcdcdc, | ||||||
|  |       ghostwhite: 0xf8f8ff, | ||||||
|  |       goldenrod: 0xdaa520, | ||||||
|  |       gold: 0xffd700, | ||||||
|  |       gray: 0x808080, | ||||||
|  |       green: 0x008000, | ||||||
|  |       greenyellow: 0xadff2f, | ||||||
|  |       grey: 0x808080, | ||||||
|  |       honeydew: 0xf0fff0, | ||||||
|  |       hotpink: 0xff69b4, | ||||||
|  |       indianred: 0xcd5c5c, | ||||||
|  |       indigo: 0x4b0082, | ||||||
|  |       ivory: 0xfffff0, | ||||||
|  |       khaki: 0xf0e68c, | ||||||
|  |       lavenderblush: 0xfff0f5, | ||||||
|  |       lavender: 0xe6e6fa, | ||||||
|  |       lawngreen: 0x7cfc00, | ||||||
|  |       lemonchiffon: 0xfffacd, | ||||||
|  |       lightblue: 0xadd8e6, | ||||||
|  |       lightcoral: 0xf08080, | ||||||
|  |       lightcyan: 0xe0ffff, | ||||||
|  |       lightgoldenrodyellow: 0xfafad2, | ||||||
|  |       lightgray: 0xd3d3d3, | ||||||
|  |       lightgreen: 0x90ee90, | ||||||
|  |       lightgrey: 0xd3d3d3, | ||||||
|  |       lightpink: 0xffb6c1, | ||||||
|  |       lightsalmon: 0xffa07a, | ||||||
|  |       lightseagreen: 0x20b2aa, | ||||||
|  |       lightskyblue: 0x87cefa, | ||||||
|  |       lightslategray: 0x778899, | ||||||
|  |       lightslategrey: 0x778899, | ||||||
|  |       lightsteelblue: 0xb0c4de, | ||||||
|  |       lightyellow: 0xffffe0, | ||||||
|  |       lime: 0x00ff00, | ||||||
|  |       limegreen: 0x32cd32, | ||||||
|  |       linen: 0xfaf0e6, | ||||||
|  |       magenta: 0xff00ff, | ||||||
|  |       maroon: 0x800000, | ||||||
|  |       mediumaquamarine: 0x66cdaa, | ||||||
|  |       mediumblue: 0x0000cd, | ||||||
|  |       mediumorchid: 0xba55d3, | ||||||
|  |       mediumpurple: 0x9370db, | ||||||
|  |       mediumseagreen: 0x3cb371, | ||||||
|  |       mediumslateblue: 0x7b68ee, | ||||||
|  |       mediumspringgreen: 0x00fa9a, | ||||||
|  |       mediumturquoise: 0x48d1cc, | ||||||
|  |       mediumvioletred: 0xc71585, | ||||||
|  |       midnightblue: 0x191970, | ||||||
|  |       mintcream: 0xf5fffa, | ||||||
|  |       mistyrose: 0xffe4e1, | ||||||
|  |       moccasin: 0xffe4b5, | ||||||
|  |       navajowhite: 0xffdead, | ||||||
|  |       navy: 0x000080, | ||||||
|  |       oldlace: 0xfdf5e6, | ||||||
|  |       olive: 0x808000, | ||||||
|  |       olivedrab: 0x6b8e23, | ||||||
|  |       orange: 0xffa500, | ||||||
|  |       orangered: 0xff4500, | ||||||
|  |       orchid: 0xda70d6, | ||||||
|  |       palegoldenrod: 0xeee8aa, | ||||||
|  |       palegreen: 0x98fb98, | ||||||
|  |       paleturquoise: 0xafeeee, | ||||||
|  |       palevioletred: 0xdb7093, | ||||||
|  |       papayawhip: 0xffefd5, | ||||||
|  |       peachpuff: 0xffdab9, | ||||||
|  |       peru: 0xcd853f, | ||||||
|  |       pink: 0xffc0cb, | ||||||
|  |       plum: 0xdda0dd, | ||||||
|  |       powderblue: 0xb0e0e6, | ||||||
|  |       purple: 0x800080, | ||||||
|  |       rebeccapurple: 0x663399, | ||||||
|  |       red: 0xff0000, | ||||||
|  |       rosybrown: 0xbc8f8f, | ||||||
|  |       royalblue: 0x4169e1, | ||||||
|  |       saddlebrown: 0x8b4513, | ||||||
|  |       salmon: 0xfa8072, | ||||||
|  |       sandybrown: 0xf4a460, | ||||||
|  |       seagreen: 0x2e8b57, | ||||||
|  |       seashell: 0xfff5ee, | ||||||
|  |       sienna: 0xa0522d, | ||||||
|  |       silver: 0xc0c0c0, | ||||||
|  |       skyblue: 0x87ceeb, | ||||||
|  |       slateblue: 0x6a5acd, | ||||||
|  |       slategray: 0x708090, | ||||||
|  |       slategrey: 0x708090, | ||||||
|  |       snow: 0xfffafa, | ||||||
|  |       springgreen: 0x00ff7f, | ||||||
|  |       steelblue: 0x4682b4, | ||||||
|  |       tan: 0xd2b48c, | ||||||
|  |       teal: 0x008080, | ||||||
|  |       thistle: 0xd8bfd8, | ||||||
|  |       tomato: 0xff6347, | ||||||
|  |       turquoise: 0x40e0d0, | ||||||
|  |       violet: 0xee82ee, | ||||||
|  |       wheat: 0xf5deb3, | ||||||
|  |       white: 0xffffff, | ||||||
|  |       whitesmoke: 0xf5f5f5, | ||||||
|  |       yellow: 0xffff00, | ||||||
|  |       yellowgreen: 0x9acd32 | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   static toJSON(): Colors { | ||||||
|  |     return ColorUtil.colorList | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue