UNPKG

ngx-color-converter

Version:

Convert your color value to different variants. Color is the aspect of things that is caused by differing qualities of light being reflected or emitted by them.

1 lines 75.1 kB
{"version":3,"file":"ngx-color-converter.mjs","sources":["../../../projects/ngx-color-converter/src/lib/ngx-color-converter.service.ts","../../../projects/ngx-color-converter/src/lib/ngx-color-converter.component.ts","../../../projects/ngx-color-converter/src/public-api.ts","../../../projects/ngx-color-converter/src/ngx-color-converter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { COLOROBJECT } from '../public-api';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxColorConverterService {\n  public values = '';\n  public red: number;\n  public green: number;\n  public blue: number;\n  public opacity: number;\n  public hue: number;\n  public whiteness: number;\n  public blackness: number;\n  public sat: number;\n  public lightness: number;\n  public cyan: number;\n  public magenta: number;\n  public yellow: number;\n  public black: number;\n  public ncol: number;\n  public valid: any;\n  public view: any;\n  constructor() { }\n\n  ngOnInit(): void { }\n\n  public toRgbString = (red: number, green: number, blue: number) => {\n    return 'rgb(' + red + ', ' + green + ', ' + blue + ')';\n  };\n\n  public toRgbaString = (\n    red: number,\n    green: number,\n    blue: number,\n    alpha: number\n  ) => {\n    return 'rgba(' + red + ', ' + green + ', ' + blue + ', ' + alpha + ')';\n  };\n\n  public toHwbString = (hue: number, whiteness: number, blackness: number) => {\n    return (\n      'hwb(' +\n      hue +\n      ', ' +\n      Math.round(whiteness * 100) +\n      '%, ' +\n      Math.round(blackness * 100) +\n      '%)'\n    );\n  };\n\n  public toHwbStringDecimal = (\n    hue: number,\n    whiteness: number,\n    blackness: number\n  ) => {\n    return 'hwb(' + hue + ', ' + whiteness + ', ' + blackness + ')';\n  };\n\n  public toHwbaString = (\n    hue: number,\n    whiteness: number,\n    blackness: number,\n    alpha: number\n  ) => {\n    return (\n      'hwba(' +\n      hue +\n      ', ' +\n      Math.round(whiteness * 100) +\n      '%, ' +\n      Math.round(blackness * 100) +\n      '%, ' +\n      alpha +\n      ')'\n    );\n  };\n\n  public toHslString = (hue: number, sat: number, lightness: number) => {\n    return (\n      'hsl(' +\n      hue +\n      ', ' +\n      Math.round(sat * 100) +\n      '%, ' +\n      Math.round(lightness * 100) +\n      '%)'\n    );\n  };\n\n  public toHslStringDecimal = (hue: number, sat: number, lightness: number) => {\n    return 'hsl(' + hue + ', ' + sat + ', ' + lightness + ')';\n  };\n\n  public toHslaString = (\n    hue: number,\n    sat: number,\n    lightness: number,\n    alpha: number\n  ) => {\n    return (\n      'hsla(' +\n      hue +\n      ', ' +\n      Math.round(sat * 100) +\n      '%, ' +\n      Math.round(lightness * 100) +\n      '%, ' +\n      alpha +\n      ')'\n    );\n  };\n\n  public toCmykString = (\n    cyan: number,\n    magenta: number,\n    yellow: number,\n    black: number\n  ) => {\n    return (\n      'cmyk(' +\n      Math.round(cyan * 100) +\n      '%, ' +\n      Math.round(magenta * 100) +\n      '%, ' +\n      Math.round(yellow * 100) +\n      '%, ' +\n      Math.round(black * 100) +\n      '%)'\n    );\n  };\n\n  public toCmykStringDecimal = (\n    cyan: number,\n    magenta: number,\n    yellow: number,\n    black: number\n  ) => {\n    return 'cmyk(' + cyan + ', ' + magenta + ', ' + yellow + ', ' + black + ')';\n  };\n\n  public toNcolString = (\n    ncol: number,\n    whiteness: number,\n    blackness: number\n  ) => {\n    return (\n      ncol +\n      ', ' +\n      Math.round(whiteness * 100) +\n      '%, ' +\n      Math.round(blackness * 100) +\n      '%'\n    );\n  };\n\n  public toNcolStringDecimal = (\n    ncol: number,\n    whiteness: number,\n    blackness: number\n  ) => {\n    return ncol + ', ' + whiteness + ', ' + blackness;\n  };\n\n  public toNcolaString = (\n    ncol: number,\n    whiteness: number,\n    blackness: number,\n    alpha: number\n  ) => {\n    return (\n      ncol +\n      ', ' +\n      Math.round(whiteness * 100) +\n      '%, ' +\n      Math.round(blackness * 100) +\n      '%, ' +\n      alpha\n    );\n  };\n\n  public toName = () => {\n    let r,\n      g,\n      b,\n      colorhexs = this.getColorArr('hexs');\n    for (let i = 0; i < colorhexs.length; i++) {\n      r = parseInt(colorhexs[i].substr(0, 2), 16);\n      g = parseInt(colorhexs[i].substr(2, 2), 16);\n      b = parseInt(colorhexs[i].substr(4, 2), 16);\n      if (this.red == r && this.green == g && this.blue == b) {\n        return this.getColorArr('names')[i];\n      }\n    }\n    return '';\n  };\n\n  public toHexString = (red: number, green: number, blue: number) => {\n    let r = this.toHex(red);\n    let g = this.toHex(green);\n    let b = this.toHex(blue);\n    return '#' + r + g + b;\n  };\n\n  public toRgb = (red: number, green: number, blue: number, alpha: number) => {\n    return { r: red, g: green, b: blue, a: alpha };\n  };\n\n  public toHsl = (\n    hue: number,\n    sat: number,\n    lightness: number,\n    alpha: number\n  ) => {\n    return { h: hue, s: sat, l: lightness, a: alpha };\n  };\n\n  public toHwb = (\n    hue: number,\n    whiteness: number,\n    blackness: number,\n    alpha: number\n  ) => {\n    return {\n      h: hue,\n      w: whiteness,\n      b: blackness,\n      a: alpha,\n    };\n  };\n\n  public toCmyk = (\n    cyan: number,\n    magenta: number,\n    yellow: number,\n    black: number,\n    alpha: number\n  ) => {\n    return {\n      c: cyan,\n      m: magenta,\n      y: yellow,\n      k: black,\n      a: alpha,\n    };\n  };\n\n  public toNcol = (\n    ncol: number,\n    whiteness: number,\n    blackness: number,\n    alpha: number\n  ) => {\n    return {\n      ncol: ncol,\n      w: whiteness,\n      b: blackness,\n      a: alpha,\n    };\n  };\n\n  public isDark = (n: any) => {\n    let m = n || 128;\n    return (+this.red * 299 + +this.green * 587 + +this.blue * 114) / 1000 < m;\n  };\n\n  public saturate = (n: any) => {\n    let x, rgb, color;\n    x = n / 100 || 0.1;\n    this.sat += x;\n    if (this.sat > 1) {\n      this.sat = 1;\n    }\n    rgb = this.hslToRgb(this.hue, this.sat, this.lightness);\n    color = this.colorObject(rgb, this.opacity, this.hue, this.sat);\n    this.attachValues(color);\n  };\n\n  public desaturate = (n: any) => {\n    let x, rgb, color;\n    x = n / 100 || 0.1;\n    this.sat -= x;\n    if (this.sat < 0) {\n      this.sat = 0;\n    }\n    rgb = this.hslToRgb(this.hue, this.sat, this.lightness);\n    color = this.colorObject(rgb, this.opacity, this.hue, this.sat);\n    this.attachValues(color);\n  };\n\n  public lighter = (n: any) => {\n    let x, rgb, color;\n    x = n / 100 || 0.1;\n    this.lightness += x;\n    if (this.lightness > 1) {\n      this.lightness = 1;\n    }\n    rgb = this.hslToRgb(this.hue, this.sat, this.lightness);\n    color = this.colorObject(rgb, this.opacity, this.hue, this.sat);\n    this.attachValues(color);\n  };\n\n  public darker = (n: any) => {\n    let x, rgb, color;\n    x = n / 100 || 0.1;\n    this.lightness -= x;\n    if (this.lightness < 0) {\n      this.lightness = 0;\n    }\n    rgb = this.hslToRgb(this.hue, this.sat, this.lightness);\n    color = this.colorObject(rgb, this.opacity, this.hue, this.sat);\n    this.attachValues(color);\n  };\n\n  public attachValues = (color: any) => {\n    this.red = color.red;\n    this.green = color.green;\n    this.blue = color.blue;\n    this.hue = color.hue;\n    this.sat = color.sat;\n    this.lightness = color.lightness;\n    this.whiteness = color.whiteness;\n    this.blackness = color.blackness;\n    this.cyan = color.cyan;\n    this.magenta = color.magenta;\n    this.yellow = color.yellow;\n    this.black = color.black;\n    this.ncol = color.ncol;\n    this.opacity = color.opacity;\n    this.valid = color.valid;\n  };\n\n  public toColorObject(color: any) {\n    let x,\n      y,\n      typ,\n      arr = [],\n      arrlength,\n      i,\n      opacity,\n      match,\n      a,\n      hue,\n      sat,\n      rgb,\n      colornames = [],\n      colorhexs = [];\n    let c = color;\n    c = this.ngxColorTrim(c.toLowerCase());\n    x = c.substr(0, 1).toUpperCase();\n    y = c.substr(1);\n    a = 1;\n    if (\n      (x == 'R' ||\n        x == 'Y' ||\n        x == 'G' ||\n        x == 'C' ||\n        x == 'B' ||\n        x == 'M' ||\n        x == 'W') &&\n      !isNaN(y)\n    ) {\n      if (c.length == 6 && c.indexOf(',') == -1) {\n      } else {\n        c = 'ncol(' + c + ')';\n      }\n    }\n    if (c.length != 3 && c.length != 6 && !isNaN(c)) {\n      c = 'ncol(' + c + ')';\n    }\n    if (c.indexOf(',') > 0 && c.indexOf('(') == -1) {\n      c = 'ncol(' + c + ')';\n    }\n    if (\n      c.substr(0, 3) == 'rgb' ||\n      c.substr(0, 3) == 'hsl' ||\n      c.substr(0, 3) == 'hwb' ||\n      c.substr(0, 4) == 'ncol' ||\n      c.substr(0, 4) == 'cmyk'\n    ) {\n      if (c.substr(0, 4) == 'ncol') {\n        if (c.split(',').length == 4 && c.indexOf('ncola') == -1) {\n          c = c.replace('ncol', 'ncola');\n        }\n        typ = 'ncol';\n        c = c.substr(4);\n      } else if (c.substr(0, 4) == 'cmyk') {\n        typ = 'cmyk';\n        c = c.substr(4);\n      } else {\n        typ = c.substr(0, 3);\n        c = c.substr(3);\n      }\n      arrlength = 3;\n      opacity = false;\n      if (c.substr(0, 1).toLowerCase() == 'a') {\n        arrlength = 4;\n        opacity = true;\n        c = c.substr(1);\n      } else if (typ == 'cmyk') {\n        arrlength = 4;\n        if (c.split(',').length == 5) {\n          arrlength = 5;\n          opacity = true;\n        }\n      }\n      c = c.replace('(', '');\n      c = c.replace(')', '');\n      arr = c.split(',');\n      if (typ == 'rgb') {\n        if (arr.length != arrlength) {\n          return this.emptyObject();\n        }\n        for (i = 0; i < arrlength; i++) {\n          if (arr[i] == '' || arr[i] == ' ') {\n            arr[i] = '0';\n          }\n          if (arr[i].indexOf('%') > -1) {\n            arr[i] = arr[i].replace('%', '');\n            arr[i] = Number(arr[i] / 100);\n            if (i < 3) {\n              arr[i] = Math.round(arr[i] * 255);\n            }\n          }\n          if (isNaN(arr[i])) {\n            return this.emptyObject();\n          }\n          if (parseInt(arr[i]) > 255) {\n            arr[i] = 255;\n          }\n          if (i < 3) {\n            arr[i] = parseInt(arr[i]);\n          }\n          if (i == 3 && Number(arr[i]) > 1) {\n            arr[i] = 1;\n          }\n        }\n        rgb = { r: arr[0], g: arr[1], b: arr[2] };\n        if (opacity == true) {\n          a = Number(arr[3]);\n        }\n      }\n      if (typ == 'hsl' || typ == 'hwb' || typ == 'ncol') {\n        while (arr.length < arrlength) {\n          arr.push('0');\n        }\n        if (typ == 'hsl' || typ == 'hwb') {\n          if (parseInt(arr[0]) >= 360) {\n            arr[0] = 0;\n          }\n        }\n        for (i = 1; i < arrlength; i++) {\n          if (arr[i].indexOf('%') > -1) {\n            arr[i] = arr[i].replace('%', '');\n            arr[i] = Number(arr[i]);\n            if (isNaN(arr[i])) {\n              return this.emptyObject();\n            }\n            arr[i] = arr[i] / 100;\n          } else {\n            arr[i] = Number(arr[i]);\n          }\n          if (Number(arr[i]) > 1) {\n            arr[i] = 1;\n          }\n          if (Number(arr[i]) < 0) {\n            arr[i] = 0;\n          }\n        }\n        if (typ == 'hsl') {\n          rgb = this.hslToRgb(arr[0], arr[1], arr[2]);\n          hue = Number(arr[0]);\n          sat = Number(arr[1]);\n        }\n        if (typ == 'hwb') {\n          rgb = this.hwbToRgb(arr[0], arr[1], arr[2]);\n        }\n        if (typ == 'ncol') {\n          rgb = this.ncolToRgb(arr[0], arr[1], arr[2]);\n        }\n        if (opacity == true) {\n          a = Number(arr[3]);\n        }\n      }\n      if (typ == 'cmyk') {\n        while (arr.length < arrlength) {\n          arr.push('0');\n        }\n        for (i = 0; i < arrlength; i++) {\n          if (arr[i].indexOf('%') > -1) {\n            arr[i] = arr[i].replace('%', '');\n            arr[i] = Number(arr[i]);\n            if (isNaN(arr[i])) {\n              return this.emptyObject();\n            }\n            arr[i] = arr[i] / 100;\n          } else {\n            arr[i] = Number(arr[i]);\n          }\n          if (Number(arr[i]) > 1) {\n            arr[i] = 1;\n          }\n          if (Number(arr[i]) < 0) {\n            arr[i] = 0;\n          }\n        }\n        rgb = this.cmykToRgb(arr[0], arr[1], arr[2], arr[3]);\n        if (opacity == true) {\n          a = Number(arr[4]);\n        }\n      }\n    } else if (c.substr(0, 3) == 'ncs') {\n      rgb = this.ncsToRgb(c);\n    } else {\n      match = false;\n      colornames = this.getColorArr('names');\n      for (i = 0; i < colornames.length; i++) {\n        if (c.toLowerCase() == colornames[i].toLowerCase()) {\n          colorhexs = this.getColorArr('hexs');\n          match = true;\n          rgb = {\n            r: parseInt(colorhexs[i].substr(0, 2), 16),\n            g: parseInt(colorhexs[i].substr(2, 2), 16),\n            b: parseInt(colorhexs[i].substr(4, 2), 16),\n          };\n          break;\n        }\n      }\n      if (match == false) {\n        c = c.replace('#', '');\n        if (c.length == 3) {\n          c =\n            c.substr(0, 1) +\n            c.substr(0, 1) +\n            c.substr(1, 1) +\n            c.substr(1, 1) +\n            c.substr(2, 1) +\n            c.substr(2, 1);\n        }\n        for (i = 0; i < c.length; i++) {\n          if (!this.isHex(c.substr(i, 1))) {\n            return this.emptyObject();\n          }\n        }\n        arr[0] = parseInt(c.substr(0, 2), 16);\n        arr[1] = parseInt(c.substr(2, 2), 16);\n        arr[2] = parseInt(c.substr(4, 2), 16);\n        for (i = 0; i < 3; i++) {\n          if (isNaN(arr[i])) {\n            return this.emptyObject();\n          }\n        }\n        rgb = {\n          r: arr[0],\n          g: arr[1],\n          b: arr[2],\n        };\n      }\n    }\n    this.view = this.colorObject(rgb, a, hue, sat);\n    return this.colorObject(rgb, a, hue, sat);\n  }\n\n  public colorObject(rgb: any, a: any, h: any, s: any): COLOROBJECT {\n    let hsl, hwb, cmyk, ncol, color, hue, sat;\n    if (!rgb) {\n      return this.emptyObject();\n    }\n    if (a === null) {\n      a = 1;\n    }\n    hsl = this.rgbToHsl(rgb.r, rgb.g, rgb.b);\n    hwb = this.rgbToHwb(rgb.r, rgb.g, rgb.b);\n    cmyk = this.rgbToCmyk(rgb.r, rgb.g, rgb.b);\n    hue = h || hsl.h;\n    sat = s || hsl.s;\n    ncol = this.hueToNcol(hue);\n    color = {\n      red: rgb.r,\n      green: rgb.g,\n      blue: rgb.b,\n      hue: hue,\n      sat: sat,\n      lightness: hsl.l,\n      whiteness: hwb.w,\n      blackness: hwb.b,\n      cyan: cmyk.c,\n      magenta: cmyk.m,\n      yellow: cmyk.y,\n      black: cmyk.k,\n      ncol: ncol,\n      opacity: a,\n      valid: true,\n    };\n    color = this.roundDecimals(color);\n    return color;\n  }\n\n  public emptyObject(): COLOROBJECT {\n    return {\n      red: 0,\n      green: 0,\n      blue: 0,\n      hue: 0,\n      sat: 0,\n      lightness: 0,\n      whiteness: 0,\n      blackness: 0,\n      cyan: 0,\n      magenta: 0,\n      yellow: 0,\n      black: 0,\n      ncol: 'R',\n      opacity: 1,\n      valid: false,\n    };\n  }\n\n  public getColorArr(x: any): string[] {\n    if (x == 'names') {\n      return [\n        'AliceBlue',\n        'AntiqueWhite',\n        'Aqua',\n        'Aquamarine',\n        'Azure',\n        'Beige',\n        'Bisque',\n        'Black',\n        'BlanchedAlmond',\n        'Blue',\n        'BlueViolet',\n        'Brown',\n        'BurlyWood',\n        'CadetBlue',\n        'Chartreuse',\n        'Chocolate',\n        'Coral',\n        'CornflowerBlue',\n        'Cornsilk',\n        'Crimson',\n        'Cyan',\n        'DarkBlue',\n        'DarkCyan',\n        'DarkGoldenRod',\n        'DarkGray',\n        'DarkGrey',\n        'DarkGreen',\n        'DarkKhaki',\n        'DarkMagenta',\n        'DarkOliveGreen',\n        'DarkOrange',\n        'DarkOrchid',\n        'DarkRed',\n        'DarkSalmon',\n        'DarkSeaGreen',\n        'DarkSlateBlue',\n        'DarkSlateGray',\n        'DarkSlateGrey',\n        'DarkTurquoise',\n        'DarkViolet',\n        'DeepPink',\n        'DeepSkyBlue',\n        'DimGray',\n        'DimGrey',\n        'DodgerBlue',\n        'FireBrick',\n        'FloralWhite',\n        'ForestGreen',\n        'Fuchsia',\n        'Gainsboro',\n        'GhostWhite',\n        'Gold',\n        'GoldenRod',\n        'Gray',\n        'Grey',\n        'Green',\n        'GreenYellow',\n        'HoneyDew',\n        'HotPink',\n        'IndianRed',\n        'Indigo',\n        'Ivory',\n        'Khaki',\n        'Lavender',\n        'LavenderBlush',\n        'LawnGreen',\n        'LemonChiffon',\n        'LightBlue',\n        'LightCoral',\n        'LightCyan',\n        'LightGoldenRodYellow',\n        'LightGray',\n        'LightGrey',\n        'LightGreen',\n        'LightPink',\n        'LightSalmon',\n        'LightSeaGreen',\n        'LightSkyBlue',\n        'LightSlateGray',\n        'LightSlateGrey',\n        'LightSteelBlue',\n        'LightYellow',\n        'Lime',\n        'LimeGreen',\n        'Linen',\n        'Magenta',\n        'Maroon',\n        'MediumAquaMarine',\n        'MediumBlue',\n        'MediumOrchid',\n        'MediumPurple',\n        'MediumSeaGreen',\n        'MediumSlateBlue',\n        'MediumSpringGreen',\n        'MediumTurquoise',\n        'MediumVioletRed',\n        'MidnightBlue',\n        'MintCream',\n        'MistyRose',\n        'Moccasin',\n        'NavajoWhite',\n        'Navy',\n        'OldLace',\n        'Olive',\n        'OliveDrab',\n        'Orange',\n        'OrangeRed',\n        'Orchid',\n        'PaleGoldenRod',\n        'PaleGreen',\n        'PaleTurquoise',\n        'PaleVioletRed',\n        'PapayaWhip',\n        'PeachPuff',\n        'Peru',\n        'Pink',\n        'Plum',\n        'PowderBlue',\n        'Purple',\n        'RebeccaPurple',\n        'Red',\n        'RosyBrown',\n        'RoyalBlue',\n        'SaddleBrown',\n        'Salmon',\n        'SandyBrown',\n        'SeaGreen',\n        'SeaShell',\n        'Sienna',\n        'Silver',\n        'SkyBlue',\n        'SlateBlue',\n        'SlateGray',\n        'SlateGrey',\n        'Snow',\n        'SpringGreen',\n        'SteelBlue',\n        'Tan',\n        'Teal',\n        'Thistle',\n        'Tomato',\n        'Turquoise',\n        'Violet',\n        'Wheat',\n        'White',\n        'WhiteSmoke',\n        'Yellow',\n        'YellowGreen',\n      ];\n    }\n    if (x == 'hexs') {\n      return [\n        'f0f8ff',\n        'faebd7',\n        '00ffff',\n        '7fffd4',\n        'f0ffff',\n        'f5f5dc',\n        'ffe4c4',\n        '000000',\n        'ffebcd',\n        '0000ff',\n        '8a2be2',\n        'a52a2a',\n        'deb887',\n        '5f9ea0',\n        '7fff00',\n        'd2691e',\n        'ff7f50',\n        '6495ed',\n        'fff8dc',\n        'dc143c',\n        '00ffff',\n        '00008b',\n        '008b8b',\n        'b8860b',\n        'a9a9a9',\n        'a9a9a9',\n        '006400',\n        'bdb76b',\n        '8b008b',\n        '556b2f',\n        'ff8c00',\n        '9932cc',\n        '8b0000',\n        'e9967a',\n        '8fbc8f',\n        '483d8b',\n        '2f4f4f',\n        '2f4f4f',\n        '00ced1',\n        '9400d3',\n        'ff1493',\n        '00bfff',\n        '696969',\n        '696969',\n        '1e90ff',\n        'b22222',\n        'fffaf0',\n        '228b22',\n        'ff00ff',\n        'dcdcdc',\n        'f8f8ff',\n        'ffd700',\n        'daa520',\n        '808080',\n        '808080',\n        '008000',\n        'adff2f',\n        'f0fff0',\n        'ff69b4',\n        'cd5c5c',\n        '4b0082',\n        'fffff0',\n        'f0e68c',\n        'e6e6fa',\n        'fff0f5',\n        '7cfc00',\n        'fffacd',\n        'add8e6',\n        'f08080',\n        'e0ffff',\n        'fafad2',\n        'd3d3d3',\n        'd3d3d3',\n        '90ee90',\n        'ffb6c1',\n        'ffa07a',\n        '20b2aa',\n        '87cefa',\n        '778899',\n        '778899',\n        'b0c4de',\n        'ffffe0',\n        '00ff00',\n        '32cd32',\n        'faf0e6',\n        'ff00ff',\n        '800000',\n        '66cdaa',\n        '0000cd',\n        'ba55d3',\n        '9370db',\n        '3cb371',\n        '7b68ee',\n        '00fa9a',\n        '48d1cc',\n        'c71585',\n        '191970',\n        'f5fffa',\n        'ffe4e1',\n        'ffe4b5',\n        'ffdead',\n        '000080',\n        'fdf5e6',\n        '808000',\n        '6b8e23',\n        'ffa500',\n        'ff4500',\n        'da70d6',\n        'eee8aa',\n        '98fb98',\n        'afeeee',\n        'db7093',\n        'ffefd5',\n        'ffdab9',\n        'cd853f',\n        'ffc0cb',\n        'dda0dd',\n        'b0e0e6',\n        '800080',\n        '663399',\n        'ff0000',\n        'bc8f8f',\n        '4169e1',\n        '8b4513',\n        'fa8072',\n        'f4a460',\n        '2e8b57',\n        'fff5ee',\n        'a0522d',\n        'c0c0c0',\n        '87ceeb',\n        '6a5acd',\n        '708090',\n        '708090',\n        'fffafa',\n        '00ff7f',\n        '4682b4',\n        'd2b48c',\n        '008080',\n        'd8bfd8',\n        'ff6347',\n        '40e0d0',\n        'ee82ee',\n        'f5deb3',\n        'ffffff',\n        'f5f5f5',\n        'ffff00',\n        '9acd32',\n      ];\n    }\n\n    return [];\n  }\n\n  public roundDecimals(c: any) {\n    c.red = Number(c.red.toFixed(0));\n    c.green = Number(c.green.toFixed(0));\n    c.blue = Number(c.blue.toFixed(0));\n    c.hue = Number(c.hue.toFixed(0));\n    c.sat = Number(c.sat.toFixed(2));\n    c.lightness = Number(c.lightness.toFixed(2));\n    c.whiteness = Number(c.whiteness.toFixed(2));\n    c.blackness = Number(c.blackness.toFixed(2));\n    c.cyan = Number(c.cyan.toFixed(2));\n    c.magenta = Number(c.magenta.toFixed(2));\n    c.yellow = Number(c.yellow.toFixed(2));\n    c.black = Number(c.black.toFixed(2));\n    c.ncol = c.ncol.substr(0, 1) + Math.round(Number(c.ncol.substr(1)));\n    c.opacity = Number(c.opacity.toFixed(2));\n    return c;\n  }\n\n  public hslToRgb(hue: any, sat: any, light: any) {\n    let t1, t2, r, g, b;\n    hue = hue / 60;\n    if (light <= 0.5) {\n      t2 = light * (sat + 1);\n    } else {\n      t2 = light + sat - light * sat;\n    }\n    t1 = light * 2 - t2;\n    r = this.hueToRgb(t1, t2, hue + 2) * 255;\n    g = this.hueToRgb(t1, t2, hue) * 255;\n    b = this.hueToRgb(t1, t2, hue - 2) * 255;\n    return { r: r, g: g, b: b };\n  }\n\n  public hueToRgb(t1: any, t2: any, hue: any) {\n    if (hue < 0) hue += 6;\n    if (hue >= 6) hue -= 6;\n    if (hue < 1) return (t2 - t1) * hue + t1;\n    else if (hue < 3) return t2;\n    else if (hue < 4) return (t2 - t1) * (4 - hue) + t1;\n    else return t1;\n  }\n\n  public hwbToRgb(hue: any, white: any, black: any) {\n    let i,\n      rgb,\n      rgbArr = [],\n      tot;\n    rgb = this.hslToRgb(hue, 1, 0.5);\n    rgbArr[0] = rgb.r / 255;\n    rgbArr[1] = rgb.g / 255;\n    rgbArr[2] = rgb.b / 255;\n    tot = white + black;\n    if (tot > 1) {\n      white = Number((white / tot).toFixed(2));\n      black = Number((black / tot).toFixed(2));\n    }\n    for (i = 0; i < 3; i++) {\n      rgbArr[i] *= 1 - white - black;\n      rgbArr[i] += white;\n      rgbArr[i] = Number(rgbArr[i] * 255);\n    }\n    return { r: rgbArr[0], g: rgbArr[1], b: rgbArr[2] };\n  }\n\n  public cmykToRgb(c: any, m: any, y: any, k: any) {\n    let r, g, b;\n    r = 255 - Math.min(1, c * (1 - k) + k) * 255;\n    g = 255 - Math.min(1, m * (1 - k) + k) * 255;\n    b = 255 - Math.min(1, y * (1 - k) + k) * 255;\n    return { r: r, g: g, b: b };\n  }\n\n  public ncolToRgb(ncol: any, white: any, black: any) {\n    let letter, percent, h, w, b;\n    h = ncol;\n    if (isNaN(ncol.substr(0, 1))) {\n      letter = ncol.substr(0, 1).toUpperCase();\n      percent = ncol.substr(1);\n      if (percent == '') {\n        percent = 0;\n      }\n      percent = Number(percent);\n      if (isNaN(percent)) {\n        return false;\n      }\n      if (letter == 'R') {\n        h = 0 + percent * 0.6;\n      }\n      if (letter == 'Y') {\n        h = 60 + percent * 0.6;\n      }\n      if (letter == 'G') {\n        h = 120 + percent * 0.6;\n      }\n      if (letter == 'C') {\n        h = 180 + percent * 0.6;\n      }\n      if (letter == 'B') {\n        h = 240 + percent * 0.6;\n      }\n      if (letter == 'M') {\n        h = 300 + percent * 0.6;\n      }\n      if (letter == 'W') {\n        h = 0;\n        white = 1 - percent / 100;\n        black = percent / 100;\n      }\n    }\n    return this.hwbToRgb(h, white, black);\n  }\n\n  public hueToNcol(hue: any): string {\n    while (hue >= 360) {\n      hue = hue - 360;\n    }\n    if (hue < 60) {\n      return 'R' + hue / 0.6;\n    }\n    if (hue < 120) {\n      return 'Y' + (hue - 60) / 0.6;\n    }\n    if (hue < 180) {\n      return 'G' + (hue - 120) / 0.6;\n    }\n    if (hue < 240) {\n      return 'C' + (hue - 180) / 0.6;\n    }\n    if (hue < 300) {\n      return 'B' + (hue - 240) / 0.6;\n    }\n    if (hue < 360) {\n      return 'M' + (hue - 300) / 0.6;\n    }\n    return '';\n  }\n\n  public ncsToRgb(ncs: any) {\n    let black,\n      chroma,\n      bc,\n      percent,\n      black1,\n      chroma1,\n      factor1,\n      blue1,\n      red1,\n      red2,\n      green2,\n      blue2,\n      max,\n      factor2,\n      grey,\n      r,\n      g,\n      b,\n      green1: any = 0;\n    ncs = this.ngxColorTrim(ncs).toUpperCase();\n    ncs = ncs.replace('(', '');\n    ncs = ncs.replace(')', '');\n    ncs = ncs.replace('NCS', 'NCS ');\n    ncs = ncs.replace(/  /g, ' ');\n    if (ncs.indexOf('NCS') == -1) {\n      ncs = 'NCS ' + ncs;\n    }\n    ncs = ncs.match(\n      /^(?:NCS|NCS\\sS)\\s(\\d{2})(\\d{2})-(N|[A-Z])(\\d{2})?([A-Z])?$/\n    );\n    if (ncs === null) return false;\n    black = parseInt(ncs[1], 10);\n    chroma = parseInt(ncs[2], 10);\n    bc = ncs[3];\n    if (bc != 'N' && bc != 'Y' && bc != 'R' && bc != 'B' && bc != 'G') {\n      return false;\n    }\n    percent = parseInt(ncs[4], 10) || 0;\n    if (bc !== 'N') {\n      black1 = 1.05 * black - 5.25;\n      chroma1 = chroma;\n      if (bc === 'Y' && percent <= 60) {\n        red1 = 1;\n      } else if (\n        (bc === 'Y' && percent > 60) ||\n        (bc === 'R' && percent <= 80)\n      ) {\n        if (bc === 'Y') {\n          factor1 = percent - 60;\n        } else {\n          factor1 = percent + 40;\n        }\n        red1 = (Math.sqrt(14884 - Math.pow(factor1, 2)) - 22) / 100;\n      } else if ((bc === 'R' && percent > 80) || bc === 'B') {\n        red1 = 0;\n      } else if (bc === 'G') {\n        factor1 = percent - 170;\n        red1 = (Math.sqrt(33800 - Math.pow(factor1, 2)) - 70) / 100;\n      }\n      if (bc === 'Y' && percent <= 80) {\n        blue1 = 0;\n      } else if (\n        (bc === 'Y' && percent > 80) ||\n        (bc === 'R' && percent <= 60)\n      ) {\n        if (bc === 'Y') {\n          factor1 = percent - 80 + 20.5;\n        } else {\n          factor1 = percent + 20 + 20.5;\n        }\n        blue1 = (104 - Math.sqrt(11236 - Math.pow(factor1, 2))) / 100;\n      } else if (\n        (bc === 'R' && percent > 60) ||\n        (bc === 'B' && percent <= 80)\n      ) {\n        if (bc === 'R') {\n          factor1 = percent - 60 - 60;\n        } else {\n          factor1 = percent + 40 - 60;\n        }\n        blue1 = (Math.sqrt(10000 - Math.pow(factor1, 2)) - 10) / 100;\n      } else if (\n        (bc === 'B' && percent > 80) ||\n        (bc === 'G' && percent <= 40)\n      ) {\n        if (bc === 'B') {\n          factor1 = percent - 80 - 131;\n        } else {\n          factor1 = percent + 20 - 131;\n        }\n        blue1 = (122 - Math.sqrt(19881 - Math.pow(factor1, 2))) / 100;\n      } else if (bc === 'G' && percent > 40) {\n        blue1 = 0;\n      }\n\n      if (bc === 'Y') {\n        green1 = (85 - (17 / 20) * percent) / 100;\n      } else if (bc === 'R' && percent <= 60) {\n        green1 = 0;\n      } else if (bc === 'R' && percent > 60) {\n        factor1 = percent - 60 + 35;\n        green1 = (67.5 - Math.sqrt(5776 - Math.pow(factor1, 2))) / 100;\n      } else if (bc === 'B' && percent <= 60) {\n        factor1 = 1 * percent - 68.5;\n        green1 = (6.5 + Math.sqrt(7044.5 - Math.pow(factor1, 2))) / 100;\n      } else if (\n        (bc === 'B' && percent > 60) ||\n        (bc === 'G' && percent <= 60)\n      ) {\n        green1 = 0.9;\n      } else if (bc === 'G' && percent > 60) {\n        factor1 = percent - 60;\n        let green1 = (90 - (1 / 8) * factor1) / 100;\n      }\n      factor1 = (red1 + green1 + blue1) / 3;\n      red2 = ((factor1 - (red1 || 0)) * (100 - chroma1)) / 100 + (red1 || 0);\n      green2 = ((factor1 - green1) * (100 - chroma1)) / 100 + green1;\n      blue2 = ((factor1 - (blue1 || 0)) * (100 - chroma1)) / 100 + (blue1 || 0);\n      if (red2 > green2 && red2 > blue2) {\n        max = red2;\n      } else if (green2 > red2 && green2 > blue2) {\n        max = green2;\n      } else if (blue2 > red2 && blue2 > green2) {\n        max = blue2;\n      } else {\n        max = (red2 + green2 + blue2) / 3;\n      }\n      factor2 = 1 / max;\n      (r = +((red2 * factor2 * (100 - black1)) / 100) * 255), 10;\n      (g = +((green2 * factor2 * (100 - black1)) / 100) * 255), 10;\n      (b = +((blue2 * factor2 * (100 - black1)) / 100) * 255), 10;\n      if (r > 255) {\n        r = 255;\n      }\n      if (g > 255) {\n        g = 255;\n      }\n      if (b > 255) {\n        b = 255;\n      }\n      if (r < 0) {\n        r = 0;\n      }\n      if (g < 0) {\n        g = 0;\n      }\n      if (b < 0) {\n        b = 0;\n      }\n    } else {\n      (grey = +(1 - black / 100) * 255), 10;\n      if (grey > 255) {\n        grey = 255;\n      }\n      if (grey < 0) {\n        grey = 0;\n      }\n      r = grey;\n      g = grey;\n      b = grey;\n    }\n    return {\n      r: r,\n      g: g,\n      b: b,\n    };\n  }\n\n  public rgbToHsl(r: number, g: number, b: number) {\n    let min,\n      max,\n      i,\n      l,\n      s,\n      maxcolor,\n      h,\n      rgb = [];\n    rgb[0] = r / 255;\n    rgb[1] = g / 255;\n    rgb[2] = b / 255;\n    min = rgb[0];\n    max = rgb[0];\n    maxcolor = 0;\n    for (i = 0; i < rgb.length - 1; i++) {\n      if (rgb[i + 1] <= min) {\n        min = rgb[i + 1];\n      }\n      if (rgb[i + 1] >= max) {\n        max = rgb[i + 1];\n        maxcolor = i + 1;\n      }\n    }\n    if (maxcolor == 0) {\n      h = (rgb[1] - rgb[2]) / (max - min);\n    }\n    if (maxcolor == 1) {\n      h = 2 + (rgb[2] - rgb[0]) / (max - min);\n    }\n    if (maxcolor == 2) {\n      h = 4 + (rgb[0] - rgb[1]) / (max - min);\n    }\n    if (isNaN(h || 0)) {\n      h = 0;\n    }\n    h = (h || 0) * 60;\n    if (h < 0) {\n      h = h + 360;\n    }\n    l = (min + max) / 2;\n    if (min == max) {\n      s = 0;\n    } else {\n      if (l < 0.5) {\n        s = (max - min) / (max + min);\n      } else {\n        s = (max - min) / (2 - max - min);\n      }\n    }\n    s = s;\n    return { h: h, s: s, l: l };\n  }\n\n  public rgbToHwb(r: number, g: number, b: number) {\n    let h, w, bl;\n    r = r / 255;\n    g = g / 255;\n    b = b / 255;\n    let max = Math.max(r, g, b);\n    let min = Math.min(r, g, b);\n    let chroma = max - min;\n    if (chroma == 0) {\n      h = 0;\n    } else if (r == max) {\n      h = (((g - b) / chroma) % 6) * 360;\n    } else if (g == max) {\n      h = (((b - r) / chroma + 2) % 6) * 360;\n    } else {\n      h = (((r - g) / chroma + 4) % 6) * 360;\n    }\n    w = min;\n    bl = 1 - max;\n    return { h: h, w: w, b: bl };\n  }\n\n  public rgbToCmyk(red: number, green: number, blue: number) {\n    let c, m, y, k;\n    red = red / 255;\n    green = green / 255;\n    blue = blue / 255;\n    let max = Math.max(red, green, blue);\n    k = 1 - max;\n    if (k == 1) {\n      c = 0;\n      m = 0;\n      y = 0;\n    } else {\n      c = (1 - red - k) / (1 - k);\n      m = (1 - green - k) / (1 - k);\n      y = (1 - blue - k) / (1 - k);\n    }\n    return { c: c, m: m, y: y, k: k };\n  }\n\n  public toHex(n: any) {\n    let hex = n.toString(16);\n    while (hex.length < 2) {\n      hex = '0' + hex;\n    }\n    return hex;\n  }\n\n  public cl(x: any) {\n    console.log(x);\n  }\n\n  public ngxColorTrim(x: any) {\n    return x.replace(/^\\s+|\\s+$/g, '');\n  }\n\n  public isHex(x: any) {\n    return '0123456789ABCDEFabcdef'.indexOf(x) > -1;\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'lib-ngx-color-converter',\n    template: `\n    <p>\n      ngx-color-converter works!\n    </p>\n  `,\n    styles: [],\n    standalone: true\n})\nexport class NgxColorConverterComponent {\n\n}\n","/*\n * Public API Surface of ngx-color-converter\n */\n\nexport * from './lib/ngx-color-converter.service';\nexport * from './lib/ngx-color-converter.component';\n\nexport interface COLOROBJECT {\n  red: number;\n  green: number;\n  blue: number;\n  hue: number;\n  sat: number;\n  lightness: number;\n  whiteness: number;\n  blackness: number;\n  cyan: number;\n  magenta: number;\n  yellow: number;\n  black: number;\n  ncol: string;\n  opacity: number;\n  valid: boolean;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}