{"version":3,"file":"average.mjs","sources":["../../../../../../../../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":["pow","sqrt","PI","cos","sin","atan2"],"mappings":"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","x_google_ignoreList":[0]}