@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
45 lines (44 loc) • 1.19 kB
JavaScript
;
const Color = require("../Color.cjs");
const type = require("../utils/type.cjs");
Color.prototype.set = function(mc, value, mutate = false) {
const [mode, channel] = mc.split(".");
const src = this[mode]();
if (channel) {
const i = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0);
if (i > -1) {
if (type(value) == "string") {
switch (value.charAt(0)) {
case "+":
src[i] += +value;
break;
case "-":
src[i] += +value;
break;
case "*":
src[i] *= +value.substr(1);
break;
case "/":
src[i] /= +value.substr(1);
break;
default:
src[i] = +value;
}
} else if (type(value) === "number") {
src[i] = value;
} else {
throw new Error(`unsupported value for Color.set`);
}
const out = new Color(src, mode);
if (mutate) {
this._rgb = out._rgb;
return this;
}
return out;
}
throw new Error(`unknown channel ${channel} in mode ${mode}`);
} else {
return src;
}
};
//# sourceMappingURL=set.cjs.map