# All files / color desaturate.js

100% Statements 2/2
100% Branches 0/0
100% Functions 1/1
100% Lines 2/2

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41

    4x
    4x

     // @flow

    import parseToHsl from './parseToHsl'
    import toColorString from './toColorString'
    import guard from '../internalHelpers/_guard'
    import curry from '../internalHelpers/_curry'

    /**
     * Decreases the intensity of a color. Its range is between 0 to 1. The first
     * argument of the desaturate function is the amount by how much the color
     * intensity should be decreased.
     *
     * @example
     * // Styles as object usage
     * const styles = {
     *   background: desaturate(0.2, '#CCCD64'),
     *   background: desaturate(0.2, 'rgba(204,205,100,0.7)'),
     * }
     *
     * // styled-components usage
     * const div = styled.div`
     *   background: ${desaturate(0.2, '#CCCD64')};
     *   background: ${desaturate(0.2, 'rgba(204,205,100,0.7)')};
     * `
     *
     * // CSS in JS Output
     * element {
     *   background: "#b8b979";
     *   background: "rgba(184,185,121,0.7)";
     * }
     */
    function desaturate(amount: number, color: string): string {
      const hslColor = parseToHsl(color)
      return toColorString({
        ...hslColor,
        saturation: guard(0, 1, hslColor.saturation - amount),
      })
    }

    export default curry(desaturate)