Blame view

node_modules/stylus/lib/functions/adjust.js 735 Bytes
ce4c83ff   wxy   初始提交
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
  var utils = require('../utils');
  
  /**
   * Adjust HSL `color` `prop` by `amount`.
   *
   * @param {RGBA|HSLA} color
   * @param {String} prop
   * @param {Unit} amount
   * @return {RGBA}
   * @api private
   */
  
  module.exports = function adjust(color, prop, amount){
    utils.assertColor(color, 'color');
    utils.assertString(prop, 'prop');
    utils.assertType(amount, 'unit', 'amount');
    var hsl = color.hsla.clone();
    prop = { hue: 'h', saturation: 's', lightness: 'l' }[prop.string];
    if (!prop) throw new Error('invalid adjustment property');
    var val = amount.val;
    if ('%' == amount.type){
      val = 'l' == prop && val > 0
        ? (100 - hsl[prop]) * val / 100
        : hsl[prop] * (val / 100);
    }
    hsl[prop] += val;
    return hsl.rgba;
  };