{"version":3,"file":"luminance.cjs","sources":["../../../../../../../../../.yarn/berry/cache/chroma-js-npm-3.2.0-d5c39f5077-10c0.zip/node_modules/chroma-js/src/ops/luminance.js"],"sourcesContent":["import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nconst { pow } = Math;\n\nconst EPS = 1e-7;\nconst MAX_ITER = 20;\n\nColor.prototype.luminance = function (lum, mode = 'rgb') {\n    if (lum !== undefined && type(lum) === 'number') {\n        if (lum === 0) {\n            // return pure black\n            return new Color([0, 0, 0, this._rgb[3]], 'rgb');\n        }\n        if (lum === 1) {\n            // return pure white\n            return new Color([255, 255, 255, this._rgb[3]], 'rgb');\n        }\n        // compute new color using...\n        let cur_lum = this.luminance();\n        let max_iter = MAX_ITER;\n\n        const test = (low, high) => {\n            const mid = low.interpolate(high, 0.5, mode);\n            const lm = mid.luminance();\n            if (Math.abs(lum - lm) < EPS || !max_iter--) {\n                // close enough\n                return mid;\n            }\n            return lm > lum ? test(low, mid) : test(mid, high);\n        };\n\n        const rgb = (\n            cur_lum > lum\n                ? test(new Color([0, 0, 0]), this)\n                : test(this, new Color([255, 255, 255]))\n        ).rgb();\n        return new Color([...rgb, this._rgb[3]]);\n    }\n    return rgb2luminance(...this._rgb.slice(0, 3));\n};\n\nconst rgb2luminance = (r, g, b) => {\n    // relative luminance\n    // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n    r = luminance_x(r);\n    g = luminance_x(g);\n    b = luminance_x(b);\n    return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nconst luminance_x = (x) => {\n    x /= 255;\n    return x <= 0.03928 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n};\n"],"names":[],"mappings":";;;AAEA,MAAM,EAAE,IAAG,IAAK;AAEhB,MAAM,MAAM;AACZ,MAAM,WAAW;AAEjB,MAAM,UAAU,YAAY,SAAU,KAAK,OAAO,OAAO;AACrD,MAAI,QAAQ,UAAa,KAAK,GAAG,MAAM,UAAU;AAC7C,QAAI,QAAQ,GAAG;AAEX,aAAO,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK;AAAA,IACnD;AACA,QAAI,QAAQ,GAAG;AAEX,aAAO,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK;AAAA,IACzD;AAEA,QAAI,UAAU,KAAK,UAAS;AAC5B,QAAI,WAAW;AAEf,UAAM,OAAO,CAAC,KAAK,SAAS;AACxB,YAAM,MAAM,IAAI,YAAY,MAAM,KAAK,IAAI;AAC3C,YAAM,KAAK,IAAI,UAAS;AACxB,UAAI,KAAK,IAAI,MAAM,EAAE,IAAI,OAAO,CAAC,YAAY;AAEzC,eAAO;AAAA,MACX;AACA,aAAO,KAAK,MAAM,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;AAAA,IACrD;AAEA,UAAM,OACF,UAAU,MACJ,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,IAC/B,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,GAC7C,IAAG;AACL,WAAO,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,EAC3C;AACA,SAAO,cAAc,GAAG,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AACjD;AAEA,MAAM,gBAAgB,CAAC,GAAG,GAAG,MAAM;AAG/B,MAAI,YAAY,CAAC;AACjB,MAAI,YAAY,CAAC;AACjB,MAAI,YAAY,CAAC;AACjB,SAAO,SAAS,IAAI,SAAS,IAAI,SAAS;AAC9C;AAEA,MAAM,cAAc,CAAC,MAAM;AACvB,OAAK;AACL,SAAO,KAAK,UAAU,IAAI,QAAQ,KAAK,IAAI,SAAS,OAAO,GAAG;AAClE;","x_google_ignoreList":[0]}