{"version":3,"file":"average.cjs","sources":["../../../../../../../../../.yarn/berry/cache/chroma-js-npm-3.2.0-d5c39f5077-10c0.zip/node_modules/chroma-js/src/generator/average.js"],"sourcesContent":["import Color from '../Color.js';\nimport { clip_rgb } from '../utils/index.js';\n\nconst { pow, sqrt, PI, cos, sin, atan2 } = Math;\n\nexport default (colors, mode = 'lrgb', weights = null) => {\n    const l = colors.length;\n    if (!weights) weights = Array.from(new Array(l)).map(() => 1);\n    // normalize weights\n    const k =\n        l /\n        weights.reduce(function (a, b) {\n            return a + b;\n        });\n    weights.forEach((w, i) => {\n        weights[i] *= k;\n    });\n    // convert colors to Color objects\n    colors = colors.map((c) => new Color(c));\n    if (mode === 'lrgb') {\n        return _average_lrgb(colors, weights);\n    }\n    const first = colors.shift();\n    const xyz = first.get(mode);\n    const cnt = [];\n    let dx = 0;\n    let dy = 0;\n    // initial color\n    for (let i = 0; i < xyz.length; i++) {\n        xyz[i] = (xyz[i] || 0) * weights[0];\n        cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n        if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n            const A = (xyz[i] / 180) * PI;\n            dx += cos(A) * weights[0];\n            dy += sin(A) * weights[0];\n        }\n    }\n\n    let alpha = first.alpha() * weights[0];\n    colors.forEach((c, ci) => {\n        const xyz2 = c.get(mode);\n        alpha += c.alpha() * weights[ci + 1];\n        for (let i = 0; i < xyz.length; i++) {\n            if (!isNaN(xyz2[i])) {\n                cnt[i] += weights[ci + 1];\n                if (mode.charAt(i) === 'h') {\n                    const A = (xyz2[i] / 180) * PI;\n                    dx += cos(A) * weights[ci + 1];\n                    dy += sin(A) * weights[ci + 1];\n                } else {\n                    xyz[i] += xyz2[i] * weights[ci + 1];\n                }\n            }\n        }\n    });\n\n    for (let i = 0; i < xyz.length; i++) {\n        if (mode.charAt(i) === 'h') {\n            let A = (atan2(dy / cnt[i], dx / cnt[i]) / PI) * 180;\n            while (A < 0) A += 360;\n            while (A >= 360) A -= 360;\n            xyz[i] = A;\n        } else {\n            xyz[i] = xyz[i] / cnt[i];\n        }\n    }\n    alpha /= l;\n    return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);\n};\n\nconst _average_lrgb = (colors, weights) => {\n    const l = colors.length;\n    const xyz = [0, 0, 0, 0];\n    for (let i = 0; i < colors.length; i++) {\n        const col = colors[i];\n        const f = weights[i] / l;\n        const rgb = col._rgb;\n        xyz[0] += pow(rgb[0], 2) * f;\n        xyz[1] += pow(rgb[1], 2) * f;\n        xyz[2] += pow(rgb[2], 2) * f;\n        xyz[3] += rgb[3] * f;\n    }\n    xyz[0] = sqrt(xyz[0]);\n    xyz[1] = sqrt(xyz[1]);\n    xyz[2] = sqrt(xyz[2]);\n    if (xyz[3] > 0.9999999) xyz[3] = 1;\n    return new Color(clip_rgb(xyz));\n};\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}