// Run on the command line to test colors. // node userColorsTest.js > colorTest.html console.log(`<body style="background: #2d3748">`); for (var i = 0; i < 20; i++) { const element = generateElement(randomString(6)); console.log(element); } console.log(`</body>`); function generateElement(string) { const bgColor = messageBubbleColorForString(string); const fgColor = textColorForString(string); return `<div style="background-color: ${bgColor}; color: ${fgColor}; padding: 30px;">${string}</div>`; } function randomString(length) { return Math.random().toString(36).substring(length); } function messageBubbleColorForString(str) { let hash = 0; for (let i = 0; i < str.length; i++) { // eslint-disable-next-line hash = str.charCodeAt(i) + ((hash << 5) - hash); } // Tweak these to adjust the result of the color const saturation = 25; const lightness = 45; const alpha = 0.3; const hue = parseInt(Math.abs(hash), 16) % 360; return `hsla(${hue}, ${saturation}%, ${lightness}%, ${alpha})`; } function textColorForString(str) { let hash = 0; for (let i = 0; i < str.length; i++) { // eslint-disable-next-line hash = str.charCodeAt(i) + ((hash << 5) - hash); } // Tweak these to adjust the result of the color const saturation = 80; const lightness = 80; const alpha = 0.8; const hue = parseInt(Math.abs(hash), 16) % 360; return `hsla(${hue}, ${saturation}%, ${lightness}%, ${alpha})`; }