gilbarbara/colorizr

View on GitHub
src/rgb2hex.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { invariant, isRGB, isRGBArray, messages } from './modules/utils';
import { RGB, RGBArray } from './types';

/**
 * Convert an RGA object to hex.
 */
export default function rgb2hex(input: RGB | RGBArray): string {
  invariant(!!input, messages.input);
  invariant(isRGBArray(input) || isRGB(input), messages.invalid);

  let r: number;
  let g: number;
  let b: number;

  if (isRGBArray(input)) {
    [r, g, b] = input;
  } else {
    ({ r, g, b } = input);
  }

  const output = [r.toString(16), g.toString(16), b.toString(16)];

  return `#${output.map(d => (d.length === 1 ? `0${d}` : d)).join('')}`;
}