@csstools/convert-colors 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.bundle.js CHANGED
@@ -1,42 +1,42 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  /* Convert between RGB and Hue
4
6
  /* ========================================================================== */
5
7
 
6
8
  function rgb2hue(rgbR, rgbG, rgbB) {
9
+ var fallbackhue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
10
+
7
11
  var value = rgb2value(rgbR, rgbG, rgbB);
8
12
  var whiteness = rgb2whiteness(rgbR, rgbG, rgbB);
9
13
  var delta = value - whiteness;
10
14
 
11
- // calculate segment
12
- var segment = value === rgbR ? (rgbG - rgbB) / delta : value === rgbG ? (rgbB - rgbR) / delta : (rgbR - rgbG) / delta;
15
+ if (delta) {
16
+ // calculate segment
17
+ var segment = value === rgbR ? (rgbG - rgbB) / delta : value === rgbG ? (rgbB - rgbR) / delta : (rgbR - rgbG) / delta;
13
18
 
14
- // calculate shift
15
- var shift = value === rgbR ? segment < 0 ? 360 / 60 : 0 / 60 : value === rgbG ? 120 / 60 : 240 / 60;
19
+ // calculate shift
20
+ var shift = value === rgbR ? segment < 0 ? 360 / 60 : 0 / 60 : value === rgbG ? 120 / 60 : 240 / 60;
16
21
 
17
- // calculate hue
18
- var hue = (segment + shift) * 60 || 0;
22
+ // calculate hue
23
+ var hue = (segment + shift) * 60;
19
24
 
20
- return hue;
25
+ return hue;
26
+ } else {
27
+ // otherwise return the fallback hue
28
+ return fallbackhue;
29
+ }
21
30
  }
22
31
 
23
32
  function hue2rgb(t1, t2, hue) {
24
- // calculate ranged hue
33
+ // calculate the ranged hue
25
34
  var rhue = hue < 0 ? hue + 360 : hue > 360 ? hue - 360 : hue;
26
35
 
27
- if (rhue * 6 < 360) {
28
- return t1 + (t2 - t1) * rhue / 60;
29
- }
30
-
31
- if (rhue * 2 < 360) {
32
- return t2;
33
- }
34
-
35
- if (rhue * 3 < 720) {
36
- return t1 + (t2 - t1) * (240 - rhue) / 60;
37
- }
36
+ // calculate the rgb value
37
+ var rgb = rhue * 6 < 360 ? t1 + (t2 - t1) * rhue / 60 : rhue * 2 < 360 ? t2 : rhue * 3 < 720 ? t1 + (t2 - t1) * (240 - rhue) / 60 : t1;
38
38
 
39
- return t1;
39
+ return rgb;
40
40
  }
41
41
 
42
42
  /* RGB tooling
@@ -82,13 +82,8 @@ var kappa = Math.pow(29, 3) / Math.pow(3, 3);
82
82
  /* Convert between RGB and HSL
83
83
  /* ========================================================================== */
84
84
 
85
- // https://www.w3.org/TR/css-color-3/#hsl-color
86
- // https://www.w3.org/TR/css-color-4/#hsl-to-rgb
87
- // https://www.rapidtables.com/convert/color/rgb-to-hsl.html
88
- // https://www.rapidtables.com/convert/color/hsl-to-rgb.html
89
-
90
- function rgb2hsl(rgbR, rgbG, rgbB) {
91
- var hslH = rgb2hue(rgbR, rgbG, rgbB);
85
+ function rgb2hsl(rgbR, rgbG, rgbB, fallbackhue) {
86
+ var hslH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);
92
87
  var hslV = rgb2value(rgbR, rgbG, rgbB);
93
88
  var hslW = rgb2whiteness(rgbR, rgbG, rgbB);
94
89
 
@@ -121,16 +116,25 @@ function hsl2rgb(hslH, hslS, hslL) {
121
116
  return [rgbR, rgbG, rgbB];
122
117
  }
123
118
 
119
+ /*
120
+
121
+ References
122
+ ----------
123
+
124
+ - https://www.w3.org/TR/css-color-3/#hsl-color
125
+ - https://www.w3.org/TR/css-color-4/#hsl-to-rgb
126
+ - https://www.rapidtables.com/convert/color/rgb-to-hsl.html
127
+ - https://www.rapidtables.com/convert/color/hsl-to-rgb.html
128
+
129
+ /* ========================================================================== */
130
+
124
131
  var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
125
132
 
126
133
  /* Convert between RGB and HWB
127
134
  /* ========================================================================== */
128
135
 
129
- // https://www.w3.org/TR/css-color-4/#hwb-to-rgb
130
- // http://alvyray.com/Papers/CG/hwb2rgb.htm
131
-
132
- function rgb2hwb(rgbR, rgbG, rgbB) {
133
- var hwbH = rgb2hue(rgbR, rgbG, rgbB);
136
+ function rgb2hwb(rgbR, rgbG, rgbB, fallbackhue) {
137
+ var hwbH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);
134
138
  var hwbW = rgb2whiteness(rgbR, rgbG, rgbB);
135
139
  var hwbV = rgb2value(rgbR, rgbG, rgbB);
136
140
  var hwbB = 100 - hwbV;
@@ -138,8 +142,8 @@ function rgb2hwb(rgbR, rgbG, rgbB) {
138
142
  return [hwbH, hwbW, hwbB];
139
143
  }
140
144
 
141
- function hwb2rgb(hwbH, hwbW, hwbB) {
142
- var _hsl2rgb$map = hsl2rgb(hwbH, 100, 50).map(function (v) {
145
+ function hwb2rgb(hwbH, hwbW, hwbB, fallbackhue) {
146
+ var _hsl2rgb$map = hsl2rgb(hwbH, 100, 50, fallbackhue).map(function (v) {
143
147
  return v * (100 - hwbW - hwbB) / 100 + hwbW;
144
148
  }),
145
149
  _hsl2rgb$map2 = _slicedToArray(_hsl2rgb$map, 3),
@@ -150,15 +154,25 @@ function hwb2rgb(hwbH, hwbW, hwbB) {
150
154
  return [rgbR, rgbG, rgbB];
151
155
  }
152
156
 
153
- /* Convert between RGB and HSV
157
+ /*
158
+
159
+ References
160
+ ----------
161
+
162
+ - https://www.w3.org/TR/css-color-4/#hwb-to-rgb
163
+ - http://alvyray.com/Papers/CG/hwb2rgb.htm
164
+
154
165
  /* ========================================================================== */
155
166
 
156
- // http://alvyray.com/Papers/CG/hsv2rgb.htm
167
+ var _slicedToArray$1 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
157
168
 
158
- function rgb2hsv(rgbR, rgbG, rgbB) {
169
+ /* Convert between RGB and HSV
170
+ /* ========================================================================== */
171
+
172
+ function rgb2hsv(rgbR, rgbG, rgbB, fallbackhue) {
159
173
  var hsvV = rgb2value(rgbR, rgbG, rgbB);
160
174
  var hsvW = rgb2whiteness(rgbR, rgbG, rgbB);
161
- var hsvH = rgb2hue(rgbR, rgbG, rgbB);
175
+ var hsvH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);
162
176
 
163
177
  // calculate saturation
164
178
  var hsvS = hsvV === hsvW ? 0 : (hsvV - hsvW) / hsvV * 100;
@@ -174,24 +188,25 @@ function hsv2rgb(hsvH, hsvS, hsvV) {
174
188
  var rgbM = hsvV * (100 - hsvS) / 100;
175
189
  var rgbN = hsvV * (100 - hsvS * rgbF) / 100;
176
190
 
177
- switch (rgbI) {
178
- case 6:
179
- case 0:
180
- return [hsvV, rgbN, rgbM];
181
- case 1:
182
- return [rgbN, hsvV, rgbM];
183
- case 2:
184
- return [rgbM, hsvV, rgbN];
185
- case 3:
186
- return [rgbM, rgbN, hsvV];
187
- case 4:
188
- return [rgbN, rgbM, hsvV];
189
- case 5:
190
- return [hsvV, rgbM, rgbN];
191
- }
191
+ var _ref = rgbI === 5 ? [hsvV, rgbM, rgbN] : rgbI === 4 ? [rgbN, rgbM, hsvV] : rgbI === 3 ? [rgbM, rgbN, hsvV] : rgbI === 2 ? [rgbM, hsvV, rgbN] : rgbI === 1 ? [rgbN, hsvV, rgbM] : [hsvV, rgbN, rgbM],
192
+ _ref2 = _slicedToArray$1(_ref, 3),
193
+ rgbR = _ref2[0],
194
+ rgbG = _ref2[1],
195
+ rgbB = _ref2[2];
196
+
197
+ return [rgbR, rgbG, rgbB];
192
198
  }
193
199
 
194
- var _slicedToArray$1 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
200
+ /*
201
+
202
+ References
203
+ ----------
204
+
205
+ - http://alvyray.com/Papers/CG/hsv2rgb.htm
206
+
207
+ /* ========================================================================== */
208
+
209
+ var _slicedToArray$2 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
195
210
 
196
211
  /* Convert between RGB and XYZ
197
212
  /* ========================================================================== */
@@ -200,13 +215,13 @@ function rgb2xyz(rgbR, rgbG, rgbB) {
200
215
  var _map = [rgbR, rgbG, rgbB].map(function (v) {
201
216
  return v > 4.045 ? Math.pow((v + 5.5) / 105.5, 2.4) * 100 : v / 12.92;
202
217
  }),
203
- _map2 = _slicedToArray$1(_map, 3),
218
+ _map2 = _slicedToArray$2(_map, 3),
204
219
  lrgbR = _map2[0],
205
220
  lrgbB = _map2[1],
206
221
  lrgbG = _map2[2];
207
222
 
208
223
  var _matrix = matrix([lrgbR, lrgbB, lrgbG], [[0.4124564, 0.3575761, 0.1804375], [0.2126729, 0.7151522, 0.0721750], [0.0193339, 0.1191920, 0.9503041]]),
209
- _matrix2 = _slicedToArray$1(_matrix, 3),
224
+ _matrix2 = _slicedToArray$2(_matrix, 3),
210
225
  xyzX = _matrix2[0],
211
226
  xyzY = _matrix2[1],
212
227
  xyzZ = _matrix2[2];
@@ -216,7 +231,7 @@ function rgb2xyz(rgbR, rgbG, rgbB) {
216
231
 
217
232
  function xyz2rgb(xyzX, xyzY, xyzZ) {
218
233
  var _matrix3 = matrix([xyzX, xyzY, xyzZ], [[3.2404542, -1.5371385, -0.4985314], [-0.9692660, 1.8760108, 0.0415560], [0.0556434, -0.2040259, 1.0572252]]),
219
- _matrix4 = _slicedToArray$1(_matrix3, 3),
234
+ _matrix4 = _slicedToArray$2(_matrix3, 3),
220
235
  lrgbR = _matrix4[0],
221
236
  lrgbB = _matrix4[1],
222
237
  lrgbG = _matrix4[2];
@@ -224,7 +239,7 @@ function xyz2rgb(xyzX, xyzY, xyzZ) {
224
239
  var _map3 = [lrgbR, lrgbB, lrgbG].map(function (v) {
225
240
  return v > 0.31308 ? 1.055 * Math.pow(v / 100, 1 / 2.4) * 100 - 5.5 : 12.92 * v;
226
241
  }),
227
- _map4 = _slicedToArray$1(_map3, 3),
242
+ _map4 = _slicedToArray$2(_map3, 3),
228
243
  rgbR = _map4[0],
229
244
  rgbG = _map4[1],
230
245
  rgbB = _map4[2];
@@ -232,10 +247,18 @@ function xyz2rgb(xyzX, xyzY, xyzZ) {
232
247
  return [rgbR, rgbG, rgbB];
233
248
  }
234
249
 
235
- /* Convert between HSL and HSV
250
+ /*
251
+
252
+ References
253
+ ----------
254
+
255
+ - https://www.w3.org/TR/css-color-4/#rgb-to-lab
256
+ - https://www.w3.org/TR/css-color-4/#color-conversion-code
257
+
236
258
  /* ========================================================================== */
237
259
 
238
- // https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117
260
+ /* Convert between HSL and HSV
261
+ /* ========================================================================== */
239
262
 
240
263
  function hsl2hsv(hslH, hslS, hslL) {
241
264
  var hsv1 = hslS * (hslL < 50 ? hslL : 100 - hslL) / 100;
@@ -255,10 +278,17 @@ function hsv2hsl(hsvH, hsvS, hsvV) {
255
278
  return [hsvH, hslS, hslV];
256
279
  }
257
280
 
258
- /* Convert between HWB and HSV
281
+ /*
282
+
283
+ References
284
+ ----------
285
+
286
+ - https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117
287
+
259
288
  /* ========================================================================== */
260
289
 
261
- // https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV
290
+ /* Convert between HWB and HSV
291
+ /* ========================================================================== */
262
292
 
263
293
  function hwb2hsv(hwbH, hwbW, hwbB) {
264
294
  var hsvH = hwbH,
@@ -278,14 +308,19 @@ function hsv2hwb(hsvH, hsvS, hsvV) {
278
308
  return [hwbH, hwbW, hwbB];
279
309
  }
280
310
 
281
- var _slicedToArray$2 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
311
+ /*
312
+
313
+ References
314
+ ----------
315
+
316
+ - https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV
282
317
 
283
- /* Convert between LAB and XYZ
284
318
  /* ========================================================================== */
285
319
 
286
- // https://www.w3.org/TR/css-color-4/#rgb-to-lab
287
- // https://www.w3.org/TR/css-color-4/#color-conversion-code
288
- // https://www.easyrgb.com/en/math.php
320
+ var _slicedToArray$3 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
321
+
322
+ /* Convert between Lab and XYZ
323
+ /* ========================================================================== */
289
324
 
290
325
  function lab2xyz(labL, labA, labB) {
291
326
  // compute f, starting with the luminance-related term
@@ -303,7 +338,7 @@ function lab2xyz(labL, labA, labB) {
303
338
  [initX * wd50X, initY * wd50Y, initZ * wd50Z],
304
339
  // calculate D65 XYZ from D50 XYZ
305
340
  [[0.9555766, -0.0230393, 0.0631636], [-0.0282895, 1.0099416, 0.0210077], [0.0122982, -0.0204830, 1.3299098]]),
306
- _matrix2 = _slicedToArray$2(_matrix, 3),
341
+ _matrix2 = _slicedToArray$3(_matrix, 3),
307
342
  xyzX = _matrix2[0],
308
343
  xyzY = _matrix2[1],
309
344
  xyzZ = _matrix2[2];
@@ -314,7 +349,7 @@ function lab2xyz(labL, labA, labB) {
314
349
  function xyz2lab(xyzX, xyzY, xyzZ) {
315
350
  // calculate D50 XYZ from D65 XYZ
316
351
  var _matrix3 = matrix([xyzX, xyzY, xyzZ], [[1.0478112, 0.0228866, -0.0501270], [0.0295424, 0.9904844, -0.0170491], [-0.0092345, 0.0150436, 0.7521316]]),
317
- _matrix4 = _slicedToArray$2(_matrix3, 3),
352
+ _matrix4 = _slicedToArray$3(_matrix3, 3),
318
353
  d50X = _matrix4[0],
319
354
  d50Y = _matrix4[1],
320
355
  d50Z = _matrix4[2];
@@ -325,7 +360,7 @@ function xyz2lab(xyzX, xyzY, xyzZ) {
325
360
  var _map = [d50X / wd50X, d50Y / wd50Y, d50Z / wd50Z].map(function (value) {
326
361
  return value > epsilon ? Math.cbrt(value) : (kappa * value + 16) / 116;
327
362
  }),
328
- _map2 = _slicedToArray$2(_map, 3),
363
+ _map2 = _slicedToArray$3(_map, 3),
329
364
  f1 = _map2[0],
330
365
  f2 = _map2[1],
331
366
  f3 = _map2[2];
@@ -338,20 +373,64 @@ function xyz2lab(xyzX, xyzY, xyzZ) {
338
373
  return [labL, labA, labB];
339
374
  }
340
375
 
341
- var _slicedToArray$3 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
376
+ /*
377
+
378
+ References
379
+ ----------
380
+
381
+ - https://www.w3.org/TR/css-color-4/#rgb-to-lab
382
+ - https://www.w3.org/TR/css-color-4/#color-conversion-code
383
+ - https://www.easyrgb.com/en/math.php
342
384
 
343
- /* Convert between RGB and LAB
385
+ /* ========================================================================== */
386
+
387
+ /* Convert between Lab and XYZ
388
+ /* ========================================================================== */
389
+
390
+ function lab2lch(labL, labA, labB) {
391
+ var _ref = [Math.sqrt(Math.pow(labA, 2) + Math.pow(labB, 2)), // convert to chroma
392
+ Math.atan2(labB, labA) * 180 / Math.PI // convert to hue, in degrees
393
+ ],
394
+ lchC = _ref[0],
395
+ lchH = _ref[1];
396
+
397
+
398
+ return [labL, lchC, lchH];
399
+ }
400
+
401
+ function lch2lab(lchL, lchC, lchH) {
402
+ // convert to Lab a and b from the polar form
403
+ var labA = lchC * Math.cos(lchH * Math.PI / 180),
404
+ labB = lchC * Math.sin(lchH * Math.PI / 180);
405
+
406
+
407
+ return [lchL, labA, labB];
408
+ }
409
+
410
+ /*
411
+
412
+ References
413
+ ----------
414
+
415
+ - https://www.w3.org/TR/css-color-4/#lch-to-lab
416
+ - https://www.w3.org/TR/css-color-4/#color-conversion-code
417
+
418
+ /* ========================================================================== */
419
+
420
+ var _slicedToArray$4 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
421
+
422
+ /* Convert between RGB and Lab
344
423
  /* ========================================================================== */
345
424
 
346
425
  function rgb2lab(rgbR, rgbG, rgbB) {
347
426
  var _rgb2xyz = rgb2xyz(rgbR, rgbG, rgbB),
348
- _rgb2xyz2 = _slicedToArray$3(_rgb2xyz, 3),
427
+ _rgb2xyz2 = _slicedToArray$4(_rgb2xyz, 3),
349
428
  xyzX = _rgb2xyz2[0],
350
429
  xyzY = _rgb2xyz2[1],
351
430
  xyzZ = _rgb2xyz2[2];
352
431
 
353
432
  var _xyz2lab = xyz2lab(xyzX, xyzY, xyzZ),
354
- _xyz2lab2 = _slicedToArray$3(_xyz2lab, 3),
433
+ _xyz2lab2 = _slicedToArray$4(_xyz2lab, 3),
355
434
  labL = _xyz2lab2[0],
356
435
  labA = _xyz2lab2[1],
357
436
  labB = _xyz2lab2[2];
@@ -361,13 +440,13 @@ function rgb2lab(rgbR, rgbG, rgbB) {
361
440
 
362
441
  function lab2rgb(labL, labA, labB) {
363
442
  var _lab2xyz = lab2xyz(labL, labA, labB),
364
- _lab2xyz2 = _slicedToArray$3(_lab2xyz, 3),
443
+ _lab2xyz2 = _slicedToArray$4(_lab2xyz, 3),
365
444
  xyzX = _lab2xyz2[0],
366
445
  xyzY = _lab2xyz2[1],
367
446
  xyzZ = _lab2xyz2[2];
368
447
 
369
448
  var _xyz2rgb = xyz2rgb(xyzX, xyzY, xyzZ),
370
- _xyz2rgb2 = _slicedToArray$3(_xyz2rgb, 3),
449
+ _xyz2rgb2 = _slicedToArray$4(_xyz2rgb, 3),
371
450
  rgbR = _xyz2rgb2[0],
372
451
  rgbG = _xyz2rgb2[1],
373
452
  rgbB = _xyz2rgb2[2];
@@ -375,18 +454,65 @@ function lab2rgb(labL, labA, labB) {
375
454
  return [rgbR, rgbG, rgbB];
376
455
  }
377
456
 
378
- /* Convert between HWB and HSL
457
+ /* Convert between RGB and LCH
458
+ /* ========================================================================== */
459
+
460
+ function rgb2lch(rgbR, rgbG, rgbB) {
461
+ var _rgb2xyz3 = rgb2xyz(rgbR, rgbG, rgbB),
462
+ _rgb2xyz4 = _slicedToArray$4(_rgb2xyz3, 3),
463
+ xyzX = _rgb2xyz4[0],
464
+ xyzY = _rgb2xyz4[1],
465
+ xyzZ = _rgb2xyz4[2];
466
+
467
+ var _xyz2lab3 = xyz2lab(xyzX, xyzY, xyzZ),
468
+ _xyz2lab4 = _slicedToArray$4(_xyz2lab3, 3),
469
+ labL = _xyz2lab4[0],
470
+ labA = _xyz2lab4[1],
471
+ labB = _xyz2lab4[2];
472
+
473
+ var _lab2lch = lab2lch(labL, labA, labB),
474
+ _lab2lch2 = _slicedToArray$4(_lab2lch, 3),
475
+ lchL = _lab2lch2[0],
476
+ lchC = _lab2lch2[1],
477
+ lchH = _lab2lch2[2];
478
+
479
+ return [lchL, lchC, lchH];
480
+ }
481
+
482
+ function lch2rgb(lchL, lchC, lchH) {
483
+ var _lch2lab = lch2lab(lchL, lchC, lchH),
484
+ _lch2lab2 = _slicedToArray$4(_lch2lab, 3),
485
+ labL = _lch2lab2[0],
486
+ labA = _lch2lab2[1],
487
+ labB = _lch2lab2[2];
488
+
489
+ var _lab2xyz3 = lab2xyz(labL, labA, labB),
490
+ _lab2xyz4 = _slicedToArray$4(_lab2xyz3, 3),
491
+ xyzX = _lab2xyz4[0],
492
+ xyzY = _lab2xyz4[1],
493
+ xyzZ = _lab2xyz4[2];
494
+
495
+ var _xyz2rgb3 = xyz2rgb(xyzX, xyzY, xyzZ),
496
+ _xyz2rgb4 = _slicedToArray$4(_xyz2rgb3, 3),
497
+ rgbR = _xyz2rgb4[0],
498
+ rgbG = _xyz2rgb4[1],
499
+ rgbB = _xyz2rgb4[2];
500
+
501
+ return [rgbR, rgbG, rgbB];
502
+ }
503
+
504
+ /* Convert between HSL and HWB
379
505
  /* ========================================================================== */
380
506
 
381
507
  function hwb2hsl(hwbH, hwbW, hwbB) {
382
508
  var _hwb2hsv = hwb2hsv(hwbH, hwbW, hwbB),
383
- _hwb2hsv2 = _slicedToArray$3(_hwb2hsv, 3),
509
+ _hwb2hsv2 = _slicedToArray$4(_hwb2hsv, 3),
384
510
  hsvH = _hwb2hsv2[0],
385
511
  hsvS = _hwb2hsv2[1],
386
512
  hsvV = _hwb2hsv2[2];
387
513
 
388
514
  var _hsv2hsl = hsv2hsl(hsvH, hsvS, hsvV),
389
- _hsv2hsl2 = _slicedToArray$3(_hsv2hsl, 3),
515
+ _hsv2hsl2 = _slicedToArray$4(_hsv2hsl, 3),
390
516
  hslH = _hsv2hsl2[0],
391
517
  hslS = _hsv2hsl2[1],
392
518
  hslL = _hsv2hsl2[2];
@@ -396,58 +522,58 @@ function hwb2hsl(hwbH, hwbW, hwbB) {
396
522
 
397
523
  function hsl2hwb(hslH, hslS, hslL) {
398
524
  var _hsl2hsv = hsl2hsv(hslH, hslS, hslL),
399
- _hsl2hsv2 = _slicedToArray$3(_hsl2hsv, 3),
525
+ _hsl2hsv2 = _slicedToArray$4(_hsl2hsv, 3),
400
526
  hsvS = _hsl2hsv2[1],
401
527
  hsvV = _hsl2hsv2[2];
402
528
 
403
529
  var _hsv2hwb = hsv2hwb(hslH, hsvS, hsvV),
404
- _hsv2hwb2 = _slicedToArray$3(_hsv2hwb, 3),
530
+ _hsv2hwb2 = _slicedToArray$4(_hsv2hwb, 3),
405
531
  hwbW = _hsv2hwb2[1],
406
532
  hwbB = _hsv2hwb2[2];
407
533
 
408
534
  return [hslH, hwbW, hwbB];
409
535
  }
410
536
 
411
- /* Convert between HSL and LAB
537
+ /* Convert between HSL and Lab
412
538
  /* ========================================================================== */
413
539
 
414
540
  function hsl2lab(hslH, hslS, hslL) {
415
541
  var _hsl2rgb = hsl2rgb(hslH, hslS, hslL),
416
- _hsl2rgb2 = _slicedToArray$3(_hsl2rgb, 3),
542
+ _hsl2rgb2 = _slicedToArray$4(_hsl2rgb, 3),
417
543
  rgbR = _hsl2rgb2[0],
418
544
  rgbG = _hsl2rgb2[1],
419
545
  rgbB = _hsl2rgb2[2];
420
546
 
421
- var _rgb2xyz3 = rgb2xyz(rgbR, rgbG, rgbB),
422
- _rgb2xyz4 = _slicedToArray$3(_rgb2xyz3, 3),
423
- xyzX = _rgb2xyz4[0],
424
- xyzY = _rgb2xyz4[1],
425
- xyzZ = _rgb2xyz4[2];
547
+ var _rgb2xyz5 = rgb2xyz(rgbR, rgbG, rgbB),
548
+ _rgb2xyz6 = _slicedToArray$4(_rgb2xyz5, 3),
549
+ xyzX = _rgb2xyz6[0],
550
+ xyzY = _rgb2xyz6[1],
551
+ xyzZ = _rgb2xyz6[2];
426
552
 
427
- var _xyz2lab3 = xyz2lab(xyzX, xyzY, xyzZ),
428
- _xyz2lab4 = _slicedToArray$3(_xyz2lab3, 3),
429
- labL = _xyz2lab4[0],
430
- labA = _xyz2lab4[1],
431
- labB = _xyz2lab4[2];
553
+ var _xyz2lab5 = xyz2lab(xyzX, xyzY, xyzZ),
554
+ _xyz2lab6 = _slicedToArray$4(_xyz2lab5, 3),
555
+ labL = _xyz2lab6[0],
556
+ labA = _xyz2lab6[1],
557
+ labB = _xyz2lab6[2];
432
558
 
433
559
  return [labL, labA, labB];
434
560
  }
435
561
 
436
- function lab2hsl(labL, labA, labB) {
437
- var _lab2xyz3 = lab2xyz(labL, labA, labB),
438
- _lab2xyz4 = _slicedToArray$3(_lab2xyz3, 3),
439
- xyzX = _lab2xyz4[0],
440
- xyzY = _lab2xyz4[1],
441
- xyzZ = _lab2xyz4[2];
562
+ function lab2hsl(labL, labA, labB, fallbackhue) {
563
+ var _lab2xyz5 = lab2xyz(labL, labA, labB),
564
+ _lab2xyz6 = _slicedToArray$4(_lab2xyz5, 3),
565
+ xyzX = _lab2xyz6[0],
566
+ xyzY = _lab2xyz6[1],
567
+ xyzZ = _lab2xyz6[2];
442
568
 
443
- var _xyz2rgb3 = xyz2rgb(xyzX, xyzY, xyzZ),
444
- _xyz2rgb4 = _slicedToArray$3(_xyz2rgb3, 3),
445
- rgbR = _xyz2rgb4[0],
446
- rgbG = _xyz2rgb4[1],
447
- rgbB = _xyz2rgb4[2];
569
+ var _xyz2rgb5 = xyz2rgb(xyzX, xyzY, xyzZ),
570
+ _xyz2rgb6 = _slicedToArray$4(_xyz2rgb5, 3),
571
+ rgbR = _xyz2rgb6[0],
572
+ rgbG = _xyz2rgb6[1],
573
+ rgbB = _xyz2rgb6[2];
448
574
 
449
- var _rgb2hsl = rgb2hsl(rgbR, rgbG, rgbB),
450
- _rgb2hsl2 = _slicedToArray$3(_rgb2hsl, 3),
575
+ var _rgb2hsl = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue),
576
+ _rgb2hsl2 = _slicedToArray$4(_rgb2hsl, 3),
451
577
  hslH = _rgb2hsl2[0],
452
578
  hslS = _rgb2hsl2[1],
453
579
  hslL = _rgb2hsl2[2];
@@ -455,34 +581,58 @@ function lab2hsl(labL, labA, labB) {
455
581
  return [hslH, hslS, hslL];
456
582
  }
457
583
 
458
- /* Convert between HSL and XYZ
584
+ /* Convert between HSL and LCH
459
585
  /* ========================================================================== */
460
586
 
461
- function hsl2xyz(hslH, hslS, hslL) {
587
+ function hsl2lch(hslH, hslS, hslL) {
462
588
  var _hsl2rgb3 = hsl2rgb(hslH, hslS, hslL),
463
- _hsl2rgb4 = _slicedToArray$3(_hsl2rgb3, 3),
589
+ _hsl2rgb4 = _slicedToArray$4(_hsl2rgb3, 3),
464
590
  rgbR = _hsl2rgb4[0],
465
591
  rgbG = _hsl2rgb4[1],
466
592
  rgbB = _hsl2rgb4[2];
467
593
 
468
- var _rgb2xyz5 = rgb2xyz(rgbR, rgbG, rgbB),
469
- _rgb2xyz6 = _slicedToArray$3(_rgb2xyz5, 3),
470
- xyzX = _rgb2xyz6[0],
471
- xyzY = _rgb2xyz6[1],
472
- xyzZ = _rgb2xyz6[2];
594
+ var _rgb2xyz7 = rgb2xyz(rgbR, rgbG, rgbB),
595
+ _rgb2xyz8 = _slicedToArray$4(_rgb2xyz7, 3),
596
+ xyzX = _rgb2xyz8[0],
597
+ xyzY = _rgb2xyz8[1],
598
+ xyzZ = _rgb2xyz8[2];
473
599
 
474
- return [xyzX, xyzY, xyzZ];
600
+ var _xyz2lab7 = xyz2lab(xyzX, xyzY, xyzZ),
601
+ _xyz2lab8 = _slicedToArray$4(_xyz2lab7, 3),
602
+ labL = _xyz2lab8[0],
603
+ labA = _xyz2lab8[1],
604
+ labB = _xyz2lab8[2];
605
+
606
+ var _lab2lch3 = lab2lch(labL, labA, labB),
607
+ _lab2lch4 = _slicedToArray$4(_lab2lch3, 3),
608
+ lchL = _lab2lch4[0],
609
+ lchC = _lab2lch4[1],
610
+ lchH = _lab2lch4[2];
611
+
612
+ return [lchL, lchC, lchH];
475
613
  }
476
614
 
477
- function xyz2hsl(xyzX, xyzY, xyzZ) {
478
- var _xyz2rgb5 = xyz2rgb(xyzX, xyzY, xyzZ),
479
- _xyz2rgb6 = _slicedToArray$3(_xyz2rgb5, 3),
480
- rgbR = _xyz2rgb6[0],
481
- rgbG = _xyz2rgb6[1],
482
- rgbB = _xyz2rgb6[2];
615
+ function lch2hsl(lchL, lchC, lchH, fallbackhue) {
616
+ var _lch2lab3 = lch2lab(lchL, lchC, lchH),
617
+ _lch2lab4 = _slicedToArray$4(_lch2lab3, 3),
618
+ labL = _lch2lab4[0],
619
+ labA = _lch2lab4[1],
620
+ labB = _lch2lab4[2];
621
+
622
+ var _lab2xyz7 = lab2xyz(labL, labA, labB),
623
+ _lab2xyz8 = _slicedToArray$4(_lab2xyz7, 3),
624
+ xyzX = _lab2xyz8[0],
625
+ xyzY = _lab2xyz8[1],
626
+ xyzZ = _lab2xyz8[2];
627
+
628
+ var _xyz2rgb7 = xyz2rgb(xyzX, xyzY, xyzZ),
629
+ _xyz2rgb8 = _slicedToArray$4(_xyz2rgb7, 3),
630
+ rgbR = _xyz2rgb8[0],
631
+ rgbG = _xyz2rgb8[1],
632
+ rgbB = _xyz2rgb8[2];
483
633
 
484
- var _rgb2hsl3 = rgb2hsl(rgbR, rgbG, rgbB),
485
- _rgb2hsl4 = _slicedToArray$3(_rgb2hsl3, 3),
634
+ var _rgb2hsl3 = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue),
635
+ _rgb2hsl4 = _slicedToArray$4(_rgb2hsl3, 3),
486
636
  hslH = _rgb2hsl4[0],
487
637
  hslS = _rgb2hsl4[1],
488
638
  hslL = _rgb2hsl4[2];
@@ -490,46 +640,81 @@ function xyz2hsl(xyzX, xyzY, xyzZ) {
490
640
  return [hslH, hslS, hslL];
491
641
  }
492
642
 
493
- /* Convert between HWB and LAB
643
+ /* Convert between HSL and XYZ
644
+ /* ========================================================================== */
645
+
646
+ function hsl2xyz(hslH, hslS, hslL) {
647
+ var _hsl2rgb5 = hsl2rgb(hslH, hslS, hslL),
648
+ _hsl2rgb6 = _slicedToArray$4(_hsl2rgb5, 3),
649
+ rgbR = _hsl2rgb6[0],
650
+ rgbG = _hsl2rgb6[1],
651
+ rgbB = _hsl2rgb6[2];
652
+
653
+ var _rgb2xyz9 = rgb2xyz(rgbR, rgbG, rgbB),
654
+ _rgb2xyz10 = _slicedToArray$4(_rgb2xyz9, 3),
655
+ xyzX = _rgb2xyz10[0],
656
+ xyzY = _rgb2xyz10[1],
657
+ xyzZ = _rgb2xyz10[2];
658
+
659
+ return [xyzX, xyzY, xyzZ];
660
+ }
661
+
662
+ function xyz2hsl(xyzX, xyzY, xyzZ, fallbackhue) {
663
+ var _xyz2rgb9 = xyz2rgb(xyzX, xyzY, xyzZ),
664
+ _xyz2rgb10 = _slicedToArray$4(_xyz2rgb9, 3),
665
+ rgbR = _xyz2rgb10[0],
666
+ rgbG = _xyz2rgb10[1],
667
+ rgbB = _xyz2rgb10[2];
668
+
669
+ var _rgb2hsl5 = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue),
670
+ _rgb2hsl6 = _slicedToArray$4(_rgb2hsl5, 3),
671
+ hslH = _rgb2hsl6[0],
672
+ hslS = _rgb2hsl6[1],
673
+ hslL = _rgb2hsl6[2];
674
+
675
+ return [hslH, hslS, hslL];
676
+ }
677
+
678
+ /* Convert between HWB and Lab
494
679
  /* ========================================================================== */
495
680
 
496
681
  function hwb2lab(hwbH, hwbW, hwbB) {
497
682
  var _hwb2rgb = hwb2rgb(hwbH, hwbW, hwbB),
498
- _hwb2rgb2 = _slicedToArray$3(_hwb2rgb, 3),
683
+ _hwb2rgb2 = _slicedToArray$4(_hwb2rgb, 3),
499
684
  rgbR = _hwb2rgb2[0],
500
685
  rgbG = _hwb2rgb2[1],
501
686
  rgbB = _hwb2rgb2[2];
502
687
 
503
- var _rgb2xyz7 = rgb2xyz(rgbR, rgbG, rgbB),
504
- _rgb2xyz8 = _slicedToArray$3(_rgb2xyz7, 3),
505
- xyzX = _rgb2xyz8[0],
506
- xyzY = _rgb2xyz8[1],
507
- xyzZ = _rgb2xyz8[2];
688
+ var _rgb2xyz11 = rgb2xyz(rgbR, rgbG, rgbB),
689
+ _rgb2xyz12 = _slicedToArray$4(_rgb2xyz11, 3),
690
+ xyzX = _rgb2xyz12[0],
691
+ xyzY = _rgb2xyz12[1],
692
+ xyzZ = _rgb2xyz12[2];
508
693
 
509
- var _xyz2lab5 = xyz2lab(xyzX, xyzY, xyzZ),
510
- _xyz2lab6 = _slicedToArray$3(_xyz2lab5, 3),
511
- labL = _xyz2lab6[0],
512
- labA = _xyz2lab6[1],
513
- labB = _xyz2lab6[2];
694
+ var _xyz2lab9 = xyz2lab(xyzX, xyzY, xyzZ),
695
+ _xyz2lab10 = _slicedToArray$4(_xyz2lab9, 3),
696
+ labL = _xyz2lab10[0],
697
+ labA = _xyz2lab10[1],
698
+ labB = _xyz2lab10[2];
514
699
 
515
700
  return [labL, labA, labB];
516
701
  }
517
702
 
518
- function lab2hwb(labL, labA, labB) {
519
- var _lab2xyz5 = lab2xyz(labL, labA, labB),
520
- _lab2xyz6 = _slicedToArray$3(_lab2xyz5, 3),
521
- xyzX = _lab2xyz6[0],
522
- xyzY = _lab2xyz6[1],
523
- xyzZ = _lab2xyz6[2];
703
+ function lab2hwb(labL, labA, labB, fallbackhue) {
704
+ var _lab2xyz9 = lab2xyz(labL, labA, labB),
705
+ _lab2xyz10 = _slicedToArray$4(_lab2xyz9, 3),
706
+ xyzX = _lab2xyz10[0],
707
+ xyzY = _lab2xyz10[1],
708
+ xyzZ = _lab2xyz10[2];
524
709
 
525
- var _xyz2rgb7 = xyz2rgb(xyzX, xyzY, xyzZ),
526
- _xyz2rgb8 = _slicedToArray$3(_xyz2rgb7, 3),
527
- rgbR = _xyz2rgb8[0],
528
- rgbG = _xyz2rgb8[1],
529
- rgbB = _xyz2rgb8[2];
710
+ var _xyz2rgb11 = xyz2rgb(xyzX, xyzY, xyzZ),
711
+ _xyz2rgb12 = _slicedToArray$4(_xyz2rgb11, 3),
712
+ rgbR = _xyz2rgb12[0],
713
+ rgbG = _xyz2rgb12[1],
714
+ rgbB = _xyz2rgb12[2];
530
715
 
531
- var _rgb2hwb = rgb2hwb(rgbR, rgbG, rgbB),
532
- _rgb2hwb2 = _slicedToArray$3(_rgb2hwb, 3),
716
+ var _rgb2hwb = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue),
717
+ _rgb2hwb2 = _slicedToArray$4(_rgb2hwb, 3),
533
718
  hwbH = _rgb2hwb2[0],
534
719
  hwbW = _rgb2hwb2[1],
535
720
  hwbB = _rgb2hwb2[2];
@@ -537,34 +722,58 @@ function lab2hwb(labL, labA, labB) {
537
722
  return [hwbH, hwbW, hwbB];
538
723
  }
539
724
 
540
- /* Convert between HWB and XYZ
725
+ /* Convert between HWB and LCH
541
726
  /* ========================================================================== */
542
727
 
543
- function hwb2xyz(hwbH, hwbW, hwbB) {
728
+ function hwb2lch(hwbH, hwbW, hwbB) {
544
729
  var _hwb2rgb3 = hwb2rgb(hwbH, hwbW, hwbB),
545
- _hwb2rgb4 = _slicedToArray$3(_hwb2rgb3, 3),
730
+ _hwb2rgb4 = _slicedToArray$4(_hwb2rgb3, 3),
546
731
  rgbR = _hwb2rgb4[0],
547
732
  rgbG = _hwb2rgb4[1],
548
733
  rgbB = _hwb2rgb4[2];
549
734
 
550
- var _rgb2xyz9 = rgb2xyz(rgbR, rgbG, rgbB),
551
- _rgb2xyz10 = _slicedToArray$3(_rgb2xyz9, 3),
552
- xyzX = _rgb2xyz10[0],
553
- xyzY = _rgb2xyz10[1],
554
- xyzZ = _rgb2xyz10[2];
735
+ var _rgb2xyz13 = rgb2xyz(rgbR, rgbG, rgbB),
736
+ _rgb2xyz14 = _slicedToArray$4(_rgb2xyz13, 3),
737
+ xyzX = _rgb2xyz14[0],
738
+ xyzY = _rgb2xyz14[1],
739
+ xyzZ = _rgb2xyz14[2];
555
740
 
556
- return [xyzX, xyzY, xyzZ];
741
+ var _xyz2lab11 = xyz2lab(xyzX, xyzY, xyzZ),
742
+ _xyz2lab12 = _slicedToArray$4(_xyz2lab11, 3),
743
+ labL = _xyz2lab12[0],
744
+ labA = _xyz2lab12[1],
745
+ labB = _xyz2lab12[2];
746
+
747
+ var _lab2lch5 = lab2lch(labL, labA, labB),
748
+ _lab2lch6 = _slicedToArray$4(_lab2lch5, 3),
749
+ lchL = _lab2lch6[0],
750
+ lchC = _lab2lch6[1],
751
+ lchH = _lab2lch6[2];
752
+
753
+ return [lchL, lchC, lchH];
557
754
  }
558
755
 
559
- function xyz2hwb(xyzX, xyzY, xyzZ) {
560
- var _xyz2rgb9 = xyz2rgb(xyzX, xyzY, xyzZ),
561
- _xyz2rgb10 = _slicedToArray$3(_xyz2rgb9, 3),
562
- rgbR = _xyz2rgb10[0],
563
- rgbG = _xyz2rgb10[1],
564
- rgbB = _xyz2rgb10[2];
756
+ function lch2hwb(lchL, lchC, lchH, fallbackhue) {
757
+ var _lch2lab5 = lch2lab(lchL, lchC, lchH),
758
+ _lch2lab6 = _slicedToArray$4(_lch2lab5, 3),
759
+ labL = _lch2lab6[0],
760
+ labA = _lch2lab6[1],
761
+ labB = _lch2lab6[2];
762
+
763
+ var _lab2xyz11 = lab2xyz(labL, labA, labB),
764
+ _lab2xyz12 = _slicedToArray$4(_lab2xyz11, 3),
765
+ xyzX = _lab2xyz12[0],
766
+ xyzY = _lab2xyz12[1],
767
+ xyzZ = _lab2xyz12[2];
768
+
769
+ var _xyz2rgb13 = xyz2rgb(xyzX, xyzY, xyzZ),
770
+ _xyz2rgb14 = _slicedToArray$4(_xyz2rgb13, 3),
771
+ rgbR = _xyz2rgb14[0],
772
+ rgbG = _xyz2rgb14[1],
773
+ rgbB = _xyz2rgb14[2];
565
774
 
566
- var _rgb2hwb3 = rgb2hwb(rgbR, rgbG, rgbB),
567
- _rgb2hwb4 = _slicedToArray$3(_rgb2hwb3, 3),
775
+ var _rgb2hwb3 = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue),
776
+ _rgb2hwb4 = _slicedToArray$4(_rgb2hwb3, 3),
568
777
  hwbH = _rgb2hwb4[0],
569
778
  hwbW = _rgb2hwb4[1],
570
779
  hwbB = _rgb2hwb4[2];
@@ -572,46 +781,81 @@ function xyz2hwb(xyzX, xyzY, xyzZ) {
572
781
  return [hwbH, hwbW, hwbB];
573
782
  }
574
783
 
575
- /* Convert between HSV and LAB
784
+ /* Convert between HWB and XYZ
785
+ /* ========================================================================== */
786
+
787
+ function hwb2xyz(hwbH, hwbW, hwbB) {
788
+ var _hwb2rgb5 = hwb2rgb(hwbH, hwbW, hwbB),
789
+ _hwb2rgb6 = _slicedToArray$4(_hwb2rgb5, 3),
790
+ rgbR = _hwb2rgb6[0],
791
+ rgbG = _hwb2rgb6[1],
792
+ rgbB = _hwb2rgb6[2];
793
+
794
+ var _rgb2xyz15 = rgb2xyz(rgbR, rgbG, rgbB),
795
+ _rgb2xyz16 = _slicedToArray$4(_rgb2xyz15, 3),
796
+ xyzX = _rgb2xyz16[0],
797
+ xyzY = _rgb2xyz16[1],
798
+ xyzZ = _rgb2xyz16[2];
799
+
800
+ return [xyzX, xyzY, xyzZ];
801
+ }
802
+
803
+ function xyz2hwb(xyzX, xyzY, xyzZ, fallbackhue) {
804
+ var _xyz2rgb15 = xyz2rgb(xyzX, xyzY, xyzZ),
805
+ _xyz2rgb16 = _slicedToArray$4(_xyz2rgb15, 3),
806
+ rgbR = _xyz2rgb16[0],
807
+ rgbG = _xyz2rgb16[1],
808
+ rgbB = _xyz2rgb16[2];
809
+
810
+ var _rgb2hwb5 = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue),
811
+ _rgb2hwb6 = _slicedToArray$4(_rgb2hwb5, 3),
812
+ hwbH = _rgb2hwb6[0],
813
+ hwbW = _rgb2hwb6[1],
814
+ hwbB = _rgb2hwb6[2];
815
+
816
+ return [hwbH, hwbW, hwbB];
817
+ }
818
+
819
+ /* Convert between HSV and Lab
576
820
  /* ========================================================================== */
577
821
 
578
822
  function hsv2lab(hsvH, hsvS, hsvV) {
579
823
  var _hsv2rgb = hsv2rgb(hsvH, hsvS, hsvV),
580
- _hsv2rgb2 = _slicedToArray$3(_hsv2rgb, 3),
824
+ _hsv2rgb2 = _slicedToArray$4(_hsv2rgb, 3),
581
825
  rgbR = _hsv2rgb2[0],
582
826
  rgbG = _hsv2rgb2[1],
583
827
  rgbB = _hsv2rgb2[2];
584
828
 
585
- var _rgb2xyz11 = rgb2xyz(rgbR, rgbG, rgbB),
586
- _rgb2xyz12 = _slicedToArray$3(_rgb2xyz11, 3),
587
- xyzX = _rgb2xyz12[0],
588
- xyzY = _rgb2xyz12[1],
589
- xyzZ = _rgb2xyz12[2];
829
+ var _rgb2xyz17 = rgb2xyz(rgbR, rgbG, rgbB),
830
+ _rgb2xyz18 = _slicedToArray$4(_rgb2xyz17, 3),
831
+ xyzX = _rgb2xyz18[0],
832
+ xyzY = _rgb2xyz18[1],
833
+ xyzZ = _rgb2xyz18[2];
590
834
 
591
- var _xyz2lab7 = xyz2lab(xyzX, xyzY, xyzZ),
592
- _xyz2lab8 = _slicedToArray$3(_xyz2lab7, 3),
593
- labL = _xyz2lab8[0],
594
- labA = _xyz2lab8[1],
595
- labB = _xyz2lab8[2];
835
+ var _xyz2lab13 = xyz2lab(xyzX, xyzY, xyzZ),
836
+ _xyz2lab14 = _slicedToArray$4(_xyz2lab13, 3),
837
+ labL = _xyz2lab14[0],
838
+ labA = _xyz2lab14[1],
839
+ labB = _xyz2lab14[2];
596
840
 
597
841
  return [labL, labA, labB];
598
842
  }
599
843
 
600
- function lab2hsv(labL, labA, labB) {
601
- var _lab2xyz7 = lab2xyz(labL, labA, labB),
602
- _lab2xyz8 = _slicedToArray$3(_lab2xyz7, 3),
603
- xyzX = _lab2xyz8[0],
604
- xyzY = _lab2xyz8[1],
605
- xyzZ = _lab2xyz8[2];
606
-
607
- var _xyz2rgb11 = xyz2rgb(xyzX, xyzY, xyzZ),
608
- _xyz2rgb12 = _slicedToArray$3(_xyz2rgb11, 3),
609
- rgbR = _xyz2rgb12[0],
610
- rgbG = _xyz2rgb12[1],
611
- rgbB = _xyz2rgb12[2];
612
-
613
- var _rgb2hsv = rgb2hsv(rgbR, rgbG, rgbB),
614
- _rgb2hsv2 = _slicedToArray$3(_rgb2hsv, 3),
844
+ function lab2hsv(labL, labA, labB, fallbackhue) {
845
+ var _lab2xyz13 = lab2xyz(labL, labA, labB),
846
+ _lab2xyz14 = _slicedToArray$4(_lab2xyz13, 3),
847
+ xyzX = _lab2xyz14[0],
848
+ xyzY = _lab2xyz14[1],
849
+ xyzZ = _lab2xyz14[2];
850
+
851
+ var _xyz2rgb17 = xyz2rgb(xyzX, xyzY, xyzZ),
852
+ _xyz2rgb18 = _slicedToArray$4(_xyz2rgb17, 3),
853
+ rgbR = _xyz2rgb18[0],
854
+ rgbG = _xyz2rgb18[1],
855
+ rgbB = _xyz2rgb18[2];
856
+
857
+ var _rgb2hsv = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue),
858
+ _rgb2hsv2 = _slicedToArray$4(_rgb2hsv, 3),
615
859
  hsvH = _rgb2hsv2[0],
616
860
  hsvS = _rgb2hsv2[1],
617
861
  hsvV = _rgb2hsv2[2];
@@ -619,34 +863,58 @@ function lab2hsv(labL, labA, labB) {
619
863
  return [hsvH, hsvS, hsvV];
620
864
  }
621
865
 
622
- /* Convert between HSV and XYZ
866
+ /* Convert between HSV and LCH
623
867
  /* ========================================================================== */
624
868
 
625
- function hsv2xyz(hsvH, hsvS, hsvV) {
869
+ function hsv2lch(hsvH, hsvS, hsvV) {
626
870
  var _hsv2rgb3 = hsv2rgb(hsvH, hsvS, hsvV),
627
- _hsv2rgb4 = _slicedToArray$3(_hsv2rgb3, 3),
871
+ _hsv2rgb4 = _slicedToArray$4(_hsv2rgb3, 3),
628
872
  rgbR = _hsv2rgb4[0],
629
873
  rgbG = _hsv2rgb4[1],
630
874
  rgbB = _hsv2rgb4[2];
631
875
 
632
- var _rgb2xyz13 = rgb2xyz(rgbR, rgbG, rgbB),
633
- _rgb2xyz14 = _slicedToArray$3(_rgb2xyz13, 3),
634
- xyzX = _rgb2xyz14[0],
635
- xyzY = _rgb2xyz14[1],
636
- xyzZ = _rgb2xyz14[2];
637
-
638
- return [xyzX, xyzY, xyzZ];
876
+ var _rgb2xyz19 = rgb2xyz(rgbR, rgbG, rgbB),
877
+ _rgb2xyz20 = _slicedToArray$4(_rgb2xyz19, 3),
878
+ xyzX = _rgb2xyz20[0],
879
+ xyzY = _rgb2xyz20[1],
880
+ xyzZ = _rgb2xyz20[2];
881
+
882
+ var _xyz2lab15 = xyz2lab(xyzX, xyzY, xyzZ),
883
+ _xyz2lab16 = _slicedToArray$4(_xyz2lab15, 3),
884
+ labL = _xyz2lab16[0],
885
+ labA = _xyz2lab16[1],
886
+ labB = _xyz2lab16[2];
887
+
888
+ var _lab2lch7 = lab2lch(labL, labA, labB),
889
+ _lab2lch8 = _slicedToArray$4(_lab2lch7, 3),
890
+ lchL = _lab2lch8[0],
891
+ lchC = _lab2lch8[1],
892
+ lchH = _lab2lch8[2];
893
+
894
+ return [lchL, lchC, lchH];
639
895
  }
640
896
 
641
- function xyz2hsv(xyzX, xyzY, xyzZ) {
642
- var _xyz2rgb13 = xyz2rgb(xyzX, xyzY, xyzZ),
643
- _xyz2rgb14 = _slicedToArray$3(_xyz2rgb13, 3),
644
- rgbR = _xyz2rgb14[0],
645
- rgbG = _xyz2rgb14[1],
646
- rgbB = _xyz2rgb14[2];
647
-
648
- var _rgb2hsv3 = rgb2hsv(rgbR, rgbG, rgbB),
649
- _rgb2hsv4 = _slicedToArray$3(_rgb2hsv3, 3),
897
+ function lch2hsv(lchL, lchC, lchH, fallbackhue) {
898
+ var _lch2lab7 = lch2lab(lchL, lchC, lchH),
899
+ _lch2lab8 = _slicedToArray$4(_lch2lab7, 3),
900
+ labL = _lch2lab8[0],
901
+ labA = _lch2lab8[1],
902
+ labB = _lch2lab8[2];
903
+
904
+ var _lab2xyz15 = lab2xyz(labL, labA, labB),
905
+ _lab2xyz16 = _slicedToArray$4(_lab2xyz15, 3),
906
+ xyzX = _lab2xyz16[0],
907
+ xyzY = _lab2xyz16[1],
908
+ xyzZ = _lab2xyz16[2];
909
+
910
+ var _xyz2rgb19 = xyz2rgb(xyzX, xyzY, xyzZ),
911
+ _xyz2rgb20 = _slicedToArray$4(_xyz2rgb19, 3),
912
+ rgbR = _xyz2rgb20[0],
913
+ rgbG = _xyz2rgb20[1],
914
+ rgbB = _xyz2rgb20[2];
915
+
916
+ var _rgb2hsv3 = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue),
917
+ _rgb2hsv4 = _slicedToArray$4(_rgb2hsv3, 3),
650
918
  hsvH = _rgb2hsv4[0],
651
919
  hsvS = _rgb2hsv4[1],
652
920
  hsvV = _rgb2hsv4[2];
@@ -654,47 +922,170 @@ function xyz2hsv(xyzX, xyzY, xyzZ) {
654
922
  return [hsvH, hsvS, hsvV];
655
923
  }
656
924
 
657
- /* All Conversions
925
+ /* Convert between HSV and XYZ
926
+ /* ========================================================================== */
927
+
928
+ function hsv2xyz(hsvH, hsvS, hsvV) {
929
+ var _hsv2rgb5 = hsv2rgb(hsvH, hsvS, hsvV),
930
+ _hsv2rgb6 = _slicedToArray$4(_hsv2rgb5, 3),
931
+ rgbR = _hsv2rgb6[0],
932
+ rgbG = _hsv2rgb6[1],
933
+ rgbB = _hsv2rgb6[2];
934
+
935
+ var _rgb2xyz21 = rgb2xyz(rgbR, rgbG, rgbB),
936
+ _rgb2xyz22 = _slicedToArray$4(_rgb2xyz21, 3),
937
+ xyzX = _rgb2xyz22[0],
938
+ xyzY = _rgb2xyz22[1],
939
+ xyzZ = _rgb2xyz22[2];
940
+
941
+ return [xyzX, xyzY, xyzZ];
942
+ }
943
+
944
+ function xyz2hsv(xyzX, xyzY, xyzZ, fallbackhue) {
945
+ var _xyz2rgb21 = xyz2rgb(xyzX, xyzY, xyzZ),
946
+ _xyz2rgb22 = _slicedToArray$4(_xyz2rgb21, 3),
947
+ rgbR = _xyz2rgb22[0],
948
+ rgbG = _xyz2rgb22[1],
949
+ rgbB = _xyz2rgb22[2];
950
+
951
+ var _rgb2hsv5 = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue),
952
+ _rgb2hsv6 = _slicedToArray$4(_rgb2hsv5, 3),
953
+ hsvH = _rgb2hsv6[0],
954
+ hsvS = _rgb2hsv6[1],
955
+ hsvV = _rgb2hsv6[2];
956
+
957
+ return [hsvH, hsvS, hsvV];
958
+ }
959
+
960
+ /* Convert between XYZ and LCH
658
961
  /* ========================================================================== */
659
962
 
963
+ function xyz2lch(xyzX, xyzY, xyzZ) {
964
+ var _xyz2lab17 = xyz2lab(xyzX, xyzY, xyzZ),
965
+ _xyz2lab18 = _slicedToArray$4(_xyz2lab17, 3),
966
+ labL = _xyz2lab18[0],
967
+ labA = _xyz2lab18[1],
968
+ labB = _xyz2lab18[2];
969
+
970
+ var _lab2lch9 = lab2lch(labL, labA, labB),
971
+ _lab2lch10 = _slicedToArray$4(_lab2lch9, 3),
972
+ lchL = _lab2lch10[0],
973
+ lchC = _lab2lch10[1],
974
+ lchH = _lab2lch10[2];
975
+
976
+ return [lchL, lchC, lchH];
977
+ }
978
+
979
+ function lch2xyz(lchL, lchC, lchH) {
980
+ var _lch2lab9 = lch2lab(lchL, lchC, lchH),
981
+ _lch2lab10 = _slicedToArray$4(_lch2lab9, 3),
982
+ labL = _lch2lab10[0],
983
+ labA = _lch2lab10[1],
984
+ labB = _lch2lab10[2];
985
+
986
+ var _lab2xyz17 = lab2xyz(labL, labA, labB),
987
+ _lab2xyz18 = _slicedToArray$4(_lab2xyz17, 3),
988
+ xyzX = _lab2xyz18[0],
989
+ xyzY = _lab2xyz18[1],
990
+ xyzZ = _lab2xyz18[2];
991
+
992
+ return [xyzX, xyzY, xyzZ];
993
+ }
994
+
660
995
  var index = {
661
996
  rgb2hsl,
662
997
  rgb2hwb,
663
998
  rgb2lab,
999
+ rgb2lch,
664
1000
  rgb2hsv,
665
1001
  rgb2xyz,
666
1002
 
667
1003
  hsl2rgb,
668
1004
  hsl2hwb,
669
1005
  hsl2lab,
1006
+ hsl2lch,
670
1007
  hsl2hsv,
671
1008
  hsl2xyz,
672
1009
 
673
1010
  hwb2rgb,
674
1011
  hwb2hsl,
675
1012
  hwb2lab,
1013
+ hwb2lch,
676
1014
  hwb2hsv,
677
1015
  hwb2xyz,
678
1016
 
679
1017
  lab2rgb,
680
1018
  lab2hsl,
681
1019
  lab2hwb,
1020
+ lab2lch,
682
1021
  lab2hsv,
683
1022
  lab2xyz,
684
1023
 
1024
+ lch2rgb,
1025
+ lch2hsl,
1026
+ lch2hwb,
1027
+ lch2lab,
1028
+ lch2hsv,
1029
+ lch2xyz,
1030
+
685
1031
  hsv2rgb,
686
1032
  hsv2hsl,
687
1033
  hsv2hwb,
688
1034
  hsv2lab,
1035
+ hsv2lch,
689
1036
  hsv2xyz,
690
1037
 
691
1038
  xyz2rgb,
692
1039
  xyz2hsl,
693
1040
  xyz2hwb,
694
1041
  xyz2lab,
1042
+ xyz2lch,
695
1043
  xyz2hsv,
696
1044
 
697
1045
  rgb2hue
698
1046
  };
699
1047
 
700
- module.exports = index;
1048
+ exports.rgb2hsl = rgb2hsl;
1049
+ exports.rgb2hwb = rgb2hwb;
1050
+ exports.rgb2lab = rgb2lab;
1051
+ exports.rgb2lch = rgb2lch;
1052
+ exports.rgb2hsv = rgb2hsv;
1053
+ exports.rgb2xyz = rgb2xyz;
1054
+ exports.hsl2rgb = hsl2rgb;
1055
+ exports.hsl2hwb = hsl2hwb;
1056
+ exports.hsl2lab = hsl2lab;
1057
+ exports.hsl2lch = hsl2lch;
1058
+ exports.hsl2hsv = hsl2hsv;
1059
+ exports.hsl2xyz = hsl2xyz;
1060
+ exports.hwb2rgb = hwb2rgb;
1061
+ exports.hwb2hsl = hwb2hsl;
1062
+ exports.hwb2lab = hwb2lab;
1063
+ exports.hwb2lch = hwb2lch;
1064
+ exports.hwb2hsv = hwb2hsv;
1065
+ exports.hwb2xyz = hwb2xyz;
1066
+ exports.lab2rgb = lab2rgb;
1067
+ exports.lab2hsl = lab2hsl;
1068
+ exports.lab2hwb = lab2hwb;
1069
+ exports.lab2lch = lab2lch;
1070
+ exports.lab2hsv = lab2hsv;
1071
+ exports.lab2xyz = lab2xyz;
1072
+ exports.lch2rgb = lch2rgb;
1073
+ exports.lch2hsl = lch2hsl;
1074
+ exports.lch2hwb = lch2hwb;
1075
+ exports.lch2lab = lch2lab;
1076
+ exports.lch2hsv = lch2hsv;
1077
+ exports.lch2xyz = lch2xyz;
1078
+ exports.hsv2rgb = hsv2rgb;
1079
+ exports.hsv2hsl = hsv2hsl;
1080
+ exports.hsv2hwb = hsv2hwb;
1081
+ exports.hsv2lab = hsv2lab;
1082
+ exports.hsv2lch = hsv2lch;
1083
+ exports.hsv2xyz = hsv2xyz;
1084
+ exports.xyz2rgb = xyz2rgb;
1085
+ exports.xyz2hsl = xyz2hsl;
1086
+ exports.xyz2hwb = xyz2hwb;
1087
+ exports.xyz2lab = xyz2lab;
1088
+ exports.xyz2lch = xyz2lch;
1089
+ exports.xyz2hsv = xyz2hsv;
1090
+ exports.rgb2hue = rgb2hue;
1091
+ exports['default'] = index;