2a5bac2bb3
* major JSDoc write up * removed ESLint `no-bitwise` exception, it only applies to specific functions and not the entire code * the `SVGCubicMorph` component will remove un-necessary `Z` path commands when is the case for better out of the box animation * fixed a minor disambiguation with `filterEffects` and `drop-shadow` property and its `dropshadow` interpolation function * TypeScript strong: all files are modules, easy to implement in any third party app * updated `CubicBezier` and SVGPathCommander * code cleanup
29 lines
769 B
JavaScript
29 lines
769 B
JavaScript
import numbers from './numbers';
|
|
/**
|
|
* Color Interpolation Function.
|
|
*
|
|
* @param {KUTE.colorObject} a start color
|
|
* @param {KUTE.colorObject} b end color
|
|
* @param {number} v progress
|
|
* @returns {string} the resulting color
|
|
*/
|
|
export default function colors(a, b, v) {
|
|
const _c = {};
|
|
const ep = ')';
|
|
const cm = ',';
|
|
const rgb = 'rgb(';
|
|
const rgba = 'rgba(';
|
|
|
|
Object.keys(b).forEach((c) => {
|
|
if (c !== 'a') {
|
|
_c[c] = numbers(a[c], b[c], v) >> 0 || 0; // eslint-disable-line no-bitwise
|
|
} else if (a[c] && b[c]) {
|
|
_c[c] = (numbers(a[c], b[c], v) * 100 >> 0) / 100; // eslint-disable-line no-bitwise
|
|
}
|
|
});
|
|
|
|
return !_c.a
|
|
? rgb + _c.r + cm + _c.g + cm + _c.b + ep
|
|
: rgba + _c.r + cm + _c.g + cm + _c.b + cm + _c.a + ep;
|
|
}
|