Skip to content

Instantly share code, notes, and snippets.

@Gandum2077
Created January 30, 2020 05:31
Show Gist options
  • Select an option

  • Save Gandum2077/5b2473b2cf570b41eaa488ad3a986161 to your computer and use it in GitHub Desktop.

Select an option

Save Gandum2077/5b2473b2cf570b41eaa488ad3a986161 to your computer and use it in GitHub Desktop.
创建纯色image对象,可以指定大小和颜色,支持全部html颜色,部分系统颜色,并可以自行添加
const htmlColors = {
//Pink Colors
"Pink": "#FFC0CB",
"LightPink": "#FFB6C1",
"HotPink": "#FF69B4",
"DeepPink": "#FF1493",
"PaleVioletRed": "#DB7093",
"MediumVioletRed": "#C71585",
//Purple Colors
"Lavender": "#E6E6FA",
"Thistle": "#D8BFD8",
"Plum": "#DDA0DD",
"Orchid": "#DA70D6",
"Violet": "#EE82EE",
"Fuchsia": "#FF00FF",
"Magenta": "#FF00FF",
"MediumOrchid": "#BA55D3",
"DarkOrchid": "#9932CC",
"DarkViolet": "#9400D3",
"BlueViolet": "#8A2BE2",
"DarkMagenta": "#8B008B",
"Purple": "#800080",
"MediumPurple": "#9370DB",
"MediumSlateBlue": "#7B68EE",
"SlateBlue": "#6A5ACD",
"DarkSlateBlue": "#483D8B",
"RebeccaPurple": "#663399",
"Indigo ": "#4B0082",
//Red Colors
"LightSalmon": "#FFA07A",
"Salmon": "#FA8072",
"DarkSalmon": "#E9967A",
"LightCoral": "#F08080",
"IndianRed ": "#CD5C5C",
"Crimson": "#DC143C",
"Red": "#FF0000",
"FireBrick": "#B22222",
"DarkRed": "#8B0000",
//Orange Colors
"Orange": "#FFA500",
"DarkOrange": "#FF8C00",
"Coral": "#FF7F50",
"Tomato": "#FF6347",
"OrangeRed": "#FF4500",
//Yellow Colors
"Gold": "#FFD700",
"Yellow": "#FFFF00",
"LightYellow": "#FFFFE0",
"LemonChiffon": "#FFFACD",
"LightGoldenRodYellow": "#FAFAD2",
"PapayaWhip": "#FFEFD5",
"Moccasin": "#FFE4B5",
"PeachPuff": "#FFDAB9",
"PaleGoldenRod": "#EEE8AA",
"Khaki": "#F0E68C",
"DarkKhaki": "#BDB76B",
//Green Colors
"GreenYellow": "#ADFF2F",
"Chartreuse": "#7FFF00",
"LawnGreen": "#7CFC00",
"Lime": "#00FF00",
"LimeGreen": "#32CD32",
"PaleGreen": "#98FB98",
"LightGreen": "#90EE90",
"MediumSpringGreen": "#00FA9A",
"SpringGreen": "#00FF7F",
"MediumSeaGreen": "#3CB371",
"SeaGreen": "#2E8B57",
"ForestGreen": "#228B22",
"Green": "#008000",
"DarkGreen": "#006400",
"YellowGreen": "#9ACD32",
"OliveDrab": "#6B8E23",
"DarkOliveGreen": "#556B2F",
"MediumAquaMarine": "#66CDAA",
"DarkSeaGreen": "#8FBC8F",
"LightSeaGreen": "#20B2AA",
"DarkCyan": "#008B8B",
"Teal": "#008080",
//Cyan Colors
"Aqua": "#00FFFF",
"Cyan": "#00FFFF",
"LightCyan": "#E0FFFF",
"PaleTurquoise": "#AFEEEE",
"Aquamarine": "#7FFFD4",
"Turquoise": "#40E0D0",
"MediumTurquoise": "#48D1CC",
"DarkTurquoise": "#00CED1",
//Blue Colors
"CadetBlue": "#5F9EA0",
"SteelBlue": "#4682B4",
"LightSteelBlue": "#B0C4DE",
"LightBlue": "#ADD8E6",
"PowderBlue": "#B0E0E6",
"LightSkyBlue": "#87CEFA",
"SkyBlue": "#87CEEB",
"CornflowerBlue": "#6495ED",
"DeepSkyBlue": "#00BFFF",
"DodgerBlue": "#1E90FF",
"RoyalBlue": "#4169E1",
"Blue": "#0000FF",
"MediumBlue": "#0000CD",
"DarkBlue": "#00008B",
"Navy": "#000080",
"MidnightBlue": "#191970",
//Brown Colors
"Cornsilk": "#FFF8DC",
"BlanchedAlmond": "#FFEBCD",
"Bisque": "#FFE4C4",
"NavajoWhite": "#FFDEAD",
"Wheat": "#F5DEB3",
"BurlyWood": "#DEB887",
"Tan": "#D2B48C",
"RosyBrown": "#BC8F8F",
"SandyBrown": "#F4A460",
"GoldenRod": "#DAA520",
"DarkGoldenRod": "#B8860B",
"Peru": "#CD853F",
"Chocolate": "#D2691E",
"Olive": "#808000",
"SaddleBrown": "#8B4513",
"Sienna": "#A0522D",
"Brown": "#A52A2A",
"Maroon": "#800000",
//White Colors
"White": "#FFFFFF",
"Snow": "#FFFAFA",
"HoneyDew": "#F0FFF0",
"MintCream": "#F5FFFA",
"Azure": "#F0FFFF",
"AliceBlue": "#F0F8FF",
"GhostWhite": "#F8F8FF",
"WhiteSmoke": "#F5F5F5",
"SeaShell": "#FFF5EE",
"Beige": "#F5F5DC",
"OldLace": "#FDF5E6",
"FloralWhite": "#FFFAF0",
"Ivory": "#FFFFF0",
"AntiqueWhite": "#FAEBD7",
"Linen": "#FAF0E6",
"LavenderBlush": "#FFF0F5",
"MistyRose": "#FFE4E1",
//Grey Colors
"Gainsboro": "#DCDCDC",
"LightGray": "#D3D3D3",
"Silver": "#C0C0C0",
"DarkGray": "#A9A9A9",
"DimGray": "#696969",
"Gray": "#808080",
"LightSlateGray": "#778899",
"SlateGray": "#708090",
"DarkSlateGray": "#2F4F4F",
"Black": "#000000"
}
const normalizedHtmlColors = Object.entries(htmlColors).map(n => {
return {
name: n[0].toLowerCase(),
hex: n[1].toUpperCase()
}
})
const imageBase64 = {
// html colors
"#FFC0CB": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f+A0AAVMAotDMHBLAAAAAElFTkSuQmCC",
"#FFB6C1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4v+0gAAUuAnc/XrdIAAAAAElFTkSuQmCC",
"#FF69B4": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4n7kFAASHAh2FoQXzAAAAAElFTkSuQmCC",
"#FF1493": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4LzIZAAO8AacYIpQlAAAAAElFTkSuQmCC",
"#DB7093": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4XTAZAAQIAd++BIedAAAAAElFTkSuQmCC",
"#C71585": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4LtoKAAMIAWLwG29FAAAAAElFTkSuQmCC",
"#E6E6FA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN49uwXAAV8Asd0iBsyAAAAAElFTkSuQmCC",
"#D8BFD8": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4sf8GAATiAnBrn1BTAAAAAElFTkSuQmCC",
"#DDA0DD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4u+AuAAS4AltNoXXBAAAAAElFTkSuQmCC",
"#DA70D6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4VXANAARIAiGwH6jEAAAAAElFTkSuQmCC",
"#EE82EE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN41/QOAATAAl+7kINnAAAAAElFTkSuQmCC",
"#FF00FF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z/AfAAQAAf8iCjrwAAAAAElFTkSuQmCC",
"#BA55D3": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPYFXoZAAOvAeOW6/qNAAAAAElFTkSuQmCC",
"#9932CC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOYaXQGAAL/AZgC7lcnAAAAAElFTkSuQmCC",
"#9400D3": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOYwnAZAAKTAWgPdvj4AAAAAElFTkSuQmCC",
"#8A2BE2": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPo0n4EAALaAZiu7yRNAAAAAElFTkSuQmCC",
"#8B008B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPoZugGAAIwARfk8dXaAAAAAElFTkSuQmCC",
"#800080": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoYGgAAAIEAQHNMi3gAAAAAElFTkSuQmCC",
"#9370DB": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOYXHAbAAN4Ad8wuoE7AAAAAElFTkSuQmCC",
"#7B68EE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOozngHAAMzAdI2q2B+AAAAAElFTkSuQmCC",
"#6A5ACD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPIijoLAALDAZIY7dzDAAAAAElFTkSuQmCC",
"#483D8B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPwsO0GAAHhAREWPjBTAAAAAElFTkSuQmCC",
"#663399": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNIM54JAAI1ATNZtdtqAAAAAElFTkSuQmCC",
"#4B0082": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPwZmgCAAFnAM59PFG9AAAAAElFTkSuQmCC",
"#FFA07A": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4v6AKAAS7AhrM0oU6AAAAAElFTkSuQmCC",
"#FA8072": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP41VAEAARkAe1drCSRAAAAAElFTkSuQmCC",
"#E9967A": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN4Oa0KAARlAfpSNMFpAAAAAElFTkSuQmCC",
"#F08080": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP40NAAAARUAfE2oTvOAAAAAElFTkSuQmCC",
"#CD5C5C": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4GxMDAAN/AYa1ZeF4AAAAAElFTkSuQmCC",
"#DC143C": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4I2IDAAL8AS3VzMq8AAAAAElFTkSuQmCC",
"#FF0000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC",
"#B22222": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPYpKQEAAKAAPdAb8ZtAAAAAElFTkSuQmCC",
"#8B0000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPoZmAAAAGlAIwe+jwqAAAAAElFTkSuQmCC",
"#FFA500": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4v5QBAARLAaU/Dnq2AAAAAElFTkSuQmCC",
"#FF8C00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP438MAAAQZAYzvQbwjAAAAAElFTkSuQmCC",
"#FF7F50": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4Xx8AAARPAc9X/RLgAAAAAElFTkSuQmCC",
"#FF6347": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4n+wOAAQOAaoOR2bDAAAAAElFTkSuQmCC",
"#FF4500": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP478oAAAOLAUV+7IS+AAAAAElFTkSuQmCC",
"#FFD700": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f50BAASvAdfA0BA+AAAAAElFTkSuQmCC",
"#FFFF00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/58BAAT/Af9dfQKHAAAAAElFTkSuQmCC",
"#FFFFE0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8BAAXfAt9GeRzsAAAAAElFTkSuQmCC",
"#FFFACD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+ssAAXCAsdpSBqsAAAAAElFTkSuQmCC",
"#FAFAD2": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP49esSAAW4Asefno0/AAAAAElFTkSuQmCC",
"#FFEFD5": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//4qAAW0AsRDgg+AAAAAAElFTkSuQmCC",
"#FFE4B5": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/2QrAAV+AplKhMuIAAAAAElFTkSuQmCC",
"#FFDAB9": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f2snAAVuApNkxrSuAAAAAElFTkSuQmCC",
"#EEE8AA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN492IVAAVIAoGRHoLhAAAAAElFTkSuQmCC",
"#F0E68C": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP48KwHAAUsAmMuaCxZAAAAAElFTkSuQmCC",
"#BDB76B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPYuz0bAAQUAeAonZ09AAAAAElFTkSuQmCC",
"#ADFF2F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNY+18fAAQ4Adz+1YNGAAAAAElFTkSuQmCC",
"#7FFF00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOo/88AAAN/AX9W/Nn6AAAAAElFTkSuQmCC",
"#7CFC00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOo+cMAAANwAXm1DFgBAAAAAElFTkSuQmCC",
"#00FF00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg+M8AAAICAQB7CYF4AAAAAElFTkSuQmCC",
"#32CD32": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMwOmsEAAJmATKepAdTAAAAAElFTkSuQmCC",
"#98FB98": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOY8XsGAARaAiwVOmyLAAAAAElFTkSuQmCC",
"#90EE90": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOY8G4CAAQgAg+M5gGeAAAAAElFTkSuQmCC",
"#00FA9A": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg+DULAAKSAZWstssXAAAAAElFTkSuQmCC",
"#00FF7F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg+F8PAAKBAX9GXozlAAAAAElFTkSuQmCC",
"#3CB371": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOw2VwIAAKPAWG7+ZVYAAAAAElFTkSuQmCC",
"#2E8B57": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPQ6w4HAAH7ARF0JhTpAAAAAElFTkSuQmCC",
"#228B22": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNQ6lYCAAGiANAIO/QDAAAAAElFTkSuQmCC",
"#008000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgaGAAAAEEAIFw9selAAAAAElFTkSuQmCC",
"#006400": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgSGEAAADMAGWvkCi7AAAAAElFTkSuQmCC",
"#9ACD32": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOYddYIAAOeAZrcY3cqAAAAAElFTkSuQmCC",
"#6B8E23": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPI7lMGAAKEAR3mLm2eAAAAAElFTkSuQmCC",
"#556B2F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMIzdYHAAIIAPAX7VDzAAAAAElFTkSuQmCC",
"#66CDAA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNIO7sKAAN6Ad6MgJcXAAAAAElFTkSuQmCC",
"#8FBC8F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPo39MPAAO4AdtlaxvwAAAAAElFTkSuQmCC",
"#20B2AA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNQ2LQKAAJyAX2Z/+GaAAAAAElFTkSuQmCC",
"#008B8B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg6O4GAAGlARf1cACqAAAAAElFTkSuQmCC",
"#008080": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgaGgAAAGEAQFWjyAjAAAAAElFTkSuQmCC",
"#00FFFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg+P8fAAMBAf+2EqLVAAAAAElFTkSuQmCC",
"#E0FFFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN48P8/AAWhAt+ZEy2IAAAAAElFTkSuQmCC",
"#AFEEEE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNY/+4dAATbAoxatwRtAAAAAElFTkSuQmCC",
"#7FFFD4": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOo/38FAARTAlOTMb/0AAAAAElFTkSuQmCC",
"#40E0D0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNweHABAANUAfGDpF3SAAAAAElFTkSuQmCC",
"#48D1CC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPwuHgGAANKAeYk1m/IAAAAAElFTkSuQmCC",
"#00CED1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgOHcRAAJxAaBa3mNXAAAAAElFTkSuQmCC",
"#5F9EA0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOIn7cAAAL9AZ5WYR/LAAAAAElFTkSuQmCC",
"#4682B4": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNwa9oCAAKOAX3Ic40cAAAAAElFTkSuQmCC",
"#B0C4DE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPYcOQeAAR6AlNay0amAAAAAElFTkSuQmCC",
"#ADD8E6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYe+MZAAShAmyO7KNlAAAAAElFTkSuQmCC",
"#B0E0E6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPY8OAZAAS6AndNFqVGAAAAAElFTkSuQmCC",
"#87CEFA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoP/cLAAQvAlAUQf7gAAAAAElFTkSuQmCC",
"#87CEEB": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoP/caAAQgAkG9J0gRAAAAAElFTkSuQmCC",
"#6495ED": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNImfoWAANHAeeBNjUAAAAAAElFTkSuQmCC",
"#00BFFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNg2P8fAAKBAb9gMf32AAAAAElFTkSuQmCC",
"#1E90FF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOQm/AfAAJ9Aa5x8yHNAAAAAElFTkSuQmCC",
"#4169E1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNwzHwIAAJ6AYyVbL89AAAAAElFTkSuQmCC",
"#0000FF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYPgPAAEDAQAIicLsAAAAAElFTkSuQmCC",
"#0000CD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYDgLAADRAM4Mc0e8AAAAAElFTkSuQmCC",
"#00008B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYOgGAACPAIzl3nQhAAAAAElFTkSuQmCC",
"#000080": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYGgAAACEAIHJde6SAAAAAElFTkSuQmCC",
"#191970": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOQlCwAAADxAKMTvI2NAAAAAElFTkSuQmCC",
"#FFF8DC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+MOAAXNAtSfIfYVAAAAAElFTkSuQmCC",
"#FFEBCD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//osAAWkArgkAVbpAAAAAElFTkSuQmCC",
"#FFE4C4": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+QIAAWNAqil9ptRAAAAAElFTkSuQmCC",
"#FFDEAD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f28tAAVqAosld4NRAAAAAElFTkSuQmCC",
"#F5DEB3": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4em8zAAVSAod3hRbdAAAAAElFTkSuQmCC",
"#DEB887": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4t6MdAASVAh7bIBrFAAAAAElFTkSuQmCC",
"#D2B48C": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4tKUHAARuAhNTEultAAAAAElFTkSuQmCC",
"#BC8F8F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPY098PAAPlAdu/MRn6AAAAAElFTkSuQmCC",
"#F4A460": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4siQBAASIAfl1ShUBAAAAAElFTkSuQmCC",
"#DAA520": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4tVQBAAP8AaCR7d5RAAAAAElFTkSuQmCC",
"#B8860B": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPY0cYNAANDAUoYZ+SRAAAAAElFTkSuQmCC",
"#CD853F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM422oPAAO0AZJG0V4QAAAAAElFTkSuQmCC",
"#D2691E": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4lCkHAANqAVpbITEvAAAAAElFTkSuQmCC",
"#808000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGAAAAKEAQHMDWOyAAAAAElFTkSuQmCC",
"#8B4513": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPodhUGAAJCAOT3OZExAAAAAElFTkSuQmCC",
"#A0522D": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYEKQLAAK1ASCm3P3nAAAAAElFTkSuQmCC",
"#A52A2A": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYqqUFAAJxAPqULGlbAAAAAElFTkSuQmCC",
"#800000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoYGAAAAGEAIH5/mWIAAAAAElFTkSuQmCC",
"#FFFFFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8/AAX+Av4N70a4AAAAAElFTkSuQmCC",
"#FFFAFA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+sXAAXvAvSIsFlnAAAAAElFTkSuQmCC",
"#F0FFF0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP48P8DAAXCAuBwCbJVAAAAAElFTkSuQmCC",
"#F5FFFA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4+v8XAAXbAu/6xmt+AAAAAElFTkSuQmCC",
"#F0FFFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP48P8/AAXRAu+NbnU7AAAAAElFTkSuQmCC",
"#F0F8FF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP48OM/AAXDAuis1mE8AAAAAElFTkSuQmCC",
"#F8F8FF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP48eM/AAXbAvBhJQs8AAAAAElFTkSuQmCC",
"#F5F5F5": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4+vUrAAXCAuCuRnaIAAAAAElFTkSuQmCC",
"#FFF5EE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//UdAAXZAuO9/4F3AAAAAElFTkSuQmCC",
"#F5F5DC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4+vUOAAWpAscYr3OnAAAAAElFTkSuQmCC",
"#FDF5E6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4+/UZAAXLAtl7imM3AAAAAElFTkSuQmCC",
"#FFFAF0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+sDAAXlAurnb6FfAAAAAElFTkSuQmCC",
"#FFFFF0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4//8DAAXvAu8JA2jbAAAAAElFTkSuQmCC",
"#FAEBD7": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP49fo6AAWfAr04GlVZAAAAAElFTkSuQmCC",
"#FAF0E6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP49eEZAAW4AtGl/ZfjAAAAAElFTkSuQmCC",
"#FFF0F5": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+ErAAXWAuUecj8SAAAAAElFTkSuQmCC",
"#FFE4E1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/+QhAAWqAsWLVIIvAAAAAElFTkSuQmCC",
"#DCDCDC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4c+cOAAUsApUYk4oFAAAAAElFTkSuQmCC",
"#D3D3D3": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4fPkyAAT2AnqN/ZCGAAAAAElFTkSuQmCC",
"#C0C0C0": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4cOAAAASEAkHhja8nAAAAAElFTkSuQmCC",
"#A9A9A9": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYuXIlAAP6AfyqdGAeAAAAAElFTkSuQmCC",
"#696969": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPIzMwEAAJ6ATz6BuHvAAAAAElFTkSuQmCC",
"#808080": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC",
"#778899": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMo75gJAAMSAZmECXFRAAAAAElFTkSuQmCC",
"#708090": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMoaJgAAALkAYHgYVwLAAAAAElFTkSuQmCC",
"#2F4F4F": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPQ9/cHAAF+AM5GXWjoAAAAAElFTkSuQmCC",
"#000000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYGAAAAAEAAH2FzhVAAAAAElFTkSuQmCC",
// system colors
"#8A8A8E": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPo6uoDAANEAaMAfxWpAAAAAElFTkSuQmCC",
"#C4C4C6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4cuQYAASeAk9OawceAAAAAElFTkSuQmCC",
"#DBDBDD": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4ffsuAAUoApTaxfPxAAAAAElFTkSuQmCC",
"#E4E4E5": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN48uQpAAVdAq7wvMhZAAAAAElFTkSuQmCC",
"#E9E9EA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN4+fIVAAV7Ar1iHsGhAAAAAElFTkSuQmCC",
"#EEEEEF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN49+49AAWZAsyxcecWAAAAAElFTkSuQmCC",
"#F3F3F4": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4/PkLAAW3AttLFFPSAAAAAElFTkSuQmCC",
"#F2F2F7": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP49Ok7AAW1AtxmtZLJAAAAAElFTkSuQmCC",
"#C6C6C8": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4duwEAASqAlVT2jFVAAAAAElFTkSuQmCC",
"#007AFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgqPoPAAH3AXo0SMxpAAAAAElFTkSuQmCC",
"#34C759": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMwOR4JAAKHAVVpE6KOAAAAAElFTkSuQmCC",
"#5856D6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOICLsGAAKOAYW+DzSvAAAAAElFTkSuQmCC",
"#FF9500": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4P5UBAAQrAZWkTA9UAAAAAElFTkSuQmCC",
"#FF2D55": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4rxsKAAOwAYLWYDCmAAAAAElFTkSuQmCC",
"#AF52DE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYH3QPAAOTAeBQtjGfAAAAAElFTkSuQmCC",
"#FF3B30": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4b20AAAOnAWtCWl7PAAAAAElFTkSuQmCC",
"#5AC8FA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOIOvELAAOcAh1X5QGIAAAAAElFTkSuQmCC",
"#FFCC00": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f4YBAASZAcwPiojEAAAAAElFTkSuQmCC",
"#8E8E93": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGPo65sMAANdAbDg1aVcAAAAAElFTkSuQmCC",
"#AEAEB2": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYt24TAAQcAg/yggToAAAAAElFTkSuQmCC",
"#C7C7CC": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGM4fvwMAASzAlv//YG7AAAAAElFTkSuQmCC",
"#D1D1D6": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGO4ePEaAATvAnlbWZ4FAAAAAElFTkSuQmCC",
"#E5E5EA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGN4+vQVAAVnArWUpiFeAAAAAElFTkSuQmCC",
"#996633": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOYmWYMAALOATPI8hgrAAAAAElFTkSuQmCC",
"#555555": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGMIDQ0FAAICAQAgdqf7AAAAAElFTkSuQmCC",
"#AAAAAA": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNYtWoVAAQAAf8RHT9QAAAAAElFTkSuQmCC",
"#FF8000": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP438AAAAQBAYDFKhhdAAAAAElFTkSuQmCC",
// others
"#5EACFF": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGOIW/MfAAN1AgphnJ7hAAAAAElFTkSuQmCC",
"#FFD217": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4f0kcAAS8Aen/FSavAAAAAElFTkSuQmCC"
}
function createImage(size, colorName) {
let hex
if (colorName[0] !== "#") {
const result = normalizedHtmlColors.find(n => colorName.toLowerCase() === n.name)
if (!result) {
throw new Error("unlisted color name")
} else {
hex = result.hex
}
} else if (colorName.length === 4) {
hex = '#' + colorName.toUpperCase().slice(1).split('').map(n => n.repeat(2)).join('')
} else {
hex = colorName.toUpperCase()
}
const base64 = imageBase64[hex]
if (!base64) {
throw new Error("unlisted color")
}
const img = $image(base64)
const output = $imagekit.scaleFill(img, size)
return output
}
module.exports = createImage
// example
createImage($size(100, 100), "red")
createImage($size(100, 100), "#f00")
createImage($size(100, 100), "#ff0000")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment