UNPKG

colorjs.io

Version:

Let’s get serious about color

55 lines (48 loc) 1.3 kB
import ColorSpace from "./ColorSpace.js"; import getColor from "./getColor.js"; import get from "./get.js"; import getAll from "./getAll.js"; import setAll from "./setAll.js"; import { type } from "./util.js"; /** @import { ColorTypes, PlainColorObject, Ref } from "./types.js" */ /** * Set properties and return current instance * @overload * @param {ColorTypes} color * @param {Ref} prop * @param {number | ((coord: number) => number)} value * @returns {PlainColorObject} */ /** * @overload * @param {ColorTypes} color * @param {Record<string, number | ((coord: number) => number)>} props * @returns {PlainColorObject} */ export default function set (color, prop, value) { color = getColor(color); if (arguments.length === 2 && type(arguments[1]) === "object") { // Argument is an object literal let object = arguments[1]; for (let p in object) { set(color, p, object[p]); } } else { if (typeof value === "function") { value = value(get(color, prop)); } if (prop === "alpha") { color.alpha = value; } else { let { space, index } = ColorSpace.resolveCoord(prop, color.space); let coords = getAll(color, space); coords[index] = value; setAll(color, space, coords); } } return color; } /** @type {"color"} */ set.returns = "color";