{"version":3,"file":"luminance.mjs","sources":["../../../../../../../../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":["pow"],"mappings":";;;AAEA,MAAM,OAAEA,KAAG,EAAE,GAAG,IAAI;;AAEpB,MAAM,GAAG,GAAG,IAAI;AAChB,MAAM,QAAQ,GAAG,EAAE;;AAEnB,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE,IAAI,GAAG,KAAK,EAAE;AACzD,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AACrD,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB;AACA,YAAY,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC5D,QAAQ;AACR,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;AACvB;AACA,YAAY,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAClE,QAAQ;AACR;AACA,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,QAAQ;;AAE/B,QAAQ,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AACpC,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AACxD,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE;AACtC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzD;AACA,gBAAgB,OAAO,GAAG;AAC1B,YAAY;AACZ,YAAY,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9D,QAAQ,CAAC;;AAET,QAAQ,MAAM,GAAG,GAAG;AACpB,YAAY,OAAO,GAAG;AACtB,kBAAkB,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;AACjD,kBAAkB,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvD,UAAU,GAAG,EAAE;AACf,QAAQ,OAAO,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI;AACJ,IAAI,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;;AAED,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACnC;AACA;AACA,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACtB,IAAI,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;AAC/C,CAAC;;AAED,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK;AAC3B,IAAI,CAAC,IAAI,GAAG;AACZ,IAAI,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,GAAGA,KAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;AACnE,CAAC","x_google_ignoreList":[0]}