@phun-ky/moebius 0.1.2 → 0.1.3
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/moebius.d.ts +29 -1
- package/moebius.js.map +1 -1
- package/package.json +1 -1
package/moebius.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moebius.js","sources":["node_modules/chroma-js/chroma.js","node_modules/nearest-color/nearestColor.js","src/classes/MoebiusSVGHelper.ts","src/utils/unique-id.ts","src/utils/svg/get-start-mask-degree.ts","src/utils/svg/pie-slice.ts","src/constants/index.ts","src/classes/MoebiusPaletteColors.ts","src/features/harmonize.ts","src/utils/random.ts","src/features/monochromatic.ts","src/features/luminance-shift.ts","src/utils/range.ts","src/classes/MoebiusAccentColors.ts","src/classes/MoebiusPalettes.ts","src/features/complement.ts","src/features/split.ts","src/features/triadic.ts","src/features/tetradic.ts","src/features/pentadic.ts","src/features/hexadic.ts","src/features/analogous.ts","src/features/interpolate.ts","src/utils/color-objects/hsl.ts","src/utils/color-objects/xyz.ts","src/utils/color-objects/cmyk.ts","src/utils/color-objects/rgb.ts","src/utils/color-objects/hwb.ts","src/utils/color-objects/lab.ts","src/utils/color-objects/oklab.ts","src/utils/color-objects/hsv.ts","src/utils/color-objects/lch.ts","src/utils/color-objects/oklch.ts","src/utils/color-objects/hsi.ts","src/utils/converters/to-float.ts","src/utils/normalize-color-units.ts","src/classes/MoebiusColor.ts","src/utils/converters/to-hex.ts","src/utils/converters/to-cmyk.ts","src/utils/converters/to-xyz.ts","src/utils/converters/to-hsl.ts","src/utils/converters/to-hwb.ts","src/utils/converters/to-lab.ts","src/utils/converters/to-oklab.ts","src/utils/converters/to-hsv.ts","src/utils/converters/to-lch.ts","src/utils/converters/to-oklch.ts","src/utils/converters/to-hsi.ts","src/utils/converters/to-rgb.ts","src/utils/converters/to-object.ts","src/main.ts"],"sourcesContent":["/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n var limit$2 = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var limit$1 = limit$2;\n\n var clip_rgb$3 = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit$1(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit$1(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n var name = list$1[i$1];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type$p = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var type$o = type$p;\n\n var unpack$B = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type$o(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var type$n = type$p;\n\n var last$4 = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI$2 = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb$3,\n \tlimit: limit$2,\n \ttype: type$p,\n \tunpack: unpack$B,\n \tlast: last$4,\n \tPI: PI$2,\n \tTWOPI: PI$2*2,\n \tPITHIRD: PI$2/3,\n \tDEG2RAD: PI$2 / 180,\n \tRAD2DEG: 180 / PI$2\n };\n\n var input$h = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$3 = utils.last;\n var clip_rgb$2 = utils.clip_rgb;\n var type$m = utils.type;\n var _input = input$h;\n\n var Color$D = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$m(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$3(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n _input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (_input.format[mode]) {\n var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$2(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color$D.prototype.toString = function toString () {\n if (type$m(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color$D;\n\n var chroma$k = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n };\n\n chroma$k.Color = Color_1;\n chroma$k.version = '2.4.2';\n\n var chroma_1 = chroma$k;\n\n var unpack$A = utils.unpack;\n var max$2 = Math.max;\n\n var rgb2cmyk$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$A(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max$2(r,max$2(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk$1;\n\n var unpack$z = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$z(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var chroma$j = chroma_1;\n var Color$C = Color_1;\n var input$g = input$h;\n var unpack$y = utils.unpack;\n var type$l = utils.type;\n\n var rgb2cmyk = rgb2cmyk_1;\n\n Color$C.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n chroma$j.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n };\n\n input$g.format.cmyk = cmyk2rgb_1;\n\n input$g.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$y(args, 'cmyk');\n if (type$l(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$x = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$x(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css$1;\n\n var unpack$w = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl$3 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$w(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl$3;\n\n var unpack$v = utils.unpack;\n var last$1 = utils.last;\n var hsl2css = hsl2css_1;\n var rgb2hsl$2 = rgb2hsl_1;\n var round$6 = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$v(args, 'rgba');\n var mode = last$1(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css(rgb2hsl$2(rgba), mode);\n }\n rgba[0] = round$6(rgba[0]);\n rgba[1] = round$6(rgba[1]);\n rgba[2] = round$6(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css$1;\n\n var unpack$u = utils.unpack;\n var round$5 = Math.round;\n\n var hsl2rgb$1 = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$u(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb$1;\n\n var hsl2rgb = hsl2rgb_1;\n var input$f = input$h;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$4 = Math.round;\n\n var css2rgb$1 = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input$f.format.named) {\n try {\n return input$f.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb$1.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb$1;\n\n var chroma$i = chroma_1;\n var Color$B = Color_1;\n var input$e = input$h;\n var type$k = utils.type;\n\n var rgb2css = rgb2css_1;\n var css2rgb = css2rgb_1;\n\n Color$B.prototype.css = function(mode) {\n return rgb2css(this._rgb, mode);\n };\n\n chroma$i.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n };\n\n input$e.format.css = css2rgb;\n\n input$e.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n });\n\n var Color$A = Color_1;\n var chroma$h = chroma_1;\n var input$d = input$h;\n var unpack$t = utils.unpack;\n\n input$d.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$t(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma$h.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n };\n\n Color$A.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$s = utils.unpack;\n\n var rgb2hcg$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$s(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg$1;\n\n var unpack$r = utils.unpack;\n var floor$3 = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$r(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor$3(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$q = utils.unpack;\n var type$j = utils.type;\n var chroma$g = chroma_1;\n var Color$z = Color_1;\n var input$c = input$h;\n\n var rgb2hcg = rgb2hcg_1;\n\n Color$z.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n chroma$g.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n };\n\n input$c.format.hcg = hcg2rgb_1;\n\n input$c.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'hcg');\n if (type$j(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$p = utils.unpack;\n var last = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$p(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex$2;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n var hex2rgb$1 = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb$1;\n\n var chroma$f = chroma_1;\n var Color$y = Color_1;\n var type$i = utils.type;\n var input$b = input$h;\n\n var rgb2hex$1 = rgb2hex_1;\n\n Color$y.prototype.hex = function(mode) {\n return rgb2hex$1(this._rgb, mode);\n };\n\n chroma$f.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n };\n\n input$b.format.hex = hex2rgb_1;\n input$b.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n return 'hex';\n }\n }\n });\n\n var unpack$o = utils.unpack;\n var TWOPI$2 = utils.TWOPI;\n var min$2 = Math.min;\n var sqrt$4 = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min$2(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI$2 - h;\n }\n h /= TWOPI$2;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi$1;\n\n var unpack$n = utils.unpack;\n var limit = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos$4 = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$n(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit(i*r*3);\n g = limit(i*g*3);\n b = limit(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$m = utils.unpack;\n var type$h = utils.type;\n var chroma$e = chroma_1;\n var Color$x = Color_1;\n var input$a = input$h;\n\n var rgb2hsi = rgb2hsi_1;\n\n Color$x.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n chroma$e.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n };\n\n input$a.format.hsi = hsi2rgb_1;\n\n input$a.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'hsi');\n if (type$h(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$l = utils.unpack;\n var type$g = utils.type;\n var chroma$d = chroma_1;\n var Color$w = Color_1;\n var input$9 = input$h;\n\n var rgb2hsl$1 = rgb2hsl_1;\n\n Color$w.prototype.hsl = function() {\n return rgb2hsl$1(this._rgb);\n };\n\n chroma$d.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n };\n\n input$9.format.hsl = hsl2rgb_1;\n\n input$9.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'hsl');\n if (type$g(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$k = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$k(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv$1 = rgb2hsl;\n\n var unpack$j = utils.unpack;\n var floor$2 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$j(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$2(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$i = utils.unpack;\n var type$f = utils.type;\n var chroma$c = chroma_1;\n var Color$v = Color_1;\n var input$8 = input$h;\n\n var rgb2hsv = rgb2hsv$1;\n\n Color$v.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma$c.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n };\n\n input$8.format.hsv = hsv2rgb_1;\n\n input$8.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$i(args, 'hsv');\n if (type$f(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var LAB_CONSTANTS$3 = labConstants;\n var unpack$h = utils.unpack;\n var pow$a = Math.pow;\n\n var rgb2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$h(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow$a((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab$2;\n\n var LAB_CONSTANTS$2 = labConstants;\n var unpack$g = utils.unpack;\n var pow$9 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n };\n\n var lab2rgb_1 = lab2rgb$1;\n\n var unpack$f = utils.unpack;\n var type$e = utils.type;\n var chroma$b = chroma_1;\n var Color$u = Color_1;\n var input$7 = input$h;\n\n var rgb2lab$1 = rgb2lab_1;\n\n Color$u.prototype.lab = function() {\n return rgb2lab$1(this._rgb);\n };\n\n chroma$b.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n };\n\n input$7.format.lab = lab2rgb_1;\n\n input$7.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'lab');\n if (type$e(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$e = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$3 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var round$2 = Math.round;\n\n var lab2lch$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$e(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$3(a * a + b * b);\n var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n if (round$2(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch$2;\n\n var unpack$d = utils.unpack;\n var rgb2lab = rgb2lab_1;\n var lab2lch$1 = lab2lch_1;\n\n var rgb2lch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch$1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch$1;\n\n var unpack$c = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin$3 = Math.sin;\n var cos$3 = Math.cos;\n\n var lch2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$c(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$3(h) * c, sin$3(h) * c]\n };\n\n var lch2lab_1 = lch2lab$2;\n\n var unpack$b = utils.unpack;\n var lch2lab$1 = lch2lab_1;\n var lab2rgb = lab2rgb_1;\n\n var lch2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab$1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb$1;\n\n var unpack$a = utils.unpack;\n var lch2rgb = lch2rgb_1;\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$a(args, 'hcl').reverse();\n return lch2rgb.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$9 = utils.unpack;\n var type$d = utils.type;\n var chroma$a = chroma_1;\n var Color$t = Color_1;\n var input$6 = input$h;\n\n var rgb2lch = rgb2lch_1;\n\n Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n chroma$a.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n };\n chroma$a.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n };\n\n input$6.format.lch = lch2rgb_1;\n input$6.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$9(args, m);\n if (type$d(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11$1 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11$1;\n\n var Color$s = Color_1;\n var input$5 = input$h;\n var type$c = utils.type;\n\n var w3cx11 = w3cx11_1;\n var hex2rgb = hex2rgb_1;\n var rgb2hex = rgb2hex_1;\n\n Color$s.prototype.name = function() {\n var hex = rgb2hex(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input$5.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input$5.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n var rgb2num$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$8(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num$1;\n\n var type$b = utils.type;\n\n var num2rgb = function (num) {\n if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var chroma$9 = chroma_1;\n var Color$r = Color_1;\n var input$4 = input$h;\n var type$a = utils.type;\n\n var rgb2num = rgb2num_1;\n\n Color$r.prototype.num = function() {\n return rgb2num(this._rgb);\n };\n\n chroma$9.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n };\n\n input$4.format.num = num2rgb_1;\n\n input$4.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var chroma$8 = chroma_1;\n var Color$q = Color_1;\n var input$3 = input$h;\n var unpack$7 = utils.unpack;\n var type$9 = utils.type;\n var round$1 = Math.round;\n\n Color$q.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$1);\n };\n\n Color$q.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$1(v)) : v;\n });\n };\n\n chroma$8.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n };\n\n input$3.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$7(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input$3.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$7(args, 'rgba');\n if (type$9(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log$1 = Math.log;\n\n var temperature2rgb$1 = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb$1;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n var temperature2rgb = temperature2rgb_1;\n var unpack$6 = utils.unpack;\n var round = Math.round;\n\n var rgb2temperature$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$6(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature$1;\n\n var chroma$7 = chroma_1;\n var Color$p = Color_1;\n var input$2 = input$h;\n\n var rgb2temperature = rgb2temperature_1;\n\n Color$p.prototype.temp =\n Color$p.prototype.kelvin =\n Color$p.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n chroma$7.temp =\n chroma$7.kelvin =\n chroma$7.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n };\n\n input$2.format.temp =\n input$2.format.kelvin =\n input$2.format.temperature = temperature2rgb_1;\n\n var unpack$5 = utils.unpack;\n var cbrt = Math.cbrt;\n var pow$8 = Math.pow;\n var sign$1 = Math.sign;\n\n var rgb2oklab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n var ref = unpack$5(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n var lr = ref$1[0];\n var lg = ref$1[1];\n var lb = ref$1[2];\n var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n };\n\n var rgb2oklab_1 = rgb2oklab$2;\n\n function rgb2lrgb(c) {\n var abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n }\n\n var unpack$4 = utils.unpack;\n var pow$7 = Math.pow;\n var sign = Math.sign;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var oklab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$4(args, 'lab');\n var L = args[0];\n var a = args[1];\n var b = args[2];\n\n var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n };\n\n var oklab2rgb_1 = oklab2rgb$1;\n\n function lrgb2rgb(c) {\n var abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n }\n\n var unpack$3 = utils.unpack;\n var type$8 = utils.type;\n var chroma$6 = chroma_1;\n var Color$o = Color_1;\n var input$1 = input$h;\n\n var rgb2oklab$1 = rgb2oklab_1;\n\n Color$o.prototype.oklab = function () {\n return rgb2oklab$1(this._rgb);\n };\n\n chroma$6.oklab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n };\n\n input$1.format.oklab = oklab2rgb_1;\n\n input$1.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'oklab');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n });\n\n var unpack$2 = utils.unpack;\n var rgb2oklab = rgb2oklab_1;\n var lab2lch = lab2lch_1;\n\n var rgb2oklch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$2(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2oklab(r, g, b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch(l, a, b_);\n };\n\n var rgb2oklch_1 = rgb2oklch$1;\n\n var unpack$1 = utils.unpack;\n var lch2lab = lch2lab_1;\n var oklab2rgb = oklab2rgb_1;\n\n var oklch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$1(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab(l, c, h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = oklab2rgb(L, a, b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var oklch2rgb_1 = oklch2rgb;\n\n var unpack = utils.unpack;\n var type$7 = utils.type;\n var chroma$5 = chroma_1;\n var Color$n = Color_1;\n var input = input$h;\n\n var rgb2oklch = rgb2oklch_1;\n\n Color$n.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n };\n\n chroma$5.oklch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n };\n\n input.format.oklch = oklch2rgb_1;\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack(args, 'oklch');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n });\n\n var Color$m = Color_1;\n var type$6 = utils.type;\n\n Color$m.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$6(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n var Color$l = Color_1;\n\n Color$l.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n var Color$k = Color_1;\n var LAB_CONSTANTS$1 = labConstants;\n\n Color$k.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color$k.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color$k.prototype.darker = Color$k.prototype.darken;\n Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n var Color$j = Color_1;\n\n Color$j.prototype.get = function (mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$i = Color_1;\n var type$5 = utils.type;\n var pow$6 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color$i.prototype.luminance = function(lum) {\n if (lum !== undefined && type$5(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n return new Color$i(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n };\n\n var interpolator$1 = {};\n\n var Color$h = Color_1;\n var type$4 = utils.type;\n var interpolator = interpolator$1;\n\n var mix$1 = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n var Color$g = Color_1;\n var mix = mix$1;\n\n Color$g.prototype.mix =\n Color$g.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n var Color$f = Color_1;\n\n Color$f.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n var Color$e = Color_1;\n var LAB_CONSTANTS = labConstants;\n\n Color$e.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += LAB_CONSTANTS.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color$e.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var Color$d = Color_1;\n var type$3 = utils.type;\n\n Color$d.prototype.set = function (mc, value, mutate) {\n if ( mutate === void 0 ) mutate = false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type$3(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type$3(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color$d(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$c = Color_1;\n\n var rgb = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color$c(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.rgb = rgb;\n\n var Color$b = Color_1;\n var sqrt$2 = Math.sqrt;\n var pow$5 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color$b(\n sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.lrgb = lrgb;\n\n var Color$a = Color_1;\n\n var lab = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color$a(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator$1.lab = lab;\n\n var Color$9 = Color_1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n };\n\n var interpolate_hsx$5 = _hsx;\n\n var lch = function (col1, col2, f) {\n \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator$1.lch = lch;\n interpolator$1.hcl = lch;\n\n var Color$8 = Color_1;\n\n var num = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color$8(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator$1.num = num;\n\n var interpolate_hsx$4 = _hsx;\n\n var hcg = function (col1, col2, f) {\n \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator$1.hcg = hcg;\n\n var interpolate_hsx$3 = _hsx;\n\n var hsi = function (col1, col2, f) {\n \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator$1.hsi = hsi;\n\n var interpolate_hsx$2 = _hsx;\n\n var hsl = function (col1, col2, f) {\n \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator$1.hsl = hsl;\n\n var interpolate_hsx$1 = _hsx;\n\n var hsv = function (col1, col2, f) {\n \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator$1.hsv = hsv;\n\n var Color$7 = Color_1;\n\n var oklab = function (col1, col2, f) {\n var xyz0 = col1.oklab();\n var xyz1 = col2.oklab();\n return new Color$7(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n };\n\n // register interpolator\n interpolator$1.oklab = oklab;\n\n var interpolate_hsx = _hsx;\n\n var oklch = function (col1, col2, f) {\n return interpolate_hsx(col1, col2, f, 'oklch');\n };\n\n // register interpolator\n interpolator$1.oklch = oklch;\n\n var Color$6 = Color_1;\n var clip_rgb$1 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$1 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$2 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode, weights) {\n if ( mode === void 0 ) mode='lrgb';\n if ( weights === void 0 ) weights=null;\n\n var l = colors.length;\n if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n // normalize weights\n var k = l / weights.reduce(function(a, b) { return a + b; });\n weights.forEach(function (w,i) { weights[i] *= k; });\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color$6(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i<xyz.length; i++) {\n xyz[i] = (xyz[i] || 0) * weights[0];\n cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n var A = xyz[i] / 180 * PI$1;\n dx += cos$2(A) * weights[0];\n dy += sin$2(A) * weights[0];\n }\n }\n\n var alpha = first.alpha() * weights[0];\n colors.forEach(function (c,ci) {\n var xyz2 = c.get(mode);\n alpha += c.alpha() * weights[ci+1];\n for (var i=0; i<xyz.length; i++) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += weights[ci+1];\n if (mode.charAt(i) === 'h') {\n var A = xyz2[i] / 180 * PI$1;\n dx += cos$2(A) * weights[ci+1];\n dy += sin$2(A) * weights[ci+1];\n } else {\n xyz[i] += xyz2[i] * weights[ci+1];\n }\n }\n }\n });\n\n for (var i$1=0; i$1<xyz.length; i$1++) {\n if (mode.charAt(i$1) === 'h') {\n var A$1 = atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1 * 180;\n while (A$1 < 0) { A$1 += 360; }\n while (A$1 >= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors, weights) {\n var l = colors.length;\n var xyz = [0,0,0,0];\n for (var i=0; i < colors.length; i++) {\n var col = colors[i];\n var f = weights[i] / l;\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$1(xyz[0]);\n xyz[1] = sqrt$1(xyz[1]);\n xyz[2] = sqrt$1(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color$6(clip_rgb$1(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n var chroma$4 = chroma_1;\n var type$2 = utils.type;\n\n var pow$3 = Math.pow;\n\n var scale$2 = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma$4('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n chroma$4.brewer[colors.toLowerCase()]) {\n colors = chroma$4.brewer[colors.toLowerCase()];\n }\n if (type$2(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c<colors.length; c++) {\n colors[c] = chroma$4(colors[c]);\n }\n // auto-fill color position\n _pos.length = 0;\n for (var c$1=0; c$1<colors.length; c$1++) {\n _pos.push(c$1/(colors.length-1));\n }\n }\n resetCache();\n return _colors = colors;\n };\n\n var getClass = function(value) {\n if (_classes != null) {\n var n = _classes.length-1;\n var i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tMapLightness = function (t) { return t; };\n var tMapDomain = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$2(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$2(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma$4(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$2(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma$4.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma$4.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c<k; c++) {\n _pos.push(c/(k-1));\n }\n if (domain.length > 2) {\n // set domain map\n var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n tMapDomain = function (t) {\n if (t <= 0 || t >= 1) { return t; }\n var i = 0;\n while (t >= tBreaks[i+1]) { i++; }\n var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n return out;\n };\n }\n\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function(colors, _pos) {\n setColors(colors);\n return f;\n };\n\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function(v) {\n if (v == null) { v = true; }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function(t) {\n var L0 = getColor(0, true).lab()[0];\n var L1 = getColor(1, true).lab()[0];\n var pol = L0 > L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tMapLightness = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$2(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma$4[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma$4(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n var Color$5 = Color_1;\n\n var scale$1 = scale$2;\n\n // nth row of the pascal triangle\n var binom_row = function(n) {\n var row = [1, 1];\n for (var i = 1; i < n; i++) {\n var newrow = [1];\n for (var j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n };\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color$5(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n var labs, row, n;\n labs = colors.map(function (c) { return c.lab(); });\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n var u = 1 - t;\n var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n return new Color$5(lab, 'lab');\n };\n } else {\n throw new RangeError(\"No point in running bezier with only one color.\")\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale$1(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n var chroma$3 = chroma_1;\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma$3(top).rgb();\n var c1 = chroma$3(bottom).rgb();\n return chroma$3.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$1 = utils.type;\n var clip_rgb = utils.clip_rgb;\n var TWOPI = utils.TWOPI;\n var pow$2 = Math.pow;\n var sin$1 = Math.sin;\n var cos$1 = Math.cos;\n var chroma$2 = chroma_1;\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$1(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI * (((start+120)/360) + (rotations * fract));\n var l = pow$2(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$1(a);\n var sin_a = sin$1(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$1(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$1(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma$2.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var Color$4 = Color_1;\n var digits = '0123456789abcdef';\n\n var floor$1 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$1(random() * 16));\n }\n return new Color$4(code, 'hex');\n };\n\n var type = type$p;\n var log = Math.log;\n var pow$1 = Math.pow;\n var floor = Math.floor;\n var abs$1 = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i<num; i++) {\n limits.push(min+((i/num)*(max-min)));\n }\n limits.push(max);\n }\n\n else if (mode.substr(0,1) === 'l') { // log scale\n if (min <= 0) {\n throw new Error('Logarithmic scales are only possible for values > 0');\n }\n var min_log = Math.LOG10E * log(min);\n var max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (var i$1=1; i$1<num; i$1++) {\n limits.push(pow$1(10, min_log + ((i$1/num) * (max_log - min_log))));\n }\n limits.push(max);\n }\n\n else if (mode.substr(0,1) === 'q') { // quantile scale\n limits.push(min);\n for (var i$2=1; i$2<num; i$2++) {\n var p = ((values.length-1) * i$2)/num;\n var pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else { // p > pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3<num; i$3++) {\n centroids.push(min + ((i$3/num) * (max-min)));\n }\n centroids.push(max);\n\n while (repeat) {\n // assignment step\n for (var j=0; j<num; j++) {\n clusterSizes[j] = 0;\n }\n for (var i$4=0; i$4<n; i$4++) {\n var value = values[i$4];\n var mindist = Number.MAX_VALUE;\n var best = (void 0);\n for (var j$1=0; j$1<num; j$1++) {\n var dist = abs$1(centroids[j$1]-value);\n if (dist < mindist) {\n mindist = dist;\n best = j$1;\n }\n clusterSizes[best]++;\n assignments[i$4] = best;\n }\n }\n\n // update centroids step\n var newCentroids = new Array(num);\n for (var j$2=0; j$2<num; j$2++) {\n newCentroids[j$2] = null;\n }\n for (var i$5=0; i$5<n; i$5++) {\n cluster = assignments[i$5];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i$5];\n } else {\n newCentroids[cluster] += values[i$5];\n }\n }\n for (var j$3=0; j$3<num; j$3++) {\n newCentroids[j$3] *= 1/clusterSizes[j$3];\n }\n\n // check convergence\n repeat = false;\n for (var j$4=0; j$4<num; j$4++) {\n if (newCentroids[j$4] !== centroids[j$4]) {\n repeat = true;\n break;\n }\n }\n\n centroids = newCentroids;\n nb_iters++;\n\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5<num; j$5++) {\n kClusters[j$5] = [];\n }\n for (var i$6=0; i$6<n; i$6++) {\n cluster = assignments[i$6];\n kClusters[cluster].push(values[i$6]);\n }\n var tmpKMeansBreaks = [];\n for (var j$6=0; j$6<num; j$6++) {\n tmpKMeansBreaks.push(kClusters[j$6][0]);\n tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length-1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a,b){ return a-b; });\n limits.push(tmpKMeansBreaks[0]);\n for (var i$7=1; i$7 < tmpKMeansBreaks.length; i$7+= 2) {\n var v = tmpKMeansBreaks[i$7];\n if (!isNaN(v) && (limits.indexOf(v) === -1)) {\n limits.push(v);\n }\n }\n }\n return limits;\n };\n\n var analyze_1 = {analyze: analyze, limits: limits};\n\n var Color$3 = Color_1;\n\n\n var contrast = function (a, b) {\n // WCAG contrast ratio\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n a = new Color$3(a);\n b = new Color$3(b);\n var l1 = a.luminance();\n var l2 = b.luminance();\n return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var Color$2 = Color_1;\n var sqrt = Math.sqrt;\n var pow = Math.pow;\n var min = Math.min;\n var max = Math.max;\n var atan2 = Math.atan2;\n var abs = Math.abs;\n var cos = Math.cos;\n var sin = Math.sin;\n var exp = Math.exp;\n var PI = Math.PI;\n\n var deltaE = function(a, b, Kl, Kc, Kh) {\n if ( Kl === void 0 ) Kl=1;\n if ( Kc === void 0 ) Kc=1;\n if ( Kh === void 0 ) Kh=1;\n\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function(rad) {\n return 360 * rad / (2 * PI);\n };\n var deg2rad = function(deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color$2(a);\n b = new Color$2(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var avgL = (L1 + L2)/2;\n var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n var avgC = (C1 + C2)/2;\n var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n var a1p = a1*(1+G);\n var a2p = a2*(1+G);\n var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n var avgCp = (C1p + C2p)/2;\n var arctan1 = rad2deg(atan2(b1, a1p));\n var arctan2 = rad2deg(atan2(b2, a2p));\n var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n var deltaHp = h2p - h1p;\n deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n var deltaL = L2 - L1;\n var deltaCp = C2p - C1p; \n var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n var sc = 1 + 0.045*avgCp;\n var sh = 1 + 0.015*avgCp*T;\n var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n return max(0, min(100, result));\n };\n\n var Color$1 = Color_1;\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color$1(a);\n b = new Color$1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var Color = Color_1;\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n var chroma$1 = chroma_1;\n\n var scale = scale$2;\n\n var scales = {\n \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n var key = list[i];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n var chroma = chroma_1;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma.average = average;\n chroma.bezier = bezier_1;\n chroma.blend = blend_1;\n chroma.cubehelix = cubehelix;\n chroma.mix = chroma.interpolate = mix$1;\n chroma.random = random_1;\n chroma.scale = scale$2;\n\n // other utility methods\n chroma.analyze = analyze_1.analyze;\n chroma.contrast = contrast;\n chroma.deltaE = deltaE;\n chroma.distance = distance;\n chroma.limits = analyze_1.limits;\n chroma.valid = valid;\n\n // scale\n chroma.scales = scales;\n\n // colors\n chroma.colors = w3cx11_1;\n chroma.brewer = colorbrewer_1;\n\n var chroma_js = chroma;\n\n return chroma_js;\n\n}));\n","(function(context) {\n\n /**\n * Defines an available color.\n *\n * @typedef {Object} ColorSpec\n * @property {string=} name A name for the color, e.g., 'red'\n * @property {string} source The hex-based color string, e.g., '#FF0'\n * @property {RGB} rgb The {@link RGB} color values\n */\n\n /**\n * Describes a matched color.\n *\n * @typedef {Object} ColorMatch\n * @property {string} name The name of the matched color, e.g., 'red'\n * @property {string} value The hex-based color string, e.g., '#FF0'\n * @property {RGB} rgb The {@link RGB} color values.\n */\n\n /**\n * Provides the RGB breakdown of a color.\n *\n * @typedef {Object} RGB\n * @property {number} r The red component, from 0 to 255\n * @property {number} g The green component, from 0 to 255\n * @property {number} b The blue component, from 0 to 255\n */\n\n /**\n * Gets the nearest color, from the given list of {@link ColorSpec} objects\n * (which defaults to {@link nearestColor.DEFAULT_COLORS}).\n *\n * Probably you wouldn't call this method directly. Instead you'd get a custom\n * color matcher by calling {@link nearestColor.from}.\n *\n * @public\n * @param {RGB|string} needle Either an {@link RGB} color or a hex-based\n * string representing one, e.g., '#FF0'\n * @param {Array.<ColorSpec>=} colors An optional list of available colors\n * (defaults to {@link nearestColor.DEFAULT_COLORS})\n * @return {ColorMatch|string} If the colors in the provided list had names,\n * then a {@link ColorMatch} object with the name and (hex) value of the\n * nearest color from the list. Otherwise, simply the hex value.\n *\n * @example\n * nearestColor({ r: 200, g: 50, b: 50 }); // => '#f00'\n * nearestColor('#f11'); // => '#f00'\n * nearestColor('#f88'); // => '#f80'\n * nearestColor('#ffe'); // => '#ff0'\n * nearestColor('#efe'); // => '#ff0'\n * nearestColor('#abc'); // => '#808'\n * nearestColor('red'); // => '#f00'\n * nearestColor('foo'); // => throws\n */\n function nearestColor(needle, colors) {\n needle = parseColor(needle);\n\n if (!needle) {\n return null;\n }\n\n var distanceSq,\n minDistanceSq = Infinity,\n rgb,\n value;\n\n colors || (colors = nearestColor.DEFAULT_COLORS);\n\n for (var i = 0; i < colors.length; ++i) {\n rgb = colors[i].rgb;\n\n distanceSq = (\n Math.pow(needle.r - rgb.r, 2) +\n Math.pow(needle.g - rgb.g, 2) +\n Math.pow(needle.b - rgb.b, 2)\n );\n\n if (distanceSq < minDistanceSq) {\n minDistanceSq = distanceSq;\n value = colors[i];\n }\n }\n\n if (value.name) {\n return {\n name: value.name,\n value: value.source,\n rgb: value.rgb,\n distance: Math.sqrt(minDistanceSq)\n };\n }\n\n return value.source;\n }\n\n /**\n * Provides a matcher to find the nearest color based on the provided list of\n * available colors.\n *\n * @public\n * @param {Array.<string>|Object} availableColors An array of hex-based color\n * strings, or an object mapping color *names* to hex values.\n * @return {function(string):ColorMatch|string} A function with the same\n * behavior as {@link nearestColor}, but with the list of colors\n * predefined.\n *\n * @example\n * var colors = {\n * 'maroon': '#800',\n * 'light yellow': { r: 255, g: 255, b: 51 },\n * 'pale blue': '#def',\n * 'white': 'fff'\n * };\n *\n * var bgColors = [\n * '#eee',\n * '#444'\n * ];\n *\n * var invalidColors = {\n * 'invalid': 'foo'\n * };\n *\n * var getColor = nearestColor.from(colors);\n * var getBGColor = getColor.from(bgColors);\n * var getAnyColor = nearestColor.from(colors).or(bgColors);\n *\n * getColor('ffe');\n * // => { name: 'white', value: 'fff', rgb: { r: 255, g: 255, b: 255 }, distance: 17}\n *\n * getColor('#f00');\n * // => { name: 'maroon', value: '#800', rgb: { r: 136, g: 0, b: 0 }, distance: 119}\n *\n * getColor('#ff0');\n * // => { name: 'light yellow', value: '#ffff33', rgb: { r: 255, g: 255, b: 51 }, distance: 51}\n *\n * getBGColor('#fff'); // => '#eee'\n * getBGColor('#000'); // => '#444'\n *\n * getAnyColor('#f00');\n * // => { name: 'maroon', value: '#800', rgb: { r: 136, g: 0, b: 0 }, distance: 119}\n *\n * getAnyColor('#888'); // => '#444'\n *\n * nearestColor.from(invalidColors); // => throws\n */\n nearestColor.from = function from(availableColors) {\n var colors = mapColors(availableColors),\n nearestColorBase = nearestColor;\n\n var matcher = function nearestColor(hex) {\n return nearestColorBase(hex, colors);\n };\n\n // Keep the 'from' method, to support changing the list of available colors\n // multiple times without needing to keep a reference to the original\n // nearestColor function.\n matcher.from = from;\n\n // Also provide a way to combine multiple color lists.\n matcher.or = function or(alternateColors) {\n var extendedColors = colors.concat(mapColors(alternateColors));\n return nearestColor.from(extendedColors);\n };\n\n return matcher;\n };\n\n /**\n * Given either an array or object of colors, returns an array of\n * {@link ColorSpec} objects (with {@link RGB} values).\n *\n * @private\n * @param {Array.<string>|Object} colors An array of hex-based color strings, or\n * an object mapping color *names* to hex values.\n * @return {Array.<ColorSpec>} An array of {@link ColorSpec} objects\n * representing the same colors passed in.\n */\n function mapColors(colors) {\n if (colors instanceof Array) {\n return colors.map(function(color) {\n return createColorSpec(color);\n });\n }\n\n return Object.keys(colors).map(function(name) {\n return createColorSpec(colors[name], name);\n });\n };\n\n /**\n * Parses a color from a string.\n *\n * @private\n * @param {RGB|string} source\n * @return {RGB}\n *\n * @example\n * parseColor({ r: 3, g: 22, b: 111 }); // => { r: 3, g: 22, b: 111 }\n * parseColor('#f00'); // => { r: 255, g: 0, b: 0 }\n * parseColor('#04fbc8'); // => { r: 4, g: 251, b: 200 }\n * parseColor('#FF0'); // => { r: 255, g: 255, b: 0 }\n * parseColor('rgb(3, 10, 100)'); // => { r: 3, g: 10, b: 100 }\n * parseColor('rgb(50%, 0%, 50%)'); // => { r: 128, g: 0, b: 128 }\n * parseColor('aqua'); // => { r: 0, g: 255, b: 255 }\n * parseColor('fff'); // => { r: 255, g: 255, b: 255 }\n * parseColor('foo'); // => throws\n */\n function parseColor(source) {\n var red, green, blue;\n\n if (typeof source === 'object') {\n return source;\n }\n\n if (source in nearestColor.STANDARD_COLORS) {\n return parseColor(nearestColor.STANDARD_COLORS[source]);\n }\n\n var hexMatch = source.match(/^#?((?:[0-9a-f]{3}){1,2})$/i);\n if (hexMatch) {\n hexMatch = hexMatch[1];\n\n if (hexMatch.length === 3) {\n hexMatch = [\n hexMatch.charAt(0) + hexMatch.charAt(0),\n hexMatch.charAt(1) + hexMatch.charAt(1),\n hexMatch.charAt(2) + hexMatch.charAt(2)\n ];\n\n } else {\n hexMatch = [\n hexMatch.substring(0, 2),\n hexMatch.substring(2, 4),\n hexMatch.substring(4, 6)\n ];\n }\n\n red = parseInt(hexMatch[0], 16);\n green = parseInt(hexMatch[1], 16);\n blue = parseInt(hexMatch[2], 16);\n\n return { r: red, g: green, b: blue };\n }\n\n var rgbMatch = source.match(/^rgb\\(\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\s*\\)$/i);\n if (rgbMatch) {\n red = parseComponentValue(rgbMatch[1]);\n green = parseComponentValue(rgbMatch[2]);\n blue = parseComponentValue(rgbMatch[3]);\n\n return { r: red, g: green, b: blue };\n }\n\n throw Error('\"' + source + '\" is not a valid color');\n }\n\n /**\n * Creates a {@link ColorSpec} from either a string or an {@link RGB}.\n *\n * @private\n * @param {string|RGB} input\n * @param {string=} name\n * @return {ColorSpec}\n *\n * @example\n * createColorSpec('#800'); // => {\n * source: '#800',\n * rgb: { r: 136, g: 0, b: 0 }\n * }\n *\n * createColorSpec('#800', 'maroon'); // => {\n * name: 'maroon',\n * source: '#800',\n * rgb: { r: 136, g: 0, b: 0 }\n * }\n */\n function createColorSpec(input, name) {\n var color = {};\n\n if (name) {\n color.name = name;\n }\n\n if (typeof input === 'string') {\n color.source = input;\n color.rgb = parseColor(input);\n\n } else if (typeof input === 'object') {\n // This is for if/when we're concatenating lists of colors.\n if (input.source) {\n return createColorSpec(input.source, input.name);\n }\n\n color.rgb = input;\n color.source = rgbToHex(input);\n }\n\n return color;\n }\n\n /**\n * Parses a value between 0-255 from a string.\n *\n * @private\n * @param {string} string\n * @return {number}\n *\n * @example\n * parseComponentValue('100'); // => 100\n * parseComponentValue('100%'); // => 255\n * parseComponentValue('50%'); // => 128\n */\n function parseComponentValue(string) {\n if (string.charAt(string.length - 1) === '%') {\n return Math.round(parseInt(string, 10) * 255 / 100);\n }\n\n return Number(string);\n }\n\n /**\n * Converts an {@link RGB} color to its hex representation.\n *\n * @private\n * @param {RGB} rgb\n * @return {string}\n *\n * @example\n * rgbToHex({ r: 255, g: 128, b: 0 }); // => '#ff8000'\n */\n function rgbToHex(rgb) {\n return '#' + leadingZero(rgb.r.toString(16)) +\n leadingZero(rgb.g.toString(16)) + leadingZero(rgb.b.toString(16));\n }\n\n /**\n * Puts a 0 in front of a numeric string if it's only one digit. Otherwise\n * nothing (just returns the value passed in).\n *\n * @private\n * @param {string} value\n * @return\n *\n * @example\n * leadingZero('1'); // => '01'\n * leadingZero('12'); // => '12'\n */\n function leadingZero(value) {\n if (value.length === 1) {\n value = '0' + value;\n }\n return value;\n }\n\n /**\n * A map from the names of standard CSS colors to their hex values.\n */\n nearestColor.STANDARD_COLORS = {\n aqua: '#0ff',\n black: '#000',\n blue: '#00f',\n fuchsia: '#f0f',\n gray: '#808080',\n green: '#008000',\n lime: '#0f0',\n maroon: '#800000',\n navy: '#000080',\n olive: '#808000',\n orange: '#ffa500',\n purple: '#800080',\n red: '#f00',\n silver: '#c0c0c0',\n teal: '#008080',\n white: '#fff',\n yellow: '#ff0'\n };\n\n /**\n * Default colors. Comprises the colors of the rainbow (good ol' ROY G. BIV).\n * This list will be used for calls to {@nearestColor} that don't specify a list\n * of available colors to match.\n */\n nearestColor.DEFAULT_COLORS = mapColors([\n '#f00', // r\n '#f80', // o\n '#ff0', // y\n '#0f0', // g\n '#00f', // b\n '#008', // i\n '#808' // v\n ]);\n\n nearestColor.VERSION = '0.4.4';\n\n if (typeof module === 'object' && module && module.exports) {\n module.exports = nearestColor;\n } else {\n context.nearestColor = nearestColor;\n }\n\n}(this));\n","import { MoebiusColorValueHexType } from '../types';\nimport { pieSlice } from '../utils/svg/pie-slice';\nimport { uniqueID } from '../utils/unique-id';\nimport { getStartMaskDegree } from '../utils/svg/get-start-mask-degree';\n\n/**\n * Helper class for generating SVG paths for colored pie slices.\n */\nexport class MoebiusSVGHelper {\n xlmns = 'http://www.w3.org/2000/svg';\n\n /**\n * Gets SVG paths for colored pie slices based on the provided colors.\n * @param {MoebiusColorValueHexType[][]} colors - Array of color groups.\n * @param {number} [size=256] - Size of the SVG.\n * @returns {DocumentFragment} - Document fragment containing the SVG paths.\n * @example\n * ```ts\n * const svgHelper = new MoebiusSVGHelper();\n * const colors = [['#ff0000', '#00ff00'], ['#0000ff']];\n * const svgFragment = svgHelper.getColorPiePaths(colors, 256);\n * document.body.appendChild(svgFragment);\n * ```\n */\n getColorPiePaths(colors: MoebiusColorValueHexType[][], size = 256) {\n const df = document.createDocumentFragment();\n const defsElement = document.createElementNS(this.xlmns, 'defs');\n const maskElement = document.createElementNS(this.xlmns, 'mask');\n const rectElement = document.createElementNS(this.xlmns, 'rect');\n const gElement = document.createElementNS(this.xlmns, 'g');\n const interval = 360 / colors.length;\n const id = uniqueID();\n\n maskElement.setAttributeNS(null, 'id', id);\n rectElement.setAttributeNS(null, 'height', '100%');\n rectElement.setAttributeNS(null, 'width', '100%');\n rectElement.setAttributeNS(null, 'fill', 'white');\n gElement.setAttributeNS(null, 'mask', `url(#${id})`);\n maskElement.appendChild(rectElement);\n\n const maskDegrees = 360 / colors.length;\n const startMaskDegree = getStartMaskDegree(maskDegrees / 2, colors.length);\n\n for (let i = startMaskDegree; i < 360; i += maskDegrees) {\n const lineElement = document.createElementNS(this.xlmns, 'line');\n\n lineElement.setAttributeNS(null, 'x1', '128');\n lineElement.setAttributeNS(null, 'y1', '128');\n lineElement.setAttributeNS(null, 'x2', '0');\n lineElement.setAttributeNS(null, 'y2', '128');\n lineElement.setAttributeNS(null, 'stroke', 'black');\n lineElement.setAttributeNS(null, 'stroke-width', '6');\n lineElement.setAttributeNS(null, 'transform', `rotate(${i} 128 128)`);\n maskElement.appendChild(lineElement);\n }\n\n let start = 0;\n\n colors.forEach((group: string[]) => {\n const inwardInterval = size / 2 / group.length;\n\n start += interval;\n\n return group.forEach((color: MoebiusColorValueHexType, index: number) => {\n const r = size / 2 - index * inwardInterval;\n const path = document.createElementNS(this.xlmns, 'path');\n\n path.setAttributeNS(null, 'fill', color);\n path.setAttributeNS(null, 'data-color-hex', color);\n path.setAttributeNS(null, 'data-r', `${r}`);\n path.setAttributeNS(null, 'd', pieSlice(start, interval, r));\n gElement.appendChild(path);\n });\n });\n defsElement.appendChild(maskElement);\n df.appendChild(defsElement);\n df.appendChild(gElement);\n\n return df;\n }\n}\n","/**\n * Generates a unique identifier.\n * @returns {string} - A unique identifier.\n * @example\n * ```ts\n * const id = uniqueID();\n * console.log(id); // \"_abc123\"\n * ```\n */\nexport const uniqueID = (): string =>\n '_' + Math.random().toString(36).substring(2, 11);\n","/**\n * Calculates the starting mask degree based on the number of elements in a color group.\n *\n * @param {number} initial - The initial starting degree.\n * @param {number} length - The number of elements in the color group.\n * @returns {number} - The adjusted starting degree for creating a color mask.\n */\nexport const getStartMaskDegree = (initial: number, length: number): number => {\n if (length === 4 || length === 8 || length === 12) {\n return 0;\n } else if (length === 3 || length === 9) {\n return 30;\n } else if (length === 7) {\n return 12;\n } else if (length === 5) {\n return 55;\n }\n\n return initial;\n};\n","/**\n * Generates an SVG path representing a pie slice.\n *\n * @param {number} start - Starting angle of the pie slice in degrees.\n * @param {number} interval - Angular interval of the pie slice in degrees.\n * @param {number} radius - Radius of the circle.\n * @param {number} size - Size of the circle. Default is 256.\n * @returns {string} - SVG path representing the pie slice.\n */\nexport const pieSlice = (\n start: number,\n interval: number,\n radius: number,\n size = 256\n) => {\n const centerX = size / 2; // X-coordinate of the circle's center\n const centerY = centerX; // Y-coordinate of the circle's center\n\n let stop = start + interval;\n\n // Ensure start is smaller than stop\n if (start > stop) {\n const temp = start;\n\n start = stop;\n stop = temp;\n }\n\n // Calculate start and end points\n const startX = centerX + radius * Math.cos((-start + 90) * (Math.PI / 180));\n const startY = centerY + radius * Math.sin((-start + 90) * (Math.PI / 180));\n const endX = centerX + radius * Math.cos((-stop + 90) * (Math.PI / 180));\n const endY = centerY + radius * Math.sin((-stop + 90) * (Math.PI / 180));\n const largeArcFlag = stop - start <= 180 ? '0' : '1';\n\n // Create the SVG path\n return `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArcFlag} 0 ${endX} ${endY} L ${centerX} ${centerY} Z`;\n};\n","import { MoebiusPaletteDefaultOptionsType } from '../types';\n\n/**\n * Default options for the Moebius Palette.\n *\n * @type {MoebiusPaletteDefaultOptionsType}\n * @readonly\n *\n * @example\n * ```ts\n * console.log(MOEBIUS_PALETTE_DEFAULT_OPTIONS);\n * // {\n * // diverging: false,\n * // bezier: false,\n * // randomOffset: false,\n * // correctLightness: false,\n * // noDuplicates: true,\n * // colorScaleMode: 'lch',\n * // reverseDirection: false\n * // }\n * ```\n */\nexport const MOEBIUS_PALETTE_DEFAULT_OPTIONS: MoebiusPaletteDefaultOptionsType =\n {\n diverging: false,\n bezier: false,\n randomOffset: false,\n correctLightness: false,\n noDuplicates: true,\n colorScaleMode: 'lch',\n reverseDirection: false\n };\n","import {\n MoebiusColorValueHexType,\n MoebiusPaletteColorsInterface\n} from '../types';\n\n/**\n * Class representing a set of colors in various palettes.\n */\nexport class MoebiusPaletteColors implements MoebiusPaletteColorsInterface {\n interpolate: MoebiusColorValueHexType[];\n luminanceShift: MoebiusColorValueHexType[];\n monochromatic: MoebiusColorValueHexType[];\n complement: MoebiusColorValueHexType[];\n split: MoebiusColorValueHexType[];\n triadic: MoebiusColorValueHexType[];\n tetradic: MoebiusColorValueHexType[];\n pentadic: MoebiusColorValueHexType[];\n hexadic: MoebiusColorValueHexType[];\n analogous: MoebiusColorValueHexType[];\n\n /**\n * Creates an instance of MoebiusPaletteColors.\n * @param {MoebiusPaletteColorsInterface} colors - Palette colors to initialize with.\n * @example\n * ```ts\n * const colors = {\n * interpolate: ['#ff0000', '#00ff00'],\n * // other palettes...\n * };\n * const palette = new MoebiusPaletteColors(colors);\n * ```\n */\n constructor(colors: MoebiusPaletteColorsInterface) {\n Object.keys(colors).forEach((palette) => {\n this[palette] = colors[palette];\n });\n }\n\n /**\n * Converts the palettes to a flat array.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values.\n * @example\n * ```ts\n * const palette = new MoebiusPaletteColors({ interpolate: ['#ff0000', '#00ff00'] });\n * const flatArray = palette.toArray();\n * console.log(flatArray); // ['#ff0000', '#00ff00']\n * ```\n */\n toArray(): MoebiusColorValueHexType[] {\n return [\n ...this.interpolate,\n ...this.luminanceShift,\n ...this.monochromatic,\n ...this.complement,\n ...this.split,\n ...this.triadic,\n ...this.tetradic,\n ...this.pentadic,\n ...this.hexadic,\n ...this.analogous\n ].flat();\n }\n}\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Generate a harmonized color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the harmonized palette.\n * @param {number} start - The starting angle for generating harmonized colors (degrees).\n * @param {number} end - The ending angle for generating harmonized colors (degrees).\n * @param {number} interval - The interval between harmonized colors (degrees).\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.noDuplicates=true] - Whether to remove duplicate colors in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the harmonized palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const harmonizedPalette = harmonize(baseColor, 30, 210, 30, { noDuplicates: true });\n * console.log(harmonizedPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#3498db']\n * ```\n */\nexport const harmonize = (\n color: MoebiusChromaColorInputType,\n start: number,\n end: number,\n interval: number,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const { noDuplicates = true } = options;\n // Initialize the array with the base color.\n const colors = [chroma(color).hex()];\n\n // Convert the HSL color to an object for easy manipulation.\n let [h, s, l] = chroma(color).hsl();\n\n if (isNaN(h)) {\n h = 0;\n }\n\n s = Number((s * 100).toFixed());\n l = Number((l * 100).toFixed());\n\n // Generate harmonized colors within the specified range.\n for (let i = start; i <= end; i += interval) {\n // Calculate the adjusted hue.\n const h1 = Number(((h + i) % 360).toFixed());\n\n // Create the harmonized color in HSL format and add it to the array.\n colors.push(chroma(`hsl(${h1}, ${s}%, ${l}%)`).hex());\n }\n\n let uniqueColors = colors;\n\n if (noDuplicates) {\n uniqueColors = [...new Set(colors)];\n }\n\n return uniqueColors;\n};\n","/**\n * Generates a random integer within a specified range.\n *\n * @param {number} max - The maximum value (inclusive) for the random number.\n * @param {number} min - The minimum value (inclusive) for the random number.\n * @returns {number} - A random integer within the specified range.\n *\n * @example\n * ```ts\n * // Generate a random integer between 1 and 10, inclusive\n * const randomNumber = random(10, 1);\n * console.log(randomNumber); // Example output: 5\n * ```\n */\nexport const random = (max: number, min: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n","import chroma from 'chroma-js';\n\nimport { random } from '../utils/random';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusColorValueHslType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Generates a monochromatic color palette based on the given color.\n * @param {MoebiusChromaColorInputType} color - The base color for the palette.\n * @param {MoebiusPaletteOptionsType} options - Options for generating the palette.\n * @returns {MoebiusColorValueHexType[]} - An array of hex color values in the palette.\n * @example\n * ```typescript\n * const baseColor = '#003f5c';\n * const options = { numberOfColors: 5, bezier: true, randomOffset: false };\n * const monochromaticPalette = monochromatic(baseColor, options);\n * console.log(monochromaticPalette);\n * [\n * '#003f5c', // maniacMansion,\n * '#014268', // darkImperialBlue,\n * '#024575', // macraggeBlue,\n * '#044784', // bridgeport,\n * '#064898', // frightNight,\n * '#0745b6', // absoluteZero,\n * '#002df5', // blueBouquet\n * ];\n * ```\n */\nexport const monochromatic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n bezier = false,\n randomOffset = false,\n colorScaleMode,\n noDuplicates = true,\n reverseDirection = false,\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n let [h, s, l] = chroma(color).hsl();\n\n if (isNaN(h)) {\n h = 0;\n }\n\n h = Number(h.toFixed(0));\n s = Number((s * 100).toFixed(0));\n l = Number((l * 100).toFixed(0));\n\n const hslColors: MoebiusColorValueHslType[] = [];\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n\n if (randomOffset) {\n // because we've already added the original color, we start counting from 1\n for (let i = 1; i < numberOfColors; i++) {\n if (reverseDirection) {\n l += random(0, 10);\n h += random(-5, 5);\n } else {\n l -= random(0, 10);\n h -= random(-5, 5);\n }\n\n if (h > 359) h = 359;\n\n if (h < 0) h = 0;\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n }\n } else {\n for (let i = 1; i < numberOfColors; i++) {\n if (reverseDirection) {\n l += 5;\n h += 5;\n } else {\n l -= 5;\n h -= 5;\n }\n\n if (h > 359) h = 359;\n\n if (h < 0) h = 0;\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n }\n }\n\n let colors = hslColors.map((color) => chroma(color).hex());\n\n if (noDuplicates) {\n colors = [...new Set(colors)];\n }\n\n if (bezier) {\n if (colors.length > 1) {\n colors = chroma\n .bezier(colors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n } else {\n colors = chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n }\n }\n\n return colors;\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType,\n MoebiusChromaColorInputType\n} from '../types';\nimport { harmonize } from './harmonize';\nimport { range } from '../utils/range';\n\n/**\n * Generate a luminance shift palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the luminance shift palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {number} [options.numberOfColors=7] - The number of colors in the luminance shift palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n * @private\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const luminanceShiftPalette = generateLuminanceShiftPalette(baseColor, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nconst generateLuminanceShiftPalette = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n) => {\n if (!color) throw new Error('MoebiusPalettes: missing input `color`');\n\n const { diverging = false, numberOfColors = 7 } =\n options as MoebiusPaletteOptionsType;\n const [l, a, b] = chroma(color).lab();\n const lRange = 100 * (0.95 - 1 / numberOfColors);\n const lStep = lRange / (numberOfColors - 1);\n const lStart = (100 - lRange) * 0.5;\n const colorRange = range(lStart, lStart + numberOfColors * lStep, lStep);\n\n let offset = 0;\n\n if (!diverging) {\n offset = 9999;\n for (let i = 0; i < numberOfColors; i++) {\n const diff = l - colorRange[i];\n\n if (Math.abs(diff) < Math.abs(offset)) {\n offset = diff;\n }\n }\n }\n\n return colorRange.map((l) => chroma.lab([l + offset, a, b]).hex());\n};\n/**\n * Generate an array of auto colors for luminance shift based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating auto colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the auto colors.\n * @param {number} [options.numberOfColors] - The number of auto colors to generate.\n * @param {boolean} [options.reverseDirection=false] - Whether to reverse the order of generated colors.\n * @param {boolean} [options.diverging=false] - Whether to generate diverging auto colors.\n * @param {string} [options.divergentColor] - The divergent color to include in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the auto colors.\n * @private\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const autoColors = luminanceShiftAutoColors(baseColor, { numberOfColors: 5 });\n * console.log(autoColors); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nconst luminanceShiftAutoColors = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n) => {\n const {\n numberOfColors,\n reverseDirection = false,\n diverging = false,\n divergentColor\n } = options;\n\n if (diverging) {\n const colors = generateLuminanceShiftPalette(chroma(color).hex(), {\n numberOfColors: Math.ceil((numberOfColors as number) / 2)\n }).concat(divergentColor);\n\n if (reverseDirection) colors.reverse();\n\n return colors;\n } else {\n return generateLuminanceShiftPalette(color, { numberOfColors });\n }\n};\n\n/**\n * Generate a luminance shift palette based on an array of colors, with optional diverging colors.\n *\n * @param {MoebiusChromaColorInputType[]} colors - Array of base colors for generating the luminance shift palette.\n * @param {MoebiusChromaColorInputType[]} [divergingColors=[]] - Array of diverging colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The total number of colors in the luminance shift palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {string} [options.divergentColor='#f5f5f5'] - The divergent color for a diverging palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n *\n * @example\n * ```ts\n * const baseColors = ['#3498db', '#99db34'];\n * const divergingColors = ['#db3434'];\n * const luminanceShiftPalette = luminanceShift(baseColors, divergingColors, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nexport const luminanceShift = (\n colors: MoebiusChromaColorInputType[],\n divergingColors: MoebiusChromaColorInputType[] = [],\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n diverging = false,\n colorScaleMode,\n bezier = false,\n divergentColor = '#f5f5f5',\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n divergingColors =\n divergingColors.length === 0\n ? [harmonize(colors[0], 90, 270, 90)[3]]\n : divergingColors;\n\n const even = numberOfColors % 2 === 0;\n const numberOfColorsLeft = diverging\n ? Math.ceil(numberOfColors / 2) + (even ? 1 : 0)\n : numberOfColors;\n const numberOfColorsRight = diverging\n ? Math.ceil(numberOfColors / 2) + (even ? 1 : 0)\n : 0;\n const generatedColors =\n colors.length !== 1\n ? colors\n : luminanceShiftAutoColors(colors[0], {\n numberOfColors: numberOfColorsLeft,\n divergentColor\n });\n\n let generatedDivergentColors: string[] = [];\n\n if (diverging) {\n generatedDivergentColors =\n divergingColors.length !== 1\n ? divergingColors\n : luminanceShiftAutoColors(divergingColors[0], {\n numberOfColors: numberOfColorsRight,\n divergentColor,\n reverse: false,\n diverging\n });\n }\n\n let stepsLeft = colors.length\n ? chroma\n .scale(generatedColors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsLeft)\n : [];\n\n if (bezier) {\n stepsLeft = colors.length\n ? chroma\n .bezier(generatedColors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsLeft)\n : [];\n }\n\n let stepsRight =\n diverging && divergingColors.length\n ? chroma\n .scale(generatedDivergentColors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsRight)\n : [];\n\n if (bezier) {\n stepsRight =\n diverging && divergingColors.length\n ? chroma\n .bezier(generatedDivergentColors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsRight)\n : [];\n }\n\n let steps = stepsLeft;\n\n steps = (\n diverging\n ? stepsLeft.slice(\n 0,\n stepsLeft.length - (numberOfColorsLeft % 2 !== 0 ? 0 : 1)\n )\n : stepsLeft\n )\n //).concat(stepsRight.slice(1).reverse());\n .concat(stepsRight.reverse());\n\n return steps;\n};\n","/**\n * Generates an array of numbers within a specified range with a given interval.\n * @param {number} start - The starting value of the range.\n * @param {number} stop - The stopping value of the range.\n * @param {number} interval - The interval between numbers in the range.\n * @returns {number[]} - An array of numbers in the specified range.\n * @example\n * ```ts\n * const result = range(1, 10, 2);\n * console.log(result); // [1, 3, 5, 7, 9]\n * ```\n */\nexport const range = (\n start: number,\n stop: number,\n interval: number\n): number[] => {\n const a: number[] = [];\n\n for (let i = start; i < stop; i += interval) {\n a.push(i);\n }\n\n return a;\n};\n","import { monochromatic } from '../features';\nimport {\n MoebiusColorValueHexType,\n MoebiusPaletteAccentColorsInterface,\n MoebiusPaletteColorsInterface,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Class representing a set of accent colors in various palettes.\n */\nexport class MoebiusAccentColors\nimplements MoebiusPaletteAccentColorsInterface\n{\n interpolate: MoebiusColorValueHexType[][];\n luminanceShift: MoebiusColorValueHexType[][];\n monochromatic: MoebiusColorValueHexType[][];\n complement: MoebiusColorValueHexType[][];\n split: MoebiusColorValueHexType[][];\n triadic: MoebiusColorValueHexType[][];\n tetradic: MoebiusColorValueHexType[][];\n pentadic: MoebiusColorValueHexType[][];\n hexadic: MoebiusColorValueHexType[][];\n analogous: MoebiusColorValueHexType[][];\n\n /**\n * Creates an instance of MoebiusAccentColors.\n * @param {MoebiusPaletteColorsInterface} colors - Base colors for accent palettes.\n * @param {MoebiusPaletteOptionsType} options - Options for generating accent palettes.\n * @example\n * ```ts\n * const colors = {\n * monochromatic: ['#ff0000', '#00ff00'],\n * // other base palettes...\n * };\n * const options = { baseColor: { color: '#ff0000', name: 'Red', hex: '#ff0000' }, numberOfColors: 9 };\n * const accentColors = new MoebiusAccentColors(colors, options);\n * ```\n */\n constructor(\n colors: MoebiusPaletteColorsInterface,\n options: MoebiusPaletteOptionsType\n ) {\n Object.keys(colors).forEach((palette) => {\n this[palette] = colors[palette].map((color: MoebiusColorValueHexType) =>\n monochromatic(color, { ...options, numberOfColors: 9 })\n );\n });\n }\n /**\n * Converts the accent palettes to a flat array.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values.\n * @example\n * ```ts\n * const accentColors = new MoebiusAccentColors(baseColors, options);\n * const flatArray = accentColors.toArray();\n * console.log(flatArray); // ['#ff0000', '#00ff00', ...]\n * ```\n */\n toArray(): MoebiusColorValueHexType[] {\n return [\n ...this.interpolate,\n ...this.luminanceShift,\n ...this.monochromatic,\n ...this.complement,\n ...this.split,\n ...this.triadic,\n ...this.tetradic,\n ...this.pentadic,\n ...this.hexadic,\n ...this.analogous\n ].flat();\n }\n}\n","import { MOEBIUS_PALETTE_DEFAULT_OPTIONS } from '../constants';\nimport {\n MoebiusColorValueHexType,\n MoebiusColorInterface,\n MoebiusPaletteAccentColorsInterface,\n MoebiusPaletteColorsInterface,\n MoebiusPaletteDefaultOptionsType,\n MoebiusPaletteOptionsType,\n MoebiusPaletteInterface\n} from '../types';\n\nimport { MoebiusPaletteColors } from './MoebiusPaletteColors';\nimport { MoebiusAccentColors } from './MoebiusAccentColors';\nimport * as FEATURES from '../features';\n\n/**\n * MoebiusPalettes class representing a set of color palettes and their variations.\n * @class\n */\nexport class MoebiusPalettes implements MoebiusPaletteInterface {\n baseColor: MoebiusColorInterface;\n secondaryColor: MoebiusColorInterface;\n colors: Record<string, unknown> | MoebiusPaletteColorsInterface = {};\n defaultOptions: MoebiusPaletteDefaultOptionsType = {\n ...MOEBIUS_PALETTE_DEFAULT_OPTIONS,\n divergentColor: '#f5f5f5'\n };\n options: MoebiusPaletteOptionsType;\n all: MoebiusColorValueHexType[] = [];\n accents: MoebiusPaletteAccentColorsInterface;\n\n /**\n * Creates an instance of MoebiusPalettes.\n * @param {MoebiusPaletteOptionsType} options - Options for configuring the palettes.\n */\n constructor(options: MoebiusPaletteOptionsType) {\n this.options = { ...this.defaultOptions, ...options };\n this.baseColor = this.options.baseColor;\n this.secondaryColor = this.options.secondaryColor;\n\n this.colors = new MoebiusPaletteColors({\n interpolate: this.interpolate(\n this.baseColor.hex,\n this.secondaryColor.hex,\n this.options\n ),\n luminanceShift: this.luminanceShift(\n [this.baseColor.hex],\n [this.secondaryColor.hex],\n this.options\n ),\n monochromatic: this.monochromatic(this.baseColor.hex),\n complement: this.complement(this.baseColor.hex),\n split: this.split(this.baseColor.hex),\n triadic: this.triadic(this.baseColor.hex),\n tetradic: this.tetradic(this.baseColor.hex),\n pentadic: this.pentadic(this.baseColor.hex),\n hexadic: this.hexadic(this.baseColor.hex),\n analogous: this.analogous(this.baseColor.hex)\n });\n\n this.accents = new MoebiusAccentColors(this.colors, this.options);\n\n this.all = [\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(this.accents as any).toArray(),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(this.colors as any).toArray()\n ].flat();\n }\n\n /**\n * Generate a complement color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the complement palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the complement palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the complement palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const complementPalette = complement(baseColor, { numberOfColors: 5 });\n * console.log(complementPalette); // ['#3498db', '#db3434', '#75db34', '#dbd134', '#db7434']\n * ```\n */\n complement(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.complement(color, currentOptions);\n }\n\n /**\n * Generate a split color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the split palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the split palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the split palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const splitPalette = split(baseColor, { numberOfColors: 5 });\n * console.log(splitPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\n split(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.split(color, currentOptions);\n }\n\n /**\n * Generates a triadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @param {Record<string, unknown> | MoebiusPaletteOptionsType} options - Additional options for palette generation.\n * @param {number} [options.numberOfColors=8] - The number of colors in the generated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for the generated palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} An array of HEX values representing the triadic color palette.\n *\n * @example\n * ```ts\n * const triadicPalette = triadic('#3498db', { numberOfColors: 5 });\n * console.log(triadicPalette);\n * // Output: ['#3498db', '#db344f', '#4fdb34', '#9834db', '#34db98']\n * ```\n */\n triadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.triadic(color, currentOptions);\n }\n\n /**\n * Generate a tetradic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the tetradic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the tetradic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the tetradic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const tetradicPalette = tetradic(baseColor, { numberOfColors: 5 });\n * console.log(tetradicPalette); // ['#3498db', '#db3434', '#34db99', '#dbd134', '#8f34db']\n * ```\n */\n tetradic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.tetradic(color, currentOptions);\n }\n\n /**\n * Generate a pentadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the pentadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the pentadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the pentadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const pentadicPalette = pentadic(baseColor, { numberOfColors: 5 });\n * console.log(pentadicPalette); // ['#3498db', '#dbd134', '#db3434', '#34db99', '#8f34db']\n * ```\n */\n pentadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.pentadic(color, currentOptions);\n }\n\n /**\n * Generate a hexadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the hexadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the hexadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the hexadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const hexadicPalette = hexadic(baseColor, { numberOfColors: 5 });\n * console.log(hexadicPalette); // ['#3498db', '#5d7f33', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\n hexadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.hexadic(color, currentOptions);\n }\n\n /**\n * Generate an analogous color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the analogous palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the analogous palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the analogous palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const analogousPalette = analogous(baseColor, { numberOfColors: 5 });\n * console.log(analogousPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#db3474']\n * ```\n */\n analogous(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.analogous(color, currentOptions);\n }\n\n /**\n * Interpolate between two colors and generate a color palette.\n *\n * @param {MoebiusChromaColorInputType} primaryColor - The starting color for interpolation.\n * @param {MoebiusChromaColorInputType} secondaryColor - The ending color for interpolation.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the interpolated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the interpolated palette.\n *\n * @example\n * ```ts\n * const startColor = '#3498db';\n * const endColor = '#db3434';\n * const interpolatedPalette = interpolate(startColor, endColor, { numberOfColors: 5 });\n * console.log(interpolatedPalette); // ['#3498db', '#5d6d7e', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\n interpolate(\n primaryColor: MoebiusColorValueHexType,\n secondaryColor: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.interpolate(primaryColor, secondaryColor, currentOptions);\n }\n /**\n * Generate a luminance shift palette based on an array of colors, with optional diverging colors.\n *\n * @param {MoebiusChromaColorInputType[]} colors - Array of base colors for generating the luminance shift palette.\n * @param {MoebiusChromaColorInputType[]} [divergingColors=[]] - Array of diverging colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The total number of colors in the luminance shift palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {string} [options.divergentColor='#f5f5f5'] - The divergent color for a diverging palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n *\n * @example\n * ```ts\n * const baseColors = ['#3498db', '#99db34'];\n * const divergingColors = ['#db3434'];\n * const luminanceShiftPalette = luminanceShift(baseColors, divergingColors, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\n luminanceShift(\n colors: MoebiusColorValueHexType[],\n divergingColors: MoebiusColorValueHexType[] = [],\n\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.luminanceShift(colors, divergingColors, currentOptions);\n }\n\n /**\n * Generates a monochromatic color palette based on the given color.\n * @param {MoebiusChromaColorInputType} color - The base color for the palette.\n * @param {MoebiusPaletteOptionsType} options - Options for generating the palette.\n * @returns {MoebiusColorValueHexType[]} - An array of hex color values in the palette.\n * @example\n * ```typescript\n * const baseColor = '#003f5c';\n * const options = { numberOfColors: 5, bezier: true, randomOffset: false };\n * const monochromaticPalette = monochromatic(baseColor, options);\n * console.log(monochromaticPalette);\n * [\n * '#003f5c', // maniacMansion,\n * '#014268', // darkImperialBlue,\n * '#024575', // macraggeBlue,\n * '#044784', // bridgeport,\n * '#064898', // frightNight,\n * '#0745b6', // absoluteZero,\n * '#002df5', // blueBouquet\n * ];\n * ```\n */\n monochromatic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.monochromatic(color, currentOptions);\n }\n /**\n * Generate a harmonized color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the harmonized palette.\n * @param {number} start - The starting angle for generating harmonized colors (degrees).\n * @param {number} end - The ending angle for generating harmonized colors (degrees).\n * @param {number} interval - The interval between harmonized colors (degrees).\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.noDuplicates=true] - Whether to remove duplicate colors in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the harmonized palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const harmonizedPalette = harmonize(baseColor, 30, 210, 30, { noDuplicates: true });\n * console.log(harmonizedPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#3498db']\n * ```\n */\n harmonize(\n color: MoebiusColorValueHexType,\n start: number,\n end: number,\n interval: number,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.harmonize(color, start, end, interval, currentOptions);\n }\n}\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a complement color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the complement palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the complement palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the complement palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const complementPalette = complement(baseColor, { numberOfColors: 5 });\n * console.log(complementPalette); // ['#3498db', '#db3434', '#75db34', '#dbd134', '#db7434']\n * ```\n */\nexport const complement = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a complement color scheme.\n const colors = harmonize(color, 180, 180, 1);\n\n // Use chroma-js to fill in missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a split color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the split palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the split palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the split palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const splitPalette = split(baseColor, { numberOfColors: 5 });\n * console.log(splitPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nexport const split = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a split color scheme.\n const colors = harmonize(color, 150, 210, 60);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generates a triadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @param {Record<string, unknown> | MoebiusPaletteOptionsType} options - Additional options for palette generation.\n * @param {number} [options.numberOfColors=8] - The number of colors in the generated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for the generated palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} An array of HEX values representing the triadic color palette.\n *\n * @example\n * ```ts\n * const triadicPalette = triadic('#3498db', { numberOfColors: 5 });\n * console.log(triadicPalette);\n * // Output: ['#3498db', '#db344f', '#4fdb34', '#9834db', '#34db98']\n * ```\n */\nexport const triadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n const colors = harmonize(color, 120, 240, 120);\n\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a tetradic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the tetradic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the tetradic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the tetradic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const tetradicPalette = tetradic(baseColor, { numberOfColors: 5 });\n * console.log(tetradicPalette); // ['#3498db', '#db3434', '#34db99', '#dbd134', '#8f34db']\n * ```\n */\nexport const tetradic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a tetradic color scheme.\n const colors = harmonize(color, 90, 270, 90);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a pentadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the pentadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the pentadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the pentadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const pentadicPalette = pentadic(baseColor, { numberOfColors: 5 });\n * console.log(pentadicPalette); // ['#3498db', '#dbd134', '#db3434', '#34db99', '#8f34db']\n * ```\n */\nexport const pentadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a pentadic color scheme.\n const colors = harmonize(color, 144, 360, 72);\n\n // Use chroma-js to fill in colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a hexadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the hexadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the hexadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the hexadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const hexadicPalette = hexadic(baseColor, { numberOfColors: 5 });\n * console.log(hexadicPalette); // ['#3498db', '#5d7f33', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\nexport const hexadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a hexadic color scheme.\n const colors = harmonize(color, 120, 360, 60);\n\n // Use chroma-js to fill in missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate an analogous color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the analogous palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the analogous palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the analogous palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const analogousPalette = analogous(baseColor, { numberOfColors: 5 });\n * console.log(analogousPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#db3474']\n * ```\n */\nexport const analogous = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate an analogous color scheme.\n const colors = harmonize(color, 30, 90, 30);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Interpolate between two colors and generate a color palette.\n *\n * @param {MoebiusChromaColorInputType} primaryColor - The starting color for interpolation.\n * @param {MoebiusChromaColorInputType} secondaryColor - The ending color for interpolation.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the interpolated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the interpolated palette.\n *\n * @example\n * ```ts\n * const startColor = '#3498db';\n * const endColor = '#db3434';\n * const interpolatedPalette = interpolate(startColor, endColor, { numberOfColors: 5 });\n * console.log(interpolatedPalette); // ['#3498db', '#5d6d7e', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\nexport const interpolate = (\n primaryColor: MoebiusChromaColorInputType,\n secondaryColor: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n bezier = false,\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n let colors = chroma\n .scale([primaryColor, secondaryColor])\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n\n if (bezier) {\n colors = chroma\n .bezier([primaryColor, secondaryColor])\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n }\n\n return colors;\n};\n","import { MoebiusHSLObjectType } from '../../types';\n\n/**\n * Represents an HSL (Hue, Saturation, Lightness) color unit.\n * @constructor\n * @param {MoebiusHSLObjectType} params - The HSL parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} l - Lightness component.\n */\nexport const unitHSL = function (this: MoebiusHSLObjectType, [h, s, l]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(0) : 0);\n this.s = Number((s * 100).toFixed());\n this.l = Number((l * 100).toFixed());\n};\n\n/**\n * Converts the HSL unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSL unit.\n * @example\n * ```ts\n * const hslUnit = new unitHSL([30, 0.5, 0.8]);\n * const hslString = hslUnit.toString(); // \"hsl(30, 50%, 80%)\"\n * ```\n */\nunitHSL.prototype.toString = function (): string {\n return `hsl(${Object.keys(this)\n .map((a, i) => `${this[a]}${i !== 0 ? '%' : ''}`)\n .join(', ')})`;\n};\n\n/**\n * Represents an HSL (Hue, Saturation, Lightness) color unit with floating-point values.\n * @constructor\n * @param {MoebiusHSLObjectType} params - The HSL parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} l - Lightness component.\n */\nexport const unitHSLFloat = function (this: MoebiusHSLObjectType, [h, s, l]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(0) : 0);\n this.s = Number(s.toFixed(2));\n this.l = Number(l.toFixed(2));\n};\n\n/**\n * Converts the HSL unit with floating-point values to a string representation.\n * @method\n * @returns {string} - The string representation of the HSL unit with floating-point values.\n * @example\n * ```ts\n * const hslFloatUnit = new unitHSLFloat([30, 0.5, 0.8]);\n * const hslFloatString = hslFloatUnit.toString(); // \"30, 0.50, 0.80\"\n * ```\n */\nunitHSLFloat.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusXYZObjectType } from '../../types';\n\n/**\n * Represents an XYZ color unit.\n * @constructor\n * @param {MoebiusXYZObjectType} params - The XYZ parameters.\n * @property {number} x - X component.\n * @property {number} y - Y component.\n * @property {number} z - Z component.\n */\nexport const UnitXYZ = function (this: MoebiusXYZObjectType, { x, y, z }) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\n/**\n * Converts the XYZ unit to a string representation.\n * @method\n * @returns {string} - The string representation of the XYZ unit.\n * @example\n * ```ts\n * const xyzUnit = new UnitXYZ({ x: 0.4, y: 0.6, z: 0.8 });\n * const xyzString = xyzUnit.toString(); // \"0.4, 0.6, 0.8\"\n * ```\n */\nUnitXYZ.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusCMYKObjectType } from '../../types';\n\n/**\n * Represents a CMYK color unit.\n * @constructor\n * @param {MoebiusCMYKObjectType} params - The CMYK parameters.\n * @property {number} c - Cyan component.\n * @property {number} m - Magenta component.\n * @property {number} y - Yellow component.\n * @property {number} k - Black (Key) component.\n */\nexport const UnitCMYK = function (this: MoebiusCMYKObjectType, { c, m, y, k }) {\n this.c = c;\n this.m = m;\n this.y = y;\n this.k = k;\n};\n\n/**\n * Converts the CMYK unit to a string representation.\n * @method\n * @returns {string} - The string representation of the CMYK unit.\n * @example\n * ```ts\n * const cmykUnit = new UnitCMYK({ c: 0.2, m: 0.4, y: 0.6, k: 0.1 });\n * const cmykString = cmykUnit.toString(); // \"0.2, 0.4, 0.6, 0.1\"\n * ```\n */\nUnitCMYK.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusRGBObjectType } from '../../types';\n\n/**\n * Represents an RGB float color unit.\n * @constructor\n * @param {MoebiusRGBObjectType} params - The RGB float parameters.\n * @property {number} r - Red component.\n * @property {number} g - Green component.\n * @property {number} b - Blue component.\n */\nexport const UnitRGBFloat = function (this: MoebiusRGBObjectType, { r, g, b }) {\n this.r = r;\n this.g = g;\n this.b = b;\n};\n\n/**\n * Converts the RGB float unit to a string representation.\n * @method\n * @returns {string} - The string representation of the RGB float unit.\n * @example\n * ```ts\n * const rgbFloatUnit = new UnitRGBFloat({ r: 255, g: 128, b: 0 });\n * const rgbFloatString = rgbFloatUnit.toString(); // \"255, 128, 0\"\n * ```\n */\nUnitRGBFloat.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHWBObjectType } from '../../types';\n\n/**\n * Represents an HWB (Hue, Whiteness, Blackness) color unit.\n * @constructor\n * @param {MoebiusHWBObjectType} params - The HWB parameters.\n * @property {number} h - Hue component.\n * @property {number} w - Whiteness component.\n * @property {number} b - Blackness component.\n */\nexport const UnitHWB = function (this: MoebiusHWBObjectType, { h, w, b }) {\n this.h = h;\n this.w = w;\n this.b = b;\n};\n\n/**\n * Converts the HWB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HWB unit.\n * @example\n * ```ts\n * const hwbUnit = new UnitHWB({ h: 200, w: 0.2, b: 0.1 });\n * const hwbString = hwbUnit.toString(); // \"200, 0.2, 0.1\"\n * ```\n */\nUnitHWB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLABObjectType } from '../../types';\n\n/**\n * Represents an LAB (CIELAB) color unit.\n * @constructor\n * @param {MoebiusLABObjectType} params - The LAB parameters.\n * @property {number} l - Lightness component.\n * @property {number} a - A color component.\n * @property {number} b - B color component.\n */\nexport const UnitLAB = function (this: MoebiusLABObjectType, [l, a, b]) {\n this.l = Number(l.toFixed(2));\n this.a = Number(a.toFixed(2));\n this.b = Number(b.toFixed(2));\n};\n\n/**\n * Converts the LAB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the LAB unit.\n * @example\n * ```ts\n * const labUnit = new UnitLAB([70, 10, 20]);\n * const labString = labUnit.toString(); // \"70, 10, 20\"\n * ```\n */\nUnitLAB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLABObjectType } from '../../types';\n\n/**\n * Represents an OKLAB color unit.\n * @constructor\n * @param {MoebiusLABObjectType} params - The OKLAB parameters.\n * @property {number} l - Lightness component.\n * @property {number} a - First color opponent axis.\n * @property {number} b - Second color opponent axis.\n */\nexport const UnitOKLAB = function (this: MoebiusLABObjectType, [l, a, b]) {\n this.l = Number(l.toFixed(2));\n this.a = Number(a.toFixed(2));\n this.b = Number(b.toFixed(2));\n};\n\n/**\n * Converts the OKLAB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the OKLAB unit.\n * @example\n * ```ts\n * const oklabUnit = new UnitOKLAB([70, 30, 45]);\n * const oklabString = oklabUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitOKLAB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHSVObjectType } from '../../types';\n\n/**\n * Represents an HSV (Hue, Saturation, Value) color unit.\n * @constructor\n * @param {MoebiusHSVObjectType} params - The HSV parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} v - Value component.\n */\nexport const UnitHSV = function (this: MoebiusHSVObjectType, [h, s, v]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n this.s = Number(s.toFixed(2));\n this.v = Number(v.toFixed(2));\n};\n\n/**\n * Converts the HSV unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSV unit.\n * @example\n * ```ts\n * const hsvUnit = new UnitHSV([30, 0.5, 0.8]);\n * const hsvString = hsvUnit.toString(); // \"30, 0.50, 0.80\"\n * ```\n */\nUnitHSV.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLCHObjectType } from '../../types';\n\n/**\n * Represents an LCH (CIELCH) color unit.\n * @constructor\n * @param {MoebiusLCHObjectType} params - The LCH parameters.\n * @property {number} l - Lightness component.\n * @property {number} c - Chroma component.\n * @property {number} h - Hue component.\n */\nexport const UnitLCH = function (this: MoebiusLCHObjectType, [l, c, h]) {\n this.l = Number(l.toFixed(2));\n this.c = Number(c.toFixed(2));\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n};\n\n/**\n * Converts the LCH unit to a string representation.\n * @method\n * @returns {string} - The string representation of the LCH unit.\n * @example\n * ```ts\n * const lchUnit = new UnitLCH([70, 30, 45]);\n * const lchString = lchUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitLCH.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLCHObjectType } from '../../types';\n\n/**\n * Represents an OKLCH color unit.\n * @constructor\n * @param {MoebiusLCHObjectType} params - The OKLCH parameters.\n * @property {number} l - Lightness component.\n * @property {number} c - Chroma component.\n * @property {number} h - Hue component.\n */\nexport const UnitOKLCH = function (this: MoebiusLCHObjectType, [l, c, h]) {\n this.l = Number(l.toFixed(2));\n this.c = Number(c.toFixed(2));\n this.h = Number(h.toFixed(2));\n};\n\n/**\n * Converts the OKLCH unit to a string representation.\n * @method\n * @returns {string} - The string representation of the OKLCH unit.\n * @example\n * ```ts\n * const oklchUnit = new UnitOKLCH([70, 30, 45]);\n * const oklchString = oklchUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitOKLCH.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHSIObjectType } from '../../types';\n\n/**\n * Represents an HSI (Hue, Saturation, Intensity) color unit.\n * @constructor\n * @param {MoebiusHSIObjectType} params - The HSI parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} i - Intensity component.\n */\nexport const UnitHSI = function (this: MoebiusHSIObjectType, [h, s, i]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n this.s = Number(s.toFixed(2));\n this.i = Number(i.toFixed(2));\n};\n\n/**\n * Converts the HSI unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSI unit.\n * @example\n * ```ts\n * const hsiUnit = new UnitHSI([30, 0.5, 0.8]);\n * const hsiString = hsiUnit.toString(); // \"30, 0.5, 0.8\"\n * ```\n */\nUnitHSI.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import chroma from 'chroma-js';\nimport { unitHSLFloat } from '../color-objects/hsl';\nimport { UnitRGBFloat } from '../color-objects/rgb';\nimport {\n MoebiusChromaColorInputType,\n MoebiusHSLObjectType,\n MoebiusRGBObjectType\n} from '../../types';\n\n/**\n * Converts a color to its float representation.\n * @param {MoebiusChromaColorInputType} color - The input color in hex, rgb, or rgba format.\n * @param {string} [type] - The color type ('hsl' for HSL, undefined for RGB).\n * @returns {unitHSLFloat | UnitRGBFloat} - The float representation of the color.\n * @example\n * ```ts\n * const hslFloatColor = toFloat('#00ff00', 'hsl');\n * console.log(hslFloatColor.toString()); // 120, 100, 50\n * ```\n * @example\n * ```ts\n * const rgbFloatColor = toFloat('#00ff00');\n * console.log(rgbFloatColor.toString()); // 0, 1, 0\n * ```\n */\nexport const toFloat = (\n color: MoebiusChromaColorInputType,\n type?: string\n): MoebiusHSLObjectType | MoebiusRGBObjectType => {\n if (type === 'hsl') {\n // Convert the color to HSL and create a new HSL float unit\n return new unitHSLFloat(chroma(color).hsl());\n }\n\n // Convert the color to RGB and create a new RGB float unit\n const _rgb = chroma(color).rgb();\n const rgbFloat = new UnitRGBFloat({\n r: Number((_rgb[0] / 255).toFixed(2)),\n g: Number((_rgb[1] / 255).toFixed(2)),\n b: Number((_rgb[2] / 255).toFixed(2))\n });\n\n return rgbFloat;\n};\n","/**\n * Normalizes an RGB input value.\n * @param {number} r - The input value in the RGB color space (0 to 255).\n * @returns {number} - The normalized value.\n */\nexport const normalizeRGBInput = (r: number) => {\n if ((r /= 255) <= 0.04045) return r / 12.92;\n\n return Math.pow((r + 0.055) / 1.055, 2.4);\n};\n\n/**\n * Normalizes a LAB input value.\n * @param {number} t - The input value in the LAB color space.\n * @returns {number} - The normalized value.\n */\nexport const normalizeLABInput = (t: number) => {\n if (t > 0.008856452) return Math.pow(t, 1 / 3);\n\n return t / 0.12841855 + 0.137931034;\n};\n","import {\n MoebiusCMYKObjectType,\n MoebiusColorValueHexType,\n MoebiusColorValueRgbType,\n MoebiusHSIObjectType,\n MoebiusHSLObjectType,\n MoebiusHSVObjectType,\n MoebiusHWBObjectType,\n MoebiusLABObjectType,\n MoebiusLCHObjectType,\n MoebiusColorInterface,\n MoebiusRGBObjectType,\n MoebiusXYZObjectType,\n MoebiusChromaColorInputType\n} from '../types';\n\nimport * as CONVERTERS from '../utils/converters';\n\n/**\n * MoebiusColor class representing a color with various formats and conversions.\n * @class\n * @example\n * ```ts\n * const mColor = new MoebiusColor('#ff9900')\n * ```\n */\nexport class MoebiusColor implements MoebiusColorInterface {\n color: MoebiusChromaColorInputType;\n name: string;\n hex: MoebiusColorValueHexType;\n rgb: MoebiusColorValueRgbType;\n hsl: MoebiusHSLObjectType;\n hwb: MoebiusHWBObjectType;\n hsv: MoebiusHSVObjectType;\n lab: MoebiusLABObjectType;\n xyz: MoebiusXYZObjectType;\n lch: MoebiusLCHObjectType;\n oklch: MoebiusLCHObjectType;\n hsi: MoebiusHSIObjectType;\n oklab: MoebiusLABObjectType;\n cmyk: MoebiusCMYKObjectType;\n\n /**\n * Creates an instance of MoebiusColor.\n * @param {MoebiusChromaColorInputType} value - The hex value of the color.\n * @param {string} name - The name of the color\n * @constructor\n * @throws Will throw an error if init has not been run before creating an instance.\n */\n constructor(color: MoebiusChromaColorInputType, name: string) {\n this.color = color;\n this.name = name;\n\n this.hex = CONVERTERS.toHEX(this.color);\n this.cmyk = CONVERTERS.toCMYK(this.color);\n this.xyz = CONVERTERS.toXYZ(this.color);\n this.hsl = CONVERTERS.toHSL(this.color);\n this.hwb = CONVERTERS.toHWB(this.color);\n this.lab = CONVERTERS.toLAB(this.color);\n this.oklab = CONVERTERS.toOKLAB(this.color);\n this.hsv = CONVERTERS.toHSV(this.color);\n this.lch = CONVERTERS.toLCH(this.color);\n this.oklch = CONVERTERS.toOKLCH(this.color);\n this.hsi = CONVERTERS.toHSI(this.color);\n this.rgb = CONVERTERS.toRGB(this.color);\n }\n /**\n * Converts the color to an object in the specified color space.\n * @param {string} type - The color space type (e.g., 'rgb' or 'hsl').\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The color object in the specified color space.\n */\n toObject(type?: string): MoebiusRGBObjectType | MoebiusHSLObjectType {\n return CONVERTERS.toObject(this.color, type);\n }\n /**\n * Converts the color to a floating-point representation in the specified color space.\n * @param {string} type - The color space type (e.g., 'rgb' or 'hsl').\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The floating-point representation of the color in the specified color space.\n */\n toFloat(type?: string): MoebiusRGBObjectType | MoebiusHSLObjectType {\n return CONVERTERS.toFloat(this.color, type);\n }\n}\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType\n} from '../../types';\n\n/**\n * Converts a color to its corresponding HEX representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @returns {MoebiusColorValueHexType} The HEX representation of the color.\n *\n * @example\n * ```ts\n * const hexColor = toHEX('#3498db');\n * console.log(hexColor); // Output: '#3498db'\n * ```\n */\nexport const toHEX = (\n color: MoebiusChromaColorInputType\n): MoebiusColorValueHexType => {\n return chroma(color).hex();\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusCMYKObjectType,\n MoebiusChromaColorInputType\n} from '../../types';\nimport { UnitCMYK } from '../color-objects';\n\n/**\n * Converts an RGB color to its CMYK representation.\n * @param {MoebiusChromaColorInputType} color - The input color in hex, rgb, or rgba format.\n * @returns {MoebiusCMYKObjectType} - The CMYK representation of the color.\n * @example\n * ```ts\n * const cmykColor = toCMYK('#00ff00');\n * console.log(cmykColor); // { c: 40, m: 0, y: 100, k: 0 }\n * ```\n */\nexport const toCMYK = (\n color: MoebiusChromaColorInputType\n): MoebiusCMYKObjectType => {\n // Convert the color to RGB components\n let [r, b, g] = chroma(color).rgb();\n\n // Normalize RGB values to the range [0, 1]\n r /= 255;\n g /= 255;\n b /= 255;\n\n // Calculate the CMYK components\n const k = +(1 - Math.max(r, g, b));\n const c = +((1 - r - k) / (1 - k) || 0);\n const m = +((1 - g - k) / (1 - k) || 0);\n const y = +((1 - b - k) / (1 - k) || 0);\n\n // Create a new CMYK unit\n return new UnitCMYK({\n c: Number((c * 100).toFixed()),\n m: Number((m * 100).toFixed()),\n y: Number((y * 100).toFixed()),\n k: Number((k * 100).toFixed())\n });\n};\n","import chroma from 'chroma-js';\n\nimport { MoebiusChromaColorInputType, MoebiusXYZObjectType } from '../../types';\nimport { UnitXYZ } from '../color-objects';\nimport { normalizeLABInput, normalizeRGBInput } from '../normalize-color-units';\n\n/**\n * Converts a color from RGB to CIE 1931 XYZ color space.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hexadecimal format.\n * @returns {MoebiusXYZObjectType} - An object representing the XYZ color values.\n */\nexport const toXYZ = (\n color: MoebiusChromaColorInputType\n): MoebiusXYZObjectType => {\n // Extract RGB components from the input color\n let [r, b, g] = chroma(color).rgb();\n\n // Normalize RGB values\n r = normalizeRGBInput(r);\n g = normalizeRGBInput(g);\n b = normalizeRGBInput(b);\n\n // Convert RGB to XYZ\n const x = normalizeLABInput(\n (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / 0.95047\n );\n const y = normalizeLABInput(\n (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / 1\n );\n const z = normalizeLABInput(\n (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / 1.08883\n );\n\n // Return XYZ color values as a UnitXYZ object\n return new UnitXYZ({\n x: Number(x.toFixed(2)),\n y: Number(y.toFixed(2)),\n z: Number(z.toFixed(2))\n });\n};\n","import chroma from 'chroma-js';\n\nimport { MoebiusChromaColorInputType, MoebiusHSLObjectType } from '../../types';\nimport { unitHSL } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HSL object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSLObjectType} The HSL color representation object.\n *\n * @example\n * ```ts\n * const hslObject = toHSL('#3498db');\n * console.log(hslObject); // Output: { h: 207.76, s: 0.86, l: 0.56 }\n * ```\n */\nexport const toHSL = (\n color: MoebiusChromaColorInputType\n): MoebiusHSLObjectType => {\n return new unitHSL(chroma(color).hsl());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusHWBObjectType } from '../../types';\nimport { UnitHWB } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HWB object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHWBObjectType} The HWB color representation object.\n *\n * @example\n * ```ts\n * const hwbObject = toHWB('#3498db');\n * console.log(hwbObject); // Output: { h: 207.76, w: 0.5, b: 0.14 }\n * ```\n */\nexport const toHWB = (\n color: MoebiusChromaColorInputType\n): MoebiusHWBObjectType => {\n let [r, b, g] = chroma(color).rgb();\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n const w = Math.min(r, g, b);\n const v = Math.max(r, g, b);\n const black = 1 - v;\n\n if (v === w) return { h: 0, w: w, b: black };\n\n const f = r === w ? g - b : g === w ? b - r : r - g;\n const i = r === w ? 3 : g === w ? 5 : 1;\n\n return new UnitHWB({\n h: Number(((i - f / (v - w)) / 6).toFixed(2)),\n w: Number(w.toFixed(2)),\n b: Number(black.toFixed(2))\n });\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLABObjectType } from '../../types';\nimport { UnitLAB } from '../color-objects';\n\n/**\n * Converts a color to its corresponding LAB object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLABObjectType} The LAB color representation object.\n *\n * @example\n * ```ts\n * const labObject = toLAB('#3498db');\n * console.log(labObject); // Output: { l: 54.24, a: -12.56, b: -43.81 }\n * ```\n */\nexport const toLAB = (\n color: MoebiusChromaColorInputType\n): MoebiusLABObjectType => {\n return new UnitLAB(chroma(color).lab());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLABObjectType } from '../../types';\nimport { UnitOKLAB } from '../color-objects';\n\n/**\n * Converts a color to its OKLAB representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLABObjectType} The OKLAB representation of the input color.\n *\n * @example\n * ```ts\n * const oklabColor = toOKLAB('#3498db');\n * console.log(oklabColor); // Output: { l: 52.42, a: -9.93, b: -39.49 }\n * ```\n */\nexport const toOKLAB = (\n color: MoebiusChromaColorInputType\n): MoebiusLABObjectType => {\n return new UnitOKLAB(chroma(color).oklab());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusHSVObjectType } from '../../types';\nimport { UnitHSV } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HSV object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSVObjectType} The HSV color representation object.\n *\n * @example\n * ```ts\n * const hsvObject = toHSV('#3498db');\n * console.log(hsvObject); // Output: { h: 207.76, s: 0.86, v: 0.85 }\n * ```\n */\nexport const toHSV = (\n color: MoebiusChromaColorInputType\n): MoebiusHSVObjectType => {\n return new UnitHSV(chroma(color).hsv());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLCHObjectType } from '../../types';\nimport { UnitLCH } from '../color-objects';\n\n/**\n * Converts a color to its corresponding LCH object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLCHObjectType} The LCH color representation object.\n *\n * @example\n * ```ts\n * const lchObject = toLCH('#3498db');\n * console.log(lchObject); // Output: { l: 54.66, c: 76.91, h: 217.76 }\n * ```\n */\nexport const toLCH = (\n color: MoebiusChromaColorInputType\n): MoebiusLCHObjectType => {\n return new UnitLCH(chroma(color).lch());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLCHObjectType } from '../../types';\nimport { UnitOKLCH } from '../color-objects';\n\n/**\n * Converts a color to its OKLCH representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLCHObjectType} The OKLCH representation of the input color.\n *\n * @example\n * ```ts\n * const oklchColor = toOKLCH('#3498db');\n * console.log(oklchColor); // Output: { l: 52.12, c: 126.62, h: 232.53 }\n * ```\n */\nexport const toOKLCH = (\n color: MoebiusChromaColorInputType\n): MoebiusLCHObjectType => {\n return new UnitOKLCH(chroma(color).oklch());\n};\n","import chroma from 'chroma-js';\nimport { UnitHSI } from '../color-objects';\nimport { MoebiusChromaColorInputType, MoebiusHSIObjectType } from '../../types';\n\n/**\n * Converts a color to its corresponding HSI object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSIObjectType} The HSI color representation object.\n *\n * @example\n * ```ts\n * const hsiObject = toHSI('#3498db');\n * console.log(hsiObject); // Output: { h: 207.76, s: 0.52, i: 0.4 }\n * ```\n */\nexport const toHSI = (\n color: MoebiusChromaColorInputType\n): MoebiusHSIObjectType => {\n return new UnitHSI(chroma(color).hsi());\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueRgbType\n} from '../../types';\n\n/**\n * Converts a color to its RGB representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in any valid chroma-js format.\n * @returns {MoebiusColorValueRgbType} The RGB representation of the input color.\n *\n * @example\n * ```ts\n * const rgbColor = toRGB('#3498db');\n * console.log(rgbColor); // Output: 'rgb(52, 152, 219)'\n * ```\n */\nexport const toRGB = (\n color: MoebiusChromaColorInputType\n): MoebiusColorValueRgbType => {\n const [r, g, b] = chroma(color).rgb();\n\n return `rgb(${r}, ${g}, ${b})`;\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusHSLObjectType,\n MoebiusRGBObjectType\n} from 'types';\n\n/**\n * Converts a color to its corresponding object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @param {string} [type] - The type of representation ('hsl' or undefined for RGB).\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The color representation object.\n *\n * @example\n * ```ts\n * const rgbObject = toObject('#3498db');\n * console.log(rgbObject); // Output: { r: 52, g: 152, b: 219 }\n *\n * const hslObject = toObject('#3498db', 'hsl');\n * console.log(hslObject); // Output: { h: 207, s: 79, l: 57 }\n * ```\n */\nexport const toObject = (\n color: MoebiusChromaColorInputType,\n type?: string\n): MoebiusRGBObjectType | MoebiusHSLObjectType => {\n if (type === 'hsl') {\n const [h, s, l] = chroma(color).hsl();\n\n return {\n h: Number(!isNaN(h) ? h.toFixed(0) : 0),\n s: Number((s * 100).toFixed()),\n l: Number((l * 100).toFixed())\n };\n }\n\n const rgb = chroma(color).rgb();\n const rgbObject = {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2]\n };\n\n return rgbObject;\n};\n","import chroma from 'chroma-js';\nimport nearestColor from 'nearest-color';\n\nimport {\n MoebiusColorValueHexType,\n NearestColorColorMatchInterface\n} from './types';\n\nimport { MoebiusSVGHelper } from './classes/MoebiusSVGHelper';\nimport { MoebiusPalettes } from './classes/MoebiusPalettes';\nimport { MoebiusColor } from './classes/MoebiusColor';\n\nexport type MoebiusReturnType = Promise<{\n MoebiusColor: typeof MoebiusColor;\n MoebiusPalettes: typeof MoebiusPalettes;\n MoebiusSVGHelper: typeof MoebiusSVGHelper;\n}>;\n\nconst initializeColorNames = async (): Promise<\n // eslint-disable-next-line no-unused-vars\n (color: string) => NearestColorColorMatchInterface | string\n> => {\n const response = await fetch('https://color-names.herokuapp.com/v1/');\n const data = await response.json();\n const colors = data.colors;\n const map = {};\n\n colors.forEach((entry: Record<string, unknown>) => {\n map[entry.name as string] = entry.hex;\n });\n\n return nearestColor.from(map);\n};\n\n/**\n * Asynchronous function to initialize Moebius with required data\n * @function\n * @returns {MoebiusReturnType} An object with Moebius classes\n *\n */\nasync function Moebius(): MoebiusReturnType {\n const colorNames = await initializeColorNames();\n\n class MoebiusColorAbstract extends MoebiusColor {\n constructor(color: MoebiusColorValueHexType) {\n super(\n chroma(color).hex(),\n typeof colorNames(color) === 'string'\n ? (colorNames(color) as string)\n : (colorNames(color) as NearestColorColorMatchInterface).name\n );\n }\n }\n\n return {\n MoebiusColor: MoebiusColorAbstract as typeof MoebiusColor,\n MoebiusPalettes,\n MoebiusSVGHelper\n };\n}\n\nexport default Moebius;\n"],"names":["module","exports","limit$2","x","min","max","limit$1","clip_rgb$3","rgb","_clipped","_unclipped","slice","i","classToType","i$1","list$1","length","name","toLowerCase","type$p","obj","Object","prototype","toString","call","type$o","unpack$B","args","keyOrder","Array","split","filter","k","undefined","map","type$n","last$4","l","PI$2","Math","PI","utils","clip_rgb","limit","type","unpack","last","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","input$h","format","autodetect","last$3","clip_rgb$2","type$m","_input","Color$D","len","arguments","me","this","constructor","mode","sorted","sort","a","b","p","list","chk","test","apply","Error","_rgb","push","hex","join","Color_1","chroma$k","Function","bind","Color","concat","version","chroma_1","unpack$A","max$2","rgb2cmyk$1","ref","r","g","f","rgb2cmyk_1","unpack$z","cmyk2rgb","c","m","y","alpha","cmyk2rgb_1","chroma$j","Color$C","input$g","unpack$y","type$l","rgb2cmyk","cmyk","unpack$x","last$2","rnd","round","hsl2css$1","hsla","hsl2css_1","unpack$w","rgb2hsl$3","s","h","Number","NaN","rgb2hsl_1","unpack$v","last$1","hsl2css","rgb2hsl$2","round$6","rgb2css$1","rgba","substr","rgb2css_1","unpack$u","round$5","hsl2rgb$1","assign","t3","t2","t1","h_","hsl2rgb_1","hsl2rgb","input$f","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$4","css2rgb$1","css","trim","named","e","match","rgb$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","chroma$i","Color$B","input$e","type$k","rgb2css","css2rgb","rest","Color$A","chroma$h","input$d","unpack$t","gl","unpack$s","rgb2hcg$1","delta","_g","rgb2hcg_1","unpack$r","floor$3","floor","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","q","t","v","hcg2rgb_1","unpack$q","type$j","chroma$g","Color$z","input$c","rgb2hcg","hcg","unpack$p","round$3","rgb2hex$2","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb_1","u","parseInt","u$1","chroma$f","Color$y","type$i","input$b","rgb2hex$1","indexOf","unpack$o","TWOPI$2","min$2","sqrt$4","sqrt","acos","rgb2hsi$1","min_","rgb2hsi_1","unpack$n","TWOPI$1","cos$4","cos","hsi2rgb","isNaN","hsi2rgb_1","unpack$m","type$h","chroma$e","Color$x","input$a","rgb2hsi","hsi","unpack$l","type$g","chroma$d","Color$w","input$9","rgb2hsl$1","unpack$k","min$1","max$1","rgb2hsl","max_","rgb2hsv$1","unpack$j","floor$2","hsv2rgb","hsv2rgb_1","unpack$i","type$f","chroma$c","Color$v","input$8","rgb2hsv","hsv","labConstants","Kn","Xn","Yn","Zn","t0","LAB_CONSTANTS$3","unpack$h","pow$a","pow","rgb2lab$2","ref$1","rgb2xyz","rgb_xyz","xyz_lab","rgb2lab_1","LAB_CONSTANTS$2","unpack$g","pow$9","lab2rgb$1","z","lab_xyz","xyz_rgb","lab2rgb_1","unpack$f","type$e","chroma$b","Color$u","input$7","rgb2lab$1","lab","unpack$e","sqrt$3","atan2$2","atan2","round$2","lab2lch$2","lab2lch_1","unpack$d","rgb2lab","lab2lch$1","rgb2lch$1","b_","rgb2lch_1","unpack$c","sin$3","sin","cos$3","lch2lab$2","lch2lab_1","unpack$b","lch2lab$1","lab2rgb","lch2rgb$1","L","lch2rgb_1","unpack$a","lch2rgb","hcl2rgb","hcl","reverse","hcl2rgb_1","unpack$9","type$d","chroma$a","Color$t","input$6","rgb2lch","lch","forEach","w3cx11_1","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflower","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Color$s","input$5","type$c","w3cx11","hex2rgb","rgb2hex","keys","n","unpack$8","rgb2num$1","rgb2num_1","type$b","num2rgb_1","num","chroma$9","Color$r","input$4","type$a","rgb2num","chroma$8","Color$q","input$3","unpack$7","type$9","round$1","log$1","log","temperature2rgb_1","kelvin","temp","temperature2rgb","unpack$6","rgb2temperature$1","minTemp","maxTemp","eps","chroma$7","Color$p","input$2","rgb2temperature","temperature","unpack$5","cbrt","pow$8","sign$1","sign","rgb2oklab$2","rgb2lrgb","lr","lg","lb","rgb2oklab_1","abs","unpack$4","pow$7","oklab2rgb$1","lrgb2rgb","oklab2rgb_1","unpack$3","type$8","chroma$6","Color$o","input$1","rgb2oklab$1","oklab","unpack$2","rgb2oklab","lab2lch","rgb2oklch$1","rgb2oklch_1","unpack$1","lch2lab","oklab2rgb","oklch2rgb","oklch2rgb_1","type$7","chroma$5","Color$n","input","rgb2oklch","oklch","Color$m","type$6","mutate","clipped","Color$k","LAB_CONSTANTS$1","darken","amount","brighten","darker","brighter","get","mc","channel","src","Color$i","type$5","pow$6","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","low","high","mid","interpolate","lm","rgb2luminance","luminance_x","interpolator$1","Color$h","type$4","interpolator","mix$1","col1","col2","Color$g","mix","Color$f","premultiply","Color$e","LAB_CONSTANTS","saturate","desaturate","Color$d","type$3","set","value","charAt","out","Color$c","xyz0","xyz1","Color$b","sqrt$2","pow$5","lrgb","x1","y1","z1","x2","y2","z2","Color$a","Color$9","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","interpolate_hsx$5","Color$8","c1","c2","interpolate_hsx$4","interpolate_hsx$3","interpolate_hsx$2","interpolate_hsx$1","Color$7","interpolate_hsx","Color$6","clip_rgb$1","pow$4","sqrt$1","PI$1","cos$2","sin$2","atan2$1","average","colors","weights","from","reduce","w","_average_lrgb","first","shift","xyz","cnt","dx","dy","A","ci","xyz2","A$1","col","chroma$4","type$2","pow$3","scale$2","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","val","bypassMap","classes","d","analyze","limits","domain","tOut","tBreaks","every","_m","range","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","padding","numColors","result","dm","dd","__range__","samples","end","asc","cache","gamma","nodata","left","right","inclusive","ascending","Color$5","scale$1","binom_row","row","newrow","j","bezier","I","lab0","lab1","lab2","lab3","RangeError","labs","sum","el","bezier_1","scale","chroma$3","blend","bottom","top","blend_f","c0","each","normal","multiply","lighten","screen","overlay","burn","dodge","blend_1","type$1","pow$2","sin$1","cos$1","chroma$2","cubehelix","start","rotations","lightness","dl","dh","fract","amp","cos_a","sin_a","Color$4","digits","floor$1","random","random_1","code","pow$1","abs$1","data","key","MAX_VALUE","values","count","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","repeat","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","Color$3","contrast","l1","l2","Color$2","exp","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rt","Color$1","distance","sum_sq","valid","chroma$1","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","colorbrewer_1","chroma","chroma_js","factory","context","nearestColor","needle","parseColor","distanceSq","minDistanceSq","Infinity","DEFAULT_COLORS","source","mapColors","color","createColorSpec","STANDARD_COLORS","hexMatch","substring","rgbMatch","parseComponentValue","leadingZero","string","availableColors","nearestColorBase","matcher","or","alternateColors","extendedColors","VERSION","MoebiusSVGHelper","xlmns","getColorPiePaths","size","df","document","createDocumentFragment","defsElement","createElementNS","maskElement","rectElement","gElement","interval","id","setAttributeNS","appendChild","maskDegrees","initial","lineElement","group","inwardInterval","index","path","radius","centerX","centerY","stop","pieSlice","MOEBIUS_PALETTE_DEFAULT_OPTIONS","diverging","randomOffset","noDuplicates","colorScaleMode","reverseDirection","MoebiusPaletteColors","luminanceShift","monochromatic","complement","triadic","tetradic","pentadic","hexadic","analogous","palette","toArray","flat","harmonize","options","toFixed","h1","uniqueColors","Set","numberOfColors","hslColors","generateLuminanceShiftPalette","lRange","lStep","lStart","colorRange","offset","diff","luminanceShiftAutoColors","divergentColor","ceil","MoebiusAccentColors","MoebiusPalettes","baseColor","secondaryColor","defaultOptions","all","accents","FEATURES.complement","FEATURES.split","FEATURES.triadic","FEATURES.tetradic","FEATURES.pentadic","FEATURES.hexadic","FEATURES.analogous","primaryColor","FEATURES.interpolate","divergingColors","even","numberOfColorsLeft","numberOfColorsRight","generatedColors","generatedDivergentColors","stepsLeft","stepsRight","steps","FEATURES.luminanceShift","currentOptions","FEATURES.monochromatic","FEATURES.harmonize","unitHSL","unitHSLFloat","UnitXYZ","UnitCMYK","UnitRGBFloat","UnitHWB","UnitLAB","UnitOKLAB","UnitHSV","UnitLCH","UnitOKLCH","UnitHSI","normalizeRGBInput","normalizeLABInput","MoebiusColor","hwb","CONVERTERS.toHEX","CONVERTERS.toCMYK","CONVERTERS.toXYZ","CONVERTERS.toHSL","CONVERTERS.toHWB","CONVERTERS.toLAB","CONVERTERS.toOKLAB","CONVERTERS.toHSV","CONVERTERS.toLCH","CONVERTERS.toOKLCH","CONVERTERS.toHSI","CONVERTERS.toRGB","toObject","CONVERTERS.toObject","toFloat","CONVERTERS.toFloat","async","Moebius","colorNames","response","fetch","json","entry","initializeColorNames","super"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"moebius.js","sources":["node_modules/chroma-js/chroma.js","node_modules/nearest-color/nearestColor.js","src/classes/MoebiusSVGHelper.ts","src/utils/unique-id.ts","src/utils/svg/get-start-mask-degree.ts","src/utils/svg/pie-slice.ts","src/constants/index.ts","src/classes/MoebiusPaletteColors.ts","src/features/harmonize.ts","src/utils/random.ts","src/features/monochromatic.ts","src/features/luminance-shift.ts","src/utils/range.ts","src/classes/MoebiusAccentColors.ts","src/classes/MoebiusPalettes.ts","src/features/complement.ts","src/features/split.ts","src/features/triadic.ts","src/features/tetradic.ts","src/features/pentadic.ts","src/features/hexadic.ts","src/features/analogous.ts","src/features/interpolate.ts","src/utils/color-objects/hsl.ts","src/utils/color-objects/xyz.ts","src/utils/color-objects/cmyk.ts","src/utils/color-objects/rgb.ts","src/utils/color-objects/hwb.ts","src/utils/color-objects/lab.ts","src/utils/color-objects/oklab.ts","src/utils/color-objects/hsv.ts","src/utils/color-objects/lch.ts","src/utils/color-objects/oklch.ts","src/utils/color-objects/hsi.ts","src/utils/converters/to-float.ts","src/utils/normalize-color-units.ts","src/classes/MoebiusColor.ts","src/utils/converters/to-hex.ts","src/utils/converters/to-cmyk.ts","src/utils/converters/to-xyz.ts","src/utils/converters/to-hsl.ts","src/utils/converters/to-hwb.ts","src/utils/converters/to-lab.ts","src/utils/converters/to-oklab.ts","src/utils/converters/to-hsv.ts","src/utils/converters/to-lch.ts","src/utils/converters/to-oklch.ts","src/utils/converters/to-hsi.ts","src/utils/converters/to-rgb.ts","src/utils/converters/to-object.ts","src/main.ts"],"sourcesContent":["/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.chroma = factory());\n})(this, (function () { 'use strict';\n\n var limit$2 = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var limit$1 = limit$2;\n\n var clip_rgb$3 = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit$1(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit$1(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i$1 = 0, list$1 = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i$1 < list$1.length; i$1 += 1) {\n var name = list$1[i$1];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type$p = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var type$o = type$p;\n\n var unpack$B = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type$o(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var type$n = type$p;\n\n var last$4 = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type$n(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI$2 = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb$3,\n \tlimit: limit$2,\n \ttype: type$p,\n \tunpack: unpack$B,\n \tlast: last$4,\n \tPI: PI$2,\n \tTWOPI: PI$2*2,\n \tPITHIRD: PI$2/3,\n \tDEG2RAD: PI$2 / 180,\n \tRAD2DEG: 180 / PI$2\n };\n\n var input$h = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$3 = utils.last;\n var clip_rgb$2 = utils.clip_rgb;\n var type$m = utils.type;\n var _input = input$h;\n\n var Color$D = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$m(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$3(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort(function (a,b) { return b.p - a.p; });\n _input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = _input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (_input.format[mode]) {\n var rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$2(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color$D.prototype.toString = function toString () {\n if (type$m(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color$D;\n\n var chroma$k = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma$k.Color, [ null ].concat( args) ));\n };\n\n chroma$k.Color = Color_1;\n chroma$k.version = '2.4.2';\n\n var chroma_1 = chroma$k;\n\n var unpack$A = utils.unpack;\n var max$2 = Math.max;\n\n var rgb2cmyk$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$A(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max$2(r,max$2(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk$1;\n\n var unpack$z = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$z(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var chroma$j = chroma_1;\n var Color$C = Color_1;\n var input$g = input$h;\n var unpack$y = utils.unpack;\n var type$l = utils.type;\n\n var rgb2cmyk = rgb2cmyk_1;\n\n Color$C.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n chroma$j.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$C, [ null ].concat( args, ['cmyk']) ));\n };\n\n input$g.format.cmyk = cmyk2rgb_1;\n\n input$g.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$y(args, 'cmyk');\n if (type$l(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$x = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$x(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css$1;\n\n var unpack$w = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl$3 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$w(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl$3;\n\n var unpack$v = utils.unpack;\n var last$1 = utils.last;\n var hsl2css = hsl2css_1;\n var rgb2hsl$2 = rgb2hsl_1;\n var round$6 = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$v(args, 'rgba');\n var mode = last$1(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css(rgb2hsl$2(rgba), mode);\n }\n rgba[0] = round$6(rgba[0]);\n rgba[1] = round$6(rgba[1]);\n rgba[2] = round$6(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css$1;\n\n var unpack$u = utils.unpack;\n var round$5 = Math.round;\n\n var hsl2rgb$1 = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$u(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$5(c[0]*255),round$5(c[1]*255),round$5(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb$1;\n\n var hsl2rgb = hsl2rgb_1;\n var input$f = input$h;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$4 = Math.round;\n\n var css2rgb$1 = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input$f.format.named) {\n try {\n return input$f.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb$1.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb$1;\n\n var chroma$i = chroma_1;\n var Color$B = Color_1;\n var input$e = input$h;\n var type$k = utils.type;\n\n var rgb2css = rgb2css_1;\n var css2rgb = css2rgb_1;\n\n Color$B.prototype.css = function(mode) {\n return rgb2css(this._rgb, mode);\n };\n\n chroma$i.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$B, [ null ].concat( args, ['css']) ));\n };\n\n input$e.format.css = css2rgb;\n\n input$e.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$k(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n });\n\n var Color$A = Color_1;\n var chroma$h = chroma_1;\n var input$d = input$h;\n var unpack$t = utils.unpack;\n\n input$d.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$t(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma$h.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$A, [ null ].concat( args, ['gl']) ));\n };\n\n Color$A.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$s = utils.unpack;\n\n var rgb2hcg$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$s(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg$1;\n\n var unpack$r = utils.unpack;\n var floor$3 = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$r(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor$3(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$q = utils.unpack;\n var type$j = utils.type;\n var chroma$g = chroma_1;\n var Color$z = Color_1;\n var input$c = input$h;\n\n var rgb2hcg = rgb2hcg_1;\n\n Color$z.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n chroma$g.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$z, [ null ].concat( args, ['hcg']) ));\n };\n\n input$c.format.hcg = hcg2rgb_1;\n\n input$c.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'hcg');\n if (type$j(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$p = utils.unpack;\n var last = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$p(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex$2;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n var hex2rgb$1 = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb$1;\n\n var chroma$f = chroma_1;\n var Color$y = Color_1;\n var type$i = utils.type;\n var input$b = input$h;\n\n var rgb2hex$1 = rgb2hex_1;\n\n Color$y.prototype.hex = function(mode) {\n return rgb2hex$1(this._rgb, mode);\n };\n\n chroma$f.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$y, [ null ].concat( args, ['hex']) ));\n };\n\n input$b.format.hex = hex2rgb_1;\n input$b.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$i(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n return 'hex';\n }\n }\n });\n\n var unpack$o = utils.unpack;\n var TWOPI$2 = utils.TWOPI;\n var min$2 = Math.min;\n var sqrt$4 = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min$2(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt$4((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI$2 - h;\n }\n h /= TWOPI$2;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi$1;\n\n var unpack$n = utils.unpack;\n var limit = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos$4 = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$n(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos$4(TWOPI$1*h)/cos$4(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit(i*r*3);\n g = limit(i*g*3);\n b = limit(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$m = utils.unpack;\n var type$h = utils.type;\n var chroma$e = chroma_1;\n var Color$x = Color_1;\n var input$a = input$h;\n\n var rgb2hsi = rgb2hsi_1;\n\n Color$x.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n chroma$e.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$x, [ null ].concat( args, ['hsi']) ));\n };\n\n input$a.format.hsi = hsi2rgb_1;\n\n input$a.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'hsi');\n if (type$h(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$l = utils.unpack;\n var type$g = utils.type;\n var chroma$d = chroma_1;\n var Color$w = Color_1;\n var input$9 = input$h;\n\n var rgb2hsl$1 = rgb2hsl_1;\n\n Color$w.prototype.hsl = function() {\n return rgb2hsl$1(this._rgb);\n };\n\n chroma$d.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$w, [ null ].concat( args, ['hsl']) ));\n };\n\n input$9.format.hsl = hsl2rgb_1;\n\n input$9.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'hsl');\n if (type$g(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$k = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$k(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv$1 = rgb2hsl;\n\n var unpack$j = utils.unpack;\n var floor$2 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$j(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$2(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$i = utils.unpack;\n var type$f = utils.type;\n var chroma$c = chroma_1;\n var Color$v = Color_1;\n var input$8 = input$h;\n\n var rgb2hsv = rgb2hsv$1;\n\n Color$v.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma$c.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$v, [ null ].concat( args, ['hsv']) ));\n };\n\n input$8.format.hsv = hsv2rgb_1;\n\n input$8.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$i(args, 'hsv');\n if (type$f(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var LAB_CONSTANTS$3 = labConstants;\n var unpack$h = utils.unpack;\n var pow$a = Math.pow;\n\n var rgb2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$h(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow$a((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > LAB_CONSTANTS$3.t3) { return pow$a(t, 1 / 3); }\n return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS$3.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab$2;\n\n var LAB_CONSTANTS$2 = labConstants;\n var unpack$g = utils.unpack;\n var pow$9 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = LAB_CONSTANTS$2.Yn * lab_xyz(y);\n x = LAB_CONSTANTS$2.Xn * lab_xyz(x);\n z = LAB_CONSTANTS$2.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0)\n };\n\n var lab2rgb_1 = lab2rgb$1;\n\n var unpack$f = utils.unpack;\n var type$e = utils.type;\n var chroma$b = chroma_1;\n var Color$u = Color_1;\n var input$7 = input$h;\n\n var rgb2lab$1 = rgb2lab_1;\n\n Color$u.prototype.lab = function() {\n return rgb2lab$1(this._rgb);\n };\n\n chroma$b.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$u, [ null ].concat( args, ['lab']) ));\n };\n\n input$7.format.lab = lab2rgb_1;\n\n input$7.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'lab');\n if (type$e(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$e = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$3 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var round$2 = Math.round;\n\n var lab2lch$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$e(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$3(a * a + b * b);\n var h = (atan2$2(b, a) * RAD2DEG + 360) % 360;\n if (round$2(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch$2;\n\n var unpack$d = utils.unpack;\n var rgb2lab = rgb2lab_1;\n var lab2lch$1 = lab2lch_1;\n\n var rgb2lch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch$1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch$1;\n\n var unpack$c = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin$3 = Math.sin;\n var cos$3 = Math.cos;\n\n var lch2lab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$c(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$3(h) * c, sin$3(h) * c]\n };\n\n var lch2lab_1 = lch2lab$2;\n\n var unpack$b = utils.unpack;\n var lch2lab$1 = lch2lab_1;\n var lab2rgb = lab2rgb_1;\n\n var lch2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab$1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb$1;\n\n var unpack$a = utils.unpack;\n var lch2rgb = lch2rgb_1;\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$a(args, 'hcl').reverse();\n return lch2rgb.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$9 = utils.unpack;\n var type$d = utils.type;\n var chroma$a = chroma_1;\n var Color$t = Color_1;\n var input$6 = input$h;\n\n var rgb2lch = rgb2lch_1;\n\n Color$t.prototype.lch = function() { return rgb2lch(this._rgb); };\n Color$t.prototype.hcl = function() { return rgb2lch(this._rgb).reverse(); };\n\n chroma$a.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['lch']) ));\n };\n chroma$a.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$t, [ null ].concat( args, ['hcl']) ));\n };\n\n input$6.format.lch = lch2rgb_1;\n input$6.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input$6.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$9(args, m);\n if (type$d(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11$1 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11$1;\n\n var Color$s = Color_1;\n var input$5 = input$h;\n var type$c = utils.type;\n\n var w3cx11 = w3cx11_1;\n var hex2rgb = hex2rgb_1;\n var rgb2hex = rgb2hex_1;\n\n Color$s.prototype.name = function() {\n var hex = rgb2hex(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input$5.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11[name]) { return hex2rgb(w3cx11[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input$5.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$c(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n var rgb2num$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$8(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num$1;\n\n var type$b = utils.type;\n\n var num2rgb = function (num) {\n if (type$b(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var chroma$9 = chroma_1;\n var Color$r = Color_1;\n var input$4 = input$h;\n var type$a = utils.type;\n\n var rgb2num = rgb2num_1;\n\n Color$r.prototype.num = function() {\n return rgb2num(this._rgb);\n };\n\n chroma$9.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$r, [ null ].concat( args, ['num']) ));\n };\n\n input$4.format.num = num2rgb_1;\n\n input$4.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$a(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var chroma$8 = chroma_1;\n var Color$q = Color_1;\n var input$3 = input$h;\n var unpack$7 = utils.unpack;\n var type$9 = utils.type;\n var round$1 = Math.round;\n\n Color$q.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$1);\n };\n\n Color$q.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$1(v)) : v;\n });\n };\n\n chroma$8.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$q, [ null ].concat( args, ['rgb']) ));\n };\n\n input$3.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$7(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input$3.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$7(args, 'rgba');\n if (type$9(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$9(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log$1 = Math.log;\n\n var temperature2rgb$1 = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log$1(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log$1(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log$1(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log$1(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb$1;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n var temperature2rgb = temperature2rgb_1;\n var unpack$6 = utils.unpack;\n var round = Math.round;\n\n var rgb2temperature$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$6(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature$1;\n\n var chroma$7 = chroma_1;\n var Color$p = Color_1;\n var input$2 = input$h;\n\n var rgb2temperature = rgb2temperature_1;\n\n Color$p.prototype.temp =\n Color$p.prototype.kelvin =\n Color$p.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n chroma$7.temp =\n chroma$7.kelvin =\n chroma$7.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$p, [ null ].concat( args, ['temp']) ));\n };\n\n input$2.format.temp =\n input$2.format.kelvin =\n input$2.format.temperature = temperature2rgb_1;\n\n var unpack$5 = utils.unpack;\n var cbrt = Math.cbrt;\n var pow$8 = Math.pow;\n var sign$1 = Math.sign;\n\n var rgb2oklab$2 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // OKLab color space implementation taken from\n // https://bottosson.github.io/posts/oklab/\n var ref = unpack$5(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)];\n var lr = ref$1[0];\n var lg = ref$1[1];\n var lb = ref$1[2];\n var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb);\n var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb);\n var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb);\n\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n };\n\n var rgb2oklab_1 = rgb2oklab$2;\n\n function rgb2lrgb(c) {\n var abs = Math.abs(c);\n if (abs < 0.04045) {\n return c / 12.92;\n }\n return (sign$1(c) || 1) * pow$8((abs + 0.055) / 1.055, 2.4);\n }\n\n var unpack$4 = utils.unpack;\n var pow$7 = Math.pow;\n var sign = Math.sign;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var oklab2rgb$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$4(args, 'lab');\n var L = args[0];\n var a = args[1];\n var b = args[2];\n\n var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3);\n var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3);\n var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3);\n\n return [\n 255 * lrgb2rgb(+4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),\n 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),\n 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),\n args.length > 3 ? args[3] : 1\n ];\n };\n\n var oklab2rgb_1 = oklab2rgb$1;\n\n function lrgb2rgb(c) {\n var abs = Math.abs(c);\n if (abs > 0.0031308) {\n return (sign(c) || 1) * (1.055 * pow$7(abs, 1 / 2.4) - 0.055);\n }\n return c * 12.92;\n }\n\n var unpack$3 = utils.unpack;\n var type$8 = utils.type;\n var chroma$6 = chroma_1;\n var Color$o = Color_1;\n var input$1 = input$h;\n\n var rgb2oklab$1 = rgb2oklab_1;\n\n Color$o.prototype.oklab = function () {\n return rgb2oklab$1(this._rgb);\n };\n\n chroma$6.oklab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$o, [ null ].concat( args, ['oklab']) ));\n };\n\n input$1.format.oklab = oklab2rgb_1;\n\n input$1.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'oklab');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n });\n\n var unpack$2 = utils.unpack;\n var rgb2oklab = rgb2oklab_1;\n var lab2lch = lab2lch_1;\n\n var rgb2oklch$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$2(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2oklab(r, g, b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch(l, a, b_);\n };\n\n var rgb2oklch_1 = rgb2oklch$1;\n\n var unpack$1 = utils.unpack;\n var lch2lab = lch2lab_1;\n var oklab2rgb = oklab2rgb_1;\n\n var oklch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$1(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab(l, c, h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = oklab2rgb(L, a, b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var oklch2rgb_1 = oklch2rgb;\n\n var unpack = utils.unpack;\n var type$7 = utils.type;\n var chroma$5 = chroma_1;\n var Color$n = Color_1;\n var input = input$h;\n\n var rgb2oklch = rgb2oklch_1;\n\n Color$n.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n };\n\n chroma$5.oklch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color$n, [ null ].concat( args, ['oklch']) ));\n };\n\n input.format.oklch = oklch2rgb_1;\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack(args, 'oklch');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n });\n\n var Color$m = Color_1;\n var type$6 = utils.type;\n\n Color$m.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$6(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n var Color$l = Color_1;\n\n Color$l.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n var Color$k = Color_1;\n var LAB_CONSTANTS$1 = labConstants;\n\n Color$k.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= LAB_CONSTANTS$1.Kn * amount;\n \treturn new Color$k(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color$k.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color$k.prototype.darker = Color$k.prototype.darken;\n Color$k.prototype.brighter = Color$k.prototype.brighten;\n\n var Color$j = Color_1;\n\n Color$j.prototype.get = function (mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$i = Color_1;\n var type$5 = utils.type;\n var pow$6 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color$i.prototype.luminance = function(lum) {\n if (lum !== undefined && type$5(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color$i([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color$i([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color$i([0,0,0]), this) : test(this, new Color$i([255,255,255]))).rgb();\n return new Color$i(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$6((x+0.055)/1.055, 2.4);\n };\n\n var interpolator$1 = {};\n\n var Color$h = Color_1;\n var type$4 = utils.type;\n var interpolator = interpolator$1;\n\n var mix$1 = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$4(col1) !== 'object') { col1 = new Color$h(col1); }\n if (type$4(col2) !== 'object') { col2 = new Color$h(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n var Color$g = Color_1;\n var mix = mix$1;\n\n Color$g.prototype.mix =\n Color$g.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n var Color$f = Color_1;\n\n Color$f.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color$f([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n var Color$e = Color_1;\n var LAB_CONSTANTS = labConstants;\n\n Color$e.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += LAB_CONSTANTS.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color$e(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color$e.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var Color$d = Color_1;\n var type$3 = utils.type;\n\n Color$d.prototype.set = function (mc, value, mutate) {\n if ( mutate === void 0 ) mutate = false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type$3(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type$3(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color$d(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var Color$c = Color_1;\n\n var rgb = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color$c(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.rgb = rgb;\n\n var Color$b = Color_1;\n var sqrt$2 = Math.sqrt;\n var pow$5 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color$b(\n sqrt$2(pow$5(x1,2) * (1-f) + pow$5(x2,2) * f),\n sqrt$2(pow$5(y1,2) * (1-f) + pow$5(y2,2) * f),\n sqrt$2(pow$5(z1,2) * (1-f) + pow$5(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator$1.lrgb = lrgb;\n\n var Color$a = Color_1;\n\n var lab = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color$a(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator$1.lab = lab;\n\n var Color$9 = Color_1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch' ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m);\n };\n\n var interpolate_hsx$5 = _hsx;\n\n var lch = function (col1, col2, f) {\n \treturn interpolate_hsx$5(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator$1.lch = lch;\n interpolator$1.hcl = lch;\n\n var Color$8 = Color_1;\n\n var num = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color$8(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator$1.num = num;\n\n var interpolate_hsx$4 = _hsx;\n\n var hcg = function (col1, col2, f) {\n \treturn interpolate_hsx$4(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator$1.hcg = hcg;\n\n var interpolate_hsx$3 = _hsx;\n\n var hsi = function (col1, col2, f) {\n \treturn interpolate_hsx$3(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator$1.hsi = hsi;\n\n var interpolate_hsx$2 = _hsx;\n\n var hsl = function (col1, col2, f) {\n \treturn interpolate_hsx$2(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator$1.hsl = hsl;\n\n var interpolate_hsx$1 = _hsx;\n\n var hsv = function (col1, col2, f) {\n \treturn interpolate_hsx$1(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator$1.hsv = hsv;\n\n var Color$7 = Color_1;\n\n var oklab = function (col1, col2, f) {\n var xyz0 = col1.oklab();\n var xyz1 = col2.oklab();\n return new Color$7(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n };\n\n // register interpolator\n interpolator$1.oklab = oklab;\n\n var interpolate_hsx = _hsx;\n\n var oklch = function (col1, col2, f) {\n return interpolate_hsx(col1, col2, f, 'oklch');\n };\n\n // register interpolator\n interpolator$1.oklch = oklch;\n\n var Color$6 = Color_1;\n var clip_rgb$1 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$1 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$2 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode, weights) {\n if ( mode === void 0 ) mode='lrgb';\n if ( weights === void 0 ) weights=null;\n\n var l = colors.length;\n if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n // normalize weights\n var k = l / weights.reduce(function(a, b) { return a + b; });\n weights.forEach(function (w,i) { weights[i] *= k; });\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color$6(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i<xyz.length; i++) {\n xyz[i] = (xyz[i] || 0) * weights[0];\n cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n var A = xyz[i] / 180 * PI$1;\n dx += cos$2(A) * weights[0];\n dy += sin$2(A) * weights[0];\n }\n }\n\n var alpha = first.alpha() * weights[0];\n colors.forEach(function (c,ci) {\n var xyz2 = c.get(mode);\n alpha += c.alpha() * weights[ci+1];\n for (var i=0; i<xyz.length; i++) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += weights[ci+1];\n if (mode.charAt(i) === 'h') {\n var A = xyz2[i] / 180 * PI$1;\n dx += cos$2(A) * weights[ci+1];\n dy += sin$2(A) * weights[ci+1];\n } else {\n xyz[i] += xyz2[i] * weights[ci+1];\n }\n }\n }\n });\n\n for (var i$1=0; i$1<xyz.length; i$1++) {\n if (mode.charAt(i$1) === 'h') {\n var A$1 = atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1 * 180;\n while (A$1 < 0) { A$1 += 360; }\n while (A$1 >= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color$6(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors, weights) {\n var l = colors.length;\n var xyz = [0,0,0,0];\n for (var i=0; i < colors.length; i++) {\n var col = colors[i];\n var f = weights[i] / l;\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$1(xyz[0]);\n xyz[1] = sqrt$1(xyz[1]);\n xyz[2] = sqrt$1(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color$6(clip_rgb$1(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n var chroma$4 = chroma_1;\n var type$2 = utils.type;\n\n var pow$3 = Math.pow;\n\n var scale$2 = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma$4('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$2(colors) === 'string' && chroma$4.brewer &&\n chroma$4.brewer[colors.toLowerCase()]) {\n colors = chroma$4.brewer[colors.toLowerCase()];\n }\n if (type$2(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c<colors.length; c++) {\n colors[c] = chroma$4(colors[c]);\n }\n // auto-fill color position\n _pos.length = 0;\n for (var c$1=0; c$1<colors.length; c$1++) {\n _pos.push(c$1/(colors.length-1));\n }\n }\n resetCache();\n return _colors = colors;\n };\n\n var getClass = function(value) {\n if (_classes != null) {\n var n = _classes.length-1;\n var i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tMapLightness = function (t) { return t; };\n var tMapDomain = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$3(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$2(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma$4.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$2(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma$4(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$2(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma$4.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma$4.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c<k; c++) {\n _pos.push(c/(k-1));\n }\n if (domain.length > 2) {\n // set domain map\n var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n tMapDomain = function (t) {\n if (t <= 0 || t >= 1) { return t; }\n var i = 0;\n while (t >= tBreaks[i+1]) { i++; }\n var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n return out;\n };\n }\n\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function(colors, _pos) {\n setColors(colors);\n return f;\n };\n\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function(v) {\n if (v == null) { v = true; }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function(t) {\n var L0 = getColor(0, true).lab()[0];\n var L1 = getColor(1, true).lab()[0];\n var pol = L0 > L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tMapLightness = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$2(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma$4[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma$4(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n var Color$5 = Color_1;\n\n var scale$1 = scale$2;\n\n // nth row of the pascal triangle\n var binom_row = function(n) {\n var row = [1, 1];\n for (var i = 1; i < n; i++) {\n var newrow = [1];\n for (var j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n };\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color$5(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color$5(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n var labs, row, n;\n labs = colors.map(function (c) { return c.lab(); });\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n var u = 1 - t;\n var lab = ([0, 1, 2].map(function (i) { return labs.reduce(function (sum, el, j) { return (sum + row[j] * Math.pow( u, (n - j) ) * Math.pow( t, j ) * el[i]); }, 0); }));\n return new Color$5(lab, 'lab');\n };\n } else {\n throw new RangeError(\"No point in running bezier with only one color.\")\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale$1(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n var chroma$3 = chroma_1;\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma$3(top).rgb();\n var c1 = chroma$3(bottom).rgb();\n return chroma$3.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$1 = utils.type;\n var clip_rgb = utils.clip_rgb;\n var TWOPI = utils.TWOPI;\n var pow$2 = Math.pow;\n var sin$1 = Math.sin;\n var cos$1 = Math.cos;\n var chroma$2 = chroma_1;\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$1(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI * (((start+120)/360) + (rotations * fract));\n var l = pow$2(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$1(a);\n var sin_a = sin$1(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma$2(clip_rgb([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$1(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$1(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma$2.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var Color$4 = Color_1;\n var digits = '0123456789abcdef';\n\n var floor$1 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$1(random() * 16));\n }\n return new Color$4(code, 'hex');\n };\n\n var type = type$p;\n var log = Math.log;\n var pow$1 = Math.pow;\n var floor = Math.floor;\n var abs$1 = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i<num; i++) {\n limits.push(min+((i/num)*(max-min)));\n }\n limits.push(max);\n }\n\n else if (mode.substr(0,1) === 'l') { // log scale\n if (min <= 0) {\n throw new Error('Logarithmic scales are only possible for values > 0');\n }\n var min_log = Math.LOG10E * log(min);\n var max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (var i$1=1; i$1<num; i$1++) {\n limits.push(pow$1(10, min_log + ((i$1/num) * (max_log - min_log))));\n }\n limits.push(max);\n }\n\n else if (mode.substr(0,1) === 'q') { // quantile scale\n limits.push(min);\n for (var i$2=1; i$2<num; i$2++) {\n var p = ((values.length-1) * i$2)/num;\n var pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else { // p > pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3<num; i$3++) {\n centroids.push(min + ((i$3/num) * (max-min)));\n }\n centroids.push(max);\n\n while (repeat) {\n // assignment step\n for (var j=0; j<num; j++) {\n clusterSizes[j] = 0;\n }\n for (var i$4=0; i$4<n; i$4++) {\n var value = values[i$4];\n var mindist = Number.MAX_VALUE;\n var best = (void 0);\n for (var j$1=0; j$1<num; j$1++) {\n var dist = abs$1(centroids[j$1]-value);\n if (dist < mindist) {\n mindist = dist;\n best = j$1;\n }\n clusterSizes[best]++;\n assignments[i$4] = best;\n }\n }\n\n // update centroids step\n var newCentroids = new Array(num);\n for (var j$2=0; j$2<num; j$2++) {\n newCentroids[j$2] = null;\n }\n for (var i$5=0; i$5<n; i$5++) {\n cluster = assignments[i$5];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i$5];\n } else {\n newCentroids[cluster] += values[i$5];\n }\n }\n for (var j$3=0; j$3<num; j$3++) {\n newCentroids[j$3] *= 1/clusterSizes[j$3];\n }\n\n // check convergence\n repeat = false;\n for (var j$4=0; j$4<num; j$4++) {\n if (newCentroids[j$4] !== centroids[j$4]) {\n repeat = true;\n break;\n }\n }\n\n centroids = newCentroids;\n nb_iters++;\n\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5<num; j$5++) {\n kClusters[j$5] = [];\n }\n for (var i$6=0; i$6<n; i$6++) {\n cluster = assignments[i$6];\n kClusters[cluster].push(values[i$6]);\n }\n var tmpKMeansBreaks = [];\n for (var j$6=0; j$6<num; j$6++) {\n tmpKMeansBreaks.push(kClusters[j$6][0]);\n tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length-1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a,b){ return a-b; });\n limits.push(tmpKMeansBreaks[0]);\n for (var i$7=1; i$7 < tmpKMeansBreaks.length; i$7+= 2) {\n var v = tmpKMeansBreaks[i$7];\n if (!isNaN(v) && (limits.indexOf(v) === -1)) {\n limits.push(v);\n }\n }\n }\n return limits;\n };\n\n var analyze_1 = {analyze: analyze, limits: limits};\n\n var Color$3 = Color_1;\n\n\n var contrast = function (a, b) {\n // WCAG contrast ratio\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n a = new Color$3(a);\n b = new Color$3(b);\n var l1 = a.luminance();\n var l2 = b.luminance();\n return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var Color$2 = Color_1;\n var sqrt = Math.sqrt;\n var pow = Math.pow;\n var min = Math.min;\n var max = Math.max;\n var atan2 = Math.atan2;\n var abs = Math.abs;\n var cos = Math.cos;\n var sin = Math.sin;\n var exp = Math.exp;\n var PI = Math.PI;\n\n var deltaE = function(a, b, Kl, Kc, Kh) {\n if ( Kl === void 0 ) Kl=1;\n if ( Kc === void 0 ) Kc=1;\n if ( Kh === void 0 ) Kh=1;\n\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function(rad) {\n return 360 * rad / (2 * PI);\n };\n var deg2rad = function(deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color$2(a);\n b = new Color$2(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var avgL = (L1 + L2)/2;\n var C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n var C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n var avgC = (C1 + C2)/2;\n var G = 0.5*(1-sqrt(pow(avgC, 7)/(pow(avgC, 7) + pow(25, 7))));\n var a1p = a1*(1+G);\n var a2p = a2*(1+G);\n var C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n var C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n var avgCp = (C1p + C2p)/2;\n var arctan1 = rad2deg(atan2(b1, a1p));\n var arctan2 = rad2deg(atan2(b2, a2p));\n var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360)/2 : (h1p + h2p)/2;\n var T = 1 - 0.17*cos(deg2rad(avgHp - 30)) + 0.24*cos(deg2rad(2*avgHp)) + 0.32*cos(deg2rad(3*avgHp + 6)) - 0.2*cos(deg2rad(4*avgHp - 63));\n var deltaHp = h2p - h1p;\n deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360;\n deltaHp = 2*sqrt(C1p*C2p)*sin(deg2rad(deltaHp)/2);\n var deltaL = L2 - L1;\n var deltaCp = C2p - C1p; \n var sl = 1 + (0.015*pow(avgL - 50, 2))/sqrt(20 + pow(avgL - 50, 2));\n var sc = 1 + 0.045*avgCp;\n var sh = 1 + 0.015*avgCp*T;\n var deltaTheta = 30*exp(-pow((avgHp - 275)/25, 2));\n var Rc = 2*sqrt(pow(avgCp, 7)/(pow(avgCp, 7) + pow(25, 7)));\n var Rt = -Rc*sin(2*deg2rad(deltaTheta));\n var result = sqrt(pow(deltaL/(Kl*sl), 2) + pow(deltaCp/(Kc*sc), 2) + pow(deltaHp/(Kh*sh), 2) + Rt*(deltaCp/(Kc*sc))*(deltaHp/(Kh*sh)));\n return max(0, min(100, result));\n };\n\n var Color$1 = Color_1;\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color$1(a);\n b = new Color$1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var Color = Color_1;\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n var chroma$1 = chroma_1;\n\n var scale = scale$2;\n\n var scales = {\n \tcool: function cool() { return scale([chroma$1.hsl(180,1,.9), chroma$1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) {\n var key = list[i];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n var chroma = chroma_1;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma.average = average;\n chroma.bezier = bezier_1;\n chroma.blend = blend_1;\n chroma.cubehelix = cubehelix;\n chroma.mix = chroma.interpolate = mix$1;\n chroma.random = random_1;\n chroma.scale = scale$2;\n\n // other utility methods\n chroma.analyze = analyze_1.analyze;\n chroma.contrast = contrast;\n chroma.deltaE = deltaE;\n chroma.distance = distance;\n chroma.limits = analyze_1.limits;\n chroma.valid = valid;\n\n // scale\n chroma.scales = scales;\n\n // colors\n chroma.colors = w3cx11_1;\n chroma.brewer = colorbrewer_1;\n\n var chroma_js = chroma;\n\n return chroma_js;\n\n}));\n","(function(context) {\n\n /**\n * Defines an available color.\n *\n * @typedef {Object} ColorSpec\n * @property {string=} name A name for the color, e.g., 'red'\n * @property {string} source The hex-based color string, e.g., '#FF0'\n * @property {RGB} rgb The {@link RGB} color values\n */\n\n /**\n * Describes a matched color.\n *\n * @typedef {Object} ColorMatch\n * @property {string} name The name of the matched color, e.g., 'red'\n * @property {string} value The hex-based color string, e.g., '#FF0'\n * @property {RGB} rgb The {@link RGB} color values.\n */\n\n /**\n * Provides the RGB breakdown of a color.\n *\n * @typedef {Object} RGB\n * @property {number} r The red component, from 0 to 255\n * @property {number} g The green component, from 0 to 255\n * @property {number} b The blue component, from 0 to 255\n */\n\n /**\n * Gets the nearest color, from the given list of {@link ColorSpec} objects\n * (which defaults to {@link nearestColor.DEFAULT_COLORS}).\n *\n * Probably you wouldn't call this method directly. Instead you'd get a custom\n * color matcher by calling {@link nearestColor.from}.\n *\n * @public\n * @param {RGB|string} needle Either an {@link RGB} color or a hex-based\n * string representing one, e.g., '#FF0'\n * @param {Array.<ColorSpec>=} colors An optional list of available colors\n * (defaults to {@link nearestColor.DEFAULT_COLORS})\n * @return {ColorMatch|string} If the colors in the provided list had names,\n * then a {@link ColorMatch} object with the name and (hex) value of the\n * nearest color from the list. Otherwise, simply the hex value.\n *\n * @example\n * nearestColor({ r: 200, g: 50, b: 50 }); // => '#f00'\n * nearestColor('#f11'); // => '#f00'\n * nearestColor('#f88'); // => '#f80'\n * nearestColor('#ffe'); // => '#ff0'\n * nearestColor('#efe'); // => '#ff0'\n * nearestColor('#abc'); // => '#808'\n * nearestColor('red'); // => '#f00'\n * nearestColor('foo'); // => throws\n */\n function nearestColor(needle, colors) {\n needle = parseColor(needle);\n\n if (!needle) {\n return null;\n }\n\n var distanceSq,\n minDistanceSq = Infinity,\n rgb,\n value;\n\n colors || (colors = nearestColor.DEFAULT_COLORS);\n\n for (var i = 0; i < colors.length; ++i) {\n rgb = colors[i].rgb;\n\n distanceSq = (\n Math.pow(needle.r - rgb.r, 2) +\n Math.pow(needle.g - rgb.g, 2) +\n Math.pow(needle.b - rgb.b, 2)\n );\n\n if (distanceSq < minDistanceSq) {\n minDistanceSq = distanceSq;\n value = colors[i];\n }\n }\n\n if (value.name) {\n return {\n name: value.name,\n value: value.source,\n rgb: value.rgb,\n distance: Math.sqrt(minDistanceSq)\n };\n }\n\n return value.source;\n }\n\n /**\n * Provides a matcher to find the nearest color based on the provided list of\n * available colors.\n *\n * @public\n * @param {Array.<string>|Object} availableColors An array of hex-based color\n * strings, or an object mapping color *names* to hex values.\n * @return {function(string):ColorMatch|string} A function with the same\n * behavior as {@link nearestColor}, but with the list of colors\n * predefined.\n *\n * @example\n * var colors = {\n * 'maroon': '#800',\n * 'light yellow': { r: 255, g: 255, b: 51 },\n * 'pale blue': '#def',\n * 'white': 'fff'\n * };\n *\n * var bgColors = [\n * '#eee',\n * '#444'\n * ];\n *\n * var invalidColors = {\n * 'invalid': 'foo'\n * };\n *\n * var getColor = nearestColor.from(colors);\n * var getBGColor = getColor.from(bgColors);\n * var getAnyColor = nearestColor.from(colors).or(bgColors);\n *\n * getColor('ffe');\n * // => { name: 'white', value: 'fff', rgb: { r: 255, g: 255, b: 255 }, distance: 17}\n *\n * getColor('#f00');\n * // => { name: 'maroon', value: '#800', rgb: { r: 136, g: 0, b: 0 }, distance: 119}\n *\n * getColor('#ff0');\n * // => { name: 'light yellow', value: '#ffff33', rgb: { r: 255, g: 255, b: 51 }, distance: 51}\n *\n * getBGColor('#fff'); // => '#eee'\n * getBGColor('#000'); // => '#444'\n *\n * getAnyColor('#f00');\n * // => { name: 'maroon', value: '#800', rgb: { r: 136, g: 0, b: 0 }, distance: 119}\n *\n * getAnyColor('#888'); // => '#444'\n *\n * nearestColor.from(invalidColors); // => throws\n */\n nearestColor.from = function from(availableColors) {\n var colors = mapColors(availableColors),\n nearestColorBase = nearestColor;\n\n var matcher = function nearestColor(hex) {\n return nearestColorBase(hex, colors);\n };\n\n // Keep the 'from' method, to support changing the list of available colors\n // multiple times without needing to keep a reference to the original\n // nearestColor function.\n matcher.from = from;\n\n // Also provide a way to combine multiple color lists.\n matcher.or = function or(alternateColors) {\n var extendedColors = colors.concat(mapColors(alternateColors));\n return nearestColor.from(extendedColors);\n };\n\n return matcher;\n };\n\n /**\n * Given either an array or object of colors, returns an array of\n * {@link ColorSpec} objects (with {@link RGB} values).\n *\n * @private\n * @param {Array.<string>|Object} colors An array of hex-based color strings, or\n * an object mapping color *names* to hex values.\n * @return {Array.<ColorSpec>} An array of {@link ColorSpec} objects\n * representing the same colors passed in.\n */\n function mapColors(colors) {\n if (colors instanceof Array) {\n return colors.map(function(color) {\n return createColorSpec(color);\n });\n }\n\n return Object.keys(colors).map(function(name) {\n return createColorSpec(colors[name], name);\n });\n };\n\n /**\n * Parses a color from a string.\n *\n * @private\n * @param {RGB|string} source\n * @return {RGB}\n *\n * @example\n * parseColor({ r: 3, g: 22, b: 111 }); // => { r: 3, g: 22, b: 111 }\n * parseColor('#f00'); // => { r: 255, g: 0, b: 0 }\n * parseColor('#04fbc8'); // => { r: 4, g: 251, b: 200 }\n * parseColor('#FF0'); // => { r: 255, g: 255, b: 0 }\n * parseColor('rgb(3, 10, 100)'); // => { r: 3, g: 10, b: 100 }\n * parseColor('rgb(50%, 0%, 50%)'); // => { r: 128, g: 0, b: 128 }\n * parseColor('aqua'); // => { r: 0, g: 255, b: 255 }\n * parseColor('fff'); // => { r: 255, g: 255, b: 255 }\n * parseColor('foo'); // => throws\n */\n function parseColor(source) {\n var red, green, blue;\n\n if (typeof source === 'object') {\n return source;\n }\n\n if (source in nearestColor.STANDARD_COLORS) {\n return parseColor(nearestColor.STANDARD_COLORS[source]);\n }\n\n var hexMatch = source.match(/^#?((?:[0-9a-f]{3}){1,2})$/i);\n if (hexMatch) {\n hexMatch = hexMatch[1];\n\n if (hexMatch.length === 3) {\n hexMatch = [\n hexMatch.charAt(0) + hexMatch.charAt(0),\n hexMatch.charAt(1) + hexMatch.charAt(1),\n hexMatch.charAt(2) + hexMatch.charAt(2)\n ];\n\n } else {\n hexMatch = [\n hexMatch.substring(0, 2),\n hexMatch.substring(2, 4),\n hexMatch.substring(4, 6)\n ];\n }\n\n red = parseInt(hexMatch[0], 16);\n green = parseInt(hexMatch[1], 16);\n blue = parseInt(hexMatch[2], 16);\n\n return { r: red, g: green, b: blue };\n }\n\n var rgbMatch = source.match(/^rgb\\(\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\s*\\)$/i);\n if (rgbMatch) {\n red = parseComponentValue(rgbMatch[1]);\n green = parseComponentValue(rgbMatch[2]);\n blue = parseComponentValue(rgbMatch[3]);\n\n return { r: red, g: green, b: blue };\n }\n\n throw Error('\"' + source + '\" is not a valid color');\n }\n\n /**\n * Creates a {@link ColorSpec} from either a string or an {@link RGB}.\n *\n * @private\n * @param {string|RGB} input\n * @param {string=} name\n * @return {ColorSpec}\n *\n * @example\n * createColorSpec('#800'); // => {\n * source: '#800',\n * rgb: { r: 136, g: 0, b: 0 }\n * }\n *\n * createColorSpec('#800', 'maroon'); // => {\n * name: 'maroon',\n * source: '#800',\n * rgb: { r: 136, g: 0, b: 0 }\n * }\n */\n function createColorSpec(input, name) {\n var color = {};\n\n if (name) {\n color.name = name;\n }\n\n if (typeof input === 'string') {\n color.source = input;\n color.rgb = parseColor(input);\n\n } else if (typeof input === 'object') {\n // This is for if/when we're concatenating lists of colors.\n if (input.source) {\n return createColorSpec(input.source, input.name);\n }\n\n color.rgb = input;\n color.source = rgbToHex(input);\n }\n\n return color;\n }\n\n /**\n * Parses a value between 0-255 from a string.\n *\n * @private\n * @param {string} string\n * @return {number}\n *\n * @example\n * parseComponentValue('100'); // => 100\n * parseComponentValue('100%'); // => 255\n * parseComponentValue('50%'); // => 128\n */\n function parseComponentValue(string) {\n if (string.charAt(string.length - 1) === '%') {\n return Math.round(parseInt(string, 10) * 255 / 100);\n }\n\n return Number(string);\n }\n\n /**\n * Converts an {@link RGB} color to its hex representation.\n *\n * @private\n * @param {RGB} rgb\n * @return {string}\n *\n * @example\n * rgbToHex({ r: 255, g: 128, b: 0 }); // => '#ff8000'\n */\n function rgbToHex(rgb) {\n return '#' + leadingZero(rgb.r.toString(16)) +\n leadingZero(rgb.g.toString(16)) + leadingZero(rgb.b.toString(16));\n }\n\n /**\n * Puts a 0 in front of a numeric string if it's only one digit. Otherwise\n * nothing (just returns the value passed in).\n *\n * @private\n * @param {string} value\n * @return\n *\n * @example\n * leadingZero('1'); // => '01'\n * leadingZero('12'); // => '12'\n */\n function leadingZero(value) {\n if (value.length === 1) {\n value = '0' + value;\n }\n return value;\n }\n\n /**\n * A map from the names of standard CSS colors to their hex values.\n */\n nearestColor.STANDARD_COLORS = {\n aqua: '#0ff',\n black: '#000',\n blue: '#00f',\n fuchsia: '#f0f',\n gray: '#808080',\n green: '#008000',\n lime: '#0f0',\n maroon: '#800000',\n navy: '#000080',\n olive: '#808000',\n orange: '#ffa500',\n purple: '#800080',\n red: '#f00',\n silver: '#c0c0c0',\n teal: '#008080',\n white: '#fff',\n yellow: '#ff0'\n };\n\n /**\n * Default colors. Comprises the colors of the rainbow (good ol' ROY G. BIV).\n * This list will be used for calls to {@nearestColor} that don't specify a list\n * of available colors to match.\n */\n nearestColor.DEFAULT_COLORS = mapColors([\n '#f00', // r\n '#f80', // o\n '#ff0', // y\n '#0f0', // g\n '#00f', // b\n '#008', // i\n '#808' // v\n ]);\n\n nearestColor.VERSION = '0.4.4';\n\n if (typeof module === 'object' && module && module.exports) {\n module.exports = nearestColor;\n } else {\n context.nearestColor = nearestColor;\n }\n\n}(this));\n","import { MoebiusColorValueHexType } from '../types';\nimport { pieSlice } from '../utils/svg/pie-slice';\nimport { uniqueID } from '../utils/unique-id';\nimport { getStartMaskDegree } from '../utils/svg/get-start-mask-degree';\n\n/**\n * Helper class for generating SVG paths for colored pie slices.\n */\nexport class MoebiusSVGHelper {\n xlmns = 'http://www.w3.org/2000/svg';\n\n /**\n * Gets SVG paths for colored pie slices based on the provided colors.\n * @param {MoebiusColorValueHexType[][]} colors - Array of color groups.\n * @param {number} [size=256] - Size of the SVG.\n * @returns {DocumentFragment} - Document fragment containing the SVG paths.\n * @example\n * ```ts\n * const svgHelper = new MoebiusSVGHelper();\n * const colors = [['#ff0000', '#00ff00'], ['#0000ff']];\n * const svgFragment = svgHelper.getColorPiePaths(colors, 256);\n * document.body.appendChild(svgFragment);\n * ```\n */\n getColorPiePaths(colors: MoebiusColorValueHexType[][], size = 256) {\n const df = document.createDocumentFragment();\n const defsElement = document.createElementNS(this.xlmns, 'defs');\n const maskElement = document.createElementNS(this.xlmns, 'mask');\n const rectElement = document.createElementNS(this.xlmns, 'rect');\n const gElement = document.createElementNS(this.xlmns, 'g');\n const interval = 360 / colors.length;\n const id = uniqueID();\n\n maskElement.setAttributeNS(null, 'id', id);\n rectElement.setAttributeNS(null, 'height', '100%');\n rectElement.setAttributeNS(null, 'width', '100%');\n rectElement.setAttributeNS(null, 'fill', 'white');\n gElement.setAttributeNS(null, 'mask', `url(#${id})`);\n maskElement.appendChild(rectElement);\n\n const maskDegrees = 360 / colors.length;\n const startMaskDegree = getStartMaskDegree(maskDegrees / 2, colors.length);\n\n for (let i = startMaskDegree; i < 360; i += maskDegrees) {\n const lineElement = document.createElementNS(this.xlmns, 'line');\n\n lineElement.setAttributeNS(null, 'x1', '128');\n lineElement.setAttributeNS(null, 'y1', '128');\n lineElement.setAttributeNS(null, 'x2', '0');\n lineElement.setAttributeNS(null, 'y2', '128');\n lineElement.setAttributeNS(null, 'stroke', 'black');\n lineElement.setAttributeNS(null, 'stroke-width', '6');\n lineElement.setAttributeNS(null, 'transform', `rotate(${i} 128 128)`);\n maskElement.appendChild(lineElement);\n }\n\n let start = 0;\n\n colors.forEach((group: string[]) => {\n const inwardInterval = size / 2 / group.length;\n\n start += interval;\n\n return group.forEach((color: MoebiusColorValueHexType, index: number) => {\n const r = size / 2 - index * inwardInterval;\n const path = document.createElementNS(this.xlmns, 'path');\n\n path.setAttributeNS(null, 'fill', color);\n path.setAttributeNS(null, 'data-color-hex', color);\n path.setAttributeNS(null, 'data-r', `${r}`);\n path.setAttributeNS(null, 'd', pieSlice(start, interval, r));\n gElement.appendChild(path);\n });\n });\n defsElement.appendChild(maskElement);\n df.appendChild(defsElement);\n df.appendChild(gElement);\n\n return df;\n }\n}\n","/**\n * Generates a unique identifier.\n * @returns {string} - A unique identifier.\n * @example\n * ```ts\n * const id = uniqueID();\n * console.log(id); // \"_abc123\"\n * ```\n */\nexport const uniqueID = (): string =>\n '_' + Math.random().toString(36).substring(2, 11);\n","/**\n * Calculates the starting mask degree based on the number of elements in a color group.\n *\n * @param {number} initial - The initial starting degree.\n * @param {number} length - The number of elements in the color group.\n * @returns {number} - The adjusted starting degree for creating a color mask.\n */\nexport const getStartMaskDegree = (initial: number, length: number): number => {\n if (length === 4 || length === 8 || length === 12) {\n return 0;\n } else if (length === 3 || length === 9) {\n return 30;\n } else if (length === 7) {\n return 12;\n } else if (length === 5) {\n return 55;\n }\n\n return initial;\n};\n","/**\n * Generates an SVG path representing a pie slice.\n *\n * @param {number} start - Starting angle of the pie slice in degrees.\n * @param {number} interval - Angular interval of the pie slice in degrees.\n * @param {number} radius - Radius of the circle.\n * @param {number} size - Size of the circle. Default is 256.\n * @returns {string} - SVG path representing the pie slice.\n */\nexport const pieSlice = (\n start: number,\n interval: number,\n radius: number,\n size = 256\n) => {\n const centerX = size / 2; // X-coordinate of the circle's center\n const centerY = centerX; // Y-coordinate of the circle's center\n\n let stop = start + interval;\n\n // Ensure start is smaller than stop\n if (start > stop) {\n const temp = start;\n\n start = stop;\n stop = temp;\n }\n\n // Calculate start and end points\n const startX = centerX + radius * Math.cos((-start + 90) * (Math.PI / 180));\n const startY = centerY + radius * Math.sin((-start + 90) * (Math.PI / 180));\n const endX = centerX + radius * Math.cos((-stop + 90) * (Math.PI / 180));\n const endY = centerY + radius * Math.sin((-stop + 90) * (Math.PI / 180));\n const largeArcFlag = stop - start <= 180 ? '0' : '1';\n\n // Create the SVG path\n return `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArcFlag} 0 ${endX} ${endY} L ${centerX} ${centerY} Z`;\n};\n","import { MoebiusPaletteDefaultOptionsType } from '../types';\n\n/**\n * Default options for the Moebius Palette.\n *\n * @type {MoebiusPaletteDefaultOptionsType}\n * @readonly\n *\n * @example\n * ```ts\n * console.log(MOEBIUS_PALETTE_DEFAULT_OPTIONS);\n * // {\n * // diverging: false,\n * // bezier: false,\n * // randomOffset: false,\n * // correctLightness: false,\n * // noDuplicates: true,\n * // colorScaleMode: 'lch',\n * // reverseDirection: false\n * // }\n * ```\n */\nexport const MOEBIUS_PALETTE_DEFAULT_OPTIONS: MoebiusPaletteDefaultOptionsType =\n {\n diverging: false,\n bezier: false,\n randomOffset: false,\n correctLightness: false,\n noDuplicates: true,\n colorScaleMode: 'lch',\n reverseDirection: false\n };\n","import {\n MoebiusColorValueHexType,\n MoebiusPaletteColorsInterface\n} from '../types';\n\n/**\n * Class representing a set of colors in various palettes.\n */\nexport class MoebiusPaletteColors implements MoebiusPaletteColorsInterface {\n interpolate: MoebiusColorValueHexType[];\n luminanceShift: MoebiusColorValueHexType[];\n monochromatic: MoebiusColorValueHexType[];\n complement: MoebiusColorValueHexType[];\n split: MoebiusColorValueHexType[];\n triadic: MoebiusColorValueHexType[];\n tetradic: MoebiusColorValueHexType[];\n pentadic: MoebiusColorValueHexType[];\n hexadic: MoebiusColorValueHexType[];\n analogous: MoebiusColorValueHexType[];\n\n /**\n * Creates an instance of MoebiusPaletteColors.\n * @param {MoebiusPaletteColorsInterface} colors - Palette colors to initialize with.\n * @example\n * ```ts\n * const colors = {\n * interpolate: ['#ff0000', '#00ff00'],\n * // other palettes...\n * };\n * const palette = new MoebiusPaletteColors(colors);\n * ```\n */\n constructor(colors: MoebiusPaletteColorsInterface) {\n Object.keys(colors).forEach((palette) => {\n this[palette] = colors[palette];\n });\n }\n\n /**\n * Converts the palettes to a flat array.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values.\n * @example\n * ```ts\n * const palette = new MoebiusPaletteColors({ interpolate: ['#ff0000', '#00ff00'] });\n * const flatArray = palette.toArray();\n * console.log(flatArray); // ['#ff0000', '#00ff00']\n * ```\n */\n toArray(): MoebiusColorValueHexType[] {\n return [\n ...this.interpolate,\n ...this.luminanceShift,\n ...this.monochromatic,\n ...this.complement,\n ...this.split,\n ...this.triadic,\n ...this.tetradic,\n ...this.pentadic,\n ...this.hexadic,\n ...this.analogous\n ].flat();\n }\n}\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Generate a harmonized color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the harmonized palette.\n * @param {number} start - The starting angle for generating harmonized colors (degrees).\n * @param {number} end - The ending angle for generating harmonized colors (degrees).\n * @param {number} interval - The interval between harmonized colors (degrees).\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.noDuplicates=true] - Whether to remove duplicate colors in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the harmonized palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const harmonizedPalette = harmonize(baseColor, 30, 210, 30, { noDuplicates: true });\n * console.log(harmonizedPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#3498db']\n * ```\n */\nexport const harmonize = (\n color: MoebiusChromaColorInputType,\n start: number,\n end: number,\n interval: number,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const { noDuplicates = true } = options;\n // Initialize the array with the base color.\n const colors = [chroma(color).hex()];\n\n // Convert the HSL color to an object for easy manipulation.\n let [h, s, l] = chroma(color).hsl();\n\n if (isNaN(h)) {\n h = 0;\n }\n\n s = Number((s * 100).toFixed());\n l = Number((l * 100).toFixed());\n\n // Generate harmonized colors within the specified range.\n for (let i = start; i <= end; i += interval) {\n // Calculate the adjusted hue.\n const h1 = Number(((h + i) % 360).toFixed());\n\n // Create the harmonized color in HSL format and add it to the array.\n colors.push(chroma(`hsl(${h1}, ${s}%, ${l}%)`).hex());\n }\n\n let uniqueColors = colors;\n\n if (noDuplicates) {\n uniqueColors = [...new Set(colors)];\n }\n\n return uniqueColors;\n};\n","/**\n * Generates a random integer within a specified range.\n *\n * @param {number} max - The maximum value (inclusive) for the random number.\n * @param {number} min - The minimum value (inclusive) for the random number.\n * @returns {number} - A random integer within the specified range.\n *\n * @example\n * ```ts\n * // Generate a random integer between 1 and 10, inclusive\n * const randomNumber = random(10, 1);\n * console.log(randomNumber); // Example output: 5\n * ```\n */\nexport const random = (max: number, min: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n","import chroma from 'chroma-js';\n\nimport { random } from '../utils/random';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusColorValueHslType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Generates a monochromatic color palette based on the given color.\n * @param {MoebiusChromaColorInputType} color - The base color for the palette.\n * @param {MoebiusPaletteOptionsType} options - Options for generating the palette.\n * @returns {MoebiusColorValueHexType[]} - An array of hex color values in the palette.\n * @example\n * ```typescript\n * const baseColor = '#003f5c';\n * const options = { numberOfColors: 5, bezier: true, randomOffset: false };\n * const monochromaticPalette = monochromatic(baseColor, options);\n * console.log(monochromaticPalette);\n * [\n * '#003f5c', // maniacMansion,\n * '#014268', // darkImperialBlue,\n * '#024575', // macraggeBlue,\n * '#044784', // bridgeport,\n * '#064898', // frightNight,\n * '#0745b6', // absoluteZero,\n * '#002df5', // blueBouquet\n * ];\n * ```\n */\nexport const monochromatic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n bezier = false,\n randomOffset = false,\n colorScaleMode,\n noDuplicates = true,\n reverseDirection = false,\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n let [h, s, l] = chroma(color).hsl();\n\n if (isNaN(h)) {\n h = 0;\n }\n\n h = Number(h.toFixed(0));\n s = Number((s * 100).toFixed(0));\n l = Number((l * 100).toFixed(0));\n\n const hslColors: MoebiusColorValueHslType[] = [];\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n\n if (randomOffset) {\n // because we've already added the original color, we start counting from 1\n for (let i = 1; i < numberOfColors; i++) {\n if (reverseDirection) {\n l += random(0, 10);\n h += random(-5, 5);\n } else {\n l -= random(0, 10);\n h -= random(-5, 5);\n }\n\n if (h > 359) h = 359;\n\n if (h < 0) h = 0;\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n }\n } else {\n for (let i = 1; i < numberOfColors; i++) {\n if (reverseDirection) {\n l += 5;\n h += 5;\n } else {\n l -= 5;\n h -= 5;\n }\n\n if (h > 359) h = 359;\n\n if (h < 0) h = 0;\n\n hslColors.push(chroma(`hsl(${h}, ${s}%, ${l < 0 ? 0 : l}%)`).hex());\n }\n }\n\n let colors = hslColors.map((color) => chroma(color).hex());\n\n if (noDuplicates) {\n colors = [...new Set(colors)];\n }\n\n if (bezier) {\n if (colors.length > 1) {\n colors = chroma\n .bezier(colors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n } else {\n colors = chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n }\n }\n\n return colors;\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType,\n MoebiusChromaColorInputType\n} from '../types';\nimport { harmonize } from './harmonize';\nimport { range } from '../utils/range';\n\n/**\n * Generate a luminance shift palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the luminance shift palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {number} [options.numberOfColors=7] - The number of colors in the luminance shift palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n * @private\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const luminanceShiftPalette = generateLuminanceShiftPalette(baseColor, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nconst generateLuminanceShiftPalette = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n) => {\n if (!color) throw new Error('MoebiusPalettes: missing input `color`');\n\n const { diverging = false, numberOfColors = 7 } =\n options as MoebiusPaletteOptionsType;\n const [l, a, b] = chroma(color).lab();\n const lRange = 100 * (0.95 - 1 / numberOfColors);\n const lStep = lRange / (numberOfColors - 1);\n const lStart = (100 - lRange) * 0.5;\n const colorRange = range(lStart, lStart + numberOfColors * lStep, lStep);\n\n let offset = 0;\n\n if (!diverging) {\n offset = 9999;\n for (let i = 0; i < numberOfColors; i++) {\n const diff = l - colorRange[i];\n\n if (Math.abs(diff) < Math.abs(offset)) {\n offset = diff;\n }\n }\n }\n\n return colorRange.map((l) => chroma.lab([l + offset, a, b]).hex());\n};\n/**\n * Generate an array of auto colors for luminance shift based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating auto colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the auto colors.\n * @param {number} [options.numberOfColors] - The number of auto colors to generate.\n * @param {boolean} [options.reverseDirection=false] - Whether to reverse the order of generated colors.\n * @param {boolean} [options.diverging=false] - Whether to generate diverging auto colors.\n * @param {string} [options.divergentColor] - The divergent color to include in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the auto colors.\n * @private\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const autoColors = luminanceShiftAutoColors(baseColor, { numberOfColors: 5 });\n * console.log(autoColors); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nconst luminanceShiftAutoColors = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n) => {\n const {\n numberOfColors,\n reverseDirection = false,\n diverging = false,\n divergentColor\n } = options;\n\n if (diverging) {\n const colors = generateLuminanceShiftPalette(chroma(color).hex(), {\n numberOfColors: Math.ceil((numberOfColors as number) / 2)\n }).concat(divergentColor);\n\n if (reverseDirection) colors.reverse();\n\n return colors;\n } else {\n return generateLuminanceShiftPalette(color, { numberOfColors });\n }\n};\n\n/**\n * Generate a luminance shift palette based on an array of colors, with optional diverging colors.\n *\n * @param {MoebiusChromaColorInputType[]} colors - Array of base colors for generating the luminance shift palette.\n * @param {MoebiusChromaColorInputType[]} [divergingColors=[]] - Array of diverging colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The total number of colors in the luminance shift palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {string} [options.divergentColor='#f5f5f5'] - The divergent color for a diverging palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n *\n * @example\n * ```ts\n * const baseColors = ['#3498db', '#99db34'];\n * const divergingColors = ['#db3434'];\n * const luminanceShiftPalette = luminanceShift(baseColors, divergingColors, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nexport const luminanceShift = (\n colors: MoebiusChromaColorInputType[],\n divergingColors: MoebiusChromaColorInputType[] = [],\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n diverging = false,\n colorScaleMode,\n bezier = false,\n divergentColor = '#f5f5f5',\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n divergingColors =\n divergingColors.length === 0\n ? [harmonize(colors[0], 90, 270, 90)[3]]\n : divergingColors;\n\n const even = numberOfColors % 2 === 0;\n const numberOfColorsLeft = diverging\n ? Math.ceil(numberOfColors / 2) + (even ? 1 : 0)\n : numberOfColors;\n const numberOfColorsRight = diverging\n ? Math.ceil(numberOfColors / 2) + (even ? 1 : 0)\n : 0;\n const generatedColors =\n colors.length !== 1\n ? colors\n : luminanceShiftAutoColors(colors[0], {\n numberOfColors: numberOfColorsLeft,\n divergentColor\n });\n\n let generatedDivergentColors: string[] = [];\n\n if (diverging) {\n generatedDivergentColors =\n divergingColors.length !== 1\n ? divergingColors\n : luminanceShiftAutoColors(divergingColors[0], {\n numberOfColors: numberOfColorsRight,\n divergentColor,\n reverse: false,\n diverging\n });\n }\n\n let stepsLeft = colors.length\n ? chroma\n .scale(generatedColors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsLeft)\n : [];\n\n if (bezier) {\n stepsLeft = colors.length\n ? chroma\n .bezier(generatedColors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsLeft)\n : [];\n }\n\n let stepsRight =\n diverging && divergingColors.length\n ? chroma\n .scale(generatedDivergentColors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsRight)\n : [];\n\n if (bezier) {\n stepsRight =\n diverging && divergingColors.length\n ? chroma\n .bezier(generatedDivergentColors)\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColorsRight)\n : [];\n }\n\n let steps = stepsLeft;\n\n steps = (\n diverging\n ? stepsLeft.slice(\n 0,\n stepsLeft.length - (numberOfColorsLeft % 2 !== 0 ? 0 : 1)\n )\n : stepsLeft\n )\n //).concat(stepsRight.slice(1).reverse());\n .concat(stepsRight.reverse());\n\n return steps;\n};\n","/**\n * Generates an array of numbers within a specified range with a given interval.\n * @param {number} start - The starting value of the range.\n * @param {number} stop - The stopping value of the range.\n * @param {number} interval - The interval between numbers in the range.\n * @returns {number[]} - An array of numbers in the specified range.\n * @example\n * ```ts\n * const result = range(1, 10, 2);\n * console.log(result); // [1, 3, 5, 7, 9]\n * ```\n */\nexport const range = (\n start: number,\n stop: number,\n interval: number\n): number[] => {\n const a: number[] = [];\n\n for (let i = start; i < stop; i += interval) {\n a.push(i);\n }\n\n return a;\n};\n","import { monochromatic } from '../features';\nimport {\n MoebiusColorValueHexType,\n MoebiusPaletteAccentColorsInterface,\n MoebiusPaletteColorsInterface,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Class representing a set of accent colors in various palettes.\n */\nexport class MoebiusAccentColors\nimplements MoebiusPaletteAccentColorsInterface\n{\n interpolate: MoebiusColorValueHexType[][];\n luminanceShift: MoebiusColorValueHexType[][];\n monochromatic: MoebiusColorValueHexType[][];\n complement: MoebiusColorValueHexType[][];\n split: MoebiusColorValueHexType[][];\n triadic: MoebiusColorValueHexType[][];\n tetradic: MoebiusColorValueHexType[][];\n pentadic: MoebiusColorValueHexType[][];\n hexadic: MoebiusColorValueHexType[][];\n analogous: MoebiusColorValueHexType[][];\n\n /**\n * Creates an instance of MoebiusAccentColors.\n * @param {MoebiusPaletteColorsInterface} colors - Base colors for accent palettes.\n * @param {MoebiusPaletteOptionsType} options - Options for generating accent palettes.\n * @example\n * ```ts\n * const colors = {\n * monochromatic: ['#ff0000', '#00ff00'],\n * // other base palettes...\n * };\n * const options = { baseColor: { color: '#ff0000', name: 'Red', hex: '#ff0000' }, numberOfColors: 9 };\n * const accentColors = new MoebiusAccentColors(colors, options);\n * ```\n */\n constructor(\n colors: MoebiusPaletteColorsInterface,\n options: MoebiusPaletteOptionsType\n ) {\n Object.keys(colors).forEach((palette) => {\n this[palette] = colors[palette].map((color: MoebiusColorValueHexType) =>\n monochromatic(color, { ...options, numberOfColors: 9 })\n );\n });\n }\n /**\n * Converts the accent palettes to a flat array.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values.\n * @example\n * ```ts\n * const accentColors = new MoebiusAccentColors(baseColors, options);\n * const flatArray = accentColors.toArray();\n * console.log(flatArray); // ['#ff0000', '#00ff00', ...]\n * ```\n */\n toArray(): MoebiusColorValueHexType[] {\n return [\n ...this.interpolate,\n ...this.luminanceShift,\n ...this.monochromatic,\n ...this.complement,\n ...this.split,\n ...this.triadic,\n ...this.tetradic,\n ...this.pentadic,\n ...this.hexadic,\n ...this.analogous\n ].flat();\n }\n}\n","import { MOEBIUS_PALETTE_DEFAULT_OPTIONS } from '../constants';\nimport {\n MoebiusColorValueHexType,\n MoebiusColorInterface,\n MoebiusPaletteAccentColorsInterface,\n MoebiusPaletteColorsInterface,\n MoebiusPaletteDefaultOptionsType,\n MoebiusPaletteOptionsType,\n MoebiusPaletteInterface\n} from '../types';\n\nimport { MoebiusPaletteColors } from './MoebiusPaletteColors';\nimport { MoebiusAccentColors } from './MoebiusAccentColors';\nimport * as FEATURES from '../features';\n\n/**\n * MoebiusPalettes class representing a set of color palettes and their variations.\n * @class\n */\nexport class MoebiusPalettes implements MoebiusPaletteInterface {\n baseColor: MoebiusColorInterface;\n secondaryColor: MoebiusColorInterface;\n colors: Record<string, unknown> | MoebiusPaletteColorsInterface = {};\n defaultOptions: MoebiusPaletteDefaultOptionsType = {\n ...MOEBIUS_PALETTE_DEFAULT_OPTIONS,\n divergentColor: '#f5f5f5'\n };\n options: MoebiusPaletteOptionsType;\n all: MoebiusColorValueHexType[] = [];\n accents: MoebiusPaletteAccentColorsInterface;\n\n /**\n * Creates an instance of MoebiusPalettes.\n * @param {MoebiusPaletteOptionsType} options - Options for configuring the palettes.\n */\n constructor(options: MoebiusPaletteOptionsType) {\n this.options = { ...this.defaultOptions, ...options };\n this.baseColor = this.options.baseColor;\n this.secondaryColor = this.options.secondaryColor;\n\n this.colors = new MoebiusPaletteColors({\n interpolate: this.interpolate(\n this.baseColor.hex,\n this.secondaryColor.hex,\n this.options\n ),\n luminanceShift: this.luminanceShift(\n [this.baseColor.hex],\n [this.secondaryColor.hex],\n this.options\n ),\n monochromatic: this.monochromatic(this.baseColor.hex),\n complement: this.complement(this.baseColor.hex),\n split: this.split(this.baseColor.hex),\n triadic: this.triadic(this.baseColor.hex),\n tetradic: this.tetradic(this.baseColor.hex),\n pentadic: this.pentadic(this.baseColor.hex),\n hexadic: this.hexadic(this.baseColor.hex),\n analogous: this.analogous(this.baseColor.hex)\n });\n\n this.accents = new MoebiusAccentColors(this.colors, this.options);\n\n this.all = [\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(this.accents as any).toArray(),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(this.colors as any).toArray()\n ].flat();\n }\n\n /**\n * Generate a complement color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the complement palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the complement palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the complement palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const complementPalette = complement(baseColor, { numberOfColors: 5 });\n * console.log(complementPalette); // ['#3498db', '#db3434', '#75db34', '#dbd134', '#db7434']\n * ```\n */\n complement(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.complement(color, currentOptions);\n }\n\n /**\n * Generate a split color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the split palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the split palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the split palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const splitPalette = split(baseColor, { numberOfColors: 5 });\n * console.log(splitPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\n split(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.split(color, currentOptions);\n }\n\n /**\n * Generates a triadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @param {Record<string, unknown> | MoebiusPaletteOptionsType} options - Additional options for palette generation.\n * @param {number} [options.numberOfColors=8] - The number of colors in the generated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for the generated palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} An array of HEX values representing the triadic color palette.\n *\n * @example\n * ```ts\n * const triadicPalette = triadic('#3498db', { numberOfColors: 5 });\n * console.log(triadicPalette);\n * // Output: ['#3498db', '#db344f', '#4fdb34', '#9834db', '#34db98']\n * ```\n */\n triadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.triadic(color, currentOptions);\n }\n\n /**\n * Generate a tetradic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the tetradic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the tetradic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the tetradic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const tetradicPalette = tetradic(baseColor, { numberOfColors: 5 });\n * console.log(tetradicPalette); // ['#3498db', '#db3434', '#34db99', '#dbd134', '#8f34db']\n * ```\n */\n tetradic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.tetradic(color, currentOptions);\n }\n\n /**\n * Generate a pentadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the pentadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the pentadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the pentadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const pentadicPalette = pentadic(baseColor, { numberOfColors: 5 });\n * console.log(pentadicPalette); // ['#3498db', '#dbd134', '#db3434', '#34db99', '#8f34db']\n * ```\n */\n pentadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.pentadic(color, currentOptions);\n }\n\n /**\n * Generate a hexadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the hexadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the hexadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the hexadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const hexadicPalette = hexadic(baseColor, { numberOfColors: 5 });\n * console.log(hexadicPalette); // ['#3498db', '#5d7f33', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\n hexadic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.hexadic(color, currentOptions);\n }\n\n /**\n * Generate an analogous color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the analogous palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the analogous palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the analogous palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const analogousPalette = analogous(baseColor, { numberOfColors: 5 });\n * console.log(analogousPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#db3474']\n * ```\n */\n analogous(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.analogous(color, currentOptions);\n }\n\n /**\n * Interpolate between two colors and generate a color palette.\n *\n * @param {MoebiusChromaColorInputType} primaryColor - The starting color for interpolation.\n * @param {MoebiusChromaColorInputType} secondaryColor - The ending color for interpolation.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the interpolated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the interpolated palette.\n *\n * @example\n * ```ts\n * const startColor = '#3498db';\n * const endColor = '#db3434';\n * const interpolatedPalette = interpolate(startColor, endColor, { numberOfColors: 5 });\n * console.log(interpolatedPalette); // ['#3498db', '#5d6d7e', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\n interpolate(\n primaryColor: MoebiusColorValueHexType,\n secondaryColor: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.interpolate(primaryColor, secondaryColor, currentOptions);\n }\n /**\n * Generate a luminance shift palette based on an array of colors, with optional diverging colors.\n *\n * @param {MoebiusChromaColorInputType[]} colors - Array of base colors for generating the luminance shift palette.\n * @param {MoebiusChromaColorInputType[]} [divergingColors=[]] - Array of diverging colors.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The total number of colors in the luminance shift palette.\n * @param {boolean} [options.diverging=false] - Whether to generate a diverging palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {string} [options.divergentColor='#f5f5f5'] - The divergent color for a diverging palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the luminance shift palette.\n *\n * @example\n * ```ts\n * const baseColors = ['#3498db', '#99db34'];\n * const divergingColors = ['#db3434'];\n * const luminanceShiftPalette = luminanceShift(baseColors, divergingColors, { numberOfColors: 5 });\n * console.log(luminanceShiftPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\n luminanceShift(\n colors: MoebiusColorValueHexType[],\n divergingColors: MoebiusColorValueHexType[] = [],\n\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.luminanceShift(colors, divergingColors, currentOptions);\n }\n\n /**\n * Generates a monochromatic color palette based on the given color.\n * @param {MoebiusChromaColorInputType} color - The base color for the palette.\n * @param {MoebiusPaletteOptionsType} options - Options for generating the palette.\n * @returns {MoebiusColorValueHexType[]} - An array of hex color values in the palette.\n * @example\n * ```typescript\n * const baseColor = '#003f5c';\n * const options = { numberOfColors: 5, bezier: true, randomOffset: false };\n * const monochromaticPalette = monochromatic(baseColor, options);\n * console.log(monochromaticPalette);\n * [\n * '#003f5c', // maniacMansion,\n * '#014268', // darkImperialBlue,\n * '#024575', // macraggeBlue,\n * '#044784', // bridgeport,\n * '#064898', // frightNight,\n * '#0745b6', // absoluteZero,\n * '#002df5', // blueBouquet\n * ];\n * ```\n */\n monochromatic(\n color: MoebiusColorValueHexType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.monochromatic(color, currentOptions);\n }\n /**\n * Generate a harmonized color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the harmonized palette.\n * @param {number} start - The starting angle for generating harmonized colors (degrees).\n * @param {number} end - The ending angle for generating harmonized colors (degrees).\n * @param {number} interval - The interval between harmonized colors (degrees).\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {boolean} [options.noDuplicates=true] - Whether to remove duplicate colors in the palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the harmonized palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const harmonizedPalette = harmonize(baseColor, 30, 210, 30, { noDuplicates: true });\n * console.log(harmonizedPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#3498db']\n * ```\n */\n harmonize(\n color: MoebiusColorValueHexType,\n start: number,\n end: number,\n interval: number,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n ): MoebiusColorValueHexType[] {\n const currentOptions = { ...this.options, ...options };\n\n return FEATURES.harmonize(color, start, end, interval, currentOptions);\n }\n}\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a complement color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the complement palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the complement palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the complement palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const complementPalette = complement(baseColor, { numberOfColors: 5 });\n * console.log(complementPalette); // ['#3498db', '#db3434', '#75db34', '#dbd134', '#db7434']\n * ```\n */\nexport const complement = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a complement color scheme.\n const colors = harmonize(color, 180, 180, 1);\n\n // Use chroma-js to fill in missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a split color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the split palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the split palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the split palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const splitPalette = split(baseColor, { numberOfColors: 5 });\n * console.log(splitPalette); // ['#3498db', '#99db34', '#dbd134', '#db3434', '#8f34db']\n * ```\n */\nexport const split = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a split color scheme.\n const colors = harmonize(color, 150, 210, 60);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generates a triadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @param {Record<string, unknown> | MoebiusPaletteOptionsType} options - Additional options for palette generation.\n * @param {number} [options.numberOfColors=8] - The number of colors in the generated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for the generated palette.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} An array of HEX values representing the triadic color palette.\n *\n * @example\n * ```ts\n * const triadicPalette = triadic('#3498db', { numberOfColors: 5 });\n * console.log(triadicPalette);\n * // Output: ['#3498db', '#db344f', '#4fdb34', '#9834db', '#34db98']\n * ```\n */\nexport const triadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n const colors = harmonize(color, 120, 240, 120);\n\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a tetradic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the tetradic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the tetradic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the tetradic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const tetradicPalette = tetradic(baseColor, { numberOfColors: 5 });\n * console.log(tetradicPalette); // ['#3498db', '#db3434', '#34db99', '#dbd134', '#8f34db']\n * ```\n */\nexport const tetradic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a tetradic color scheme.\n const colors = harmonize(color, 90, 270, 90);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a pentadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the pentadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the pentadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the pentadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const pentadicPalette = pentadic(baseColor, { numberOfColors: 5 });\n * console.log(pentadicPalette); // ['#3498db', '#dbd134', '#db3434', '#34db99', '#8f34db']\n * ```\n */\nexport const pentadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a pentadic color scheme.\n const colors = harmonize(color, 144, 360, 72);\n\n // Use chroma-js to fill in colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate a hexadic color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the hexadic palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the hexadic palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the hexadic palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const hexadicPalette = hexadic(baseColor, { numberOfColors: 5 });\n * console.log(hexadicPalette); // ['#3498db', '#5d7f33', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\nexport const hexadic = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate a hexadic color scheme.\n const colors = harmonize(color, 120, 360, 60);\n\n // Use chroma-js to fill in missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\nimport { harmonize } from './harmonize';\n\n/**\n * Generate an analogous color palette based on the input color.\n *\n * @param {MoebiusChromaColorInputType} color - The base color for generating the analogous palette.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the analogous palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the analogous palette.\n *\n * @example\n * ```ts\n * const baseColor = '#3498db';\n * const analogousPalette = analogous(baseColor, { numberOfColors: 5 });\n * console.log(analogousPalette); // ['#3498db', '#75db34', '#dbd134', '#db7434', '#db3474']\n * ```\n */\nexport const analogous = (\n color: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n correctLightness = true\n } = options;\n // Generate an analogous color scheme.\n const colors = harmonize(color, 30, 90, 30);\n\n // Use chroma-js to fill in the missing colors for the palette.\n return chroma\n .scale(colors)\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n};\n","import chroma from 'chroma-js';\n\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType,\n MoebiusPaletteOptionsType\n} from '../types';\n\n/**\n * Interpolate between two colors and generate a color palette.\n *\n * @param {MoebiusChromaColorInputType} primaryColor - The starting color for interpolation.\n * @param {MoebiusChromaColorInputType} secondaryColor - The ending color for interpolation.\n * @param {MoebiusPaletteOptionsType} [options={}] - Options for generating the palette.\n * @param {number} [options.numberOfColors=8] - The number of colors in the interpolated palette.\n * @param {string} [options.colorScaleMode] - The color scale mode for chroma-js.\n * @param {boolean} [options.bezier=false] - Whether to use bezier interpolation.\n * @param {boolean} [options.correctLightness=true] - Whether to correct lightness in the generated palette.\n * @returns {MoebiusColorValueHexType[]} - Array of hex color values representing the interpolated palette.\n *\n * @example\n * ```ts\n * const startColor = '#3498db';\n * const endColor = '#db3434';\n * const interpolatedPalette = interpolate(startColor, endColor, { numberOfColors: 5 });\n * console.log(interpolatedPalette); // ['#3498db', '#5d6d7e', '#8473a9', '#ad7a95', '#db3434']\n * ```\n */\nexport const interpolate = (\n primaryColor: MoebiusChromaColorInputType,\n secondaryColor: MoebiusChromaColorInputType,\n options: Record<string, unknown> | MoebiusPaletteOptionsType = {}\n): MoebiusColorValueHexType[] => {\n const {\n numberOfColors = 8,\n colorScaleMode,\n bezier = false,\n correctLightness = true\n } = options as MoebiusPaletteOptionsType;\n\n let colors = chroma\n .scale([primaryColor, secondaryColor])\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n\n if (bezier) {\n colors = chroma\n .bezier([primaryColor, secondaryColor])\n .scale()\n .mode(colorScaleMode)\n .correctLightness(correctLightness)\n .colors(numberOfColors);\n }\n\n return colors;\n};\n","import { MoebiusHSLObjectType } from '../../types';\n\n/**\n * Represents an HSL (Hue, Saturation, Lightness) color unit.\n * @constructor\n * @param {MoebiusHSLObjectType} params - The HSL parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} l - Lightness component.\n */\nexport const unitHSL = function (this: MoebiusHSLObjectType, [h, s, l]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(0) : 0);\n this.s = Number((s * 100).toFixed());\n this.l = Number((l * 100).toFixed());\n};\n\n/**\n * Converts the HSL unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSL unit.\n * @example\n * ```ts\n * const hslUnit = new unitHSL([30, 0.5, 0.8]);\n * const hslString = hslUnit.toString(); // \"hsl(30, 50%, 80%)\"\n * ```\n */\nunitHSL.prototype.toString = function (): string {\n return `hsl(${Object.keys(this)\n .map((a, i) => `${this[a]}${i !== 0 ? '%' : ''}`)\n .join(', ')})`;\n};\n\n/**\n * Represents an HSL (Hue, Saturation, Lightness) color unit with floating-point values.\n * @constructor\n * @param {MoebiusHSLObjectType} params - The HSL parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} l - Lightness component.\n */\nexport const unitHSLFloat = function (this: MoebiusHSLObjectType, [h, s, l]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(0) : 0);\n this.s = Number(s.toFixed(2));\n this.l = Number(l.toFixed(2));\n};\n\n/**\n * Converts the HSL unit with floating-point values to a string representation.\n * @method\n * @returns {string} - The string representation of the HSL unit with floating-point values.\n * @example\n * ```ts\n * const hslFloatUnit = new unitHSLFloat([30, 0.5, 0.8]);\n * const hslFloatString = hslFloatUnit.toString(); // \"30, 0.50, 0.80\"\n * ```\n */\nunitHSLFloat.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusXYZObjectType } from '../../types';\n\n/**\n * Represents an XYZ color unit.\n * @constructor\n * @param {MoebiusXYZObjectType} params - The XYZ parameters.\n * @property {number} x - X component.\n * @property {number} y - Y component.\n * @property {number} z - Z component.\n */\nexport const UnitXYZ = function (this: MoebiusXYZObjectType, { x, y, z }) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\n/**\n * Converts the XYZ unit to a string representation.\n * @method\n * @returns {string} - The string representation of the XYZ unit.\n * @example\n * ```ts\n * const xyzUnit = new UnitXYZ({ x: 0.4, y: 0.6, z: 0.8 });\n * const xyzString = xyzUnit.toString(); // \"0.4, 0.6, 0.8\"\n * ```\n */\nUnitXYZ.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusCMYKObjectType } from '../../types';\n\n/**\n * Represents a CMYK color unit.\n * @constructor\n * @param {MoebiusCMYKObjectType} params - The CMYK parameters.\n * @property {number} c - Cyan component.\n * @property {number} m - Magenta component.\n * @property {number} y - Yellow component.\n * @property {number} k - Black (Key) component.\n */\nexport const UnitCMYK = function (this: MoebiusCMYKObjectType, { c, m, y, k }) {\n this.c = c;\n this.m = m;\n this.y = y;\n this.k = k;\n};\n\n/**\n * Converts the CMYK unit to a string representation.\n * @method\n * @returns {string} - The string representation of the CMYK unit.\n * @example\n * ```ts\n * const cmykUnit = new UnitCMYK({ c: 0.2, m: 0.4, y: 0.6, k: 0.1 });\n * const cmykString = cmykUnit.toString(); // \"0.2, 0.4, 0.6, 0.1\"\n * ```\n */\nUnitCMYK.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusRGBObjectType } from '../../types';\n\n/**\n * Represents an RGB float color unit.\n * @constructor\n * @param {MoebiusRGBObjectType} params - The RGB float parameters.\n * @property {number} r - Red component.\n * @property {number} g - Green component.\n * @property {number} b - Blue component.\n */\nexport const UnitRGBFloat = function (this: MoebiusRGBObjectType, { r, g, b }) {\n this.r = r;\n this.g = g;\n this.b = b;\n};\n\n/**\n * Converts the RGB float unit to a string representation.\n * @method\n * @returns {string} - The string representation of the RGB float unit.\n * @example\n * ```ts\n * const rgbFloatUnit = new UnitRGBFloat({ r: 255, g: 128, b: 0 });\n * const rgbFloatString = rgbFloatUnit.toString(); // \"255, 128, 0\"\n * ```\n */\nUnitRGBFloat.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHWBObjectType } from '../../types';\n\n/**\n * Represents an HWB (Hue, Whiteness, Blackness) color unit.\n * @constructor\n * @param {MoebiusHWBObjectType} params - The HWB parameters.\n * @property {number} h - Hue component.\n * @property {number} w - Whiteness component.\n * @property {number} b - Blackness component.\n */\nexport const UnitHWB = function (this: MoebiusHWBObjectType, { h, w, b }) {\n this.h = h;\n this.w = w;\n this.b = b;\n};\n\n/**\n * Converts the HWB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HWB unit.\n * @example\n * ```ts\n * const hwbUnit = new UnitHWB({ h: 200, w: 0.2, b: 0.1 });\n * const hwbString = hwbUnit.toString(); // \"200, 0.2, 0.1\"\n * ```\n */\nUnitHWB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLABObjectType } from '../../types';\n\n/**\n * Represents an LAB (CIELAB) color unit.\n * @constructor\n * @param {MoebiusLABObjectType} params - The LAB parameters.\n * @property {number} l - Lightness component.\n * @property {number} a - A color component.\n * @property {number} b - B color component.\n */\nexport const UnitLAB = function (this: MoebiusLABObjectType, [l, a, b]) {\n this.l = Number(l.toFixed(2));\n this.a = Number(a.toFixed(2));\n this.b = Number(b.toFixed(2));\n};\n\n/**\n * Converts the LAB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the LAB unit.\n * @example\n * ```ts\n * const labUnit = new UnitLAB([70, 10, 20]);\n * const labString = labUnit.toString(); // \"70, 10, 20\"\n * ```\n */\nUnitLAB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLABObjectType } from '../../types';\n\n/**\n * Represents an OKLAB color unit.\n * @constructor\n * @param {MoebiusLABObjectType} params - The OKLAB parameters.\n * @property {number} l - Lightness component.\n * @property {number} a - First color opponent axis.\n * @property {number} b - Second color opponent axis.\n */\nexport const UnitOKLAB = function (this: MoebiusLABObjectType, [l, a, b]) {\n this.l = Number(l.toFixed(2));\n this.a = Number(a.toFixed(2));\n this.b = Number(b.toFixed(2));\n};\n\n/**\n * Converts the OKLAB unit to a string representation.\n * @method\n * @returns {string} - The string representation of the OKLAB unit.\n * @example\n * ```ts\n * const oklabUnit = new UnitOKLAB([70, 30, 45]);\n * const oklabString = oklabUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitOKLAB.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHSVObjectType } from '../../types';\n\n/**\n * Represents an HSV (Hue, Saturation, Value) color unit.\n * @constructor\n * @param {MoebiusHSVObjectType} params - The HSV parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} v - Value component.\n */\nexport const UnitHSV = function (this: MoebiusHSVObjectType, [h, s, v]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n this.s = Number(s.toFixed(2));\n this.v = Number(v.toFixed(2));\n};\n\n/**\n * Converts the HSV unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSV unit.\n * @example\n * ```ts\n * const hsvUnit = new UnitHSV([30, 0.5, 0.8]);\n * const hsvString = hsvUnit.toString(); // \"30, 0.50, 0.80\"\n * ```\n */\nUnitHSV.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLCHObjectType } from '../../types';\n\n/**\n * Represents an LCH (CIELCH) color unit.\n * @constructor\n * @param {MoebiusLCHObjectType} params - The LCH parameters.\n * @property {number} l - Lightness component.\n * @property {number} c - Chroma component.\n * @property {number} h - Hue component.\n */\nexport const UnitLCH = function (this: MoebiusLCHObjectType, [l, c, h]) {\n this.l = Number(l.toFixed(2));\n this.c = Number(c.toFixed(2));\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n};\n\n/**\n * Converts the LCH unit to a string representation.\n * @method\n * @returns {string} - The string representation of the LCH unit.\n * @example\n * ```ts\n * const lchUnit = new UnitLCH([70, 30, 45]);\n * const lchString = lchUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitLCH.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusLCHObjectType } from '../../types';\n\n/**\n * Represents an OKLCH color unit.\n * @constructor\n * @param {MoebiusLCHObjectType} params - The OKLCH parameters.\n * @property {number} l - Lightness component.\n * @property {number} c - Chroma component.\n * @property {number} h - Hue component.\n */\nexport const UnitOKLCH = function (this: MoebiusLCHObjectType, [l, c, h]) {\n this.l = Number(l.toFixed(2));\n this.c = Number(c.toFixed(2));\n this.h = Number(h.toFixed(2));\n};\n\n/**\n * Converts the OKLCH unit to a string representation.\n * @method\n * @returns {string} - The string representation of the OKLCH unit.\n * @example\n * ```ts\n * const oklchUnit = new UnitOKLCH([70, 30, 45]);\n * const oklchString = oklchUnit.toString(); // \"70, 30, 45\"\n * ```\n */\nUnitOKLCH.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import { MoebiusHSIObjectType } from '../../types';\n\n/**\n * Represents an HSI (Hue, Saturation, Intensity) color unit.\n * @constructor\n * @param {MoebiusHSIObjectType} params - The HSI parameters.\n * @property {number} h - Hue component.\n * @property {number} s - Saturation component.\n * @property {number} i - Intensity component.\n */\nexport const UnitHSI = function (this: MoebiusHSIObjectType, [h, s, i]) {\n // Ensure the values are within valid ranges and convert them to numbers.\n this.h = Number(!isNaN(h) ? h.toFixed(2) : 0);\n this.s = Number(s.toFixed(2));\n this.i = Number(i.toFixed(2));\n};\n\n/**\n * Converts the HSI unit to a string representation.\n * @method\n * @returns {string} - The string representation of the HSI unit.\n * @example\n * ```ts\n * const hsiUnit = new UnitHSI([30, 0.5, 0.8]);\n * const hsiString = hsiUnit.toString(); // \"30, 0.5, 0.8\"\n * ```\n */\nUnitHSI.prototype.toString = function (): string {\n return Object.keys(this)\n .map((a) => `${this[a]}`)\n .join(', ');\n};\n","import chroma from 'chroma-js';\nimport { unitHSLFloat } from '../color-objects/hsl';\nimport { UnitRGBFloat } from '../color-objects/rgb';\nimport {\n MoebiusChromaColorInputType,\n MoebiusHSLObjectType,\n MoebiusRGBObjectType\n} from '../../types';\n\n/**\n * Converts a color to its float representation.\n * @param {MoebiusChromaColorInputType} color - The input color in hex, rgb, or rgba format.\n * @param {string} [type] - The color type ('hsl' for HSL, undefined for RGB).\n * @returns {unitHSLFloat | UnitRGBFloat} - The float representation of the color.\n * @example\n * ```ts\n * const hslFloatColor = toFloat('#00ff00', 'hsl');\n * console.log(hslFloatColor.toString()); // 120, 100, 50\n * ```\n * @example\n * ```ts\n * const rgbFloatColor = toFloat('#00ff00');\n * console.log(rgbFloatColor.toString()); // 0, 1, 0\n * ```\n */\nexport const toFloat = (\n color: MoebiusChromaColorInputType,\n type?: string\n): MoebiusHSLObjectType | MoebiusRGBObjectType => {\n if (type === 'hsl') {\n // Convert the color to HSL and create a new HSL float unit\n return new unitHSLFloat(chroma(color).hsl());\n }\n\n // Convert the color to RGB and create a new RGB float unit\n const _rgb = chroma(color).rgb();\n const rgbFloat = new UnitRGBFloat({\n r: Number((_rgb[0] / 255).toFixed(2)),\n g: Number((_rgb[1] / 255).toFixed(2)),\n b: Number((_rgb[2] / 255).toFixed(2))\n });\n\n return rgbFloat;\n};\n","/**\n * Normalizes an RGB input value.\n * @param {number} r - The input value in the RGB color space (0 to 255).\n * @returns {number} - The normalized value.\n */\nexport const normalizeRGBInput = (r: number) => {\n if ((r /= 255) <= 0.04045) return r / 12.92;\n\n return Math.pow((r + 0.055) / 1.055, 2.4);\n};\n\n/**\n * Normalizes a LAB input value.\n * @param {number} t - The input value in the LAB color space.\n * @returns {number} - The normalized value.\n */\nexport const normalizeLABInput = (t: number) => {\n if (t > 0.008856452) return Math.pow(t, 1 / 3);\n\n return t / 0.12841855 + 0.137931034;\n};\n","import {\n MoebiusCMYKObjectType,\n MoebiusColorValueHexType,\n MoebiusColorValueRgbType,\n MoebiusHSIObjectType,\n MoebiusHSLObjectType,\n MoebiusHSVObjectType,\n MoebiusHWBObjectType,\n MoebiusLABObjectType,\n MoebiusLCHObjectType,\n MoebiusColorInterface,\n MoebiusRGBObjectType,\n MoebiusXYZObjectType,\n MoebiusChromaColorInputType\n} from '../types';\n\nimport * as CONVERTERS from '../utils/converters';\n\n/**\n * MoebiusColor class representing a color with various formats and conversions.\n * @class\n * @example\n * ```ts\n * const mColor = new MoebiusColor('#ff9900')\n * ```\n */\nexport class MoebiusColor implements MoebiusColorInterface {\n color: MoebiusChromaColorInputType;\n name: string;\n hex: MoebiusColorValueHexType;\n rgb: MoebiusColorValueRgbType;\n hsl: MoebiusHSLObjectType;\n hwb: MoebiusHWBObjectType;\n hsv: MoebiusHSVObjectType;\n lab: MoebiusLABObjectType;\n xyz: MoebiusXYZObjectType;\n lch: MoebiusLCHObjectType;\n oklch: MoebiusLCHObjectType;\n hsi: MoebiusHSIObjectType;\n oklab: MoebiusLABObjectType;\n cmyk: MoebiusCMYKObjectType;\n\n /**\n * Creates an instance of MoebiusColor.\n * @param {MoebiusChromaColorInputType} value - The hex value of the color.\n * @param {string} name - The name of the color\n * @constructor\n * @throws Will throw an error if init has not been run before creating an instance.\n */\n constructor(color: MoebiusChromaColorInputType, name: string) {\n this.color = color;\n this.name = name;\n\n this.hex = CONVERTERS.toHEX(this.color);\n this.cmyk = CONVERTERS.toCMYK(this.color);\n this.xyz = CONVERTERS.toXYZ(this.color);\n this.hsl = CONVERTERS.toHSL(this.color);\n this.hwb = CONVERTERS.toHWB(this.color);\n this.lab = CONVERTERS.toLAB(this.color);\n this.oklab = CONVERTERS.toOKLAB(this.color);\n this.hsv = CONVERTERS.toHSV(this.color);\n this.lch = CONVERTERS.toLCH(this.color);\n this.oklch = CONVERTERS.toOKLCH(this.color);\n this.hsi = CONVERTERS.toHSI(this.color);\n this.rgb = CONVERTERS.toRGB(this.color);\n }\n /**\n * Converts the color to an object in the specified color space.\n * @param {string} type - The color space type (e.g., 'rgb' or 'hsl').\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The color object in the specified color space.\n */\n toObject(type?: string): MoebiusRGBObjectType | MoebiusHSLObjectType {\n return CONVERTERS.toObject(this.color, type);\n }\n /**\n * Converts the color to a floating-point representation in the specified color space.\n * @param {string} type - The color space type (e.g., 'rgb' or 'hsl').\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The floating-point representation of the color in the specified color space.\n */\n toFloat(type?: string): MoebiusRGBObjectType | MoebiusHSLObjectType {\n return CONVERTERS.toFloat(this.color, type);\n }\n}\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueHexType\n} from '../../types';\n\n/**\n * Converts a color to its corresponding HEX representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in various formats (HEX, RGB, HSL, etc.).\n * @returns {MoebiusColorValueHexType} The HEX representation of the color.\n *\n * @example\n * ```ts\n * const hexColor = toHEX('#3498db');\n * console.log(hexColor); // Output: '#3498db'\n * ```\n */\nexport const toHEX = (\n color: MoebiusChromaColorInputType\n): MoebiusColorValueHexType => {\n return chroma(color).hex();\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusCMYKObjectType,\n MoebiusChromaColorInputType\n} from '../../types';\nimport { UnitCMYK } from '../color-objects';\n\n/**\n * Converts an RGB color to its CMYK representation.\n * @param {MoebiusChromaColorInputType} color - The input color in hex, rgb, or rgba format.\n * @returns {MoebiusCMYKObjectType} - The CMYK representation of the color.\n * @example\n * ```ts\n * const cmykColor = toCMYK('#00ff00');\n * console.log(cmykColor); // { c: 40, m: 0, y: 100, k: 0 }\n * ```\n */\nexport const toCMYK = (\n color: MoebiusChromaColorInputType\n): MoebiusCMYKObjectType => {\n // Convert the color to RGB components\n let [r, b, g] = chroma(color).rgb();\n\n // Normalize RGB values to the range [0, 1]\n r /= 255;\n g /= 255;\n b /= 255;\n\n // Calculate the CMYK components\n const k = +(1 - Math.max(r, g, b));\n const c = +((1 - r - k) / (1 - k) || 0);\n const m = +((1 - g - k) / (1 - k) || 0);\n const y = +((1 - b - k) / (1 - k) || 0);\n\n // Create a new CMYK unit\n return new UnitCMYK({\n c: Number((c * 100).toFixed()),\n m: Number((m * 100).toFixed()),\n y: Number((y * 100).toFixed()),\n k: Number((k * 100).toFixed())\n });\n};\n","import chroma from 'chroma-js';\n\nimport { MoebiusChromaColorInputType, MoebiusXYZObjectType } from '../../types';\nimport { UnitXYZ } from '../color-objects';\nimport { normalizeLABInput, normalizeRGBInput } from '../normalize-color-units';\n\n/**\n * Converts a color from RGB to CIE 1931 XYZ color space.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hexadecimal format.\n * @returns {MoebiusXYZObjectType} - An object representing the XYZ color values.\n */\nexport const toXYZ = (\n color: MoebiusChromaColorInputType\n): MoebiusXYZObjectType => {\n // Extract RGB components from the input color\n let [r, b, g] = chroma(color).rgb();\n\n // Normalize RGB values\n r = normalizeRGBInput(r);\n g = normalizeRGBInput(g);\n b = normalizeRGBInput(b);\n\n // Convert RGB to XYZ\n const x = normalizeLABInput(\n (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / 0.95047\n );\n const y = normalizeLABInput(\n (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / 1\n );\n const z = normalizeLABInput(\n (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / 1.08883\n );\n\n // Return XYZ color values as a UnitXYZ object\n return new UnitXYZ({\n x: Number(x.toFixed(2)),\n y: Number(y.toFixed(2)),\n z: Number(z.toFixed(2))\n });\n};\n","import chroma from 'chroma-js';\n\nimport { MoebiusChromaColorInputType, MoebiusHSLObjectType } from '../../types';\nimport { unitHSL } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HSL object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSLObjectType} The HSL color representation object.\n *\n * @example\n * ```ts\n * const hslObject = toHSL('#3498db');\n * console.log(hslObject); // Output: { h: 207.76, s: 0.86, l: 0.56 }\n * ```\n */\nexport const toHSL = (\n color: MoebiusChromaColorInputType\n): MoebiusHSLObjectType => {\n return new unitHSL(chroma(color).hsl());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusHWBObjectType } from '../../types';\nimport { UnitHWB } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HWB object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHWBObjectType} The HWB color representation object.\n *\n * @example\n * ```ts\n * const hwbObject = toHWB('#3498db');\n * console.log(hwbObject); // Output: { h: 207.76, w: 0.5, b: 0.14 }\n * ```\n */\nexport const toHWB = (\n color: MoebiusChromaColorInputType\n): MoebiusHWBObjectType => {\n let [r, b, g] = chroma(color).rgb();\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n const w = Math.min(r, g, b);\n const v = Math.max(r, g, b);\n const black = 1 - v;\n\n if (v === w) return { h: 0, w: w, b: black };\n\n const f = r === w ? g - b : g === w ? b - r : r - g;\n const i = r === w ? 3 : g === w ? 5 : 1;\n\n return new UnitHWB({\n h: Number(((i - f / (v - w)) / 6).toFixed(2)),\n w: Number(w.toFixed(2)),\n b: Number(black.toFixed(2))\n });\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLABObjectType } from '../../types';\nimport { UnitLAB } from '../color-objects';\n\n/**\n * Converts a color to its corresponding LAB object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLABObjectType} The LAB color representation object.\n *\n * @example\n * ```ts\n * const labObject = toLAB('#3498db');\n * console.log(labObject); // Output: { l: 54.24, a: -12.56, b: -43.81 }\n * ```\n */\nexport const toLAB = (\n color: MoebiusChromaColorInputType\n): MoebiusLABObjectType => {\n return new UnitLAB(chroma(color).lab());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLABObjectType } from '../../types';\nimport { UnitOKLAB } from '../color-objects';\n\n/**\n * Converts a color to its OKLAB representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLABObjectType} The OKLAB representation of the input color.\n *\n * @example\n * ```ts\n * const oklabColor = toOKLAB('#3498db');\n * console.log(oklabColor); // Output: { l: 52.42, a: -9.93, b: -39.49 }\n * ```\n */\nexport const toOKLAB = (\n color: MoebiusChromaColorInputType\n): MoebiusLABObjectType => {\n return new UnitOKLAB(chroma(color).oklab());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusHSVObjectType } from '../../types';\nimport { UnitHSV } from '../color-objects';\n\n/**\n * Converts a color to its corresponding HSV object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSVObjectType} The HSV color representation object.\n *\n * @example\n * ```ts\n * const hsvObject = toHSV('#3498db');\n * console.log(hsvObject); // Output: { h: 207.76, s: 0.86, v: 0.85 }\n * ```\n */\nexport const toHSV = (\n color: MoebiusChromaColorInputType\n): MoebiusHSVObjectType => {\n return new UnitHSV(chroma(color).hsv());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLCHObjectType } from '../../types';\nimport { UnitLCH } from '../color-objects';\n\n/**\n * Converts a color to its corresponding LCH object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLCHObjectType} The LCH color representation object.\n *\n * @example\n * ```ts\n * const lchObject = toLCH('#3498db');\n * console.log(lchObject); // Output: { l: 54.66, c: 76.91, h: 217.76 }\n * ```\n */\nexport const toLCH = (\n color: MoebiusChromaColorInputType\n): MoebiusLCHObjectType => {\n return new UnitLCH(chroma(color).lch());\n};\n","import chroma from 'chroma-js';\nimport { MoebiusChromaColorInputType, MoebiusLCHObjectType } from '../../types';\nimport { UnitOKLCH } from '../color-objects';\n\n/**\n * Converts a color to its OKLCH representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusLCHObjectType} The OKLCH representation of the input color.\n *\n * @example\n * ```ts\n * const oklchColor = toOKLCH('#3498db');\n * console.log(oklchColor); // Output: { l: 52.12, c: 126.62, h: 232.53 }\n * ```\n */\nexport const toOKLCH = (\n color: MoebiusChromaColorInputType\n): MoebiusLCHObjectType => {\n return new UnitOKLCH(chroma(color).oklch());\n};\n","import chroma from 'chroma-js';\nimport { UnitHSI } from '../color-objects';\nimport { MoebiusChromaColorInputType, MoebiusHSIObjectType } from '../../types';\n\n/**\n * Converts a color to its corresponding HSI object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @returns {MoebiusHSIObjectType} The HSI color representation object.\n *\n * @example\n * ```ts\n * const hsiObject = toHSI('#3498db');\n * console.log(hsiObject); // Output: { h: 207.76, s: 0.52, i: 0.4 }\n * ```\n */\nexport const toHSI = (\n color: MoebiusChromaColorInputType\n): MoebiusHSIObjectType => {\n return new UnitHSI(chroma(color).hsi());\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusColorValueRgbType\n} from '../../types';\n\n/**\n * Converts a color to its RGB representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in any valid chroma-js format.\n * @returns {MoebiusColorValueRgbType} The RGB representation of the input color.\n *\n * @example\n * ```ts\n * const rgbColor = toRGB('#3498db');\n * console.log(rgbColor); // Output: 'rgb(52, 152, 219)'\n * ```\n */\nexport const toRGB = (\n color: MoebiusChromaColorInputType\n): MoebiusColorValueRgbType => {\n const [r, g, b] = chroma(color).rgb();\n\n return `rgb(${r}, ${g}, ${b})`;\n};\n","import chroma from 'chroma-js';\nimport {\n MoebiusChromaColorInputType,\n MoebiusHSLObjectType,\n MoebiusRGBObjectType\n} from 'types';\n\n/**\n * Converts a color to its corresponding object representation.\n *\n * @param {MoebiusChromaColorInputType} color - The input color in hex format.\n * @param {string} [type] - The type of representation ('hsl' or undefined for RGB).\n * @returns {MoebiusRGBObjectType | MoebiusHSLObjectType} The color representation object.\n *\n * @example\n * ```ts\n * const rgbObject = toObject('#3498db');\n * console.log(rgbObject); // Output: { r: 52, g: 152, b: 219 }\n *\n * const hslObject = toObject('#3498db', 'hsl');\n * console.log(hslObject); // Output: { h: 207, s: 79, l: 57 }\n * ```\n */\nexport const toObject = (\n color: MoebiusChromaColorInputType,\n type?: string\n): MoebiusRGBObjectType | MoebiusHSLObjectType => {\n if (type === 'hsl') {\n const [h, s, l] = chroma(color).hsl();\n\n return {\n h: Number(!isNaN(h) ? h.toFixed(0) : 0),\n s: Number((s * 100).toFixed()),\n l: Number((l * 100).toFixed())\n };\n }\n\n const rgb = chroma(color).rgb();\n const rgbObject = {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2]\n };\n\n return rgbObject;\n};\n","import chroma from 'chroma-js';\nimport nearestColor from 'nearest-color';\n\nimport {\n MoebiusColorValueHexType,\n NearestColorColorMatchInterface\n} from './types';\n\nimport { MoebiusSVGHelper } from './classes/MoebiusSVGHelper';\nimport { MoebiusPalettes } from './classes/MoebiusPalettes';\nimport { MoebiusColor } from './classes/MoebiusColor';\n\nexport * from './types';\n\nexport type MoebiusReturnType = Promise<{\n MoebiusColor: typeof MoebiusColor;\n MoebiusPalettes: typeof MoebiusPalettes;\n MoebiusSVGHelper: typeof MoebiusSVGHelper;\n}>;\n\nconst initializeColorNames = async (): Promise<\n // eslint-disable-next-line no-unused-vars\n (color: string) => NearestColorColorMatchInterface | string\n> => {\n const response = await fetch('https://color-names.herokuapp.com/v1/');\n const data = await response.json();\n const colors = data.colors;\n const map = {};\n\n colors.forEach((entry: Record<string, unknown>) => {\n map[entry.name as string] = entry.hex;\n });\n\n return nearestColor.from(map);\n};\n\n/**\n * Asynchronous function to initialize Moebius with required data\n * @function\n * @returns {MoebiusReturnType} An object with Moebius classes\n *\n */\nasync function Moebius(): MoebiusReturnType {\n const colorNames = await initializeColorNames();\n\n class MoebiusColorAbstract extends MoebiusColor {\n constructor(color: MoebiusColorValueHexType) {\n super(\n chroma(color).hex(),\n typeof colorNames(color) === 'string'\n ? (colorNames(color) as string)\n : (colorNames(color) as NearestColorColorMatchInterface).name\n );\n }\n }\n\n return {\n MoebiusColor: MoebiusColorAbstract as typeof MoebiusColor,\n MoebiusPalettes,\n MoebiusSVGHelper\n };\n}\n\nexport default Moebius;\n"],"names":["module","exports","limit$2","x","min","max","limit$1","clip_rgb$3","rgb","_clipped","_unclipped","slice","i","classToType","i$1","list$1","length","name","toLowerCase","type$p","obj","Object","prototype","toString","call","type$o","unpack$B","args","keyOrder","Array","split","filter","k","undefined","map","type$n","last$4","l","PI$2","Math","PI","utils","clip_rgb","limit","type","unpack","last","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","input$h","format","autodetect","last$3","clip_rgb$2","type$m","_input","Color$D","len","arguments","me","this","constructor","mode","sorted","sort","a","b","p","list","chk","test","apply","Error","_rgb","push","hex","join","Color_1","chroma$k","Function","bind","Color","concat","version","chroma_1","unpack$A","max$2","rgb2cmyk$1","ref","r","g","f","rgb2cmyk_1","unpack$z","cmyk2rgb","c","m","y","alpha","cmyk2rgb_1","chroma$j","Color$C","input$g","unpack$y","type$l","rgb2cmyk","cmyk","unpack$x","last$2","rnd","round","hsl2css$1","hsla","hsl2css_1","unpack$w","rgb2hsl$3","s","h","Number","NaN","rgb2hsl_1","unpack$v","last$1","hsl2css","rgb2hsl$2","round$6","rgb2css$1","rgba","substr","rgb2css_1","unpack$u","round$5","hsl2rgb$1","assign","t3","t2","t1","h_","hsl2rgb_1","hsl2rgb","input$f","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$4","css2rgb$1","css","trim","named","e","match","rgb$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","chroma$i","Color$B","input$e","type$k","rgb2css","css2rgb","rest","Color$A","chroma$h","input$d","unpack$t","gl","unpack$s","rgb2hcg$1","delta","_g","rgb2hcg_1","unpack$r","floor$3","floor","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","q","t","v","hcg2rgb_1","unpack$q","type$j","chroma$g","Color$z","input$c","rgb2hcg","hcg","unpack$p","round$3","rgb2hex$2","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb_1","u","parseInt","u$1","chroma$f","Color$y","type$i","input$b","rgb2hex$1","indexOf","unpack$o","TWOPI$2","min$2","sqrt$4","sqrt","acos","rgb2hsi$1","min_","rgb2hsi_1","unpack$n","TWOPI$1","cos$4","cos","hsi2rgb","isNaN","hsi2rgb_1","unpack$m","type$h","chroma$e","Color$x","input$a","rgb2hsi","hsi","unpack$l","type$g","chroma$d","Color$w","input$9","rgb2hsl$1","unpack$k","min$1","max$1","rgb2hsl","max_","rgb2hsv$1","unpack$j","floor$2","hsv2rgb","hsv2rgb_1","unpack$i","type$f","chroma$c","Color$v","input$8","rgb2hsv","hsv","labConstants","Kn","Xn","Yn","Zn","t0","LAB_CONSTANTS$3","unpack$h","pow$a","pow","rgb2lab$2","ref$1","rgb2xyz","rgb_xyz","xyz_lab","rgb2lab_1","LAB_CONSTANTS$2","unpack$g","pow$9","lab2rgb$1","z","lab_xyz","xyz_rgb","lab2rgb_1","unpack$f","type$e","chroma$b","Color$u","input$7","rgb2lab$1","lab","unpack$e","sqrt$3","atan2$2","atan2","round$2","lab2lch$2","lab2lch_1","unpack$d","rgb2lab","lab2lch$1","rgb2lch$1","b_","rgb2lch_1","unpack$c","sin$3","sin","cos$3","lch2lab$2","lch2lab_1","unpack$b","lch2lab$1","lab2rgb","lch2rgb$1","L","lch2rgb_1","unpack$a","lch2rgb","hcl2rgb","hcl","reverse","hcl2rgb_1","unpack$9","type$d","chroma$a","Color$t","input$6","rgb2lch","lch","forEach","w3cx11_1","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflower","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Color$s","input$5","type$c","w3cx11","hex2rgb","rgb2hex","keys","n","unpack$8","rgb2num$1","rgb2num_1","type$b","num2rgb_1","num","chroma$9","Color$r","input$4","type$a","rgb2num","chroma$8","Color$q","input$3","unpack$7","type$9","round$1","log$1","log","temperature2rgb_1","kelvin","temp","temperature2rgb","unpack$6","rgb2temperature$1","minTemp","maxTemp","eps","chroma$7","Color$p","input$2","rgb2temperature","temperature","unpack$5","cbrt","pow$8","sign$1","sign","rgb2oklab$2","rgb2lrgb","lr","lg","lb","rgb2oklab_1","abs","unpack$4","pow$7","oklab2rgb$1","lrgb2rgb","oklab2rgb_1","unpack$3","type$8","chroma$6","Color$o","input$1","rgb2oklab$1","oklab","unpack$2","rgb2oklab","lab2lch","rgb2oklch$1","rgb2oklch_1","unpack$1","lch2lab","oklab2rgb","oklch2rgb","oklch2rgb_1","type$7","chroma$5","Color$n","input","rgb2oklch","oklch","Color$m","type$6","mutate","clipped","Color$k","LAB_CONSTANTS$1","darken","amount","brighten","darker","brighter","get","mc","channel","src","Color$i","type$5","pow$6","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","low","high","mid","interpolate","lm","rgb2luminance","luminance_x","interpolator$1","Color$h","type$4","interpolator","mix$1","col1","col2","Color$g","mix","Color$f","premultiply","Color$e","LAB_CONSTANTS","saturate","desaturate","Color$d","type$3","set","value","charAt","out","Color$c","xyz0","xyz1","Color$b","sqrt$2","pow$5","lrgb","x1","y1","z1","x2","y2","z2","Color$a","Color$9","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","interpolate_hsx$5","Color$8","c1","c2","interpolate_hsx$4","interpolate_hsx$3","interpolate_hsx$2","interpolate_hsx$1","Color$7","interpolate_hsx","Color$6","clip_rgb$1","pow$4","sqrt$1","PI$1","cos$2","sin$2","atan2$1","average","colors","weights","from","reduce","w","_average_lrgb","first","shift","xyz","cnt","dx","dy","A","ci","xyz2","A$1","col","chroma$4","type$2","pow$3","scale$2","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","val","bypassMap","classes","d","analyze","limits","domain","tOut","tBreaks","every","_m","range","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","padding","numColors","result","dm","dd","__range__","samples","end","asc","cache","gamma","nodata","left","right","inclusive","ascending","Color$5","scale$1","binom_row","row","newrow","j","bezier","I","lab0","lab1","lab2","lab3","RangeError","labs","sum","el","bezier_1","scale","chroma$3","blend","bottom","top","blend_f","c0","each","normal","multiply","lighten","screen","overlay","burn","dodge","blend_1","type$1","pow$2","sin$1","cos$1","chroma$2","cubehelix","start","rotations","lightness","dl","dh","fract","amp","cos_a","sin_a","Color$4","digits","floor$1","random","random_1","code","pow$1","abs$1","data","key","MAX_VALUE","values","count","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","repeat","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","Color$3","contrast","l1","l2","Color$2","exp","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rt","Color$1","distance","sum_sq","valid","chroma$1","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","colorbrewer_1","chroma","chroma_js","factory","context","nearestColor","needle","parseColor","distanceSq","minDistanceSq","Infinity","DEFAULT_COLORS","source","mapColors","color","createColorSpec","STANDARD_COLORS","hexMatch","substring","rgbMatch","parseComponentValue","leadingZero","string","availableColors","nearestColorBase","matcher","or","alternateColors","extendedColors","VERSION","MoebiusSVGHelper","xlmns","getColorPiePaths","size","df","document","createDocumentFragment","defsElement","createElementNS","maskElement","rectElement","gElement","interval","id","setAttributeNS","appendChild","maskDegrees","initial","lineElement","group","inwardInterval","index","path","radius","centerX","centerY","stop","pieSlice","MOEBIUS_PALETTE_DEFAULT_OPTIONS","diverging","randomOffset","noDuplicates","colorScaleMode","reverseDirection","MoebiusPaletteColors","luminanceShift","monochromatic","complement","triadic","tetradic","pentadic","hexadic","analogous","palette","toArray","flat","harmonize","options","toFixed","h1","uniqueColors","Set","numberOfColors","hslColors","generateLuminanceShiftPalette","lRange","lStep","lStart","colorRange","offset","diff","luminanceShiftAutoColors","divergentColor","ceil","MoebiusAccentColors","MoebiusPalettes","baseColor","secondaryColor","defaultOptions","all","accents","FEATURES.complement","FEATURES.split","FEATURES.triadic","FEATURES.tetradic","FEATURES.pentadic","FEATURES.hexadic","FEATURES.analogous","primaryColor","FEATURES.interpolate","divergingColors","even","numberOfColorsLeft","numberOfColorsRight","generatedColors","generatedDivergentColors","stepsLeft","stepsRight","steps","FEATURES.luminanceShift","currentOptions","FEATURES.monochromatic","FEATURES.harmonize","unitHSL","unitHSLFloat","UnitXYZ","UnitCMYK","UnitRGBFloat","UnitHWB","UnitLAB","UnitOKLAB","UnitHSV","UnitLCH","UnitOKLCH","UnitHSI","normalizeRGBInput","normalizeLABInput","MoebiusColor","hwb","CONVERTERS.toHEX","CONVERTERS.toCMYK","CONVERTERS.toXYZ","CONVERTERS.toHSL","CONVERTERS.toHWB","CONVERTERS.toLAB","CONVERTERS.toOKLAB","CONVERTERS.toHSV","CONVERTERS.toLCH","CONVERTERS.toOKLCH","CONVERTERS.toHSI","CONVERTERS.toRGB","toObject","CONVERTERS.toObject","toFloat","CONVERTERS.toFloat","async","Moebius","colorNames","response","fetch","json","entry","initializeColorNames","super"],"mappings":"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"}
|