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;