@a_ng_d/utils-ui-color-palette 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-BND6T00o.js","sources":["../node_modules/hsluv/dist/hsluv.mjs","../src/modules/color/color.ts"],"sourcesContent":["export class Hsluv {\n constructor() {\n // RGB\n this.hex = '#000000';\n this.rgb_r = 0;\n this.rgb_g = 0;\n this.rgb_b = 0;\n // CIE XYZ\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n // CIE LUV\n this.luv_l = 0;\n this.luv_u = 0;\n this.luv_v = 0;\n // CIE LUV LCh\n this.lch_l = 0;\n this.lch_c = 0;\n this.lch_h = 0;\n // HSLuv\n this.hsluv_h = 0;\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n // HPLuv\n this.hpluv_h = 0;\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n // 6 lines in slope-intercept format: R < 0, R > 1, G < 0, G > 1, B < 0, B > 1\n this.r0s = 0;\n this.r0i = 0;\n this.r1s = 0;\n this.r1i = 0;\n this.g0s = 0;\n this.g0i = 0;\n this.g1s = 0;\n this.g1i = 0;\n this.b0s = 0;\n this.b0i = 0;\n this.b1s = 0;\n this.b1i = 0;\n }\n static fromLinear(c) {\n if (c <= 0.0031308) {\n return 12.92 * c;\n }\n else {\n return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n }\n }\n static toLinear(c) {\n if (c > 0.04045) {\n return Math.pow((c + 0.055) / 1.055, 2.4);\n }\n else {\n return c / 12.92;\n }\n }\n static yToL(Y) {\n if (Y <= Hsluv.epsilon) {\n return Y / Hsluv.refY * Hsluv.kappa;\n }\n else {\n return 116 * Math.pow(Y / Hsluv.refY, 1 / 3) - 16;\n }\n }\n static lToY(L) {\n if (L <= 8) {\n return Hsluv.refY * L / Hsluv.kappa;\n }\n else {\n return Hsluv.refY * Math.pow((L + 16) / 116, 3);\n }\n }\n static rgbChannelToHex(chan) {\n const c = Math.round(chan * 255);\n const digit2 = c % 16;\n const digit1 = (c - digit2) / 16 | 0;\n return Hsluv.hexChars.charAt(digit1) + Hsluv.hexChars.charAt(digit2);\n }\n static hexToRgbChannel(hex, offset) {\n const digit1 = Hsluv.hexChars.indexOf(hex.charAt(offset));\n const digit2 = Hsluv.hexChars.indexOf(hex.charAt(offset + 1));\n const n = digit1 * 16 + digit2;\n return n / 255.0;\n }\n static distanceFromOriginAngle(slope, intercept, angle) {\n const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n if (d < 0) {\n return Infinity;\n }\n else {\n return d;\n }\n }\n static distanceFromOrigin(slope, intercept) {\n return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n }\n static min6(f1, f2, f3, f4, f5, f6) {\n return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n }\n rgbToHex() {\n this.hex = \"#\";\n this.hex += Hsluv.rgbChannelToHex(this.rgb_r);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_g);\n this.hex += Hsluv.rgbChannelToHex(this.rgb_b);\n }\n hexToRgb() {\n this.hex = this.hex.toLowerCase();\n this.rgb_r = Hsluv.hexToRgbChannel(this.hex, 1);\n this.rgb_g = Hsluv.hexToRgbChannel(this.hex, 3);\n this.rgb_b = Hsluv.hexToRgbChannel(this.hex, 5);\n }\n xyzToRgb() {\n this.rgb_r = Hsluv.fromLinear(Hsluv.m_r0 * this.xyz_x + Hsluv.m_r1 * this.xyz_y + Hsluv.m_r2 * this.xyz_z);\n this.rgb_g = Hsluv.fromLinear(Hsluv.m_g0 * this.xyz_x + Hsluv.m_g1 * this.xyz_y + Hsluv.m_g2 * this.xyz_z);\n this.rgb_b = Hsluv.fromLinear(Hsluv.m_b0 * this.xyz_x + Hsluv.m_b1 * this.xyz_y + Hsluv.m_b2 * this.xyz_z);\n }\n rgbToXyz() {\n const lr = Hsluv.toLinear(this.rgb_r);\n const lg = Hsluv.toLinear(this.rgb_g);\n const lb = Hsluv.toLinear(this.rgb_b);\n this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n }\n xyzToLuv() {\n const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n let varU = 4 * this.xyz_x;\n let varV = 9 * this.xyz_y;\n if (divider !== 0) {\n varU /= divider;\n varV /= divider;\n }\n else {\n varU = NaN;\n varV = NaN;\n }\n this.luv_l = Hsluv.yToL(this.xyz_y);\n if (this.luv_l === 0) {\n this.luv_u = 0;\n this.luv_v = 0;\n }\n else {\n this.luv_u = 13 * this.luv_l * (varU - Hsluv.refU);\n this.luv_v = 13 * this.luv_l * (varV - Hsluv.refV);\n }\n }\n luvToXyz() {\n if (this.luv_l === 0) {\n this.xyz_x = 0;\n this.xyz_y = 0;\n this.xyz_z = 0;\n return;\n }\n const varU = this.luv_u / (13 * this.luv_l) + Hsluv.refU;\n const varV = this.luv_v / (13 * this.luv_l) + Hsluv.refV;\n this.xyz_y = Hsluv.lToY(this.luv_l);\n this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n }\n luvToLch() {\n this.lch_l = this.luv_l;\n this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n if (this.lch_c < 0.00000001) {\n this.lch_h = 0;\n }\n else {\n const hrad = Math.atan2(this.luv_v, this.luv_u);\n this.lch_h = hrad * 180.0 / Math.PI;\n if (this.lch_h < 0) {\n this.lch_h = 360 + this.lch_h;\n }\n }\n }\n lchToLuv() {\n const hrad = this.lch_h / 180.0 * Math.PI;\n this.luv_l = this.lch_l;\n this.luv_u = Math.cos(hrad) * this.lch_c;\n this.luv_v = Math.sin(hrad) * this.lch_c;\n }\n calculateBoundingLines(l) {\n const sub1 = Math.pow(l + 16, 3) / 1560896;\n const sub2 = sub1 > Hsluv.epsilon ? sub1 : l / Hsluv.kappa;\n const s1r = sub2 * (284517 * Hsluv.m_r0 - 94839 * Hsluv.m_r2);\n const s2r = sub2 * (838422 * Hsluv.m_r2 + 769860 * Hsluv.m_r1 + 731718 * Hsluv.m_r0);\n const s3r = sub2 * (632260 * Hsluv.m_r2 - 126452 * Hsluv.m_r1);\n const s1g = sub2 * (284517 * Hsluv.m_g0 - 94839 * Hsluv.m_g2);\n const s2g = sub2 * (838422 * Hsluv.m_g2 + 769860 * Hsluv.m_g1 + 731718 * Hsluv.m_g0);\n const s3g = sub2 * (632260 * Hsluv.m_g2 - 126452 * Hsluv.m_g1);\n const s1b = sub2 * (284517 * Hsluv.m_b0 - 94839 * Hsluv.m_b2);\n const s2b = sub2 * (838422 * Hsluv.m_b2 + 769860 * Hsluv.m_b1 + 731718 * Hsluv.m_b0);\n const s3b = sub2 * (632260 * Hsluv.m_b2 - 126452 * Hsluv.m_b1);\n this.r0s = s1r / s3r;\n this.r0i = s2r * l / s3r;\n this.r1s = s1r / (s3r + 126452);\n this.r1i = (s2r - 769860) * l / (s3r + 126452);\n this.g0s = s1g / s3g;\n this.g0i = s2g * l / s3g;\n this.g1s = s1g / (s3g + 126452);\n this.g1i = (s2g - 769860) * l / (s3g + 126452);\n this.b0s = s1b / s3b;\n this.b0i = s2b * l / s3b;\n this.b1s = s1b / (s3b + 126452);\n this.b1i = (s2b - 769860) * l / (s3b + 126452);\n }\n calcMaxChromaHpluv() {\n const r0 = Hsluv.distanceFromOrigin(this.r0s, this.r0i);\n const r1 = Hsluv.distanceFromOrigin(this.r1s, this.r1i);\n const g0 = Hsluv.distanceFromOrigin(this.g0s, this.g0i);\n const g1 = Hsluv.distanceFromOrigin(this.g1s, this.g1i);\n const b0 = Hsluv.distanceFromOrigin(this.b0s, this.b0i);\n const b1 = Hsluv.distanceFromOrigin(this.b1s, this.b1i);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n calcMaxChromaHsluv(h) {\n const hueRad = h / 360 * Math.PI * 2;\n const r0 = Hsluv.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n const r1 = Hsluv.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n const g0 = Hsluv.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n const g1 = Hsluv.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n const b0 = Hsluv.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n const b1 = Hsluv.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n return Hsluv.min6(r0, r1, g0, g1, b0, b1);\n }\n hsluvToLch() {\n if (this.hsluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hsluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hsluv_l;\n this.calculateBoundingLines(this.hsluv_l);\n const max = this.calcMaxChromaHsluv(this.hsluv_h);\n this.lch_c = max / 100 * this.hsluv_s;\n }\n this.lch_h = this.hsluv_h;\n }\n lchToHsluv() {\n if (this.lch_l > 99.9999999) {\n this.hsluv_s = 0;\n this.hsluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hsluv_s = 0;\n this.hsluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHsluv(this.lch_h);\n this.hsluv_s = this.lch_c / max * 100;\n this.hsluv_l = this.lch_l;\n }\n this.hsluv_h = this.lch_h;\n }\n hpluvToLch() {\n if (this.hpluv_l > 99.9999999) {\n this.lch_l = 100;\n this.lch_c = 0;\n }\n else if (this.hpluv_l < 0.00000001) {\n this.lch_l = 0;\n this.lch_c = 0;\n }\n else {\n this.lch_l = this.hpluv_l;\n this.calculateBoundingLines(this.hpluv_l);\n const max = this.calcMaxChromaHpluv();\n this.lch_c = max / 100 * this.hpluv_p;\n }\n this.lch_h = this.hpluv_h;\n }\n lchToHpluv() {\n if (this.lch_l > 99.9999999) {\n this.hpluv_p = 0;\n this.hpluv_l = 100;\n }\n else if (this.lch_l < 0.00000001) {\n this.hpluv_p = 0;\n this.hpluv_l = 0;\n }\n else {\n this.calculateBoundingLines(this.lch_l);\n const max = this.calcMaxChromaHpluv();\n this.hpluv_p = this.lch_c / max * 100;\n this.hpluv_l = this.lch_l;\n }\n this.hpluv_h = this.lch_h;\n }\n hsluvToRgb() {\n this.hsluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hpluvToRgb() {\n this.hpluvToLch();\n this.lchToLuv();\n this.luvToXyz();\n this.xyzToRgb();\n }\n hsluvToHex() {\n this.hsluvToRgb();\n this.rgbToHex();\n }\n hpluvToHex() {\n this.hpluvToRgb();\n this.rgbToHex();\n }\n rgbToHsluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHsluv();\n }\n rgbToHpluv() {\n this.rgbToXyz();\n this.xyzToLuv();\n this.luvToLch();\n this.lchToHpluv();\n this.lchToHpluv();\n }\n hexToHsluv() {\n this.hexToRgb();\n this.rgbToHsluv();\n }\n hexToHpluv() {\n this.hexToRgb();\n this.rgbToHpluv();\n }\n}\nHsluv.hexChars = \"0123456789abcdef\";\nHsluv.refY = 1.0;\nHsluv.refU = 0.19783000664283;\nHsluv.refV = 0.46831999493879;\nHsluv.kappa = 903.2962962;\nHsluv.epsilon = 0.0088564516;\nHsluv.m_r0 = 3.240969941904521;\nHsluv.m_r1 = -1.537383177570093;\nHsluv.m_r2 = -0.498610760293;\nHsluv.m_g0 = -0.96924363628087;\nHsluv.m_g1 = 1.87596750150772;\nHsluv.m_g2 = 0.041555057407175;\nHsluv.m_b0 = 0.055630079696993;\nHsluv.m_b1 = -0.20397695888897;\nHsluv.m_b2 = 1.056971514242878;\n","import {\n AlgorithmVersionConfiguration,\n VisionSimulationModeConfiguration,\n} from '@tps/configuration.types'\nimport chroma from 'chroma-js'\nimport { Hsluv } from 'hsluv'\nimport { ActionsList, ColorFormat } from '@tps/model.types'\nimport { Channel, ChannelWithAlpha, HexModel } from '@tps/color.types'\n\nconst colorBlindMatrices = {\n PROTANOPIA: [\n [0.567, 0.433, 0],\n [0.558, 0.442, 0],\n [0, 0.242, 0.758],\n ],\n PROTANOMALY: [\n [0.817, 0.183, 0],\n [0.333, 0.667, 0],\n [0, 0.125, 0.875],\n ],\n DEUTERANOPIA: [\n [0.625, 0.375, 0],\n [0.7, 0.3, 0],\n [0, 0.3, 0.7],\n ],\n DEUTERANOMALY: [\n [0.8, 0.2, 0],\n [0.258, 0.742, 0],\n [0, 0.142, 0.858],\n ],\n TRITANOPIA: [\n [0.95, 0.05, 0],\n [0, 0.433, 0.567],\n [0, 0.475, 0.525],\n ],\n TRITANOMALY: [\n [0.967, 0.033, 0],\n [0, 0.733, 0.267],\n [0, 0.183, 0.817],\n ],\n ACHROMATOPSIA: [\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n [0.299, 0.587, 0.114],\n ],\n ACHROMATOMALY: [\n [0.618, 0.32, 0.062],\n [0.163, 0.775, 0.062],\n [0.163, 0.32, 0.516],\n ],\n}\n\nconst applyColorMatrix = (color: Channel, matrix: number[][]): Channel => {\n const [r, g, b] = color\n const [m1, m2, m3] = matrix\n\n return [\n Math.round(r * m1[0] + g * m1[1] + b * m1[2]),\n Math.round(r * m2[0] + g * m2[1] + b * m2[2]),\n Math.round(r * m3[0] + g * m3[1] + b * m3[2]),\n ]\n}\n\nexport default class Color {\n private render: 'HEX' | 'RGB'\n private sourceColor: Channel\n private lightness: number\n private alpha: number\n private hueShifting: number\n private chromaShifting: number\n private algorithmVersion: AlgorithmVersionConfiguration\n private visionSimulationMode: VisionSimulationModeConfiguration\n\n constructor({\n render = 'HEX',\n sourceColor = [0, 0, 0],\n lightness = parseFloat((chroma(sourceColor).luminance() * 100).toFixed(1)),\n alpha = 1,\n hueShifting = 0,\n chromaShifting = 100,\n algorithmVersion = 'v3',\n visionSimulationMode = 'NONE',\n }: {\n render?: 'HEX' | 'RGB'\n sourceColor?: Channel\n lightness?: number\n alpha?: number\n hueShifting?: number\n chromaShifting?: number\n algorithmVersion?: AlgorithmVersionConfiguration\n visionSimulationMode?: VisionSimulationModeConfiguration\n }) {\n this.render = render\n this.sourceColor = sourceColor\n this.lightness = lightness\n this.alpha = alpha\n this.hueShifting = hueShifting\n this.chromaShifting = chromaShifting\n this.algorithmVersion = algorithmVersion\n this.visionSimulationMode = visionSimulationMode\n }\n\n adjustHue = (hue: number): number => {\n if (hue + this.hueShifting < 0) return hue + this.hueShifting + 360\n if (hue + this.hueShifting > 360) return hue + this.hueShifting - 360\n\n return hue + this.hueShifting\n }\n\n adjustChroma = (chroma: number): number => {\n if (this.algorithmVersion === 'v1') return chroma\n if (this.algorithmVersion === 'v2')\n return Math.sin((this.lightness / 100) * Math.PI) * chroma\n if (this.algorithmVersion === 'v3') {\n const lightnessFactor = this.lightness / 100\n const sinComponent = Math.sin(lightnessFactor * Math.PI)\n const tanhComponent = Math.tanh(lightnessFactor * Math.PI)\n const weightedComponent = sinComponent * 0.5 + tanhComponent * 0.5\n const smoothedComponent = Math.pow(weightedComponent, 0.5)\n\n return smoothedComponent * chroma\n }\n\n return chroma\n }\n\n setColor = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return this.simulateColorBlindHex(this.sourceColor)\n\n return this.simulateColorBlindRgb(this.sourceColor)\n }\n\n setColorWithAlpha = (): ColorFormat<typeof this.render> => {\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(this.sourceColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(this.sourceColor), this.alpha]\n }\n\n lch = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n this.lightness,\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n lcha = (): ColorFormat<typeof this.render> => {\n const lch = chroma(this.sourceColor).lch(),\n newColor = chroma\n .lch(\n lch[0],\n this.adjustChroma(lch[1] * (this.chromaShifting / 100)),\n this.adjustHue(lch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklch = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n this.lightness / 100,\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklcha = (): ColorFormat<typeof this.render> => {\n const oklch = chroma(this.sourceColor).oklch(),\n newColor = chroma\n .oklch(\n oklch[0],\n this.adjustChroma(oklch[1] * (this.chromaShifting / 100)),\n this.adjustHue(oklch[2])\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n lab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(\n this.lightness,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n laba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('lab.a'),\n labB = chroma(this.sourceColor).get('lab.b'),\n labL = chroma(this.sourceColor).get('lab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n const newColor = chroma\n .lab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n oklab = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(\n this.lightness / 100,\n this.adjustChroma(newLabA),\n this.adjustChroma(newLabB)\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n oklaba = (): ColorFormat<typeof this.render> => {\n const labA = chroma(this.sourceColor).get('oklab.a'),\n labB = chroma(this.sourceColor).get('oklab.b'),\n labL = chroma(this.sourceColor).get('oklab.l'),\n chr = Math.sqrt(labA ** 2 + labB ** 2) * (this.chromaShifting / 100)\n let h = Math.atan(labB / labA) + this.hueShifting * (Math.PI / 180)\n\n if (h > Math.PI) h = Math.PI\n else if (h < -Math.PI) h = Math.PI\n\n let newLabA = chr * Math.cos(h),\n newLabB = chr * Math.sin(h)\n\n if (Math.sign(labA) === -1 && Math.sign(labB) === 1) {\n newLabA *= -1\n newLabB *= -1\n }\n if (Math.sign(labA) === -1 && Math.sign(labB) === -1) {\n newLabA *= -1\n newLabB *= -1\n }\n\n if (Number.isNaN(newLabA)) newLabA = 0\n if (Number.isNaN(newLabB)) newLabB = 0\n\n const newColor = chroma\n .oklab(labL, this.adjustChroma(newLabA), this.adjustChroma(newLabB))\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsl = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n this.lightness / 100\n )\n .rgb()\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsla = (): ColorFormat<typeof this.render> => {\n const hsl = chroma(this.sourceColor).hsl(),\n newColor = chroma\n .hsl(\n this.adjustHue(hsl[0]),\n this.adjustChroma(hsl[1] * (this.chromaShifting / 100)),\n hsl[2]\n )\n .rgb()\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n hsluv = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_l = this.lightness\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX') return this.simulateColorBlindHex(newColor)\n\n return this.simulateColorBlindRgb(newColor)\n }\n\n hsluva = (): ColorFormat<typeof this.render> => {\n const hsluv = new Hsluv()\n\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n\n hsluv.rgbToHsluv()\n\n hsluv.hsluv_s = this.adjustChroma(\n hsluv.hsluv_s * (this.chromaShifting / 100)\n )\n hsluv.hsluv_h = this.adjustHue(hsluv.hsluv_h)\n\n if (Number.isNaN(hsluv.hsluv_s)) hsluv.hsluv_s = 0\n if (Number.isNaN(hsluv.hsluv_h)) hsluv.hsluv_h = 0\n\n hsluv.hsluvToRgb()\n\n const newColor: Channel = [\n hsluv.rgb_r * 255,\n hsluv.rgb_g * 255,\n hsluv.rgb_b * 255,\n ]\n\n if (this.render === 'HEX')\n return chroma\n .rgb(...this.simulateColorBlindRgb(newColor), this.alpha)\n .hex()\n\n return [...this.simulateColorBlindRgb(newColor), this.alpha]\n }\n\n getHsluv = (): Channel => {\n const hsluv = new Hsluv()\n hsluv.rgb_r = this.sourceColor[0] / 255\n hsluv.rgb_g = this.sourceColor[1] / 255\n hsluv.rgb_b = this.sourceColor[2] / 255\n hsluv.rgbToHsluv()\n\n return [hsluv.hsluv_h, hsluv.hsluv_s, hsluv.hsluv_l]\n }\n\n simulateColorBlindHex = (color: Channel): HexModel => {\n const actions: ActionsList = {\n NONE: () => chroma(color).hex(),\n PROTANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOMALY\n )\n return chroma(transformed).hex()\n },\n PROTANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.PROTANOPIA\n )\n return chroma(transformed).hex()\n },\n DEUTERANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOMALY\n )\n return chroma(transformed).hex()\n },\n DEUTERANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.DEUTERANOPIA\n )\n return chroma(transformed).hex()\n },\n TRITANOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOMALY\n )\n return chroma(transformed).hex()\n },\n TRITANOPIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.TRITANOPIA\n )\n return chroma(transformed).hex()\n },\n ACHROMATOMALY: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOMALY\n )\n return chroma(transformed).hex()\n },\n ACHROMATOPSIA: () => {\n const transformed = applyColorMatrix(\n color,\n colorBlindMatrices.ACHROMATOPSIA\n )\n return chroma(transformed).hex()\n },\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : '#000000'\n }\n\n simulateColorBlindRgb = (color: Channel): Channel => {\n const actions: ActionsList = {\n NONE: () => chroma(color).rgb(),\n PROTANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.PROTANOMALY),\n PROTANOPIA: () => applyColorMatrix(color, colorBlindMatrices.PROTANOPIA),\n DEUTERANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOMALY),\n DEUTERANOPIA: () =>\n applyColorMatrix(color, colorBlindMatrices.DEUTERANOPIA),\n TRITANOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.TRITANOMALY),\n TRITANOPIA: () => applyColorMatrix(color, colorBlindMatrices.TRITANOPIA),\n ACHROMATOMALY: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOMALY),\n ACHROMATOPSIA: () =>\n applyColorMatrix(color, colorBlindMatrices.ACHROMATOPSIA),\n }\n\n const result = actions[this.visionSimulationMode]?.()\n return result !== undefined ? result : [0, 0, 0]\n }\n\n mixColorsRgb = (\n colorA: ChannelWithAlpha,\n colorB: ChannelWithAlpha\n ): Channel => {\n const [r1, g1, b1, a1] = colorA\n const [r2, g2, b2, a2] = colorB\n\n if (a1 === 1) return [r1, g1, b1]\n if (a1 === 0) return [r2, g2, b2]\n\n const alpha = a1 + a2 * (1 - a1)\n const r = Math.min(\n 255,\n Math.max(0, Math.round((r1 * a1 + r2 * a2 * (1 - a1)) / alpha))\n )\n const g = Math.min(\n 255,\n Math.max(0, Math.round((g1 * a1 + g2 * a2 * (1 - a1)) / alpha))\n )\n const b = Math.min(\n 255,\n Math.max(0, Math.round((b1 * a1 + b2 * a2 * (1 - a1)) / alpha))\n )\n\n return this.simulateColorBlindRgb([r, g, b])\n }\n\n mixColorsHex = (colorA: HexModel, colorB: HexModel): HexModel => {\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(colorA)) return colorA\n if (!/^#([0-9A-Fa-f]{3}){1,2}$/.test(colorB)) return colorB\n const rgbA = chroma(colorA).rgba()\n const rgbB = chroma(colorB).rgba()\n const mixed = this.mixColorsRgb(rgbA, rgbB)\n\n return chroma(mixed).hex()\n }\n}\n"],"names":["Hsluv","c","Y","L","chan","digit2","digit1","hex","offset","slope","intercept","angle","d","f1","f2","f3","f4","f5","f6","lr","lg","lb","divider","varU","varV","hrad","l","sub1","sub2","s1r","s2r","s3r","s1g","s2g","s3g","s1b","s2b","s3b","r0","r1","g0","g1","b0","b1","h","hueRad","max","colorBlindMatrices","applyColorMatrix","color","matrix","r","g","b","m1","m2","m3","Color","render","sourceColor","lightness","chroma","alpha","hueShifting","chromaShifting","algorithmVersion","visionSimulationMode","__publicField","hue","lightnessFactor","sinComponent","tanhComponent","weightedComponent","lch","newColor","oklch","labA","labB","chr","newLabA","newLabB","labL","hsl","hsluv","actions","transformed","result","_a","colorA","colorB","a1","r2","g2","b2","a2","rgbA","rgbB","mixed"],"mappings":"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","x_google_ignoreList":[0]}