File size: 664 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* IMPORT */
import _ from '~/utils';
import Color from '~/color';
import adjust from '~/methods/adjust';
import type {CHANNELS, Channels} from '~/types';
/* MAIN */
const scale = ( color: string | Channels, channels: Partial<CHANNELS> ): string => {
const ch = Color.parse ( color );
const adjustments: Partial<CHANNELS> = {};
const delta = ( amount: number, weight: number, max: number ) => weight > 0 ? ( max - amount ) * weight / 100 : amount * weight / 100;
for ( const c in channels ) {
adjustments[c] = delta ( ch[c], channels[c], _.channel.max[c] );
}
return adjust ( color, adjustments );
};
/* EXPORT */
export default scale;
|